import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { PropertyConfiguration, PropertyDefinition, PropertyDefinitionId } from "@omnia/fx-models";
import { PropertyIndexedType } from "../Enums";
import { EnterprisePropertiesDisplaySettings, EnterprisePropertySettings } from "./EnterprisePropertySettings";
import { MultilingualString } from "../MultilingualString";
export interface EnterprisePropertyDataType {
    id: GuidValue;
    title: string;
    uiOptions: EnterprisePropertyUIOptions;
    valuePropertyPaths: string[];
    indexedType: PropertyIndexedType;
    omniaSearchable: boolean;
    spSearchable: boolean;
    msSearchable?: boolean;
}
export interface IExtendedEnterprisepropertiesPropertyDefinitionSettings extends PropertyConfiguration<PropertyDefinition<any, any, any>> {
    readonly propertyDefinitionId: PropertyDefinitionId;
}
export interface ExtendedPropertyEnterprisePropertyDefinition extends EnterprisePropertyDefinition {
    settings: IExtendedEnterprisepropertiesPropertyDefinitionSettings;
}
export interface EnterprisePropertyDefinition {
    id: GuidValue;
    internalName: string;
    title: MultilingualString;
    enterprisePropertyDataTypeId: GuidValue;
    settings: EnterprisePropertySettings;
    spSearchable: boolean;
    msSearchable?: boolean;
    builtIn: boolean;
    managedPropertySettings?: ManagedPropertySettings;
    msSearchPropertySettings?: ManagedPropertySettings;
    enterprisePropertyDataType: EnterprisePropertyDataType;
    enterprisePropertyCategoryId?: GuidValue;
    multilingualTitle: string;
    uniqueMultilingualTitle: string;
    deletedAt?: Date;
}
export interface ProvisioningTemplateEnterpriseProperty {
    id: GuidValue;
    internalName: string;
    allowMultipleValues?: boolean;
    required?: boolean;
    hidden?: boolean;
}
export interface ManagedPropertySettings {
    managedProperty: string;
    retrievableManagedProperty?: string;
    refinableManagedProeprty?: string;
    queryableManagedProperty?: string;
    sortableManagedProperty?: string;
    retrievable: boolean;
    refinable: boolean;
    queryable: boolean;
    sortable: boolean;
}
export interface EnterprisePropertyUIOptions {
    settingsElementName?: string;
    editModeElementName: string;
    displayModeElementName?: string;
    valueDefinitionElementName?: string;
}
export interface ExternalPropertySelectionItem {
    internalName: string;
    multilingualTitle: string;
    categoryId?: GuidValue;
}
export interface Property {
    title: string;
    internalName: string;
    value: any;
    displayElement: string;
    contentProperty: EnterprisePropertyDefinition;
    settings: EnterprisePropertiesDisplaySettings;
}
