Swing SDK Reference
SwingSDK
Example
import { SwingSDK } from '@swing.xyz/sdk';
const swingSDK = new SwingSDK();
await swingSDK.init();
Constructors
constructor()
new SwingSDK(options?): SwingSDK
Parameters
Parameter | Type |
---|---|
options ? | Options |
Returns
Accessors
api
get api(): Client
bridges
get bridges(): Required< Bridge >[]
chains
get chains(): Chain[]
contracts
get contracts(): Contract[]
isReady
get isReady(): boolean
project
get project(): undefined | ProjectConfig
projectId
get projectId(): undefined | string
rules
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(): object
Methods
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 | Bridge
Get the available bridge
Parameters
Parameter | Type |
---|---|
bridgeSlug | BridgeOrAggregator |
Returns
undefined
| Bridge
getChain()
getChain(chainSlug): undefined | Chain
Get the available chain
Parameters
Parameter | Type |
---|---|
chainSlug | ChainSlug |
Returns
undefined
| Chain
getChainRpcUrl()
getChainRpcUrl(chainSlug): undefined | string
Get 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 | Chain
Get default chain for protocol
Parameters
Parameter | Type |
---|---|
protocol | ProtocolType |
Returns
undefined
| Chain
getNativeTokenForChain()
getNativeTokenForChain(chainSlug): undefined | Token
Get 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(): object
Gets 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 | Token
Get a specific token on a chain
Parameters
Parameter | Type |
---|---|
chainSlug | ChainSlug |
tokenSymbol | string | string & {} |
Returns
undefined
| Token
getTokenForChainByAddress()
getTokenForChainByAddress(chainSlug, tokenAddress): undefined | Token
Get 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[] | undefined
Get 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 | Chain
Get 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 | Token
Get 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 | Chain
Get 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 | Token
Get 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 | Chain
Get 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 | Token
Get 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 | SwingWallet
Get 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): boolean
Checks if token is the chain's native token
Parameters
Parameter | Type |
---|---|
chainSlug | ChainSlug |
tokenSymbol | TokenSymbol |
Returns
boolean
on()
on<P>(type, listener): () => void
READY
the SDK is initialized and ready to be usedTRANSFER
a transfer process step's status has updated
Type parameters
Parameter |
---|
P extends keyof EventMap |
Parameters
Parameter | Type |
---|---|
type | P |
listener | (...args ) => void |
Returns
(): void
Returns
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: () => void
Returns
void
TRANSFER
TRANSFER: (transferStepStatus, transferResults) => void
Parameters
Parameter | Type |
---|---|
transferStepStatus | TransferStepResult |
transferResults | TransferStepResults |
Returns
void
Options
Options: object;
Type declaration
analytics
optional analytics: boolean
debug
optional debug: boolean
projectId
optional projectId: string
ProtocolType
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: TransferStepStatus
Transaction.transferStep
optional transferStep: TransferStep
TransactionStatus
TransactionStatus: Transaction['status'];
TransferParams
TransferParams: object;
Type declaration
amount
amount: string;
contractId
optional contractId: string
Identifier 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: string
Deprecated
This property might no longer be used. Please use fees instead in the next API version.
bridgeFeeInNativeToken
optional bridgeFeeInNativeToken: string
Deprecated
This property might no longer be used. Please use fees instead in the next API version.
contractId
optional contractId: string
Identifier 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: number
TransferStepResults.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;