import { AppInstance, VersionedLayout, VersionedLayoutDefinition, AppTemplate, GuidValue, IIcon, RolePermissionSetting } from "@omnia/fx/models"; import { VersionedLayoutDefinitionEditorItem, VersionedLayoutEditorApi } from "@omnia/fx/ux"; import { ApiPath, IExtendApiManifestWithConfiguration } from "../Extends"; export interface ElementRenderer { id: GuidValue; icon: IIcon; title: string; renderManifestId: GuidValue; order?: number; } interface AppInstanceBladeRouteSettings { routePrefix: string; } interface InactiveTabSettings { active: boolean; syncLastActivityButtonManifestId?: GuidValue; } export type GetTemplateFunctionType = (appTemplate: AppTemplate) => { icon: IIcon; label: string; }; export interface AppInstanceTabSettings { appEditingManifestId: GuidValue; advancedColumns?: { showLastActivity?: boolean; }; activeOrphanedTab?: boolean; activeInactiveTab?: InactiveTabSettings; onPermissionsUpdated?: (rolePermissionSetting: RolePermissionSetting[], appInstance: AppInstance) => Promise; customPermissionRenderManifestId?: GuidValue; attachSiteButtonManifestId?: GuidValue; routeSettings: AppInstanceBladeRouteSettings; } interface ValidationResult { isValid: boolean; message: string; } interface TemplatePoliciesConfiguration { enable: boolean; enableNamingPolicy?: boolean; renderManifestId?: GuidValue; } export interface AppTemplateTabSettings { appendMenuItems?: ElementRenderer[]; policies?: TemplatePoliciesConfiguration; validator?: (template: AppTemplate) => Promise; beforeCreate?: (template: T) => void; } export interface AppLayoutTabSettings { layoutDefinition: new () => T; appInstanceId: GuidValue; onBeforeCreate?: (layout: VersionedLayoutDefinition) => VersionedLayoutDefinition | Promise; enableAlias?: boolean; setAppLayoutDefinitionEditorItem?: (api: VersionedLayoutEditorApi, layout: VersionedLayout) => Promise; enableBlockLockSettings?: boolean; } export interface AppNamingPolicyTabSettings { } export interface IAppManagementInstanceConfigurationApi { addAppInstanceTab: (settings: AppInstanceTabSettings) => IAppManagementInstanceConfigurationApi; addAppTemplateTab: (settings: AppTemplateTabSettings) => IAppManagementInstanceConfigurationApi; addAppLayoutTab: (settings: AppLayoutTabSettings) => IAppManagementInstanceConfigurationApi; addNamingPolicyTab: (settings: AppNamingPolicyTabSettings) => IAppManagementInstanceConfigurationApi; addCustomTab: (items: ElementRenderer | ElementRenderer[]) => IAppManagementInstanceConfigurationApi; setProvisioningCability: (allowProvisioning: boolean) => IAppManagementInstanceConfigurationApi; } export interface IAppManagementInstanceHandler { onConfigure: (api: IAppManagementInstanceConfigurationApi) => Promise; } export interface IAppManagementUsageApi { openStandalone: (appDefinition: GuidValue, closable: boolean) => void; } export interface IAppManagementRegistrationApi { registerHandler: (appDefinitionId: GuidValue, handler: new () => IAppManagementInstanceHandler) => void; } declare module "./UxApi" { interface IOmniaUxApi { appManagement: { use: Promise; registration: Promise; }; } interface IOmniaUxExtendApiManifest { appManagement: { use: ApiPath; registration: IExtendApiManifestWithConfiguration; }; } } export {};