Socket
Socket
Sign inDemoInstall

@umi-ag/sui-sdk

Package Overview
Dependencies
35
Maintainers
2
Versions
53
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @umi-ag/sui-sdk

The `@umi-ag/sui-sdk` is a TypeScript library that provides an easy-to-use interface for interacting with the Umi Aggregator on the Sui blockchain. It simplifies the process of fetching trading routes, creating transaction blocks, and executing trades thr


Version published
Maintainers
2
Install size
9.78 MB
Created

Readme

Source

@umi-ag/sui-sdk

The @umi-ag/sui-sdk is a TypeScript library that provides an easy-to-use interface for interacting with the Umi Aggregator on the Sui blockchain. It simplifies the process of fetching trading routes, creating transaction blocks, and executing trades through the Umi Aggregator.

Features

  • Fetch trading routes for a given query
  • Create transaction blocks from trading routes
  • Execute trading routes on the Sui Blockchain through the Umi Aggregator

Installation

Use npm or yarn to install @umi-ag/sui-sdk in your project:

npm install @umi-ag/sui-sdk

or

yarn add @umi-ag/sui-sdk

Usage

Give it a try for a minute.

git clone https://github.com/umi-ag/umi-sdk umi-sdk
cd $_
cd typescript/sui-sdk
npm i
export SUI_PRIVATE_KEY=0xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
npm run vite-node examples/bot-testnet.ts

Here's a simple example of how to use @umi-ag/sui-sdk:

import { fetchQuoteAndBuildTransactionBlockForUmiAgSwap } from "@umi-ag/sui-sdk";

const provider = new JsonRpcProvider(
  new Connection({
    fullnode: "https://fullnode.mainnet.sui.io",
  }),
);

const keypair = () => {
  const privatekey0x = process.env.SUI_PRIVATE_KEY as string;
  const privatekey = privatekey0x.replace(/^0x/, "");
  const privateKeyBase64 = Buffer.from(privatekey, "hex").toString("base64");
  return Ed25519Keypair.fromSecretKey(fromB64(privateKeyBase64));
};
const signer = new RawSigner(keypair(), provider);
const address = await signer.getAddress();

const SUI = "0x2::sui::SUI";
const USDCw =
  "0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN";

const [quote] = await fetchQuoteFromUmi({
  sourceCoin: SUI,
  targetCoin: USDCw,
  sourceAmount: 1000, // u64,
});
console.log(quote);

const txb = await buildTransactionBlockForUmiAgSwap({
  provider,
  quote,
  accountAddress: address,
  slippageTolerance: 0.01, // 1%
});

await signer.signAndExecuteTransactionBlock({ transactionBlock: txb });

Additionally, you can manually add move calls to the TransactionBlock.

import {
  fetchQuoteFromUmi,
  moveCallUmiAgSwapExact,
  moveCallWithdrawCoin,
} from "@umi-ag/sui-sdk";

const sourceAmount = 1000; // u64
const [quote] = await fetchQuoteFromUmi({
  sourceCoin: devBTC,
  targetCoin: devUSDC,
  sourceAmount,
});

const txb = new TransactionBlock();
const owner = txb.pure(address);

const btc = await moveCallWithdrawCoin({
  provider,
  owner: address,
  coinType: devBTC,
  requiredAmount: sourceAmount,
  txb,
});

const usdc = moveCallUmiAgSwapExact({
  transactionBlock: txb,
  quote,
  accountAddress: owner,
  coins: [btc],
  minTargetAmount: txb.pure(0),
});
txb.transferObjects([usdc], owner);

const result = await signer.signAndExecuteTransactionBlock({
  transactionBlock: txb,
  options: {
    showBalanceChanges: true,
    showEffects: true,
  },
});

const gasUsed = result.effects && getTotalGasUsed(result.effects);
console.log(result.digest, gasUsed);

See bot.ts

Documentation

For more information on how to use @umi-ag/sui-sdk and its features, please refer to the official documentation.

Contributing

We welcome contributions to @umi-ag/sui-sdk! If you'd like to contribute, please follow our contributing guidelines and read our code of conduct.

License

@umi-ag/sui-sdk is released under the MIT License.

FAQs

Last updated on 16 Jan 2024

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc