import type { Feature } from '../../feature';
import type { Writable } from 'ts-essentials';
import type { MergeableRecord } from '../../../../util/objects';
import type { SourcePosition } from '../../../../util/range';
declare const initialFunctionDefinitionInfo: {
    /** all, anonymous, assigned, non-assigned, ... */
    total: number;
    /** how many are really using OP-Lambda? */
    lambdasOnly: number;
    /** using `<<-`, `<-`, `=`, `->` `->>` */
    assignedFunctions: number;
    nestedFunctions: number;
    /** functions that in some easily detectable way call themselves */
    recursive: number;
    deepestNesting: number;
};
export type FunctionDefinitionInfo = Writable<typeof initialFunctionDefinitionInfo>;
export declare const AllDefinitionsFileBase = "all-definitions";
export interface SingleFunctionDefinitionInformation extends MergeableRecord {
    location: SourcePosition;
    /** locations of all direct call sites */
    callsites: SourcePosition[];
    numberOfParameters: number;
    returns: {
        location: SourcePosition;
    }[];
    length: {
        lines: number;
        characters: number;
        nonWhitespaceCharacters: number;
    };
}
export declare const definedFunctions: Feature<FunctionDefinitionInfo>;
export {};
