import type { ClerkPaginationRequest, OAuthProvider } from '@clerk/types';
import type { OauthAccessToken, OrganizationMembership, User } from '../resources';
import type { PaginatedResourceResponse } from '../resources/Deserializer';
import { AbstractAPI } from './AbstractApi';
import type { WithSign } from './util-types';
type UserCountParams = {
    emailAddress?: string[];
    phoneNumber?: string[];
    username?: string[];
    web3Wallet?: string[];
    query?: string;
    userId?: string[];
    externalId?: string[];
};
type UserListParams = ClerkPaginationRequest<UserCountParams & {
    orderBy?: WithSign<'created_at' | 'updated_at' | 'email_address' | 'web3wallet' | 'first_name' | 'last_name' | 'phone_number' | 'username' | 'last_active_at' | 'last_sign_in_at'>;
    last_active_at_since?: number;
    organizationId?: string[];
}>;
type UserMetadataParams = {
    publicMetadata?: UserPublicMetadata;
    privateMetadata?: UserPrivateMetadata;
    unsafeMetadata?: UserUnsafeMetadata;
};
type PasswordHasher = 'argon2i' | 'argon2id' | 'awscognito' | 'bcrypt' | 'bcrypt_sha256_django' | 'md5' | 'pbkdf2_sha256' | 'pbkdf2_sha256_django' | 'pbkdf2_sha1' | 'phpass' | 'scrypt_firebase' | 'scrypt_werkzeug' | 'sha256';
type UserPasswordHashingParams = {
    passwordDigest: string;
    passwordHasher: PasswordHasher;
};
type CreateUserParams = {
    externalId?: string;
    emailAddress?: string[];
    phoneNumber?: string[];
    username?: string;
    password?: string;
    firstName?: string;
    lastName?: string;
    skipPasswordChecks?: boolean;
    skipPasswordRequirement?: boolean;
    totpSecret?: string;
    backupCodes?: string[];
    createdAt?: Date;
} & UserMetadataParams & (UserPasswordHashingParams | object);
type UpdateUserParams = {
    firstName?: string;
    lastName?: string;
    username?: string;
    password?: string;
    skipPasswordChecks?: boolean;
    signOutOfOtherSessions?: boolean;
    primaryEmailAddressID?: string;
    primaryPhoneNumberID?: string;
    primaryWeb3WalletID?: string;
    profileImageID?: string;
    totpSecret?: string;
    backupCodes?: string[];
    externalId?: string;
    createdAt?: Date;
    deleteSelfEnabled?: boolean;
    createOrganizationEnabled?: boolean;
    createOrganizationsLimit?: number;
} & UserMetadataParams & (UserPasswordHashingParams | object);
type GetOrganizationMembershipListParams = ClerkPaginationRequest<{
    userId: string;
}>;
type VerifyPasswordParams = {
    userId: string;
    password: string;
};
type VerifyTOTPParams = {
    userId: string;
    code: string;
};
export declare class UserAPI extends AbstractAPI {
    getUserList(params?: UserListParams): Promise<PaginatedResourceResponse<User[]>>;
    getUser(userId: string): Promise<User>;
    createUser(params: CreateUserParams): Promise<User>;
    updateUser(userId: string, params?: UpdateUserParams): Promise<User>;
    updateUserProfileImage(userId: string, params: {
        file: Blob | File;
    }): Promise<User>;
    updateUserMetadata(userId: string, params: UserMetadataParams): Promise<User>;
    deleteUser(userId: string): Promise<User>;
    getCount(params?: UserCountParams): Promise<number>;
    getUserOauthAccessToken(userId: string, provider: `oauth_${OAuthProvider}`): Promise<PaginatedResourceResponse<OauthAccessToken[]>>;
    disableUserMFA(userId: string): Promise<User>;
    getOrganizationMembershipList(params: GetOrganizationMembershipListParams): Promise<PaginatedResourceResponse<OrganizationMembership[]>>;
    verifyPassword(params: VerifyPasswordParams): Promise<{
        verified: true;
    }>;
    verifyTOTP(params: VerifyTOTPParams): Promise<{
        verified: true;
        code_type: 'totp';
    }>;
    banUser(userId: string): Promise<User>;
    unbanUser(userId: string): Promise<User>;
    lockUser(userId: string): Promise<User>;
    unlockUser(userId: string): Promise<User>;
    deleteUserProfileImage(userId: string): Promise<User>;
}
export {};
//# sourceMappingURL=UserApi.d.ts.map