Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 27 additions & 17 deletions examples/common.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,34 @@
import { AccountAddress, Aptos } from "@aptos-labs/ts-sdk";

export const NODE_URL = process.env.APTOS_NODE_URL || "https://aptos-devnet.pontem.network";
export const FAUCET_URL = process.env.APTOS_FAUCET_URL || "https://faucet.devnet.aptoslabs.com";

export const RESOURCE_ACCOUNT = "0xf5f11a0fa0ef6e2cd215d73cc3bd3c4cc2ad5b1c24625a690aadc9b13a57eaff";
export const MODULES_ACCOUNT = "0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9";
export const RESOURCE_ACCOUNT = "0x61d2c22a6cb7831bee0f48363b0eec92369357aece0d1142062f7d5d85c7bef8";
export const MODULES_ACCOUNT = "0x163df34fccbf003ce219d3f1d9e70d140b60622cb9dd47599c25fb2f797ba6e";

export const TokensMapping = {
APTOS: '0x1::aptos_coin::AptosCoin', // APTOS
USDT: '0x43417434fd869edee76cca2a4d2301e528a1551b1d719b75c350c3c97d15b8b9::coins::USDT', //devnet USDT
};
LSD: '0x53a30a6e5936c0a4c5140daed34de39d17ca7fcae08f947c02e979cef98a3719::coin::LSD', //LSD
} as const;

export type TxPayloadCallFunction = {
type: 'entry_function_payload';
function: string;
type_arguments: string[];
arguments: string[];
};
/**
* Prints the balance of an account
* @param aptos
* @param name
* @param address
* @returns {Promise<*>}
*
*/
export const balance = async (aptos: Aptos, name: string, address: AccountAddress) => {
const balances = await aptos.fungibleAsset.getCurrentFungibleAssetBalances({
options: {
where: {
owner_address: {
_eq: address.toString(),
},
}
}
});
const aptBalance = balances.find(b => b.asset_type === TokensMapping.APTOS);
const amount = Number(aptBalance?.amount);

export const NETWORKS_MAPPING = {
TESTNET: 'testnet',
DEVNET: 'devnet',
MAINNET: 'mainnet'
console.log(`${name}'s balance is: ${amount}`);
return amount;
};
4 changes: 2 additions & 2 deletions examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,12 @@
"pool": "ts-node swap_and_pool_transactions.ts"
},
"dependencies": {
"@aptos-labs/ts-sdk": "3.1.2",
"@pontem/liquidswap-sdk": "file:../",
"dotenv": "16.0.1"
},
"devDependencies": {
"ts-node": "^10.9.1",
"typescript": "^4.9.3",
"aptos": "^1.3.17"
"typescript": "^4.9.3"
}
}
97 changes: 18 additions & 79 deletions examples/swap_and_pool_transactions.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,23 @@
import dotenv from "dotenv";
import SDK from "@pontem/liquidswap-sdk";
import { AptosClient, FaucetClient, AptosAccount, CoinClient } from 'aptos';

import {
NODE_URL,
TokensMapping,
FAUCET_URL,
RESOURCE_ACCOUNT,
MODULES_ACCOUNT,
TxPayloadCallFunction,
NETWORKS_MAPPING,
} from "./common";
import { Network, NetworkToNodeAPI } from "@aptos-labs/ts-sdk";

dotenv.config();

