Swing SDK Reference
SwingSDK
Example
import { SwingSDK } from '@swing.xyz/sdk';
const swingSDK = new SwingSDK();
await swingSDK.init();Constructors
constructor()
new SwingSDK(options?): SwingSDKParameters
| Parameter | Type |
|---|---|
options? | Options |
Returns
Accessors
api
get api(): Clientbridges
get bridges(): Required< Bridge >[]chains
get chains(): Chain[]contracts
get contracts(): Contract[]isReady
get isReady(): booleanproject
get project(): undefined | ProjectConfigprojectId
get projectId(): undefined | stringrules
get rules(): Partial< Record< ChainSlug | "__any__", {fromTokens: TokenSymbol[]; rules: Partial< Record< TokenSymbol | "__any__", {rules: Partial< Record< ChainSlug | "__any__", {toTokens: TokenSymbol[];} > >; toChainSlugs: ChainSlug[];} > >;} > >tokens
get tokens(): Required< Token > & {symbol: TokenSymbol;} & {symbol: string;}[]wallet
get wallet(): objectMethods
claim()
claim(tx): Promise< void >Claim a transaction
Parameters
| Parameter | Type |
|---|---|
tx | Required< Pick< Transaction, "toTokenSymbol" | "fromUserAddress" | "toUserAddress" | "bridge" | "txId" | "fromChainSlug" | "toChainSlug" | "fromTokenSymbol" | "fromAmount" | "toAmount" | "fromChainTxHash" > > & {id: number;} |
Returns
Promise< void >
continueTransfer()
continueTransfer(tx, stepResults?): Promise< void >Continue an in-progress transfer
Parameters
| Parameter | Type |
|---|---|
tx | Transaction |
stepResults? | TransferStepResults |
Returns
Promise< void >
getAvailableReceiveChains()
getAvailableReceiveChains(parameters): Chain[]Get the available receive chains for the current SDK configuration
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
parameters.fromTokenSymbol | TokenSymbol |
Returns
Chain[]
getAvailableReceiveTokens()
getAvailableReceiveTokens(parameters): Token[]Get the available receive tokens for the current SDK configuration
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
parameters.fromTokenSymbol | TokenSymbol |
parameters.toChainSlug | ChainSlug |
Returns
Token[]
getAvailableSendChains()
getAvailableSendChains(): Chain[]Get the available send chains for the current SDK configuration
Returns
Chain[]
getAvailableSendTokens()
getAvailableSendTokens(parameters): Token[]Get the available send tokens for the current SDK configuration
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
Returns
Token[]
getAvailableStakingChains()
getAvailableStakingChains(parameters): Chain[]Get the available chains that are configured for staking
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
Returns
Chain[]
getAvailableStakingTokens()
getAvailableStakingTokens(parameters): Token[]Get the available staking tokens for the chain
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.chainSlug | ChainSlug |
Returns
Token[]
getBridge()
getBridge(bridgeSlug): undefined | BridgeGet the available bridge
Parameters
| Parameter | Type |
|---|---|
bridgeSlug | BridgeOrAggregator |
Returns
undefined | Bridge
getChain()
getChain(chainSlug): undefined | ChainGet the available chain
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
Returns
undefined | Chain
getChainRpcUrl()
getChainRpcUrl(chainSlug): undefined | stringGet an RPC URL for a chain
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
Returns
undefined | string
getChainsForProtocol()
getChainsForProtocol(protocol): undefined | Chain[]Get available chains for protocol
Parameters
| Parameter | Type |
|---|---|
protocol | ProtocolType |
Returns
undefined | Chain[]
getChainsForTransfer()
getChainsForTransfer(chainSlug): Chain[]Get the available chains to transfer to from a chain
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
Returns
Chain[]
getContract()
getContract({ id }: { id: string }): Contract | undefined;Get a specific contract
Parameters
| Parameter | Type |
|---|---|
contract | object |
contract.id | string |
Returns
Contract | undefined
getContractsForChain()
getContracts(parameters): Contract[]Get the contracts for a specific chain
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.chainSlug | ChainSlug |
Returns
Contract[]
getContractsForChainToken()
getContractsForChainToken(parameters): Contract[]Get the contracts for a specific chain and token
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.chainSlug | ChainSlug |
parameters.tokenSymbol | TokenSymbol |
Returns
Contract[]
getDefaultChainForProtocol()
getDefaultChainForProtocol(protocol): undefined | ChainGet default chain for protocol
Parameters
| Parameter | Type |
|---|---|
protocol | ProtocolType |
Returns
undefined | Chain
getNativeTokenForChain()
getNativeTokenForChain(chainSlug): undefined | TokenGet the chain's native currency token
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
Returns
undefined | Token
getPopularTokensForChain()
getPopularTokensForChain(chainSlug): Token[]Get popular tokens for a chain
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
Returns
Token[]
getQuote()
getQuote(params, opts = {}): Promise< {debug: string[]; fromChain: Chain; fromToken: Token; routes: {distribution: {}; duration: number; gas: string; gasUSD: string; quote: {amount: string; amountUSD: string; bridgeFee: string; bridgeFeeInNativeToken: string; bridgeFeeInNativeTokenUSD: string; bridgeFeeUSD: string; decimals: number; fees: Fee[]; fromAmount: string;}; route: Route[];}[]; toChain: Chain; toToken: Token;} >Get a list of routes for a specific transfer or contract call
Parameters
| Parameter | Type |
|---|---|
params | TransferParams |
opts | object |
opts.signal? | GenericAbortSignal |
Returns
Promise< {debug: string[]; fromChain: Chain; fromToken: Token; routes: {distribution: {}; duration: number; gas: string; gasUSD: string; quote: {amount: string; amountUSD: string; bridgeFee: string; bridgeFeeInNativeToken: string; bridgeFeeInNativeTokenUSD: string; bridgeFeeUSD: string; decimals: number; fees: Fee[]; fromAmount: string;}; route: Route[];}[]; toChain: Chain; toToken: Token;} >
getStartingPair()
getStartingPair(): objectGets a valid token pair for the current SDK configuration
Returns
fromChain
fromChain: undefined | Chain;fromToken
fromToken: undefined | Token;toChain
toChain: undefined | Chain;toToken
toToken: undefined | Token;getStepsForBridge()
getStepsForBridge(bridgeSlug): TransferStep[]Get the required transfer steps for a bridge
Parameters
| Parameter | Type |
|---|---|
bridgeSlug | BridgeOrAggregator |
Returns
getTokenForChain()
getTokenForChain(chainSlug, tokenSymbol): undefined | TokenGet a specific token on a chain
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
tokenSymbol | string | string & {} |
Returns
undefined | Token
getTokenForChainByAddress()
getTokenForChainByAddress(chainSlug, tokenAddress): undefined | TokenGet a specific token on a chain by address
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
tokenAddress | string |
Returns
undefined | Token
getTokensForChain()
getTokensForChain(chainSlug): Token[]Get tokens for a chain
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
Returns
Token[]
getValidContractsForChainToken()
getValidContractsForChainToken(parameters): Contract[] | undefinedGet the contract for a specific chain and token
Provide contractId to get a specific token, otherwise the first available token will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.chainSlug | ChainSlug |
parameters.contractId? | string |
parameters.tokenSymbol | TokenSymbol |
Returns
Contract | undefined
getValidReceiveChain()
getValidReceiveChain(parameters): undefined | ChainGet a valid chain for the receive side
Provide toChainSlug to get a specific chain, otherwise the first available chain will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
parameters.fromTokenSymbol | TokenSymbol |
parameters.toChainSlug? | ChainSlug |
Returns
undefined | Chain
getValidReceiveToken()
getValidReceiveToken(parameters): undefined | TokenGet a valid token for the receive chain
Provide toTokenSymbol to get a specific token, otherwise the first available token will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
parameters.fromTokenSymbol | TokenSymbol |
parameters.toChainSlug | ChainSlug |
parameters.toTokenSymbol? | TokenSymbol |
Returns
undefined | Token
getValidSendChain()
getValidSendChain(parameters): undefined | ChainGet a valid chain for the send side
Provide fromChainSlug to get a specific chain, otherwise the first available chain will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug? | ChainSlug |
Returns
undefined | Chain
getValidSendToken()
getValidSendToken(parameters): undefined | TokenGet a valid token for the send chain.
Provide fromTokenSymbol to get a specific token, otherwise the first available token will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
parameters.fromTokenSymbol? | TokenSymbol |
Returns
undefined | Token
getValidStakingChain()
getValidStakingChain(parameters): undefined | ChainGet a valid staking chain.
Provide toChainSlug to get a specific chain, otherwise the first available chain will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.fromChainSlug | ChainSlug |
parameters.toChainSlug? | ChainSlug |
Returns
undefined | Chain
getValidStakingToken()
getValidStakingToken(parameters): undefined | TokenGet a valid staking chain.
Provide toTokenSymbol to get a specific token, otherwise the first available token will be returned.
Parameters
| Parameter | Type |
|---|---|
parameters | object |
parameters.toChainSlug | ChainSlug |
parameters.toTokenSymbol? | TokenSymbol |
Returns
undefined | Token
getWallet()
getWallet(address): undefined | SwingWalletGet the connected wallet for an address
Parameters
| Parameter | Type |
|---|---|
address | string |
Returns
undefined | SwingWallet
init()
init(): Promise< void >Initialize the SDK
Returns
Promise< void >
isNativeToken()
isNativeToken(chainSlug, tokenSymbol): booleanChecks if token is the chain's native token
Parameters
| Parameter | Type |
|---|---|
chainSlug | ChainSlug |
tokenSymbol | TokenSymbol |
Returns
boolean
on()
on<P>(type, listener): () => voidREADYthe SDK is initialized and ready to be usedTRANSFERa transfer process step's status has updated
Type parameters
| Parameter |
|---|
P extends keyof EventMap |
Parameters
| Parameter | Type |
|---|---|
type | P |
listener | (...args) => void |
Returns
(): voidReturns
void
transfer()
transfer(transferRoute, transferParams): Promise< void >Start the transfer process for the selected route
Parameters
| Parameter | Type | Description |
|---|---|---|
transferRoute | object | - |
transferRoute.distribution? | object | - |
transferRoute.duration | number | Average estimated length of time (in minutes) this transfer will take to complete |
transferRoute.gas | string | DEPRECATED - please see new fees return object. Gas limit for the deposit. example: 4000000000 |
transferRoute.gasUSD | string | DEPRECATED - please see new fees return object |
transferRoute.quote | object | - |
transferRoute.quote.amount | string | - |
transferRoute.quote.amountUSD | string | - |
transferRoute.quote.bridgeFee | string | DEPRECATED - please see new fees return object |
transferRoute.quote.bridgeFeeInNativeToken | string | DEPRECATED - please see new fees return object |
transferRoute.quote.bridgeFeeInNativeTokenUSD | string | DEPRECATED - please see new fees return object |
transferRoute.quote.bridgeFeeUSD | string | DEPRECATED - please see new fees return object |
transferRoute.quote.decimals | number | - |
transferRoute.quote.fees | Fee[] | Returns all fees associated with this quote and transfer. This includes gas and bridge fees (i.e liquidity, protocol, relayer and bonder). Every fee is also denominated in either the source, destination or source-native token. Fees are also converted to USD$ equivalents for convenience. |
transferRoute.quote.fromAmount? | string | - |
transferRoute.route | Route[] | - |
transferParams | TransferParams | - |
Returns
Promise< void >
Bridge
Bridge: Omit< Required< Paths.V0TransferGetConfig.Responses.$200["bridges"][0] >, "steps" > & {steps: TransferStep[];}Bridge.steps
steps: TransferStep[]
BridgeOrAggregator
BridgeOrAggregator: Components.Schemas.Bridge | Components.Schemas.Aggregator;BridgeSlug
BridgeSlug: Components.Schemas.Bridge;Chain
Chain: Components.Schemas.Chain;ChainSlug
ChainSlug: Components.Schemas.ChainSlug;ContractCallInfo
ContractCallInfo: Components.Schemas.ContractCallInfo;Contract
interface Contract {
id: string; // Unique Swing Identifier
type: 'deposit' | 'withdraw';
address: string; // Deployed contract address
method: string; // Contract method (eg. deposit, withdraw)
chain: string;
inputToken: Token; // Token you send to the contract
outputToken: Token | null; // Token you receive from the contract
// Swing's integration provider
integration: {
type: 'staking';
slug: string;
name: string;
logo: string;
monetization: boolean;
};
}EventMap
EventMap: object;Type declaration
READY
READY: () => voidReturns
void
TRANSFER
TRANSFER: (transferStepStatus, transferResults) => voidParameters
| Parameter | Type |
|---|---|
transferStepStatus | TransferStepResult |
transferResults | TransferStepResults |
Returns
void
Options
Options: object;Type declaration
analytics
optional analytics: booleandebug
optional debug: booleanprojectId
optional projectId: stringProtocolType
ProtocolType: Components.Schemas.ProtocolType;SupportedProtocols
SupportedProtocols: 'evm' | 'solana' | 'ibc' | 'multiversx';Token
Token: Required< Components.Schemas.Token > & {symbol: TokenSymbol;}Token.symbol
symbol: TokenSymbol;
TokenSymbol
TokenSymbol: Components.Schemas.TokenSymbol;Transaction
Transaction: Components.Schemas.Transaction & Required< Pick< Components.Schemas.Transaction, "fromChainSlug" | "toChainSlug" | "fromTokenSymbol" | "toTokenSymbol" | "bridge" > > & {id: number; transferStatus: TransferStepStatus; transferStep: TransferStep;}Transaction.id
id: number;Transaction.transferStatus
optional transferStatus: TransferStepStatusTransaction.transferStep
optional transferStep: TransferStep
TransactionStatus
TransactionStatus: Transaction['status'];TransferParams
TransferParams: object;Type declaration
amount
amount: string;contractId
optional contractId: stringIdentifier for the contract to use
fromChain
fromChain: ChainSlug;fromToken
fromToken: TokenSymbol;fromUserAddress
fromUserAddress: string;toChain
toChain: ChainSlug;toToken
toToken: TokenSymbol;toUserAddress
toUserAddress: string;TransferRoute
TransferRoute: Paths.V0TransferGetQuote.Responses.$200['routes'][0];TransferStatus
TransferStatus: 'PENDING' | 'FAILED' | 'SUCCESS';TransferStatusWithData
TransferStatusWithData: {status: "SUCCESS" | "PENDING" | "ACTION_REQUIRED" | "BRIDGING" | "CONFIRMING" | undefined;} | {error: string; status: "FAILED";} | {address: string; chain: Chain; status: "CHAIN_SWITCH_REQUIRED" | "WALLET_CONNECTION_REQUIRED"; token: Token;}TransferStep
TransferStep: 'allowance' | 'approve' | 'send' | 'bridge' | 'sign' | 'claim';TransferStepParams
TransferStepParams: object;Type declaration
bridge
bridge: BridgeOrAggregator;bridgeFee
optional bridgeFee: stringDeprecated
This property might no longer be used. Please use fees instead in the next API version.
bridgeFeeInNativeToken
optional bridgeFeeInNativeToken: stringDeprecated
This property might no longer be used. Please use fees instead in the next API version.
contractId
optional contractId: stringIdentifier for the contract to use
fees
optional fees: Components.Schemas.Fee[]fromChain
fromChain: Chain;fromToken
fromToken: Token;fromUserAddress
fromUserAddress: string;route
route: Components.Schemas.Route[]toAmount
toAmount: string;toChain
toChain: Chain;toToken
toToken: Token;toUserAddress
toUserAddress: string;tokenAmount
tokenAmount: string;TransferStepResult
TransferStepResult: StepResult & TransferStatusWithData;TransferStepResults
TransferStepResults: Record< TransferStep, TransferStepResult > & {id: number; status: TransferStatus;}TransferStepResults.id
optional id: numberTransferStepResults.status
status: TransferStatus;
TransferStepStatus
TransferStepStatus: TransferStatus |
'BRIDGING' |
'CONFIRMING' |
'ACTION_REQUIRED' |
'CHAIN_SWITCH_REQUIRED' |
'WALLET_CONNECTION_REQUIRED';TransferStepStatusName
TransferStepStatusName: Components.Schemas.TransferStepStatus;TransferTxData
TransferTxData: Components.Schemas.TransferTxData;WalletProvider
WalletProvider: Web3Provider |
ExternalProvider |
JsonRpcFetchFunc |
Keplr |
CoinbaseWalletProvider |
ExtensionProvider;