@bnb-chain/canonical-bridge-sdk
Version:
canonical bridge sdk
101 lines (99 loc) • 2.75 kB
TypeScript
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;
}