import { type LintingResult, LintingRuleCertainty } from '../linter-format';
import type { MergeableRecord } from '../../util/objects';
import { SourceLocation } from '../../util/range';
import { LintingRuleTag } from '../linter-tags';
import type { NormalizedAst, ParentInformation } from '../../r-bridge/lang-4.x/ast/model/processing/decorate';
export interface UnusedDefinitionResult extends LintingResult {
    variableName?: string;
    loc: SourceLocation;
}
export interface UnusedDefinitionConfig extends MergeableRecord {
    /**
     * Whether to include (potentially anonymous) function definitions in the search (e.g., should we report uncalled anonymous functions?).
     */
    includeFunctionDefinitions: boolean;
}
export interface UnusedDefinitionMetadata extends MergeableRecord {
    totalConsidered: number;
}
export declare const UNUSED_DEFINITION: {
    readonly createSearch: (config: UnusedDefinitionConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"all", ["filter"], ParentInformation, Promise<import("../../search/flowr-search").FlowrSearchElements<ParentInformation, [] | import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>>>;
    readonly processSearchResult: (elements: import("../../search/flowr-search").FlowrSearchElements<ParentInformation, import("../../search/flowr-search").FlowrSearchElement<ParentInformation>[]>, config: UnusedDefinitionConfig, data: {
        normalize: NormalizedAst;
        dataflow: import("../../dataflow/info").DataflowInformation;
        cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
        analyzer: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
    }) => {
        results: UnusedDefinitionResult[];
        ".meta": UnusedDefinitionMetadata;
    };
    readonly prettyPrint: {
        readonly query: (result: UnusedDefinitionResult) => string;
        readonly full: (result: UnusedDefinitionResult) => string;
    };
    readonly info: {
        readonly name: "Unused Definitions";
        readonly description: "Checks for unused definitions.";
        readonly tags: readonly [LintingRuleTag.Readability, LintingRuleTag.Smell, LintingRuleTag.QuickFix];
        readonly certainty: LintingRuleCertainty.BestEffort;
        readonly defaultConfig: {
            readonly includeFunctionDefinitions: true;
        };
    };
};
