export declare enum Gender {
    MALE = 0,
    FEMALE = 1,
    OTHER = 2
}
export declare class UserProfile {
    updates: UserProfileUpdate[];
    apply(update: UserProfileUpdate): this;
    applyFromArray(updatesArray: UserProfileUpdate[]): this;
}
export declare class UserProfileUpdate {
    attributeName: string;
    methodName: string;
    key: string | null;
    values: any[];
    constructor(attributeName: string, methodName: string, key: string | null, ...values: any[]);
}
export declare class BirthDateAttribute {
    private attributeName;
    withAge(age: number): UserProfileUpdate;
    withBirthDate(date: Date): UserProfileUpdate;
    withBirthDate(year: number): UserProfileUpdate;
    withBirthDate(year: number, month: number): UserProfileUpdate;
    withBirthDate(year: number, month: number, day: number): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class GenderAttribute {
    private attributeName;
    withValue(value: Gender): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class NameAttribute {
    private attributeName;
    withValue(value: string): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class NotificationsEnabledAttribute {
    private attributeName;
    withValue(value: boolean): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class CustomBooleanAttribute {
    private attributeName;
    key: string;
    constructor(key: string);
    withValue(value: boolean): UserProfileUpdate;
    withValueIfUndefined(value: boolean): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class CustomCounterAttribute {
    private attributeName;
    private key;
    constructor(key: string);
    withDelta(value: number): UserProfileUpdate;
}
export declare class CustomNumberAttribute {
    private attributeName;
    private key;
    constructor(key: string);
    withValue(value: number): UserProfileUpdate;
    withValueIfUndefined(value: number): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class CustomStringAttribute {
    private attributeName;
    private key;
    constructor(key: string);
    withValue(value: string): UserProfileUpdate;
    withValueIfUndefined(value: string): UserProfileUpdate;
    withValueReset(): UserProfileUpdate;
}
export declare class ProfileAttribute {
    static BirthDate(): BirthDateAttribute;
    static Gender(): GenderAttribute;
    static Name(): NameAttribute;
    static NotificationsEnabled(): NotificationsEnabledAttribute;
    static CustomBool(key: string): CustomBooleanAttribute;
    static CustomCounter(key: string): CustomCounterAttribute;
    static CustomNumber(key: string): CustomNumberAttribute;
    static CustomString(key: string): CustomStringAttribute;
}
