import { TClass, IInstance } from 'ancient-mixins/lib/mixins'; import { INode, INodeEventsList } from 'ancient-mixins/lib/node'; import { TCursor } from 'ancient-cursor/lib/cursor'; import { TFunicularsManager } from './funiculars-manager'; declare type TFunicular = IFunicular>; declare enum EFunicularState { Constructed = 0, Mounting = 1, Mounted = 2, Remounting = 3, Unmounting = 4, Unmounted = 5, } interface IFunicularEventData { funicular: TFunicular; } interface IFunicularEventsList extends INodeEventsList { mount: ID; cursorFilling: ID; cursorFilled: ID; childsMounting: ID; childsMounted: ID; starting: ID; started: ID; mounted: ID; remount: ID; remounted: ID; unmount: ID; stopping: ID; stopped: ID; childsUnmounting: ID; childsUnmounted: ID; unmounted: ID; } interface IFunicularClone { (instance: IInstance): IInstance; } interface IFunicular> extends INode { clone: IFunicularClone; state: EFunicularState; childs: TFunicularsManager; parents: TFunicularsManager; cursor: IC; result: any; needRemount: boolean; needUnmount: boolean; remounted: TFunicular; mount(cursor: IC): Promise; remount(): Promise; unmount(): Promise; register(): Promise; unregister(): Promise; cursorFilling(): Promise; childsMounting(): Promise; childsUnmounting(): Promise; requestChilds(): Promise; abandonChilds(): Promise; start(): Promise; stop(): Promise; starting(): Promise; stopping(): Promise; watchChildsEvents(): void; unwatchChildsEvents(): void; childDestroyed(child: TFunicular): void; childRemounted(child: TFunicular): void; addParentToChilds(): void; cloneAndMount(): Promise; } declare function mixin>(superClass: T, clone: IFunicularClone): any; declare const MixedFunicular: TClass; declare class Funicular extends MixedFunicular { } export { mixin as default, mixin, MixedFunicular, Funicular, IFunicular, EFunicularState, IFunicularClone, IFunicularEventData, IFunicularEventsList, TFunicular };