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

51 lines (44 loc) 1.82 kB
import { getConfig, PriceFeedConfig, pool, Sui } from "../src/address"; import { V3Type, PoolData, Pool, PoolConfig } from "../src/types"; import { describe, it, expect } from "vitest"; import { createTransaction, handleTransactionResult } from "./helper"; import { client, account } from "./client"; import { flashloan, repayDebt, repayFlashLoan } from "../src/libs/PTB"; import { getFlashloanFee } from "../src/libs/PTB/migrate"; describe("flashloan test", () => { it("flashloan test", async () => { const testCaseName = expect.getState().currentTestName || "test_case"; const txb = createTransaction(account); const poolConfig: PoolConfig = pool["Sui" as keyof Pool]; const [toLoanBalance, receipt] = await flashloan(txb, poolConfig, 2e9); const [toLoan] = txb.moveCall({ target: "0x2::coin::from_balance", arguments: [toLoanBalance], typeArguments: [poolConfig.type], }); txb.mergeCoins(txb.gas, [toLoan]); const flashloanFee = await getFlashloanFee(Sui); console.log("flashloanFee", flashloanFee); const repayAmount = Math.floor(2e9 + 2e9 * flashloanFee); const [toRepay] = txb.splitCoins(txb.gas, [repayAmount]); const [toRepayBalance] = txb.moveCall({ target: "0x2::coin::into_balance", arguments: [toRepay], typeArguments: [poolConfig.type], }); const [remainingBalance] = await repayFlashLoan( txb, poolConfig, receipt, toRepayBalance ); const [toReturn] = txb.moveCall({ target: "0x2::coin::from_balance", arguments: [remainingBalance], typeArguments: [poolConfig.type], }); txb.transferObjects([toReturn], account.address); const tsRes = await handleTransactionResult(txb, account, testCaseName); expect(tsRes).toEqual("success"); }); });