// @generated by protoc-gen-es v2.13.0 with parameter "target=ts,import_extension=js"
// @generated from file soulfire/user.proto (package soulfire.v1, syntax proto3)
/* eslint-disable */

import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
import type { UserRole } from "./common_pb.js";
import { file_soulfire_common } from "./common_pb.js";
import { file_soulfire_api_docs } from "./api_docs_pb.js";
import type { PluginPermissionScope } from "./plugin_api_pb.js";
import { file_soulfire_plugin_api } from "./plugin_api_pb.js";
import { file_google_api_annotations } from "../google/api/annotations_pb.js";
import { file_google_api_field_behavior } from "../google/api/field_behavior_pb.js";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file soulfire/user.proto.
 */
export const file_soulfire_user: GenFile = /*@__PURE__*/
  fileDesc(" ", [file_soulfire_common, file_soulfire_api_docs, file_soulfire_plugin_api, file_google_api_annotations, file_google_api_field_behavior, file_google_protobuf_timestamp]);

/**
 * Request message for creating a new user account in the SoulFire system.
 * The created user will have no password; authentication is done via JWT tokens.
 *
 * @generated from message soulfire.v1.UserCreateRequest
 */
export type UserCreateRequest = Message<"soulfire.v1.UserCreateRequest"> & {
  /**
   * The username for the new user.
   * Must be lowercase, between 3 and 32 characters.
   * Must begin with an alphanumeric character, followed by alphanumeric characters or dashes,
   * and end with an alphanumeric character.
   * Must be unique across all users.
   *
   * @generated from field: string username = 1;
   */
  username: string;

  /**
   * The role to assign to the user. Determines what permissions the user has.
   * ADMIN users have all permissions, while USER role has limited permissions
   * controlled by server settings.
   *
   * @generated from field: soulfire.v1.UserRole role = 2;
   */
  role: UserRole;

  /**
   * The email address for the user.
   * Must be a valid email format and unique across all users.
   * Maximum length is 255 characters.
   *
   * @generated from field: string email = 3;
   */
  email: string;
};

/**
 * Describes the message soulfire.v1.UserCreateRequest.
 * Use `create(UserCreateRequestSchema)` to create a new message.
 */
export const UserCreateRequestSchema: GenMessage<UserCreateRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 0);

/**
 * Response message returned after successfully creating a new user.
 *
 * @generated from message soulfire.v1.UserCreateResponse
 */
export type UserCreateResponse = Message<"soulfire.v1.UserCreateResponse"> & {
  /**
   * The unique identifier (UUID) assigned to the newly created user.
   * This ID should be used for all subsequent operations on this user.
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

/**
 * Describes the message soulfire.v1.UserCreateResponse.
 * Use `create(UserCreateResponseSchema)` to create a new message.
 */
export const UserCreateResponseSchema: GenMessage<UserCreateResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 1);

/**
 * Request message for deleting an existing user from the system.
 * Deleting a user will also cascade delete all related data (owned instances, audit logs).
 *
 * @generated from message soulfire.v1.UserDeleteRequest
 */
export type UserDeleteRequest = Message<"soulfire.v1.UserDeleteRequest"> & {
  /**
   * The unique identifier (UUID) of the user to delete.
   * Cannot be the ID of the requesting user (cannot delete self).
   * Cannot be the root user ID (00000000-0000-0000-0000-000000000000).
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

/**
 * Describes the message soulfire.v1.UserDeleteRequest.
 * Use `create(UserDeleteRequestSchema)` to create a new message.
 */
export const UserDeleteRequestSchema: GenMessage<UserDeleteRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 2);

/**
 * Response message returned after successfully deleting a user.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.UserDeleteResponse
 */
export type UserDeleteResponse = Message<"soulfire.v1.UserDeleteResponse"> & {
};

/**
 * Describes the message soulfire.v1.UserDeleteResponse.
 * Use `create(UserDeleteResponseSchema)` to create a new message.
 */
export const UserDeleteResponseSchema: GenMessage<UserDeleteResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 3);

/**
 * Request message for listing all users in the system.
 * No parameters required; returns all users.
 *
 * @generated from message soulfire.v1.UserListRequest
 */
export type UserListRequest = Message<"soulfire.v1.UserListRequest"> & {
};

/**
 * Describes the message soulfire.v1.UserListRequest.
 * Use `create(UserListRequestSchema)` to create a new message.
 */
