import { LatestBlock } from "../common/types/index.js";
import { CacheConfig } from "../utils/index.js";
/**
 * block cache interface
 */
export type BlockCache = {
    /**
     * put block
     * @param chainId chain id
     * @param address address
     * @param block block
     */
    putBlock(chainId: number, address: string, block: LatestBlock): Promise<void>;
    /**
     * get block
     * @param chainId chain id
     * @param address address
     * @param fallback fallback
     * @returns block
     */
    getBlock(chainId: number, address: string, fallback: (chainId: number, address: string) => Promise<LatestBlock>): Promise<LatestBlock>;
};
/**
 * block cache implementation
 */
declare class BlockCacheImpl implements BlockCache {
    private cache;
    private readonly daemonHashExpirationMs;
    private daemonHashExpireAtMap;
    /**
     * constructor
     * @param config cache config
     * @param httpClient http client
     * @param daemonHashExpirationSeconds daemon hash expiration seconds, default is 10 seconds
     */
    constructor(config: CacheConfig, daemonHashExpirationSeconds?: number);
    putBlock(chainId: number, address: string, block: LatestBlock): Promise<void>;
    getBlock(chainId: number, address: string, fallback: (chainId: number, address: string) => Promise<LatestBlock>): Promise<LatestBlock>;
}
export { BlockCacheImpl };
//# sourceMappingURL=block_cache.d.ts.map