import type { SecurityContext, Team } from "../types/security.js"; import type { TenancyContext } from "../types/tenancy.js"; export interface AdminUsersContext extends SecurityContext, TenancyContext { adminUsers: AdminUsers; } export interface CreatedBy { id: string; displayName: string | null; type: string; } export interface BaseUserAttributes { id: string; displayName: string; email: string; roles?: string[]; teams?: string[]; firstName?: string; lastName?: string; avatar?: { id: string; src: string; } | null; external?: boolean; } export interface CreateUserInput extends Omit { id?: string; displayName?: string; } export type UpdateUserInput = Partial>; export interface AdminUser extends BaseUserAttributes { tenant: string; createdOn: string; createdBy: CreatedBy | null | undefined; } export interface GetUserParams { where: { id?: string; email?: string; tenant?: string; }; } export interface ListUsersParams { where?: { id_in?: string[]; }; sort?: string[]; } export interface AdminUsers { getUser(params: GetUserParams): Promise; listUsers(params?: ListUsersParams): Promise; listUserTeams(id: string): Promise; createUser(data: CreateUserInput): Promise; updateUser(id: string, data: UpdateUserInput): Promise; deleteUser(id: string): Promise; } export interface StorageOperationsListUsersParams extends ListUsersParams { where: ListUsersParams["where"] & { tenant: string; }; } export interface StorageOperationsGetUserParams extends GetUserParams { where: GetUserParams["where"] & { tenant: string; }; } export interface StorageOperationsCreateUserParams { user: TUser; } export interface StorageOperationsUpdateUserParams { user: TUser; } export interface StorageOperationsDeleteUserParams { user: TUser; } export interface System { tenant: string; version: string; } export interface AdminUsersStorageOperations { getUser(params: StorageOperationsGetUserParams): Promise; listUsers(params: StorageOperationsListUsersParams): Promise; createUser(params: StorageOperationsCreateUserParams): Promise; updateUser(params: StorageOperationsUpdateUserParams): Promise; deleteUser(params: StorageOperationsDeleteUserParams): Promise; }