UNPKG

@streamflow/timelock

Version:

SDK to interact with StreamFlow Finance's Timelock program on Solana.

95 lines (89 loc) 3.31 kB
// Layout generated for JavaScript applications interacting with Streamflow's Timelock program. const BufferLayout = require("buffer-layout"); const { PublicKey } = require("@solana/web3.js"); const anchor = require("@project-serum/anchor"); const { BN } = anchor; const LE = "le"; //little endian const TokenStreamDataLayout = BufferLayout.struct([ BufferLayout.blob(8, "magic"), BufferLayout.blob(8, "created_at"), BufferLayout.blob(8, "withdrawn_amount"), BufferLayout.blob(8, "canceled_at"), BufferLayout.blob(8, "cancellable_at"), BufferLayout.blob(8, "last_withdrawn_at"), BufferLayout.blob(32, "sender"), BufferLayout.blob(32, "sender_tokens"), BufferLayout.blob(32, "recipient"), BufferLayout.blob(32, "recipient_tokens"), BufferLayout.blob(32, "mint"), BufferLayout.blob(32, "escrow_tokens"), BufferLayout.blob(8, "start_time"), BufferLayout.blob(8, "end_time"), BufferLayout.blob(8, "deposited_amount"), BufferLayout.blob(8, "total_amount"), BufferLayout.blob(8, "period"), BufferLayout.blob(8, "cliff"), BufferLayout.blob(8, "cliff_amount"), BufferLayout.blob(1, "is_cancelable_by_sender"), BufferLayout.blob(1, "is_cancelable_by_recipient"), BufferLayout.blob(1, "is_withdrawal_public"), BufferLayout.blob(1, "is_transferable"), BufferLayout.blob(4, "padding"), ]); function decode_token_stream_data(buf) { let raw = TokenStreamDataLayout.decode(buf); return { magic: new BN(raw.magic, LE), created_at: new BN(raw.created_at, LE), withdrawn_amount: new BN(raw.withdrawn_amount, LE), canceled_at: new BN(raw.canceled_at, LE), cancellable_at: new BN(raw.cancellable_at, LE), last_withdrawn_at: new BN(raw.last_withdrawn_at, LE), sender: new PublicKey(raw.sender), sender_tokens: new PublicKey(raw.sender_tokens), recipient: new PublicKey(raw.recipient), recipient_tokens: new PublicKey(raw.recipient_tokens), mint: new PublicKey(raw.mint), escrow_tokens: new PublicKey(raw.escrow_tokens), start_time: new BN(raw.start_time, LE), end_time: new BN(raw.end_time, LE), deposited_amount: new BN(raw.deposited_amount, LE), total_amount: new BN(raw.total_amount, LE), period: new BN(raw.period, LE), cliff: new BN(raw.cliff, LE), cliff_amount: new BN(raw.cliff_amount, LE), is_cancelable_by_sender: Boolean(raw.is_cancelable_by_sender.readUInt8()), is_cancelable_by_recipient: Boolean( raw.is_cancelable_by_recipient.readUInt8() ), is_withdrawal_public: Boolean(raw.is_withdrawal_public.readUInt8()), is_transferable: Boolean(raw.is_transferable.readUInt8()), }; } // interface TokenStreamData { // magic: BN; // created_at: BN; // withdrawn_amount: BN; // canceled_at: BN; // cancellable_at: BN; // last_withdrawn_at: BN; // sender: PublicKey; // sender_tokens: PublicKey; // recipient: PublicKey; // recipient_tokens: PublicKey; // mint: PublicKey; // escrow_tokens: PublicKey; // start_time: BN; // end_time: BN; // deposited_amount: BN; // total_amount: BN; // period: BN; // cliff: BN; // cliff_amount: BN; // is_cancelable_by_sender: boolean; // is_cancelable_by_recipient: boolean; // is_withdrawal_public: boolean; // is_transferable: boolean; // // } exports.decode = decode_token_stream_data;