import type { Operator } from "../Operator";
import type { StatefulEvt } from "./StatefulEvt";
import type { CtxLike } from "./CtxLike";
import type { Evt } from "./Evt";
import type { Handler } from "../Handler";
import type { AsyncIterableEvt } from "../AsyncIterableEvt";
export interface NonPostableEvt<T> {
    /** https://docs.evt.land/api/statefulevt#converting-an-evt-into-a-statefulevt */
    toStateful(initialState: T, ctx?: CtxLike): StatefulEvt<T>;
    toStateful(ctx?: CtxLike): StatefulEvt<T | undefined>;
    /** https://docs.evt.land/api/evt/evtattachdetach */
    readonly evtAttach: Evt<Handler<T, any>>;
    /** https://docs.evt.land/api/evt/evtattachdetach */
    readonly evtDetach: Evt<Handler<T, any>>;
    /** https://docs.evt.land/api/evt/setmaxhandlers */
    setMaxHandlers(n: number): this;
    /**
     * https://docs.evt.land/api/evt/post
     *
     * Number of times .post(data) have been called.
     */
    readonly postCount: number;
    /** https://docs.evt.land/api/evt/enabletrace */
    enableTrace(params: {
        id: string;
        formatter?: (data: T) => string;
        log?: ((message?: any, ...optionalParams: any[]) => void) | false;
    }): void;
    /** https://docs.evt.land/api/evt/enabletrace */
    disableTrace(): this;
    /**
     * TODO: Update doc, it replace: https://docs.evt.land/api/evt/getstatelessop
     * Maybe this feature is too confusing to be documented...
     * */
    getInvocableOp<U>(op: Operator<T, U>): Operator.fλ.Stateless<T, U>;
    /** TODO: DOC !!! */
    isHandledByOp<U>(op: Operator<T, U>, data: T): boolean;
    /**
     * https://docs.evt.land/api/evt/ishandled
     *
     * Test if posting a given event data will have an effect.
     *
     * Return true if:
     * -There is at least one handler matching
     * this event data ( at least one handler's callback function
     * will be invoked if the data is posted. )
     * -Handlers could be will be detached
     * if the event data is posted.
     *
     */
    isHandled(data: T): boolean;
    /** https://docs.evt.land/api/evt/gethandler */
    getHandlers(): Handler<T, any>[];
    /**
     * https://docs.evt.land/api/evt/detach
     *
     * Detach every handlers of the Evt that are bound to the provided context
     * */
    detach<CtxResult>(ctx: CtxLike<CtxResult>): Handler<T, any, CtxLike<CtxResult>>[];
    /**
     * https://docs.evt.land/api/evt/detach
     *
     * (unsafe) Detach every handlers from the Evt
     * */
    detach(): Handler<T, any>[];
    /** https://docs.evt.land/api/evt/pipe */
    pipe(): Evt<T>;
    pipe<U>(op: Operator.fλ<T, U>): Evt<U>;
    pipe<U extends T>(op: (data: T) => data is U): Evt<U>;
    pipe(op: (data: T) => boolean): Evt<T>;
    pipe(ctx: CtxLike): Evt<T>;
    pipe<U>(ctx: CtxLike, op: Operator.fλ<T, U>): Evt<U>;
    pipe<U extends T>(ctx: CtxLike, op: (data: T) => data is U): Evt<U>;
    pipe(ctx: CtxLike, op: (data: T) => boolean): Evt<T>;
    pipe<B, C>(op1: Operator.fλ<T, B>, op2: Operator.fλ<B, C>): Evt<C>;
    pipe<B, C extends B>(op1: Operator.fλ<T, B>, op2: (data: B) => data is C): Evt<C>;
    pipe<B>(op1: Operator.fλ<T, B>, op2: (data: B) => boolean): Evt<B>;
    pipe<B extends T, C>(op1: (data: T) => data is B, op2: Operator.fλ<B, C>): Evt<B>;
    pipe<B>(op1: (data: T) => boolean, op2: Operator.fλ<T, B>): Evt<B>;
    pipe<B extends T, C extends B>(op1: (data: T) => data is B, op2: (data: B) => data is C): Evt<C>;
    pipe<B extends T>(op1: (data: T) => data is B, op2: (data: B) => boolean): Evt<B>;
    pipe<B extends T>(op1: (data: T) => boolean, op2: (data: T) => data is B): Evt<B>;
    pipe<T>(op1: (data: T) => boolean, op2: (data: T) => boolean): Evt<T>;
    pipe<B, C, D>(op1: Operator.fλ<T, B>, op2: Operator.fλ<B, C>, op3: Operator.fλ<C, D>): Evt<D>;
    pipe<B, C, D, E>(op1: Operator.fλ<T, B>, op2: Operator.fλ<B, C>, op3: Operator.fλ<C, D>, op4: Operator.fλ<D, E>): Evt<E>;
    pipe<B, C, D, E>(op1: Operator.fλ<T, B>, op2: Operator.fλ<B, C>, op3: Operator.fλ<C, D>, op4: Operator.fλ<D, E>): Evt<E>;
    pipe<B, C, D, E, F>(op1: Operator.fλ<T, B>, op2: Operator.fλ<B, C>, op3: Operator.fλ<C, D>, op4: Operator.fλ<D, E>, op5: Operator.fλ<E, F>): Evt<F>;
    pipe<B, C>(op1: Operator<T, B>, op2: Operator<B, C>): Evt<C>;
    pipe<B, C, D>(op1: Operator<T, B>, op2: Operator<B, C>, op3: Operator<C, D>): Evt<D>;
    pipe<B, C, D, E>(op1: Operator<T, B>, op2: Operator<B, C>, op3: Operator<C, D>, op4: Operator<D, E>): Evt<E>;
    pipe<B, C, D, E, F>(op1: Operator<T, B>, op2: Operator<B, C>, op3: Operator<C, D>, op4: Operator<D, E>, op5: Operator<E, F>): Evt<F>;
    pipe(...ops: [
        Operator<T, any>,
        ...Operator<any, any>[]
    ]): Evt<any>;
    pipe<T>(...ops: [
        Operator<T, any>,
        ...Operator<any, any>[]
    ]): Evt<any>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * op - fλ
     *
     * ctx
     *
     * timeout?
     */
    waitFor<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, timeout?: number): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout?
     */
    waitFor<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout?: number): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * op - Filter
     *
     * ctx
     *
     * timeout?
     */
    waitFor(op: (data: T) => boolean, ctx: CtxLike, timeout?: number): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * op - fλ
     *
     * timeout?
     */
    waitFor<U>(op: Operator.fλ.Stateless<T, U>, timeout?: number): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * op - Type guard
     *
     * timeout?
     */
    waitFor<Q extends T>(op: (data: T) => data is Q, timeout?: number): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * op - Filter
     *
     * timeout?
     */
    waitFor(op: (data: T) => boolean, timeout?: number): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * ctx
     *
     * timeout?
     */
    waitFor(ctx: CtxLike, timeout?: number): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/waitfor
     *
     * timeout?
     */
    waitFor(timeout?: number): Promise<T>;
    [Symbol.asyncIterator](): AsyncIterator<T>;
    /**
    * https://docs.evt.land/api/evt/iter
    *
    * op - fλ
    *
    * ctx
    *
    * timeout?
    */
    iter<U, CtxResult>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike<CtxResult>, timeout?: number): AsyncIterableEvt<U, CtxResult>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout?
     */
    iter<Q extends T, CtxResult>(op: (data: T) => data is Q, ctx: CtxLike<CtxResult>, timeout?: number): AsyncIterableEvt<Q, CtxResult>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * op - Filter
     *
     * ctx
     *
     * timeout?
     */
    iter<CtxResult>(op: (data: T) => boolean, ctx: CtxLike<CtxResult>, timeout?: number): AsyncIterableEvt<T, CtxResult>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * op - fλ
     *
     * timeout?
     */
    iter<U, CtxResult>(op: Operator.fλ.Stateless<T, U>, timeout?: number): AsyncIterableEvt<U>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * op - Type guard
     *
     * timeout?
     */
    iter<Q extends T>(op: (data: T) => data is Q, timeout?: number): AsyncIterableEvt<Q>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * op - Filter
     *
     * timeout?
     */
    iter(op: (data: T) => boolean, timeout?: number): AsyncIterableEvt<T>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * ctx
     *
     * timeout?
     */
    iter<CtxResult>(ctx: CtxLike, timeout?: number): AsyncIterableEvt<T, CtxResult>;
    /**
     * https://docs.evt.land/api/evt/iter
     *
     * timeout?
     */
    iter(timeout?: number): AsyncIterableEvt<T, void>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attach<U>(op: Operator.fλ<T, U>, ctx: CtxLike, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attach<U>(op: Operator.fλ<T, U>, ctx: CtxLike, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attach<U>(op: Operator.fλ<T, U>, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attach<U>(op: Operator.fλ<T, U>, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     *
     */
    attach<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach(op: (data: T) => boolean, ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach(op: (data: T) => boolean, ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach<Q extends T>(op: (data: T) => data is Q, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach(op: (data: T) => boolean, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attach(ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach<Q extends T>(op: (data: T) => data is Q, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attach() method )
     */
    attach(op: (data: T) => boolean, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * callback
     */
    attach(ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * timeout
     *
     * callback
     */
    attach(timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * callback
     */
    attach(callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attachOnce() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attachOnce() without the '$' prefix.
     */
    $attachOnce<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * callback
     *
     * NOTE: $attachOnce() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attachOnce() without the '$' prefix.
     */
    $attachOnce<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attachOnce() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attachOnce() without the '$' prefix.
     */
    $attachOnce<U>(op: Operator.fλ.Stateless<T, U>, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * callback
     *
     * NOTE: $attachOnce() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attachOnce() without the '$' prefix.
     */
    $attachOnce<U>(op: Operator.fλ.Stateless<T, U>, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce(op: (data: T) => boolean, ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce(op: (data: T) => boolean, ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce<Q extends T>(op: (data: T) => data is Q, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * timeout
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce(op: (data: T) => boolean, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachOnce(ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce<Q extends T>(op: (data: T) => data is Q, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * callback
     *
     * NOTE: If you whish to use a fλ operator ( an operator that do not return a boolean )
     * the '$' prefix should be used ( use the $attachOnce() method )
     */
    attachOnce(op: (data: T) => boolean, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * callback
     */
    attachOnce(ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * timeout
     *
     * callback
     */
    attachOnce(timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * callback
     */
    attachOnce(callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachExtract<U>(op: Operator.fλ<T, U>, ctx: CtxLike, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachExtract<U>(op: Operator.fλ<T, U>, ctx: CtxLike, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachExtract<U>(op: Operator.fλ<T, U>, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachExtract<U>(op: Operator.fλ<T, U>, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachExtract<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachExtract(op: (data: T) => boolean, ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * callback
     */
    attachExtract<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * callback
     */
    attachExtract(op: (data: T) => boolean, ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * timeout
     *
     * callback
     */
    attachExtract<Q extends T>(op: (data: T) => data is Q, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * timeout
     *
     * callback
     */
    attachExtract(op: (data: T) => boolean, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * timeout
     */
    attachExtract(ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * callback
     */
    attachExtract<Q extends T>(op: (data: T) => data is Q, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * callback
     */
    attachExtract(op: (data: T) => boolean, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * callback
     */
    attachExtract(ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * timeout
     *
     * callback
     */
    attachExtract(timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * callback
     */
    attachExtract(callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachPrepend<U>(op: Operator.fλ<T, U>, ctx: CtxLike, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachPrepend<U>(op: Operator.fλ<T, U>, ctx: CtxLike, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachPrepend<U>(op: Operator.fλ<T, U>, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachPrepend<U>(op: Operator.fλ<T, U>, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachPrepend<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachPrepend(op: (data: T) => boolean, ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * callback
     */
    attachPrepend<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * callback
     */
    attachPrepend(op: (data: T) => boolean, ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * timeout
     *
     * callback
     */
    attachPrepend<Q extends T>(op: (data: T) => data is Q, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * timeout
     *
     * callback
     */
    attachPrepend(op: (data: T) => boolean, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachPrepend(ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * callback
     */
    attachPrepend<Q extends T>(op: (data: T) => data is Q, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * callback
     */
    attachPrepend(op: (data: T) => boolean, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * callback
     */
    attachPrepend(ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * timeout
     *
     * callback
     */
    attachPrepend(timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * callback
     */
    attachPrepend(callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOncePrepend<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOncePrepend<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOncePrepend<U>(op: Operator.fλ.Stateless<T, U>, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOncePrepend<U>(op: Operator.fλ.Stateless<T, U>, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachOncePrepend<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachOncePrepend(op: (data: T) => boolean, ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * callback
     */
    attachOncePrepend<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * callback
     */
    attachOncePrepend(op: (data: T) => boolean, ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * timeout
     *
     * callback
     */
    attachOncePrepend<Q extends T>(op: (data: T) => data is Q, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * timeout
     *
     * callback
     */
    attachOncePrepend(op: (data: T) => boolean, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachOncePrepend(ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * callback
     */
    attachOncePrepend<Q extends T>(op: (data: T) => data is Q, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * callback
     */
    attachOncePrepend(op: (data: T) => boolean, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * callback
     */
    attachOncePrepend(ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * timeout
     *
     * callback
     */
    attachOncePrepend(timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * callback
     */
    attachOncePrepend(callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOnceExtract<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * ctx
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOnceExtract<U>(op: Operator.fλ.Stateless<T, U>, ctx: CtxLike, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * timeout
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOnceExtract<U>(op: Operator.fλ.Stateless<T, U>, timeout: number, callback: (transformedData: U) => void): Promise<U>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - fλ
     *
     * callback
     *
     * NOTE: $attach() with '$' is to use only with fλ operators,
     * if your operator return a boolean use the attach() without the '$' prefix.
     */
    $attachOnceExtract<U>(op: Operator.fλ.Stateless<T, U>, callback: (transformedData: U) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachOnceExtract<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * timeout
     *
     * callback
     */
    attachOnceExtract(op: (data: T) => boolean, ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * ctx
     *
     * callback
     */
    attachOnceExtract<Q extends T>(op: (data: T) => data is Q, ctx: CtxLike, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * ctx
     *
     * callback
     */
    attachOnceExtract(op: (data: T) => boolean, ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * timeout
     *
     * callback
     */
    attachOnceExtract<Q extends T>(op: (data: T) => data is Q, timeout: number, callback: (data: Q) => void): Promise<Q>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * timeout
     *
     * callback
     */
    attachOnceExtract(op: (data: T) => boolean, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * timeout
     */
    attachOnceExtract(ctx: CtxLike, timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Type guard
     *
     * callback
     */
    attachOnceExtract<Q extends T>(op: (data: T) => data is Q, callback: (data: Q) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * op - Filter
     *
     * callback
     */
    attachOnceExtract(op: (data: T) => boolean, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * ctx
     *
     * callback
     */
    attachOnceExtract(ctx: CtxLike, callback: (data: T) => void): this;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * timeout
     *
     * callback
     */
    attachOnceExtract(timeout: number, callback: (data: T) => void): Promise<T>;
    /**
     * https://docs.evt.land/api/evt/attach
     *
     * callback
     */
    attachOnceExtract(callback: (data: T) => void): this;
}
