import type { TaskRunner } from "../../contracts/orchestration.js";
import type { RuntimeBootstrap } from "../../runtime/runtime-bootstrap.js";
import type { ChatLayout } from "./utils.js";
import { type DagNode } from "../../orchestration/dag.js";
import type { CliRenderer } from "../../cli/ui/renderer.js";
import type { OmkBrandThemeName, OmkTuiMotion } from "../../brand/theme.js";
import type { TuiView } from "../../tui/model.js";
export interface NativeRootLoopInput {
    bootstrap: RuntimeBootstrap;
    taskRunner: TaskRunner;
    runId: string;
    root: string;
    rootSource?: string;
    activeCwd?: string;
    env: Record<string, string>;
    layout: ChatLayout;
    agentFile: string;
    mcpAllowlist?: readonly string[];
    skillNames?: readonly string[];
    hookNames?: readonly string[];
    workers?: number;
    executionPrompt?: string;
    renderer?: CliRenderer;
    onData?: (data: string) => void;
    onTodoSync?: (output: string) => void;
}
export interface NativeRootSessionState {
    bootstrap: RuntimeBootstrap;
    provider: string;
    model?: string;
    thinking?: string;
    approvalPolicy?: string;
    theme?: OmkBrandThemeName;
    view?: TuiView;
    animation?: OmkTuiMotion;
    modelPickerOpen?: boolean;
    activeProviderTab?: string;
    updatedAt?: string;
}
export declare function shouldRunNativeParallelTurn(executionPrompt: string | undefined): boolean;
export declare function buildNativeParallelTurnArgs(input: NativeRootLoopInput, prompt: string): string[];
export declare function createNativeRootSessionState(input: {
    bootstrap: RuntimeBootstrap;
    executionPrompt?: string;
}): NativeRootSessionState;
export type NativeTurnRisk = "read" | "write" | "shell" | "merge";
export declare function inferNativeTurnRisk(prompt: string): NativeTurnRisk;
export declare function buildNativeRootLoopTurnNode(input: {
    bootstrap: RuntimeBootstrap;
    prompt: string;
    nodeId?: string;
    mcpAllowlist?: readonly string[];
    skillNames?: readonly string[];
    hookNames?: readonly string[];
    executionPrompt?: string;
}): DagNode;
export declare function runNativeOmkRootLoop(input: NativeRootLoopInput): Promise<number>;
