import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { EmailPropertyDefinition, ImagePropertyDefinition, PropertyValueBinding, TextPropertyDefinition } from "../properties";
import { IResolvedIdentity, Identity } from "./Identity";
import { IdentityTypes } from "./IdentityTypes";
import { ScopeTypes } from "./ScopeTypes";
import { UserIdentity } from "./UserIdentity";
export declare class GroupIdentity extends Identity {
    type: IdentityTypes;
}
export declare class ResolvedGroupIdentity extends GroupIdentity implements IResolvedIdentity {
    groupTypeId: GuidValue;
    providerId: GuidValue;
    propertyValues: PropertyValueBinding<any>[];
    displayName: PropertyValueBinding<TextPropertyDefinition>;
    email: PropertyValueBinding<EmailPropertyDefinition>;
    image: PropertyValueBinding<TextPropertyDefinition>;
    description: PropertyValueBinding<TextPropertyDefinition>;
    scope: string;
    scopeType: ScopeTypes;
    isRemoved: boolean;
    groupOwnerIds: Identity[];
    static getDisplayName(group: ResolvedGroupIdentity, deletedGroupText: string): string;
}
export declare enum GroupSortColumn {
    DisplayName = 1,
    Description = 2,
    ProviderId = 3,
    GroupTypeId = 4
}
export interface GroupIdentityAddOrUpdateRequest {
    id: GuidValue;
    providerId: GuidValue;
    displayName: PropertyValueBinding<TextPropertyDefinition>;
    description: PropertyValueBinding<TextPropertyDefinition>;
    email: PropertyValueBinding<EmailPropertyDefinition>;
    icon: PropertyValueBinding<ImagePropertyDefinition>;
    propertyValues: Array<PropertyValueBinding<any>>;
    scope: string;
    scopeType: ScopeTypes;
    groupOwnerIds: Identity[];
}
export interface GroupMembershipUpdateRequest {
    group: GroupIdentity;
    users: UserIdentity[];
    groups: GroupIdentity[];
}
export interface GroupIdentityAddOrUpdateWithMembershipRequest {
    groupInformation: GroupIdentityAddOrUpdateRequest;
    membership: GroupMembershipUpdateRequest;
}
export interface GroupIdentityAddOrUpdateWithMembershipResponse {
    group: ResolvedGroupIdentity;
    membership: Identity[];
}
