UNPKG

@bnb-chain/canonical-bridge-sdk

Version:
101 lines (99 loc) 2.75 kB
import { ICBridgeChain, ICBridgePeggedPairConfig, ICBridgeToken } from '../adapters/cBridge/types'; import { IDeBridgeChain, IDeBridgeToken } from '../adapters/deBridge/types'; import { ILayerZeroChain, ILayerZeroToken } from '../adapters/layerZero/types'; import { IMesonChain, IMesonToken } from '../adapters/meson/types'; import { IStargateChain, IStargateToken } from '../adapters/stargate'; import { Chain } from 'viem'; import { IMayanChain, IMayanToken } from '../adapters/mayan/types'; export type ValueOf<T> = T[keyof T]; export type ChainType = 'link' | 'evm' | 'tron' | 'solana'; export type BridgeType = 'cBridge' | 'deBridge' | 'stargate' | 'layerZero' | 'meson' | 'mayan'; export interface IBridgeChain { id: number; name: string; icon?: string; explorerUrl: string; tokenUrlPattern: string; chainType: ChainType; externalBridgeUrl?: string; isCompatible: boolean; cBridge?: { raw?: ICBridgeChain; }; deBridge?: { raw?: IDeBridgeChain; }; stargate?: { raw?: IStargateChain; }; layerZero?: { raw?: ILayerZeroChain; }; meson?: { raw?: IMesonChain; }; mayan?: { raw?: IMayanChain; }; } export interface IBridgeTokenBaseInfo { name: string; symbol: string; address: string; decimals: number; displaySymbol: string; icon: string; } export interface IBridgeToken extends IBridgeTokenBaseInfo { isCompatible: boolean; isPegged: boolean; cBridge?: IBridgeTokenBaseInfo & { peggedConfig?: ICBridgePeggedPairConfig; raw?: ICBridgeToken; }; deBridge?: IBridgeTokenBaseInfo & { raw?: IDeBridgeToken; }; stargate?: IBridgeTokenBaseInfo & { raw?: IStargateToken; }; layerZero?: IBridgeTokenBaseInfo & { raw?: ILayerZeroToken; }; meson?: IBridgeTokenBaseInfo & { raw?: IMesonToken; }; mayan?: IBridgeTokenBaseInfo & { raw?: IMayanToken; }; } export interface IBridgeTokenWithBalance extends IBridgeToken { balance?: number; value?: number; } export interface INativeCurrency { name: string; symbol: string; decimals: number; } export interface IExternalChain { chainId: number; bridgeUrl: string; tokens: Record<number, string[]>; } export interface IChainBlockExplorer { name: string; url: string; apiUrl?: string | undefined; tokenUrlPattern?: string | undefined; } export interface IChainConfig extends Chain { chainType: ChainType; id: number; name: string; nativeCurrency: INativeCurrency; blockExplorers?: { [key: string]: IChainBlockExplorer; default: IChainBlockExplorer; } | undefined; }