import { Resource, SelfdecodePartners } from "../../common";
import { APIUserRequest, APIUserResponse, SavedStoreUser } from "./interfaces";
export declare class User extends Resource {
    /**
     * The user's email.
     */
    email?: string | undefined;
    /**
     * The user's full name.
     */
    fullName?: string | undefined;
    /**
     * The user's full name.
     */
    phoneNumber?: string | undefined;
    /**
     * If the user was created after the v2 release.
     */
    isV2?: boolean | undefined;
    /**
     * If the user viewed the v2 update notification.
     */
    v2Notification?: boolean | undefined;
    /**
     * Date when the user was created in the account service.
     */
    dateJoined?: string | undefined;
    /**
     * The user's provider.
     * Default: selfdecode
     */
    provider: SelfdecodePartners;
    /**
     * The user's password.
     */
    password?: string | undefined;
    /**
     * The user's new password.
     */
    newPassword?: string | undefined;
    constructor(
    /**
     * The user's email.
     */
    email?: string | undefined, 
    /**
     * The user's full name.
     */
    fullName?: string | undefined, 
    /**
     * The user's full name.
     */
    phoneNumber?: string | undefined, 
    /**
     * If the user was created after the v2 release.
     */
    isV2?: boolean | undefined, 
    /**
     * If the user viewed the v2 update notification.
     */
    v2Notification?: boolean | undefined, 
    /**
     * Date when the user was created in the account service.
     */
    dateJoined?: string | undefined, 
    /**
     * The user's provider.
     * Default: selfdecode
     */
    provider?: SelfdecodePartners, 
    /**
     * The user's password.
     */
    password?: string | undefined, 
    /**
     * The user's new password.
     */
    newPassword?: string | undefined);
    /**
     * The name of the User resource on the API server.
     */
    static get resourceName(): string;
    /**
     * The name of the service containing the user resource.
     */
    static get serviceName(): string;
    /**
     * Convert the user into a JSON serializable object for the API server.
     */
    serializeAPI(): APIUserRequest;
    /**
     * Deserialize the data from the API server.
     *
     * @param data The user data from the API server.
     */
    deserializeAPI(data: APIUserResponse): void;
    /**
     * Serialize the user into a format for storing in the Redux store.
     */
    serializeRedux(): SavedStoreUser;
    /**
     * Create a user from the API server data.
     *
     * @param data Data from the api server.
     *
     * @returns The user object.
     */
    static apiFactory(data: APIUserResponse): User;
    /**
     * Create a user from the Redux store data.
     *
     * @param data Data from the api server.
     *
     * @returns The user object.
     */
    static reduxFactory(data: SavedStoreUser): User;
    /**
     * Verify the user credentials
     */
    verifyCredentials(): Promise<boolean>;
}
