import { BaseCoin } from './base';
export declare class CoinMap {
    private readonly _map;
    private readonly _coinByIds;
    private readonly _coinByAliases;
    private readonly _coinByContractAddress;
    private readonly _coinByNftCollectionID;
    private constructor();
    static fromCoins(coins: Readonly<BaseCoin>[]): CoinMap;
    addCoin(coin: Readonly<BaseCoin>): void;
    /**
     * Replace a Base coin object completely from the CoinMap using its ID.
     * @param {string} key key to search the old coin object
     * @param {Readonly<BaseCoin>} coin new coin object
     */
    replace(coin: Readonly<BaseCoin>): void;
    static coinNameFromChainId(chainId: number): string;
    /**
     * Override `get` to throw if a coin is missing, instead of returning undefined.
     * It will honor key equivalences in case given key is missing.
     * @param {string} key
     * @return {BaseCoin}
     */
    get(key: string): Readonly<BaseCoin>;
    has(key: string): boolean;
    map<T>(mapper: (coin: Readonly<BaseCoin>, coinName: string) => T): T[];
    reduce<T>(reducer: (acc: T, coin: Readonly<BaseCoin>, coinName: string) => T, initialValue: T): T;
    filter(predicate: (coin: Readonly<BaseCoin>, coinName: string) => boolean): CoinMap;
    forEach(callback: (coin: Readonly<BaseCoin>, coinName: string) => void): void;
    [Symbol.iterator](): IterableIterator<[string, Readonly<BaseCoin>]>;
}
//# sourceMappingURL=map.d.ts.map