import { Currency } from "@interlay/monetary-js";
import { ApiPromise } from "@polkadot/api";
import { StorageKey, u32 } from "@polkadot/types";
import { 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<Array<ForeignAsset>>;
    /**
     * Get foreign asset by its id.
     * @param id The id of the foreign asset.
     * @returns The foreign asset.
     */
    getForeignAsset(id: number | u32): Promise<ForeignAsset>;
}
export declare type AssetRegistryMetadataTuple = [StorageKey<[u32]>, Option<OrmlTraitsAssetRegistryAssetMetadata>];
export declare type UnwrappedAssetRegistryMetadataTuple = [StorageKey<[u32]>, OrmlTraitsAssetRegistryAssetMetadata];
export declare class DefaultAssetRegistryAPI {
    private api;
    constructor(api: ApiPromise);
    static metadataToCurrency(metadata: OrmlTraitsAssetRegistryAssetMetadata): Currency;
    static metadataTupleToForeignAsset([key, metadata]: UnwrappedAssetRegistryMetadataTuple): ForeignAsset;
    getAssetRegistryEntries(): Promise<AssetRegistryMetadataTuple[]>;
    /**
     * 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<Array<ForeignAsset>>;
    getForeignAsset(id: number | u32): Promise<ForeignAsset>;
}
