UNPKG

@moveflow/sui-sdk.js

Version:

Typescript SDK for MoveFlow on SUI blockchain

164 lines (128 loc) 4.08 kB
# Move-Flow SUI SDK # Introduction **Move-Flow** is an crypto asset streaming protocol built in Move language on both [Aptos](https://aptosfoundation.org/) and [Sui](https://sui.io/) blockchains. Move-Flow is able to transfer assets on chain according to predefined rules. With one transaction, funds will flow from your wallet to the recipient real-time(by second), to conduct timely financial transactions without intermediaries.. This is the Typescript SDK for the protocol You can find [docs here](https://move-flow.github.io/moveflow-sui-sdk/) # Installation yarn add "@moveflow/sui-sdk.js" # Usage Example ### Init SDK ```typescript import { Stream, Network } from "@moveflow/sui-sdk.js"; const stream = new Stream(Network.testnet); ``` ### Create a new payment stream ```typescript const coinType = "0x2::sui::SUI"; const name = "first"; const remark = "first sui stream"; const depositAmount = BigInt(10000000); const startTime = Math.floor(Date.now() / 1000); const duration = 24 * 60 * 60; // 1 day const stopTime = startTime + duration; const interval = 1; // 1 second const senderAddress = "0x7905ae3ed4a5a77284684fa86fd83c38a9f138b0cc390721c46bca3aaafaf26c"; const recipientAddress = "0x45f5a96940e84dd876b1adc2c434961178fc94cb79c23a9f8ddc57c996255869"; const tx = await stream.createTransaction( coinType, name, remark, senderAddress, recipientAddress, depositAmount, startTime, stopTime, interval ); const response = await wallet.signAndExecuteTransactionBlock({ transactionBlock: tx, options: { showObjectChanges: true, }, }); const streamCreationResult = stream.getStreamCreationResult(response); ``` ### Withdraw payment from a stream ```typescript const tx = stream.withdrawTransaction(coinType, streamCreationResult.streamId); const response = await wallet.signAndExecuteTransactionBlock({ transactionBlock: tx, }); ``` ### Close a stream ```typescript const tx = stream.closeTransaction( coinType, streamCreationResult.senderCap, streamCreationResult.streamId ); const response = await wallet.signAndExecuteTransactionBlock({ transactionBlock: tx, }); ``` ### Pause a stream ```typescript const tx = stream.pauseTransaction( coinType, streamCreationResult.senderCap, streamCreationResult.streamId ); const response = await wallet.signAndExecuteTransactionBlock({ transactionBlock: tx, }); ``` ### Resume a stream ```typescript const tx = stream.resumeTransaction( coinType, streamCreationResult.senderCap, streamCreationResult.streamId ); const response = await wallet.signAndExecuteTransactionBlock({ transactionBlock: tx, }); ``` ### Query stream by streamId ```typescript const id = "0x1f612145242fde5b22ddf68838dce2d8cd5629a021caa2e4093a370548ab17a4"; const streams = await stream.getStreamById(id); console.log("streams:", streams); ``` ### Query stream's withdrawable amount ```typescript const id = "0x1f612145242fde5b22ddf68838dce2d8cd5629a021caa2e4093a370548ab17a4"; const _stream = await stream.getStreamById(id); const streams = await stream.withdrawable(_stream); console.log("streams:", streams); ``` ### Query incoming streams ```typescript const address = "0xa84b01c05ad237727daacb265fbf8d366d41567f10bb84b0c39056862250dca2"; const streams = await stream.getStreams(address, StreamDirection.IN); console.log("streams:", streams); ``` ### Query outgoing streams ```typescript const address = "0xa84b01c05ad237727daacb265fbf8d366d41567f10bb84b0c39056862250dca2"; const streams = await stream.getStreams(address, StreamDirection.OUT); console.log("streams:", streams); ``` ### Query sender caps ```typescript const owner = "0xa84b01c05ad237727daacb265fbf8d366d41567f10bb84b0c39056862250dca2"; const caps = await stream.getSenderCap(owner); const list = caps.data.map((m) => { return { cap: (m.data?.content as any).fields.id.id, stream: (m.data?.content as any).fields.stream, }; }); console.log("list:", list); ``` ### Query supported coins ```typescript const coins = await stream.getSupportedCoins(); console.log("coins:", coins); ```