1.8.6 • Published 8 months ago

@flowx-finance/sdk v1.8.6

Weekly downloads
-
License
-
Repository
-
Last release
8 months ago

Official FlowX Finance TypeScript SDK for Sui

An FlowX Typescript SDK is a software development kit that allows developers to interact with FlowX protocols using the Typescript programming language.

Features

  • Retrieve coin
  • Retrieve transaction block liquidity management V2 (add,remove)
  • Retrieve transaction block for swap aggregator

Getting Started

npm i @flowx-finance/sdk

Retrieve coin

Get instance of Coin[]

const coins = await coinProvider.getCoins({
  coinTypes: ['0x2::sui::SUI'],
});

Swap Aggregator

Get Swap Route

To find best route for swap

const quoter = new AggregatorQuoter('mainnet');
const params: AggregatorQuoterQueryParams = {
  tokenIn: '0x2::sui::SUI',
  tokenOut: '0x5d4b302506645c37ff133b98c4b50a5ae14841659738d6d733d59d0d217a93bf::coin::COIN',
  amountIn: '1000000000',
  includeSources: null, //optional
  excludeSources: null, //optional
  commission: null, //optional, and will be explain later
};

const routes = await quoter.getRoutes(params);

Use function getRoutes in instance AggregatorQuoter with it's arguments to create a Route

ArgumentsDescriptionTypeExample
tokenInToken to be swapped fromstring'0x2::sui::SUI'
tokenOutToken to be receivedstring'0x5d....f::coin::COIN'
amountInAmount of tokenIn to be swappedstring'1000000000'
includeSourcesOptional: Sources to include in aggregationnull | Protocol[]null
excludeSourcesOptional: Sources to exclude in aggregationnull | Protocol[]null
commissionOptional: Commission amount for the transaction, use when you want calculate commission with partner feenull | Commissionnull

Build Transaction for aggregator swap

Build transaction that you can use with SuiClient or Dapp-kit

const tradeBuilder = new TradeBuilder(NETWORK.MAINNET, routes); //routes get from quoter
const trade = tradeBuilder
  .sender('0xSenderAddress') //Optional if you want pass coin later
  .amountIn('1000000000')
  .amountOut('500000000000000000') // Estimate amount out, usual get from quoter
  .slippage((1 / 100) * 1e6) // Slippage 1%
  .deadline(Date.now() + 3600) // 1 hour from now
  .commission(null) // Commission will be explain later
  .build();
console.log(trade); // Output: Trade object with configured parameters
const txb = trade.swap({ client }) // You can also pass coinIn and exist TractionBlock if you want

Find route and build transaction with commission

The Commission class represents a commission configuration for transactions, defining the partner, commission type, and value. It includes methods for computing the commission amount based on the specified type.

const commission = new Commission('0xPartnerAddress', new Coin('0x2::sui:SUI'), CommissionType.PERCENTAGE, '500', true);

if CommissionType.PERCENTAGE then value should be input 1/100 * 1e6 it is example of 1% if CommissionType.FLAT then value should be the amount of token you want to fee include decimals Then you should pass commission variable to both tradeBuilder and getRoutes for exact values

Liquidity V2

Add liquidity for AMM (V2)

To create new instance AddLiquidityV2

import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
import { AddLiqudidityV2 } from '@flowx-pkg/ts-sdk';

const network = 'mainnet';
const suiClient = new SuiClient({ url: getFullnodeUrl(network) });

const addLiquidityV2 = new AddLiqudidityV2(network, suiClient);

Use function buildTransaction in instance addLiquidityV2 with it's arguments to create a Transaction

ArgumentsDescriptionTypeExample
coinTypeCoin typesIBothCoins\<string>{ x: "suiType", y: "usdcType" }
amountAmount of token to depositIBothCoins\<string>{ x: "1000000", y: "200000" }
senderAddressSender addressstring
slippageSlippage percent (Ex: 1% = 0.01)number0.001

Remove liquidity for AMM (V2)

To create new instance RemoveLiquidityV2

import { SuiClient, getFullnodeUrl } from '@mysten/sui/client';
import { RemoveLiqudidityV2 } from '@flowx-pkg/ts-sdk';

const network = 'mainnet';
const suiClient = new SuiClient({ url: getFullnodeUrl(network) });

const removeLiquidityV2 = new RemoveLiqudidityV2(network, suiClient);

Use function buildTransaction in instance removeLiquidityV2 with it's arguments to create a Transaction

ArgumentsDescriptionTypeExample
pairLpTypePairLpTypestring
pairLpAmountTotal amount pair of token to withdrawstring100000
coinTypeCoin typesIBothCoins\<string>{ x: "suiType", y: "usdcType" }
amountAmount of token to withdrawIBothCoins\<string>{ x: "1000000", y: "200000" }
senderAddressSender addressstring
slippageSlippage percent (Ex: 1% = 0.01)number0.001
1.8.6

8 months ago

1.8.5

8 months ago

1.8.2

9 months ago

1.8.4

8 months ago

1.8.3

9 months ago

1.8.1

9 months ago

1.8.0

9 months ago

1.7.0

11 months ago

1.6.2

11 months ago

1.6.2-0

11 months ago

1.6.1-0

11 months ago

1.6.0-0

11 months ago

1.5.6

12 months ago

1.5.5

12 months ago

1.5.4

12 months ago

1.5.3

12 months ago

1.5.2

12 months ago

1.5.1

12 months ago

1.5.0

12 months ago

1.4.0

12 months ago

1.3.2

12 months ago

1.3.1

12 months ago

1.3.0

12 months ago

1.2.2-3

12 months ago

1.2.2-2

12 months ago

1.2.2-1

12 months ago

1.2.2-0

12 months ago

1.2.1

12 months ago

1.2.0

12 months ago

1.1.0

12 months ago

1.0.0

1 year ago

0.0.1

1 year ago