import { z } from 'zod/v4';
import type { Message } from './messages/codebuff-message';
import type { ProjectFileContext } from '../util/file';
export declare const toolCallSchema: z.ZodObject<{
    toolName: z.ZodString;
    toolCallId: z.ZodString;
    input: z.ZodRecord<z.ZodString, z.ZodAny>;
}, z.core.$strip>;
export type ToolCall = z.infer<typeof toolCallSchema>;
export declare const subgoalSchema: z.ZodObject<{
    objective: z.ZodOptional<z.ZodString>;
    status: z.ZodOptional<z.ZodEnum<{
        NOT_STARTED: "NOT_STARTED";
        IN_PROGRESS: "IN_PROGRESS";
        COMPLETE: "COMPLETE";
        ABORTED: "ABORTED";
    }>>;
    plan: z.ZodOptional<z.ZodString>;
    logs: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
export type Subgoal = z.infer<typeof subgoalSchema>;
export declare const AgentStateSchema: z.ZodType<{
    agentId: string;
    agentType: AgentTemplateType | null;
    agentContext: Record<string, Subgoal>;
    subagents: AgentState[];
    messageHistory: Message[];
    stepsRemaining: number;
    creditsUsed: number;
    output?: Record<string, any>;
    parentId?: string;
}>;
export type AgentState = z.infer<typeof AgentStateSchema>;
export declare const AgentOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
    type: z.ZodLiteral<"structuredOutput">;
    value: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodAny>, z.ZodNull]>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"lastMessage">;
    value: z.ZodAny;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"allMessages">;
    value: z.ZodArray<z.ZodAny>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"error">;
    message: z.ZodString;
}, z.core.$strip>]>;
export type AgentOutput = z.infer<typeof AgentOutputSchema>;
export declare const AgentTemplateTypeList: readonly ["base", "base_lite", "base_max", "base_experimental", "claude4_gemini_thinking", "superagent", "base_agent_builder", "ask", "planner", "dry_run", "thinker", "file_picker", "file_explorer", "researcher", "reviewer", "agent_builder", "example_programmatic"];
type UnderscoreToDash<S extends string> = S extends `${infer L}_${infer R}` ? `${L}-${UnderscoreToDash<R>}` : S;
export declare const AgentTemplateTypes: { [K in (typeof AgentTemplateTypeList)[number]]: UnderscoreToDash<K>; };
declare const agentTemplateTypeSchema: z.ZodEnum<{
    base: "base";
    base_lite: "base_lite";
    base_max: "base_max";
    base_experimental: "base_experimental";
    claude4_gemini_thinking: "claude4_gemini_thinking";
    superagent: "superagent";
    base_agent_builder: "base_agent_builder";
    ask: "ask";
    planner: "planner";
    dry_run: "dry_run";
    thinker: "thinker";
    file_picker: "file_picker";
    file_explorer: "file_explorer";
    researcher: "researcher";
    reviewer: "reviewer";
    agent_builder: "agent_builder";
    example_programmatic: "example_programmatic";
}>;
export type AgentTemplateType = z.infer<typeof agentTemplateTypeSchema> | (string & {});
export declare const SessionStateSchema: z.ZodObject<{
    fileContext: z.ZodObject<{
        projectRoot: z.ZodString;
        cwd: z.ZodString;
        fileTree: z.ZodArray<z.ZodCustom<import("../util/file").FileTreeNode, import("../util/file").FileTreeNode>>;
        fileTokenScores: z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodNumber>>;
        tokenCallers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>>;
        knowledgeFiles: z.ZodRecord<z.ZodString, z.ZodString>;
        userKnowledgeFiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        agentTemplates: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodAny>>;
        customToolDefinitions: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
            inputJsonSchema: z.ZodAny;
            endsAgentStep: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
            description: z.ZodOptional<z.ZodString>;
            exampleInputs: z.ZodOptional<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodAny>>>;
        }, z.core.$strip>>>;
        codebuffConfig: z.ZodOptional<z.ZodObject<{
            description: z.ZodOptional<z.ZodAny>;
            startupProcesses: z.ZodOptional<z.ZodArray<z.ZodObject<{
                name: z.ZodString;
                command: z.ZodString;
                cwd: z.ZodOptional<z.ZodString>;
                enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
                stdoutFile: z.ZodOptional<z.ZodString>;
                stderrFile: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>>;
            fileChangeHooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
                name: z.ZodString;
                command: z.ZodString;
                cwd: z.ZodOptional<z.ZodString>;
                filePattern: z.ZodOptional<z.ZodString>;
                enabled: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
            }, z.core.$strip>>>;
            maxAgentSteps: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
            baseAgent: z.ZodOptional<z.ZodString>;
            spawnableAgents: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$strip>>;
        gitChanges: z.ZodObject<{
            status: z.ZodString;
            diff: z.ZodString;
            diffCached: z.ZodString;
            lastCommitMessages: z.ZodString;
        }, z.core.$strip>;
        changesSinceLastChat: z.ZodRecord<z.ZodString, z.ZodString>;
        shellConfigFiles: z.ZodRecord<z.ZodString, z.ZodString>;
        systemInfo: z.ZodObject<{
            platform: z.ZodString;
            shell: z.ZodString;
            nodeVersion: z.ZodString;
            arch: z.ZodString;
            homedir: z.ZodString;
            cpus: z.ZodNumber;
        }, z.core.$strip>;
    }, z.core.$strip>;
    mainAgentState: z.ZodType<{
        agentId: string;
        agentType: AgentTemplateType | null;
        agentContext: Record<string, Subgoal>;
        subagents: AgentState[];
        messageHistory: Message[];
        stepsRemaining: number;
        creditsUsed: number;
        output?: Record<string, any>;
        parentId?: string;
    }, unknown, z.core.$ZodTypeInternals<{
        agentId: string;
        agentType: AgentTemplateType | null;
        agentContext: Record<string, Subgoal>;
        subagents: AgentState[];
        messageHistory: Message[];
        stepsRemaining: number;
        creditsUsed: number;
        output?: Record<string, any>;
        parentId?: string;
    }, unknown>>;
}, z.core.$strip>;
export type SessionState = z.infer<typeof SessionStateSchema>;
export declare function getInitialSessionState(fileContext: ProjectFileContext): SessionState;
export {};
//# sourceMappingURL=session-state.d.ts.map