import JoiRouter, { RouteSpec } from './joi.router';
export declare type SpecConfig = {
    info: {
        title: string;
        version: string;
        description: string;
    };
    basePath: string;
    tags: Array<{
        name: string;
        description: string;
    }>;
    [key: string]: any;
};
export declare type SpecOptions = {
    warnFunc?: (() => void) | undefined;
    defaultResponses?: object | undefined;
    definitions?: {
        [key: string]: any;
    };
};
export default class SwaggerAPI {
    apiRoutes: {
        route: RouteSpec;
        prefix: string;
    }[];
    /**
     * Add a `koa-joi-router` router to the API.
     */
    addJoiRouter({ router, routes }: JoiRouter): void;
    /**
     * Generate a Swagger 2.0 specification as an object for this API.
     *
     * @param {object} baseSpec - base document
     * @param {object} baseSpec.info
     * @param {string} baseSpec.info.title
     * @param {string} baseSpec.info.version
     * @param {object} baseSpec.tags
     * @param {string} baseSpec.tags.name
     * @param {string} baseSpec.tags.description
     * @param {object} [options]
     * @param renameKeys
     * @param {object} [options.warnFunc]
     * @param {object} [options.defaultResponses]
     * @param {object} [options.definitions]
     * @returns {object} swagger 2.0 specification
     */
    generateSpec(baseSpec: SpecConfig, options: SpecOptions, renameKeys?: {
        [key: string]: string;
    }): any;
}
