import type { LintingResult } from '../linter-format';
import { LintingRuleCertainty } from '../linter-format';
import type { MergeableRecord } from '../../util/objects';
import type { SourceRange } from '../../util/range';
import { LintingRuleTag } from '../linter-tags';
import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
import type { FlowrConfigOptions } from '../../config';
export interface AbsoluteFilePathResult extends LintingResult {
    filePath: string;
    range: SourceRange;
}
type SupportedWd = '@script' | '@home' | string;
export interface AbsoluteFilePathConfig extends MergeableRecord {
    /** Include paths that are built by functions, e.g., `file.path()` */
    include: {
        /** Whether to include paths that are constructed by functions */
        constructed: boolean;
        /** Include every string, even if it is not used as a file path, to count, strings must have a length of at least 3 chars */
        allStrings: boolean;
    };
    /** Extend the built-in absolute path recognition with additional regexes */
    absolutePathRegex: string | undefined;
    /**
     * The set of functions that should additionally be considered as using a file path.
     * Entries in this array use the {@link FunctionInfo} format from the dependencies query.
     */
    additionalPathFunctions: FunctionInfo[];
    /**
     * Which path should be considered to be the origin for relative paths.
     * This is only relevant with quickfixes. In the future we may be sensitive to setwd etc.
     */
    useAsWd: SupportedWd;
}
export interface AbsoluteFilePathMetadata extends MergeableRecord {
    totalConsidered: number;
    totalUnknown: number;
}
export declare const ABSOLUTE_PATH: {
    readonly createSearch: (config: AbsoluteFilePathConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"from-query", ["unique"], import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>>;
    readonly processSearchResult: (elements: import("../../search/flowr-search").FlowrSearchElements<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../search/flowr-search").FlowrSearchElement<import("../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>[]>, config: AbsoluteFilePathConfig, data: {
        normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
        dataflow: import("../../dataflow/info").DataflowInformation;
        config: FlowrConfigOptions;
    }) => {
        results: AbsoluteFilePathResult[];
        ".meta": AbsoluteFilePathMetadata;
    };
    readonly prettyPrint: {
        readonly query: (result: AbsoluteFilePathResult) => string;
        readonly full: (result: AbsoluteFilePathResult) => string;
    };
    readonly info: {
        readonly name: "Absolute Paths";
        readonly description: "Checks whether file paths are absolute.";
        readonly tags: readonly [LintingRuleTag.Robustness, LintingRuleTag.Reproducibility, LintingRuleTag.Smell, LintingRuleTag.QuickFix];
        readonly certainty: LintingRuleCertainty.BestEffort;
        readonly defaultConfig: {
            readonly include: {
                readonly constructed: true;
                readonly allStrings: false;
            };
            readonly additionalPathFunctions: readonly [];
            readonly absolutePathRegex: undefined;
            readonly useAsWd: "@script";
        };
    };
};
export {};
