import { PrismaService } from "../../../core/database/prisma/prisma.service";
import type { AgentSession, AgentSessionStatus, AgentSurface, Prisma } from '@prisma/client';
export interface CreateSessionInput {
    organizationId: string;
    createdById: string;
    title?: string;
    projectId?: string;
    personaId?: string;
    surface?: AgentSurface;
    parentSessionId?: string;
}
export interface ListSessionsInput {
    organizationId: string;
    createdById?: string;
    status?: AgentSessionStatus;
    limit?: number;
    projectId?: string | 'null';
}
export declare class AgentSessionsService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    createSession(input: CreateSessionInput): Promise<AgentSession>;
    listSessions(input: ListSessionsInput): Promise<AgentSession[]>;
    getSession(sessionId: string, organizationId: string): Promise<{
        messages: {
            type: import("@prisma/client").$Enums.AgentMessageType;
            id: string;
            createdAt: Date;
            sessionId: string;
            content: string | null;
            payload: Prisma.JsonValue | null;
            model: string | null;
            sequence: number;
            turnId: string;
        }[];
    } & {
        title: string | null;
        id: string;
        createdAt: Date;
        status: import("@prisma/client").$Enums.AgentSessionStatus;
        updatedAt: Date;
        organizationId: string;
        createdById: string;
        closedAt: Date | null;
        surface: import("@prisma/client").$Enums.AgentSurface;
        projectId: string | null;
        personaId: string | null;
        planMode: import("@prisma/client").$Enums.AgentPlanMode;
        permissionMode: import("@prisma/client").$Enums.AgentPermissionMode;
        parentSessionId: string | null;
    }>;
    rewindAfter(sessionId: string, organizationId: string, afterSequence: number): Promise<{
        ok: true;
        deleted: number;
    }>;
    updateSession(sessionId: string, organizationId: string, patch: {
        title?: string | null;
        personaId?: string | null;
        projectId?: string | null;
    }): Promise<AgentSession>;
    softDeleteSession(sessionId: string, organizationId: string): Promise<AgentSession>;
}
