import { useQuery, useSuspenseQuery, useMutation, UseQueryOptions, UseSuspenseQueryOptions, UseMutationOptions } from '@tanstack/react-query'; import { ApiError } from '../api'; /** * User role type */ export type UserRole = 'admin' | 'manager' | 'user' | 'viewer'; /** * User status type */ export type UserStatus = 'active' | 'inactive' | 'pending' | 'suspended'; /** * User entity type */ export interface User { id: string; email: string; firstName: string; lastName: string; displayName: string; avatar?: string; role: UserRole; status: UserStatus; createdAt: string; updatedAt: string; lastLoginAt?: string; } /** * User list filters */ export interface UserFilters { search?: string; role?: UserRole; status?: UserStatus; page?: number; pageSize?: number; sortBy?: keyof User; sortOrder?: 'asc' | 'desc'; [key: string]: unknown; } /** * Paginated users response */ export interface UsersResponse { users: User[]; total: number; page: number; pageSize: number; totalPages: number; } /** * Create user payload */ export interface CreateUserPayload { email: string; firstName: string; lastName: string; role: UserRole; password?: string; sendInvite?: boolean; } /** * Update user payload */ export interface UpdateUserPayload { firstName?: string; lastName?: string; role?: UserRole; status?: UserStatus; avatar?: string; } /** * Query options for users list */ export declare function usersListQueryOptions(filters?: UserFilters): UseQueryOptions; /** * Query options for single user */ export declare function userDetailQueryOptions(id: string): UseQueryOptions; /** * Query options for user profile */ export declare function userProfileQueryOptions(): UseQueryOptions; /** * Suspense query options for users list */ export declare function usersListSuspenseQueryOptions(filters?: UserFilters): UseSuspenseQueryOptions; /** * Suspense query options for single user */ export declare function userDetailSuspenseQueryOptions(id: string): UseSuspenseQueryOptions; /** * Suspense query options for user profile */ export declare function userProfileSuspenseQueryOptions(): UseSuspenseQueryOptions; /** * Hook to fetch users list with Suspense */ export declare function useUsersSuspense(filters?: UserFilters): ReturnType>; /** * Hook to fetch users list */ export declare function useUsers(filters?: UserFilters): ReturnType>; /** * Hook to fetch current user profile with Suspense */ export declare function useUserProfileSuspense(): ReturnType>; /** * Hook to fetch single user with Suspense */ export declare function useUserSuspense(id: string): ReturnType>; /** * Hook to fetch single user */ export declare function useUser(id: string): ReturnType>; /** * Hook to fetch current user profile */ export declare function useUserProfile(): ReturnType>; /** * Hook to create a user * @throws {ApiError} When the request fails */ export declare function useCreateUser(options?: UseMutationOptions): ReturnType>; /** * Hook to update a user * @throws {ApiError} When the request fails */ export declare function useUpdateUser(options?: UseMutationOptions): ReturnType>; /** * Hook to delete a user * @throws {ApiError} When the request fails */ export declare function useDeleteUser(options?: UseMutationOptions): ReturnType>;