import type { AgentMessage } from "../../types.ts"; import type { Context } from "../context.ts"; import { MutationLine } from "./mutation-line.ts"; import type { Branch, Entry, EntryQuery, IdGenerator, JsonValue, Session, SessionMetadata, SessionMutation, SessionMutationCallback, SessionStats, Storage, StorageBranchScan } from "./types.ts"; import { type ListElement, type ListReadOptions, type StoredValue, type Value, type ValueList } from "./values.ts"; export interface StorageBackedSessionOptions { mutationLine?: MutationLine; idGenerator?: IdGenerator; onClose?: () => void; } /** Durable session state is internally inconsistent and cannot be safely advanced. */ export declare class SessionInvariantError extends Error { constructor(message: string); } /** A requested Branch name is invalid. */ export declare class SessionInvalidBranchError extends Error { readonly branch: string; readonly reason: string; constructor(branch: string, reason: string); } /** A requested branch already exists. */ export declare class SessionBranchExistsError extends Error { readonly branch: string; constructor(branch: string); } /** A pending assistant message cannot be persisted as a session entry. */ export declare class SessionPendingAssistantMessageError extends Error { constructor(); } /** A requested session entry target does not exist. */ export declare class SessionUnknownTargetError extends Error { readonly targetId: string; constructor(targetId: string); } /** Package-internal typed boundary shared by concrete session repositories. */ export declare class StorageBackedSession implements Session { readonly metadata: TMetadata; readonly idGenerator: IdGenerator; private readonly storage; private readonly mutationLine; private readonly onClose; private readonly branches; private readonly closedError; private state; private closePromise; constructor(metadata: TMetadata, storage: Storage, options?: StorageBackedSessionOptions); beginMutation(_context: Context): Promise; mutate(mutation: SessionMutationCallback, context: Context): Promise; getEntries(ids: string[], context: Context): Promise>; getEntry(id: string, context: Context): Promise; getValue(address: Value, context: Context): Promise | undefined>; scanValues(prefix: Value, context: Context): Promise[]>; readList(address: ValueList, options: ListReadOptions | undefined, context: Context): Promise[]>; scanBranch(query: StorageBranchScan, context: Context): Promise; getStats(context: Context): Promise; getName(context: Context): Promise; getLabel(targetId: string, context: Context): Promise; findEntries(query: EntryQuery | undefined, context: Context): Promise; findEntry(query: EntryQuery | undefined, context: Context): Promise; branch(name: string, context: Context): Promise; createBranch(name: string, at: string | null, context: Context): Promise; setValue(address: Value, next: NoInfer, context: Context): Promise; deleteValue(address: Value, context: Context): Promise; appendList(address: ValueList, element: NoInfer, context: Context): Promise; deleteList(address: ValueList, context: Context): Promise; setName(name: string | undefined, context: Context): Promise; setLabel(targetId: string, label: string | undefined, context: Context): Promise; close(context: Context): Promise; getBranchTip(name: string, context: Context): Promise; appendToBranch(name: string, entry: { type: "message"; message: AgentMessage; } | { type: "custom"; customType: string; data?: JsonValue; }, context: Context): Promise; private getOrCreateBranchObject; private assertValidBranchName; private assertOpen; } //# sourceMappingURL=session.d.ts.map