export const UserListRequestSchema: GenMessage<UserListRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 4);

/**
 * Response message containing a list of all users in the system.
 *
 * @generated from message soulfire.v1.UserListResponse
 */
export type UserListResponse = Message<"soulfire.v1.UserListResponse"> & {
  /**
   * List of all users in the system.
   *
   * @generated from field: repeated soulfire.v1.UserListResponse.User users = 1;
   */
  users: UserListResponse_User[];
};

/**
 * Describes the message soulfire.v1.UserListResponse.
 * Use `create(UserListResponseSchema)` to create a new message.
 */
export const UserListResponseSchema: GenMessage<UserListResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 5);

/**
 * Represents a user in the list with all their profile information.
 *
 * @generated from message soulfire.v1.UserListResponse.User
 */
export type UserListResponse_User = Message<"soulfire.v1.UserListResponse.User"> & {
  /**
   * The unique identifier (UUID) of the user.
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The username of the user (3-32 lowercase alphanumeric characters with dashes allowed).
   *
   * @generated from field: string username = 2;
   */
  username: string;

  /**
   * The role of the user (ADMIN or USER).
   *
   * @generated from field: soulfire.v1.UserRole role = 3;
   */
  role: UserRole;

  /**
   * The email address of the user.
   *
   * @generated from field: string email = 4;
   */
  email: string;

  /**
   * Timestamp when the user account was created.
   *
   * @generated from field: google.protobuf.Timestamp created_at = 5;
   */
  createdAt?: Timestamp | undefined;

  /**
   * Timestamp when the user account was last updated.
   *
   * @generated from field: google.protobuf.Timestamp updated_at = 6;
   */
  updatedAt?: Timestamp | undefined;

  /**
   * Timestamp of the user's last successful authentication.
   * Optional; may be absent if the user has never logged in.
   *
   * @generated from field: optional google.protobuf.Timestamp last_login_at = 7;
   */
  lastLoginAt?: Timestamp | undefined;

  /**
   * Minimum issued-at timestamp for valid JWT tokens.
   * Tokens issued before this timestamp are considered invalid.
   * Used to invalidate all sessions by updating this value.
   *
   * @generated from field: google.protobuf.Timestamp min_issued_at = 8;
   */
  minIssuedAt?: Timestamp | undefined;
};

/**
 * Describes the message soulfire.v1.UserListResponse.User.
 * Use `create(UserListResponse_UserSchema)` to create a new message.
 */
export const UserListResponse_UserSchema: GenMessage<UserListResponse_User> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 5, 0);

/**
 * Request message for retrieving detailed information about a specific user.
 *
 * @generated from message soulfire.v1.UserInfoRequest
 */
export type UserInfoRequest = Message<"soulfire.v1.UserInfoRequest"> & {
  /**
   * The unique identifier (UUID) of the user to retrieve information for.
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

/**
 * Describes the message soulfire.v1.UserInfoRequest.
 * Use `create(UserInfoRequestSchema)` to create a new message.
 */
export const UserInfoRequestSchema: GenMessage<UserInfoRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 6);

/**
 * Response message containing detailed information about a specific user.
 *
 * @generated from message soulfire.v1.UserInfoResponse
 */
export type UserInfoResponse = Message<"soulfire.v1.UserInfoResponse"> & {
  /**
   * The username of the user (3-32 lowercase alphanumeric characters with dashes allowed).
   *
   * @generated from field: string username = 1;
   */
  username: string;

  /**
   * The role of the user (ADMIN or USER).
   *
   * @generated from field: soulfire.v1.UserRole role = 2;
   */
  role: UserRole;

  /**
   * The email address of the user.
   *
   * @generated from field: string email = 3;
   */
  email: string;

  /**
   * Timestamp when the user account was created.
   *
   * @generated from field: google.protobuf.Timestamp created_at = 4;
   */
  createdAt?: Timestamp | undefined;

  /**
   * Timestamp when the user account was last updated.
   *
   * @generated from field: google.protobuf.Timestamp updated_at = 5;
   */
  updatedAt?: Timestamp | undefined;

  /**
   * Timestamp of the user's last successful authentication.
   * Optional; may be absent if the user has never logged in.
   *
   * @generated from field: optional google.protobuf.Timestamp last_login_at = 6;
   */
  lastLoginAt?: Timestamp | undefined;

  /**
   * Minimum issued-at timestamp for valid JWT tokens.
   * Tokens issued before this timestamp are considered invalid.
   * Used to invalidate all sessions by updating this value.
   *
   * @generated from field: google.protobuf.Timestamp min_issued_at = 7;
   */
  minIssuedAt?: Timestamp | undefined;
};

