import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import type { CallContext, CallOptions } from "nice-grpc-common";
import type { FileDescriptorProto as FileDescriptorProto1 } from "ts-proto-descriptors";
import { Any } from "../../google/protobuf/any";
import { Attribute } from "./attribute";
import { RoleAssociation, Subject, Tokens } from "./auth";
import { Image } from "./image";
import { Meta } from "./meta";
import { DeleteRequest, DeleteResponse, ReadRequest } from "./resource_base";
import { Role } from "./role";
import { OperationStatus, OperationStatusObj, Status } from "./status";
export declare const protobufPackage = "io.restorecommerce.user";
export declare enum UserType {
    ORG_USER = "ORG_USER",
    INDIVIDUAL_USER = "INDIVIDUAL_USER",
    GUEST = "GUEST",
    TECHNICAL_USER = "TECHNICAL_USER",
    UNRECOGNIZED = "UNRECOGNIZED"
}
export declare function userTypeFromJSON(object: any): UserType;
export declare function userTypeToJSON(object: UserType): string;
export declare function userTypeToNumber(object: UserType): number;
/**
 * Request to verify password and retrieve the user's info.
 * Either name or email can be provided.
 */
export interface LoginRequest {
    /** User name or email */
    identifier?: string | undefined;
    /** Raw password */
    password?: string | undefined;
    token?: string | undefined;
}
export interface ImpersonateRequest {
    /** Username to impersonate */
    identifier?: string | undefined;
    /** Impersonator's subject */
    subject?: Subject | undefined;
    /** Token time to live in seconds */
    tokenTtl?: number | undefined;
}
export interface AccessTokenData {
    accessToken?: string | undefined;
    expiresIn?: Date | undefined;
    tokenType?: string | undefined;
    scope?: string | undefined;
    tokenName?: string | undefined;
}
export interface ImpersonateResponse {
    status?: Status | undefined;
    payload?: AccessTokenData | undefined;
}
export interface EndImpersonationRequest {
    subject?: Subject | undefined;
    options?: Any | undefined;
}
export interface EndImpersonateResponse {
    status?: Status | undefined;
    payload?: AccessTokenData | undefined;
}
export interface LoginResponse {
    payload?: User | undefined;
    status?: Status | undefined;
    totpSessionToken?: string | undefined;
}
export interface SetupTOTPRequest {
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface SetupTOTPResponse {
    totpSecret?: string | undefined;
    operationStatus?: OperationStatus | undefined;
}
export interface CompleteTOTPSetupRequest {
    code?: string | undefined;
    subject?: Subject | undefined;
}
export interface ExchangeTOTPRequest {
    code?: string | undefined;
    subject?: Subject | undefined;
    totpSessionToken?: string | undefined;
}
export interface CreateBackupTOTPCodesRequest {
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface CreateBackupTOTPCodesResponse {
    backupCodes?: string[] | undefined;
    operationStatus?: OperationStatus | undefined;
}
export interface ResetTOTPRequest {
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface MfaStatusRequest {
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface MfaStatusResponse {
    hasTotp?: boolean | undefined;
    hasBackupCodes?: boolean | undefined;
    operationStatus?: OperationStatus | undefined;
}
export interface TenantRequest {
    domain?: string | undefined;
}
export interface TenantResponse {
    token?: string | undefined;
}
export interface OrgIDRequest {
    orgIds?: string[] | undefined;
    subject?: Subject | undefined;
}
export interface DeleteUsersByOrgResponse {
    userIds?: string[] | undefined;
    operationStatus?: OperationStatus | undefined;
}
export interface FindRequest {
    /** User ID */
    id?: string | undefined;
    name?: string | undefined;
    email?: string | undefined;
    subject?: Subject | undefined;
}
export interface FindByTokenRequest {
    token?: string | undefined;
}
export interface RegisterRequest {
    id?: string | undefined;
    guest?: boolean | undefined;
    meta?: Meta | undefined;
    name?: string | undefined;
    firstName?: string | undefined;
    lastName?: string | undefined;
    email?: string | undefined;
    password?: string | undefined;
    timezoneId?: string | undefined;
    localeId?: string | undefined;
    /** default hierarchical scope */
    defaultScope?: string | undefined;
    userType?: UserType | undefined;
    captchaCode?: string | undefined;
    /** data */
    data?: Any | undefined;
}
export interface ActivateRequest {
    /** user name or email */
    identifier?: string | undefined;
    activationCode?: string | undefined;
    subject?: Subject | undefined;
}
export interface ConfirmUserInvitationRequest {
    /** user name or email */
    identifier?: string | undefined;
    password?: string | undefined;
    activationCode?: string | undefined;
    subject?: Subject | undefined;
}
export interface SendInvitationEmailRequest {
    /** user name or email */
    identifier?: string | undefined;
    invitedByUserIdentifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface ChangePasswordRequest {
    password?: string | undefined;
    newPassword?: string | undefined;
    subject?: Subject | undefined;
}
export interface RequestPasswordChangeRequest {
    /** user name or email */
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface ConfirmPasswordChangeRequest {
    /** user name or email */
    identifier?: string | undefined;
    activationCode?: string | undefined;
    password?: string | undefined;
    subject?: Subject | undefined;
}
export interface ChangeEmailRequest {
    /** user name or email */
    identifier?: string | undefined;
    newEmail?: string | undefined;
    subject?: Subject | undefined;
}
export interface ConfirmEmailChangeRequest {
    /** user name or email */
    identifier?: string | undefined;
    activationCode?: string | undefined;
    subject?: Subject | undefined;
}
export interface UnregisterRequest {
    /** User ID */
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
export interface SendActivationEmailRequest {
    /** User name or email */
    identifier?: string | undefined;
    subject?: Subject | undefined;
}
/**
 * User deletion event.
 * Send when a user was deleted or unregistered.
 *
 * Events:
 * usersDeleted,
 * unregistered,
 */
export interface Deleted {
    id?: string | undefined;
}
/**
 * User password changed event.
 *
 * Events:
 * passwordChanged,
 */
export interface PasswordChanged {
    /** User ID */
    id?: string | undefined;
    passwordHash?: string | undefined;
}
export interface PasswordChangeRequested {
    /** User ID */
    id?: string | undefined;
}
/** User email id changed event. */
export interface EmailChangeRequested {
    id?: string | undefined;
    activationCode?: string | undefined;
    newEmail?: string | undefined;
}
export interface EmailChangeConfirmed {
    /** User ID */
    id?: string | undefined;
    email?: string | undefined;
}
/** A list of User. */
export interface UserList {
    items?: User[] | undefined;
    totalCount?: number | undefined;
    subject?: Subject | undefined;
}
export interface UserListWithRoleResponse {
    items?: UserRoleResponse[] | undefined;
    totalCount?: number | undefined;
    operationStatus?: OperationStatus | undefined;
}
export interface UserRoleResponse {
    payload?: UserRole | undefined;
    status?: Status | undefined;
}
export interface UserListResponse {
    items?: UserResponse[] | undefined;
    totalCount?: number | undefined;
    operationStatus?: OperationStatus | undefined;
}
export interface UserResponse {
    payload?: User | undefined;
    status?: Status | undefined;
}
/** User activation request. */
export interface Activate {
    /** User ID */
    id?: string | undefined;
}
export interface FindByRoleRequest {
    role?: string | undefined;
    attributes?: Attribute[] | undefined;
    subject?: Subject | undefined;
}
/** A User resource. */
export interface User {
    /** User ID, unique, key */
    id?: string | undefined;
    meta?: Meta | undefined;
    /** The name of the user, can be used for login */
    name?: string | undefined;
    firstName?: string | undefined;
    lastName?: string | undefined;
    /** Email address, can be used for login */
    email?: string | undefined;
    /** New email address; set by `requestEmailChange` and overrides actual email upon `confirmEmailChange` */
    newEmail?: string | undefined;
    /** If the user was activated via the activation process */
    active?: boolean | undefined;
    /** Activation code used in the activation process */
    activationCode?: string | undefined;
    /** Raw password, not stored */
    password?: string | undefined;
    /** Encrypted password, stored */
    passwordHash?: string | undefined;
    /** A user can have multiple roles and different attributes coupled with each role */
    roleAssociations?: RoleAssociation[] | undefined;
    /** timezone_id specifications */
    timezoneId?: string | undefined;
    /** locale specifications */
    localeId?: string | undefined;
    /** default hierarchical scope */
    defaultScope?: string | undefined;
    /** Is the user a guest. A guest is a automatically generated user which can later be turned in a non-guest user. */
    guest?: boolean | undefined;
    image?: Image | undefined;
    userType?: UserType | undefined;
    /** true if user has been invited by another user */
    invite?: boolean | undefined;
    /** User who is inviting */
    invitedByUserName?: string | undefined;
    /** First name of user inviting */
    invitedByUserFirstName?: string | undefined;
    /** Last name of user inviting */
    invitedByUserLastName?: string | undefined;
    tokens?: Tokens[] | undefined;
    /** When the user has last been used */
    lastAccess?: Date | undefined;
    /** additional properties */
    properties?: Attribute[] | undefined;
    /** additional data */
    data?: Any | undefined;
    /** / TOTP Secret */
    totpSecret?: string | undefined;
    /** / TOTP Secret before being confirmed */
    totpSecretProcessing?: string | undefined;
    /** / TOTP Login session tokens */
    totpSessionTokens?: string[] | undefined;
    /** List of historical password hashes */
    passwordHashHistory?: string[] | undefined;
    /** List of TOTP recovery codes */
    totpRecoveryCodes?: string[] | undefined;
    invitedAt?: Date | undefined;
}
/** A User resource with role */
export interface UserRole {
    /** User ID, unique, key */
    id?: string | undefined;
    meta?: Meta | undefined;
    /** The name of the user, can be used for login */
    name?: string | undefined;
    firstName?: string | undefined;
    lastName?: string | undefined;
    /** Email address, can be used for login */
    email?: string | undefined;
    /** New email address; set by `requestEmailChange` and overrides actual email upon `confirmEmailChange` */
    newEmail?: string | undefined;
    /** If the user was activated via the activation process */
    active?: boolean | undefined;
    /** Activation code used in the activation process */
    activationCode?: string | undefined;
    /** Raw password, not stored */
    password?: string | undefined;
    /** Encrypted password, stored */
    passwordHash?: string | undefined;
    /** A user can have multiple roles and different attributes coupled with each role */
    roleAssociations?: RoleAssociation[] | undefined;
    /** timezone_id specifications */
    timezoneId?: string | undefined;
    /** locale specifications */
    localeId?: string | undefined;
    /** default hierarchical scope */
    defaultScope?: string | undefined;
    /** Is the user a guest. A guest is a automatically generated user which can later be turned in a non-guest user. */
    guest?: boolean | undefined;
    image?: Image | undefined;
    userType?: UserType | undefined;
    /** true if user has been invited by another user */
    invite?: boolean | undefined;
    /** User who is inviting */
    invitedByUserName?: string | undefined;
    /** First name of user inviting */
    invitedByUserFirstName?: string | undefined;
    /** Last name of user inviting */
    invitedByUserLastName?: string | undefined;
    tokens?: Tokens[] | undefined;
    /** When the user has last been used */
    lastAccess?: Date | undefined;
    /** additional properties */
    properties?: Attribute[] | undefined;
    /** additional data */
    data?: Any | undefined;
    roles?: Role[] | undefined;
    invitedAt?: Date | undefined;
}
export declare const LoginRequest: MessageFns<LoginRequest>;
export declare const ImpersonateRequest: MessageFns<ImpersonateRequest>;
export declare const AccessTokenData: MessageFns<AccessTokenData>;
export declare const ImpersonateResponse: MessageFns<ImpersonateResponse>;
export declare const EndImpersonationRequest: MessageFns<EndImpersonationRequest>;
export declare const EndImpersonateResponse: MessageFns<EndImpersonateResponse>;
export declare const LoginResponse: MessageFns<LoginResponse>;
export declare const SetupTOTPRequest: MessageFns<SetupTOTPRequest>;
export declare const SetupTOTPResponse: MessageFns<SetupTOTPResponse>;
export declare const CompleteTOTPSetupRequest: MessageFns<CompleteTOTPSetupRequest>;
export declare const ExchangeTOTPRequest: MessageFns<ExchangeTOTPRequest>;
export declare const CreateBackupTOTPCodesRequest: MessageFns<CreateBackupTOTPCodesRequest>;
export declare const CreateBackupTOTPCodesResponse: MessageFns<CreateBackupTOTPCodesResponse>;
export declare const ResetTOTPRequest: MessageFns<ResetTOTPRequest>;
export declare const MfaStatusRequest: MessageFns<MfaStatusRequest>;
export declare const MfaStatusResponse: MessageFns<MfaStatusResponse>;
export declare const TenantRequest: MessageFns<TenantRequest>;
export declare const TenantResponse: MessageFns<TenantResponse>;
export declare const OrgIDRequest: MessageFns<OrgIDRequest>;
export declare const DeleteUsersByOrgResponse: MessageFns<DeleteUsersByOrgResponse>;
export declare const FindRequest: MessageFns<FindRequest>;
export declare const FindByTokenRequest: MessageFns<FindByTokenRequest>;
export declare const RegisterRequest: MessageFns<RegisterRequest>;
export declare const ActivateRequest: MessageFns<ActivateRequest>;
export declare const ConfirmUserInvitationRequest: MessageFns<ConfirmUserInvitationRequest>;
export declare const SendInvitationEmailRequest: MessageFns<SendInvitationEmailRequest>;
export declare const ChangePasswordRequest: MessageFns<ChangePasswordRequest>;
export declare const RequestPasswordChangeRequest: MessageFns<RequestPasswordChangeRequest>;
export declare const ConfirmPasswordChangeRequest: MessageFns<ConfirmPasswordChangeRequest>;
export declare const ChangeEmailRequest: MessageFns<ChangeEmailRequest>;
export declare const ConfirmEmailChangeRequest: MessageFns<ConfirmEmailChangeRequest>;
export declare const UnregisterRequest: MessageFns<UnregisterRequest>;
export declare const SendActivationEmailRequest: MessageFns<SendActivationEmailRequest>;
export declare const Deleted: MessageFns<Deleted>;
export declare const PasswordChanged: MessageFns<PasswordChanged>;
export declare const PasswordChangeRequested: MessageFns<PasswordChangeRequested>;
export declare const EmailChangeRequested: MessageFns<EmailChangeRequested>;
export declare const EmailChangeConfirmed: MessageFns<EmailChangeConfirmed>;
export declare const UserList: MessageFns<UserList>;
export declare const UserListWithRoleResponse: MessageFns<UserListWithRoleResponse>;
export declare const UserRoleResponse: MessageFns<UserRoleResponse>;
export declare const UserListResponse: MessageFns<UserListResponse>;
export declare const UserResponse: MessageFns<UserResponse>;
export declare const Activate: MessageFns<Activate>;
export declare const FindByRoleRequest: MessageFns<FindByRoleRequest>;
export declare const User: MessageFns<User>;
export declare const UserRole: MessageFns<UserRole>;
/** The microservice for the user resource. */
export type UserServiceDefinition = typeof UserServiceDefinition;
export declare const UserServiceDefinition: {
    readonly name: "UserService";
    readonly fullName: "io.restorecommerce.user.UserService";
    readonly methods: {
        readonly read: {
            readonly name: "Read";
            readonly requestType: typeof ReadRequest;
            readonly requestStream: false;
            readonly responseType: typeof UserListWithRoleResponse;
            readonly responseStream: false;
            readonly options: {
                readonly _unknownFields: {
                    readonly 248008: readonly [Buffer<ArrayBufferLike>];
                };
            };
        };
        readonly create: {
            readonly name: "Create";
            readonly requestType: typeof UserList;
            readonly requestStream: false;
            readonly responseType: typeof UserListResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly delete: {
            readonly name: "Delete";
            readonly requestType: typeof DeleteRequest;
            readonly requestStream: false;
            readonly responseType: typeof DeleteResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly update: {
            readonly name: "Update";
            readonly requestType: typeof UserList;
            readonly requestStream: false;
            readonly responseType: typeof UserListResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly upsert: {
            readonly name: "Upsert";
            readonly requestType: typeof UserList;
            readonly requestStream: false;
            readonly responseType: typeof UserListResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly find: {
            readonly name: "Find";
            readonly requestType: typeof FindRequest;
            readonly requestStream: false;
            readonly responseType: typeof UserListResponse;
            readonly responseStream: false;
            readonly options: {
                readonly _unknownFields: {
                    readonly 248008: readonly [Buffer<ArrayBufferLike>];
                };
            };
        };
        readonly register: {
            readonly name: "Register";
            readonly requestType: typeof RegisterRequest;
            readonly requestStream: false;
            readonly responseType: typeof UserResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly activate: {
            readonly name: "Activate";
            readonly requestType: typeof ActivateRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly changePassword: {
            readonly name: "ChangePassword";
            readonly requestType: typeof ChangePasswordRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly requestPasswordChange: {
            readonly name: "RequestPasswordChange";
            readonly requestType: typeof RequestPasswordChangeRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly requestEmailChange: {
            readonly name: "RequestEmailChange";
            readonly requestType: typeof ChangeEmailRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly confirmPasswordChange: {
            readonly name: "ConfirmPasswordChange";
            readonly requestType: typeof ConfirmPasswordChangeRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly confirmEmailChange: {
            readonly name: "ConfirmEmailChange";
            readonly requestType: typeof ConfirmEmailChangeRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly unregister: {
            readonly name: "Unregister";
            readonly requestType: typeof UnregisterRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly login: {
            readonly name: "Login";
            readonly requestType: typeof LoginRequest;
            readonly requestStream: false;
            readonly responseType: typeof LoginResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly findByRole: {
            readonly name: "FindByRole";
            readonly requestType: typeof FindByRoleRequest;
            readonly requestStream: false;
            readonly responseType: typeof UserListResponse;
            readonly responseStream: false;
            readonly options: {
                readonly _unknownFields: {
                    readonly 248008: readonly [Buffer<ArrayBufferLike>];
                };
            };
        };
        readonly deleteUsersByOrg: {
            readonly name: "DeleteUsersByOrg";
            readonly requestType: typeof OrgIDRequest;
            readonly requestStream: false;
            readonly responseType: typeof DeleteUsersByOrgResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly confirmUserInvitation: {
            readonly name: "ConfirmUserInvitation";
            readonly requestType: typeof ConfirmUserInvitationRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly sendInvitationEmail: {
            readonly name: "SendInvitationEmail";
            readonly requestType: typeof SendInvitationEmailRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly findByToken: {
            readonly name: "FindByToken";
            readonly requestType: typeof FindByTokenRequest;
            readonly requestStream: false;
            readonly responseType: typeof UserResponse;
            readonly responseStream: false;
            readonly options: {
                readonly _unknownFields: {
                    readonly 248008: readonly [Buffer<ArrayBufferLike>];
                };
            };
        };
        readonly sendActivationEmail: {
            readonly name: "SendActivationEmail";
            readonly requestType: typeof SendActivationEmailRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly setupTOTP: {
            readonly name: "SetupTOTP";
            readonly requestType: typeof SetupTOTPRequest;
            readonly requestStream: false;
            readonly responseType: typeof SetupTOTPResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly completeTOTPSetup: {
            readonly name: "CompleteTOTPSetup";
            readonly requestType: typeof CompleteTOTPSetupRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly exchangeTOTP: {
            readonly name: "ExchangeTOTP";
            readonly requestType: typeof ExchangeTOTPRequest;
            readonly requestStream: false;
            readonly responseType: typeof UserResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly createBackupTOTPCodes: {
            readonly name: "CreateBackupTOTPCodes";
            readonly requestType: typeof CreateBackupTOTPCodesRequest;
            readonly requestStream: false;
            readonly responseType: typeof CreateBackupTOTPCodesResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly resetTOTP: {
            readonly name: "ResetTOTP";
            readonly requestType: typeof ResetTOTPRequest;
            readonly requestStream: false;
            readonly responseType: typeof OperationStatusObj;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly mfaStatus: {
            readonly name: "MfaStatus";
            readonly requestType: typeof MfaStatusRequest;
            readonly requestStream: false;
            readonly responseType: typeof MfaStatusResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly getUnauthenticatedSubjectTokenForTenant: {
            readonly name: "GetUnauthenticatedSubjectTokenForTenant";
            readonly requestType: typeof TenantRequest;
            readonly requestStream: false;
            readonly responseType: typeof TenantResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly impersonate: {
            readonly name: "Impersonate";
            readonly requestType: typeof ImpersonateRequest;
            readonly requestStream: false;
            readonly responseType: typeof ImpersonateResponse;
            readonly responseStream: false;
            readonly options: {};
        };
        readonly endImpersonation: {
            readonly name: "EndImpersonation";
            readonly requestType: typeof EndImpersonationRequest;
            readonly requestStream: false;
            readonly responseType: typeof EndImpersonateResponse;
            readonly responseStream: false;
            readonly options: {};
        };
    };
};
export interface UserServiceImplementation<CallContextExt = {}> {
    read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserListWithRoleResponse>>;
    create(request: UserList, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;
    delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;
    update(request: UserList, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;
    upsert(request: UserList, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;
    find(request: FindRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;
    register(request: RegisterRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserResponse>>;
    activate(request: ActivateRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    changePassword(request: ChangePasswordRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    requestPasswordChange(request: RequestPasswordChangeRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    requestEmailChange(request: ChangeEmailRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    confirmPasswordChange(request: ConfirmPasswordChangeRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    confirmEmailChange(request: ConfirmEmailChangeRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    unregister(request: UnregisterRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    login(request: LoginRequest, context: CallContext & CallContextExt): Promise<DeepPartial<LoginResponse>>;
    findByRole(request: FindByRoleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;
    deleteUsersByOrg(request: OrgIDRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteUsersByOrgResponse>>;
    confirmUserInvitation(request: ConfirmUserInvitationRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    sendInvitationEmail(request: SendInvitationEmailRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    findByToken(request: FindByTokenRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserResponse>>;
    sendActivationEmail(request: SendActivationEmailRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    setupTOTP(request: SetupTOTPRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SetupTOTPResponse>>;
    completeTOTPSetup(request: CompleteTOTPSetupRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    exchangeTOTP(request: ExchangeTOTPRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserResponse>>;
    createBackupTOTPCodes(request: CreateBackupTOTPCodesRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CreateBackupTOTPCodesResponse>>;
    resetTOTP(request: ResetTOTPRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;
    mfaStatus(request: MfaStatusRequest, context: CallContext & CallContextExt): Promise<DeepPartial<MfaStatusResponse>>;
    getUnauthenticatedSubjectTokenForTenant(request: TenantRequest, context: CallContext & CallContextExt): Promise<DeepPartial<TenantResponse>>;
    impersonate(request: ImpersonateRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ImpersonateResponse>>;
    endImpersonation(request: EndImpersonationRequest, context: CallContext & CallContextExt): Promise<DeepPartial<EndImpersonateResponse>>;
}
export interface UserServiceClient<CallOptionsExt = {}> {
    read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<UserListWithRoleResponse>;
    create(request: DeepPartial<UserList>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;
    delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;
    update(request: DeepPartial<UserList>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;
    upsert(request: DeepPartial<UserList>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;
    find(request: DeepPartial<FindRequest>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;
    register(request: DeepPartial<RegisterRequest>, options?: CallOptions & CallOptionsExt): Promise<UserResponse>;
    activate(request: DeepPartial<ActivateRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    changePassword(request: DeepPartial<ChangePasswordRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    requestPasswordChange(request: DeepPartial<RequestPasswordChangeRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    requestEmailChange(request: DeepPartial<ChangeEmailRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    confirmPasswordChange(request: DeepPartial<ConfirmPasswordChangeRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    confirmEmailChange(request: DeepPartial<ConfirmEmailChangeRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    unregister(request: DeepPartial<UnregisterRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    login(request: DeepPartial<LoginRequest>, options?: CallOptions & CallOptionsExt): Promise<LoginResponse>;
    findByRole(request: DeepPartial<FindByRoleRequest>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;
    deleteUsersByOrg(request: DeepPartial<OrgIDRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteUsersByOrgResponse>;
    confirmUserInvitation(request: DeepPartial<ConfirmUserInvitationRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    sendInvitationEmail(request: DeepPartial<SendInvitationEmailRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    findByToken(request: DeepPartial<FindByTokenRequest>, options?: CallOptions & CallOptionsExt): Promise<UserResponse>;
    sendActivationEmail(request: DeepPartial<SendActivationEmailRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    setupTOTP(request: DeepPartial<SetupTOTPRequest>, options?: CallOptions & CallOptionsExt): Promise<SetupTOTPResponse>;
    completeTOTPSetup(request: DeepPartial<CompleteTOTPSetupRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    exchangeTOTP(request: DeepPartial<ExchangeTOTPRequest>, options?: CallOptions & CallOptionsExt): Promise<UserResponse>;
    createBackupTOTPCodes(request: DeepPartial<CreateBackupTOTPCodesRequest>, options?: CallOptions & CallOptionsExt): Promise<CreateBackupTOTPCodesResponse>;
    resetTOTP(request: DeepPartial<ResetTOTPRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;
    mfaStatus(request: DeepPartial<MfaStatusRequest>, options?: CallOptions & CallOptionsExt): Promise<MfaStatusResponse>;
    getUnauthenticatedSubjectTokenForTenant(request: DeepPartial<TenantRequest>, options?: CallOptions & CallOptionsExt): Promise<TenantResponse>;
    impersonate(request: DeepPartial<ImpersonateRequest>, options?: CallOptions & CallOptionsExt): Promise<ImpersonateResponse>;
    endImpersonation(request: DeepPartial<EndImpersonationRequest>, options?: CallOptions & CallOptionsExt): Promise<EndImpersonateResponse>;
}
type ProtoMetaMessageOptions = {
    options?: {
        [key: string]: any;
    };
    fields?: {
        [key: string]: {
            [key: string]: any;
        };
    };
    oneof?: {
        [key: string]: {
            [key: string]: any;
        };
    };
    nested?: {
        [key: string]: ProtoMetaMessageOptions;
    };
};
export interface ProtoMetadata {
    fileDescriptor: FileDescriptorProto1;
    references: {
        [key: string]: any;
    };
    dependencies?: ProtoMetadata[];
    options?: {
        options?: {
            [key: string]: any;
        };
        services?: {
            [key: string]: {
                options?: {
                    [key: string]: any;
                };
                methods?: {
                    [key: string]: {
                        [key: string]: any;
                    };
                };
            };
        };
        messages?: {
            [key: string]: ProtoMetaMessageOptions;
        };
        enums?: {
            [key: string]: {
                options?: {
                    [key: string]: any;
                };
                values?: {
                    [key: string]: {
                        [key: string]: any;
                    };
                };
            };
        };
    };
}
export declare const protoMetadata: ProtoMetadata;
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
export interface MessageFns<T> {
    encode(message: T, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): T;
    fromJSON(object: any): T;
    toJSON(message: T): unknown;
    create(base?: DeepPartial<T>): T;
    fromPartial(object: DeepPartial<T>): T;
}
export {};
//# sourceMappingURL=user.d.ts.map