import * as grpc from './typesGrpc'; export type AnyError = Error | grpc.Error; /** * Interface for data produced by a call */ export interface Publisher { /** * Get reconnection status */ get reconnecting(): boolean; /** * Connect after error */ connected(): void; /** * Reconnect when error */ reconnect(): void; /** * Cancel call */ cancel(): void; /** * Handler for incoming data * @param handler */ onData(handler: Handler): Publisher; /** * Handler for errors * @param handler */ onError(handler: Handler): Publisher; /** * Handler for a call end * @param handler */ finally(handler: Handler): Publisher; } /** * Data conversion from one type to another */ export type DataMapper = (data: I) => O; /** * Handler for data */ export type Handler = (value: T) => void; /** * Publisher that may keep actual events in buffer, until a handler added to process. * I.e., for a case when request received data before onData(..) was called. * Otherwise the call may miss data or errors. */ export declare class BufferedPublisher implements Publisher { private _reconnecting; private buffer; private cancelled; private onDataHandler; private onErrorHandler; private onFinallyHandler; get reconnecting(): boolean; connected(): void; reconnect(): void; cancel(): void; execute(repeat?: boolean): void; emitData(data: T): void; emitError(error: AnyError): void; emitClosed(): void; onData(handler: Handler): Publisher; onError(handler: Handler): Publisher; finally(handler: Handler): Publisher; } /** * Publisher with methods to emit events. */ export declare class ManagedPublisher implements Publisher { private readonly buffer; constructor(); get reconnecting(): boolean; connected(): void; reconnect(): void; cancel(): void; emitData(data: T): void; emitError(error: AnyError): void; emitClosed(): void; onData(handler: Handler): Publisher; onError(handler: Handler): Publisher; finally(handler: Handler): Publisher; } /** * Publisher that converts incoming data to another type */ export declare class MappingPublisher implements Publisher { private readonly buffer; private reader; constructor(reader: Publisher, mapper: DataMapper); get reconnecting(): boolean; connected(): void; reconnect(): void; cancel(): void; onData(handler: Handler): Publisher; onError(handler: Handler): Publisher; finally(handler: Handler): Publisher; } export declare class PromisePublisher implements Publisher { private readonly value; constructor(value: Promise); get reconnecting(): boolean; connected(): void; reconnect(): void; cancel(): void; onData(handler: Handler): Publisher; onError(handler: Handler): Publisher; finally(handler: Handler): Publisher; } export declare function publishToPromise(publisher: Publisher): Promise; export declare function publishListToPromise(publisher: Publisher): Promise;