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.
- Fetch trading routes for a given query
- Create transaction blocks from trading routes
- Execute trading routes on the Sui Blockchain through the Umi Aggregator
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
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
For more information on how to use @umi-ag/sui-sdk and its features, please refer to the official documentation.
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.
@umi-ag/sui-sdk is released under the MIT License.