import type { LintingResult } from '../linter-format';
import { LintingRuleCertainty } from '../linter-format';
import type { MergeableRecord } from '../../util/objects';
import type { SourceRange } from '../../util/range';
import type { FunctionInfo } from '../../queries/catalog/dependencies-query/function-info/function-info';
import { LintingRuleTag } from '../linter-tags';
export interface FilePathValidityResult extends LintingResult {
    filePath: string;
    range: SourceRange;
}
export interface FilePathValidityConfig extends MergeableRecord {
    /**
     * The set of functions that should additionally be considered as reading a file path.
     * Entries in this array use the {@link FunctionInfo} format from the dependencies query.
     */
    additionalReadFunctions: FunctionInfo[];
    /**
     * The set of functions that should additionally be considered as writing to a file path.
     * Entries in this array use the {@link FunctionInfo} format from the dependencies query.
     */
    additionalWriteFunctions: FunctionInfo[];
    /**
     * Whether unknown file paths should be included as linting results.
     */
    includeUnknown: boolean;
}
export interface FilePathValidityMetadata extends MergeableRecord {
    totalReads: number;
    totalUnknown: number;
    totalWritesBeforeAlways: number;
    totalValid: number;
}
export declare const FILE_PATH_VALIDITY: {
    readonly createSearch: (config: FilePathValidityConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"from-query", ["with"], 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: FilePathValidityConfig, data: {
        normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
        dataflow: import("../../dataflow/info").DataflowInformation;
        config: import("../../config").FlowrConfigOptions;
    }) => {
        results: FilePathValidityResult[];
        ".meta": FilePathValidityMetadata;
    };
    readonly info: {
        readonly name: "File Path Validity";
        readonly description: "Checks whether file paths used in read and write operations are valid and point to existing files.";
        readonly certainty: LintingRuleCertainty.BestEffort;
        readonly tags: readonly [LintingRuleTag.Robustness, LintingRuleTag.Reproducibility, LintingRuleTag.Bug];
        readonly defaultConfig: {
            readonly additionalReadFunctions: readonly [];
            readonly additionalWriteFunctions: readonly [];
            readonly includeUnknown: false;
        };
    };
    readonly prettyPrint: {
        readonly query: (result: FilePathValidityResult) => string;
        readonly full: (result: FilePathValidityResult) => string;
    };
};
