export declare type START = 0; export declare type DATA = 1; export declare type END = 2; export declare type ALL = START | DATA | END; export declare type Talkback = (type: END, payload?: any) => void; export declare type Sink = (type: ALL, payload?: Talkback | T | any) => void; export declare type Producer = (t: START, sink: Sink) => void; export declare type StrictSink = { (t: START, d: Talkback): void; (t: DATA, d: T): void; (t: END, d?: unknown): void; (t: ALL, d?: unknown): void; }; export declare type Subject = { (t: START, d: StrictSink): void; (t: DATA, d: T): void; (t: END, d?: unknown): void; }; export declare type Dispose = () => void; export declare type Consumer = (source: Producer) => Dispose; export declare type Operator = (source: Producer) => Producer; export declare type ExtractContent[]]> = { [k in keyof T]: T[k] extends Producer ? U : never; };