import { Channel, WriteBuffer } from '../../common/message-rpc';
import { MessagingService } from './messaging-service';
import { Socket } from 'socket.io';
import { ConnectionHandlers } from './default-messaging-service';
import { FrontendConnectionService } from './frontend-connection-service';
import { AbstractChannel } from '../../common/message-rpc/channel';
import { WebsocketEndpoint } from './websocket-endpoint';
export declare class WebsocketFrontendConnectionService implements FrontendConnectionService {
    protected readonly websocketServer: WebsocketEndpoint;
    protected readonly wsHandlers: ConnectionHandlers<unknown>;
    protected readonly connectionsByFrontend: Map<string, ReconnectableSocketChannel>;
    protected readonly closeTimeouts: Map<string, NodeJS.Timeout>;
    protected readonly channelsMarkedForClose: Set<string>;
    registerConnectionHandler(spec: string, callback: (params: MessagingService.PathParams, channel: Channel) => void): void;
    protected handleConnection(socket: Socket, channelCreatedHandler: (channel: Channel) => void): Promise<void>;
    protected closeConnection(frontEndId: string, reason: string): void;
    protected createConnection(socket: Socket, frontEndId: string): ReconnectableSocketChannel;
    handleSocketDisconnect(socket: Socket, channel: ReconnectableSocketChannel, frontEndId: string): void;
    markForClose(channelId: string): void;
    private frontendConnectionTimeout;
}
declare class ReconnectableSocketChannel extends AbstractChannel {
    private socket;
    private socketBuffer;
    private disposables;
    connect(socket: Socket): void;
    disconnect(): void;
    getWriteBuffer(): WriteBuffer;
}
export {};
//# sourceMappingURL=websocket-frontend-connection-service.d.ts.map