import type { TypeThunkAsync } from 'ts-gems';
import type { MQController } from '../mq/mq-controller.js';
import type { MQHeader } from '../mq/mq-header.js';
export interface MQControllerDecorator<T extends MQControllerDecorator<any> = MQControllerDecorator<any>> extends ClassDecorator {
    Header(name: string | RegExp, optionsOrType?: MQHeader.Options | string | TypeThunkAsync | false): T;
    UseType(...type: TypeThunkAsync[]): T;
}
export interface MQControllerDecoratorFactory {
    <T extends MQController.Options>(options?: T): MQControllerDecorator;
}
/**
 * @namespace MQControllerDecoratorFactory
 */
export declare namespace MQControllerDecoratorFactory {
    type AugmentationFunction = (decorator: MQControllerDecorator, decoratorChain: Function[], options?: MQController.Options) => void;
}
export declare function MQControllerDecoratorFactory<O extends MQController.Options>(options?: O): MQControllerDecorator;
export declare namespace MQControllerDecoratorFactory {
    var augment: (fn: MQControllerDecoratorFactory.AugmentationFunction) => void;
}
