/** * @effigenix/api-client * * Type-safe HTTP client for the Effigenix ERP API. * * Usage: * * ```ts * import { createEffigenixClient } from '@effigenix/api-client'; * * const client = createEffigenixClient(tokenProvider); * const users = await client.users.list(); * ``` */ export { createApiClient } from './client.js'; export type { TokenProvider } from './token-provider.js'; export { createAuthResource } from './resources/auth.js'; export { createUsersResource } from './resources/users.js'; export { createRolesResource } from './resources/roles.js'; export { ApiError, AuthenticationError, NetworkError, RefreshTokenExpiredError, } from './errors.js'; export type { ValidationErrorDetail } from './errors.js'; export type { LoginRequest, LoginResponse, RefreshTokenRequest, AuthResource, } from './resources/auth.js'; export type { UserDTO, RoleDTO, CreateUserRequest, UpdateUserRequest, ChangePasswordRequest, AssignRoleRequest, UsersResource, } from './resources/users.js'; export type { RolesResource } from './resources/roles.js'; import { createApiClient } from './client.js'; import { createAuthResource } from './resources/auth.js'; import { createUsersResource } from './resources/users.js'; import { createRolesResource } from './resources/roles.js'; import type { TokenProvider } from './token-provider.js'; import type { ApiConfig } from '@effigenix/config'; /** * Convenience factory that creates a fully-configured Effigenix API client * with all resource modules attached. */ export function createEffigenixClient( tokenProvider: TokenProvider, config: Partial = {}, ) { const axiosClient = createApiClient(config, tokenProvider); return { auth: createAuthResource(axiosClient), users: createUsersResource(axiosClient), roles: createRolesResource(axiosClient), }; } export type EffigenixClient = ReturnType;