import { Class } from '../class.interface';
import { IApiComponents, IApiOperation, IApiTag } from '../openapi';
import { ServiceManager } from '../service-manager';
import { Route } from './route.interface';
/**
 * Recursively get the property names of an object and its prototypes.
 *
 * @param {(object|null)} obj - The object.
 * @returns {string[]} The property names.
 */
export declare function getMethods(obj: object | null): string[];
/**
 * Recursively create the routes of a controller and its subcontrollers from the
 * controller class definition.
 *
 * @export
 * @param {string} parentPath - Prefix of all the route paths.
 * @param {HookFunction[]} parentHooks - First hooks of all the route hooks.
 * @param {Class} controllerClass - The controller class.
 * @param {ServiceManager} services - The application services.
 * @returns {Route[]} The created routes.
 */
export declare function makeControllerRoutes(controllerClass: Class, services: ServiceManager, openapi?: boolean, documentControllers?: object[]): Generator<{
    route: Route;
    components: IApiComponents;
    operation: IApiOperation;
    tags?: IApiTag[];
}>;
