/** A zoom level entry from the BigWig file header. */ export interface ZoomLevel { reductionLevel: number; dataOffset: number; indexOffset: number; } /** A single feature returned by `getFeatures`. */ export interface Feature { /** @internal */ offset?: number; /** @internal */ chromId?: number; /** 0-based half-open start coordinate. */ start: number; /** 0-based half-open end coordinate. */ end: number; /** Signal score (BigWig) or BED score (BigBed). */ score?: number; /** Raw tab-delimited BED columns 4+ (BigBed only). */ rest?: string; /** Minimum score in a summary interval (zoom data only). */ minScore?: number; /** Maximum score in a summary interval (zoom data only). */ maxScore?: number; /** True when the feature comes from a zoom/summary level. */ summary?: boolean; /** Stable ID derived from the file offset; used to deduplicate exact copies (BigBed only). */ uniqueId?: string; /** Extra-index column that matched during a `searchExtraIndex` call (BigBed only). */ field?: number; } /** Summary statistics stored in the BigWig file header. */ export interface Statistics { scoreSum: number; basesCovered: number; scoreSumSquares: number; scoreMin: number; scoreMax: number; } /** Chromosome metadata from the BigWig/BigBed header. */ export interface RefInfo { name: string; id: number; length: number; } /** Raw parsed BigWig/BigBed file header (without chromosome maps). */ export interface BigWigHeader { magic: number; version: number; /** autoSql schema string (BigBed only; empty string for BigWig). */ autoSql: string; totalSummary: Statistics; asOffset: number; zoomLevels: ZoomLevel[]; fieldCount: number; numZoomLevels: number; unzoomedIndexOffset: number; totalSummaryOffset: number; unzoomedDataOffset: number; definedFieldCount: number; uncompressBufSize: number; chromosomeTreeOffset: number; extHeaderOffset: number; fileType: string; } /** BigWig/BigBed file header including chromosome name and ID maps. Returned by `getHeader()`. */ export interface BigWigHeaderWithRefNames extends BigWigHeader { /** Map from chromosome name → internal integer ID. */ refsByName: Record; /** Map from internal integer ID → `RefInfo`. */ refsByNumber: Record; } /** Options accepted by all data-fetching methods. */ export interface RequestOptions { signal?: AbortSignal; headers?: Record; } /** * Download-progress callback. Called as data blocks are fetched, with cumulative * downloaded bytes and the total bytes to fetch — both known up front since * block byte sizes come from the R-tree index. Reported at block-group * granularity (adjacent blocks coalesce into one read). Mirrors the equivalent * callbacks in @gmod/bam, @gmod/cram, and @gmod/tabix. */ export type ProgressCallback = (bytesDownloaded: number, totalBytes: number) => void; /** Options for `getFeatures` / `getFeaturesMulti` / `getFeaturesAsArrays`. */ export interface RequestOptions2 extends RequestOptions { /** * Pixels per base pair — selects the zoom level whose * `reductionLevel <= 2 / scale`. Omit for base-resolution data. */ scale?: number; /** Bases per pixel — inverse of `scale`. Use one or the other. */ basesPerSpan?: number; /** Opt-in download-progress reporting; see {@link ProgressCallback}. */ onProgress?: ProgressCallback; } /** Typed-array result for base-resolution BigWig features (`isSummary: false`). */ export interface BigWigFeatureArrays { starts: Int32Array; ends: Int32Array; scores: Float32Array; isSummary: false; } /** Typed-array result for zoom/summary BigWig features (`isSummary: true`). */ export interface SummaryFeatureArrays { starts: Int32Array; ends: Int32Array; scores: Float32Array; minScores: Float32Array; maxScores: Float32Array; isSummary: true; } /** * Multi-region typed-array result. Rather than one object per region, all * regions share one backing set of typed arrays; `regionOffsets[i].. * regionOffsets[i + 1]` is the half-open slice belonging to region `i`. Pull a * single region out with e.g. `starts.subarray(regionOffsets[i], * regionOffsets[i + 1])` — no copy. `regionOffsets` has length `regions.length * + 1`. */ export interface BigWigFeatureArraysMulti extends BigWigFeatureArrays { regionOffsets: number[]; } /** Multi-region counterpart of {@link SummaryFeatureArrays}; see {@link BigWigFeatureArraysMulti} for the `regionOffsets` layout. */ export interface SummaryFeatureArraysMulti extends SummaryFeatureArrays { regionOffsets: number[]; }