import { IAstroboyBaseClass, IRouter, IRoute } from "./base"; export interface IRouteLifeCycleMethod> { (context: T, instance: IAstroboyBaseClass): void | Promise; } export interface IRouterBuildContext

{ router: IRouter

; } export interface IRouteBuildContext

extends IRouterBuildContext

{ name: string; route: IRoute

; } export interface IRouteBuilderDefine> { (context: T, descriptor: IRouteDescriptor): IRouteDescriptor; } export interface IRouterCreateDefine> { (context: T, prototype: any): void; } export declare type LifeCycleRegister = (name: K, resolver: K extends "onBuild" ? IRouteBuilderDefine : IRouteLifeCycleMethod, reset?: boolean) => void; export declare type OnCreateRegister = (resolver: IRouterCreateDefine, reset?: boolean) => void; export interface IRouterEvents { lifecycle: LifeCycleRegister; create: OnCreateRegister; } export interface IRouteRunLifeCycle { onPipes: IRouteLifeCycleMethod[]; onEnter: IRouteLifeCycleMethod[]; onQuit: IRouteLifeCycleMethod[]; } export interface IRouterLifeCycle extends IRouteRunLifeCycle { onBuild: IRouteBuilderDefine[]; } export interface IRouteDescriptor extends PropertyDescriptor { value: any; }