import type { BaseQueryFormat, BaseQueryResult } from '../../base-query-format';
import Joi from 'joi';
import { executeControlFlowQuery } from './control-flow-query-executor';
import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
import type { ControlFlowInformation } from '../../../control-flow/control-flow-graph';
import type { CfgSimplificationPassName } from '../../../control-flow/cfg-simplification';
/**
 * Provides the control flow graph with an optional, fixed configuration
 */
export interface ControlFlowQuery extends BaseQueryFormat {
    readonly type: 'control-flow';
    readonly config?: {
        /**
         * If set, the control flow graph will be simplified using the given passes.
         * Defaults to the default simplification order.
         */
        simplificationPasses?: readonly CfgSimplificationPassName[];
    };
}
export interface ControlFlowQueryResult extends BaseQueryResult {
    readonly controlFlow: ControlFlowInformation;
}
export declare const ControlFlowQueryDefinition: {
    readonly executor: typeof executeControlFlowQuery;
    readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, processed: import("../../../core/steps/pipeline/pipeline").PipelineOutput<import("../../../core/steps/pipeline/pipeline").Pipeline<{
        readonly name: "parse";
        readonly humanReadableName: "parse with R shell";
        readonly description: "Parse the given R code into an AST";
        readonly processor: (_results: unknown, input: Partial<import("../../../r-bridge/parser").ParseRequiredInput<string>>) => Promise<import("../../../r-bridge/parser").ParseStepOutput<string>>;
        readonly executed: import("../../../core/steps/pipeline-step").PipelineStepStage.OncePerFile;
        readonly printer: {
            readonly 0: typeof import("../../../core/print/print").internalPrinter;
            readonly 2: {
                (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
                (value: any, replacer?: (number | string)[] | null, space?: string | number): string;
            };
            readonly 5: ({ parsed }: import("../../../r-bridge/parser").ParseStepOutput<string>, config: import("../../../util/quads").QuadSerializationConfiguration) => string;
        };
        readonly dependencies: readonly [];
        readonly requiredInput: import("../../../r-bridge/parser").ParseRequiredInput<string>;
    } | {
        readonly name: "normalize";
        readonly humanReadableName: "normalize";
        readonly description: "Normalize the AST to flowR's AST";
        readonly processor: (results: {
            parse?: import("../../../r-bridge/parser").ParseStepOutput<string>;
        }, input: Partial<import("../../../core/steps/all/core/10-normalize").NormalizeRequiredInput>) => import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation, import("../../../r-bridge/lang-4.x/ast/model/model").RNode<import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").ParentInformation>>;
        readonly executed: import("../../../core/steps/pipeline-step").PipelineStepStage.OncePerFile;
        readonly printer: {
            readonly 0: typeof import("../../../core/print/print").internalPrinter;
            readonly 2: typeof import("../../../core/print/normalize-printer").normalizedAstToJson;
            readonly 5: typeof import("../../../core/print/normalize-printer").normalizedAstToQuads;
            readonly 3: typeof import("../../../core/print/normalize-printer").printNormalizedAstToMermaid;
            readonly 4: typeof import("../../../core/print/normalize-printer").printNormalizedAstToMermaidUrl;
        };
        readonly dependencies: readonly ["parse"];
        readonly requiredInput: import("../../../core/steps/all/core/10-normalize").NormalizeRequiredInput;
    } | {
        readonly humanReadableName: "dataflow";
        readonly processor: (results: {
            normalize?: import("../../../r-bridge/lang-4.x/ast/model/processing/decorate").NormalizedAst;
        }, input: {
            request?: import("../../../r-bridge/retriever").RParseRequests;
            parser?: import("../../../r-bridge/parser").Parser<import("../../../r-bridge/parser").KnownParserType>;
        }) => import("../../../dataflow/info").DataflowInformation;
        readonly requiredInput: {};
        readonly name: "dataflow";
        readonly description: "Construct the dataflow graph";
        readonly executed: import("../../../core/steps/pipeline-step").PipelineStepStage.OncePerFile;
        readonly printer: {
            readonly 0: typeof import("../../../core/print/print").internalPrinter;
            readonly 2: typeof import("../../../core/print/dataflow-printer").dataflowGraphToJson;
            readonly 5: typeof import("../../../core/print/dataflow-printer").dataflowGraphToQuads;
            readonly 3: typeof import("../../../core/print/dataflow-printer").dataflowGraphToMermaid;
            readonly 4: typeof import("../../../core/print/dataflow-printer").dataflowGraphToMermaidUrl;
        };
        readonly dependencies: readonly ["normalize"];
    }>>, queryResults: BaseQueryResult, result: string[]) => true;
    readonly schema: Joi.ObjectSchema<any>;
    readonly flattenInvolvedNodes: (queryResults: BaseQueryResult) => NodeId[];
};
