import { Currency } from "@interlay/monetary-js"; import { ApiPromise } from "@polkadot/api"; import { StorageKey, u32, u128 } from "@polkadot/types"; import { InterbtcPrimitivesVaultCurrencyPair, OrmlTraitsAssetRegistryAssetMetadata } from "@polkadot/types/lookup"; import { Option } from "@polkadot/types-codec"; import { ForeignAsset } from "../types"; /** * @category BTC Bridge */ export interface AssetRegistryAPI { /** * Get all currencies (foreign assets) in the asset registry. * @returns A list of currencies. */ getForeignAssets(): Promise>; /** * Get foreign asset by its id. * @param id The id of the foreign asset. * @returns The foreign asset. */ getForeignAsset(id: number | u32): Promise; /** * Get all foreign assets which have a registered collateral ceiling, meaning they can be used as collateral currency. * * @returns All foreign assets that have been registered as collateral currency */ getCollateralForeignAssets(): Promise>; } export type AssetKey = StorageKey<[u32]>; export type AssetRegistryMetadataTuple = [StorageKey<[u32]>, Option]; export type UnwrappedAssetRegistryMetadataTuple = [StorageKey<[u32]>, OrmlTraitsAssetRegistryAssetMetadata]; export type SystemCollateralCeilingTuple = [StorageKey<[InterbtcPrimitivesVaultCurrencyPair]>, Option]; export declare class DefaultAssetRegistryAPI implements AssetRegistryAPI { private api; constructor(api: ApiPromise); static metadataToCurrency(metadata: OrmlTraitsAssetRegistryAssetMetadata): Currency; static metadataTupleToForeignAsset([key, metadata]: UnwrappedAssetRegistryMetadataTuple): ForeignAsset; getAssetRegistryEntries(): Promise; /** * Static method to filter out metadata that can be unwrapped.ie. `Option.isSome !== true`. * @param entries The entries from the asset registry. * @returns A list of all entries containing metadata. */ static unwrapMetadataFromEntries(entries: AssetRegistryMetadataTuple[]): UnwrappedAssetRegistryMetadataTuple[]; getForeignAssets(): Promise>; getForeignAsset(id: number | u32): Promise; getSystemCollateralCeilingEntries(): Promise; extractCollateralCeilingEntryKeys(entries: Array): Array; getCollateralForeignAssets(): Promise>; }