type BabelComment = {
    type: string;
    value: string;
    start?: number;
    end?: number;
    loc?: {
        start: {
            line: number;
            column: number;
        };
        end: {
            line: number;
            column: number;
        };
    };
};
export type FuncAnnotationHeadContext = {
    headKind: "functionDeclaration";
} | {
    headKind: "variable";
    variableDeclaration: any;
} | {
    headKind: "objectProperty";
    objectProperty: any;
} | {
    headKind: "objectMethod";
} | {
    headKind: "classMethod";
} | {
    headKind: "classProperty";
    classProperty: any;
} | {
    headKind: "leadingOnFn";
};
export declare function normalizeAnnotationText(raw: string): string;
export declare function getAstTopLevelComments(ast: any): BabelComment[];
export type ScriptCommentIndex = {
    readonly bucketSize: number;
    readonly sorted: readonly BabelComment[];
    readonly buckets: ReadonlyMap<number, readonly BabelComment[]>;
};
export declare function buildScriptCommentIndex(fileComments: readonly BabelComment[]): ScriptCommentIndex;
export declare function offsetToLineColumn(source: string, offset: number): {
    line: number;
    column: number;
};
export declare function splitHeadAndOtherLeading(leading: readonly BabelComment[], scriptSource: string): {
    head: BabelComment[];
    other: BabelComment[];
};
export declare function collectFuncAnnotationsTagged(fnNode: any, headCtx: FuncAnnotationHeadContext, scriptSource: string, scriptLineBase: number, fileComments: readonly BabelComment[], commentIndex?: ScriptCommentIndex): string[];
export {};
