import * as Models from './index';
import { Type, ModuleWithProviders, SchemaMetadata, Component, Provider } from '@angular/core';
export interface ITokenCookie {
    loginName: string;
    token: string;
}
export interface INavSourcesPermissionCookie {
    navSourceUrl: string;
    hasReadPermission: boolean;
}
export interface IOmniaControlDependency {
    id: string;
    scope: string;
    hostId: string;
    viewId: string;
    enableSettings: boolean;
    priority?: number;
    ignoreView?: boolean;
}
export interface IViewPortControl {
    viewPortSettings?: Models.Control.IControlViewPortSettings;
    svc?: any;
    html?: string;
    bootstrapped?: boolean;
}
export interface BootstrapQueue {
    data?: any;
    priority: number;
    bootstrapFunction: (data) => void;
}
export interface ComponentTemplate {
    templateId: string;
    target: any;
}
export interface IOmniaControlTemplate {
    controlId: string;
    ngfactoryModulePath: string;
    templates: Array<{
        id: string;
        title: string;
        component: Type<any>;
    }>;
}
export interface IOmniaControlTemplateExtend extends IOmniaControlTemplate {
    moduleTarget: any;
}
export interface IOmniaControlMetadataExtend extends Models.IOmniaControlMetadata {
    moduleTarget?: any;
    forceBootstrapJit?: boolean;
    isNg1Control?: boolean;
}
export interface OmniaAngular2Bootstrapper {
    bootstrapAngular2HybridApp: (container, modules, configs) => void;
    bootstrapAngular2App: (component) => void;
}
export interface IOmniaAdminControlMetadataExtend extends IOmniaAdminControlMetadata {
    componentTarget?: any;
    moduleTarget?: any;
}
export interface IOmniaAdminControlMetadata extends Component {
    ngsummaryModulePath?: string;
    ngModulePath?: string;
    templateId?: string;
    navigation?: Models.INavigationNode;
    providers?: Provider[];
    declarations?: Array<Type<any> | any[]>;
    imports?: Array<Type<any> | ModuleWithProviders | any[]>;
    schemas?: Array<SchemaMetadata | any[]>;
    exports?: Array<Type<any> | any[]>;
}
export interface IOmniaControlNg1 {
    id: string;
    title: string;
    icon: string;
    group: string;
    viewId: string;
    enableSettings: boolean;
    enableSkeletonLoading: boolean;
    angularModuleName: string;
}
export interface INg1Hanlder {
    getRegisteredControls: () => Array<IOmniaControlNg1>;
    bootstrapAngularNg1: (elementId, moduleName) => void;
    destroyAngularNg1: (elementId) => void;
    bootstrapControlNg1: (containerId: string, container: JQuery, svc: any) => void;
}
