import { type CallbackAttemptOutcome, type CallbackRouteV1, type CallbackTransportContextV1, type CallbackTransportDeliverInput } from "./callback-transport.js"; import type { DesktopThreadIdentity, DesktopTransportPort } from "./desktop-types.js"; import type { DesktopStateRepository, DesktopTaskRecord } from "./desktop-state-store.js"; import { type DesktopRecoveryInput } from "./desktop-task-recovery.js"; export { DesktopTaskError } from "./desktop-task-recovery.js"; export interface DesktopTaskInput { target: DesktopThreadIdentity; desktopId: string; controllerSession: string; callbackRoute?: CallbackRouteV1; timeoutMs?: number; } export interface DesktopSendInput extends DesktopTaskInput { messageId: string; text: string; } export interface DesktopTaskServiceDependencies extends DesktopTransportPort { repository: DesktopStateRepository; deliver?(input: CallbackTransportDeliverInput): CallbackAttemptOutcome | Promise; resolveCallbackContext?(task: DesktopTaskRecord): CallbackTransportContextV1 | undefined; now?(): Date; randomUUID?(): string; deliveryLeaseMs?: number; retryDelayMs?: number; maxDeliveryAttempts?: number; } export interface DesktopTaskService { send(input: DesktopSendInput): Promise; watch(input: DesktopTaskInput): Promise; status(id: string): DesktopTaskRecord; list(): DesktopTaskRecord[]; reconcile(id: string): Promise; reconcileAll(): Promise<{ tasks: DesktopTaskRecord[]; errors: { id: string; error_code: string; }[]; }>; unwatch(id: string, input: DesktopRecoveryInput): DesktopTaskRecord; close(id: string, input: DesktopRecoveryInput & { reason?: string; }): DesktopTaskRecord; renew(id: string, input: DesktopRecoveryInput & { timeoutMs?: number; }): Promise; recover(id: string, input: DesktopRecoveryInput): Promise; retryCallback(id: string, input: DesktopRecoveryInput & { notificationId?: string; }): Promise; } /** Includes outbox work after the native task has settled. */ export declare function desktopTaskNeedsReconciliation(task: DesktopTaskRecord): boolean; export declare function createDesktopTaskService(deps: DesktopTaskServiceDependencies): DesktopTaskService;