@moveflow/sui-sdk.js
TypeScript icon, indicating that this package has built-in type declarations

0.4.8 • Public • Published

Move-Flow SUI SDK

Introduction

Move-Flow is an crypto asset streaming protocol built in Move language on both Aptos and Sui 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

Installation

yarn add "@moveflow/sui-sdk.js"

Usage Example

Init SDK

import { Stream, Network } from "@moveflow/sui-sdk.js";

const stream = new Stream(Network.testnet);

Create a new payment stream

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

const tx = stream.withdrawTransaction(coinType, streamCreationResult.streamId);
const response = await wallet.signAndExecuteTransactionBlock({
  transactionBlock: tx,
});

Close a stream

const tx = stream.closeTransaction(
  coinType,
  streamCreationResult.senderCap,
  streamCreationResult.streamId
);
const response = await wallet.signAndExecuteTransactionBlock({
  transactionBlock: tx,
});

Pause a stream

const tx = stream.pauseTransaction(
  coinType,
  streamCreationResult.senderCap,
  streamCreationResult.streamId
);

const response = await wallet.signAndExecuteTransactionBlock({
  transactionBlock: tx,
});

Resume a stream

const tx = stream.resumeTransaction(
  coinType,
  streamCreationResult.senderCap,
  streamCreationResult.streamId
);
const response = await wallet.signAndExecuteTransactionBlock({
  transactionBlock: tx,
});

Query stream by streamId

const id = "0x1f612145242fde5b22ddf68838dce2d8cd5629a021caa2e4093a370548ab17a4";
const streams = await stream.getStreamById(id);
console.log("streams:", streams);

Query stream's withdrawable amount

const id = "0x1f612145242fde5b22ddf68838dce2d8cd5629a021caa2e4093a370548ab17a4";
const _stream = await stream.getStreamById(id);
const streams = await stream.withdrawable(_stream);
console.log("streams:", streams);

Query incoming streams

const address =
  "0xa84b01c05ad237727daacb265fbf8d366d41567f10bb84b0c39056862250dca2";
const streams = await stream.getStreams(address, StreamDirection.IN);
console.log("streams:", streams);

Query outgoing streams

const address = "0xa84b01c05ad237727daacb265fbf8d366d41567f10bb84b0c39056862250dca2";
const streams = await stream.getStreams(address, StreamDirection.OUT);
console.log("streams:", streams);

Query sender caps

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

const coins = await stream.getSupportedCoins();
console.log("coins:", coins);

Readme

Keywords

Package Sidebar

Install

npm i @moveflow/sui-sdk.js

Weekly Downloads

4

Version

0.4.8

License

GPL-3.0

Unpacked Size

199 kB

Total Files

21

Last publish

Collaborators

  • walterguo
  • hk1730