Type Definitions
We have released v1.0.0 of Elements with an improved UX and developer API. We recommend you to use v1.x. Here's the migration guide for v0.x users.
SwapProps
type SwapsProps = {
className?: string
title?: string
showPoweredByBanner?: boolean
defaultValues?: Partial<SwapsValues>
defaultSettings?: Partial<SwapsSettings>
txnLifecycleHooks?: Partial<TxnLifecycleHooks<SwapsCompletionSummary>>
allowedSourceChains?: AllowedSourceChainConfig[]
allowedDestinationChains?: AllowedDestinationChainConfig[]
onValuesChange?: (values: SwapsValues) => void
onSettingsChange?: (settings: SwapsSettings) => void
}
SwapModalProps
type SwapsModalProps = SwapsProps & {
isOpen: boolean
setIsOpen: (v: boolean) => void
}
IBCSwapsProps
type IBCSwapsProps = {
className?: string
title?: string
showPoweredByBanner?: boolean
defaultValues?: DefaultIBCSwapValuesType
defaultSettings?: Partial<IBCSwapsSettings>
txnLifecycleHooks?: Partial<TxnLifecycleHooks<IBCSwapsCompletionSummary>>
allowedSourceChains?: AllowedSourceChainConfig[]
allowedDestinationChains?: AllowedDestinationChainConfig[]
onValuesChange?: (values: IBCSwapsValues) => void
onSettingsChange?: (settings: IBCSwapsSettings) => void
}
IBCSwapsModalProps
type IBCSwapsModalProps = IBCSwapsProps & {
isOpen: boolean
setIsOpen: (v: boolean) => void
}
Account
interface Account {
pubKey: Uint8Array
bech32Address: string
isNanoLedger: boolean
}
Tabs
enum Tabs {
SWAP = 'swap',
CROSS_CHAIN_SWAPS = 'cross-chain-swaps',
FIAT_ON_RAMP = 'fiat-on-ramp',
TRANSFER = 'transfer',
BRIDGE_USDC = 'bridge-usdc'
}
ChainBaseData
interface ChainBaseData {
chainName: string;
icon: string;
rpcUrl: string;
chainId: string | number;
chainType: 'cosmos' | 'evm';
}
CosmosChainData
interface CosmosChainData extends ChainBaseData {
chainId: string;
restUrl: string;
addressPrefix: string;
baseDenom: string;
chainType: 'cosmos';
coinType: string;
chainRegistryPath: string;
txExplorer: {
mainnet: {
name: string;
txUrl: string;
};
testnet?: {
name: string;
txUrl: string;
};
};
}
EVMChainData
interface EVMChainData extends ChainBaseData {
chainId: number;
chainType: 'evm';
}
ChainData
type ChainData = CosmosChainData | EVMChainData;
Asset
type Asset = {
denom: string;
symbol: string;
logoUri: string;
originDenom: string;
decimals: number;
denomTracePath?: string;
};
Currency
type Currency = {
name: string;
symbol: string;
countryCode: string;
priority: number;
};
TXN_STATUS
enum TXN_STATUS {
INIT = "INIT",
PENDING = "PENDING",
SUCCESS = "SUCCESS",
FAILED = "FAILED",
SIGNED = "SIGNED"
}
TxnStatus
type TxnStatus = {
status: TXN_STATUS
responses: ActionResponse[]
isComplete: boolean
}[]
ActionResponse
type ActionResponse = {
status: TRANSFER_STATE
data: any
}
TRANSFER_STATE
enum TRANSFER_STATE {
TRANSFER_UNKNOWN = "TRANSFER_UNKNOWN",
TRANSFER_PENDING = "TRANSFER_PENDING",
TRANSFER_RECEIVED = "TRANSFER_RECEIVED",
TRANSFER_SUCCESS = "TRANSFER_SUCCESS",
TRANSFER_FAILURE = "TRANSFER_FAILURE"
}
OrderStatusResponse
type OrderStatusResponse = {
transferStatus: TRANSFER_STATUS;
humanStatusField: string;
paymentStatus: string;
allPossibleTxHashes: {
originalTxHashFromProvider: {
txHash: string;
txLink: string;
};
};
txHash: string;
};
TRANSFER_REQUEST
enum TRANSFER_STATUS {
UNINITIATED = "uninitiated",
PENDING = "pending",
FAILED = "failed",
SETTLED = "settled",
UNKNOWN = "unknown"
}
Prettify
This is a custom utility helper type. Read more about it here.
IBCSwapTxnInfo
type IBCSwapTxnInfo = {
type: 'ibc-swap-data'
fromChain: CosmosChainData
toChain: CosmosChainData
fromToken: Asset | string
toToken: Asset | string
hops: number
}
Signer
interface SignDirectResponse {
signature: Uint8Array;
signed: SignDoc;
}
interface SignAminoResponse {
readonly signed: StdSignDoc;
readonly signature: Uint8Array;
}
interface Signer {
signDirect: (address: string, signDoc: SignDoc) => Promise<SignDirectResponse | TxRaw>
signAmino: (address: string, signDoc: StdSignDoc) => Promise<SignAminoResponse>
}
You can find definitions for SignDoc and StdSignDoc in cosmjs-types package.
TxnSignBaseArgs
type TxnSignBaseArgs =
| {
chainType: 'cosmos'
chainId: string
chainName: string
signMode: 'amino' | 'direct'
transactionTypes: MsgTypeUrl[]
messages: MessageWithInfo[]
}
| {
chainType: 'evm'
chainId: number
chainName: string
}
onTxnSignInit
type TxnSignInitArgs = TxnSignBaseArgs
type OnTxnSignInit = (txn: TxnSignInitArgs) => void
onTxnSignApproved
type BroadcastedTxInfo =
| {
chainType: 'evm'
txHash: `0x${string}`
}
| {
chainType: 'cosmos'
txHash: string
fees: readonly Coin[]
data?: IBCSwapTxnInfo
}
type TxnSignApprovedArgs = Prettify<TxnSignBaseArgs & BroadcastedTxInfo>
onTxnSignFailed
type TxnSignInitArgs = TxnSignBaseArgs
type OnTxnSignFailed = (txn: TxnSignFailedArgs, err: Error) => void
onTxnInProgress
// the return value of this callback is a function which is
// called when the said transaction is completed
type OnTxnInProgress = (tab: Tabs) => () => void
Last updated