import { Asset } from '../asset'; import { Dex } from './dex'; export type ChainAssetId = string | number | bigint | { [key: string]: ChainAssetId; }; export type ChainCurrency = { asset: Asset; decimals: number; }; export declare enum ChainEcosystem { Ethereum = "Ethereum", Polkadot = "Polkadot", Kusama = "Kusama", Solana = "Solana", Sui = "Sui" } export type ChainRpcs = { http: string[]; webSocket: string[]; }; export declare enum ChainType { 'Parachain' = "parachain", 'EvmParachain' = "evm-parachain", 'EvmChain' = "evm-chain", 'SolanaChain' = "solana-chain", 'SuiChain' = "sui-chain" } /** * Chain Asset Data * * @interface ChainAssetData * @member {Asset} asset asset key & symbol * @member {number} decimals asset decimals * @member {ChainAssetId} id asset internal id * @member {ChainAssetId} balanceId asset id to query balance (if other than internal) * @member {AssetAmount} min asset minimal deposit */ export interface ChainAssetData { asset: Asset; balanceId?: ChainAssetId; decimals?: number; id?: ChainAssetId; min?: number; } export interface ChainParams { assetsData: T[]; ecosystem?: ChainEcosystem; explorer?: string; isTestChain?: boolean; key: string; name: string; } export declare abstract class Chain { readonly assetsData: Map; readonly ecosystem?: ChainEcosystem; readonly explorer?: string; readonly isTestChain: boolean; readonly key: string; readonly name: string; private _dex?; constructor({ assetsData, ecosystem, explorer, isTestChain, key, name, }: ChainParams); abstract getType(): ChainType; abstract getCurrency(): Promise; get dex(): Dex; registerDex(dex: Dex): this; isSubstrate(): boolean; isEvm(): boolean; isSolana(): boolean; isSui(): boolean; isEvmChain(): boolean; isEvmParachain(): boolean; isParachain(): boolean; getAsset(key: string): Asset | undefined; getAssetId(asset: Asset): ChainAssetId; getAssetDecimals(asset: Asset): number | undefined; getAssetMin(asset: Asset): number; getBalanceAssetId(asset: Asset): ChainAssetId; updateAsset(asset: T): void; }