import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { PropertyValueBinding } from "../properties";
import { BusinessProfileProperty } from "../BusinessProfile";
import { BoolFilter } from "../Enums";
import { Identity } from "./Identity";
import { UserAuthenticationInformation } from "./UserIdentity";
import { MultilingualString } from "../MultilingualString";
import { IExtendedEnterprisepropertiesPropertyDefinitionSettings } from "../enterprise-properties";
import { ScopeTypes } from "./ScopeTypes";
export interface ResolvedIdentityCreationRequestSettings {
    userRequestFormDisplaySettings: Array<UserRequestFormDisplaySetting>;
    captchaEnabled: boolean;
    captchaSiteKey: string;
}
export interface UserRequestFormDisplaySetting {
    userTypeId: GuidValue;
    userTypeDisplayName: MultilingualString;
    propertyBindings: Array<PropertyBindingDisplay>;
    magicLinkExpiration: number;
}
export declare enum ConfirmEmailStatus {
    Incomplete = 0,
    Expired = 1,
    Complete = 2
}
export declare class IdentityCreationRequestBase {
    id: GuidValue;
    userTypeId: GuidValue;
    propertyValues: Array<PropertyValueBinding<any>>;
    isEmailConfirmed: boolean;
    approvalState: ApprovalState;
    comment: string;
    authenticationInformation: UserAuthenticationInformation;
}
export declare class IdentityCreationRequest extends IdentityCreationRequestBase {
    scope: string;
    scopeType: ScopeTypes;
    authenticationInformation: UserAuthenticationInformation;
    captchaResponse: string;
    redirectUrl: string;
}
export interface IdentityCreationRequestCreatedResponse extends IdentityCreationRequest {
    magicLinkPublicKey: string;
}
export interface IdentityCreationRequestUpdate {
    id: GuidValue;
    userTypeId: GuidValue;
    propertyValues: Array<PropertyValueBinding<any>>;
    isEmailConfirmed: boolean;
    authenticationInformation: UserAuthenticationInformation;
}
export interface IdentityEmailConfirmationRequest {
    id: GuidValue;
    magicLinkPublicKey: string;
    redirectUrl: string;
}
export declare enum ApprovalState {
    Pending = 0,
    Rejected = 1,
    Approved = 2
}
export interface IdentityCreationRequestConfirmEmailResult {
    result: ConfirmEmailStatus;
}
export declare class IdentityCreationRequestSettings {
    enabled: boolean;
    requireApproval: boolean;
    notifiedIdentities: Array<Identity>;
    userRequestFormSettings: Array<UserRequestFormSetting>;
}
export declare class PropertyBindingDisplay {
    propertyDefinitionSetting: IExtendedEnterprisepropertiesPropertyDefinitionSettings;
    propertyBindingSetting: PropertyBindingSetting;
}
export declare class UserRequestFormSetting {
    userTypeId: GuidValue;
    propertyBindings: Array<PropertyBindingSetting>;
}
export declare class PropertyBindingSetting {
    propertyBindingId: GuidValue;
}
export declare class IdentityPropertyBindingSetting extends PropertyBindingSetting {
    allowMultipleValues: boolean;
    lookupValues: Array<IdentityLookupValue>;
}
export interface IdentityLookupValue {
    identity: Identity;
    title: string;
}
export declare class IdentityCreationRequestQuery {
    scope: string;
    scopeType: ScopeTypes;
    isEmailConfirmed: BoolFilter;
    approvalState: ApprovalState;
    constructor(scope: string, scopeType: ScopeTypes, isEmailConfirmed: BoolFilter, approvalState: ApprovalState);
}
export interface IdentityCreationRequestQueryResult {
    results: Array<IdentityCreationRequest>;
}
export interface IdentityCreationRequestApproval {
    result: ApprovalState;
    identityCreationRequestId: GuidValue;
    comment: string;
    sendApprovalResultEmail: boolean;
}
export declare class BusinessProfileIdentityCreationRequestSettings extends BusinessProfileProperty {
    static UniqueName: string;
    omniaServiceId: GuidValue;
    uniqueModelName: string;
    settings: IdentityCreationRequestSettings;
    constructor();
}
