import { Context, RouterInfo } from '@midwayjs/core'; import { ParsedUrlQueryInput } from 'querystring'; type Controller = object; type ControllerClass = new (...args: any) => T; type ActionOf = T extends Controller ? keyof { [K in keyof T as T[K] extends Function ? K extends `${string}Action` ? K : never : never]: unknown; } : string | symbol; declare module '@midwayjs/core' { interface RouterInfo { keys?: { ctrlKey: string; actionKey: string; routeKey: string; }; } } type RouteOptions = { scheme?: boolean; params?: Record; query?: ParsedUrlQueryInput; }; type ActionFactoryOf = (action: ActionOf) => UrlFactory; export type UrlFactory = (options?: RouteOptions) => string; export declare class UrlService { init(): Promise; protected getContext(): Context; protected prepareRoutes(routes: RouterInfo[]): Promise; private _routes?; getRoutes(): RouterInfo[]; /** * For example: * ```js * urlService.controller('account') * ``` */ controller(ctrl: string): ActionFactoryOf; /** * For example: * ```js * urlService.controller(AccountController) * ``` */ controller(ctrl: T | ControllerClass | string): ActionFactoryOf; /** * For example: * ```js * urlService.action('account', 'create') * ``` */ action(ctrl: string, action: string | symbol): UrlFactory; /** * For example: * ```js * urlService.action(AccountController, 'createAction') * ``` */ action(ctrl: T | ControllerClass | string, action: ActionOf): UrlFactory; /** * For example: * ```js * urlService.path('/the/route/path') * ``` */ path(path: string): UrlFactory; /** * For example: * ```js * urlService.to('/the/route/path', ...) * ``` */ to(path: string, options?: RouteOptions): string; /** * For example: * ```js * urlService.to(['account', 'create'], ...) * urlService.to(['account/create'], ...) * ``` */ to(route: [string] | [string, string], options?: RouteOptions): string; /** * For example: * ```js * urlService.to([AccountController, 'createAction'], ...) * ``` */ to(route: [T | ControllerClass, ActionOf], options?: RouteOptions): string; protected build(route?: string | RouterInfo, options?: RouteOptions): string; } export {}; //# sourceMappingURL=urlService.d.ts.map