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; protected buildInfo(): Swagger.Info; protected buildComponents(): { examples: {}; headers: {}; parameters: {}; requestBodies: {}; responses: {}; schemas: { [name: string]: Swagger.Schema3; }; securitySchemes: {}; }; protected translateSecurityDefinitions(definitions: { [name: string]: Swagger.SecuritySchemes; }): { [name: string]: Swagger.SecuritySchemes; }; protected hasOAuthFlow(definition: any): definition is { flow: string; }; protected hasOAuthFlows(definition: any): definition is { flows: Swagger.OAuthFlow; }; protected buildServers(): Swagger.Server[]; protected buildSchema(): { [name: string]: Swagger.Schema3; }; protected buildPaths(): { [pathName: string]: Swagger.Path3; }; protected buildMethod(controllerName: string, method: Tsoa.Method, pathObject: any, defaultProduces?: string[]): void; protected buildOperation(controllerName: string, method: Tsoa.Method, defaultProduces?: string[]): Swagger.Operation3; protected buildRequestBodyWithFormData(controllerName: string, method: Tsoa.Method, parameters: Tsoa.Parameter[]): Swagger.RequestBody; protected buildRequestBody(controllerName: string, method: Tsoa.Method, parameter: Tsoa.Parameter): Swagger.RequestBody; protected buildMediaType(controllerName: string, method: Tsoa.Method, parameter: Tsoa.Parameter): Swagger.MediaType; protected buildQueriesParameter(source: Tsoa.Parameter): Swagger.Parameter3[]; protected buildParameter(source: Tsoa.Parameter): Swagger.Parameter3; protected buildExamples(source: Pick): { example?: unknown; examples?: { [name: string]: Swagger.Example3; }; }; protected buildProperties(source: Tsoa.Property[]): { [propertyName: string]: Swagger.Schema3; }; protected getSwaggerTypeForReferenceType(referenceType: Tsoa.ReferenceType): Swagger.BaseSchema; protected getSwaggerTypeForPrimitiveType(dataType: Tsoa.PrimitiveTypeLiteral): Swagger.BaseSchema; protected isNull(type: Tsoa.Type): boolean; protected groupEnums(types: Swagger.BaseSchema[]): Swagger.BaseSchema[]; protected removeDuplicateSwaggerTypes(types: Swagger.BaseSchema[]): Swagger.BaseSchema[]; protected getSwaggerTypeForUnionType(type: Tsoa.UnionType, title?: string): { allOf: Swagger.BaseSchema[]; nullable: true; } | { 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[]; additionalProperties?: boolean | Swagger.BaseSchema; properties?: { [propertyName: string]: unknown; } | undefined; discriminator?: string; readOnly?: boolean; xml?: Swagger.XML; externalDocs?: Swagger.ExternalDocs; example?: unknown; required?: string[]; items?: Swagger.BaseSchema; allOf?: undefined; } | { anyOf: Swagger.BaseSchema[]; nullable: true; title?: string | undefined; allOf?: 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[]; additionalProperties?: boolean | Swagger.BaseSchema; properties?: { [propertyName: string]: unknown; } | undefined; discriminator?: string; readOnly?: boolean; xml?: Swagger.XML; externalDocs?: Swagger.ExternalDocs; example?: unknown; required?: string[]; items?: Swagger.BaseSchema; allOf?: undefined; nullable?: undefined; } | { anyOf: Swagger.BaseSchema[]; title?: string | undefined; allOf?: undefined; nullable?: undefined; }; protected getSwaggerTypeForIntersectionType(type: Tsoa.IntersectionType, title?: string): { title?: string | undefined; allOf: Swagger.BaseSchema[]; }; protected getSwaggerTypeForEnumType(enumType: Tsoa.EnumType, title?: string): Swagger.Schema3; }