UNPKG

navi-sdk

Version:

The NAVI SDK Client provides tools for interacting with the Sui blockchain networks, designed for handling transactions, accounts, and smart contracts efficiently. This documentation covers the setup, account management, and transaction handling within th

100 lines (83 loc) 2.67 kB
import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions"; import { AggregatorConfig } from "../config"; export async function makeKriyaV3PTB(txb: Transaction, poolId: string, byAmountIn: boolean, coinA: any, amount: any, a2b: boolean, typeArguments: any) { const sqrtPriceLimit = BigInt(a2b ? '4295048016' : '79226673515401279992447579055') const args = [ txb.object(poolId), txb.pure.bool(a2b), txb.pure.bool(byAmountIn), typeof amount === 'number' ? txb.pure.u64(amount) : amount, txb.pure.u128(sqrtPriceLimit), txb.object(AggregatorConfig.clockAddress), txb.object(AggregatorConfig.kriyaV3Version), ] const [receive_balance_a, receive_balance_b, receipt] = txb.moveCall({ target: `${AggregatorConfig.kriyaV3PackageId}::trade::flash_swap`, typeArguments: typeArguments, arguments: args, }) if (a2b) { txb.moveCall({ target: '0x2::balance::destroy_zero', arguments: [receive_balance_a], typeArguments: [typeArguments[0]] }) let BalanceA = txb.moveCall({ target: "0x2::coin::into_balance", arguments: [coinA], typeArguments: [typeArguments[0]], }); const [BalanceB] = txb.moveCall({ target: '0x2::balance::zero', typeArguments: [typeArguments[1]] }) txb.moveCall({ target: `${AggregatorConfig.kriyaV3PackageId}::trade::repay_flash_swap`, arguments: [ txb.object(poolId), receipt, BalanceA, BalanceB, txb.object(AggregatorConfig.kriyaV3Version), ], typeArguments: typeArguments }) const receiveCoin: any = txb.moveCall({ target: `0x2::coin::from_balance`, arguments: [receive_balance_b], typeArguments: [typeArguments[1]] }) return receiveCoin } txb.moveCall({ target: '0x2::balance::destroy_zero', arguments: [receive_balance_b], typeArguments: [typeArguments[1]] }) let BalanceB = txb.moveCall({ target: "0x2::coin::into_balance", arguments: [coinA], typeArguments: [typeArguments[1]], }); const [BalanceA] = txb.moveCall({ target: '0x2::balance::zero', typeArguments: [typeArguments[0]] }) txb.moveCall({ target: `${AggregatorConfig.kriyaV3PackageId}::trade::repay_flash_swap`, arguments: [ txb.object(poolId), receipt, BalanceA, BalanceB, txb.object(AggregatorConfig.kriyaV3Version), ], typeArguments: typeArguments }) const receiveCoin: any = txb.moveCall({ target: `0x2::coin::from_balance`, arguments: [receive_balance_a], typeArguments: [typeArguments[0]] }) return receiveCoin }