import { Chain } from '../../../../sdk';
import { BlockHeader } from '../Api/BlockHeaderApi';
import { BulkIngestorBaseOptions } from '../Api/BulkIngestorApi';
import { ChaintracksFetchApi } from '../Api/ChaintracksFetchApi';
import { BulkIngestorBase } from './BulkIngestorBase';
import { HeightRange, HeightRanges } from '../util/HeightRange';
import { StopListenerToken } from './WhatsOnChainIngestorWs';
import { WhatsOnChainServices, WhatsOnChainServicesOptions } from './WhatsOnChainServices';
export interface BulkIngestorWhatsOnChainOptions extends BulkIngestorBaseOptions, WhatsOnChainServicesOptions {
    /**
     * Maximum msces of "normal" pause with no new data arriving.
     */
    idleWait: number | undefined;
    /**
     * Which chain is being tracked: main, test, or stn.
     */
    chain: Chain;
    /**
     * WhatsOnChain.com API Key
     * https://docs.taal.com/introduction/get-an-api-key
     * If unknown or empty, maximum request rate is limited.
     * https://developers.whatsonchain.com/#rate-limits
     */
    apiKey?: string;
    /**
     * Request timeout for GETs to https://api.whatsonchain.com/v1/bsv
     */
    timeout: number;
    /**
     * User-Agent header value for requests to https://api.whatsonchain.com/v1/bsv
     */
    userAgent: string;
    /**
     * Enable WhatsOnChain client cache option.
     */
    enableCache: boolean;
    /**
     * How long chainInfo is considered still valid before updating (msecs).
     */
    chainInfoMsecs: number;
    /**
     *
     */
    fetch?: ChaintracksFetchApi;
}
export declare class BulkIngestorWhatsOnChainCdn extends BulkIngestorBase {
    /**
     *
     * @param chain
     * @param localCachePath defaults to './data/ingest_whatsonchain_headers'
     * @returns
     */
    static createBulkIngestorWhatsOnChainOptions(chain: Chain): BulkIngestorWhatsOnChainOptions;
    fetch: ChaintracksFetchApi;
    idleWait: number;
    woc: WhatsOnChainServices;
    stopOldListenersToken: StopListenerToken;
    constructor(options: BulkIngestorWhatsOnChainOptions);
    getPresentHeight(): Promise<number | undefined>;
    fetchHeaders(before: HeightRanges, fetchRange: HeightRange, bulkRange: HeightRange, priorLiveHeaders: BlockHeader[]): Promise<BlockHeader[]>;
}
//# sourceMappingURL=BulkIngestorWhatsOnChainCdn.d.ts.map