export type StatementType = 'comment' | 'blank' | 'var_assign' | 'task_assign' | 'task' | 'if' | 'elif' | 'else' | 'for' | 'loop' | 'func' | 'call' | 'break' | 'continue' | 'return';
export interface ASTNode {
    line: number;
    indent: number;
    type: StatementType;
    raw: string;
    children: ASTNode[];
    varName?: string;
    listItems?: string[];
    description?: string;
    condition?: string;
    iterVar?: string;
    iterRef?: string;
    loopCount?: number;
    loopCounter?: string;
    funcName?: string;
    params?: string[];
    args?: CallArg[];
}
export type CallArg = {
    type: 'var';
    name: string;
} | {
    type: 'list';
    items: string[];
};
export interface CheckError {
    line: number;
    message: string;
}
export type PlanStatus = 'running' | 'waiting' | 'replanning' | 'paused' | 'stopped' | 'completed';
export interface CallFrame {
    func: string;
    return_line: number;
    local_vars: Record<string, PlanVarValue>;
    saved_last_task_status: string | null;
}
export interface LoopFrame {
    type: 'for' | 'loop';
    var?: string;
    list?: PlanVarValue[];
    index: number;
    count?: number;
    start_line: number;
    end_line: number;
}
export type PlanVarValue = string | string[] | boolean | null;
export interface HistoryEntry {
    node_id: string;
    line: number;
    status: string;
    timestamp: string;
}
export interface PlanState {
    status: PlanStatus;
    current_line: number;
    executed_tasks: number;
    estimated_tasks: number;
    variables: Record<string, PlanVarValue>;
    call_stack: CallFrame[];
    loop_stack: LoopFrame[];
    last_task_status: string | null;
    history: HistoryEntry[];
    stop_line?: number;
    stop_node_id?: string;
    error?: string;
}
export interface NodeRecord {
    id: string;
    line: number;
    code: string;
    resolved_code: string;
    prompt: string;
    started_at: string;
    completed_at: string | null;
    nudge_count: number;
    status: string | null;
    result: PlanVarValue;
    summary: string | null;
    request_replan?: boolean;
    replan_reason?: string;
}
export type TreeNodeType = 'task' | 'if' | 'elif' | 'else' | 'for' | 'loop' | 'call' | 'func' | 'var';
export type TreeNodeStatus = 'pending' | 'running' | 'success' | 'failed' | 'blocked' | 'skipped';
export interface PlanTreeNode {
    id: string;
    type: TreeNodeType;
    label: string;
    line: number;
    node_id?: string;
    status?: TreeNodeStatus;
    children: PlanTreeNode[];
}
export interface PlanConfig {
    nudge_idle_seconds: number;
    nudge_max_count: number;
    nudge_interval_multiplier: number;
    send_idle_seconds: number;
    watch_poll_interval: number;
}
export declare const DEFAULT_PLAN_CONFIG: PlanConfig;
//# sourceMappingURL=types.d.ts.map