/// <reference types="node" />
import { StreamResponse, ApiType } from './proto-ts/PadPlusServer_pb';
import { EventEmitter } from 'events';
import { GrpcEventEmitter } from './grpc-event-emitter';
export interface ResultObject {
    code: number;
    data: any;
}
export declare type GrpcGatewayEvent = 'data' | 'reconnect' | 'grpc-end' | 'grpc-close' | 'heartbeat';
export declare class GrpcGateway extends EventEmitter {
    private token;
    private endpoint;
    private static _instance?;
    private debounceQueue?;
    private debounceQueueSubscription?;
    private throttleQueue?;
    private throttleQueueSubscription?;
    static get Instance(): GrpcGateway | undefined;
    private eventEmitterMap;
    static init(token: string, endpoint: string, name: string): Promise<GrpcEventEmitter>;
    private keepHeartbeat;
    static release(): Promise<void>;
    private client;
    private stopping;
    private isAlive;
    private timeoutNumber;
    private startTime;
    private stream?;
    private reconnectStatus;
    private constructor();
    private initSelf;
    private addNewInstance;
    emit(event: 'data', data: StreamResponse): boolean;
    emit(event: 'reconnect'): boolean;
    emit(event: 'heartbeat', requestId: any): boolean;
    emit(event: 'grpc-end' | 'grpc-close'): boolean;
    emit(event: never, data: any): never;
    on(event: 'data', listener: ((data: StreamResponse) => any)): this;
    on(event: 'reconnect', listener: (() => any)): this;
    on(event: 'heartbeat', listener: ((requestId: any) => any)): this;
    on(event: 'grpc-end' | 'grpc-close', listener: (() => any)): this;
    on(event: never, listener: ((data: any) => any)): never;
    private checkTimeout;
    request(apiType: ApiType, uin: string, data?: any): Promise<StreamResponse | null>;
    private _request;
    stop(): Promise<void>;
    initGrpcGateway(): Promise<void>;
}
//# sourceMappingURL=grpc-gateway.d.ts.map