import { IUserPool } from '../user-pool';
/**
 * (experimental) An attribute available from a third party identity provider.
 *
 * @experimental
 */
export declare class ProviderAttribute {
    /**
     * (experimental) The email attribute provided by Apple.
     *
     * @experimental
     */
    static readonly APPLE_EMAIL: ProviderAttribute;
    /**
     * (experimental) The name attribute provided by Apple.
     *
     * @experimental
     */
    static readonly APPLE_NAME: ProviderAttribute;
    /**
     * (experimental) The first name attribute provided by Apple.
     *
     * @experimental
     */
    static readonly APPLE_FIRST_NAME: ProviderAttribute;
    /**
     * (experimental) The last name attribute provided by Apple.
     *
     * @experimental
     */
    static readonly APPLE_LAST_NAME: ProviderAttribute;
    /**
     * (experimental) The user id attribute provided by Amazon.
     *
     * @experimental
     */
    static readonly AMAZON_USER_ID: ProviderAttribute;
    /**
     * (experimental) The email attribute provided by Amazon.
     *
     * @experimental
     */
    static readonly AMAZON_EMAIL: ProviderAttribute;
    /**
     * (experimental) The name attribute provided by Amazon.
     *
     * @experimental
     */
    static readonly AMAZON_NAME: ProviderAttribute;
    /**
     * (experimental) The postal code attribute provided by Amazon.
     *
     * @experimental
     */
    static readonly AMAZON_POSTAL_CODE: ProviderAttribute;
    /**
     * (experimental) The user id attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_ID: ProviderAttribute;
    /**
     * (experimental) The birthday attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_BIRTHDAY: ProviderAttribute;
    /**
     * (experimental) The email attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_EMAIL: ProviderAttribute;
    /**
     * (experimental) The name attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_NAME: ProviderAttribute;
    /**
     * (experimental) The first name attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_FIRST_NAME: ProviderAttribute;
    /**
     * (experimental) The last name attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_LAST_NAME: ProviderAttribute;
    /**
     * (experimental) The middle name attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_MIDDLE_NAME: ProviderAttribute;
    /**
     * (experimental) The gender attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_GENDER: ProviderAttribute;
    /**
     * (experimental) The locale attribute provided by Facebook.
     *
     * @experimental
     */
    static readonly FACEBOOK_LOCALE: ProviderAttribute;
    /**
     * (experimental) The name attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_NAMES: ProviderAttribute;
    /**
     * (experimental) The gender attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_GENDER: ProviderAttribute;
    /**
     * (experimental) The birthday attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_BIRTHDAYS: ProviderAttribute;
    /**
     * (experimental) The phone number attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_PHONE_NUMBERS: ProviderAttribute;
    /**
     * (experimental) The email attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_EMAIL: ProviderAttribute;
    /**
     * (experimental) The name attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_NAME: ProviderAttribute;
    /**
     * (experimental) The picture attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_PICTURE: ProviderAttribute;
    /**
     * (experimental) The given name attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_GIVEN_NAME: ProviderAttribute;
    /**
     * (experimental) The family name attribute provided by Google.
     *
     * @experimental
     */
    static readonly GOOGLE_FAMILY_NAME: ProviderAttribute;
    /**
     * (experimental) Use this to specify an attribute from the identity provider that is not pre-defined in the CDK.
     *
     * @param attributeName the attribute value string as recognized by the provider.
     * @experimental
     */
    static other(attributeName: string): ProviderAttribute;
    /**
     * (experimental) The attribute value string as recognized by the provider.
     *
     * @experimental
     */
    readonly attributeName: string;
    private constructor();
}
/**
 * (experimental) The mapping of user pool attributes to the attributes provided by the identity providers.
 *
 * @experimental
 */
export interface AttributeMapping {
    /**
     * (experimental) The user's postal address is a required attribute.
     *
     * @default - not mapped
     * @experimental
     */
    readonly address?: ProviderAttribute;
    /**
     * (experimental) The user's birthday.
     *
     * @default - not mapped
     * @experimental
     */
    readonly birthdate?: ProviderAttribute;
    /**
     * (experimental) The user's e-mail address.
     *
     * @default - not mapped
     * @experimental
     */
    readonly email?: ProviderAttribute;
    /**
     * (experimental) The surname or last name of user.
     *
     * @default - not mapped
     * @experimental
     */
    readonly familyName?: ProviderAttribute;
    /**
     * (experimental) The user's gender.
     *
     * @default - not mapped
     * @experimental
     */
    readonly gender?: ProviderAttribute;
    /**
     * (experimental) The user's first name or give name.
     *
     * @default - not mapped
     * @experimental
     */
    readonly givenName?: ProviderAttribute;
    /**
     * (experimental) The user's locale.
     *
     * @default - not mapped
     * @experimental
     */
    readonly locale?: ProviderAttribute;
    /**
     * (experimental) The user's middle name.
     *
     * @default - not mapped
     * @experimental
     */
    readonly middleName?: ProviderAttribute;
    /**
     * (experimental) The user's full name in displayable form.
     *
     * @default - not mapped
     * @experimental
     */
    readonly fullname?: ProviderAttribute;
    /**
     * (experimental) The user's nickname or casual name.
     *
     * @default - not mapped
     * @experimental
     */
    readonly nickname?: ProviderAttribute;
    /**
     * (experimental) The user's telephone number.
     *
     * @default - not mapped
     * @experimental
     */
    readonly phoneNumber?: ProviderAttribute;
    /**
     * (experimental) The URL to the user's profile picture.
     *
     * @default - not mapped
     * @experimental
     */
    readonly profilePicture?: ProviderAttribute;
    /**
     * (experimental) The user's preferred username.
     *
     * @default - not mapped
     * @experimental
     */
    readonly preferredUsername?: ProviderAttribute;
    /**
     * (experimental) The URL to the user's profile page.
     *
     * @default - not mapped
     * @experimental
     */
    readonly profilePage?: ProviderAttribute;
    /**
     * (experimental) The user's time zone.
     *
     * @default - not mapped
     * @experimental
     */
    readonly timezone?: ProviderAttribute;
    /**
     * (experimental) Time, the user's information was last updated.
     *
     * @default - not mapped
     * @experimental
     */
    readonly lastUpdateTime?: ProviderAttribute;
    /**
     * (experimental) The URL to the user's web page or blog.
     *
     * @default - not mapped
     * @experimental
     */
    readonly website?: ProviderAttribute;
    /**
     * (experimental) Specify custom attribute mapping here and mapping for any standard attributes not supported yet.
     *
     * @default - no custom attribute mapping
     * @experimental
     */
    readonly custom?: {
        [key: string]: ProviderAttribute;
    };
}
/**
 * (experimental) Properties to create a new instance of UserPoolIdentityProvider.
 *
 * @experimental
 */
export interface UserPoolIdentityProviderProps {
    /**
     * (experimental) The user pool to which this construct provides identities.
     *
     * @experimental
     */
    readonly userPool: IUserPool;
    /**
     * (experimental) Mapping attributes from the identity provider to standard and custom attributes of the user pool.
     *
     * @default - no attribute mapping
     * @experimental
     */
    readonly attributeMapping?: AttributeMapping;
}
