import { PrismaService } from "../../../core/database/prisma/prisma.service";
import type { AgentMemory, MemoryScope, MemoryCategory } from '@prisma/client';
export interface CreateMemoryInput {
    organizationId: string;
    createdById: string;
    content: string;
    scope?: MemoryScope;
    category?: MemoryCategory;
    projectId?: string;
    personaId?: string;
    source?: string;
}
export interface CreateOrgMemoryInput {
    organizationId: string;
    content: string;
    scope?: MemoryScope;
    category?: MemoryCategory;
    projectId?: string;
    personaId?: string;
    source?: string;
}
export interface UpdateMemoryInput {
    content?: string;
    category?: MemoryCategory;
}
export interface InjectionContext {
    projectId?: string | null;
    personaId?: string | null;
}
export declare class AgentMemoriesService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    buildSystemPromptSection(sessionOrgId: string, userId: string, ctx?: InjectionContext): Promise<string>;
    list(organizationId: string, createdById: string, scope?: MemoryScope, category?: MemoryCategory): Promise<AgentMemory[]>;
    create(input: CreateMemoryInput): Promise<AgentMemory>;
    listOrgMemories(organizationId: string, scope?: MemoryScope, category?: MemoryCategory): Promise<AgentMemory[]>;
    createOrgMemory(input: CreateOrgMemoryInput): Promise<AgentMemory>;
    update(id: string, organizationId: string, createdById: string, patch: UpdateMemoryInput): Promise<AgentMemory>;
    remove(id: string, organizationId: string, createdById: string): Promise<{
        ok: true;
    }>;
    extractAndPersist(organizationId: string, userId: string, rawText: string): Promise<{
        cleanedText: string;
        created: number;
    }>;
    removeOrgMemory(id: string, organizationId: string): Promise<{
        ok: true;
    }>;
    private assertScopeShape;
    private assertOwnUserMemory;
}
