import type { ModelAdapter } from "@claudexor/core"; import { ControlModelOperationDetail, ModelCallRequest, ModelOperationParams, ModelOperationReceipt, type CancelReasonCode, type CredentialProfile, type ModelPayloadRef } from "@claudexor/schema"; import { type CommandAuthority } from "./command-authority.js"; import type { JobRecord, RunContext } from "./server.js"; export declare const MODEL_OPERATION_ID = "model.operation.create"; /** Existing ResourceStore supplies these purpose-bound byte operations. */ export interface ModelPayloadStore { readModel(ref: ModelPayloadRef): Buffer; publishModel(bytes: Uint8Array): ModelPayloadRef; releaseModel(ref: ModelPayloadRef): void; listModelResources(): Array; } export interface ModelOperationDependencies { commands: CommandAuthority; resources: () => ModelPayloadStore; enqueue(envelope: { request: ModelOperationParams; operation: string; idempotencyKey: string; clientId: string; idempotencyRequest: unknown; }): Promise<{ id: string; }>; cancel(id: string, reason?: CancelReasonCode): Promise; resolve(request: ModelCallRequest, signal: AbortSignal): Promise<{ adapter: ModelAdapter; profile: CredentialProfile; }>; now?: () => Date; warn?: (message: string) => void; } /** A model command reuses daemon queue/cancel/command authority. This owns only * the generation's payload custody; it has no scheduler or conversation cache. */ export declare class ModelOperations { private readonly deps; private expiryTimer?; private closed; private readonly startedAt; constructor(deps: ModelOperationDependencies); create(request: ModelPayloadRef, idempotencyKey: string, captureFailureEvidence?: boolean): Promise; execute(raw: unknown, ctx: RunContext): Promise; inspect(id: string): ControlModelOperationDetail; readResult(id: string): { bytes: Buffer; sha256: string; }; acknowledge(id: string, sha256: string): ControlModelOperationDetail; cancel(id: string, reason?: CancelReasonCode): Promise; /** Called by the existing daemon terminal boundary, queued cancellations included. */ onCommandTerminal(record: JobRecord): void; /** Existing maintenance invokes this after journal recovery/admission. Live * command refs protect bytes; operational blobs cannot recreate a terminal. */ reconcileResources(dryRun?: boolean): { released: string[]; errors: string[]; }; close(): void; private now; private readRequest; private records; private record; private evidence; private update; private responseAt; private retainedResources; private releaseIfUnused; private armExpiry; } //# sourceMappingURL=model-operations.d.ts.map