import { AxiosResponse } from 'axios';
import { Config } from './config';
import Request from './request';
import { CasdoorMfaProps } from './mfa';
import { Role } from './role';
import { Permission } from './permission';
export interface User {
    owner: string;
    name: string;
    createdTime: string;
    updatedTime?: string;
    deletedTime?: string;
    id?: string;
    externalId?: string;
    type?: string;
    password?: string;
    passwordSalt?: string;
    passwordType?: string;
    displayName?: string;
    firstName?: string;
    lastName?: string;
    avatar?: string;
    avatarType?: string;
    permanentAvatar?: string;
    email?: string;
    emailVerified?: boolean;
    phone?: string;
    countryCode?: string;
    region?: string;
    location?: string;
    address?: string[];
    affiliation?: string;
    title?: string;
    idCardType?: string;
    idCard?: string;
    homepage?: string;
    bio?: string;
    tag?: string;
    language?: string;
    gender?: string;
    birthday?: string;
    education?: string;
    score?: number;
    karma?: number;
    ranking?: number;
    balance?: number;
    currency?: string;
    isDefaultAvatar?: boolean;
    isOnline?: boolean;
    isAdmin?: boolean;
    isForbidden?: boolean;
    isDeleted?: boolean;
    signupApplication?: string;
    hash?: string;
    preHash?: string;
    accessKey?: string;
    accessSecret?: string;
    accessToken?: string;
    createdIp?: string;
    lastSigninTime?: string;
    lastSigninIp?: string;
    github?: string;
    google?: string;
    qq?: string;
    weChat?: string;
    facebook?: string;
    dingTalk?: string;
    weibo?: string;
    gitee?: string;
    linkedIn?: string;
    wecom?: string;
    lark?: string;
    gitlab?: string;
    adfs?: string;
    baidu?: string;
    alipay?: string;
    casdoor?: string;
    infoflow?: string;
    apple?: string;
    azureAD?: string;
    azureADB2c?: string;
    slack?: string;
    steam?: string;
    bilibili?: string;
    okta?: string;
    douyin?: string;
    line?: string;
    amazon?: string;
    auth0?: string;
    battleNet?: string;
    bitbucket?: string;
    box?: string;
    cloudFoundry?: string;
    dailymotion?: string;
    deezer?: string;
    digitalOcean?: string;
    discord?: string;
    dropbox?: string;
    eveOnline?: string;
    fitbit?: string;
    gitea?: string;
    heroku?: string;
    influxCloud?: string;
    instagram?: string;
    intercom?: string;
    kakao?: string;
    lastfm?: string;
    mailru?: string;
    meetup?: string;
    microsoftOnline?: string;
    naver?: string;
    nextcloud?: string;
    oneDrive?: string;
    oura?: string;
    patreon?: string;
    paypal?: string;
    salesForce?: string;
    shopify?: string;
    soundcloud?: string;
    spotify?: string;
    strava?: string;
    stripe?: string;
    tiktok?: string;
    tumblr?: string;
    twitch?: string;
    twitter?: string;
    typetalk?: string;
    uber?: string;
    vk?: string;
    wepay?: string;
    xero?: string;
    yahoo?: string;
    yammer?: string;
    yandex?: string;
    zoom?: string;
    metaMask?: string;
    web3Onboard?: string;
    custom?: string;
    preferredMfaType?: string;
    recoveryCodes?: string[];
    totpSecret?: string;
    mfaPhoneEnabled?: boolean;
    mfaEmailEnabled?: boolean;
    multiFactorAuths?: CasdoorMfaProps[];
    invitation?: string;
    invitationCode?: string;
    faceIds?: FaceId[];
    ldap?: string;
    properties?: Record<string, string>;
    roles?: Role[];
    permissions?: Permission[];
    groups?: string[];
    lastSigninWrongTime?: string;
    signinWrongTimes?: number;
    managedAccounts?: ManagedAccount[];
    mfaAccounts?: MfaAccount[];
    needUpdatePassword?: boolean;
    ipWhitelist?: string;
}
export interface ManagedAccount {
    application?: string;
    username?: string;
    password?: string;
    signinUrl?: string;
}
export interface MfaAccount {
    accountName: string;
    issuer: string;
    secretKey: string;
}
export interface FaceId {
    name: string;
    faceIdData: number[];
}
export interface SetPassword {
    owner: string;
    name: string;
    newPassword?: string;
    oldPassword?: string;
}
export declare class UserSDK {
    private config;
    private readonly request;
    constructor(config: Config, request: Request);
    getAuthToken(code: string): Promise<{
        access_token: string;
        refresh_token: string;
    }>;
    refreshToken(refreshToken: string): Promise<{
        access_token: string;
        refresh_token: string;
    }>;
    parseJwtToken(token: string): User;
    getUsers(): Promise<AxiosResponse<{
        data: User[];
    }, any>>;
    getUser(id: string): Promise<AxiosResponse<{
        data: User;
    }, any>>;
    getUserCount(isOnline: boolean): Promise<AxiosResponse<number, any>>;
    modifyUser(method: string, user: User): Promise<AxiosResponse<Record<string, unknown>, any>>;
    addUser(user: User): Promise<AxiosResponse<Record<string, unknown>, any>>;
    updateUser(user: User): Promise<AxiosResponse<Record<string, unknown>, any>>;
    deleteUser(user: User): Promise<AxiosResponse<Record<string, unknown>, any>>;
    setPassword(data: SetPassword): Promise<AxiosResponse<Record<string, unknown>, any>>;
}
