import type Chunk from './chunk.ts'; import type { BaseOpts } from './util.ts'; import type { Offset, VirtualOffset } from './virtualOffset.ts'; import type { GenericFilehandle } from 'generic-filehandle2'; export interface Region { refId: number; start: number; end: number; } export interface RefIndex { binIndex: Record; stats?: { lineCount: number; }; } export interface ParsedIndexBase { firstDataLine: VirtualOffset | undefined; refCount: number; maxBlockSize: number; indices: (refId: number) => R | undefined; } export declare function memoizeByRefId(getIndices: (refId: number) => T | undefined, maxSize?: number): (refId: number) => T | undefined; export default abstract class IndexFile { filehandle: GenericFilehandle; renameRefSeq: (s: string) => string; private setupP?; constructor({ filehandle, renameRefSeq, }: { filehandle: GenericFilehandle; renameRefSeq?: (a: string) => string; }); protected abstract _parse(opts: BaseOpts): Promise; abstract indexCov(refId: number, start?: number, end?: number): Promise<{ start: number; end: number; score: number; }[]>; protected abstract reg2bins(min: number, max: number): readonly (readonly [number, number])[]; protected abstract getLowestChunk(refIndex: RefIndex, min: number): Offset | undefined; blocksForRange(refId: number, min: number, max: number, opts?: BaseOpts): Promise; parse(opts?: BaseOpts): Promise; lineCount(refId: number, opts?: BaseOpts): Promise; hasRefSeq(seqId: number, opts?: BaseOpts): Promise; estimatedBytesForRegions(regions: Region[], opts?: BaseOpts): Promise; }