import type { ImageContent, TextContent } from '../../ai/types.js';
import type { AgentMessage } from '../../core/index.js';
import type { NewSessionOptions, SessionContext, SessionEntry, SessionHeader, SessionTreeNode } from '../../core/session-schema.js';
export interface SessionInfoStore {
    getSessionName(): string | undefined;
    appendSessionInfo(name: string): string;
}
export interface ProductSessionStore extends SessionInfoStore {
    buildSessionContext(): SessionContext;
    getCwd(): string;
    getBranch(): SessionEntry[];
    getEntries(): SessionEntry[];
    getEntry(entryId: string): SessionEntry | undefined;
    getHeader(): SessionHeader | null;
    getLeafId(): string | null;
    getLeafEntry(): SessionEntry | undefined;
    getLabel(entryId: string): string | undefined;
    getSessionDir(): string;
    getSessionFile(): string | undefined;
    getSessionId(): string;
    getTree(): SessionTreeNode[];
    newSession(options?: NewSessionOptions): string | undefined;
    setSessionFile(sessionPath: string): void;
    createBranchedSession(parentEntryId: string): string | undefined;
    resetLeaf(): void;
    branch(entryId: string): void;
    appendLabelChange(targetId: string, label?: string): string;
    appendMessage(message: AgentMessage, durationMs?: number): string;
    appendCustomEntry<T = unknown>(customType: string, data?: T): string;
    appendCustomMessageEntry<T = unknown>(customType: string, content: string | (TextContent | ImageContent)[], display: boolean, details?: T): string;
    appendThinkingLevelChange(thinkingLevel: string): string;
    appendModelChange(provider: string, modelId: string): string;
    appendCompaction<T = unknown>(summary: string, firstKeptEntryId: string, tokensBefore: number, details?: T, fromHook?: boolean): string;
    appendSystemPrompt(content: string): string;
    appendToolDefinitions(tools: Array<{
        name: string;
        description: string;
        parameters: unknown;
    }>): string;
    appendTurnStart(turnIndex: number): string;
    appendTurnEnd(turnIndex: number, durationMs: number): string;
}
export type BranchSessionStore = Pick<ProductSessionStore, 'appendLabelChange' | 'branch' | 'buildSessionContext' | 'createBranchedSession' | 'getEntries' | 'getEntry' | 'getLeafId' | 'getSessionId' | 'newSession' | 'resetLeaf'>;
export type ModelSessionStore = Pick<ProductSessionStore, 'appendModelChange' | 'appendThinkingLevelChange'>;
export type PersistenceSessionStore = Pick<ProductSessionStore, 'appendCustomMessageEntry' | 'appendMessage' | 'appendSystemPrompt' | 'appendToolDefinitions' | 'appendTurnEnd' | 'appendTurnStart'>;
//# sourceMappingURL=session-store-types.d.ts.map