import { AppInstanceTabSettings, VersionedLayoutDefinition, AppLayoutTabSettings, AppNamingPolicyTabSettings, AppTemplateTabSettings, ElementRenderer, GuidValue, IAppManagementInstanceConfigurationApi, IAppManagementInstanceHandler, IAppManagementUsageApi } from "@omnia/fx-models";
import { OmniaUxLocalization } from "@omnia/fx/ux";
import { Ref } from "vue";
import { AppManagementLocalization } from "../core";
export interface IAppManagementInstanceApi extends IAppManagementInstanceConfigurationApi {
    readonly appDefinitionId: GuidValue;
    readonly appInstanceTabSettings: AppInstanceTabSettings;
    readonly appTemplateTabSettings: AppTemplateTabSettings;
    readonly appLayoutTabSettings: AppLayoutTabSettings;
    readonly appNamingPolicyTabSettings: AppNamingPolicyTabSettings;
    readonly tabs: ElementRenderer[];
    readonly headerVisibility: Ref<boolean>;
    readonly uxColCols: number;
    readonly events: {
        onLayoutEditorOpened: (cb: () => void) => void;
        onLayoutEditorClosed: (cb: () => void) => void;
    };
}
export interface IInternalAppManagementUsageApi extends IAppManagementUsageApi {
    getHandler: (appDefinitionId: GuidValue) => Promise<new () => IAppManagementInstanceHandler>;
}
export declare class AppManagementInstanceApi implements IAppManagementInstanceApi, IAppManagementInstanceConfigurationApi {
    readonly instanceId: GuidValue;
    appDefinitionId: GuidValue;
    appInstanceTabSettings: AppInstanceTabSettings;
    appTemplateTabSettings: AppTemplateTabSettings;
    appLayoutTabSettings: AppLayoutTabSettings;
    appNamingPolicyTabSettings: AppNamingPolicyTabSettings;
    tabs: ElementRenderer[];
    headerVisibility: Ref<boolean>;
    uxColColsRef: Ref<number>;
    allowProvisioning: Ref<boolean>;
    get uxColCols(): number;
    get canProvision(): boolean;
    omniaLoc: OmniaUxLocalization;
    loc: AppManagementLocalization.ILocalize;
    onLayoutEditorOpenedHook: () => void;
    onLayoutEditorClosedHook: () => void;
    constructor(appDefinitionId: GuidValue);
    setProvisioningCability: (allowProvisioning: boolean) => this;
    addAppInstanceTab: (settings: AppInstanceTabSettings) => this;
    addAppTemplateTab: (settings: AppTemplateTabSettings) => this;
    addAppLayoutTab: (settings: AppLayoutTabSettings<VersionedLayoutDefinition>) => this;
    addNamingPolicyTab: (settings: AppNamingPolicyTabSettings) => this;
    addCustomTab: (elementRenderer: ElementRenderer) => this;
    getAppInstanceTabSettings: () => AppInstanceTabSettings;
    getAppTemplateTabSettings: () => AppTemplateTabSettings;
    getAppLayoutTabSettings: () => AppLayoutTabSettings<VersionedLayoutDefinition>;
    getNamingPolicyTabSettings: () => AppNamingPolicyTabSettings;
    getTabs: () => ElementRenderer[];
    sortTabs: () => void;
    events: {
        onLayoutEditorOpened: (cb: () => void) => void;
        onLayoutEditorClosed: (cb: () => void) => void;
    };
    render: () => import("vue").VNode;
    dispose: () => void;
}