/**
 * Describes the message soulfire.v1.UserInfoResponse.
 * Use `create(UserInfoResponseSchema)` to create a new message.
 */
export const UserInfoResponseSchema: GenMessage<UserInfoResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 7);

/**
 * Request message for invalidating all sessions for a user.
 * This effectively logs the user out of all devices by updating the min_issued_at
 * timestamp, which causes all previously issued JWT tokens to become invalid.
 *
 * @generated from message soulfire.v1.InvalidateSessionsRequest
 */
export type InvalidateSessionsRequest = Message<"soulfire.v1.InvalidateSessionsRequest"> & {
  /**
   * The unique identifier (UUID) of the user whose sessions should be invalidated.
   * Cannot be the ID of the requesting user (cannot invalidate own sessions via this method).
   * Cannot be the root user ID (00000000-0000-0000-0000-000000000000).
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

/**
 * Describes the message soulfire.v1.InvalidateSessionsRequest.
 * Use `create(InvalidateSessionsRequestSchema)` to create a new message.
 */
export const InvalidateSessionsRequestSchema: GenMessage<InvalidateSessionsRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 8);

/**
 * Response message returned after successfully invalidating all sessions.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.InvalidateSessionsResponse
 */
export type InvalidateSessionsResponse = Message<"soulfire.v1.InvalidateSessionsResponse"> & {
};

/**
 * Describes the message soulfire.v1.InvalidateSessionsResponse.
 * Use `create(InvalidateSessionsResponseSchema)` to create a new message.
 */
export const InvalidateSessionsResponseSchema: GenMessage<InvalidateSessionsResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 9);

/**
 * Request message for updating an existing user's profile information.
 * All fields except ID will be updated to the provided values.
 *
 * @generated from message soulfire.v1.UpdateUserRequest
 */
export type UpdateUserRequest = Message<"soulfire.v1.UpdateUserRequest"> & {
  /**
   * The unique identifier (UUID) of the user to update.
   * Cannot be the ID of the requesting user (cannot update self via this method).
   * Cannot be the root user ID (00000000-0000-0000-0000-000000000000).
   *
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * The new username for the user.
   * Must be lowercase, between 3 and 32 characters.
   * Must begin with an alphanumeric character, followed by alphanumeric characters or dashes,
   * and end with an alphanumeric character.
   * Must be unique across all users.
   *
   * @generated from field: string username = 2;
   */
  username: string;

  /**
   * The new role to assign to the user.
   * ADMIN users have all permissions, while USER role has limited permissions.
   *
   * @generated from field: soulfire.v1.UserRole role = 3;
   */
  role: UserRole;

  /**
   * The new email address for the user.
   * Must be a valid email format and unique across all users.
   * Maximum length is 255 characters.
   *
   * @generated from field: string email = 4;
   */
  email: string;
};

/**
 * Describes the message soulfire.v1.UpdateUserRequest.
 * Use `create(UpdateUserRequestSchema)` to create a new message.
 */
export const UpdateUserRequestSchema: GenMessage<UpdateUserRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 10);

/**
 * Response message returned after successfully updating a user.
 * Empty response indicates success.
 *
 * @generated from message soulfire.v1.UpdateUserResponse
 */
export type UpdateUserResponse = Message<"soulfire.v1.UpdateUserResponse"> & {
};

/**
 * Describes the message soulfire.v1.UpdateUserResponse.
 * Use `create(UpdateUserResponseSchema)` to create a new message.
 */
export const UpdateUserResponseSchema: GenMessage<UpdateUserResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 11);

/**
 * Request message for generating a new API token for a user.
 * The generated token is a JWT that can be used for API authentication.
 *
 * @generated from message soulfire.v1.GenerateUserAPITokenRequest
 */
export type GenerateUserAPITokenRequest = Message<"soulfire.v1.GenerateUserAPITokenRequest"> & {
  /**
   * The unique identifier (UUID) of the user to generate a token for.
   * Cannot be the ID of the requesting user (cannot generate token for self via this method).
   * Cannot be the root user ID (00000000-0000-0000-0000-000000000000).
   *
   * @generated from field: string id = 1;
   */
  id: string;
};

