import { type BasicUintConstructable, Uint } from "./uint.js";
import { AbstractIterator } from "./utils.js";
declare class BMapEntriesIterator<K extends Uint, V> extends AbstractIterator<[K, V], [string, any]> {
    protected CLS: BasicUintConstructable<K>;
    constructor(CLS: BasicUintConstructable<K>, mapEntries: IterableIterator<[string, V]>);
    protected _next(value: [string, V]): [K, V];
}
declare class BMapKeysIterator<K extends Uint> extends AbstractIterator<K, string> {
    protected CLS: BasicUintConstructable<K>;
    constructor(CLS: BasicUintConstructable<K>, mapEntries: IterableIterator<string>);
    protected _next(value: string): K;
}
declare class BMapValuesIterator<V> extends AbstractIterator<V, V> {
    constructor(mapEntries: IterableIterator<V>);
    protected _next(value: V): V;
}
export { type BMapEntriesIterator, type BMapKeysIterator, type BMapValuesIterator, };
export declare class BasicBinaryMap<K extends Uint, V> {
    protected readonly CLS: BasicUintConstructable<K>;
    protected readonly store: {
        [key: string]: V;
    };
    constructor(CLS: BasicUintConstructable<K>, entries?: readonly (readonly [K, V])[]);
    get size(): number;
    get(key: K): V | undefined;
    set(key: K, value: V): V;
    /**
     * Deletes the key from the map.
     * @param key The key-value pair to delete
     * @returns true if the key was present and deleted, false otherwise
     */
    delete(key: K): boolean;
    has(key: K): boolean;
    [Symbol.iterator](): BMapEntriesIterator<K, V>;
    entries(): BMapEntriesIterator<K, V>;
    keys(): BMapKeysIterator<K>;
    values(): BMapValuesIterator<V>;
    forEach(callbackfn: (value: V, key: K) => void, thisArg?: any): void;
    clear(): void;
    protected getStringTag(): string;
    get [Symbol.toStringTag](): string;
}
export declare class UintMap<V> extends BasicBinaryMap<Uint, V> {
    constructor(entries?: readonly (readonly [Uint, V])[]);
}
//# sourceMappingURL=map.d.ts.map