import { IUser } from '../../common.models';
import { IInviteUserToTenant, IUserToGroupsMapping, IMappingOptions, IDeleteMappingOptions, IDataTableQueryWithTenantId, IDataTableQueryWithUid, IUsersSshKey, IUsersU2FKeys, IUserRequestRegisterWebAuth, IDataTableQueryWithId, IGroupOption } from './Users.models';
import { IApiPayload, IApiSuccess, IDataFetcherResponse, IDataTableQuery } from '../../api.models';
import { IUserProfile, IUserProfileResponse, IUserToGroup } from '../User';

export declare const usersApi: {
    /** Check, if user has login ACL */
    canLogin(): Promise<IApiSuccess>;
    /** List users. ADT request */
    listUsers(query?: IDataTableQueryWithTenantId): Promise<IDataFetcherResponse<IUser>>;
    inviteToTenant(options: {
        login: string;
        groups: IGroupOption[];
    }): Promise<IApiSuccess>;
    /** Load user */
    loadUser(id: number): Promise<IApiPayload<IUser>>;
    /** Save user */
    saveUser(query: IUserProfile): Promise<IUserProfileResponse>;
    /** Delete user */
    deleteUser(userId: number): Promise<IApiSuccess>;
    /** Get mapping of user to groups userToGroups */
    userToGroups(query: IDataTableQueryWithId): Promise<IDataFetcherResponse<IUserToGroup>>;
    /** Generate mapping of user to groups */
    generateMapping(query: IMappingOptions): Promise<IUserToGroupsMapping>;
    /** Remove mapping of user to groups */
    deleteMapping(query: IDeleteMappingOptions): Promise<IApiSuccess>;
    /** List SSH Public Keys. ADT request */
    listKeys(query: IDataTableQueryWithUid): Promise<IDataFetcherResponse<IUsersSshKey>>;
    /** Save SSH Public Keys */
    saveSshKeys(uid: number, key: string): Promise<IApiSuccess>;
    /** Update SSH Public Keys */
    updateSshKeys(id: number, key: string): Promise<IApiSuccess>;
    /** Delete SSH Public Keys */
    deleteSshKeys(id: number, uid: string): Promise<IApiSuccess>;
    /** List U2f Keys. ADT request */
    listU2fKeys(query: IDataTableQueryWithUid): Promise<IDataFetcherResponse<IUsersU2FKeys>>;
    /** Save U2f  Keys */
    saveWebAuthn(token: string, regResponse: string): Promise<IApiSuccess>;
    /** get U2F Registration data */
    requestRegisterWebAuthn(uid: number): Promise<IUserRequestRegisterWebAuth>;
    /** Delete U2F Key */
    deleteU2FKey(id: number, uid: string): Promise<IApiSuccess>;
    /** Resend user invitation */
    resendInvitation(id: number): Promise<IApiSuccess>;
    /** Cancel a pending invite */
    cancelInvite(login: string): Promise<IApiSuccess>;
    /** List invite history. ADT request */
    listInviteHistory(query: IDataTableQuery): Promise<IDataFetcherResponse<IInviteUserToTenant>>;
};
