import type { TypeThunkAsync } from 'ts-gems';
import type { WSController } from '../ws/ws-controller.js';
export interface WSControllerDecorator<T extends WSControllerDecorator<any> = WSControllerDecorator<any>> extends ClassDecorator {
    UseType(...type: TypeThunkAsync[]): T;
}
export interface WSControllerDecoratorFactory {
    <T extends WSController.Options>(options?: T): WSControllerDecorator;
}
/**
 * @namespace WSControllerDecoratorFactory
 */
export declare namespace WSControllerDecoratorFactory {
    type AugmentationFunction = (decorator: WSControllerDecorator, decoratorChain: Function[], options?: WSController.Options) => void;
}
export declare function WSControllerDecoratorFactory<O extends WSController.Options>(options?: O): WSControllerDecorator;
export declare namespace WSControllerDecoratorFactory {
    var augment: (fn: WSControllerDecoratorFactory.AugmentationFunction) => void;
}
