@umi-ag/sui-sdk
v0.202405.1
Published
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
Downloads
10
Readme
@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.