import { type RuntimeRecord } from "../domain/records.js"; import { type OutboxStore } from "../outbox/store.js"; declare const NOTIFICATION_STORE: unique symbol; export type ConductorNotificationState = "queued" | "delivered" | "consumed"; export type ConductorNotificationPayload = Record & { notification_id: string; event_ids: string[]; event_set_sha256: string; created_at: string; delivered_to_session_id: string | null; delivered_at: string | null; consumed_at: string | null; }; export type ConductorNotificationRecord = RuntimeRecord; export interface ConductorNotificationStore { readonly [NOTIFICATION_STORE]: true; assignProjected(input: { eventIds: readonly string[]; projectorId: string; createdAt: string; }): Readonly<{ status: "created" | "replayed" | "empty"; record: ConductorNotificationRecord | null; }>; claimNext(input: { sessionId: string; observedAt: string; }): Readonly<{ status: "delivered" | "replayed" | "empty"; record: ConductorNotificationRecord | null; }>; releaseDelivery(input: { notificationId: string; sessionId: string; }): Readonly<{ status: "released" | "replayed"; record: ConductorNotificationRecord; }>; consume(input: { notificationId: string; sessionId: string; observedAt: string; }): Readonly<{ status: "consumed" | "replayed"; record: ConductorNotificationRecord; }>; read(notificationId: string): ConductorNotificationRecord; list(): readonly ConductorNotificationRecord[]; pending(): readonly ConductorNotificationRecord[]; } export declare function createConductorNotificationStore(options: { recordsRoot: string; assignmentsRoot: string; locksRoot: string; packageRoot: string; outbox: OutboxStore; }): ConductorNotificationStore; export declare function assertConductorNotificationStore(value: unknown): asserts value is ConductorNotificationStore; export {};