import type { ConversationId, MemoryId, MemoryReviewerId, MemoryScope, MemoryStatus, MemoryType } from "@oscharko-dev/keiko-contracts/memory";
export interface GovernanceContext {
    readonly reviewerId: MemoryReviewerId;
    readonly nowMs: number;
}
export type ForgetSelector = {
    readonly kind: "by-id";
    readonly memoryId: MemoryId;
} | {
    readonly kind: "by-scope";
    readonly scope: MemoryScope;
} | {
    readonly kind: "by-type";
    readonly scope: MemoryScope;
    readonly type: MemoryType;
} | {
    readonly kind: "by-source-conversation";
    readonly scope: MemoryScope;
    readonly sourceConversationId: ConversationId;
} | {
    readonly kind: "by-time-window";
    readonly scope: MemoryScope;
    readonly olderThanMs: number;
};
export type ForgetSelectorKind = ForgetSelector["kind"];
export interface StatusTransition {
    readonly memoryId: MemoryId;
    readonly from: MemoryStatus;
    readonly to: MemoryStatus;
    readonly transitionedAt: number;
}
export type ConflictReason = "negation-flip" | "polarity-mismatch" | "value-mismatch";
export interface ConflictPair {
    readonly hasConflict: boolean;
    readonly reason?: ConflictReason;
}
export interface ConflictResolution {
    readonly winner: MemoryId;
    readonly losers: readonly MemoryId[];
}
export interface SelectMemoriesForForgetOptions {
    readonly nowMs: number;
    readonly protectPinned?: boolean;
    readonly protectArchived?: boolean;
}
export interface BuildForgetOperationsOptions {
    readonly writeTombstone: boolean;
    readonly reason?: string;
}
export declare const FORGET_SELECTOR_KINDS: readonly ForgetSelectorKind[];
//# sourceMappingURL=types.d.ts.map