/**
 * Describes the message soulfire.v1.GenerateUserAPITokenRequest.
 * Use `create(GenerateUserAPITokenRequestSchema)` to create a new message.
 */
export const GenerateUserAPITokenRequestSchema: GenMessage<GenerateUserAPITokenRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 12);

/**
 * Response message containing the newly generated API token.
 *
 * @generated from message soulfire.v1.GenerateUserAPITokenResponse
 */
export type GenerateUserAPITokenResponse = Message<"soulfire.v1.GenerateUserAPITokenResponse"> & {
  /**
   * The generated JWT token for API authentication.
   * This token is signed with the server's secret key and has the "api" audience.
   * The token does not expire but can be invalidated by updating the user's min_issued_at.
   * Should be stored securely as it grants full access as the specified user.
   *
   * @generated from field: string token = 1;
   */
  token: string;
};

/**
 * Describes the message soulfire.v1.GenerateUserAPITokenResponse.
 * Use `create(GenerateUserAPITokenResponseSchema)` to create a new message.
 */
export const GenerateUserAPITokenResponseSchema: GenMessage<GenerateUserAPITokenResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 13);

/**
 * An explicit user-level override for a dynamically registered plugin
 * permission. Records remain persisted when a plugin is absent so reinstalling
 * a plugin cannot silently change the meaning of an existing grant.
 *
 * @generated from message soulfire.v1.UserPluginPermissionGrant
 */
export type UserPluginPermissionGrant = Message<"soulfire.v1.UserPluginPermissionGrant"> & {
  /**
   * @generated from field: string user_id = 1;
   */
  userId: string;

  /**
   * @generated from field: string permission_id = 2;
   */
  permissionId: string;

  /**
   * @generated from field: soulfire.v1.PluginPermissionScope scope = 3;
   */
  scope: PluginPermissionScope;

  /**
   * Empty only for global permissions. Instance, bot, and task permissions
   * use the corresponding resource UUID.
   *
   * @generated from field: optional string resource_id = 4;
   */
  resourceId?: string | undefined;

  /**
   * True grants and false explicitly denies the permission.
   *
   * @generated from field: bool granted = 5;
   */
  granted: boolean;

  /**
   * False when the owning plugin is not currently installed.
   *
   * @generated from field: bool active = 6;
   */
  active: boolean;

  /**
   * @generated from field: google.protobuf.Timestamp created_at = 7;
   */
  createdAt?: Timestamp | undefined;

  /**
   * @generated from field: google.protobuf.Timestamp updated_at = 8;
   */
  updatedAt?: Timestamp | undefined;
};

/**
 * Describes the message soulfire.v1.UserPluginPermissionGrant.
 * Use `create(UserPluginPermissionGrantSchema)` to create a new message.
 */
export const UserPluginPermissionGrantSchema: GenMessage<UserPluginPermissionGrant> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 14);

/**
 * @generated from message soulfire.v1.ListUserPluginPermissionGrantsRequest
 */
export type ListUserPluginPermissionGrantsRequest = Message<"soulfire.v1.ListUserPluginPermissionGrantsRequest"> & {
  /**
   * @generated from field: string user_id = 1;
   */
  userId: string;
};

/**
 * Describes the message soulfire.v1.ListUserPluginPermissionGrantsRequest.
 * Use `create(ListUserPluginPermissionGrantsRequestSchema)` to create a new message.
 */
export const ListUserPluginPermissionGrantsRequestSchema: GenMessage<ListUserPluginPermissionGrantsRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 15);

/**
 * @generated from message soulfire.v1.ListUserPluginPermissionGrantsResponse
 */
export type ListUserPluginPermissionGrantsResponse = Message<"soulfire.v1.ListUserPluginPermissionGrantsResponse"> & {
  /**
   * @generated from field: repeated soulfire.v1.UserPluginPermissionGrant grants = 1;
   */
  grants: UserPluginPermissionGrant[];
};

/**
 * Describes the message soulfire.v1.ListUserPluginPermissionGrantsResponse.
 * Use `create(ListUserPluginPermissionGrantsResponseSchema)` to create a new message.
 */
export const ListUserPluginPermissionGrantsResponseSchema: GenMessage<ListUserPluginPermissionGrantsResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 16);

