import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { GroupIdentity } from "./identities";
/**
 * Used for filtering etc
 * */
export declare class TargetingPropertyType {
    static groupMembership: number;
    static userProfileProperty: number;
    static azureAdProperty: number;
    static groupIdentity: number;
    static userProperty: number;
}
export interface TargetingPropertyData {
    /**
     * Uses const values and not enum so new types might be defined by others
     * Use type value > 4096 for none built in types
     * For built in type any of TargetingPropertyType
     * */
    type: number;
    title: string;
}
export interface TargetingProperty<T extends TargetingPropertyData> {
    id: GuidValue;
    data: T;
    enterprisePropertyDefinitionId: GuidValue;
}
export interface TargetingPropertyGroupMembershipData extends TargetingPropertyData {
    mappings: {
        [id: string]: Array<string>;
    };
}
export interface TargetingPropertyGroupIdentityData extends TargetingPropertyData {
    taxonomyToGroupMappings: {
        [id: string]: Array<GroupIdentity>;
    };
}
export interface TargetingPropertyUserProfilePropertyData extends TargetingPropertyData {
    property: string;
}
export interface TargetingPropertyAzureAdPropertyData extends TargetingPropertyData {
    property: string;
}
export interface TargetingPropertyUserPropertyData extends TargetingPropertyData {
    propertyBindingId: GuidValue;
}
export interface TargetingValue {
    id: GuidValue;
    parentId: GuidValue;
    parent: TargetingValue;
}
export interface TargetingPropertyQuery {
    enterprisePropertyDefinitionId: GuidValue;
    includeChildTerms: boolean;
    targetingPropertyIds: Array<GuidValue>;
}
export interface TargetingPropertyResult {
    enterprisePropertyDefinitionId: GuidValue;
    internalName: string;
    values: Array<TargetingValue>;
    targetingPropertyValues: {
        [key: string]: Array<TargetingValue>;
    };
    languages: string[];
}
export interface TargetingPropertyFlatResult {
    enterprisePropertyDefinitionId: GuidValue;
    internalName: string;
    values: Array<GuidValue>;
    includeChildTerms: boolean;
    languages: string[];
}
