import { ServiceContainerContext } from "@omnia/fx"; import { AppInstance, AppTemplate, BusinessProfile, Feature, GuidValue } from "@omnia/fx/models"; import { AppDefinition } from "../apps"; import { ApiPath, IExtendApiManifestWithConfiguration } from "../Extends"; export interface IFeatureValidator { } export interface ITenantScopedFeatureValidator extends IFeatureValidator { checkAvailable: (featureDefinition: Feature) => Promise; } export interface IProfileScopedFeatureValidator extends IFeatureValidator { checkAvailable: (featureDefinition: Feature, profile: BusinessProfile) => Promise; } export interface IAppScopedFeatureValidator extends IFeatureValidator { checkAvailable: (featureDefinition: Feature, appDefinition: AppDefinition, appTemplate: AppTemplate, appInstance?: AppInstance) => Promise; } export interface IFeatureManagementUsageApi { loadValidators: (serviceContainerContext: ServiceContainerContext, featureDefinition: Feature) => Promise; } export interface IFeatureManagementRegistrationApi { registerValidator: (appDefinitionId: GuidValue, handler: new () => IFeatureValidator) => void; } declare module "./UxApi" { interface IOmniaUxApi { feature: { use: Promise; registration: Promise; }; } interface IOmniaUxExtendApiManifest { feature: { use: ApiPath; registration: IExtendApiManifestWithConfiguration; }; } }