import { Swagger, Tsoa } from '@tsoa/runtime'; import { ExtendedSpecConfig } from '../cli'; import { SpecGenerator } from './specGenerator'; /** * TODO: * Handle formData parameters * Handle requestBodies of type other than json * Handle requestBodies as reusable objects * Handle headers, examples, responses, etc. * Cleaner interface between SpecGenerator2 and SpecGenerator3 * Also accept OpenAPI 3.0.0 metadata, like components/securitySchemes instead of securityDefinitions */ export declare class SpecGenerator3 extends SpecGenerator { protected readonly metadata: Tsoa.Metadata; protected readonly config: ExtendedSpecConfig; constructor(metadata: Tsoa.Metadata, config: ExtendedSpecConfig); GetSpec(): Swagger.Spec3; private buildInfo; private buildComponents; private translateSecurityDefinitions; private hasOAuthFlow; private hasOAuthFlows; private buildServers; private buildSchema; private buildPaths; private buildMethod; protected buildOperation(controllerName: string, method: Tsoa.Method, defaultProduces?: string[]): Swagger.Operation3; private buildRequestBodyWithFormData; private buildRequestBody; private buildMediaType; private buildQueriesParameter; private buildParameter; protected buildProperties(source: Tsoa.Property[]): { [propertyName: string]: Swagger.Schema3; }; protected getSwaggerTypeForReferenceType(referenceType: Tsoa.ReferenceType): Swagger.BaseSchema; protected getSwaggerTypeForPrimitiveType(dataType: Tsoa.PrimitiveTypeLiteral): Swagger.Schema; private isNull; private groupEnums; protected removeDuplicateSwaggerTypes(types: Array): Array; protected getSwaggerTypeForUnionType(type: Tsoa.UnionType, title?: string): { allOf: (Swagger.Schema | Swagger.BaseSchema)[]; nullable: true; } | { nullable: true; type?: Swagger.DataType; format?: Swagger.DataFormat; additionalProperties?: boolean | Swagger.BaseSchema; properties?: { [propertyName: string]: Swagger.Schema3; }; discriminator?: string; readOnly?: boolean; xml?: Swagger.XML; externalDocs?: Swagger.ExternalDocs; example?: unknown; required?: string[]; $ref?: string; title?: string; description?: string; default?: string | boolean | number | unknown; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; maxLength?: number; minLength?: number; pattern?: string; maxItems?: number; minItems?: number; uniqueItems?: boolean; maxProperties?: number; minProperties?: number; enum?: Array; 'x-enum-varnames'?: string[]; items?: Swagger.BaseSchema; allOf?: undefined; } | { nullable: true; type?: string; format?: Swagger.DataFormat; $ref?: string; title?: string; description?: string; default?: string | boolean | number | unknown; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; maxLength?: number; minLength?: number; pattern?: string; maxItems?: number; minItems?: number; uniqueItems?: boolean; maxProperties?: number; minProperties?: number; enum?: Array; 'x-enum-varnames'?: string[]; items?: Swagger.BaseSchema; allOf?: undefined; } | { anyOf: (Swagger.Schema | Swagger.BaseSchema)[]; nullable: true; title?: string | undefined; allOf?: undefined; } | { type?: Swagger.DataType; format?: Swagger.DataFormat; additionalProperties?: boolean | Swagger.BaseSchema; properties?: { [propertyName: string]: Swagger.Schema3; }; discriminator?: string; readOnly?: boolean; xml?: Swagger.XML; externalDocs?: Swagger.ExternalDocs; example?: unknown; required?: string[]; $ref?: string; title?: string; description?: string; default?: string | boolean | number | unknown; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; maxLength?: number; minLength?: number; pattern?: string; maxItems?: number; minItems?: number; uniqueItems?: boolean; maxProperties?: number; minProperties?: number; enum?: Array; 'x-enum-varnames'?: string[]; items?: Swagger.BaseSchema; allOf?: undefined; nullable?: undefined; } | { type?: string; format?: Swagger.DataFormat; $ref?: string; title?: string; description?: string; default?: string | boolean | number | unknown; multipleOf?: number; maximum?: number; exclusiveMaximum?: number; minimum?: number; exclusiveMinimum?: number; maxLength?: number; minLength?: number; pattern?: string; maxItems?: number; minItems?: number; uniqueItems?: boolean; maxProperties?: number; minProperties?: number; enum?: Array; 'x-enum-varnames'?: string[]; items?: Swagger.BaseSchema; allOf?: undefined; nullable?: undefined; } | { anyOf: (Swagger.Schema | Swagger.BaseSchema)[]; title?: string | undefined; allOf?: undefined; nullable?: undefined; }; protected getSwaggerTypeForIntersectionType(type: Tsoa.IntersectionType, title?: string): { title?: string | undefined; allOf: (Swagger.Schema | Swagger.BaseSchema)[]; }; protected getSwaggerTypeForEnumType(enumType: Tsoa.EnumType, title?: string): Swagger.Schema3; }