import type { Combine, ThunkAsync, Type } from 'ts-gems'; import { ResponsiveMap } from '../../helpers/index.js'; import { OpraSchema } from '../../schema/index.js'; import type { ApiDocument } from '../api-document.js'; import { DataTypeMap } from '../common/data-type-map.js'; import { DocumentElement } from '../common/document-element.js'; import type { EnumType } from '../data-type/enum-type.js'; import { MQControllerDecoratorFactory } from '../decorators/mq-controller.decorator.js'; import { nodeInspectCustom } from '../utils/inspect.util.js'; import type { MQApi } from './mq-api.js'; import type { MQHeader } from './mq-header.js'; import type { MQOperation } from './mq-operation.js'; /** * @namespace MQController */ export declare namespace MQController { interface Metadata extends Pick { name: string; types?: ThunkAsync[]; operations?: Record; headers?: MQHeader.Metadata[]; } interface Options extends Partial> { name?: string; } interface InitArguments extends Combine<{ instance?: object; ctor?: Type; }, Pick> { } } /** * Type definition for MQController * @class MQController */ export interface MQControllerStatic extends MQControllerDecoratorFactory { /** * Class constructor of MQController * @param owner * @param args */ new (owner: MQApi | MQController, args: MQController.InitArguments): MQController; prototype: MQController; } /** * Type definition of MQController prototype * @interface MQController */ export interface MQController extends MQControllerClass { } /** * MQController */ export declare const MQController: MQControllerStatic; /** * * @class MQController */ declare class MQControllerClass extends DocumentElement { protected get docKeySegment(): string[]; protected _controllerReverseMap: WeakMap; readonly kind: OpraSchema.MQController.Kind; readonly name: string; description?: string; path: string; instance?: any; ctor?: Type; headers: MQHeader[]; operations: ResponsiveMap; types: DataTypeMap; findHeader(paramName: string, location?: OpraSchema.HttpParameterLocation): MQHeader | undefined; /** * */ toString(): string; /** * */ toJSON(options?: ApiDocument.ExportOptions): OpraSchema.MQController; /** * */ protected [nodeInspectCustom](): string; } export {};