#!/usr/bin/env node
import { Config, RoutesConfig, SpecConfig, Tsoa } from '@namecheap/tsoa-runtime';
import { AbstractRouteGenerator } from './routeGeneration/routeGenerator';
export interface ExtendedSpecConfig extends SpecConfig {
    entryFile: Config['entryFile'];
    noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
    controllerPathGlobs?: Config['controllerPathGlobs'];
}
export declare const validateSpecConfig: (config: Config) => Promise<ExtendedSpecConfig>;
type RouteGeneratorImpl = new (metadata: Tsoa.Metadata, options: ExtendedRoutesConfig) => AbstractRouteGenerator<any>;
export interface ExtendedRoutesConfig extends RoutesConfig {
    entryFile: Config['entryFile'];
    noImplicitAdditionalProperties: Exclude<Config['noImplicitAdditionalProperties'], undefined>;
    bodyCoercion: Exclude<RoutesConfig['bodyCoercion'], undefined>;
    controllerPathGlobs?: Config['controllerPathGlobs'];
    multerOpts?: Config['multerOpts'];
    rootSecurity?: Config['spec']['rootSecurity'];
    routeGenerator?: string | RouteGeneratorImpl;
}
export interface ConfigArgs {
    basePath?: string;
    configuration?: string | Config;
}
export interface SwaggerArgs extends ConfigArgs {
    host?: string;
    json?: boolean;
    yaml?: boolean;
}
export declare function runCLI(): {
    [x: string]: unknown;
    _: (string | number)[];
    $0: string;
} | Promise<{
    [x: string]: unknown;
    _: (string | number)[];
    $0: string;
}>;
export declare function generateSpecAndRoutes(args: SwaggerArgs, metadata?: Tsoa.Metadata): Promise<Tsoa.Metadata>;
export type RouteGeneratorModule<Config extends ExtendedRoutesConfig> = {
    default: new (metadata: Tsoa.Metadata, routesConfig: Config) => {
        GenerateCustomRoutes: () => Promise<void>;
    };
};
export {};
