/** * @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 { createCategoriesResource } from './resources/categories.js'; export { createSuppliersResource } from './resources/suppliers.js'; export { createArticlesResource } from './resources/articles.js'; export { createCustomersResource } from './resources/customers.js'; export { createStorageLocationsResource } from './resources/storage-locations.js'; export { createRecipesResource } from './resources/recipes.js'; export { createStocksResource } from './resources/stocks.js'; export { ApiError, AuthenticationError, NetworkError, RefreshTokenExpiredError, } from './errors.js'; export type { ValidationErrorDetail } from './errors.js'; // Auth types (no generated alias, stay in resource) export type { LoginRequest, LoginResponse, RefreshTokenRequest, AuthResource, } from './resources/auth.js'; // Types from @effigenix/types (generated OpenAPI aliases) export type { UserDTO, RoleDTO, CreateUserRequest, UpdateUserRequest, ChangePasswordRequest, AssignRoleRequest, SupplierDTO, AddressDTO, ContactInfoDTO, PaymentTermsDTO, QualityCertificateDTO, SupplierRatingDTO, CreateSupplierRequest, UpdateSupplierRequest, RateSupplierRequest, AddCertificateRequest, RemoveCertificateRequest, ProductCategoryDTO, CreateCategoryRequest, UpdateCategoryRequest, ArticleDTO, SalesUnitDTO, CreateArticleRequest, UpdateArticleRequest, AddSalesUnitRequest, UpdateSalesUnitPriceRequest, CustomerDTO, DeliveryAddressDTO, FrameContractDTO, ContractLineItemDTO, CreateCustomerRequest, UpdateCustomerRequest, AddDeliveryAddressRequest, SetFrameContractLineItem, SetFrameContractRequest, StorageLocationDTO, TemperatureRangeDTO, CreateStorageLocationRequest, UpdateStorageLocationRequest, RecipeDTO, RecipeSummaryDTO, IngredientDTO, ProductionStepDTO, CreateRecipeRequest, AddRecipeIngredientRequest, AddProductionStepRequest, StockBatchDTO, AddStockBatchRequest, } from '@effigenix/types'; // Resource types (runtime, stay in resource files) export type { UsersResource } from './resources/users.js'; export type { RolesResource } from './resources/roles.js'; export type { CategoriesResource } from './resources/categories.js'; export type { SuppliersResource, SupplierStatus } from './resources/suppliers.js'; export type { ArticlesResource, ArticleStatus, Unit, PriceModel } from './resources/articles.js'; export { UNIT_LABELS, PRICE_MODEL_LABELS } from './resources/articles.js'; export type { CustomersResource, CustomerType, CustomerStatus, CustomerPreference, DeliveryRhythm, } from './resources/customers.js'; export { CUSTOMER_PREFERENCE_LABELS, DELIVERY_RHYTHM_LABELS } from './resources/customers.js'; export type { StorageLocationsResource, StorageType, StorageLocationFilter, } from './resources/storage-locations.js'; export { STORAGE_TYPE_LABELS } from './resources/storage-locations.js'; export type { RecipesResource, RecipeType, RecipeStatus } from './resources/recipes.js'; export { RECIPE_TYPE_LABELS } from './resources/recipes.js'; export type { StocksResource, BatchType } from './resources/stocks.js'; export { BATCH_TYPE_LABELS } from './resources/stocks.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 { createCategoriesResource } from './resources/categories.js'; import { createSuppliersResource } from './resources/suppliers.js'; import { createArticlesResource } from './resources/articles.js'; import { createCustomersResource } from './resources/customers.js'; import { createStorageLocationsResource } from './resources/storage-locations.js'; import { createRecipesResource } from './resources/recipes.js'; import { createStocksResource } from './resources/stocks.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), categories: createCategoriesResource(axiosClient), suppliers: createSuppliersResource(axiosClient), articles: createArticlesResource(axiosClient), customers: createCustomersResource(axiosClient), storageLocations: createStorageLocationsResource(axiosClient), recipes: createRecipesResource(axiosClient), stocks: createStocksResource(axiosClient), }; } export type EffigenixClient = ReturnType;