import { Constructor, Context, DecoratorType, MetadataAccessor, MetadataMap } from '@loopback/core';
import { Socket } from 'socket.io';
type SocketIoEventMatcherInfo = {
    matcher: string | RegExp;
    methodNames: string[];
};
/**
 * Request context for a socket.io request
 */
export declare class SocketIoConnectionContext extends Context {
    readonly socket: Socket;
    constructor(socket: Socket, parent: Context);
}
/**
 * A factory to instantiate socket.io controllers
 */
export declare class SocketIoControllerFactory {
    private controllerClass;
    private controller;
    readonly connCtx: SocketIoConnectionContext;
    constructor(parentCtx: Context, controllerClass: Constructor<object>, socket: Socket);
    create(): Promise<{
        [method: string]: Function;
    }>;
    /**
     * Set up the controller for the given socket
     */
    setup(): Promise<void>;
    connect(): Promise<void>;
    protected registerSubscribeMethods(): void;
    getDecoratedMethodsForConnect(): MetadataMap<boolean>;
    getDecorateSubscribeMethodsByEventName(): Map<string, SocketIoEventMatcherInfo>;
    protected getDecorateSubscribeMethods(): MetadataMap<(string | RegExp)[]>;
    protected getAllMethodMetadataForKey<V, DT extends DecoratorType>(metadataAccessor: MetadataAccessor<V, DT>): MetadataMap<V>;
    getCallback(methodName: string): (...args: unknown[]) => Promise<void>;
}
export {};
