import type { TaskRunner } from "../contracts/orchestration.js";
import type { OmkRuntimeScope } from "../contracts/worker-context.js";
import { type ProviderBackedTaskRunnerOptions } from "../providers/provider-runtime.js";
import type { ProviderPolicy } from "../providers/types.js";
import { type RuntimeBackedTaskRunnerOptions } from "../runtime/runtime-backed-task-runner.js";
export type HarnessTaskRunnerMode = "chat" | "run" | "parallel";
type RuntimeBackedFactory = (options: RuntimeBackedTaskRunnerOptions) => Promise<TaskRunner>;
type ProviderBackedFactory = (options: ProviderBackedTaskRunnerOptions) => Promise<TaskRunner>;
export interface HarnessTaskRunnerProviderOptions {
    agentFile?: string;
    promptPrefix?: string;
    mcpScope?: OmkRuntimeScope;
    skillsScope?: OmkRuntimeScope;
    hooksScope?: OmkRuntimeScope;
    mcpNames?: string[];
    skillNames?: string[];
    hookNames?: string[];
    toolNames?: string[];
    model?: string;
    eventRunDir?: string;
    deepseekPromptPrefix?: string;
    allowDeepSeekAdvisoryFileNodes?: boolean;
    fallbackChain?: string[];
    providerBackedOptions?: Omit<ProviderBackedTaskRunnerOptions, "cwd" | "providerPolicy" | "kimi"> & {
        kimi?: ProviderBackedTaskRunnerOptions["kimi"];
    };
}
export interface HarnessTaskRunnerOptions {
    root: string;
    runId: string;
    mode: HarnessTaskRunnerMode;
    providerPolicy: ProviderPolicy;
    env?: Record<string, string>;
    useRuntimeBacked?: boolean;
    runtimeOptions?: Partial<Pick<RuntimeBackedTaskRunnerOptions, "runtimePolicy" | "defaultRuntime" | "fallbackChain" | "goal" | "onOutput">>;
    providerOptions?: HarnessTaskRunnerProviderOptions;
    factories?: {
        runtimeBacked?: RuntimeBackedFactory;
        providerBacked?: ProviderBackedFactory;
    };
}
export declare function createHarnessTaskRunner(options: HarnessTaskRunnerOptions): Promise<TaskRunner>;
export {};
