@argoplatform/transfer-sdk
v0.5.2
Published
Transfer SDK for Argo's APIs
Downloads
129
Readme
Transfer SDK for Web Apps
The Transfer SDK is a comprehensive Web SDK that makes interaction with the Transfer API simple.
Getting started
npm i @argoplatform/transfer-sdk
After installing, import as such:
import { Transfer } from "transfer-sdk";
To initialize:
// apiKey can be any value for now.
const settings = {
apiKey: "DEMO",
};
const transfer = new Transfer(settings);
Functionality
These are the currently supported functions with the Transfer SDK:
getSupportedChains
: returns a list of supported chains by the Transfer SDK.getSupportedTokens
: returns a list of supported tokens within a given chain.getTransfer
: returns route info and transaction request for a requested transfer.execute
: performs the transfer.
getSupportedChains()
const supportedChains = await transfer.getSupportedChains();
Returns an Array of SupportedChain object:
{
name: string;
chainId: number;
logoURI?: string;
isTestnet: boolean;
}
getSupportedTokens()
const supportedChains = await transfer.getSupportedTokens(chainId?);
chainId
is the ID number
of the chain you want the supported tokens from.
If no chainId
is provided, it will return all the supported tokens for every chain.
Returns an Array of SupportedToken object:
{
name: string;
chainId: number;
address: string;
decimals: number;
logoURI?: string;
}
getTransfer()
Returns transactionRequest
and routeInfo
.
Make sure to multiply the amount by the 10 ^ fromToken.decimals
const txnBody = await transfer.getTransfer(TransferRequest);
TransferRequest
parameter:
{
qty: string; // amount of `srcChainToken` transferring
srcChainId: string; // eg 5 for ETH Goerli
dstChainId: string;
srcChainTokenAddress: string; // erc20 token address
dstChainTokenAddress: string;
fromAddress: string;
toAddress: string;
}
Returns TransferResult
:
{
bestRoute: Route;
alternateRoutes: Route[];
}
Route interface:
{
dstAmountEstimate: number;
dstChainSwapDexs: Dex[];
srcChainSwapDexs: Dex[];
bridgeInfo: BridgeInfo;
transactionRequest: TransactionRequest; // ethers.js TransactionRequest object
approvalInfo: {
srcChainContractToApprove: string;
srcChainTokenAddress: string;
srcChainTokenAmount: number;
};
}
Dex interface:
{
name: string;
logoURI?: string;
}
BridgeInfo interface:
{
name: string;
logoURI?: string;
}