import { StateDatabase } from "./database.js"; export type ResourceType = "run" | "session" | "decision" | "controller" | "effect" | "channel" | "notification" | "turn_intent"; export type ActorType = "session" | "host" | "controller" | "channel" | "human" | "policy" | "control" | "system"; export type OwnerType = "session" | "host" | "controller" | "channel" | "system"; export type MutationActor = { type: ActorType; id?: string; }; export type LeaseClaim = { resourceId: string; ownerType: OwnerType; ownerId: string; token: string; generation: number; expiresAt: number; resourceRevision: number; }; export type WritePermit = { resourceId: string; operation: string; actor: MutationActor; expectedRevision: number; lease?: LeaseClaim; }; export type MutationResult = { value: T; revision: number; eventId: string; }; export declare class StaleResourceError extends Error { constructor(message: string); } export declare class StateMutationStore { readonly state: StateDatabase; constructor(state: StateDatabase); ensureResource(type: ResourceType, aggregateKey: string, now?: number): string; claim(options: { resourceId: string; ownerType: OwnerType; ownerId: string; expectedRevision: number; leaseMs: number; now?: number; }): LeaseClaim | undefined; renew(claim: LeaseClaim, expectedRevision: number, leaseMs: number, now?: number): LeaseClaim; release(claim: LeaseClaim, expectedRevision: number, now?: number): number; mutate(permit: WritePermit, eventType: string, apply: (context: { database: StateDatabase; nextRevision: number; now: number; }) => T, options?: { payload?: unknown; now?: number; }): MutationResult; } export declare function resourceIdFor(type: ResourceType, aggregateKey: string): string; export declare function tokenHash(token: string): Buffer;