/**
 * Zod schemas for the current chat session persistence format.
 *
 * Keep field descriptions human-friendly because this file is the canonical
 * contract for catalog and per-session JSON on disk.
 */
import { z } from 'zod';
export declare const ConversationLineSchema: z.ZodObject<{
    id: z.ZodString;
    role: z.ZodEnum<{
        user: "user";
        assistant: "assistant";
    }>;
    text: z.ZodString;
    isStreaming: z.ZodOptional<z.ZodBoolean>;
    isPending: z.ZodOptional<z.ZodBoolean>;
    directShellResult: z.ZodOptional<z.ZodObject<{
        kind: z.ZodLiteral<"direct_shell_result">;
        command: z.ZodString;
        tool: z.ZodString;
        outcome: z.ZodEnum<{
            error: "error";
            done: "done";
        }>;
        exitCode: z.ZodOptional<z.ZodNumber>;
        stdout: z.ZodOptional<z.ZodString>;
        stderr: z.ZodOptional<z.ZodString>;
        error: z.ZodOptional<z.ZodString>;
        durationMs: z.ZodOptional<z.ZodNumber>;
        policy: z.ZodOptional<z.ZodObject<{
            binary: z.ZodOptional<z.ZodString>;
            scope: z.ZodOptional<z.ZodString>;
            risk: z.ZodOptional<z.ZodString>;
            capability: z.ZodOptional<z.ZodString>;
            reason: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export declare const CatalogEntryReadSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    retention: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
        reusable: "reusable";
        one_off: "one_off";
    }>>>;
    workspaceId: z.ZodOptional<z.ZodString>;
    pinned: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
    archivedAt: z.ZodOptional<z.ZodString>;
    createdAt: z.ZodOptional<z.ZodString>;
    updatedAt: z.ZodOptional<z.ZodString>;
    model: z.ZodOptional<z.ZodString>;
    reasoningEffort: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
        low: "low";
        medium: "medium";
        high: "high";
        ultrahigh: "ultrahigh";
    }>>>;
    driftEnabled: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
    lastContinuePrompt: z.ZodOptional<z.ZodString>;
    context: z.ZodCatch<z.ZodOptional<z.ZodObject<{
        estimatedHistoryTokens: z.ZodNumber;
        request: z.ZodOptional<z.ZodObject<{
            estimatedTokens: z.ZodOptional<z.ZodNumber>;
            toolNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
            goal: z.ZodOptional<z.ZodString>;
            usage: z.ZodOptional<z.ZodObject<{
                inputTokens: z.ZodNumber;
                outputTokens: z.ZodNumber;
                totalTokens: z.ZodNumber;
                cachedInputTokens: z.ZodOptional<z.ZodNumber>;
                reasoningTokens: z.ZodOptional<z.ZodNumber>;
                requests: z.ZodOptional<z.ZodNumber>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        compaction: z.ZodOptional<z.ZodObject<{
            compactedMessages: z.ZodOptional<z.ZodNumber>;
            compactedAt: z.ZodOptional<z.ZodString>;
            status: z.ZodOptional<z.ZodEnum<{
                failed: "failed";
                running: "running";
                idle: "idle";
            }>>;
            error: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        archive: z.ZodOptional<z.ZodObject<{
            count: z.ZodOptional<z.ZodNumber>;
            currentSummaryPath: z.ZodOptional<z.ZodString>;
            lastArchivePath: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>>;
    archives: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
        id: string;
        path: string;
        summaryPath: string;
        messageCount: number;
        createdAt: string;
        shortDescription?: string | undefined;
        summaryModel?: string | undefined;
    }[], unknown[]>>>>;
    lease: z.ZodCatch<z.ZodOptional<z.ZodObject<{
        ownerKind: z.ZodEnum<{
            tui: "tui";
            daemon: "daemon";
            ask: "ask";
        }>;
        ownerId: z.ZodString;
        acquiredAt: z.ZodString;
        lastSeenAt: z.ZodString;
        clientLabel: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export declare const CatalogEntryWriteSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    retention: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
        reusable: "reusable";
        one_off: "one_off";
    }>>>;
    workspaceId: z.ZodOptional<z.ZodString>;
    pinned: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
    archivedAt: z.ZodOptional<z.ZodString>;
    createdAt: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
    updatedAt: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
    model: z.ZodOptional<z.ZodString>;
    reasoningEffort: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
        low: "low";
        medium: "medium";
        high: "high";
        ultrahigh: "ultrahigh";
    }>>>;
    driftEnabled: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
    lastContinuePrompt: z.ZodOptional<z.ZodString>;
    context: z.ZodCatch<z.ZodOptional<z.ZodObject<{
        estimatedHistoryTokens: z.ZodNumber;
        request: z.ZodOptional<z.ZodObject<{
            estimatedTokens: z.ZodOptional<z.ZodNumber>;
            toolNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
            goal: z.ZodOptional<z.ZodString>;
            usage: z.ZodOptional<z.ZodObject<{
                inputTokens: z.ZodNumber;
                outputTokens: z.ZodNumber;
                totalTokens: z.ZodNumber;
                cachedInputTokens: z.ZodOptional<z.ZodNumber>;
                reasoningTokens: z.ZodOptional<z.ZodNumber>;
                requests: z.ZodOptional<z.ZodNumber>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
        compaction: z.ZodOptional<z.ZodObject<{
            compactedMessages: z.ZodOptional<z.ZodNumber>;
            compactedAt: z.ZodOptional<z.ZodString>;
            status: z.ZodOptional<z.ZodEnum<{
                failed: "failed";
                running: "running";
                idle: "idle";
            }>>;
            error: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        archive: z.ZodOptional<z.ZodObject<{
            count: z.ZodOptional<z.ZodNumber>;
            currentSummaryPath: z.ZodOptional<z.ZodString>;
            lastArchivePath: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>>;
    archives: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
        id: string;
        path: string;
        summaryPath: string;
        messageCount: number;
        createdAt: string;
        shortDescription?: string | undefined;
        summaryModel?: string | undefined;
    }[], unknown[]>>>>;
    lease: z.ZodCatch<z.ZodOptional<z.ZodObject<{
        ownerKind: z.ZodEnum<{
            tui: "tui";
            daemon: "daemon";
            ask: "ask";
        }>;
        ownerId: z.ZodString;
        acquiredAt: z.ZodString;
        lastSeenAt: z.ZodString;
        clientLabel: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export declare const CatalogReadSchema: z.ZodObject<{
    version: z.ZodLiteral<1>;
    sessions: z.ZodArray<z.ZodUnknown>;
}, z.core.$strip>;
export declare const CatalogWriteSchema: z.ZodObject<{
    version: z.ZodLiteral<1>;
    sessions: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        retention: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
            reusable: "reusable";
            one_off: "one_off";
        }>>>;
        workspaceId: z.ZodOptional<z.ZodString>;
        pinned: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
        archivedAt: z.ZodOptional<z.ZodString>;
        createdAt: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
        updatedAt: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
        model: z.ZodOptional<z.ZodString>;
        reasoningEffort: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
            low: "low";
            medium: "medium";
            high: "high";
            ultrahigh: "ultrahigh";
        }>>>;
        driftEnabled: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
        lastContinuePrompt: z.ZodOptional<z.ZodString>;
        context: z.ZodCatch<z.ZodOptional<z.ZodObject<{
            estimatedHistoryTokens: z.ZodNumber;
            request: z.ZodOptional<z.ZodObject<{
                estimatedTokens: z.ZodOptional<z.ZodNumber>;
                toolNames: z.ZodOptional<z.ZodArray<z.ZodString>>;
                goal: z.ZodOptional<z.ZodString>;
                usage: z.ZodOptional<z.ZodObject<{
                    inputTokens: z.ZodNumber;
                    outputTokens: z.ZodNumber;
                    totalTokens: z.ZodNumber;
                    cachedInputTokens: z.ZodOptional<z.ZodNumber>;
                    reasoningTokens: z.ZodOptional<z.ZodNumber>;
                    requests: z.ZodOptional<z.ZodNumber>;
                }, z.core.$strip>>;
            }, z.core.$strip>>;
            compaction: z.ZodOptional<z.ZodObject<{
                compactedMessages: z.ZodOptional<z.ZodNumber>;
                compactedAt: z.ZodOptional<z.ZodString>;
                status: z.ZodOptional<z.ZodEnum<{
                    failed: "failed";
                    running: "running";
                    idle: "idle";
                }>>;
                error: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
            archive: z.ZodOptional<z.ZodObject<{
                count: z.ZodOptional<z.ZodNumber>;
                currentSummaryPath: z.ZodOptional<z.ZodString>;
                lastArchivePath: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
        }, z.core.$strip>>>;
        archives: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
            id: string;
            path: string;
            summaryPath: string;
            messageCount: number;
            createdAt: string;
            shortDescription?: string | undefined;
            summaryModel?: string | undefined;
        }[], unknown[]>>>>;
        lease: z.ZodCatch<z.ZodOptional<z.ZodObject<{
            ownerKind: z.ZodEnum<{
                tui: "tui";
                daemon: "daemon";
                ask: "ask";
            }>;
            ownerId: z.ZodString;
            acquiredAt: z.ZodString;
            lastSeenAt: z.ZodString;
            clientLabel: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export declare const SessionBodyReadSchema: z.ZodObject<{
    id: z.ZodOptional<z.ZodString>;
    retention: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
        reusable: "reusable";
        one_off: "one_off";
    }>>>;
    workspaceId: z.ZodOptional<z.ZodString>;
    pinned: z.ZodCatch<z.ZodOptional<z.ZodBoolean>>;
    archivedAt: z.ZodOptional<z.ZodString>;
    history: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<({
        role: "system";
        content: string;
    } | {
        role: "user";
        content: string;
    } | {
        role: "assistant";
        content: string;
        toolCalls?: {
            id: string;
            tool: string;
            input: unknown;
        }[] | undefined;
    } | {
        role: "tool";
        content: string;
        toolCallId: string;
    })[], unknown[]>>>>;
    messages: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
        id: string;
        role: "user" | "assistant";
        text: string;
        isStreaming?: boolean | undefined;
        isPending?: boolean | undefined;
        directShellResult?: {
            kind: "direct_shell_result";
            command: string;
            tool: string;
            outcome: "error" | "done";
            exitCode?: number | undefined;
            stdout?: string | undefined;
            stderr?: string | undefined;
            error?: string | undefined;
            durationMs?: number | undefined;
            policy?: {
                binary?: string | undefined;
                scope?: string | undefined;
                risk?: string | undefined;
                capability?: string | undefined;
                reason?: string | undefined;
            } | undefined;
        } | undefined;
    }[], unknown[]>>>>;
    turns: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
        id: string;
        prompt: string;
        outcome: string;
        summary: string;
        steps: number;
        traceFile: string;
        events: string[];
        presentation?: {
            timelineItems: ({
                id: string;
                toolCallId: string;
                timestamp: string;
                type: "approval";
                tool: string;
                summary: string;
                status: "approved" | "denied" | "requested";
                step?: number | undefined;
                command?: string | undefined;
                reason?: string | undefined;
            } | {
                id: string;
                toolCallId: string;
                timestamp: string;
                type: "edit_diff";
                path: string;
                patch: string;
                truncated: boolean;
                step?: number | undefined;
                action?: string | undefined;
            })[];
        } | undefined;
    }[], unknown[]>>>>;
    archives: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
        id: string;
        path: string;
        summaryPath: string;
        messageCount: number;
        createdAt: string;
        shortDescription?: string | undefined;
        summaryModel?: string | undefined;
    }[], unknown[]>>>>;
    lease: z.ZodCatch<z.ZodOptional<z.ZodObject<{
        ownerKind: z.ZodEnum<{
            tui: "tui";
            daemon: "daemon";
            ask: "ask";
        }>;
        ownerId: z.ZodString;
        acquiredAt: z.ZodString;
        lastSeenAt: z.ZodString;
        clientLabel: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    queuedPrompts: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodUnknown>, z.ZodTransform<{
        id: string;
        prompt: string;
        createdAt: string;
        updatedAt: string;
    }[], unknown[]>>>>;
}, z.core.$strip>;
export declare const SessionBodyWriteSchema: z.ZodObject<{
    id: z.ZodString;
    retention: z.ZodOptional<z.ZodEnum<{
        reusable: "reusable";
        one_off: "one_off";
    }>>;
    workspaceId: z.ZodOptional<z.ZodString>;
    pinned: z.ZodDefault<z.ZodBoolean>;
    archivedAt: z.ZodOptional<z.ZodString>;
    history: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
        role: z.ZodLiteral<"system">;
        content: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        role: z.ZodLiteral<"user">;
        content: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        role: z.ZodLiteral<"assistant">;
        content: z.ZodString;
        toolCalls: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            tool: z.ZodString;
            input: z.ZodUnknown;
        }, z.core.$strip>>>;
    }, z.core.$strip>, z.ZodObject<{
        role: z.ZodLiteral<"tool">;
        content: z.ZodString;
        toolCallId: z.ZodString;
    }, z.core.$strip>]>>;
    messages: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        role: z.ZodEnum<{
            user: "user";
            assistant: "assistant";
        }>;
        text: z.ZodString;
        isStreaming: z.ZodOptional<z.ZodBoolean>;
        isPending: z.ZodOptional<z.ZodBoolean>;
        directShellResult: z.ZodOptional<z.ZodObject<{
            kind: z.ZodLiteral<"direct_shell_result">;
            command: z.ZodString;
            tool: z.ZodString;
            outcome: z.ZodEnum<{
                error: "error";
                done: "done";
            }>;
            exitCode: z.ZodOptional<z.ZodNumber>;
            stdout: z.ZodOptional<z.ZodString>;
            stderr: z.ZodOptional<z.ZodString>;
            error: z.ZodOptional<z.ZodString>;
            durationMs: z.ZodOptional<z.ZodNumber>;
            policy: z.ZodOptional<z.ZodObject<{
                binary: z.ZodOptional<z.ZodString>;
                scope: z.ZodOptional<z.ZodString>;
                risk: z.ZodOptional<z.ZodString>;
                capability: z.ZodOptional<z.ZodString>;
                reason: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    turns: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        prompt: z.ZodString;
        outcome: z.ZodString;
        summary: z.ZodString;
        steps: z.ZodNumber;
        traceFile: z.ZodString;
        events: z.ZodArray<z.ZodString>;
        presentation: z.ZodCatch<z.ZodOptional<z.ZodObject<{
            timelineItems: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
                id: z.ZodString;
                toolCallId: z.ZodString;
                step: z.ZodOptional<z.ZodNumber>;
                timestamp: z.ZodString;
                type: z.ZodLiteral<"approval">;
                tool: z.ZodString;
                summary: z.ZodString;
                status: z.ZodEnum<{
                    approved: "approved";
                    denied: "denied";
                    requested: "requested";
                }>;
                command: z.ZodOptional<z.ZodString>;
                reason: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>, z.ZodObject<{
                id: z.ZodString;
                toolCallId: z.ZodString;
                step: z.ZodOptional<z.ZodNumber>;
                timestamp: z.ZodString;
                type: z.ZodLiteral<"edit_diff">;
                path: z.ZodString;
                action: z.ZodOptional<z.ZodString>;
                patch: z.ZodString;
                truncated: z.ZodBoolean;
            }, z.core.$strip>]>>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
    archives: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        path: z.ZodString;
        summaryPath: z.ZodString;
        shortDescription: z.ZodOptional<z.ZodString>;
        messageCount: z.ZodNumber;
        createdAt: z.ZodString;
        summaryModel: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>>;
    lease: z.ZodOptional<z.ZodObject<{
        ownerKind: z.ZodEnum<{
            tui: "tui";
            daemon: "daemon";
            ask: "ask";
        }>;
        ownerId: z.ZodString;
        acquiredAt: z.ZodString;
        lastSeenAt: z.ZodString;
        clientLabel: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    queuedPrompts: z.ZodDefault<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        prompt: z.ZodString;
        createdAt: z.ZodString;
        updatedAt: z.ZodString;
    }, z.core.$strip>>>;
}, z.core.$strip>;
export type CatalogEntryRead = z.infer<typeof CatalogEntryReadSchema>;
export type ConversationLineValue = z.infer<typeof ConversationLineSchema>;
//# sourceMappingURL=chat-session-schemas.d.ts.map