/**
 * @generated from message soulfire.v1.SetUserPluginPermissionGrantRequest
 */
export type SetUserPluginPermissionGrantRequest = Message<"soulfire.v1.SetUserPluginPermissionGrantRequest"> & {
  /**
   * @generated from field: string user_id = 1;
   */
  userId: string;

  /**
   * @generated from field: string permission_id = 2;
   */
  permissionId: string;

  /**
   * @generated from field: soulfire.v1.PluginPermissionScope scope = 3;
   */
  scope: PluginPermissionScope;

  /**
   * @generated from field: optional string resource_id = 4;
   */
  resourceId?: string | undefined;

  /**
   * @generated from field: bool granted = 5;
   */
  granted: boolean;
};

/**
 * Describes the message soulfire.v1.SetUserPluginPermissionGrantRequest.
 * Use `create(SetUserPluginPermissionGrantRequestSchema)` to create a new message.
 */
export const SetUserPluginPermissionGrantRequestSchema: GenMessage<SetUserPluginPermissionGrantRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 17);

/**
 * @generated from message soulfire.v1.DeleteUserPluginPermissionGrantRequest
 */
export type DeleteUserPluginPermissionGrantRequest = Message<"soulfire.v1.DeleteUserPluginPermissionGrantRequest"> & {
  /**
   * @generated from field: string user_id = 1;
   */
  userId: string;

  /**
   * @generated from field: string permission_id = 2;
   */
  permissionId: string;

  /**
   * @generated from field: soulfire.v1.PluginPermissionScope scope = 3;
   */
  scope: PluginPermissionScope;

  /**
   * @generated from field: optional string resource_id = 4;
   */
  resourceId?: string | undefined;
};

/**
 * Describes the message soulfire.v1.DeleteUserPluginPermissionGrantRequest.
 * Use `create(DeleteUserPluginPermissionGrantRequestSchema)` to create a new message.
 */
export const DeleteUserPluginPermissionGrantRequestSchema: GenMessage<DeleteUserPluginPermissionGrantRequest> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 18);

/**
 * @generated from message soulfire.v1.DeleteUserPluginPermissionGrantResponse
 */
export type DeleteUserPluginPermissionGrantResponse = Message<"soulfire.v1.DeleteUserPluginPermissionGrantResponse"> & {
};

/**
 * Describes the message soulfire.v1.DeleteUserPluginPermissionGrantResponse.
 * Use `create(DeleteUserPluginPermissionGrantResponseSchema)` to create a new message.
 */
export const DeleteUserPluginPermissionGrantResponseSchema: GenMessage<DeleteUserPluginPermissionGrantResponse> = /*@__PURE__*/
  messageDesc(file_soulfire_user, 19);

/**
 * UserService provides user management functionality for the SoulFire system.
 * All methods require authentication via JWT token in the request metadata.
 * Most methods require specific global permissions (CREATE_USER, READ_USER, UPDATE_USER,
 * DELETE_USER, INVALIDATE_SESSIONS, or GENERATE_API_TOKEN).
 * Admin users automatically have all permissions.
 * Note: The root user (ID: 00000000-0000-0000-0000-000000000000) cannot be modified or deleted.
 * Note: Users cannot modify their own account through this service (use self-service endpoints instead).
 *
 * @generated from service soulfire.v1.UserService
 */
