
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
@roketo/sdk
Advanced tools
Just a first iteration. Docs TBA.
Import API for fungible tokens from roketo-sdk/ft
.
Import Roketo Streaming API from roketo-sdk/roketo
.
Note: SDK may require
core-js@3
in your project
Labels on PRs is used to set release version. Please, add labels BEFORE merge.
declare function addFunds({
amount,
streamId,
callbackUrl,
tokenAccountId,
transactionMediator,
roketoContractName,
wNearId,
}: {
/** amount is in yocto */
amount: string;
streamId: string;
callbackUrl: string;
tokenAccountId: string;
transactionMediator: TransactionMediator;
roketoContractName: string;
wNearId: string;
}): Promise<unknown>;
declare function startStream({
streamId,
transactionMediator,
roketoContractName,
}: {
streamId: string;
transactionMediator: TransactionMediator;
roketoContractName: string;
}): Promise<unknown>;
declare function pauseStream({
streamId,
transactionMediator,
roketoContractName,
}: {
streamId: string;
transactionMediator: TransactionMediator;
roketoContractName: string;
}): Promise<unknown>;
declare function stopStream({
streamId,
transactionMediator,
roketoContractName,
}: {
streamId: string;
transactionMediator: TransactionMediator;
roketoContractName: string;
}): Promise<unknown>;
declare function withdrawStreams({
streamIds,
transactionMediator,
roketoContractName,
}: {
streamIds: string[];
transactionMediator: TransactionMediator;
roketoContractName: string;
}): Promise<unknown>;
declare function createStream({
comment,
deposit,
receiverId,
tokenAccountId,
commissionOnCreate,
tokensPerSec,
cliffPeriodSec,
delayed,
isExpirable,
isLocked,
callbackUrl,
color,
accountId,
tokenContract,
transactionMediator,
roketoContractName,
wNearId,
financeContractName,
}: {
comment: string;
deposit: string;
commissionOnCreate: string;
receiverId: string;
tokenAccountId: string;
tokensPerSec: string;
name?: string;
cliffPeriodSec?: number;
delayed?: boolean;
isExpirable?: boolean;
isLocked?: boolean;
callbackUrl?: string;
color: string | null;
accountId: string;
tokenContract: FTContract;
transactionMediator: TransactionMediator;
roketoContractName: string;
wNearId: string;
financeContractName: string;
}): Promise<unknown>;
declare function getStream({
streamId,
contract,
}: {
streamId: string;
contract: RoketoContract;
}): Promise<
RoketoStream & {
Err: never;
Ok: RoketoStream;
}
>;
declare function getIncomingStreams({
from,
limit,
contract,
accountId,
}: {
from: number;
limit: number;
contract: RoketoContract;
accountId: string;
}): Promise<RoketoStream[]>;
declare function getOutgoingStreams({
from,
limit,
contract,
accountId,
}: {
from: number;
limit: number;
contract: RoketoContract;
accountId: string;
}): Promise<RoketoStream[]>;
/**
* @param config configuration object
* @param config.stream stream to use
* @param config.progressAtTimestamp calculate the progress at a certain point in time (current time by default).
* For example it is used by notifications: they do not reflect the current state
* of the stream, but only that, which was at the moment of their appearance,
* so they use the moment of their creation on the server
* and pass `stream.last_action` to `progressAtTimestamp`
* @param config.asPercentage return result as percentage
*/
declare function getStreamProgress({
stream,
progressAtTimestamp,
asPercentage,
}: {
stream: RoketoStream;
progressAtTimestamp?: number;
asPercentage?: boolean;
}): {
full: string;
left: string;
streamed: string;
withdrawn: string;
available: string;
};
declare function calculateEndTimestamp(stream: RoketoStream): number | null;
declare function calculateCliffEndTimestamp(
stream: RoketoStream,
): number | null;
declare function calculateCliffPercent(stream: RoketoStream): number | null;
/**
* @param progressAtTimestamp calculate the progress at a certain point in time (current time by default).
* For example it is used by notifications: they do not reflect the current state
* of the stream, but only that, which was at the moment of their appearance,
* so they use the moment of their creation on the server
* and pass `stream.last_action` to `progressAtTimestamp`
*/
declare function calculateTimeLeft(
stream: RoketoStream,
progressAtTimestamp?: number,
): string;
declare function formatTimeLeft(millisecondsLeft: number): string;
declare function isActiveStream(stream: RoketoStream): boolean;
declare function isPausedStream(stream: RoketoStream): boolean;
declare function isIdling(stream: RoketoStream): boolean;
declare function isDead(stream?: RoketoStream): boolean;
declare function isWithCliff(stream?: RoketoStream): boolean;
declare function hasPassedCliff(stream: RoketoStream): boolean;
/**
* @param progressAtTimestamp calculate the progress at a certain point in time (current time by default).
* For example it is used by notifications: they do not reflect the current state
* of the stream, but only that, which was at the moment of their appearance,
* so they use the moment of their creation on the server
* and pass `stream.last_action` to `progressAtTimestamp`
*/
declare function getAvailableToWithdraw(
stream: RoketoStream,
progressAtTimestamp?: number,
): BigNumber;
declare function isLocked(stream: RoketoStream): boolean;
declare function wasStartedAndLocked(stream: RoketoStream): boolean;
declare function getStreamDirection(
stream: RoketoStream,
accountId: string | null,
): "IN" | "OUT" | null;
declare function getStreamLeftPercent(stream: RoketoStream): number;
declare function ableToAddFunds(
stream: RoketoStream,
accountId: string | null,
): boolean;
declare function ableToStartStream(
stream: RoketoStream,
accountId: string | null,
): boolean;
declare function ableToPauseStream(
stream: RoketoStream,
accountId: string | null,
): boolean;
declare function parseComment(description: string): string | null;
declare function parseColor(description: string): string | null;
declare function initApiControl({
account,
transactionMediator,
roketoContractName,
}: {
account: Account;
transactionMediator: TransactionMediator;
roketoContractName: string;
}): Promise<ApiControl>;
declare function isWNearTokenId({
tokenAccountId,
wNearId,
}: {
tokenAccountId: string;
wNearId: string;
}): boolean;
declare function createRichContracts({
tokensInfo,
account,
}: {
tokensInfo: Array<
readonly [tokenAccountId: string, roketoMeta: RoketoTokenMeta]
>;
account: Account;
}): Promise<{
[tokenId: string]: RichToken;
}>;
declare function transfer({
payload,
amount,
callbackUrl,
tokenContract,
tokenAccountId,
transactionMediator,
roketoContractName,
wNearId,
financeContractName,
}: {
payload: {
description?: string;
owner_id: string;
receiver_id: string;
balance: string;
tokens_per_sec: string;
cliff_period_sec?: number;
is_auto_start_enabled?: boolean;
is_expirable?: boolean;
is_locked?: boolean;
};
amount: string;
callbackUrl?: string;
tokenContract: FTContract;
tokenAccountId: string;
transactionMediator: TransactionMediator;
roketoContractName: string;
wNearId: string;
financeContractName: string;
}): Promise<unknown>;
declare type StringInt = string;
declare type StreamId = string;
declare type AccountId = string;
declare type SafeFloat = {
val: number;
pow: number;
};
declare type StreamStatus =
| "Initialized"
| "Active"
| "Paused"
| {
Finished: string;
};
declare type RoketoStream = {
balance: StringInt;
cliff?: number;
creator_id: AccountId;
description: string;
id: StreamId;
is_expirable: boolean;
is_locked: boolean;
last_action: number;
owner_id: AccountId;
receiver_id: AccountId;
status: StreamStatus;
timestamp_created: number;
token_account_id: AccountId;
tokens_per_sec: StringInt;
tokens_total_withdrawn: StringInt;
};
declare type TokenAmount = {
[tokenAccountId: string]: StringInt;
};
declare type RoketoAccount = {
active_incoming_streams: number;
active_outgoing_streams: number;
deposit: StringInt;
inactive_incoming_streams: number;
inactive_outgoing_streams: number;
is_cron_allowed: boolean;
last_created_stream: StreamId;
stake: StringInt;
total_incoming: TokenAmount;
total_outgoing: TokenAmount;
total_received: TokenAmount;
};
declare type RoketoTokenMeta = {
account_id: AccountId;
collected_commission: StringInt;
commission_coef: SafeFloat;
commission_on_create: StringInt;
gas_for_ft_transfer: StringInt;
gas_for_storage_deposit: StringInt;
is_listed: boolean;
storage_balance_needed: StringInt;
};
declare type RoketoDao = {
commission_unlisted: StringInt;
dao_id: AccountId;
eth_near_ratio: SafeFloat;
oracles: [];
tokens: {
[tokenAccountId: string]: RoketoTokenMeta;
};
utility_token_decimals: number;
utility_token_id: AccountId;
};
declare type RoketoTokenStats = {
active_streams: number;
last_update_time: number;
refunded: StringInt;
streams: number;
total_commission_collected: StringInt;
total_deposit: StringInt;
transferred: StringInt;
tvl: StringInt;
};
declare type RoketoStats = {
dao_tokens: {
[tokenAccountId: string]: RoketoTokenStats;
};
last_update_time: number;
total_account_deposit_eth: StringInt;
total_account_deposit_near: StringInt;
total_accounts: number;
total_active_streams: number;
total_aurora_streams: number;
total_dao_tokens: number;
total_streams: number;
total_streams_unlisted: number;
};
declare type ContractChangeFunctionArgs<P> = {
args: P;
gas: string;
amount: string;
callbackUrl?: string;
};
declare type ContractResponse<R> = R & {
Err: never;
Ok: R;
};
declare type ContractViewFunction<P, R> = (json?: P) => Promise<R>;
declare type ContractChangeFunction<P> = (
json: P | ContractChangeFunctionArgs<P>,
gasSize?: string,
deposit?: string,
) => Promise<void>;
declare type StreamsProps = {
account_id: string;
from: number;
limit: number;
};
declare type AccountFTResponse = [
total_incoming: string,
total_outgoing: string,
total_received: string,
];
declare type RoketoContract = Contract & {
get_account: ContractViewFunction<
{
account_id: string;
},
ContractResponse<RoketoAccount>
>;
get_stream: ContractViewFunction<
{
stream_id: string;
},
ContractResponse<RoketoStream>
>;
get_account_incoming_streams: ContractViewFunction<
StreamsProps,
ContractResponse<RoketoStream[]>
>;
get_account_outgoing_streams: ContractViewFunction<
StreamsProps,
ContractResponse<RoketoStream[]>
>;
get_account_ft: ContractViewFunction<
{
account_id: string;
token_account_id: string;
},
ContractResponse<AccountFTResponse>
>;
get_dao: ContractViewFunction<{}, RoketoDao>;
get_token: ContractViewFunction<
{
token_account_id: string;
},
[RoketoTokenMeta, RoketoTokenStats]
>;
get_stats: ContractViewFunction<{}, RoketoStats>;
withdraw: ContractChangeFunction<{
stream_ids: string[];
}>;
start_stream: ContractChangeFunction<{
stream_id: string;
}>;
pause_stream: ContractChangeFunction<{
stream_id: string;
}>;
stop_stream: ContractChangeFunction<{
stream_id: string;
}>;
};
declare type TokenMetadata = {
spec: null;
name: string;
symbol: string;
icon: "";
reference: null;
reference_hash: null;
decimals: number;
};
declare type FTContract = Contract & {
ft_balance_of(options: { account_id: string }): Promise<string>;
storage_balance_of(options: { account_id: string }): Promise<{
total: string;
available: string;
}>;
ft_metadata(): Promise<TokenMetadata>;
near_deposit(options: {}, gas: string, deposit: string): Promise<unknown>;
storage_deposit(
options: {},
gas: string,
deposit: string | null,
): Promise<unknown>;
ft_transfer_call({
args,
gas,
callbackUrl,
amount,
}: {
args: any;
gas: string;
callbackUrl: string;
amount: number;
}): Promise<unknown>;
};
declare type TransactionMediator<
Act extends Action | Action$1 = Action | Action$1,
> = {
functionCall(
methodName: string,
args: object | Uint8Array,
gas: string,
deposit: string,
): Act;
signAndSendTransaction(params: {
receiverId: string;
actions: Act[];
walletCallbackUrl?: string;
}): Promise<unknown>;
};
declare type RichToken = {
roketoMeta: RoketoTokenMeta;
meta: TokenMetadata;
balance: string;
tokenContract: FTContract;
};
declare type ApiControl = {
account: Account;
transactionMediator: TransactionMediator;
accountId: string;
contract: RoketoContract;
roketoAccount: RoketoAccount;
dao: RoketoDao;
tokens: {
[tokenId: string]: RichToken;
};
};
FAQs
Just a first iteration. Docs TBA.
The npm package @roketo/sdk receives a total of 29 weekly downloads. As such, @roketo/sdk popularity was classified as not popular.
We found that @roketo/sdk demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.