import { IApiPayload, IApiSuccess, IDataFetcherResponse, IDataTableQuery } from '../../api.models';
import { IUser } from '../../common.models';
import { IRequestRegisterWebAuthn, ISaveNewPasswordOptions, ISshKey, IU2FKey, IUserProfile, IUserProfileResponse, IUserToGroup } from './User.models';

export declare const userApi: {
    /** Load current user profile */
    loadCurrentUser(): Promise<IApiPayload<IUser>>;
    /** Load user */
    loadUser(userId: number): Promise<IApiPayload<IUser>>;
    /** Save user */
    saveUser(userProfile: IUserProfile): Promise<IUserProfileResponse>;
    /** Save user's password */
    saveUserPassword(options: ISaveNewPasswordOptions): Promise<IApiSuccess>;
    /** Get mapping of user to groups */
    userToGroups(tenantId: number): Promise<IApiPayload<IUserToGroup>>;
    /** List SSH Public Keys. ADT request */
    listKeys(query: IDataTableQuery): Promise<IDataFetcherResponse<ISshKey>>;
    /** Save SSH Public Keys */
    saveSshKey(sshKey: string): Promise<IApiSuccess>;
    /** Update SSH Public Keys */
    updateSshKey(sshKeyId: number, sshKey: string): Promise<IApiSuccess>;
    /** Delete SSH Public Keys */
    deleteSshKey(sshKeyId: number): Promise<IApiSuccess>;
    /** List U2F Key. ADT request */
    listU2FKeys(query: IDataTableQuery): Promise<IDataFetcherResponse<IU2FKey>>;
    /** Get U2F registration data */
    requestRegisterWebAuthn(): Promise<IRequestRegisterWebAuthn>;
    /** Save U2F Key */
    saveWebauthn(token: string, regResponse: string): Promise<IApiSuccess>;
    /** Delete U2F Key */
    deleteU2FKey(u2fKeyId: number): Promise<IApiSuccess>;
};
