/** * @module typings/core */ import { LinkEvent } from '../defs'; import { ISchemaPage, Trigger } from './index'; export interface ITransitionData { current: ISchemaPage; next: ISchemaPage; trigger: Trigger; event?: LinkEvent | PopStateEvent; } export interface ITransitionFilters { once?: boolean; self?: boolean; } export interface ITransitionRules { namespace?: string | string[]; route?: string | string[]; custom?(data: ITransitionData): boolean; } export interface ITransitionPage extends ITransitionRules { name?: string; from?: ITransitionRules; to?: ITransitionRules; sync?: boolean; priority?: number; async?: () => (data?: any) => void; beforeOnce?(data: ITransitionData): void; once?(data: ITransitionData): Promise | void; afterOnce?(data: ITransitionData): void; before?(data: ITransitionData): void; beforeLeave?(data: ITransitionData): void; leave?(data: ITransitionData): Promise | void; afterLeave?(data: ITransitionData): void; beforeEnter?(data: ITransitionData): void; enter?(data: ITransitionData): Promise | void; afterEnter?(data: ITransitionData): void; after?(data: ITransitionData): void; } export interface ITransitionOnce extends ITransitionPage { once?(data: ITransitionData): Promise; }