import { IRouter } from "ajsfw/routing";
import { INavigator } from "ajsfw/navigation";
import { IDocumentManager } from "ajsfw/doc";
import { ITemplateManager } from "ajsfw/templating";
import { IVisualComponent } from "ajsfw/templating";
import { IViewManager } from "../View/IViewManager";
import { IViewComponentManager } from "./IViewComponentManager";
import { IViewComponentState } from "./IVIewComponentState";
import { IParentViewComponent } from "./IParentViewComponent";
import { IStateChangeInfo } from "./IStateChangeInfo";
import { ITransitionBeginHandler } from "./ITransitionBeginHandler";
import { IAttributeProcessorCollection } from "./IAttributeProcessorCollection";
import { IViewComponent } from "./IViewComponent";
export interface IViewComponentProperties<State extends IViewComponentState, ParentViewComponent extends IParentViewComponent> {
    router: IRouter;
    navigator: INavigator;
    documentManager: IDocumentManager;
    templateManager: ITemplateManager;
    viewManager: IViewManager;
    viewComponentManager: IViewComponentManager;
    id: string;
    stylesheetsApplied: boolean;
    initialized: boolean;
    parentComponent: ParentViewComponent;
    visualComponent: IVisualComponent;
    templateElement: HTMLElement;
    stateChangePrevented: boolean;
    stateKeys: string[];
    stateQueue: IStateChangeInfo[];
    processingStateQueue: boolean;
    stateChanged: boolean;
    hasVisualStateTransition: boolean;
    visualStateTransitionRunning: boolean;
    transitionOldElement: Element;
    transitionNewElement: Element;
    visualStateTransitionBeginHandler: ITransitionBeginHandler;
    attributeProcessors: IAttributeProcessorCollection;
    key: string;
    stateToApply: any;
    parentComponentInitStateNotify: IViewComponent;
}
