//#region src/chainflip.d.ts
declare const chainflipAssets: readonly ["Usdc", "Usdt", "Wbtc", "Flip", "Eth", "Btc", "ArbUsdc", "ArbUsdt", "ArbEth", "Sol", "SolUsdc", "SolUsdt", "HubDot", "HubUsdt", "HubUsdc"];
declare const legacyChainflipAssets: readonly ["Dot"];
type ChainflipAsset = (typeof chainflipAssets)[number];
type LegacyChainflipAsset = (typeof legacyChainflipAssets)[number];
type AnyChainflipAsset = ChainflipAsset | LegacyChainflipAsset;
declare const priceAssets: readonly ["Btc", "Eth", "Sol", "Usdc", "Usdt", "Usd", "Fine"];
type PriceAsset = (typeof priceAssets)[number];
type BaseChainflipAsset = Exclude<ChainflipAsset, 'Usdc'>;
type AnyBaseChainflipAsset = Exclude<AnyChainflipAsset, 'Usdc'>;
declare const baseChainflipAssets: BaseChainflipAsset[];
declare const chainflipEvmChains: readonly ["Ethereum", "Arbitrum"];
type ChainflipEvmChain = (typeof chainflipEvmChains)[number];
declare const chainflipChains: readonly ["Ethereum", "Arbitrum", "Bitcoin", "Solana", "Assethub"];
type ChainflipChain = (typeof chainflipChains)[number];
declare const legacyChainflipChains: readonly ["Polkadot"];
type LegacyChainflipChain = (typeof legacyChainflipChains)[number];
type AnyChainflipChain = ChainflipChain | LegacyChainflipChain;
declare const chainflipNetworks: readonly ["backspin", "sisyphos", "perseverance", "mainnet"];
type ChainflipNetwork = (typeof chainflipNetworks)[number];
declare const addressTypes: readonly ["Eth", "Btc", "Arb", "Sol", "Hub"];
type AddressType = (typeof addressTypes)[number];
declare const legacyAddressTypes: readonly ["Dot"];
type LegacyAddressType = (typeof legacyAddressTypes)[number];
type AnyAddressType = AddressType | LegacyAddressType;
type AssetOfChain<C extends ChainflipChain> = (typeof chainConstants)[C]['assets'][number];
type AnyAssetOfChain<C extends AnyChainflipChain> = (typeof anyChainConstants)[C]['assets'][number];
type ChainAssetMap<T> = { [C in ChainflipChain]: { [A in AssetOfChain<C>]: T } };
type AnyChainAssetMap<T> = { [C in AnyChainflipChain]: { [A in AnyAssetOfChain<C>]: T } };
type BaseChainAssetMap<T> = { [C in ChainflipChain]: { [A in BaseChainflipAsset as Extract<(typeof assetConstants)[A], {
  chain: C;
}>['symbol']]: T } };
type AnyBaseChainAssetMap<T> = { [C in AnyChainflipChain]: { [A in BaseChainflipAsset as Extract<(typeof anyAssetConstants)[A], {
  chain: C;
}>['symbol']]: T } };
type AssetAndChain = { [C in ChainflipChain]: { [A in keyof ChainAssetMap<unknown>[C]]: {
  chain: C;
  asset: A;
} }[keyof ChainAssetMap<unknown>[C]] }[ChainflipChain];
type AnyAssetAndChain = { [C in AnyChainflipChain]: { [A in keyof AnyChainAssetMap<unknown>[C]]: {
  chain: C;
  asset: A;
} }[keyof AnyChainAssetMap<unknown>[C]] }[AnyChainflipChain];
type BaseAssetAndChain = Exclude<AssetAndChain, {
  chain: 'Ethereum';
  asset: 'USDC';
}>;
type AnyBaseAssetAndChain = Exclude<AnyAssetAndChain, {
  chain: 'Ethereum';
  asset: 'USDC';
}>;
type ChainMap<T> = { [C in ChainflipChain]: T };
type AnyChainMap<T> = { [C in AnyChainflipChain]: T };
type InternalAssetMap<T> = { [A in ChainflipAsset]: T };
type AnyInternalAssetMap<T> = { [A in AnyChainflipAsset]: T };
type UncheckedAssetAndChain = {
  chain: ChainflipChain;
  asset: AssetSymbol;
};
type AnyUncheckedAssetAndChain = {
  chain: AnyChainflipChain;
  asset: AssetSymbol;
};
declare function readAssetValue<T>(map: ChainAssetMap<T>, asset: ChainflipAsset | BaseChainflipAsset): T;
declare function readAssetValue<T>(map: BaseChainAssetMap<T>, asset: BaseChainflipAsset): T;
declare function readAssetValue<T>(map: ChainAssetMap<T> | BaseChainAssetMap<T>, asset: BaseChainflipAsset): T;
declare const assetConstants: {
  readonly Eth: {
    readonly chain: "Ethereum";
    readonly symbol: "ETH";
    readonly decimals: 18;
  };
  readonly Flip: {
    readonly chain: "Ethereum";
    readonly symbol: "FLIP";
    readonly decimals: 18;
  };
  readonly Usdc: {
    readonly chain: "Ethereum";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly Usdt: {
    readonly chain: "Ethereum";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
  readonly Wbtc: {
    readonly chain: "Ethereum";
    readonly symbol: "WBTC";
    readonly decimals: 8;
  };
  readonly Btc: {
    readonly chain: "Bitcoin";
    readonly symbol: "BTC";
    readonly decimals: 8;
  };
  readonly ArbUsdc: {
    readonly chain: "Arbitrum";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly ArbUsdt: {
    readonly chain: "Arbitrum";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
  readonly ArbEth: {
    readonly chain: "Arbitrum";
    readonly symbol: "ETH";
    readonly decimals: 18;
  };
  readonly Sol: {
    readonly chain: "Solana";
    readonly symbol: "SOL";
    readonly decimals: 9;
  };
  readonly SolUsdc: {
    readonly chain: "Solana";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly SolUsdt: {
    readonly chain: "Solana";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
  readonly HubDot: {
    readonly chain: "Assethub";
    readonly symbol: "DOT";
    readonly decimals: 10;
  };
  readonly HubUsdc: {
    readonly chain: "Assethub";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly HubUsdt: {
    readonly chain: "Assethub";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
};
declare const anyAssetConstants: {
  readonly Dot: {
    readonly chain: "Polkadot";
    readonly symbol: "DOT";
    readonly decimals: 10;
  };
  readonly Eth: {
    readonly chain: "Ethereum";
    readonly symbol: "ETH";
    readonly decimals: 18;
  };
  readonly Flip: {
    readonly chain: "Ethereum";
    readonly symbol: "FLIP";
    readonly decimals: 18;
  };
  readonly Usdc: {
    readonly chain: "Ethereum";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly Usdt: {
    readonly chain: "Ethereum";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
  readonly Wbtc: {
    readonly chain: "Ethereum";
    readonly symbol: "WBTC";
    readonly decimals: 8;
  };
  readonly Btc: {
    readonly chain: "Bitcoin";
    readonly symbol: "BTC";
    readonly decimals: 8;
  };
  readonly ArbUsdc: {
    readonly chain: "Arbitrum";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly ArbUsdt: {
    readonly chain: "Arbitrum";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
  readonly ArbEth: {
    readonly chain: "Arbitrum";
    readonly symbol: "ETH";
    readonly decimals: 18;
  };
  readonly Sol: {
    readonly chain: "Solana";
    readonly symbol: "SOL";
    readonly decimals: 9;
  };
  readonly SolUsdc: {
    readonly chain: "Solana";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly SolUsdt: {
    readonly chain: "Solana";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
  readonly HubDot: {
    readonly chain: "Assethub";
    readonly symbol: "DOT";
    readonly decimals: 10;
  };
  readonly HubUsdc: {
    readonly chain: "Assethub";
    readonly symbol: "USDC";
    readonly decimals: 6;
  };
  readonly HubUsdt: {
    readonly chain: "Assethub";
    readonly symbol: "USDT";
    readonly decimals: 6;
  };
};
declare const assetSymbols: readonly ["BTC", "DOT", "ETH", "FLIP", "SOL", "USDC", "USDT", "WBTC"];
type AssetSymbol = (typeof assetSymbols)[number];
declare const chainConstants: {
  readonly Ethereum: {
    readonly chainflipAssets: ["Eth", "Flip", "Usdc", "Usdt", "Wbtc"];
    readonly assets: ["ETH", "FLIP", "USDC", "USDT", "WBTC"];
    readonly gasAsset: "Eth";
    readonly addressType: "Eth";
    readonly blockTimeSeconds: 12;
  };
  readonly Bitcoin: {
    readonly chainflipAssets: ["Btc"];
    readonly assets: ["BTC"];
    readonly gasAsset: "Btc";
    readonly addressType: "Btc";
    readonly blockTimeSeconds: number;
  };
  readonly Arbitrum: {
    readonly chainflipAssets: ["ArbUsdc", "ArbUsdt", "ArbEth"];
    readonly assets: ["USDC", "USDT", "ETH"];
    readonly gasAsset: "ArbEth";
    readonly addressType: "Arb";
    readonly blockTimeSeconds: 0.26;
  };
  readonly Solana: {
    readonly chainflipAssets: ["Sol", "SolUsdc", "SolUsdt"];
    readonly assets: ["SOL", "USDC", "USDT"];
    readonly gasAsset: "Sol";
    readonly addressType: "Sol";
    readonly blockTimeSeconds: 0.8;
  };
  readonly Assethub: {
    readonly chainflipAssets: ["HubDot", "HubUsdt", "HubUsdc"];
    readonly assets: ["DOT", "USDT", "USDC"];
    readonly gasAsset: "HubDot";
    readonly addressType: "Hub";
    readonly blockTimeSeconds: 3;
  };
};
declare const anyChainConstants: {
  readonly Polkadot: {
    readonly chainflipAssets: ["Dot"];
    readonly assets: ["DOT"];
    readonly gasAsset: "Dot";
    readonly addressType: "Dot";
    readonly blockTimeSeconds: 6;
  };
  readonly Ethereum: {
    readonly chainflipAssets: ["Eth", "Flip", "Usdc", "Usdt", "Wbtc"];
    readonly assets: ["ETH", "FLIP", "USDC", "USDT", "WBTC"];
    readonly gasAsset: "Eth";
    readonly addressType: "Eth";
    readonly blockTimeSeconds: 12;
  };
  readonly Bitcoin: {
    readonly chainflipAssets: ["Btc"];
    readonly assets: ["BTC"];
    readonly gasAsset: "Btc";
    readonly addressType: "Btc";
    readonly blockTimeSeconds: number;
  };
  readonly Arbitrum: {
    readonly chainflipAssets: ["ArbUsdc", "ArbUsdt", "ArbEth"];
    readonly assets: ["USDC", "USDT", "ETH"];
    readonly gasAsset: "ArbEth";
    readonly addressType: "Arb";
    readonly blockTimeSeconds: 0.26;
  };
  readonly Solana: {
    readonly chainflipAssets: ["Sol", "SolUsdc", "SolUsdt"];
    readonly assets: ["SOL", "USDC", "USDT"];
    readonly gasAsset: "Sol";
    readonly addressType: "Sol";
    readonly blockTimeSeconds: 0.8;
  };
  readonly Assethub: {
    readonly chainflipAssets: ["HubDot", "HubUsdt", "HubUsdc"];
    readonly assets: ["DOT", "USDT", "USDC"];
    readonly gasAsset: "HubDot";
    readonly addressType: "Hub";
    readonly blockTimeSeconds: 3;
  };
};
declare const internalAssetToRpcAsset: InternalAssetMap<AssetAndChain>;
declare const anyInternalAssetToRpcAsset: AnyInternalAssetMap<AnyAssetAndChain>;
declare const chainContractId: ChainMap<number>;
declare const assetContractId: InternalAssetMap<number>;
declare function getInternalAsset(asset: BaseAssetAndChain): BaseChainflipAsset;
declare function getInternalAsset(asset: AssetAndChain): ChainflipAsset;
declare function getInternalAsset(asset: UncheckedAssetAndChain): ChainflipAsset;
declare function getInternalAsset(asset: UncheckedAssetAndChain, assert: true): ChainflipAsset;
declare function getInternalAsset(asset: UncheckedAssetAndChain, assert: boolean): ChainflipAsset | null;
declare function getAnyInternalAsset(asset: AnyUncheckedAssetAndChain): AnyChainflipAsset;
declare function getAnyInternalAsset(asset: AnyUncheckedAssetAndChain, assert: true): AnyChainflipAsset;
declare function getAnyInternalAsset(asset: AnyUncheckedAssetAndChain, assert: boolean): AnyChainflipAsset | null;
declare function isValidAssetAndChain(assetAndChain: UncheckedAssetAndChain): assetAndChain is AssetAndChain;
declare function getInternalAssets(data: {
  srcAsset: AssetSymbol;
  srcChain: ChainflipChain;
  destAsset: AssetSymbol;
  destChain: ChainflipChain;
}): {
  srcAsset: ChainflipAsset;
  destAsset: ChainflipAsset;
};
declare function getInternalAssets(data: {
  srcAsset: AssetSymbol;
  srcChain: ChainflipChain;
  destAsset: AssetSymbol;
  destChain: ChainflipChain;
}, assert: true): {
  srcAsset: ChainflipAsset;
  destAsset: ChainflipAsset;
};
declare function getInternalAssets(data: {
  srcAsset: AssetSymbol;
  srcChain: ChainflipChain;
  destAsset: AssetSymbol;
  destChain: ChainflipChain;
}, assert: boolean): {
  srcAsset: ChainflipAsset | null;
  destAsset: ChainflipAsset | null;
};
declare const chainflipAssetToPriceAssetMap: Record<ChainflipAsset, Exclude<PriceAsset, 'Usd'> | null>;
declare function isChainflipAsset(asset: string): asset is ChainflipAsset;
declare function isLegacyChainflipAsset(asset: string): asset is LegacyChainflipAsset;
declare function isAnyChainflipAsset(asset: string): asset is AnyChainflipAsset;
declare function isChainflipChain(chain: string): chain is ChainflipChain;
declare function isLegacyChainflipChain(chain: string): chain is LegacyChainflipChain;
declare function isAnyChainflipChain(chain: string): chain is AnyChainflipChain;
//#endregion
export { AddressType, AnyAddressType, AnyAssetAndChain, AnyAssetOfChain, AnyBaseAssetAndChain, AnyBaseChainAssetMap, AnyBaseChainflipAsset, AnyChainAssetMap, AnyChainMap, AnyChainflipAsset, AnyChainflipChain, AnyInternalAssetMap, AnyUncheckedAssetAndChain, AssetAndChain, AssetOfChain, AssetSymbol, BaseAssetAndChain, BaseChainAssetMap, BaseChainflipAsset, ChainAssetMap, ChainMap, ChainflipAsset, ChainflipChain, ChainflipEvmChain, ChainflipNetwork, InternalAssetMap, LegacyAddressType, LegacyChainflipAsset, LegacyChainflipChain, PriceAsset, UncheckedAssetAndChain, addressTypes, anyAssetConstants, anyChainConstants, anyInternalAssetToRpcAsset, assetConstants, assetContractId, assetSymbols, baseChainflipAssets, chainConstants, chainContractId, chainflipAssetToPriceAssetMap, chainflipAssets, chainflipChains, chainflipEvmChains, chainflipNetworks, getAnyInternalAsset, getInternalAsset, getInternalAssets, internalAssetToRpcAsset, isAnyChainflipAsset, isAnyChainflipChain, isChainflipAsset, isChainflipChain, isLegacyChainflipAsset, isLegacyChainflipChain, isValidAssetAndChain, legacyAddressTypes, legacyChainflipAssets, legacyChainflipChains, priceAssets, readAssetValue };