@aries-markets/aries-tssdk
v0.0.8
Published
[![Discord][discord-image]][discord-url]
Readme
SDK for Aptos Node API BY Aries Market
Quickstart
To start building, run below command in your project directory:
yarn add @aries-markets/aries-tssdkIf you are using the types in a commonjs module, like in a Node app, you just have to enable esModuleInterop
and allowSyntheticDefaultImports in your tsconfig for types compatibility:
{
// ...
"compilerOptions": {
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
// ...
}
}Usage
With Aries SDK, you can directly interact with aptos blockchain without worried about type compatibility.
The SDK Instance is extreamly well-typed, consumable for frontend, There's type defination in the idl directory that is generated from the aptos blockchain source code, which is written in move.
To get the SDK Instance, you need to provide two parameters:
client:const nodeUrl = 'https://fullnode.mainnet.aptoslabs.com/v1'; const client = new AptosClient(nodeUrl, { WITH_CREDENTIALS: false });program: program address start with '0x'Now you can get the SDK instance:
import { getAriesSDK } from '@aries-markets/aries-tssdk'; const sdk = getAriesSDK(client, program);There're several main usage with the sdk you've got
fetch the reserves
const reservesTable = await sdk.reserve.Reserves.fetch.fromProgram();you may need some extra operations to get the desired data structure:
export const targetCoins = [ ['0x1::aptos_coin::AptosCoin', 'aptos'] ]; const res = await reservesTable.stats.fromKeys( targetCoins.map(([coin]) => { const [address, module, struct] = coin.split('::'); return { module, keyStructName: struct, address, }; }), ); const reserves = res.map(i => ({ coinAddress: typeInfoToStr(i.key), ...i.value, }));fetch profileDetail
fetch Profile with profileAdress
const res = await sdk.profile.Profile.fetch.fromAddress( profileAddress, );then you can get your deposits and loans
const rawDeposits = await res.depositedReserves.fetch(); const rawLoans = await res.borrowedReserves.fetch();
fetch profiles
fetch all of your profiles base on the wallet
const res = await sdk.profile.Profiles.fetch.fromWallet();map the result to desired data structure
const list = res.profileSigners.map(v => ({ profileName: v.key.replace('profile', ''), address: v.value.account, }));
basic transactions
get the controller object, which can be used to addReserve, registerUser, deposit, withdraw, borrow, swap, etc.
const controller = sdk.controller;addReserve
.addReserve({ Coin0: coinAddress, });registerUser:
sdk.controller.registerUser({ default_profile_name: profileName, });addProfile/Acount
sdk.controller.addSubaccount({ profile_name: profileName });Basic transaction, take deposit as an example
controller.deposit( { amount: lamports, // Big Type in big.js profile_name: 'profile name', repay_only: false, }, { Coin0: coinAddress }, );
Requirements
yarn install