import { BamFile } from '@gmod/bam';
import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter';
import type { FilterBy } from '../shared/types';
import type { BaseOptions } from '@jbrowse/core/data_adapters/BaseAdapter';
import type { Feature } from '@jbrowse/core/util';
import type { Region } from '@jbrowse/core/util/types';
interface Header {
    idToName: string[];
    nameToId: Record<string, number>;
}
export default class BamAdapter extends BaseFeatureDataAdapter {
    private samHeader?;
    private setupP?;
    private ultraLongFeatureCache;
    private configureP?;
    protected configurePre(): Promise<{
        bam: BamFile;
        sequenceAdapter: BaseFeatureDataAdapter;
    } | {
        bam: BamFile;
        sequenceAdapter?: undefined;
    }>;
    protected configure(): Promise<{
        bam: BamFile;
        sequenceAdapter?: BaseFeatureDataAdapter;
    }>;
    getHeader(_opts?: BaseOptions): Promise<string | undefined>;
    private setupPre;
    setupPre2(opts?: BaseOptions): Promise<Header>;
    setup(opts?: BaseOptions): Promise<Header>;
    getRefNames(opts?: BaseOptions): Promise<string[]>;
    private seqFetch;
    getFeatures(region: Region & {
        originalRefName?: string;
    }, opts?: BaseOptions & {
        filterBy: FilterBy;
    }): import("rxjs").Observable<Feature>;
    getMultiRegionFeatureDensityStats(regions: Region[], opts?: BaseOptions): Promise<import("@jbrowse/core/data_adapters/BaseAdapter").FeatureDensityStats | {
        bytes: number;
        fetchSizeLimit: any;
    }>;
    freeResources(): void;
    refIdToName(refId: number): string | undefined;
}
export {};
