import type { ReadonlyDeep, WritableDeep } from 'type-fest';
import type { PipelineJson } from '../../pipeline/PipelineJson/PipelineJson';
import type { TaskJson } from '../../pipeline/PipelineJson/TaskJson';
import type { Parameters } from '../../types/typeAliases';
import type { string_parameter_name } from '../../types/typeAliases';
import type { TODO_string } from '../../utils/organization/TODO_string';
import type { ExecutionReportJson } from '../execution-report/ExecutionReportJson';
import type { CreatePipelineExecutorOptions } from './00-CreatePipelineExecutorOptions';
/**
 * @@@
 *
 * @private internal type of `executeAttempts`
 */
export type ExecuteAttemptsOptions = Required<Omit<CreatePipelineExecutorOptions, 'pipeline'>> & {
    /**
     * @@@
     */
    readonly jokerParameterNames: Readonly<ReadonlyArray<string_parameter_name>>;
    /**
     * @@@
     */
    readonly priority: number;
    /**
     * @@@
     *
     * Note: [💂] There are two distinct variabiles
     * 1) `maxExecutionAttempts` - the amount of attempts LLM model
     * 2) `maxAttempts` - the amount of attempts for any task - LLM, SCRIPT, DIALOG, etc.
     */
    readonly maxAttempts: number;
    /**
     * @@@
     */
    readonly preparedContent: TODO_string;
    /**
     * @@@
     */
    readonly parameters: Readonly<Parameters>;
    /**
     * @@@
     */
    readonly task: ReadonlyDeep<TaskJson>;
    /**
     * @@@
     */
    readonly preparedPipeline: ReadonlyDeep<PipelineJson>;
    /**
     * @@@
     */
    readonly $executionReport: WritableDeep<ExecutionReportJson>;
    /**
     * @@@
     */
    readonly pipelineIdentification: string;
};
/**
 * @@@
 *
 * @private internal utility of `createPipelineExecutor`
 */
export declare function executeAttempts(options: ExecuteAttemptsOptions): Promise<TODO_string>;
/**
 * TODO: Break into smaller functions
 */
