import { Operation, Transaction } from "./_tx"; import { Task } from "./scheduler/index"; export interface Subscriber { next(tx: Transaction, val: T): void; error(tx: Transaction, err: Error): void; end(tx: Transaction): void; } export interface Subscription { activate(initialNeeded: boolean): void; dispose(): void; reorder(order: number): void; } export interface Source { readonly weight: number; subscribe(subscriber: Subscriber, order: number): Subscription; } export declare const NONE: any; export declare const NOOP_SUBSCRIBER: { next(tx: Transaction, val: any): void; error(tx: Transaction, err: Error): void; end(tx: Transaction): void; }; export declare const NOOP_SUBSCRIPTION: { activate(initialNeeded: boolean): void; dispose(): void; reorder(order: number): void; }; export declare function setTx(tx: Transaction): void; export declare function isInTx(): boolean; export declare function sendNextInTx(subscriber: Subscriber, val: T): void; export declare function sendEndInTx(subscriber: Subscriber): void; export declare function sendErrorInTx(subscriber: Subscriber, err: Error): void; export declare function queueToEndOfTx(op: Operation): void; export interface InvokeableWithParam

{ invoke(p: P): void; } export interface InvokeableWithoutParam { invoke(): void; } export declare type Invokeable

= P extends undefined ? InvokeableWithoutParam : InvokeableWithParam

; export declare function invoke(invokeable: InvokeableWithoutParam): Task; export declare function invokeWith(invokeable: InvokeableWithParam, param: T): Task;