An FlowX Typescript SDK is a software development kit that allows developers to interact with FlowX protocols using the Typescript programming language.
- Retrieve coin
- Retrieve transaction block liquidity management V2 (add,remove)
- Retrieve transaction block for swap aggregator
npm i @flowx-finance/sdk
Get instance of Coin[]
const coins = await coinProvider.getCoins({
coinTypes: ['0x2::sui::SUI'],
});
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
Arguments | Description | Type | Example |
---|---|---|---|
tokenIn |
Token to be swapped from | string | '0x2::sui::SUI' |
tokenOut |
Token to be received | string | '0x5d....f::coin::COIN' |
amountIn |
Amount of tokenIn to be swapped |
string | '1000000000' |
includeSources |
Optional: Sources to include in aggregation | null | Protocol[] | null |
excludeSources |
Optional: Sources to exclude in aggregation | null | Protocol[] | null |
commission |
Optional: Commission amount for the transaction, use when you want calculate commission with partner fee | null | Commission | null |
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
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