/**
 * InMemorySessionStore — reference in-memory implementation of
 * {@link SessionStore}.
 *
 * Every accessor takes explicit {@link TenantId} (Convention #17). Any
 * accessor called with a tenantId that does not match the resource's owning
 * tenant throws {@link TenantIsolationError} — there is no fallback
 * (Convention #5 deny-by-default, session-hierarchy.md §12.2).
 */
import type { MessageId, SessionId, TenantId } from '../../types/ids/index.js';
import type { Message } from '../../types/message/index.js';
import type { Project } from '../../types/project/entity.js';
import type { Session } from '../../types/session/entity.js';
import type { ProjectId, SubSessionId, ThreadId } from '../../types/session/ids.js';
import type { SessionMessage } from '../../types/session/messages.js';
import type { CreateProjectParams, CreateSessionParams, CreateSubSessionParams, SessionStore, SessionView } from '../../types/session/store.js';
import type { SubSession } from '../../types/session/sub-session.js';
import type { SessionSummaryRef } from '../../types/summary/ref.js';
export declare class InMemorySessionStore implements SessionStore {
    private readonly projects;
    private readonly sessions;
    private readonly subSessions;
    private readonly messages;
    private readonly summaries;
    createProject(params: CreateProjectParams, tenantId: TenantId): Promise<Project>;
    getProject(projectId: ProjectId, tenantId: TenantId): Promise<Project | null>;
    createSession(params: CreateSessionParams, tenantId: TenantId): Promise<Session>;
    getSession(sessionId: SessionId, tenantId: TenantId): Promise<Session | null>;
    listSessions(threadId: ThreadId, tenantId: TenantId): Promise<readonly Session[]>;
    updateSession(session: Session, tenantId: TenantId): Promise<void>;
    deleteSession(sessionId: SessionId, tenantId: TenantId): Promise<void>;
    createSubSession(params: CreateSubSessionParams, tenantId: TenantId): Promise<SubSession>;
    getSubSession(subSessionId: SubSessionId, tenantId: TenantId): Promise<SubSession | null>;
    updateSubSession(subSession: SubSession, tenantId: TenantId): Promise<void>;
    deleteSubSession(subSessionId: SubSessionId, tenantId: TenantId): Promise<void>;
    appendMessage(sessionId: SessionId, message: Message, tenantId: TenantId): Promise<MessageId>;
    loadMessages(sessionId: SessionId, tenantId: TenantId): Promise<readonly Message[]>;
    loadSessionMessages(sessionId: SessionId, tenantId: TenantId): Promise<readonly SessionMessage[]>;
    getChildren(sessionId: SessionId, tenantId: TenantId): Promise<readonly SubSession[]>;
    getAncestry(sessionId: SessionId, tenantId: TenantId): Promise<readonly SessionId[]>;
    drill(sessionId: SessionId, tenantId: TenantId): Promise<SessionView | null>;
    recordSummary(summary: SessionSummaryRef & {
        materializedBy: 'kernel';
    }, tenantId: TenantId): Promise<void>;
    getSummary(sessionId: SessionId, tenantId: TenantId): Promise<SessionSummaryRef | null>;
    private assertTenant;
    private linkageView;
}
//# sourceMappingURL=memory.d.ts.map