import * as API from "./api/Types.js";
import { APIClient } from "./api/Client.js";
import { ABI, ABIDef } from "./chain/Abi.js";
import { NameType } from "./chain/Name.js";
import { AbiProvider } from "./signing/SigningRequest.js";
export interface ABICacheInterface extends AbiProvider {
    readonly cache: Map<string, ABI>;
    readonly pending: Map<string, Promise<API.v1.GetRawAbiResponse>>;
    getAbi(account: NameType): Promise<ABI>;
    setAbi(account: NameType, abi: ABIDef, merge?: boolean): void;
}
/**
 * Given an APIClient instance, this class provides an AbiProvider interface for retrieving and caching ABIs.
 */
export declare class ABICache implements ABICacheInterface {
    readonly client: APIClient;
    readonly cache: Map<string, ABI>;
    readonly pending: Map<string, Promise<API.v1.GetRawAbiResponse>>;
    constructor(client: APIClient);
    getAbi(account: NameType): Promise<ABI>;
    setAbi(account: NameType, abiDef: ABIDef, merge?: boolean): void;
}
//# sourceMappingURL=AbiCache.d.ts.map