export declare namespace Sink { type Finalizator = () => void | Promise; interface Options { readonly cancelOnPipeError?: boolean | undefined; } interface WaitOptions { readonly timeout?: number | undefined; readonly errorOnTimeout?: boolean | undefined; } } export declare class Sink { private readonly promise; private readonly cancelOnError; private pending; private waitTimeoutHandler; private cancelling; private resolve; private reject; private finalizator; private pipeHandler; constructor(executor: (pipe: (value: A) => void, cancel: Sink['cancel']) => Sink.Finalizator | void, { cancelOnPipeError }?: Sink.Options); get isPending(): boolean; /** Wait until Sink is finished/cancelled. */ wait({ timeout, errorOnTimeout }?: Sink.WaitOptions): Promise; /** Stop pipes and free resources. */ cancel(reason?: unknown): Promise; /** Execute action on every pipe and use prev action result. */ pipe(action: (value: A) => PromiseLike | B): Sink; /** Execute action on pipe once and then cancel. */ once(action: (value: A) => PromiseLike | B): Sink; catch(action: (reason: unknown) => PromiseLike | B): Sink; }