import * as i0 from '@angular/core'; import { Signal, InjectionToken } from '@angular/core'; type SdTaskMaybeAsync = T | PromiseLike; type SdTaskStatus = 'idle' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled'; type SdTaskConnectionState = 'idle' | 'connecting' | 'open' | 'reconnecting' | 'closed' | 'error'; interface SdTaskState { readonly id: string; readonly status: SdTaskStatus; readonly progress?: number; readonly title?: string; readonly message?: string; readonly error?: unknown; readonly result?: TResult; readonly updatedAt?: number | Date; } interface SdTaskRetryPolicy { readonly maxAttempts?: number; readonly initialDelayMs?: number; readonly backoff?: number; readonly maxDelayMs?: number; readonly jitter?: number; } interface SdTaskLoadContext { readonly id: string; readonly signal: AbortSignal; readonly attempt: number; readonly state: SdTaskState; } interface SdTaskActionContext { readonly id: string; readonly state: SdTaskState; } type SdTaskCancelResult = void | boolean | SdTaskState; type SdTaskCancelHandler = (context: SdTaskActionContext) => SdTaskMaybeAsync>; interface SdTaskSourceBase { readonly cancel?: SdTaskCancelHandler; } interface SdTaskManualSource extends SdTaskSourceBase { readonly mode: 'manual'; } interface SdTaskPollingSource extends SdTaskSourceBase { readonly mode: 'poll'; readonly load: (context: SdTaskLoadContext) => SdTaskMaybeAsync>; readonly intervalMs?: number; readonly retry?: SdTaskRetryPolicy; } interface SdTaskSseSource extends SdTaskSourceBase { readonly mode: 'sse'; readonly url: string | (() => string); readonly eventSourceInit?: EventSourceInit; readonly parse?: (event: MessageEvent) => SdTaskMaybeAsync>; readonly retry?: SdTaskRetryPolicy; } type SdTaskSource = SdTaskManualSource | SdTaskPollingSource | SdTaskSseSource; interface SdTaskWatchOptions { readonly id: string; readonly initialState?: SdTaskState; readonly source: SdTaskSource; } interface SdTaskView { readonly id: string; readonly state: Signal>; readonly connection: Signal; readonly error: Signal; readonly subscriberCount: Signal; readonly canCancel: Signal; readonly canRetry: Signal; cancel(): Promise; retry(): void; } interface SdTaskSubscription extends SdTaskView { readonly destroyed: Signal; destroy(): void; } declare function isSdTaskTerminal(status: SdTaskStatus): boolean; interface SdTaskEventSource { onopen: ((event: Event) => void) | null; onmessage: ((event: MessageEvent) => void) | null; onerror: ((event: Event) => void) | null; close(): void; } interface SdTaskEventSourceFactory { create(url: string, init?: EventSourceInit): SdTaskEventSource; } declare const SD_TASK_EVENT_SOURCE_FACTORY: InjectionToken; declare const SD_TASK_RANDOM: InjectionToken<() => number>; declare class SdTaskService { #private; readonly tasks: i0.Signal[]>; constructor(); watch(options: SdTaskWatchOptions): SdTaskSubscription; get(id: string): SdTaskView | undefined; update(id: string, patch: Partial, 'id'>>): boolean; cancel(id: string): Promise; retry(id: string): boolean; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } export { SD_TASK_EVENT_SOURCE_FACTORY, SD_TASK_RANDOM, SdTaskService, isSdTaskTerminal }; export type { SdTaskActionContext, SdTaskCancelHandler, SdTaskCancelResult, SdTaskConnectionState, SdTaskEventSource, SdTaskEventSourceFactory, SdTaskLoadContext, SdTaskManualSource, SdTaskMaybeAsync, SdTaskPollingSource, SdTaskRetryPolicy, SdTaskSource, SdTaskSseSource, SdTaskState, SdTaskStatus, SdTaskSubscription, SdTaskView, SdTaskWatchOptions };