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

136 lines (113 loc) 4.95 kB
## Account Functions ### Get Specific Account Address ```javascript account.getPublicKey() //or account.address ``` ### Create Account Cap for specific account ```javascript account.createAccountCap() //Account1 will create an Account Cap ``` ## Get Objs and Coin Info We have prepared a token type for Sui/NAVX/vSui/USDT/USDC/WETH/CETUS/haSui ```javascript import {Sui, NAVX, vSui, USDT, USDC, WETH, CETUS, haSui} from 'navi-sdk/dist/address'; account.getAllCoins() //Return all Objects that account has //Get all objs for this type of token account.getCoins(coinType = "0x2::sui::SUI") //Or you may import token address from address account.getCoins(coinType = Sui) ``` ### Send Coin or Objects Please keep in mind that PTB has 1024 operation limit, we suggest that recipients list not exceed 500 ```javascript account1.sendCoin(coinType = NAVX, your_recipient_address, amount) account2.sendCoinToMany(coinType = NAVX, [addr1, addr2, .. addrN], [amount1, amount2, .. amountN]) account3.transferObj(obj = "0xobjId", your_recipient_address) account4.transferObjToMany([obj1, obj2, ...], [addr1, addr2, ...]) ``` ### Get comprehensive Wallet Balance list This will combine all the objects of the same token, and return a comprehensive balance table ```javascript const balanceMap = account.getWalletBalance() balanceMap.then((res) => { console.log(res); }) ``` Sample Output: | Coin Type | Balance | |--------------|----------------| USDC | 2.4994 Sui | 3.63103582 NAVX | 0 ## Navi Interaction ### Get Current Supply/Borrow from Navi ```javascript account.getNAVIPortfolio() ``` This will return a table like the following: | Reserve Name | Borrow Balance | Supply Balance | |--------------|----------------|----------------| | USDT | 0 | 0 | | CETUS | 0 | 0 | | NAVX | 0 | 0 | | USDC | 0 | 2.000057 | | WETH | 0 | 0 | | SUI | 5.009469205 | 100.097918005 | | VoloSui | 0 | 0 | | HaedalSui | 0 | 0 | ### Get Address Available Rewards to Claim This will print out all available rewards that the account has from NAVI protocol ```javascript account.getAvailableRewards() //Return this account's available rewards client.getAvailableRewards(address); //You may check any address ``` ### Get Current Health Factor This will return the account of any address's health factor from NAVI protocol ```javascript account.getHealthFactor() //Return this account's health factor client.getHealthFactor(address); //You may check any address ``` ### Supply/Withdraw/Borrow/Repay/Liquidate/ClaimRewards You may Simply input 'NAVX' as a string or NAVX as a type imported from address.ts. Current These Pools are supported: **Sui | NAVX | vSui | USDC | wUSDC | USDT | WETH | CETUS | haSui | AUSD | WBTC** ```javascript account.depositToNavi(Sui, amount) account.depositToNaviWithAccountCap(NAVX, amount, accountCap_Address_that_you_own) account.withdraw(coinType = NAVX, amount) account.withdrawWithAccountCap(coinType = NAVX, amount, accountCap_Address_that_you_own) account.borrow(coinType = NAVX, amount) account.repay(coinType = NAVX, amount) account.claimAllRewards(); //Claim both Supply and Borrow rewards // Initialization Zone const debt_coin: CoinInfo = USDC; // Assigns USDC as the payment coin. Ensure you maintain a minimum of 0.5 Sui for gas fees if Sui is used. const to_liquidate_address = 'address_to_liquidate'; // Specifies the blockchain address of the account to be liquidated. const collateral_coin: CoinInfo = Sui; // Designates Sui as the collateral coin. Note: 'collateral_coin' should not be the same as 'to_pay_coin'. // End of Initialization Zone //Option1 - Liquidate with all debt_coin, will return the rest account.liquidate(debt_coin, to_liquidate_address, collateral_coin); //Option2 - Liquidate with specific amount let to_liquidate_amount = 10; //Number of coin that can be used for liquidation, no decimals required. account.liquidate(debt_coin, to_liquidate_address, collateral_coin, to_liquidate_amount); //Liquidate with 10 USDC. ``` ### Update Decentralized Oracle Two options to update NAVI's decentralized Oracle ```javascript // For single transaction await account.updateOracle(); // For Devevelopers who wants to integrate the Oracle in PTB let txb = new Transaction(); await updateOraclePTB(account.client, txb); //add updateOracle code to PTB ``` ### Swap Token using NAVI Aggregator ```Typescript const fromCoinAddress = Sui.address; //From coin address const toCoinAddress = nUSDC.address; //To coin address const amountIn = 1e9; //Amount in const apiKey = 'your_api_key'; //NAVI Aggregator API Key const swapOptions = { dexList: [Dex.Cetus, Dex.Aftermath]}; //Swap options, leave the dexList empty to use all the DEXs //Execute the swap, this will return a transaction result account.swap(fromCoinAddress, toCoinAddress, amountIn, apiKey, swapOptions) //Dry run the swap, this will return a dryRun result account.dryRunSwap(fromCoinAddress, toCoinAddress, amountIn, apiKey, swapOptions) ```