import { Enums } from '../extensibility';
import { Type } from '@angular/core';
export declare module Control {
    interface IControlConfig {
        id?: string;
        hostId?: string;
        viewId?: string;
        init?: string;
        scope?: string;
        enableSettings?: boolean;
        settingsKey?: string;
        settingsObsoleteKey?: string;
        settings?: any;
    }
    interface IControlScope {
        containerId?: string;
        config?: Control.IControlConfig;
        settingsTemplateId?: string;
        settingsController?: string;
        pageInEditMode?: boolean;
        canEditSettings?: () => boolean;
        onSettingsChangedHandler?: () => void;
        settingComponent?: any;
        settingModule?: any;
    }
    interface IControlWithViewedHistoryScope extends Control.IControlScope {
        hasNewData: boolean;
        controlIsVisible: boolean;
        getItemIds: () => Array<string>;
    }
    interface IControlViewPortSettings {
        type?: Enums.ControlViewPortType;
        viewPort?: number;
    }
}
export interface IOmniaControlMetadata {
    id: string;
    enableSettings?: boolean;
    skeletonTemplate?: string;
    onBootstrapping?: () => void;
    title?: string;
    icon?: string;
    group?: string;
    showInPageDesigner?: boolean;
    showInLayoutDesigner?: boolean;
    insertUsingSelector?: OmniaControlSelectorInsertion | Array<OmniaControlSelectorInsertion>;
    ngfactoryModulePath: string;
    bootstrapComponent: Type<any>;
    useDynamicResource?: {
        resources: Array<string>;
        bootstrapComponentPath: string;
        ngModulePath?: string;
    };
}
export interface OmniaControlSelectorInsertion {
    instanceId: string;
    cssClass?: string;
    insertTo: any;
    scope?: string;
    uiControl?: boolean;
    sequence?: number;
    priority?: number;
    controlContainer?: JQuery;
    delayBootstrap?: () => Promise<void>;
}
