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 { InputClassifierConfig, InputSources } from '../../queries/catalog/input-sources-query/simple-input-classifier';
export interface PipeCommandFunctionSpec {
    pattern: string;
    argIdx: number;
    argName: string;
}
export interface ProblematicInputsResult extends LintingResult {
    name: string;
    loc: SourceLocation;
    sources: InputSources;
    pipeCommand?: string;
}
export interface ProblematicInputsConfig extends MergeableRecord {
    consider?: string | string[];
    inputFns?: InputClassifierConfig;
    pipeCommandFunctions?: PipeCommandFunctionSpec | PipeCommandFunctionSpec[];
}
export type ProblematicInputsMetadata = MergeableRecord;
export declare const PROBLEMATIC_INPUTS: {
    readonly createSearch: (config: ProblematicInputsConfig) => import("../../search/flowr-search-builder").FlowrSearchBuilder<"from-query", [], 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: ProblematicInputsConfig, data: {
        normalize: import("../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
        dataflow: import("../../dataflow/info").DataflowInformation;
        cfg: import("../../control-flow/control-flow-graph").ControlFlowInformation;
        analyzer: import("../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider;
    }) => Promise<{
        results: ProblematicInputsResult[];
        '.meta': {};
    }>;
    readonly prettyPrint: {
        readonly query: (result: ProblematicInputsResult) => string;
        readonly full: (result: ProblematicInputsResult) => string;
    };
    readonly info: {
        readonly name: "Problematic inputs";
        readonly description: "Detects uses of dynamic calls (e.g. eval, system) with non-constant inputs, and graphics-device calls (pdf, postscript) where a filename starts with '|' indicating a pipe command injection.";
        readonly tags: readonly [LintingRuleTag.Security, LintingRuleTag.Smell, LintingRuleTag.Readability, LintingRuleTag.Performance];
        readonly certainty: LintingRuleCertainty.BestEffort;
        readonly defaultConfig: {
            readonly consider: readonly ["^eval$", "^system$", "^system2$", "^shell$"];
            readonly pipeCommandFunctions: readonly PipeCommandFunctionSpec[];
        };
    };
};
