import { Chain } from '../../../../sdk/types'; import { BlockHeader } from '../Api/BlockHeaderApi'; import { BulkIngestorBaseOptions } from '../Api/BulkIngestorApi'; import { BulkIngestorBase } from './BulkIngestorBase'; import { BulkHeaderFileInfo, BulkHeaderFilesInfo } from '../util/BulkHeaderFile'; import { HeightRange, HeightRanges } from '../util/HeightRange'; import { ChaintracksFetchApi } from '../Api/ChaintracksFetchApi'; export interface BulkIngestorCDNOptions extends BulkIngestorBaseOptions { /** * Required. * * The name of the JSON resource to request from CDN which describes currently * available bulk block header resources. */ jsonResource: string | undefined; /** * Required. * * URL to CDN implementing the bulk ingestor CDN service protocol */ cdnUrl: string | undefined; maxPerFile: number | undefined; fetch: ChaintracksFetchApi; } export declare class BulkIngestorCDN extends BulkIngestorBase { /** * * @param chain * @param localCachePath defaults to './data/bulk_cdn_headers/' * @returns */ static createBulkIngestorCDNOptions(chain: Chain, cdnUrl: string, fetch: ChaintracksFetchApi, maxPerFile?: number): BulkIngestorCDNOptions; fetch: ChaintracksFetchApi; jsonResource: string; cdnUrl: string; maxPerFile: number | undefined; availableBulkFiles: BulkHeaderFilesInfo | undefined; selectedFiles: BulkHeaderFileInfo[] | undefined; currentRange: HeightRange | undefined; constructor(options: BulkIngestorCDNOptions); getPresentHeight(): Promise; getJsonHttpHeaders(): Record; /** * A BulkFile CDN serves a JSON BulkHeaderFilesInfo resource which lists all the available binary bulk header files available and associated metadata. * * The term "CDN file" is used for a local bulk file that has a sourceUrl. (Not undefined) * The term "incremental file" is used for the local bulk file that holds all the non-CDN bulk headers and must chain to the live headers if there are any. * * Bulk ingesting from a CDN happens in one of three contexts: * * 1. Cold Start: No local bulk or live headers. * 2. Incremental: Available CDN files extend into an existing incremental file but not into the live headers. * 3. Replace: Available CDN files extend into live headers. * * Context Cold Start: * - The CDN files are selected in height order, starting at zero, always choosing the largest count less than the local maximum (maxPerFile). * * Context Incremental: * - Last existing CDN file is updated if CDN now has a higher count. * - Additional CDN files are added as in Cold Start. * - The existing incremental file is truncated or deleted. * * Context Replace: * - Existing live headers are truncated or deleted. * - Proceed as context Incremental. * * @param before bulk and live range of headers before ingesting any new headers. * @param fetchRange total range of header heights needed including live headers * @param bulkRange range of missing bulk header heights required. * @param priorLiveHeaders * @returns */ fetchHeaders(before: HeightRanges, fetchRange: HeightRange, bulkRange: HeightRange, priorLiveHeaders: BlockHeader[]): Promise; } //# sourceMappingURL=BulkIngestorCDN.d.ts.map