import type { BaseQueryFormat, BaseQueryResult } from '../../base-query-format';
import type { PipelineOutput } from '../../../core/steps/pipeline/pipeline';
import type { DEFAULT_DATAFLOW_PIPELINE, DEFAULT_SLICE_WITHOUT_RECONSTRUCT_PIPELINE, DEFAULT_SLICING_PIPELINE } from '../../../core/steps/pipeline/default-pipelines';
import type { SlicingCriteria } from '../../../slicing/criterion/parse';
import type { ParsedQueryLine } from '../../query';
import Joi from 'joi';
import { executeStaticSliceQuery } from './static-slice-query-executor';
import type { NodeId } from '../../../r-bridge/lang-4.x/ast/model/processing/node-id';
import type { ReplOutput } from '../../../cli/repl/commands/repl-main';
import type { FlowrConfig } from '../../../config';
import { criteriaQueryCompleter } from '../../../cli/repl/parser/slice-query-parser';
import { type SliceQueryOptions } from '../slice-query-options';
import { SliceDirection } from '../../../util/slice-direction';
/** Calculates and returns the static backward or forward slice from the given criteria */
export interface StaticSliceQuery extends BaseQueryFormat, SliceQueryOptions {
    readonly type: 'static-slice';
    /** The slicing criteria to use */
    readonly criteria: SlicingCriteria;
    /** The direction to slice in. Defaults to backward slicing if unset. */
    readonly direction?: SliceDirection;
}
export interface StaticSliceQueryResult extends BaseQueryResult {
    /**
     * only contains the results of the slice steps to not repeat ourselves, this does not contain the reconstruction
     * if you set the {@link SliceQuery#noReconstruction|noReconstruction} flag.
     *
     * The keys are serialized versions of the used queries (i.e., the result of `JSON.stringify`).
     * This implies that multiple slice queries with the same query configuration will _not_ be re-executed.
     */
    results: Record<string, (Omit<PipelineOutput<typeof DEFAULT_SLICING_PIPELINE>, keyof PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>> | Omit<PipelineOutput<typeof DEFAULT_SLICE_WITHOUT_RECONSTRUCT_PIPELINE>, keyof PipelineOutput<typeof DEFAULT_DATAFLOW_PIPELINE>>)
    /** the packages the slice calls into, only set with {@link SliceQueryOptions#reportPackages} */
     & {
        packages?: readonly string[];
    }>;
}
declare function sliceQueryLineParser(output: ReplOutput, line: readonly string[], _config: FlowrConfig): ParsedQueryLine<'static-slice'>;
export declare const StaticSliceQueryDefinition: {
    readonly title: "Static Slice Query";
    readonly executor: typeof executeStaticSliceQuery;
    readonly asciiSummarizer: (formatter: import("../../../util/text/ansi").OutputFormatter, _analyzer: import("../../../project/flowr-analyzer").ReadonlyFlowrAnalysisProvider<import("../../../r-bridge/parser").KnownParser>, queryResults: BaseQueryResult, result: string[]) => true;
    readonly fromLine: typeof sliceQueryLineParser;
    readonly completer: typeof criteriaQueryCompleter;
    readonly syntax: "@static-slice (<crit>;...)[fiIcB] <code | file://path>";
    readonly schema: Joi.ObjectSchema<any>;
    readonly flattenInvolvedNodes: (queryResults: BaseQueryResult) => NodeId[];
};
export {};
