import type { ActorRef, TaskExecutorKind, TaskRun, TaskRunEvent, TaskRunReceipt, TaskRunStatus, TaskWait, TaskWaitKind } from '@xopcai/gateway-contract'; export interface TaskRunCreateInput { id?: string; taskId: string; parentRunId?: string; executorKind: TaskExecutorKind; executorRef: Record; trigger: Record; correlationId: string; causationId?: string; idempotencyKey: string; contractVersion: number; scheduledAt?: number; sessionKey?: string; retryPolicy?: Record; retryOfRunId?: string; now?: number; } export declare class TaskRunRepository { create(input: TaskRunCreateInput): TaskRun; get(id: string): TaskRun | undefined; require(id: string): TaskRun; getByIdempotencyKey(key: string): TaskRun | undefined; getActiveRoot(taskId: string): TaskRun | undefined; getLatestRoot(taskId: string): TaskRun | undefined; listByTask(taskId: string, limit?: number): TaskRun[]; claimNext(input: { owner: string; leaseMs: number; executorKind?: TaskExecutorKind; now?: number; }): TaskRun | undefined; start(input: { runId: string; expectedVersion: number; contextSnapshotId: string; policySnapshot: Record; sessionKey?: string; timeoutAt?: number; actor?: ActorRef; now?: number; }): TaskRun | undefined; setStatus(input: { runId: string; expectedVersion: number; from: TaskRunStatus[]; to: Extract; actor?: ActorRef; now?: number; }): TaskRun | undefined; heartbeat(input: { runId: string; owner: string; leaseMs: number; now?: number; }): TaskRun | undefined; finalize(input: { runId: string; expectedVersion: number; receipt: Omit; actor?: ActorRef; terminalCode?: string; terminalMessage?: string; now?: number; }): TaskRun | undefined; getReceipt(runId: string): TaskRunReceipt | undefined; listReceipts(taskId: string, limit?: number): TaskRunReceipt[]; recordFeedback(input: { runId: string; rating: 'helpful' | 'not_helpful'; reason?: string; now?: number; }): { id: string; runId: string; rating: 'helpful' | 'not_helpful'; reason?: string; createdAt: number; }; createWait(input: { taskId: string; taskRunId?: string; kind: TaskWaitKind; reason: string; condition?: Record; resumeAt?: number; actor?: ActorRef; now?: number; }): TaskWait; getWait(waitId: string): TaskWait | undefined; requireWait(waitId: string): TaskWait; listActiveWaits(taskId: string): TaskWait[]; resolveWait(input: { waitId: string; actor: ActorRef; resolution?: unknown; now?: number; }): TaskWait | undefined; listEvents(runId: string): TaskRunEvent[]; private transition; private appendEvent; }