export interface IsTimeouted { isSuccess(): this is TimeoutResultSuccess; isTimeout(): this is TimeoutResultTimeout; isAborted(): this is TimeoutResultAborted; isError(): this is TimeoutResultError; } export interface PurTimeoutState { readonly state: "success" | "timeout" | "aborted" | "error"; } export interface PurTimeoutResultSuccess extends PurTimeoutState { readonly state: "success"; readonly value: T; } export interface PurTimeoutResultTimeout extends PurTimeoutState { readonly state: "timeout"; } export interface PurTimeoutResultAborted extends PurTimeoutState { readonly state: "aborted"; readonly reason: unknown; } export interface PurTimeoutResultError extends PurTimeoutState { readonly state: "error"; readonly error: Error; } export interface TimeoutState { readonly duration: number; readonly ctx: CTX; } type PurTimeoutResult = PurTimeoutResultSuccess | PurTimeoutResultTimeout | PurTimeoutResultAborted | PurTimeoutResultError; export type TimeoutResultSuccess = PurTimeoutResultSuccess & TimeoutState & IsTimeouted; export type TimeoutResultTimeout = PurTimeoutResultTimeout & TimeoutState & IsTimeouted; export type TimeoutResultAborted = PurTimeoutResultAborted & TimeoutState & IsTimeouted; export type TimeoutResultError = PurTimeoutResultError & TimeoutState & IsTimeouted; export type TimeoutResult = TimeoutResultSuccess | TimeoutResultTimeout | TimeoutResultAborted | TimeoutResultError; export declare function createTimeoutResult(t: PurTimeoutResult & TimeoutState): TimeoutResult; export type ActionFunc = (controller: AbortController) => Promise; export type ActionItem = ActionFunc | Promise; export type TimeoutAction = ActionItem; export interface TimeoutActionOptions { readonly timeout: number; readonly signal: AbortSignal; readonly controller: AbortController; readonly ctx: CTX; onTimeout: () => void; onAbort: (reason: unknown) => void; onError: (error: Error) => void; } export declare function isSuccess(result: PurTimeoutResult): result is TimeoutResultSuccess; export declare function isTimeout(result: PurTimeoutResult): result is TimeoutResultTimeout; export declare function isAborted(result: PurTimeoutResult): result is TimeoutResultAborted; export declare function isError(result: PurTimeoutResult): result is TimeoutResultError; export declare function unwrap(result: TimeoutResult): T; export declare function unwrapOr(result: TimeoutResult, defaultValue: T): T; export declare function timeouted(action: TimeoutAction, options?: Partial>): Promise>; export {}; //# sourceMappingURL=timeouted.d.ts.map