export const UserService: GenService<{
  /**
   * Creates a new user account in the system.
   * Requires the CREATE_USER global permission.
   * Returns the UUID of the newly created user.
   * Error cases:
   *   - INTERNAL: If username or email already exists, or validation fails
   *   - PERMISSION_DENIED: If caller lacks CREATE_USER permission
   *
   * @generated from rpc soulfire.v1.UserService.CreateUser
   */
  createUser: {
    methodKind: "unary";
    input: typeof UserCreateRequestSchema;
    output: typeof UserCreateResponseSchema;
  },
  /**
   * Deletes an existing user from the system.
   * Requires the DELETE_USER global permission.
   * Cascades to delete all owned instances and audit logs.
   * Also disconnects the user from any active log subscriptions.
   * Error cases:
   *   - INTERNAL: If user not found, or attempting to delete self/root user
   *   - PERMISSION_DENIED: If caller lacks DELETE_USER permission
   *
   * @generated from rpc soulfire.v1.UserService.DeleteUser
   */
  deleteUser: {
    methodKind: "unary";
    input: typeof UserDeleteRequestSchema;
    output: typeof UserDeleteResponseSchema;
  },
  /**
   * Lists all users in the system.
   * Requires the READ_USER global permission.
   * Returns complete information for all users including timestamps.
   * Error cases:
   *   - INTERNAL: If database query fails
   *   - PERMISSION_DENIED: If caller lacks READ_USER permission
   *
   * @generated from rpc soulfire.v1.UserService.ListUsers
   */
  listUsers: {
    methodKind: "unary";
    input: typeof UserListRequestSchema;
    output: typeof UserListResponseSchema;
  },
  /**
   * Retrieves detailed information about a specific user.
   * Requires the READ_USER global permission.
   * Error cases:
   *   - INTERNAL: If user not found
   *   - PERMISSION_DENIED: If caller lacks READ_USER permission
   *
   * @generated from rpc soulfire.v1.UserService.GetUserInfo
   */
  getUserInfo: {
    methodKind: "unary";
    input: typeof UserInfoRequestSchema;
    output: typeof UserInfoResponseSchema;
  },
  /**
   * Invalidates all active sessions for a user by updating their min_issued_at timestamp.
   * Requires the INVALIDATE_SESSIONS global permission.
   * After this call, all previously issued JWT tokens for the user become invalid,
   * effectively logging them out of all devices.
   * Error cases:
   *   - INTERNAL: If user not found, or attempting to invalidate self/root user sessions
   *   - PERMISSION_DENIED: If caller lacks INVALIDATE_SESSIONS permission
   *
   * @generated from rpc soulfire.v1.UserService.InvalidateSessions
   */
  invalidateSessions: {
    methodKind: "unary";
    input: typeof InvalidateSessionsRequestSchema;
    output: typeof InvalidateSessionsResponseSchema;
  },
  /**
   * Updates an existing user's profile information.
   * Requires the UPDATE_USER global permission.
   * All profile fields (username, email, role) are updated to the provided values.
   * Error cases:
   *   - INTERNAL: If user not found, attempting to update self/root user, or validation fails
   *   - PERMISSION_DENIED: If caller lacks UPDATE_USER permission
   *
   * @generated from rpc soulfire.v1.UserService.UpdateUser
   */
  updateUser: {
    methodKind: "unary";
    input: typeof UpdateUserRequestSchema;
    output: typeof UpdateUserResponseSchema;
  },
  /**
   * Generates a new API token (JWT) for a specific user.
   * Requires the GENERATE_API_TOKEN global permission.
   * The generated token has the "api" audience and does not expire.
   * The token can be invalidated by calling InvalidateSessions for the user.
   * Error cases:
   *   - INTERNAL: If user not found, or attempting to generate token for self/root user
   *   - PERMISSION_DENIED: If caller lacks GENERATE_API_TOKEN permission
   *
   * @generated from rpc soulfire.v1.UserService.GenerateUserAPIToken
   */
  generateUserAPIToken: {
    methodKind: "unary";
    input: typeof GenerateUserAPITokenRequestSchema;
    output: typeof GenerateUserAPITokenResponseSchema;
  },
  /**
   * Lists explicit dynamic plugin permission overrides for one user,
   * including inactive grants retained for plugins that are not installed.
   *
   * @generated from rpc soulfire.v1.UserService.ListUserPluginPermissionGrants
   */
  listUserPluginPermissionGrants: {
    methodKind: "unary";
    input: typeof ListUserPluginPermissionGrantsRequestSchema;
    output: typeof ListUserPluginPermissionGrantsResponseSchema;
  },
  /**
   * Creates or replaces one explicit plugin permission override.
   *
   * @generated from rpc soulfire.v1.UserService.SetUserPluginPermissionGrant
   */
  setUserPluginPermissionGrant: {
    methodKind: "unary";
    input: typeof SetUserPluginPermissionGrantRequestSchema;
    output: typeof UserPluginPermissionGrantSchema;
  },
  /**
   * Removes one explicit override so the plugin permission's default grant
   * policy applies again.
   *
   * @generated from rpc soulfire.v1.UserService.DeleteUserPluginPermissionGrant
   */
  deleteUserPluginPermissionGrant: {
    methodKind: "unary";
    input: typeof DeleteUserPluginPermissionGrantRequestSchema;
    output: typeof DeleteUserPluginPermissionGrantResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_soulfire_user, 0);
