import { GFF3Feature, GFF3Comment, GFF3Directive, GFF3Sequence } from './util';
export interface ParseCallbacks {
    featureCallback?(feature: GFF3Feature): void;
    commentCallback?(comment: GFF3Comment): void;
    errorCallback?(error: string): void;
    directiveCallback?(directive: GFF3Directive): void;
    sequenceCallback?(sequence: GFF3Sequence): void;
}
export declare class FASTAParser {
    private seqCallback;
    currentSequence: {
        id: string;
        sequence: string;
        description?: string;
    } | undefined;
    constructor(seqCallback?: (sequence: GFF3Sequence) => void);
    addLine(line: string): void;
    private flush;
    finish(): void;
}
interface ParserArgs {
    endCallback?(): void;
    bufferSize?: number;
    disableDerivesFromReferences?: boolean;
}
export declare class GFF3Parser {
    endCallback: () => void;
    disableDerivesFromReferences: boolean;
    bufferSize: number;
    fastaParser: FASTAParser | undefined;
    eof: boolean;
    lineNumber: number;
    private underConstructionTopLevel;
    private underConstructionById;
    private completedReferences;
    private underConstructionOrphans;
    constructor(args: ParserArgs);
    addLine(line: string, callbacks: ParseCallbacks): void;
    finish(callbacks: ParseCallbacks): void;
    private emitItem;
    private enforceBufferSizeLimit;
    /**
     * return all under-construction features, called when we know there will be
     * no additional data to attach to them
     */
    private emitAllUnderConstructionFeatures;
    private bufferLine;
    private resolveReferencesTo;
    private parseError;
    private postSet;
    private resolveReferencesFrom;
}
export {};
