import { UserInfo, UserEditableProfile, UserProfileSettings } from '@sheetbase/models';
import { ApiService } from '../api/api.service';
export declare class User {
    private Api;
    idToken: string;
    refreshToken: string;
    uid: string;
    providerId: string;
    email: string;
    emailVerified: boolean;
    createdAt: string;
    lastLogin: string;
    username: string;
    phoneNumber: string;
    displayName: string;
    photoURL: string;
    bio: string;
    url: string;
    address: string;
    additionalData: {
        [key: string]: any;
    };
    claims: {
        [claim: string]: any;
    };
    settings: UserProfileSettings;
    isAnonymous: boolean;
    isNewUser: boolean;
    constructor(Api: ApiService, info: UserInfo, idToken: string, refreshToken: string);
    private setInfo;
    toJSON(): {
        uid: string;
        providerId: string;
        email: string;
        emailVerified: boolean;
        createdAt: string;
        lastLogin: string;
        username: string;
        phoneNumber: string;
        displayName: string;
        photoURL: string;
        bio: string;
        url: string;
        address: string;
        additionalData: {
            [key: string]: any;
        };
        claims: {
            [claim: string]: any;
        };
        settings: UserProfileSettings;
        isAnonymous: boolean;
        isNewUser: boolean;
    };
    getIdToken(forceRefresh?: boolean): Promise<string>;
    getIdTokenResult(forceRefresh?: boolean): Promise<any>;
    sendEmailVerification(): Promise<any>;
    updateProfile(profile: UserEditableProfile): Promise<UserInfo>;
    setAdditionalData(data: {
        [key: string]: any;
    }): Promise<UserInfo>;
    setSettings(data: {
        [key: string]: any;
    }): Promise<UserInfo>;
    setProfilePublicly(props: string | string[]): Promise<UserInfo>;
    setProfilePrivately(props: string | string[]): Promise<UserInfo>;
    setUsername(username: string): Promise<UserInfo>;
    changePassword(currentPassword: string, newPassword: string): Promise<any>;
    logout(): Promise<any>;
    delete(): Promise<any>;
}
