export type Label = number | string;
export type Value = number | string | Uint8Array | boolean | Value[] | RawMap;
export type RawMap = Map<Label, Value>;
export type AssertFn<T> = (value: unknown, name: string) => T;
export declare function assertText(value: unknown, name: string): string;
export declare function assertInt(value: unknown, name: string): number;
export declare function assertIntOrText(value: unknown, name: string): number | string;
export declare function assertBytes(value: unknown, name: string): Uint8Array;
export declare function assertBool(value: unknown, name: string): boolean;
export declare function assertMap(value: unknown, name: string): RawMap;
export declare class KVMap {
    private _raw;
    static fromBytes(data: Uint8Array): KVMap;
    constructor(kv?: RawMap);
    has(key: Label): boolean;
    delete(key: Label): boolean;
    getInt(key: Label, name?: string): number;
    getText(key: Label, name?: string): string;
    getBytes(key: Label, name?: string): Uint8Array;
    getBool(key: Label, name?: string): boolean;
    getType<T>(key: Label, assertFn: AssertFn<T>, name?: string): T;
    getArray<T>(key: Label, assertFn: AssertFn<T>, name?: string): T[];
    getParam<T>(key: Label): T | undefined;
    setParam(key: Label, value: Value): this;
    getCBORParam<T>(key: Label): T | undefined;
    setCBORParam<T>(key: Label, value: T): this;
    clone(): RawMap;
    toRaw(): RawMap;
    toBytes(): Uint8Array;
}
