import { SqlClient } from "@effect/sql/SqlClient"; import type { SqlError } from "@effect/sql/SqlError"; import { Context, Effect, Layer } from "effect"; import { Session, Turn, MessageBlock, SessionNotFoundError } from "./schema.js"; import type { TurnTokenUsage, WriteOp, QueuedWriteOp } from "./write-ops.js"; interface SessionTokenUsage { prompt_tokens: number; completion_tokens: number; total_tokens: number; provider_turns: number; estimated_turns: number; tokenized_turns: number; } declare const SessionRepo_base: Context.TagClass Effect.Effect, SqlError>; readonly get: (id: string) => Effect.Effect; readonly create: (name?: string, agentType?: string) => Effect.Effect; readonly remove: (id: string) => Effect.Effect; readonly rename: (id: string, name: string) => Effect.Effect; readonly updateCwd: (id: string, cwd: string) => Effect.Effect; readonly updateConfig: (id: string, agentType: string, cwd: string) => Effect.Effect; readonly updateAgentSessionId: (id: string, agentSessionId: string | null) => Effect.Effect; readonly updateMcpServers: (id: string, mcpServersJson: string | null) => Effect.Effect; readonly addTurn: (sessionId: string, role: "user" | "assistant") => Effect.Effect; readonly completeTurn: (turnId: string, stopReason: string, tokenUsage?: TurnTokenUsage) => Effect.Effect; readonly addMessageBlock: (turnId: string, kind: string, content: string) => Effect.Effect; readonly getConversation: (sessionId: string) => Effect.Effect; }>, SqlError>; readonly getSetting: (key: string) => Effect.Effect; readonly setSetting: (key: string, value: string) => Effect.Effect; readonly getSessionTokenUsage: (sessionId: string) => Effect.Effect; readonly persistOps: (ops: ReadonlyArray) => Effect.Effect; readonly enqueueWriteOp: (op: WriteOp) => Effect.Effect; readonly loadQueuedWriteOps: () => Effect.Effect, SqlError>; readonly persistQueuedOps: (ops: ReadonlyArray) => Effect.Effect; }>; export declare class SessionRepo extends SessionRepo_base { static readonly layer: Layer.Layer; } export {};