(async() => {

// setup
const sdk = new SDK({
nodeUrl: NODE_URL,
nodeUrl: NetworkToNodeAPI[Network.MAINNET],
nodeOptions: {
network: Network.MAINNET,
},
networkOptions: {
resourceAccount: RESOURCE_ACCOUNT,
moduleAccount: MODULES_ACCOUNT,
Expand All @@ -29,87 +28,45 @@ dotenv.config();
},
},
});
const client = new AptosClient(NODE_URL);
const faucetClient = new FaucetClient(NODE_URL, FAUCET_URL);

const coinClient = new CoinClient(client);

// create local accounts
const alice = new AptosAccount();

try {

// make Faucet create and fund accounts
await faucetClient.fundAccount(alice.address(), 100_000_000);

// check balance
console.log(`Account balance: ${await coinClient.checkBalance(alice)}`);

// Register account with coin
try {
const coinRegisterPayload = {
type: 'entry_function_payload',
function: '0x1::managed_coin::register',
type_arguments: [TokensMapping.USDT],
arguments: [],
}

const rawTxn = await client.generateTransaction(alice.address(), coinRegisterPayload);
const bcsTxn = await client.signTransaction(alice, rawTxn);
const { hash } = await client.submitTransaction(bcsTxn);
await client.waitForTransaction(hash);

console.log(`Coin ${TokensMapping.USDT} successfully Registered to Alice account`);
console.log(`Check on explorer: https://explorer.aptoslabs.com/txn/${hash}?network=${NETWORKS_MAPPING.DEVNET}`);

} catch(e) {
console.log("Coin register error: ", e);
}

// get Rate for USDT coin.
const usdtRate = await sdk.Swap.calculateRates({
// get Rate for LSD coin.
const lsdRate = await sdk.Swap.calculateRates({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
amount: 10000000, // 0.1 APTOS
curveType: 'uncorrelated',
interactiveToken: 'from',
});

console.log('SsdtRate: ', usdtRate);
console.log('LsdRate: ', lsdRate);

// create payload for swap transaction
const swapTransactionPayload = await sdk.Swap.createSwapTransactionPayload({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
fromAmount: 10000000, // 0.1 APTOS
toAmount: Number(usdtRate), // USDT
toAmount: Number(lsdRate), // LSD
interactiveToken: 'from',
slippage: 0.005,
stableSwapType: 'normal',
curveType: 'uncorrelated',
}) as TxPayloadCallFunction;
});

console.log('Swap Transaction Payload: ', swapTransactionPayload);

const rawTxn = await client.generateTransaction(alice.address(), swapTransactionPayload);
const bcsTxn = await client.signTransaction(alice, rawTxn);
const { hash } = await client.submitTransaction(bcsTxn);
await client.waitForTransaction(hash);
console.log(`Swap transaction ${hash} is submitted.`);
console.log(`Check on explorer: https://explorer.aptoslabs.com/txn/${hash}?network=${NETWORKS_MAPPING.DEVNET}`);

//check pool existence
const poolExisted = await sdk.Liquidity.checkPoolExistence({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
curveType: 'uncorrelated'
});
console.log(`Pool existed: ${poolExisted}`);

// get rate and Minimum received LP
const { rate, receiveLp } = await sdk.Liquidity.calculateRateAndMinReceivedLP({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
amount: 10000000, // 0.1 APTOS
curveType: 'uncorrelated',
interactiveToken: 'from',
Expand All @@ -120,27 +77,19 @@ dotenv.config();
// get payload to add LiquidityPool
const addLiquidityPoolPayload = await sdk.Liquidity.createAddLiquidityPayload({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
fromAmount: 10000000, // 0.1 APTOS
toAmount: Number(rate), // USDT
toAmount: Number(rate), // LSD
interactiveToken: 'from',
slippage: 0.005,
curveType: 'uncorrelated',
});
console.log('Add liquidity pool payload', addLiquidityPoolPayload);

// sign and submit payload
const addLiquidityRawTxn = await client.generateTransaction(alice.address(), addLiquidityPoolPayload);
const addLiquidityBcsTxn = await client.signTransaction(alice, addLiquidityRawTxn);
const { hash: addLiquidityHash } = await client.submitTransaction(addLiquidityBcsTxn);
await client.waitForTransaction(addLiquidityHash);
console.log(`Add liquidity transaction with hash ${addLiquidityHash} is submitted`);
console.log(`Check on explorer: https://explorer.aptoslabs.com/txn/${addLiquidityHash}?network=${NETWORKS_MAPPING.DEVNET}`);

// calculate Burn Liquidity Minimum received values
const outputBurnValues = await sdk.Liquidity.calculateOutputBurn({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
slippage: 0.005,
curveType: 'uncorrelated',
burnAmount: Number(receiveLp),
Expand All @@ -151,23 +100,13 @@ dotenv.config();

const burnLiquidityPayload = await sdk.Liquidity.createBurnLiquidityPayload({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
slippage: 0.005,
curveType: 'uncorrelated',
burnAmount: Number(receiveLp),
});

console.log('Burn liquidity payload: ', burnLiquidityPayload);

// sign and submit payload
const burnLiquidityRawTxn = await client.generateTransaction(alice.address(), burnLiquidityPayload);
const burnLiquidityBcsTxn = await client.signTransaction(alice, burnLiquidityRawTxn);
const { hash: burnLiquidityHash } = await client.submitTransaction(burnLiquidityBcsTxn);
await client.waitForTransaction(burnLiquidityHash);
console.log(`Burn liquidity transaction ${burnLiquidityHash} is submitted`);
console.log(`Check on explorer: https://explorer.aptoslabs.com/txn/${burnLiquidityHash}?network=${NETWORKS_MAPPING.DEVNET}`);


} catch(e) {
console.log(e)
}
Expand Down
75 changes: 19 additions & 56 deletions examples/swap_transaction.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
import dotenv from "dotenv";
import SDK from "@pontem/liquidswap-sdk";
import { AptosAccount, CoinClient, FaucetClient } from 'aptos';
import { Network, NetworkToNodeAPI } from '@aptos-labs/ts-sdk';

import { NODE_URL, TokensMapping, MODULES_ACCOUNT, RESOURCE_ACCOUNT, FAUCET_URL, NETWORKS_MAPPING } from "./common";

type TxPayloadCallFunction = {
type: 'entry_function_payload';
function: string;
type_arguments: string[];
arguments: string[];
};
import { TokensMapping, MODULES_ACCOUNT, RESOURCE_ACCOUNT } from "./common";

dotenv.config();

(async() => {

// setup
const sdk = new SDK({
nodeUrl: NODE_URL,
nodeUrl: NetworkToNodeAPI[Network.MAINNET],
nodeOptions: {
network: Network.MAINNET,
},
networkOptions: {
resourceAccount: RESOURCE_ACCOUNT,
moduleAccount: MODULES_ACCOUNT,
Expand All @@ -28,70 +24,37 @@ dotenv.config();
},
},
});
const client = sdk.client;
const coinClient = new CoinClient(client);

// create local account
const alice = new AptosAccount();

const faucetClient = new FaucetClient(NODE_URL, FAUCET_URL);

await faucetClient.fundAccount(alice.address(), 100_000_000);

console.log(`Account Balance ${await coinClient.checkBalance(alice)}`);

// Register account with coin
try {
const coinRegisterPayload = {
type: 'entry_function_payload',
function: '0x1::managed_coin::register',
type_arguments: [TokensMapping.USDT],
arguments: [],
}

const rawTxn = await client.generateTransaction(alice.address(), coinRegisterPayload);
const bcsTxn = await client.signTransaction(alice, rawTxn);
const { hash } = await client.submitTransaction(bcsTxn);
await client.waitForTransaction(hash);

console.log(`Coin ${TokensMapping.USDT} successfully Registered to Alice account`);
console.log(`Check on explorer: https://explorer.aptoslabs.com/txn/${hash}?network=${NETWORKS_MAPPING.DEVNET}`);
} catch(e) {
console.log("Coin register error: ", e);
}

try {
// get Rate for USDT coin.
const usdtRate = await sdk.Swap.calculateRates({
// get Rate for LSD coin.
const lsdRate = await sdk.Swap.calculateRates({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
amount: 10000000, // 0.1 APTOS
curveType: 'uncorrelated',
interactiveToken: 'from',
interactiveToken: 'to',
});

console.log('SsdtRate: ', usdtRate);
console.log('LsdRate: ', lsdRate);

// create payload for swap transaction
const swapTransactionPayload = await sdk.Swap.createSwapTransactionPayload({
fromToken: TokensMapping.APTOS,
toToken: TokensMapping.USDT,
toToken: TokensMapping.LSD,
fromAmount: 10000000, // 0.1 APTOS
toAmount: Number(usdtRate), // USDT
interactiveToken: 'from',
toAmount: Number(lsdRate), // LSD
interactiveToken: 'to',
slippage: 0.005,
stableSwapType: 'normal',
curveType: 'uncorrelated',
}) as TxPayloadCallFunction;
});

console.log('Swap Transaction Payload: ', swapTransactionPayload);

const rawTxn = await client.generateTransaction(alice.address(), swapTransactionPayload);
const bcsTxn = await client.signTransaction(alice, rawTxn);
const { hash } = await client.submitTransaction(bcsTxn);
await client.waitForTransaction(hash);
console.log(`Swap transaction ${hash} is submitted.`);
console.log(`Check on explorer: https://explorer.aptoslabs.com/txn/${hash}?network=${NETWORKS_MAPPING.DEVNET}`);
// const txn = await client.transaction.build.simple({
// data: swapTransactionPayload,
// sender: alice.accountAddress,
// });

} catch (e) {
console.log(e);
Expand Down
Loading
Loading