{"version":3,"file":"experteam-mx-ngx-services.mjs","sources":["../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.models.ts","../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.providers.ts","../../../../projects/experteam-mx/ngx-services/src/lib/ngx-services.module.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-do.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-gt.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-mx.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-pa.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-billing-sv.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-cash-operations.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-catalogs.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-companies.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-composition.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-customs.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-discounts.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-e-tools-auto-billing.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-events.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-external-ops.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-inventories.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-invoices.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-notifications.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-open-items.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-quote.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-reports.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-security.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-services.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-shipments.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-supplies.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/api-surveys.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/models/api-catalog.enum.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/models/api-events.enum.ts","../../../../projects/experteam-mx/ngx-services/src/lib/apis/models/api-inventories.enum.ts","../../../../projects/experteam-mx/ngx-services/src/lib/websockets/web-sockets.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/cypher/crypto.service.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-headers.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-key.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/api-token.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/interceptors/http-caching.interceptor.ts","../../../../projects/experteam-mx/ngx-services/src/lib/helpers/files.ts","../../../../projects/experteam-mx/ngx-services/src/lib/helpers/http.ts","../../../../projects/experteam-mx/ngx-services/src/public-api.ts","../../../../projects/experteam-mx/ngx-services/src/experteam-mx-ngx-services.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core'\n\n/**\n * Represents the configuration settings for the application's environment.\n * This type includes various API endpoint URLs, authentication details, caching options, and other relevant settings.\n *\n * Properties:\n * - apiCompaniesUrl: The URL for the companies API endpoint.\n * - apiEventsUrl: The URL for the events API endpoint.\n * - apiInvoicesUrl: The URL for the invoices API endpoint.\n * - apiReportsUrl: The URL for the reports API endpoint.\n * - apiSecurityUrl: The URL for the security-related API endpoint.\n * - apiShipmentUrl: The URL for the shipment API endpoint.\n * - authCookie: The name of the authentication cookie used for user sessions.\n * - cacheTtl: Optional. Specifies the time-to-live (TTL) for cached items.\n * - printUrl: Optional. The URL used for generating or downloading printable documents.\n * - secretKey: A secret key used for authentication or other secure operations.\n */\nexport type Environment = {\n  apiBillingDO?: string\n  apiBillingGT?: string\n  apiBillingMX?: string\n  apiBillingPA?: string\n  apiBillingSV?: string\n  apiCashOperationsUrl?: string\n  apiCatalogsUrl?: string\n  apiCompaniesUrl?: string\n  apiCompositionUrl?: string\n  apiCustomsUrl?: string\n  apiDiscountsUrl?: string\n  apiEToolsAutoBilling?: string\n  apiEventsUrl?: string\n  apiExternalOperationsKey?: string\n  apiExternalOperationsUrl?: string\n  apiInventoriesUrl?: string\n  apiInvoicesUrl?: string\n  apiNotificationsUrl?: string\n  apiOpenItemsUrl?: string\n  apiQuotesUrl?: string\n  apiReportsUrl?: string\n  apiSecurityUrl?: string\n  apiServicesUrl?: string\n  apiShipmentUrl?: string\n  apiSuppliesUrl?: string\n  apiSurveysUrl?: string\n  authCookie?: string\n  cacheTtl?: number\n  printUrl?: string\n  secretKey?: string\n  sockets?: {\n    app_key: string\n    debug?: boolean\n    port: number\n    url: string\n  }\n}\n\n/**\n * Injection token used to inject environment configurations.\n *\n * `ENVIRONMENT_TOKEN` is a dependency injection token that allows\n * for the provision and retrieval of environment-specific configurations\n * within the application. This token is typically associated with an\n * `Environment` type that defines the structure of the configuration.\n */\nexport const ENVIRONMENT_TOKEN = new InjectionToken<Environment>('ENVIRONMENT_TOKEN')\n","import { type EnvironmentProviders, makeEnvironmentProviders } from '@angular/core'\nimport { ENVIRONMENT_TOKEN, type Environment } from './ngx-services.models'\n\n/**\n * Provides ngx-services dependencies for standalone Angular applications.\n *\n * Register this provider in `ApplicationConfig.providers` so all services in\n * this library can resolve the environment-based configuration.\n */\nexport function provideNgxServices (environment: Environment): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    {\n      provide: ENVIRONMENT_TOKEN,\n      useValue: environment\n    }\n  ])\n}\n","import { provideHttpClient } from '@angular/common/http'\nimport type { ModuleWithProviders } from '@angular/core'\nimport { NgModule } from '@angular/core'\nimport type { Environment } from './ngx-services.models'\nimport { provideNgxServices } from './ngx-services.providers'\n\n@NgModule({\n  providers: [provideHttpClient()]\n})\nexport class NgxServicesModule {\n  /**\n   * Returns a module with providers for the NgxServicesModule.\n   *\n   * @param {Environment} environment - The environment configuration object.\n   *\n   * @return {ModuleWithProviders<NgxServicesModule>} The module with providers for the NgxServicesModule.\n   *\n  * @deprecated Use `provideNgxServices(environment)` in `ApplicationConfig.providers`\n  * for standalone applications. This API will be removed in `20.2.0`.\n   */\n  public static forRoot (environment: Environment): ModuleWithProviders<NgxServicesModule> {\n    return {\n      ngModule: NgxServicesModule,\n      providers: [provideNgxServices(environment)]\n    }\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { IncomeTypesOut } from './models/api-billing-do.types'\nimport type { ApiSuccess } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiBillingDOService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Gets the base URL for Billing DO API endpoints.\n   *\n   * @returns {string} Billing DO API base URL, or an empty string when it is not configured.\n   */\n  get url (): string {\n    return this.environments.apiBillingDO ?? ''\n  }\n\n  /**\n   * Retrieves the list of income types from Billing DO.\n   *\n   * @returns {Observable<IncomeTypesOut>} Observable that emits the income types payload.\n   */\n  getIncomeTypes (): Observable<IncomeTypesOut> {\n    return this.http.get<ApiSuccess<IncomeTypesOut>>(`${this.url}/income-types`)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  ApiBillingConfigurable,\n  BillingConfigIn,\n  BillingConfigOut,\n  BillingConfigsOut\n} from './models/api-billing.models'\nimport type { ApiSuccess } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiBillingGtService implements ApiBillingConfigurable {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Gets the base URL for Billing GT API endpoints.\n   *\n   * @returns {string} Billing GT API base URL, or an empty string when it is not configured.\n   */\n  get url (): string {\n    return this.environments.apiBillingGT ?? ''\n  }\n\n  /**\n   * Retrieves the list of billing configurations by location.\n   *\n   * @returns {Observable<BillingConfigsOut>} Observable that emits the billing configurations payload.\n   */\n  getConfigs (): Observable<BillingConfigsOut> {\n    return this.http.get<ApiSuccess<BillingConfigsOut>>(`${this.url}/location/configs`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves billing configuration details for a location.\n   *\n   * @param {number} id - Location identifier to fetch.\n   * @returns {Observable<BillingConfigOut>} Observable that emits the location billing configuration payload.\n   */\n  getConfig (id: number): Observable<BillingConfigOut> {\n    return this.http.get<ApiSuccess<BillingConfigOut>>(`${this.url}/locations/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a billing configuration for a location.\n   *\n   * @param {BillingConfigIn} body - Billing configuration payload for the location.\n   * @returns {Observable<BillingConfigOut>} Observable that emits the created billing configuration payload.\n   */\n  postConfigs (body: BillingConfigIn): Observable<BillingConfigOut> {\n    return this.http.post<ApiSuccess<BillingConfigOut>>(`${this.url}/locations`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { FiscalRegimensAcceptedOut, FiscalRegimensOut, PostalCodesOut } from './models/api-billing-mx.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiBillingMxService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Gets the base URL for Billing MX API endpoints.\n   *\n   * @returns {string} Billing MX API base URL, or an empty string when it is not configured.\n   */\n  get url (): string {\n    return this.environments.apiBillingMX ?? ''\n  }\n\n  /**\n   * Retrieves the list of fiscal regimens from Billing MX.\n   *\n   * @returns {Observable<FiscalRegimensOut>} Observable that emits the fiscal regimens payload.\n   */\n  getFiscalRegimens (): Observable<FiscalRegimensOut> {\n    return this.http.get<ApiSuccess<FiscalRegimensOut>>(`${this.url}/fiscal-regimens`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the CFDI uses accepted for a fiscal regimen.\n   *\n   * @param {number} fiscalRegimen Fiscal regimen identifier used to filter accepted CFDI uses.\n   * @returns {Observable<FiscalRegimensAcceptedOut>} Observable that emits the accepted CFDI uses payload.\n   */\n  getFiscalRegimensAccepted (fiscalRegimen: number): Observable<FiscalRegimensAcceptedOut> {\n    const params = { 'fiscal-regimen': fiscalRegimen }\n\n    return this.http.get<ApiSuccess<FiscalRegimensAcceptedOut>>(`${this.url}/cfdi-uses/fiscal-regimen-accepted/list`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves postal code information from Billing MX.\n   *\n   * @param {QueryParams} params Query parameters used by the postal codes endpoint.\n   * @returns {Observable<PostalCodesOut>} Observable that emits the postal code data payload.\n   */\n  getPostalCodes (params: QueryParams): Observable<PostalCodesOut> {\n    return this.http.get<ApiSuccess<PostalCodesOut>>(`${this.url}/postal-codes`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { BillingPaCustomerOut, DistrictsOut, ParishesOut, ProvincesOut } from './models/api-billing-pa.types'\nimport type { ApiBillingConfigurable, BillingConfigIn, BillingConfigOut, BillingConfigsOut } from './models/api-billing.models'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiBillingPaService implements ApiBillingConfigurable {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Gets the base URL for Billing PA API endpoints.\n   *\n   * @returns {string} Billing PA API base URL, or an empty string when it is not configured.\n   */\n  get url (): string {\n    return this.environments.apiBillingPA ?? ''\n  }\n\n  /**\n   * Retrieves the list of districts.\n   *\n   * @param {QueryParams} params Query parameters used by the districts endpoint.\n   * @returns {Observable<DistrictsOut>} Observable that emits the districts payload.\n   */\n  getDistricts (params: QueryParams): Observable<DistrictsOut> {\n    return this.http.get<ApiSuccess<DistrictsOut>>(`${this.url}/districts`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n    * Retrieves the list of parishes.\n   *\n    * @param {QueryParams} params Query parameters used by the parishes endpoint.\n    * @returns {Observable<ParishesOut>} Observable that emits the parishes payload.\n   */\n  getParishes (params: QueryParams): Observable<ParishesOut> {\n    return this.http.get<ApiSuccess<ParishesOut>>(`${this.url}/parishes`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n    * Retrieves the list of provinces.\n   *\n    * @param {QueryParams} params Query parameters used by the provinces endpoint.\n    * @returns {Observable<ProvincesOut>} Observable that emits the provinces payload.\n   */\n  getProvinces (params: QueryParams): Observable<ProvincesOut> {\n    return this.http.get<ApiSuccess<ProvincesOut>>(`${this.url}/provinces`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n    * Validates a customer using Billing PA.\n   *\n    * @param {QueryParams} params Query parameters used by the customer validation endpoint.\n    * @returns {Observable<BillingPaCustomerOut>} Observable that emits customer validation data.\n   */\n  getValidateCustomer (params: QueryParams): Observable<BillingPaCustomerOut> {\n    return this.http.get<ApiSuccess<BillingPaCustomerOut>>(`${this.url}/validate-customer`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n    * Retrieves billing configurations by location.\n   *\n    * @returns {Observable<BillingConfigsOut>} Observable that emits billing configuration items.\n   */\n  getConfigs (): Observable<BillingConfigsOut> {\n    return this.http.get<ApiSuccess<BillingConfigsOut>>(`${this.url}/location/configs`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n    * Retrieves the billing configuration for a location.\n   *\n    * @param {number} id Location identifier.\n    * @returns {Observable<BillingConfigOut>} Observable that emits the location billing configuration payload.\n   */\n  getConfig (id: number): Observable<BillingConfigOut> {\n    return this.http.get<ApiSuccess<BillingConfigOut>>(`${this.url}/locations/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n    * Creates a billing configuration for a location.\n   *\n    * @param {BillingConfigIn} body Billing configuration payload for the new location.\n    * @returns {Observable<BillingConfigOut>} Observable that emits the created billing configuration payload.\n   */\n  postConfigs (body: BillingConfigIn): Observable<BillingConfigOut> {\n    return this.http.post<ApiSuccess<BillingConfigOut>>(`${this.url}/locations`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  DepartmentsOut,\n  EconomicActivitiesOut,\n  EstablishmentTypesOut,\n  MunicipalitiesOut,\n  PersonTypesOut\n} from './models/api-billing-sv.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiBillingSvService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the billing API.\n   * If the URL is not defined in the environments configuration, returns an empty string.\n   *\n  * @returns {string} The billing API URL or an empty string if not set.\n   */\n  get url (): string {\n    return this.environments.apiBillingSV ?? ''\n  }\n\n  /**\n   * Fetches the list of economic activities based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the economic activities.\n  * @returns {Observable<EconomicActivitiesOut>} An observable that emits the list of economic activities.\n   */\n  getEconomicActivities (params: QueryParams): Observable<EconomicActivitiesOut> {\n    return this.http.get<ApiSuccess<EconomicActivitiesOut>>(`${this.url}/economic-activities`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of person types based on given query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the person types.\n  * @returns {Observable<PersonTypesOut>} An observable that emits a list of person types.\n   */\n  getPersonTypes (params: QueryParams): Observable<PersonTypesOut> {\n    return this.http.get<ApiSuccess<PersonTypesOut>>(`${this.url}/person-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the list of establishment types.\n   *\n   * @param {QueryParams} params The query parameters to be sent with the HTTP request.\n  * @returns {Observable<EstablishmentTypesOut>} An observable that emits the establishment types data.\n   */\n  getEstablishmentTypes (params: QueryParams): Observable<EstablishmentTypesOut> {\n    return this.http.get<ApiSuccess<EstablishmentTypesOut>>(`${this.url}/establishment-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the list of departments based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter or modify the departments fetch request.\n  * @returns {Observable<DepartmentsOut>} An observable emitting the list of departments.\n   */\n  getDepartments (params: QueryParams): Observable<DepartmentsOut> {\n    return this.http.get<ApiSuccess<DepartmentsOut>>(`${this.url}/departments`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of municipalities based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the municipalities.\n  * @returns {Observable<MunicipalitiesOut>} An observable that emits the retrieved municipalities data.\n   */\n  getMunicipalities (params: QueryParams): Observable<MunicipalitiesOut> {\n    return this.http.get<ApiSuccess<MunicipalitiesOut>>(`${this.url}/municipalities`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  CashValueSummaryOut,\n  DepositSlipOut,\n  InstallationCountryReferenceCurrenciesOut,\n  InstallationCountryReferenceCurrencyIn,\n  InstallationCountryReferenceCurrencyOut, OpeningTransferenceIn, OpeningTransferenceOut, ReceiptFileOut\n} from './models/api-cash-operations.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiCashOperationsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the cash operations API from the environment configurations.\n   *\n  * @returns {string} The URL of the cash operations API.\n   */\n  get url (): string {\n    return this.environments.apiCashOperationsUrl ?? ''\n  }\n\n  /**\n   * Creates a new installation country reference currency.\n   *\n   * @param {InstallationCountryReferenceCurrencyIn} body - The data for the new reference currency.\n   * @returns {Observable<InstallationCountryReferenceCurrencyOut>} The created reference currency.\n   */\n  postInstallationCountryReferenceCurrency (body: InstallationCountryReferenceCurrencyIn): Observable<InstallationCountryReferenceCurrencyOut> {\n    return this.http.post<ApiSuccess<InstallationCountryReferenceCurrencyOut>>(`${this.url}/installation-country-reference-currencies`,\n      body\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Updates an existing installation country reference currency.\n   *\n   * @param {number} id - The ID of the reference currency to update.\n   * @param {InstallationCountryReferenceCurrencyIn} body - The updated data for the reference currency.\n   * @returns {Observable<InstallationCountryReferenceCurrencyOut>} The updated reference currency.\n   */\n  putInstallationCountryReferenceCurrency (id: number, body: InstallationCountryReferenceCurrencyIn): Observable<InstallationCountryReferenceCurrencyOut> {\n    return this.http.put<ApiSuccess<InstallationCountryReferenceCurrencyOut>>(`${this.url}/installation-country-reference-currencies/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of installation country reference currencies based on query parameters.\n   *\n   * @param {QueryParams} params - Query parameters for filtering the currencies.\n   * @returns {Observable<InstallationCountryReferenceCurrenciesOut>} The list of reference currencies.\n   */\n  getInstallationCompanyCountryCurrencies (params: QueryParams): Observable<InstallationCountryReferenceCurrenciesOut> {\n    return this.http.get<ApiSuccess<InstallationCountryReferenceCurrenciesOut>>(`${this.url}/installation-country-reference-currencies`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the cash value summary for a specific opening ID.\n   *\n   * @param {number} id - The ID of the opening for which to retrieve the cash value summary.\n   * @returns {Observable<CashValueSummaryOut>} An observable that emits the cash value summary data.\n   */\n  getOpeningCashValueSummary (id: number): Observable<CashValueSummaryOut> {\n    return this.http.get<ApiSuccess<CashValueSummaryOut>>(`${this.url}/openings/${id}/cash-value-summary`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new opening transference record.\n   *\n   * @param {OpeningTransferenceIn} body - The data to create the new opening transference.\n   * @returns {Observable<OpeningTransferenceOut>} An observable that emits the newly created opening transference.\n   */\n  postOpeningTransferences (body: OpeningTransferenceIn): Observable<OpeningTransferenceOut> {\n    return this.http.post<ApiSuccess<OpeningTransferenceOut>>(`${this.url}/opening-transferences`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the receipt file associated with the given opening transference ID.\n   *\n   * @param {number} id - The ID of the opening transference whose receipt is to be retrieved.\n   * @returns {Observable<ReceiptFileOut>} An observable that emits the receipt file data.\n   */\n  getOpeningTransferenceReceipt (id: number): Observable<ReceiptFileOut> {\n    return this.http.get<ApiSuccess<ReceiptFileOut>>(`${this.url}/opening-transferences/${id}/receipt`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a deposit slip by its ID.\n   * @param id - The unique identifier of the deposit slip to retrieve\n   * @returns An Observable that emits the deposit slip data\n   */\n  getDepositSlip (id: number): Observable<DepositSlipOut> {\n    return this.http.get<ApiSuccess<DepositSlipOut>>(`${this.url}/deposits/${id}/slip`)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  BusinessPartyTraderTypesOut,\n  CancellationReasonIn,\n  CancellationReasonOut,\n  CancellationReasonsOut,\n  CountriesOut,\n  CountryIn,\n  CountryOut,\n  CurrenciesOut,\n  CurrencyOut,\n  ExtraChargeIn,\n  ExtraChargeOut,\n  ExtraChargesOut,\n  GenericFolioIn,\n  GenericFolioOut,\n  GenericFoliosOut,\n  HolidayIn,\n  HolidayOut,\n  HolidaysOut,\n  IdentificationTypeIn,\n  IdentificationTypeNumberValidationIn,\n  IdentificationTypeNumberValidationOut,\n  IdentificationTypeOut,\n  IdentificationTypesOut,\n  LanguagesOut,\n  ManagementAreasOut,\n  OperationTypesOut,\n  PackageLocationsData,\n  ProductIn,\n  ProductOut,\n  QuestionIn,\n  QuestionOut,\n  QuestionsOut,\n  RegionsOut,\n  ShipmentContentTypesOut,\n  ShipmentGroupsOut,\n  ShipmentIncomeTypeIn,\n  ShipmentIncomeTypeOut,\n  ShipmentIncomeTypesOut,\n  ShipmentScopesOut,\n  ShipmentStatusesOut,\n  UniqueFolioIn,\n  UniqueFolioOut,\n  UniqueFoliosOut,\n  UnitsOut,\n  ZonesOut\n} from './models/api-catalog.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiCatalogsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the reports API from the environment configurations.\n   *\n   * @return {string} The URL of the reports API.\n   */\n  get url (): string {\n    return this.environments.apiCatalogsUrl ?? ''\n  }\n\n  /**\n   * Retrieves the list of collection payments\n   *\n   * @param {QueryParams} params - The query parameters used to fetch the operation types.\n   * @return {Observable<OperationTypesOut[]>} An observable that emits an array of operation type.\n   */\n  getOperationTypes (params: QueryParams): Observable<OperationTypesOut> {\n    return this.http.get<ApiSuccess<OperationTypesOut>>(`${this.url}/operation-types`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of identificatios types\n   *\n   * @param {QueryParams} params - The query parameters used to fetch the identification types.\n   * @return {Observable<IdentificationTypesOut[]>} An observable that emits an array of identification type.\n   */\n  getIdentificationTypes (params: QueryParams): Observable<IdentificationTypesOut> {\n    return this.http.get<ApiSuccess<IdentificationTypesOut>>(`${this.url}/identification-types`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieve a single identification type by its id.\n   *\n   * Sends an HTTP GET request to the indentification type endpoint and returns an Observable that emits\n   * the IdentificationTypeOut payload extracted from the API success envelope.\n   *\n   * @param id - The numeric identifier of the identification type to fetch.\n   * @returns An Observable that emits the requested IdentificationTypeOut. The Observable will error\n   *          if the HTTP request fails (for example network issues or non-2xx responses).\n   */\n  getIdentificationType (id: number): Observable<IdentificationTypeOut> {\n    return this.http.get<ApiSuccess<IdentificationTypeOut>>(`${this.url}/identification-types/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new identification type and returns the created resource.\n   *\n   * The request payload is sent as an object with a `body` property containing the provided\n   * IdentificationTypeIn value (i.e. { body: IdentificationTypeIn }). On success the HTTP response is expected\n   * to follow the ApiSuccess<T> shape; the operator maps that response to the inner `data`\n   * object and emits it as a IdentificationTypeOut.\n   *\n   * @param body - The identification type payload to create (IdentificationTypeIn).\n   * @returns Observable<IdentificationTypeOut> that emits the created identification type on success.\n   */\n  postIdentificationType (body: IdentificationTypeIn): Observable<IdentificationTypeOut> {\n    return this.http.post<ApiSuccess<IdentificationTypeOut>>(`${this.url}/identification-types`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Update a identification type by its ID.\n   *\n   * Sends an HTTP PUT to `${this.url}/identification-types/${id}` with the provided payload.\n   * The request body is sent as an object with a `body` property containing the\n   * `IdentificationTypeIn` data. The server response is expected to be an `ApiSuccess<IdentificationTypeOut>`\n   * and this method returns an Observable that emits the unwrapped `IdentificationTypeOut`.\n   *\n   * @param id - The identifier of the identification type to update.\n   * @param body - The update payload for the identification type.\n   * @returns An Observable that emits the updated `IdentificationTypeOut` on success.\n   */\n  putIdentificationType (id: number, body: IdentificationTypeIn): Observable<IdentificationTypeOut> {\n    return this.http.put<ApiSuccess<IdentificationTypeOut>>(`${this.url}/identification-types/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Delete a identification type by its ID.\n   *\n   * Sends an HTTP DELETE request to the backend endpoint `/identification-types/{id}` and\n   * returns an Observable that emits the API response's `data` payload (typically an empty object).\n   *\n   * The implementation maps an ApiSuccess wrapper to its `data` property before emitting.\n   *\n   * @param id - The numeric identifier of the identification type to delete.\n   * @returns An Observable that emits the deleted resource payload ({} expected) on success.\n   *          The Observable will emit an error if the HTTP request fails.\n   */\n  deleteIdentificationType (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/identification-types/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to validate identification type number.\n   *\n   * The request payload is sent as an object with a `body` property containing the provided\n   * IdentificationTypeNumberValidationIn value (i.e. { body: IdentificationTypeNumberValidationIn }). On success the HTTP response is expected\n   * to follow the ApiSuccess<T> shape; the operator maps that response to the inner `data`\n   * object and emits it as a IdentificationTypeNumberValidationOut.\n   *\n   * @param body - The identification type number validation payload to validate (IdentificationTypeNumberValidationIn).\n   * @returns Observable<IdentificationTypeNumberValidationOut> that emits the validate status.\n   */\n  postIdentificationTypeNumberValidation (body: IdentificationTypeNumberValidationIn): Observable<IdentificationTypeNumberValidationOut> {\n    return this.http.post<ApiSuccess<IdentificationTypeNumberValidationOut>>(`${this.url}/identification-types/number-validation`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the extra charges based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the results.\n   * @return {Observable<ExtraChargesOut>} An observable emitting the extra charges data.\n   */\n  getExtraCharges (params: QueryParams): Observable<ExtraChargesOut> {\n    return this.http.get<ApiSuccess<ExtraChargesOut>>(`${this.url}/extracharges`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Submits an extra charge request to the server and returns the created extra charge details.\n   *\n   * @param {ExtraChargeIn} body - The data for the extra charge to be created.\n   * @return {Observable<ExtraChargeOut>} An observable that emits the details of the created extra charge.\n   */\n  postExtraCharge (body: ExtraChargeIn): Observable<ExtraChargeOut> {\n    return this.http.post<ApiSuccess<ExtraChargeOut>>(`${this.url}/extracharges`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an extra charge entity with new data and returns the updated entity.\n   *\n   * @param {number} id - The unique identifier of the extra charge to update.\n   * @param {ExtraChargeIn} body - The new data for the extra charge.\n   * @return {Observable<ExtraChargeOut>} An observable emitting the updated extra charge entity.\n   */\n  putExtraCharge (id: number, body: ExtraChargeIn): Observable<ExtraChargeOut> {\n    return this.http.put<ApiSuccess<ExtraChargeOut>>(`${this.url}/extracharges/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of countries from the API.\n   *\n   * @param {QueryParams} params - The query parameters to be passed to the API request.\n   * @return {Observable<CountriesOut>} An observable containing the list of countries.\n   */\n  getCountries (params: QueryParams): Observable<CountriesOut> {\n    return this.http.get<ApiSuccess<CountriesOut>>(`${this.url}/countries`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the details of a country based on its ID.\n   *\n   * @param {number} id - The identifier of the country to fetch.\n   * @return {Observable<CountryOut>} An observable that emits the country data.\n   */\n  getCountry (id: number): Observable<CountryOut> {\n    return this.http.get<ApiSuccess<CountryOut>>(`${this.url}/countries/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the details of a specific country by its ID.\n   *\n   * @param {number} id - The unique identifier of the country to be updated.\n   * @param {CountryIn} body - The data to update the country with.\n   * @return {Observable<CountryOut>} An observable that emits the updated country data.\n   */\n  putCountry (id: number, body: CountryIn): Observable<CountryOut> {\n    return this.http.put<ApiSuccess<CountryOut>>(`${this.url}/countries/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of regions based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the regions.\n   * @return {Observable<RegionsOut>} An observable that emits the list of regions.\n   */\n  getRegions (params: QueryParams): Observable<RegionsOut> {\n    return this.http.get<ApiSuccess<RegionsOut>>(`${this.url}/regions`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the zones data based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the zones data.\n   * @return {Observable<ZonesOut>} An observable that emits the fetched zones data.\n   */\n  getZones (params: QueryParams): Observable<ZonesOut> {\n    return this.http.get<ApiSuccess<ZonesOut>>(`${this.url}/zones`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the management areas based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the management areas.\n   * @return {Observable<ManagementAreasOut>} An observable that emits the management areas data.\n   */\n  getManagementAreas (params: QueryParams): Observable<ManagementAreasOut> {\n    return this.http.get<ApiSuccess<ManagementAreasOut>>(`${this.url}/management-areas`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves cancellation reasons from the server based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the cancellation reasons.\n   * @return {Observable<CancellationReasonsOut>} An observable containing the retrieved cancellation reasons.\n   */\n  getCancellationReasons (params: QueryParams): Observable<CancellationReasonsOut> {\n    return this.http.get<ApiSuccess<CancellationReasonsOut>>(`${this.url}/cancellation-reasons`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a cancellation reason to the server.\n   *\n   * @param {CancellationReasonIn} body - The cancellation reason object to be sent.\n   * @return {Observable<CancellationReasonOut>} An observable containing the server's response with the processed cancellation reason.\n   */\n  postCancellationReason (body: CancellationReasonIn): Observable<CancellationReasonOut> {\n    return this.http.post<ApiSuccess<CancellationReasonOut>>(`${this.url}/cancellation-reasons`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the cancellation reason for the specified ID with the provided data.\n   *\n   * @param {number} id - The unique identifier of the cancellation reason to update.\n   * @param {CancellationReasonIn} body - The details of the cancellation reason to be updated.\n   * @return {Observable<CancellationReasonOut>} An observable containing the updated cancellation reason.\n   */\n  putCancellationReason (id: number, body: CancellationReasonIn): Observable<CancellationReasonOut> {\n    return this.http.put<ApiSuccess<CancellationReasonOut>>(`${this.url}/cancellation-reasons/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of currencies based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to customize the currency retrieval request.\n   * @return {Observable<CurrenciesOut>} An observable that emits the retrieved currencies data.\n   */\n  getCurrencies (params: QueryParams): Observable<CurrenciesOut> {\n    return this.http.get<ApiSuccess<CurrenciesOut>>(`${this.url}/currencies`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves currency information by ID.\n   * @param id - The unique identifier of the currency to retrieve.\n   * @returns An Observable that emits the currency data.\n   */\n  getCurrency (id: number): Observable<CurrencyOut> {\n    return this.http.get<ApiSuccess<CurrencyOut>>(`${this.url}/currencies/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the list of available languages based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to pass with the HTTP request.\n   * @return {Observable<LanguagesOut>} An observable that emits the available languages.\n   */\n  getLanguages (params: QueryParams): Observable<LanguagesOut> {\n    return this.http.get<ApiSuccess<LanguagesOut>>(`${this.url}/languages`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the available units from the API based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the units being fetched.\n   * @return {Observable<UnitsOut>} An observable that emits the retrieved units data.\n   */\n  getUnits (params: QueryParams): Observable<UnitsOut> {\n    return this.http.get<ApiSuccess<UnitsOut>>(`${this.url}/units`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the shipment scopes based on the provided query parameters.\n   *\n   * @param {QueryParams} params The query parameters to filter or modify the request for shipment scopes.\n   * @return {Observable<ShipmentScopesOut>} An observable that emits the shipment scopes data.\n   */\n  getShipmentScopes (params: QueryParams): Observable<ShipmentScopesOut> {\n    return this.http.get<ApiSuccess<ShipmentScopesOut>>(`${this.url}/shipment-scopes`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the available shipment content types based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the shipment content types.\n   * @return {Observable<ShipmentContentTypesOut>} An observable that emits the shipment content types data.\n   */\n  getShipmentContentTypes (params: QueryParams): Observable<ShipmentContentTypesOut> {\n    return this.http.get<ApiSuccess<ShipmentContentTypesOut>>(`${this.url}/shipment-content-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of generic folios based on the given query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the generic folios.\n   * @return {Observable<GenericFoliosOut>} An observable containing the fetched generic folios.\n   */\n  getGenericFolios (params: QueryParams): Observable<GenericFoliosOut> {\n    return this.http.get<ApiSuccess<GenericFoliosOut>>(`${this.url}/generic-folios`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update a generic folio.\n   *\n   * @param {GenericFolioIn} body - The payload containing the details of the generic folio to be created or updated.\n   * @return {Observable<GenericFolioOut>} An observable containing the response data of the created or updated generic folio.\n   */\n  postGenericFolio (body: GenericFolioIn): Observable<GenericFolioOut> {\n    return this.http.post<ApiSuccess<GenericFolioOut>>(`${this.url}/generic-folios`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a generic folio with the specified ID using the provided data.\n   *\n   * @param {number} id - The unique identifier of the generic folio to update.\n   * @param {GenericFolioIn} body - The data to update the generic folio with.\n   * @return {Observable<GenericFolioOut>} An observable containing the updated generic folio.\n   */\n  putGenericFolio (id: number, body: GenericFolioIn): Observable<GenericFolioOut> {\n    return this.http.put<ApiSuccess<GenericFolioOut>>(`${this.url}/generic-folios/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a PUT request to update a Generic Folio resource with the specified ID and body data, and returns the updated resource.\n   *\n   * @param {number} id - The unique identifier of the Generic Folio to be updated.\n   * @param {Partial<GenericFolioIn>} body - The partial data representing the changes to be applied to the Generic Folio.\n   * @return {Observable<GenericFolioOut>} An observable containing the updated Generic Folio resource.\n   */\n  pathGenericFolio (id: number, body: Partial<GenericFolioIn>): Observable<GenericFolioOut> {\n    return this.http.put<ApiSuccess<GenericFolioOut>>(`${this.url}/generic-folios/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new product.\n   *\n   * @param {ProductIn} body - The product data to be sent in the request body.\n   * @return {Observable<ProductOut>} An observable emitting the created product data.\n   */\n  postProduct (body: ProductIn): Observable<ProductOut> {\n    return this.http.post<ApiSuccess<ProductOut>>(`${this.url}/products`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing product with the given ID using the provided data.\n   *\n   * @param {number} id - The unique identifier of the product to update.\n   * @param {ProductIn} body - The product data to update.\n   * @return {Observable<ProductOut>} An observable containing the updated product data.\n   */\n  putProduct (id: number, body: ProductIn): Observable<ProductOut> {\n    return this.http.put<ApiSuccess<ProductOut>>(`${this.url}/products/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of shipment income types based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the shipment income types.\n   * @return {Observable<ShipmentIncomeTypesOut>} An observable containing the shipment income types data.\n   */\n  getShipmentIncomeTypes (params: QueryParams): Observable<ShipmentIncomeTypesOut> {\n    return this.http.get<ApiSuccess<ShipmentIncomeTypesOut>>(`${this.url}/shipment-income-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new shipment income type.\n   *\n   * @param {ShipmentIncomeTypeIn} body The payload containing the details of the shipment income type to be created.\n   * @return {Observable<ShipmentIncomeTypeOut>} An observable that emits the created shipment income type data.\n   */\n  postShipmentIncomeType (body: ShipmentIncomeTypeIn): Observable<ShipmentIncomeTypeOut> {\n    return this.http.post<ApiSuccess<ShipmentIncomeTypeOut>>(`${this.url}/shipment-income-types`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the shipment income type with the specified ID.\n   *\n   * @param {number} id - The identifier of the shipment income type to update.\n   * @param {ShipmentIncomeTypeIn} body - The data to update the shipment income type with.\n   * @return {Observable<ShipmentIncomeTypeOut>} An observable emitting the updated shipment income type.\n   */\n  putShipmentIncomeType (id: number, body: ShipmentIncomeTypeIn): Observable<ShipmentIncomeTypeOut> {\n    return this.http.put<ApiSuccess<ShipmentIncomeTypeOut>>(`${this.url}/shipment-income-types/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of unique folios based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter and fetch unique folios.\n   * @return {Observable<UniqueFoliosOut>} An observable that emits the unique folios data.\n   */\n  getUniqueFolios (params: QueryParams): Observable<UniqueFoliosOut> {\n    return this.http.get<ApiSuccess<UniqueFoliosOut>>(`${this.url}/unique-folios`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a unique folio.\n   *\n   * @param {UniqueFolioIn} body - The data object containing details for the unique folio to be created.\n   * @return {Observable<UniqueFolioOut>} An observable that emits the created unique folio details.\n   */\n  postUniqueFolio (body: UniqueFolioIn): Observable<UniqueFolioOut> {\n    return this.http.post<ApiSuccess<UniqueFolioOut>>(`${this.url}/unique-folios`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a unique folio with the given data using the provided ID.\n   *\n   * @param {number} id - The ID of the unique folio to be updated.\n   * @param {UniqueFolioIn} body - The payload containing the details of the unique folio to update.\n   * @return {Observable<UniqueFolioOut>} An observable that emits the updated unique folio.\n   */\n  putUniqueFolio (id: number, body: UniqueFolioIn): Observable<UniqueFolioOut> {\n    return this.http.put<ApiSuccess<UniqueFolioOut>>(`${this.url}/unique-folios/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a unique folio by its identifier with the provided data.\n   *\n   * @param {number} id - The identifier of the unique folio to update.\n   * @param {Partial<UniqueFolioIn>} body - The partial data of the unique folio to update.\n   * @return {Observable<UniqueFolioOut>} An observable emitting the updated unique folio data.\n   */\n  pathUniqueFolio (id: number, body: Partial<UniqueFolioIn>): Observable<UniqueFolioOut> {\n    return this.http.put<ApiSuccess<UniqueFolioOut>>(`${this.url}/unique-folios/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves shipment groups based on the provided query parameters.\n   *\n   * @param params - The query parameters to filter the shipment groups.\n   * @returns An Observable that emits the shipment groups data.\n   */\n  getShipmentGroups (params: QueryParams): Observable<ShipmentGroupsOut> {\n    return this.http.get<ApiSuccess<ShipmentGroupsOut>>(`${this.url}/shipment-groups`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the shipment statuses from the API.\n   *\n   * @param params - The query parameters to filter or modify the request.\n   * @returns An Observable that emits the shipment statuses output.\n   */\n  getShipmentStatuses (params: QueryParams): Observable<ShipmentStatusesOut> {\n    return this.http.get<ApiSuccess<ShipmentStatusesOut>>(`${this.url}/shipment-statuses`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches questions from the catalogs API.\n   *\n   * Sends an HTTP GET request to `${this.url}/questions` using the supplied query parameters\n   * and returns the unwrapped payload (`data`) from the API response.\n   *\n   * @param params - Query parameters to include in the request (e.g. paging, filters, sorting).\n   * @returns An Observable that emits the QuestionsOut payload (the `data` field from ApiSuccess<QuestionsOut>).\n   */\n  getQuestions (params: QueryParams): Observable<QuestionsOut> {\n    return this.http.get<ApiSuccess<QuestionsOut>>(`${this.url}/questions`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieve a single question by its id.\n   *\n   * Sends an HTTP GET request to the questions endpoint and returns an Observable that emits\n   * the QuestionOut payload extracted from the API success envelope.\n   *\n   * @param id - The numeric identifier of the question to fetch.\n   * @returns An Observable that emits the requested QuestionOut. The Observable will error\n   *          if the HTTP request fails (for example network issues or non-2xx responses).\n   */\n  getQuestion (id: number): Observable<QuestionOut> {\n    return this.http.get<ApiSuccess<QuestionOut>>(`${this.url}/questions/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new question and returns the created resource.\n   *\n   * The request payload is sent as an object with a `body` property containing the provided\n   * QuestionIn value (i.e. { body: QuestionIn }). On success the HTTP response is expected\n   * to follow the ApiSuccess<T> shape; the operator maps that response to the inner `data`\n   * object and emits it as a QuestionOut.\n   *\n   * @param body - The question payload to create (QuestionIn).\n   * @returns Observable<QuestionOut> that emits the created question on success.\n   */\n  postQuestion (body: QuestionIn): Observable<QuestionOut> {\n    return this.http.post<ApiSuccess<QuestionOut>>(`${this.url}/questions`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Update a question by its ID.\n   *\n   * Sends an HTTP PUT to `${this.url}/questions/${id}` with the provided payload.\n   * The request body is sent as an object with a `body` property containing the\n   * `QuestionIn` data. The server response is expected to be an `ApiSuccess<QuestionOut>`\n   * and this method returns an Observable that emits the unwrapped `QuestionOut`.\n   *\n   * @param id - The identifier of the question to update.\n   * @param body - The update payload for the question.\n   * @returns An Observable that emits the updated `QuestionOut` on success.\n   */\n  putQuestion (id: number, body: QuestionIn): Observable<QuestionOut> {\n    return this.http.put<ApiSuccess<QuestionOut>>(`${this.url}/questions/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a question by its ID.\n   *\n   * Sends an HTTP DELETE request to the backend endpoint `/questions/{id}` and\n   * returns an Observable that emits the API response's `data` payload (typically an empty object).\n   *\n   * The implementation maps an ApiSuccess wrapper to its `data` property before emitting.\n   *\n   * @param id - The numeric identifier of the question to delete.\n   * @returns An Observable that emits the deleted resource payload ({} expected) on success.\n   *          The Observable will emit an error if the HTTP request fails.\n   */\n  deleteQuestion (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/questions/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches holidays from the catalogs API.\n   *\n   * Sends an HTTP GET request to `${this.url}/holidays` using the supplied query parameters\n   * and returns the unwrapped payload (`data`) from the API response.\n   *\n   * @param params - Query parameters to include in the request (e.g. paging, filters, sorting).\n   * @returns An Observable that emits the HolidaysOut payload (the `data` field from ApiSuccess<HolidaysOut>).\n   */\n  getHolidays (params: QueryParams): Observable<HolidaysOut> {\n    return this.http.get<ApiSuccess<HolidaysOut>>(`${this.url}/holidays`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieve a single holiday by its id.\n   *\n   * Sends an HTTP GET request to the holidays endpoint and returns an Observable that emits\n   * the HolidayOut payload extracted from the API success envelope.\n   *\n   * @param id - The numeric identifier of the holiday to fetch.\n   * @returns An Observable that emits the requested HolidayOut. The Observable will error\n   *          if the HTTP request fails (for example network issues or non-2xx responses).\n   */\n  getHoliday (id: number): Observable<HolidayOut> {\n    return this.http.get<ApiSuccess<HolidayOut>>(`${this.url}/holidays/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new holiday and returns the created resource.\n   *\n   * The request payload is sent as an object with a `body` property containing the provided\n   * HolidayIn value (i.e. { body: HolidayIn }). On success the HTTP response is expected\n   * to follow the ApiSuccess<T> shape; the operator maps that response to the inner `data`\n   * object and emits it as a HolidayOut.\n   *\n   * @param body - The holiday payload to create (HolidayIn).\n   * @returns Observable<HolidayOut> that emits the created holiday on success.\n   */\n  postHoliday (body: HolidayIn): Observable<HolidayOut> {\n    return this.http.post<ApiSuccess<HolidayOut>>(`${this.url}/holidays`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Update a holiday by its ID.\n   *\n   * Sends an HTTP PUT to `${this.url}/holidays/${id}` with the provided payload.\n   * The request body is sent as an object with a `body` property containing the\n   * `HolidayIn` data. The server response is expected to be an `ApiSuccess<HolidayOut>`\n   * and this method returns an Observable that emits the unwrapped `HolidayOut`.\n   *\n   * @param id - The identifier of the holiday to update.\n   * @param body - The update payload for the holiday.\n   * @returns An Observable that emits the updated `HolidayOut` on success.\n   */\n  putHoliday (id: number, body: HolidayIn): Observable<HolidayOut> {\n    return this.http.put<ApiSuccess<HolidayOut>>(`${this.url}/holidays/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a question by its ID.\n   *\n   * Sends an HTTP DELETE request to the backend endpoint `/questions/{id}` and\n   * returns an Observable that emits the API response's `data` payload (typically an empty object).\n   *\n   * The implementation maps an ApiSuccess wrapper to its `data` property before emitting.\n   *\n   * @param id - The numeric identifier of the question to delete.\n   * @returns An Observable that emits the deleted resource payload ({} expected) on success.\n   *          The Observable will emit an error if the HTTP request fails.\n   */\n  deleteHoliday (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/holidays/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of business party trader types\n   * @param {QueryParams} params - Query parameters for filtering and pagination (optional)\n   * @returns {Observable<BusinessPartyTraderTypesOut>} Observable containing the list of trader types\n   */\n  getBusinessPartyTraderTypes (params: QueryParams): Observable<BusinessPartyTraderTypesOut> {\n    return this.http.get<ApiSuccess<BusinessPartyTraderTypesOut>>(`${this.url}/business-party-trader-types`,\n      { params }\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves package locations based on the provided query parameters.\n   * @param params - Query parameters to filter or configure the package locations request\n   * @returns An Observable that emits the package locations data\n   */\n  getPackageLocations (params: QueryParams): Observable<PackageLocationsData> {\n    return this.http.get<ApiSuccess<PackageLocationsData>>(`${this.url}/package-locations`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { forkJoin, map, mergeMap } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  CountryCurrencyRate,\n  CountryReferenceExtraCharge,\n  EmployeeCustomerDhl,\n} from './models/api-companies.interfaces'\nimport {\n  AccountCategoriesOut,\n  AccountEntitiesIn,\n  AccountEntitiesOut,\n  AccountIn,\n  AccountOut, AccountsActivesOut,\n  AccountsOut,\n  AccountTypeIn,\n  AccountTypeOut,\n  AccountTypesOut,\n  BoardingProcessIdIn,\n  BoardingProcessIn,\n  CompaniesOut,\n  CompanyCountriesOut,\n  CompanyCountryIn,\n  CompanyCountryOut,\n  CompanyCountryTaxesOut,\n  CompanyIn,\n  CompanyOut,\n  CountryReferenceCurrenciesOut,\n  CountryReferenceCurrencyIn,\n  CountryReferenceCurrencyOut,\n  CountryReferenceExtraChargeIn,\n  CountryReferenceExtraChargeOut,\n  CountryReferenceIn,\n  CountryReferenceOut,\n  CountryReferenceProductIn,\n  CountryReferenceProductOut,\n  CountryReferenceProductsOut,\n  CountryReferencesOut,\n  EmployeeCustomersIn,\n  EmployeeCustomersOut,\n  EmployeeIn,\n  EmployeeOut,\n  EmployeesCustomersOut,\n  EmployeesOut,\n  ExchangeIn,\n  ExchangeOut,\n  ExchangesOut,\n  ExtraChargeEntitiesIn,\n  ExtraChargeEntitiesOut,\n  InstallationIn,\n  InstallationOut,\n  InstallationsOut,\n  LocationEmployeeBatchIn,\n  LocationEmployeeOut,\n  LocationEmployeesOut,\n  LocationIn,\n  LocationOut,\n  LocationsOut,\n  ParameterConfigIn,\n  ParameterConfigOut,\n  ParameterConfigsOut,\n  ParametersByLevelIn,\n  ParametersOut,\n  ParametersValuesIn,\n  ParametersValuesOut,\n  ParameterValueIn,\n  ParameterValueOut,\n  ProductEntitiesIn,\n  ProductEntitiesOut,\n  SupplyEntitiesIn,\n  SupplyEntitiesOut,\n  SystemEntitiesIn,\n  SystemEntitiesOut,\n  SystemIn,\n  SystemOut,\n  SystemsOut,\n  TDXAccountSettingsIn,\n  TDXAccountSettingsOut,\n  TDXAccountsSettingsOut,\n  WorkflowConfigsBatchIn,\n  WorkflowConfigsOut,\n  WorkflowsOut\n} from './models/api-companies.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiCompaniesService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the companies API from the environment configurations.\n   *\n   * @return {string} The URL of the companies API.\n   */\n  get url (): string {\n    return this.environments.apiCompaniesUrl ?? ''\n  }\n\n  /**\n   * Fetches the installations based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters used to filter the installations query.\n   * @return {Observable<InstallationsOut>} An observable that emits the installation's data.\n   */\n  getInstallations (params: QueryParams): Observable<InstallationsOut> {\n    return this.http.get<ApiSuccess<InstallationsOut>>(`${this.url}/installations`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the installation details based on the given installation ID.\n   *\n   * @param {number} id - The unique identifier of the installation to retrieve.\n   * @returns {Observable<InstallationOut>} An observable of the installation details.\n   */\n  getInstallation (id: number): Observable<InstallationOut> {\n    return this.http.get<ApiSuccess<InstallationOut>>(`${this.url}/installations/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a post-installation request to the server and retrieves the installation details.\n   *\n   * @param {InstallationIn} body - The installation details to be sent in the request body.\n   * @return {Observable<InstallationOut>} An observable that emits the response containing installation output details.\n   */\n  postInstallation (body: InstallationIn): Observable<InstallationOut> {\n    return this.http.post<ApiSuccess<InstallationOut>>(`${this.url}/installations`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing installation record by its ID.\n   *\n   * @param id The unique identifier of the installation to update.\n   * @param body The data payload containing the updated installation information.\n   * @return An observable that emits the updated installation data upon a successful update.\n   */\n  putInstallation (id: number, body: InstallationIn): Observable<InstallationOut> {\n    return this.http.put<ApiSuccess<InstallationOut>>(`${this.url}/installations/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes an installation by its unique identifier.\n   *\n   * @param {number} id - The unique identifier of the installation to be deleted.\n   * @return {Observable<{}>} An observable that emits the response after the installation is deleted.\n   */\n  deleteInstallation (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/installations/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of locations based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters to use for querying locations.\n   * @return {Observable<LocationsOut>} An observable that emits the location's data.\n   */\n  getLocations (params: QueryParams): Observable<LocationsOut> {\n    return this.http.get<ApiSuccess<LocationsOut>>(`${this.url}/locations`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the location details for a given location ID.\n   *\n   * @param {number} id - The unique identifier of the location.\n   * @return {Observable<LocationOut>} An Observable containing the location details.\n   */\n  getLocation (id: number): Observable<LocationOut> {\n    return this.http.get<ApiSuccess<LocationOut>>(`${this.url}/locations/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a location object to the server and returns the created location data.\n   *\n   * @param {LocationIn} body - The location input object to be sent in the request body.\n   * @return {Observable<LocationOut>} An observable emitting the created location output object.\n   */\n  postLocation (body: LocationIn): Observable<LocationOut> {\n    return this.http.post<ApiSuccess<LocationOut>>(`${this.url}/locations`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the location information for the specified ID.\n   *\n   * @param {number} id - The unique identifier of the location to be updated.\n   * @param {LocationIn} body - The updated location data to be sent in the request body.\n   * @return {Observable<LocationOut>} An observable containing the updated location information.\n   */\n  putLocation (id: number, body: LocationIn): Observable<LocationOut> {\n    return this.http.put<ApiSuccess<LocationOut>>(`${this.url}/locations/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a location by its unique identifier.\n   *\n   * @param {number} id - The unique identifier of the location to be deleted.\n   * @return {Observable<{}>} An observable that emits an empty object upon successful deletion.\n   */\n  deleteLocation (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/locations/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of active supply entities.\n   *\n   * @param {QueryParams} params - The query parameters to filter supply entities.\n   * @return {Observable<SupplyEntitiesOut>} Observable emitting supply entities data.\n   */\n  getSupplyEntitiesActives (params: QueryParams): Observable<SupplyEntitiesOut> {\n    return this.http.get<ApiSuccess<SupplyEntitiesOut>>(`${this.url}/supply-entities/actives`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves supply entities based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter and fetch the supply entities.\n   * @return {Observable<SupplyEntitiesOut>} An observable that emits the supply entities data.\n   */\n  getSupplyEntities (params: QueryParams): Observable<SupplyEntitiesOut> {\n    return this.http.get<ApiSuccess<SupplyEntitiesOut>>(`${this.url}/supply-entities`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends supply entities information to the server and receives the processed supply entities data in response.\n   *\n   * @param {SupplyEntitiesIn} body - The supply entities data to be sent to the server.\n   * @return {Observable<SupplyEntitiesOut>} An observable containing the processed supply entities data.\n   */\n  putSupplyEntities (body: SupplyEntitiesIn): Observable<SupplyEntitiesOut> {\n    return this.http.put<ApiSuccess<SupplyEntitiesOut>>(`${this.url}/supply-entities`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of employees based on the specified query parameters.\n   *\n   * @param {QueryParams} params - The parameters to filter and sort the employees.\n   * @return {Observable<EmployeesOut>} An observable that emits the list of employees.\n   */\n  getEmployees (params: QueryParams): Observable<EmployeesOut> {\n    return this.http.get<ApiSuccess<EmployeesOut>>(`${this.url}/employees`, {\n      params,\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches an employee's details based on the provided employee ID.\n   *\n   * @param {number} id - The unique identifier of the employee.\n   * @return {Observable<EmployeeOut>} An observable that emits the employee's details.\n   */\n  getEmployee (id: number): Observable<EmployeeOut> {\n    return this.http.get<ApiSuccess<EmployeeOut>>(`${this.url}/employees/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new employee record.\n   *\n   * @param {EmployeeIn} body - The data of the employee to be created.\n   * @return {Observable<EmployeeOut>} An observable containing the created employee data.\n   */\n  postEmployee (body: EmployeeIn): Observable<EmployeeOut> {\n    return this.http.post<ApiSuccess<EmployeeOut>>(`${this.url}/employees`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing employee record with the specified data.\n   *\n   * @param {number} id - The unique identifier of the employee to be updated.\n   * @param {EmployeeIn} body - The employee data to update the record with.\n   * @return {Observable<EmployeeOut>} An observable containing the updated employee data.\n   */\n  putEmployee (id: number, body: EmployeeIn): Observable<EmployeeOut> {\n    return this.http.put<ApiSuccess<EmployeeOut>>(`${this.url}/employees/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an employee with the specified ID using the provided partial data.\n   * @param id - The unique identifier of the employee to update\n   * @param body - Partial employee data containing the fields to update\n   * @returns An Observable that emits the updated employee data\n   */\n  patchEmployee (id: number, body: Partial<EmployeeIn>): Observable<EmployeeOut> {\n    return this.http.patch<ApiSuccess<EmployeeOut>>(`${this.url}/employees/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Enable an employee with the specified ID.\n   * @param id - The unique identifier of the employee to update\n   * @returns An Observable that emits the enabled employee data\n   */\n  patchEmployeeEnable (id: number): Observable<EmployeeOut> {\n    return this.http.patch<ApiSuccess<EmployeeOut>>(`${this.url}/employees/${id}/enable`, {})\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes an employee based on the provided ID.\n   *\n   * @param {number} id - The unique identifier of the employee to delete.\n   * @return {Observable<{}>} An observable containing the response data after the employee is deleted.\n   */\n  deleteEmployee (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/employees/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of employees for a specified location based on provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter and retrieve the location employees.\n   * @returns {Observable<LocationEmployeesOut>} An observable that emits the list of employees for the specified location.\n   */\n  getLocationEmployees (params: QueryParams): Observable<LocationEmployeesOut> {\n    return this.http.get<ApiSuccess<LocationEmployeesOut>>(`${this.url}/location-employees`, {\n      params,\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the location employee details for a given employee ID.\n   *\n   * @param {number} id - The unique identifier of the employee whose location details are to be retrieved.\n   * @return {Observable<LocationEmployeeOut>} An observable containing the location employee details.\n   */\n  getLocationEmployee (id: number): Observable<LocationEmployeeOut> {\n    return this.http.get<ApiSuccess<LocationEmployeeOut>>(`${this.url}/location-employees/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a specific location employee by their unique identifier.\n   *\n   * @param {number} id - The unique identifier of the employee to be deleted.\n   * @return {Observable<{}>} - An observable emitting the server's response after the deletion.\n   */\n  deleteLocationEmployee (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/location-employees/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a batch of location-employee associations to the server for processing.\n   *\n   * @param {LocationEmployeeBatchIn} body - The object containing a batch of location-employee data to be posted.\n   * @return {Observable<EmployeeOut>} An observable emitting the processed employee data from the server's response.\n   */\n  postLocationEmployeeBatch (body: LocationEmployeeBatchIn): Observable<EmployeeOut> {\n    return this.http.post<ApiSuccess<EmployeeOut>>(`${this.url}/location-employees/batch`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of countries where the company operates.\n   *\n   * @param {QueryParams} params - The query parameters for the API request.\n   * @return {Observable<CompanyCountriesOut>} An observable containing the list of company countries.\n   */\n  getCompanyCountries (params: QueryParams): Observable<CompanyCountriesOut> {\n    return this.http.get<ApiSuccess<CompanyCountriesOut>>(`${this.url}/company-countries`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the country information for a specified company by its ID.\n   *\n   * @param {number} id - The unique identifier of the company.\n   * @return {Observable<CompanyCountryOut>} An observable containing the country information of the company.\n   */\n  getCompanyCountry (id: number): Observable<CompanyCountryOut> {\n    return this.http.get<ApiSuccess<CompanyCountryOut>>(`${this.url}/company-countries/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to update or create a company country entry on the server.\n   *\n   * @param {CompanyCountryIn} body The data object representing the company country information to be sent to the server.\n   * @return {Observable<CompanyCountryOut>} An observable containing the server response with the updated or created company country data.\n   */\n  postCompanyCountry (body: CompanyCountryIn): Observable<CompanyCountryOut> {\n    return this.http.post<ApiSuccess<CompanyCountryOut>>(`${this.url}/company-countries`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the country information for a specific company.\n   *\n   * @param {number} id - The unique identifier of the company whose country information needs to be updated.\n   * @param {CompanyCountryIn} body - The updated country information to be applied to the company.\n   * @return {Observable<CompanyCountryOut>} An observable that emits the updated company country information.\n   */\n  putCompanyCountry (id: number, body: CompanyCountryIn): Observable<CompanyCountryOut> {\n    return this.http.put<ApiSuccess<CompanyCountryOut>>(`${this.url}/company-countries/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a company-country association by its unique identifier.\n   *\n   * @param {number} id - The unique identifier of the company-country record to be deleted.\n   * @return {Observable<{}>} An observable emitting the result of the delete operation.\n   */\n  deleteCompanyCountry (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/company-countries/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the reference currencies for a given country.\n   *\n   * @param {QueryParams} params - The query parameters to include in the request.\n   * @return {Observable<CountryReferenceCurrenciesOut>} The observable containing the country reference currencies data.\n   */\n  getCountryReferenceCurrencies (params: QueryParams): Observable<CountryReferenceCurrenciesOut> {\n    return this.http.get<ApiSuccess<CountryReferenceCurrenciesOut>>(`${this.url}/country-reference-currencies`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the reference currency details for a specific country using its ID.\n   *\n   * @param {number} id - The unique identifier of the country.\n   * @return {Observable<CountryReferenceCurrencyOut>} An observable emitting the country's reference currency details.\n   */\n  getCountryReferenceCurrency (id: number): Observable<CountryReferenceCurrencyOut> {\n    return this.http.get<ApiSuccess<CountryReferenceCurrencyOut>>(`${this.url}/country-reference-currencies/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of currencies for different countries along with their current exchange rates.\n   *\n   * @param {QueryParams} params - The query parameters used to fetch the country reference currencies.\n   * @return {Observable<CountryCurrencyRate[]>} An observable that emits an array of country currency rates.\n   */\n  getCountryCurrenciesWithRate (params: QueryParams): Observable<CountryCurrencyRate[]> {\n    return this.getCountryReferenceCurrencies(params)\n      .pipe(mergeMap((currenciesData) => {\n        const $observables = currenciesData.country_reference_currencies\n          .map((item) =>\n            this.getCurrentExchanges({\n              currency_id: item.currency.id,\n            }).pipe(\n              map((exchangesData) => ({\n                ...item,\n                rate: exchangesData.exchanges[0]?.value,\n              }))\n            )\n          )\n\n        return forkJoin($observables)\n      }))\n  }\n\n  /**\n   * Updates the reference currency for a specified country.\n   *\n   * @param {number} id - The unique identifier of the country.\n   * @param {CountryReferenceCurrencyIn} body - The data for updating the country's reference currency.\n   * @return {Observable<CountryReferenceCurrencyOut>} An Observable emitting the updated country reference currency data.\n   */\n  putCountryReferenceCurrency (id: number, body: CountryReferenceCurrencyIn): Observable<CountryReferenceCurrencyOut> {\n    return this.http.put<ApiSuccess<CountryReferenceCurrencyOut>>(`${this.url}/country-reference-currencies/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a country reference currency.\n   *\n   * @param {CountryReferenceCurrencyIn} body - The payload containing the country reference currency data.\n   * @return {Observable<CountryReferenceCurrencyOut>} An observable emitting the created country reference currency.\n   */\n  postCountryReferenceCurrency (body: CountryReferenceCurrencyIn): Observable<CountryReferenceCurrencyOut> {\n    return this.http.post<ApiSuccess<CountryReferenceCurrencyOut>>(`${this.url}/country-reference-currencies`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update a country reference extra charge.\n   *\n   * @param {CountryReferenceExtraChargeIn} body - The request payload containing details about the country reference extra charge.\n   * @return {Observable<CountryReferenceExtraChargeOut>} An observable containing the response with the created or updated country reference extra charge.\n   */\n  postCountryReferenceExtraCharge (body: CountryReferenceExtraChargeIn): Observable<CountryReferenceExtraChargeOut> {\n    return this.http.post<ApiSuccess<CountryReferenceExtraChargeOut>>(`${this.url}/country-reference-extra-charges`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a country reference extra charge by its ID.\n   *\n   * @param {number} id - The unique identifier of the country reference extra charge to be updated.\n   * @param {CountryReferenceExtraChargeIn} body - The data to update the country reference extra charge with.\n   * @return {Observable<CountryReferenceExtraChargeOut>} An observable that emits the updated country reference extra charge.\n   */\n  putCountryReferenceExtraCharge (id: number, body: CountryReferenceExtraChargeIn): Observable<CountryReferenceExtraChargeOut> {\n    return this.http.put<ApiSuccess<CountryReferenceExtraChargeOut>>(`${this.url}/country-reference-extra-charges/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Enables or disables a country reference extra charge based on the provided parameters.\n   *\n   * @param {CountryReferenceExtraCharge} extraCharge - The country reference extra charge object to be updated.\n   * @param {boolean} [isActive] - Optional parameter to explicitly set the active status of the extra charge.\n   *                               If not provided, the current active status will be toggled.\n   * @return {Observable<EmployeeCustomersOut>} An Observable that emits the updated employee customers output.\n   */\n  patchCountryReferenceExtraCharge (extraCharge: CountryReferenceExtraCharge, isActive?: boolean): Observable<EmployeeCustomersOut> {\n    return this.http.patch<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/country-reference-extra-charges/${extraCharge.id}`, {\n      is_active: isActive ?? !extraCharge.is_active\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches exchange data based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters for retrieving exchange data.\n   * @return {Observable<ExchangesOut>} An observable containing the exchange data.\n   */\n  getExchanges (params: QueryParams): Observable<ExchangesOut> {\n    return this.http.get<ApiSuccess<ExchangesOut>>(`${this.url}/exchanges`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update an exchange.\n   *\n   * @param {ExchangeIn} body - The request body containing the exchange data to be sent.\n   * @return {Observable<ExchangeOut>} An observable that emits the response containing the created or updated exchange data.\n   */\n  postExchange (body: ExchangeIn): Observable<ExchangeOut> {\n    return this.http.post<ApiSuccess<ExchangeOut>>(`${this.url}/exchanges`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing exchange with new data.\n   *\n   * @param {number} id - The unique identifier of the exchange to update.\n   * @param {ExchangeIn} body - The data to update the exchange with.\n   * @return {Observable<ExchangeOut>} An observable that emits the updated exchange data.\n   */\n  putExchange (id: number, body: ExchangeIn): Observable<ExchangeOut> {\n    return this.http.put<ApiSuccess<ExchangeOut>>(`${this.url}/exchanges/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the current exchanges based on the given query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the exchanges.\n   *\n   * @returns {Observable<ExchangesOut>} - An observable that emits the API response data containing the current exchanges.\n   */\n  getCurrentExchanges (params: QueryParams): Observable<ExchangesOut> {\n    return this.http.get<ApiSuccess<ExchangesOut>>(`${this.url}/exchanges/current`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the country-specific tax information for a company.\n   *\n   * @param {QueryParams} params - The parameters used to filter and query the taxes.\n   * @return {Observable<CompanyCountryTaxesOut>} An observable that emits the tax information.\n   */\n  getCompanyCountryTaxes (params: QueryParams): Observable<CompanyCountryTaxesOut> {\n    return this.http.get<ApiSuccess<CompanyCountryTaxesOut>>(`${this.url}/company-country-taxes`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches account information based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters for fetching account data.\n   * @return {Observable<AccountsOut>} An observable emitting the account data.\n   */\n  getAccounts (params: QueryParams): Observable<AccountsOut> {\n    return this.http.get<ApiSuccess<AccountsOut>>(`${this.url}/accounts`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the account information for the specified account ID.\n   *\n   * @param {number} id - The unique identifier of the account to retrieve.\n   * @return {Observable<AccountOut>} An observable that emits the account details.\n   */\n  getAccount (id: number): Observable<AccountOut> {\n    return this.http.get<ApiSuccess<AccountOut>>(`${this.url}/accounts/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new account by sending account details in the body.\n   *\n   * @param {AccountIn} body - The account information to be sent in the request body.\n   * @return {Observable<AccountOut>} Observable that emits the created account details upon success.\n   */\n  postAccount (body: AccountIn): Observable<AccountOut> {\n    return this.http.post<ApiSuccess<AccountOut>>(`${this.url}/accounts`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an account with the specified ID using the provided data.\n   *\n   * @param {number} id - The unique identifier of the account to be updated.\n   * @param {AccountIn} body - The data to update the account with.\n   * @return {Observable<AccountOut>} An observable emitting the updated account details.\n   */\n  putAccount (id: number, body: AccountIn): Observable<AccountOut> {\n    return this.http.put<ApiSuccess<AccountOut>>(`${this.url}/accounts/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the status of an account.\n   *\n   * This method sends an HTTP PATCH request to the accounts endpoint\n   * in order to activate or deactivate a specific account.\n   *\n   * @param id Unique identifier of the account.\n   * @param isActive Status to assign to the account.\n   * - `true`: activates the account.\n   * - `false`: deactivates the account.\n   */\n  patchAccount (id: number, isActive: boolean): Observable<AccountOut> {\n    return this.http.patch<ApiSuccess<AccountOut>>(`${this.url}/accounts/${id}`, {\n      is_active: isActive\n    })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of active accounts.\n   *\n   * This method sends an HTTP GET request to the active accounts endpoint,\n   * allowing query parameters for filtering or pagination.\n   *\n   * @param params Query parameters used to filter\n   * or paginate the results.\n   */\n  getAccountsActives (params: QueryParams): Observable<AccountsActivesOut> {\n    return this.http.get<ApiSuccess<AccountsActivesOut>>(`${this.url}/accounts/actives`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an account entity using the provided details.\n   *\n   * @param {AccountEntitiesIn} body The account entity data to be updated.\n   * @return {Observable<AccountEntitiesOut>} An observable containing the updated account entity details.\n   */\n  putAccountEntity (body: AccountEntitiesIn): Observable<AccountEntitiesOut> {\n    return this.http.put<ApiSuccess<AccountEntitiesOut>>(`${this.url}/account-entities`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of active account entities based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters to filter and query active account entities.\n   * @return {Observable<AccountEntitiesOut>} An observable that emits the list of active account entities.\n   */\n  getAccountEntitiesActives (params: QueryParams): Observable<AccountEntitiesOut> {\n    return this.http.get<ApiSuccess<AccountEntitiesOut>>(`${this.url}/account-entities/actives`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of account categories based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter the account categories.\n   * @return {Observable<AccountCategoriesOut>} An observable that emits the fetched account categories data.\n   */\n  getAccountCategories (params: QueryParams): Observable<AccountCategoriesOut> {\n    return this.http.get<ApiSuccess<AccountCategoriesOut>>(`${this.url}/account-categories`, { params, })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of account types from the server.\n   *\n   * @param {QueryParams} params - The query parameters to filter or customize the request.\n   * @return {Observable<AccountTypesOut>} An observable emitting the account types data.\n   */\n  getAccountTypes (params: QueryParams): Observable<AccountTypesOut> {\n    return this.http.get<ApiSuccess<AccountTypesOut>>(`${this.url}/account-types`, { params, })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the account type for the given account ID.\n   *\n   * @param {number} id - The unique identifier of the account.\n   * @return {Observable<AccountTypeOut>} An observable that emits the account type data.\n   */\n  getAccountType (id: number): Observable<AccountTypeOut> {\n    return this.http.get<ApiSuccess<AccountTypeOut>>(`${this.url}/account-types/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new account type.\n   *\n   * @param {AccountTypeIn} body - The data for the account type to be created.\n   * @return {Observable<AccountTypeOut>} An observable that emits the created account type object.\n   */\n  postAccountType (body: AccountTypeIn): Observable<AccountTypeOut> {\n    return this.http.post<ApiSuccess<AccountTypeOut>>(`${this.url}/account-types`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an account type with the specified ID using the provided data.\n   *\n   * @param {number} id - The unique identifier of the account type to update.\n   * @param {AccountTypeIn} body - The data to update the account type with.\n   * @return {Observable<AccountTypeOut>} An observable containing the updated account type data.\n   */\n  putAccountType (id: number, body: AccountTypeIn): Observable<AccountTypeOut> {\n    return this.http.put<ApiSuccess<AccountTypeOut>>(`${this.url}/account-types/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves parameters based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter or fetch the desired parameters.\n   * @return {Observable<ParametersOut>} An observable that emits the fetched parameters.\n   */\n  getParameters (params: QueryParams): Observable<ParametersOut> {\n    return this.http.get<ApiSuccess<ParametersOut>>(`${this.url}/parameters`, { params, })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the parameter values based on the provided parameter names.\n   *\n   * @param {Object} params - An object containing the required parameters.\n   * @param {string[]} params.paramNames - An array of parameter names for which the values need to be fetched.\n   * @return {Observable<ParametersValuesOut>} An observable that emits the fetched parameter values.\n   */\n  postParametersValues ({ paramNames }: ParametersValuesIn): Observable<ParametersValuesOut> {\n    const parameters = paramNames.map((p) => ({ name: p }))\n\n    return this.http.post<ApiSuccess<ParametersValuesOut>>(`${this.url}/parameters-values`, { parameters })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves parameter values based on the provided level configuration.\n   *\n   * @param {ParametersByLevelIn} parameters - The input object containing the criteria or level details to retrieve the parameters.\n   * @return {Observable<ParametersValuesOut>} An observable that emits the parameter values fetched from the server.\n   */\n  postParameterValueByModel (parameters: ParametersByLevelIn): Observable<ParametersValuesOut> {\n    return this.http.post<ApiSuccess<ParametersValuesOut>>(`${this.url}/parameters-values`, { parameters })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the value of a specified parameter.\n   *\n   * @param {Object} input - The input object containing the parameter details.\n   * @param {string} input.paramName - The name of the parameter whose value is to be retrieved.\n   * @return {Observable<ParameterValueOut>} An observable emitting the value of the specified parameter.\n   */\n  getParameterValue ({\n    paramName,\n  }: ParameterValueIn): Observable<ParameterValueOut> {\n    return this.http.get<ApiSuccess<ParameterValueOut>>(`${this.url}/parameters-values/${paramName}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of country references based on the given query parameters.\n   *\n   * @param {QueryParams} params - The query parameters for retrieving country references.\n   * @return {Observable<CountryReferencesOut>} An observable containing the country reference data.\n   */\n  getCountryReferences (params: QueryParams): Observable<CountryReferencesOut> {\n    return this.http.get<ApiSuccess<CountryReferencesOut>>(`${this.url}/country-references`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the country reference data for a given country ID.\n   *\n   * @param {number} id - The unique identifier of the country for which the reference data is to be retrieved.\n   * @return {Observable<CountryReferenceOut>} An observable containing the country reference data.\n   */\n  getCountryReference (id: number): Observable<CountryReferenceOut> {\n    return this.http.get<ApiSuccess<CountryReferenceOut>>(`${this.url}/country-references/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a country reference resource with the specified ID and data.\n   *\n   * @param {number} id - The unique identifier of the country reference to be updated.\n   * @param {CountryReferenceIn} body - The data to update the country reference with.\n   * @return {Observable<CountryReferenceOut>} An observable that emits the updated country reference object.\n   */\n  putCountryReference (id: number, body: CountryReferenceIn): Observable<CountryReferenceOut> {\n    return this.http.put<ApiSuccess<CountryReferenceOut>>(`${this.url}/country-references/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the list of workflows based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter workflows.\n   * @return {Observable<WorkflowsOut>} An observable containing the workflow data.\n   */\n  getWorkflows (params: QueryParams): Observable<WorkflowsOut> {\n    return this.http.get<ApiSuccess<WorkflowsOut>>(`${this.url}/workflows`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the list of employee customer\n   *\n   * @param {QueryParams} params - The query parameters used to filter employee customers.\n   * @return {Observable<EmployeeCustomersOut>} An observable containing the employee customer data.\n   */\n  getEmployeesCustomers (params: QueryParams): Observable<EmployeesCustomersOut> {\n    return this.http.get<ApiSuccess<EmployeesCustomersOut>>(`${this.url}/employee-customers`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update employee customer records and processes the server response.\n   *\n   * @param {EmployeeCustomersIn} body - The request payload containing employee customer data to be sent to the server.\n   * @return {Observable<EmployeeCustomersOut>} An observable that emits the updated employee customer data on successful response.\n   */\n  postEmployeeCustomers (body: EmployeeCustomersIn): Observable<EmployeeCustomersOut> {\n    return this.http.post<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the employee-customer association record identified by the given ID with the provided data.\n   *\n   * @param {number} id - The identifier of the employee-customer record to update.\n   * @param {EmployeeCustomersIn} body - The data to update the employee-customer record with.\n   * @return {Observable<EmployeeCustomersOut>} An observable that emits the updated employee-customer data.\n   */\n  putEmployeeCustomers (id: number, body: EmployeeCustomersIn): Observable<EmployeeCustomersOut> {\n    return this.http.put<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the employee-customer details based on the provided employee customer ID.\n   *\n   * @param {number} id - The identifier of the employee-customer record to update.\n   * @return {Observable<EmployeeCustomersOut>} An observable that emits the updated employee-customer data.\n   */\n  getEmployeeCustomer (id: number): Observable<EmployeeCustomersOut> {\n    return this.http.get<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Enables or disables an employee customer's active state.\n   *\n   * @param {EmployeeCustomerDhl} employee - The employee customer object to be updated.\n   * @param {boolean} [isActive] - Optional parameter to explicitly set the active state.\n   *                                If null or undefined, the active state will be toggled.\n   * @return {Observable<EmployeeCustomersOut>} An observable containing the updated employee customer output.\n   */\n  patchEmployeeCustomers (employee: EmployeeCustomerDhl, isActive?: boolean): Observable<EmployeeCustomersOut> {\n    return this.http.patch<ApiSuccess<EmployeeCustomersOut>>(`${this.url}/employee-customers/${employee.id}`, {\n      is_active: isActive ?? !employee.is_active\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Submits a file containing employee customer data for a specific country to the server.\n   *\n   * @param {number} countryId - The identifier of the country for which the data is being uploaded.\n   * @param {File} file - The file contains employee customer data to be uploaded.\n   * @return {Observable<BoardingProcessIdIn>} Observable that emits the processed boarding process ID on success.\n   */\n  postEmployeeCustomersLoad (countryId: number, file: File): Observable<BoardingProcessIdIn> {\n    const body = new FormData()\n\n    body.append('file', file)\n    body.append('country_id', countryId.toString())\n\n    return this.http.post<ApiSuccess<BoardingProcessIdIn>>(`${this.url}/employee-customers/load`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Downloads a file containing customer data for a specific employee based on the provided country ID.\n   *\n   * @param {number} id - The ID of the country used as a filter for fetching the employee's customers.\n   * @return {Observable<Blob>} An observable that emits the file blob containing the customer data.\n   */\n  getEmployeeCustomersDownload (id:number):Observable<Blob> {\n    return this.http.get(`${this.url}/employee-customers/download`, {\n      params: { country_id: id },\n      responseType: 'blob'\n    })\n  }\n\n  /**\n   * Retrieves the boarding process details for a given ID.\n   *\n   * @param {number} id - The unique identifier of the boarding process to retrieve.\n   * @return {Observable<BoardingProcessIn>} An observable containing the boarding process details.\n   */\n  getBoardingProcess (id:number) {\n    return this.http.get<ApiSuccess<BoardingProcessIn>>(`${this.url}/boarding-process/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of systems based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters used to filter the systems.\n   * @return {Observable<SystemsOut>} An observable that emits the retrieved systems data.\n   */\n  getSystems (params: QueryParams): Observable<SystemsOut> {\n    return this.http.get<ApiSuccess<SystemsOut>>(`${this.url}/systems`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the system by the specified ID.\n   *\n   * @param {number} id - The unique identifier of the system to be retrieved.\n   * @return {Observable<SystemOut>} An observable that emits the requested system information.\n   */\n  getSystem (id: number): Observable<SystemOut> {\n    return this.http.get<ApiSuccess<SystemOut>>(`${this.url}/systems/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update a system.\n   *\n   * @param {SystemIn} body - The data representing the system to be created or updated.\n   * @return {Observable<SystemOut>} An observable emitting the resulting system output after the API request succeeds.\n   */\n  postSystem (body: SystemIn): Observable<SystemOut> {\n    return this.http.post<ApiSuccess<SystemOut>>(`${this.url}/systems`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the system identified by the given ID with the provided request body and returns the updated system details.\n   *\n   * @param {number} id - The unique identifier of the system to be updated.\n   * @param {SystemIn} body - The payload containing the updated system details.\n   * @return {Observable<SystemOut>} An observable emitting the updated system data.\n   */\n  putSystem (id: number, body: SystemIn): Observable<SystemOut> {\n    return this.http.put<ApiSuccess<SystemOut>>(`${this.url}/systems/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of system entities based on the specified query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter or specify the system entities to retrieve.\n   * @return {Observable<SystemEntitiesOut>} An Observable that emits the retrieved system entities.\n   */\n  getSystemEntities (params: QueryParams): Observable<SystemEntitiesOut> {\n    return this.http.get<ApiSuccess<SystemEntitiesOut>>(`${this.url}/system-entities`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the system entities by sending the provided data to the server.\n   *\n   * @param {SystemEntitiesIn} body - The data object representing the system entities to be updated.\n   * @return {Observable<SystemEntitiesOut>} An observable containing the updated system entities data.\n   */\n  putSystemEntities (body: SystemEntitiesIn): Observable<SystemEntitiesOut> {\n    return this.http.put<ApiSuccess<SystemEntitiesOut>>(`${this.url}/system-entities`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves workflow configurations based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the workflow configurations.\n   * @return {Observable<WorkflowConfigsOut>} An observable emitting the workflow configurations.\n   */\n  getWorkflowConfigs (params: QueryParams): Observable<WorkflowConfigsOut> {\n    return this.http.get<ApiSuccess<WorkflowConfigsOut>>(`${this.url}/workflow-configs`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a batch of workflow configuration data to the server for processing.\n   *\n   * @param {WorkflowConfigsBatchIn} body - The input data containing a batch of workflow configurations to be sent.\n   * @return {Observable<WorkflowConfigsOut>} An observable that emits the processed batch of workflow configuration data as a response.\n   */\n  postWorkflowConfigsBatch (body: WorkflowConfigsBatchIn): Observable<WorkflowConfigsOut> {\n    return this.http.post<ApiSuccess<WorkflowConfigsOut>>(`${this.url}/workflow-configs/batch`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of companies based on the provided query parameters.\n   * @param params - The query parameters to filter and paginate the companies list\n   * @returns An Observable that emits the companies data\n   */\n  getCompanies (params: QueryParams): Observable<CompaniesOut> {\n    return this.http.get<ApiSuccess<CompaniesOut>>(`${this.url}/companies`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a company by its ID.\n   * @param id - The unique identifier of the company to retrieve.\n   * @returns An Observable that emits the company data.\n   */\n  getCompany (id: number): Observable<CompanyOut> {\n    return this.http.get<ApiSuccess<CompanyOut>>(`${this.url}/companies/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create a new company and returns the created company's details.\n   *\n   * @param {CompanyIn} body - The payload containing the details of the company to be created.\n   * @return {Observable<CompanyOut>} An Observable emitting the response with the created company's details.\n   */\n  postCompany (body: CompanyIn): Observable<CompanyOut> {\n    return this.http.post<ApiSuccess<CompanyOut>>(`${this.url}/companies`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the details of an existing company using its ID.\n   *\n   * @param {number} id - The unique identifier of the company to update.\n   * @param {CompanyIn} body - The object containing the updated company data.\n   * @return {Observable<CompanyOut>} An observable that emits the updated company details.\n   */\n  putCompany (id: number, body: CompanyIn): Observable<CompanyOut> {\n    return this.http.put<ApiSuccess<CompanyOut>>(`${this.url}/companies/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a company by its unique identifier.\n   *\n   * @param {number} id - The unique identifier of the company to be deleted.\n   * @return {Observable<{}>} An observable that emits an empty object upon successful deletion or an error if the operation fails.\n   */\n  deleteCompany (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/companies/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches product entities from the server based on the provided query parameters.\n   *\n   * @param {QueryParams} params The query parameters used to modify the request for product entities.\n   * @return {Observable<ProductEntitiesOut>} An observable that emits the product entities retrieved from the server.\n   */\n  getProductEntities (params: QueryParams): Observable<ProductEntitiesOut> {\n    return this.http.get<ApiSuccess<ProductEntitiesOut>>(`${this.url}/product-entities`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a PUT request to update product entities and returns the updated entity.\n   *\n   * @param {ProductEntitiesIn} body - The payload containing the data to update the product entity.\n   * @return {Observable<ProductEntitiesOut>} Observable that emits the updated product entity.\n   */\n  putProductEntities (body: ProductEntitiesIn): Observable<ProductEntitiesOut> {\n    return this.http.put<ApiSuccess<ProductEntitiesOut>>(`${this.url}/product-entities`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the country reference products based on the given query parameters.\n   *\n   * @param {QueryParams} params The query parameters used to filter and retrieve the country reference products.\n   * @return {Observable<CountryReferenceProductsOut>} An observable emitting the fetched country reference products data.\n   */\n  getCountryReferenceProducts (params: QueryParams): Observable<CountryReferenceProductsOut> {\n    return this.http.get<ApiSuccess<CountryReferenceProductsOut>>(`${this.url}/country-reference-products`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to update or create country reference products.\n   *\n   * @param {CountryReferenceProductIn} body - The payload containing the details of the country reference products to post.\n   * @return {Observable<CountryReferenceProductOut>} An observable that emits the updated or created country reference product data.\n   */\n  postCountryReferenceProducts (body: CountryReferenceProductIn): Observable<CountryReferenceProductOut> {\n    return this.http.post<ApiSuccess<CountryReferenceProductOut>>(`${this.url}/country-reference-products`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a country reference product with the specified ID using the provided data.\n   *\n   * @param {number} id - The unique identifier of the country reference product to update.\n   * @param {CountryReferenceProductIn} body - The updated country reference product data to be sent in the request body.\n   * @return {Observable<CountryReferenceProductOut>} An observable emitting the updated country reference product.\n   */\n  putCountryReferenceProducts (id: number, body: CountryReferenceProductIn): Observable<CountryReferenceProductOut> {\n    return this.http.put<ApiSuccess<CountryReferenceProductOut>>(`${this.url}/country-reference-products/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the extra charge entities from the server based on the provided query parameters.\n   *\n   * @param {QueryParams} params - An object containing the query parameters to filter the extra charge entities.\n   * @return {Observable<ExtraChargeEntitiesOut>} An observable that emits the extra charge entities retrieved from the server.\n   */\n  getExtraChargeEntities (params: QueryParams): Observable<ExtraChargeEntitiesOut> {\n    return this.http.get<ApiSuccess<ExtraChargeEntitiesOut>>(`${this.url}/extracharge-entities`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates extra charge entities by sending the provided data to the server.\n   *\n   * @param {ExtraChargeEntitiesIn} body - The data to update the extra charge entities.\n   * @return {Observable<ExtraChargeEntitiesOut>} An observable that emits the updated extra charge entities.\n   */\n  putExtraChargeEntities (body: ExtraChargeEntitiesIn): Observable<ExtraChargeEntitiesOut> {\n    return this.http.put<ApiSuccess<ExtraChargeEntitiesOut>>(`${this.url}/extracharge-entities`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the parameter configurations based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the parameter configurations.\n   * @return {Observable<ParameterConfigsOut>} An observable that emits the parameter configurations data.\n   */\n  getParameterConfigs (params: QueryParams): Observable<ParameterConfigsOut> {\n    return this.http.get<ApiSuccess<ParameterConfigsOut>>(`${this.url}/parameter-configs`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update a parameter configuration.\n   *\n   * @param {ParameterConfigIn} body - The input data object containing the parameter configuration to be sent in the request body.\n   * @return {Observable<ParameterConfigOut>} An observable that emits the server's response containing the updated or newly created parameter configuration.\n   */\n  postParameterConfig (body: ParameterConfigIn): Observable<ParameterConfigOut> {\n    return this.http.post<ApiSuccess<ParameterConfigOut>>(`${this.url}/parameter-configs`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the configuration of a parameter with the provided ID and input data.\n   *\n   * @param {number} id - The unique identifier of the parameter configuration to be updated.\n   * @param {ParameterConfigIn} body - The input data containing the updated configuration for the parameter.\n   * @return {Observable<ParameterConfigOut>} An observable that emits the updated parameter configuration.\n   */\n  putParameterConfig (id: number, body: ParameterConfigIn): Observable<ParameterConfigOut> {\n    return this.http.put<ApiSuccess<ParameterConfigOut>>(`${this.url}/parameter-configs/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a parameter configuration specified by its ID.\n   *\n   * @param {number} id - The unique identifier of the parameter configuration to be deleted.\n   * @return {Observable<ParameterConfigOut>} An observable containing the deleted parameter configuration data.\n   */\n  deleteParameterConfig (id: number): Observable<ParameterConfigOut> {\n    return this.http.delete<ApiSuccess<ParameterConfigOut>>(`${this.url}/parameter-configs/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of TDX account settings based on the given query parameters.\n   *\n   * @param {QueryParams} params - Query parameters used to filter or paginate the results.\n   * @returns {Observable<TDXAccountsSettingsOut>} An observable containing the list of TDX account settings.\n   */\n  getTDXAccountsSettings (params: QueryParams): Observable<TDXAccountsSettingsOut> {\n    return this.http.get<ApiSuccess<TDXAccountsSettingsOut>>(`${this.url}/tdx-account-settings`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a single TDX account setting by its ID.\n   *\n   * @param {number} id - The unique identifier of the TDX account setting to be retrieved.\n   * @returns {Observable<TDXAccountSettingsOut>} An observable containing the requested TDX account setting.\n   */\n  getTDXAccountSettings (id: number): Observable<TDXAccountSettingsOut> {\n    return this.http.get<ApiSuccess<TDXAccountSettingsOut>>(`${this.url}/tdx-account-settings/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new TDX account setting with the provided data.\n   *\n   * @param {TDXAccountSettingsIn} body - The data used to create the new TDX account setting.\n   * @returns {Observable<TDXAccountSettingsOut>} An observable containing the newly created TDX account setting.\n   */\n  postTDXAccountSettings (body:TDXAccountSettingsIn): Observable<TDXAccountSettingsOut> {\n    return this.http.post<ApiSuccess<TDXAccountSettingsOut>>(`${this.url}/tdx-account-settings`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing TDX account setting identified by its ID.\n   *\n   * @param {number} id - The unique identifier of the TDX account setting to be updated.\n   * @param {TDXAccountSettingsIn} body - The updated data for the TDX account setting.\n   * @returns {Observable<TDXAccountSettingsOut>} An observable containing the updated TDX account setting.\n   */\n  putTDXAccountSettings (id: number, body:TDXAccountSettingsIn): Observable<TDXAccountSettingsOut> {\n    return this.http.put<ApiSuccess<TDXAccountSettingsOut>>(`${this.url}/tdx-account-settings/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the employees of a specific location using a provided token.\n   *\n   * @param params - Input parameters for the request, defined by the `LocationEmployeesIn` interface.\n   * @returns An `Observable<LocationEmployeesOut>` that emits the employees\n   * associated with the given location.\n   * @returns The response type is `ApiSuccess<LocationEmployeesOut>`, from which the `data` field is extracted.\n   */\n  getLocationEmployeesByToken (params: { token: string, queryParams: QueryParams }): Observable<LocationEmployeesOut> {\n    return this.http.get<ApiSuccess<LocationEmployeesOut>>(`${this.url}/location-employees`, {\n      params: params.queryParams,\n      headers: {\n        Authorization: `Bearer ${params.token}`\n      }\n    }).pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { CompositionCountryReferencesOut, ShipmentOut } from './models/api-composition.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiCompositionService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the API security URL from the environment configuration.\n   *\n  * @returns {string} The API security URL.\n   */\n  get url (): string {\n    return this.environments.apiCompositionUrl ?? ''\n  }\n\n  /**\n   * Retrieves shipment details based on the provided shipment ID.\n   *\n   * @param {number} id - The unique identifier of the shipment to retrieve.\n  * @returns {Observable<ShipmentOut>} An observable that emits the details of the shipment.\n   */\n  getShipment (id: number): Observable<ShipmentOut> {\n    return this.http.get<ApiSuccess<ShipmentOut>>(`${this.url}/shipments/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the country references data based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters for the API request.\n  * @returns {Observable<CompositionCountryReferencesOut>} An observable emitting the country references.\n   */\n  getCountryReferences (params: QueryParams): Observable<CompositionCountryReferencesOut> {\n    return this.http.get<ApiSuccess<CompositionCountryReferencesOut>>(`${this.url}/country-references`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  CatalogsOut, CountryGroupsOut,\n  CriteriaIn,\n  CriteriaOut,\n  FieldsOut,\n  OverridesOut, RuleCriteriaIn, RuleIn,\n  RuleOut, RulesByCriteriaOut, RulesIn,\n  RulesOut\n} from './models/api-customs.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiCustomsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the cash operations API from the environment configurations.\n   *\n   * @return {string} The URL of the cash operations API.\n   */\n  get url (): string {\n    return this.environments.apiCustomsUrl ?? ''\n  }\n\n  /**\n   * Fetches the available fields for a given level.\n   *\n   * @return {Observable<FieldsOut>} An Observable that emits the list of fields.\n   * @param params\n   */\n  getFields (params: QueryParams): Observable<FieldsOut> {\n    return this.http.get<ApiSuccess<FieldsOut>>(\n      `${this.url}/fields`, {\n        params\n      }\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Retrieves override configurations for a given level.\n   *\n   * @return {Observable<OverridesOut>} An Observable that emits the overrides configuration.\n   * @param params\n   */\n  getOverrides (params: QueryParams): Observable<OverridesOut> {\n    return this.http.get<ApiSuccess<OverridesOut>>(\n      `${this.url}/overrides`, {\n        params\n      }\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Fetches the catalogs used in customs operations.\n   *\n   * @return {Observable<CatalogsOut>} An Observable that emits the catalogs.\n   */\n  getCatalogs (params: QueryParams): Observable<CatalogsOut> {\n    return this.http.get<ApiSuccess<CatalogsOut>>(\n      `${this.url}/catalogs`, {\n        params\n      }\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Retrieves the list of rules based on the provided query parameters.\n   *\n   * @param {QueryParams} params - Query parameters to filter the rules.\n   * @return {Observable<RulesOut>} An Observable that emits the list of rules.\n   */\n  getRules (params: QueryParams): Observable<RulesOut> {\n    return this.http.get<ApiSuccess<RulesOut>>(\n      `${this.url}/rules`,\n      { params }\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Retrieves the details of a specific rule by its ID.\n   *\n   * @param {number} id - The ID of the rule.\n   * @return {Observable<RuleOut>} An Observable that emits the rule details.\n   */\n  getRule (id: number): Observable<RuleOut> {\n    return this.http.get<ApiSuccess<RuleOut>>(\n      `${this.url}/rules/${id}`\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Creates a new criteria.\n   *\n   * @param {CriteriaIn} body - The criteria payload to create.\n   * @return {Observable<CriteriaOut>} An Observable that emits the created criteria.\n   */\n  postCriteria (body: CriteriaIn): Observable<CriteriaOut> {\n    return this.http.post<ApiSuccess<CriteriaOut>>(`${this.url}/criteria`,\n      body\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Creates a new rule.\n   *\n   * @param {RuleIn} body - The rule payload to create.\n   * @return {Observable<RuleOut>} An Observable that emits the created rule.\n   */\n  postRules (body: RuleIn): Observable<RuleOut> {\n    return this.http.post<ApiSuccess<RuleOut>>(`${this.url}/rules`,\n      body\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Retrieves rules that match the given criteria.\n   *\n   * @param {RuleCriteriaIn} params - Criteria used to search for matching rules.\n   * @return {Observable<RulesByCriteriaOut>} An Observable that emits the list of matching rules.\n   */\n  postRulesByCriteria (params: RuleCriteriaIn): Observable<RulesByCriteriaOut> {\n    return this.http.post<ApiSuccess<RulesByCriteriaOut>>(\n      `${this.url}/rules/by-criteria`,\n      params\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Enables a specific rule by its ID.\n   *\n   * @param {number} id - The ID of the rule to enable.\n   * @return {Observable<{}>} An Observable that emits an empty array on success.\n   */\n  putRuleActivate (id:number): Observable<{}> {\n    return this.http.put<ApiSuccess<{}>>(\n      `${this.url}/rules/${id}/activate`, null\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Disables (deletes) a specific rule by its ID.\n   *\n   * @param {number} id - The ID of the rule to disable.\n   * @return {Observable<[]>} An Observable that emits an empty array on success.\n   */\n  deleteRule (id:number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(\n      `${this.url}/rules/${id}`\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Updates an existing criteria by its ID.\n   *\n   * @param {number} id - The ID of the criteria.\n   * @param {CriteriaIn} body - The updated criteria payload.\n   * @return {Observable<CriteriaOut>} An Observable that emits the updated criteria.\n   */\n  putCriteria (id:number, body: CriteriaIn): Observable<CriteriaOut> {\n    return this.http.put<ApiSuccess<CriteriaOut>>(\n      `${this.url}/criteria/${id}`,\n      body\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Updates an existing rule by its ID.\n   *\n   * @param {number} id - The ID of the rule.\n   * @param {RulesIn} body - The updated rule payload.\n   * @return {Observable<RuleOut>} An Observable that emits the updated rule.\n   */\n  putRule (id:number, body: RulesIn): Observable<RuleOut> {\n    return this.http.put<ApiSuccess<RuleOut>>(\n      `${this.url}/rules/${id}`,\n      body\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n\n  /**\n   * Retrieves the list of country groups used in customs operations.\n   *\n   * @return {Observable<CountryGroupsOut>} An Observable that emits the list of country groups.\n   */\n  getCountryGroups (params: QueryParams): Observable<CountryGroupsOut> {\n    return this.http.get<ApiSuccess<CountryGroupsOut>>(\n      `${this.url}/country-groups`,\n      {\n        params\n      }\n    ).pipe(\n      map(({ data }) => data)\n    )\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  CustomerRestrictionIn,\n  CustomerRestrictionInV2,\n  CustomerRestrictionOut,\n  CustomerRestrictionsOut,\n  DiscountIn,\n  DiscountOut,\n  DiscountsOut,\n  LoyaltyPeriodIn,\n  LoyaltyPeriodOut,\n  LoyaltyPeriodsOut,\n  LoyaltyRuleIn,\n  LoyaltyRuleOut,\n  LoyaltyRulesOut,\n  OperationsLoadTopCustomerV2In,\n  TopCustomersOut\n} from './models/api-discounts.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiDiscountsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Gets the API endpoint URL for discounts from the environments configuration.\n   *\n   * @return {string} The URL for the discounts API. Returns an empty string if not defined.\n   */\n  get url (): string {\n    return this.environments.apiDiscountsUrl ?? ''\n  }\n\n  /**\n   * Fetches available discounts based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter and retrieve discounts.\n   * @return {Observable<DiscountsOut>} An Observable that emits the retrieved discounts data.\n   */\n  getDiscounts (params: QueryParams): Observable<DiscountsOut> {\n    return this.http.get<ApiSuccess<DiscountsOut>>(`${this.url}/discounts`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to create or update discounts on the server.\n   *\n   * @param {DiscountIn} body - The discount information to be submitted.\n   * @return {Observable<DiscountOut>} An Observable emitting the server's response containing the created or updated discount details.\n   */\n  postDiscounts (body: DiscountIn): Observable<DiscountOut> {\n    return this.http.post<ApiSuccess<DiscountOut>>(`${this.url}/discounts`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the discount information for a specific item.\n   *\n   * @param {number} id - The unique identifier of the item whose discount is to be updated.\n   * @param {DiscountIn} body - The payload containing the updated discount details.\n   * @return {Observable<DiscountOut>} An observable emitting the updated discount details.\n   */\n  putDiscounts (id: number, body: DiscountIn): Observable<DiscountOut> {\n    return this.http.put<ApiSuccess<DiscountOut>>(`${this.url}/discounts/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the top customers based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter and sort the top customers.\n   * @return {Observable<TopCustomersOut>} An observable emitting the list of top customers.\n   */\n  getTopCustomers (params: QueryParams): Observable<TopCustomersOut> {\n    return this.http.get<ApiSuccess<TopCustomersOut>>(`${this.url}/top-customers`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to load the top customer data in the system, using the provided input.\n   * Transforms the API response to extract the data field containing the discount information.\n   *\n   * @param {OperationsLoadTopCustomerV2In} body - The input payload containing the company country ID and the file.\n   * @param {number} body.company_country_id - The ID of the company's country.\n   * @param {File} body.file - The file containing data to be processed.\n   * @return {Observable<DiscountOut>} An observable containing the discount output information.\n   */\n  postOperationsLoadTopCustomerV2 (body: OperationsLoadTopCustomerV2In): Observable<{}> {\n    const formData = new FormData()\n    formData.append('company_country_id', String(body.company_country_id))\n    formData.append('file', body.file)\n\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/operations/load-top-customer/V2`, formData)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the loyalty periods based on the provided query parameters.\n   *\n   * @param {QueryParams} params - An object containing query parameters to filter the periods.\n   * @return {Observable<LoyaltyPeriodsOut>} An observable that emits the fetched loyalty periods.\n   */\n  getLoyaltyPeriods (params: QueryParams): Observable<LoyaltyPeriodsOut> {\n    return this.http.get<ApiSuccess<LoyaltyPeriodsOut>>(`${this.url}/loyalty-periods`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the loyalty period details for the given ID.\n   *\n   * @param {number} id - The unique identifier of the loyalty period to retrieve.\n   * @return {Observable<LoyaltyPeriodOut>} An observable emitting the loyalty period details.\n   */\n  getLoyaltyPeriod (id: number): Observable<LoyaltyPeriodOut> {\n    return this.http.get<ApiSuccess<LoyaltyPeriodOut>>(`${this.url}/loyalty-periods/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new loyalty period.\n   * @param body - The loyalty period input data\n   * @returns An observable that emits the created loyalty period output data\n   */\n  postLoyaltyPeriod (body: LoyaltyPeriodIn): Observable<LoyaltyPeriodOut> {\n    return this.http.post<ApiSuccess<LoyaltyPeriodOut>>(`${this.url}/loyalty-periods`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the loyalty period for a specified ID with the provided data.\n   *\n   * @param {number} id - The unique identifier of the loyalty period to update.\n   * @param {LoyaltyPeriodIn} body - An object containing the updated details of the loyalty period.\n   * @return {Observable<LoyaltyPeriodOut>} An observable that emits the updated loyalty period details.\n   */\n  putLoyaltyPeriod (id: number, body: LoyaltyPeriodIn): Observable<LoyaltyPeriodOut> {\n    return this.http.put<ApiSuccess<LoyaltyPeriodOut>>(`${this.url}/loyalty-periods/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the loyalty rules based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the loyalty rules.\n   * @return {Observable<LoyaltyRulesOut>} An observable containing the loyalty rules output.\n   */\n  getLoyaltyRules (params: QueryParams): Observable<LoyaltyRulesOut> {\n    return this.http.get<ApiSuccess<LoyaltyRulesOut>>(`${this.url}/loyalty-rules`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a specific loyalty rule based on the provided ID.\n   *\n   * @param {number} id - The unique identifier of the loyalty rule to retrieve.\n   * @return {Observable<LoyaltyRuleOut>} An observable that emits the details of the specified loyalty rule.\n   */\n  getLoyaltyRule (id: number): Observable<LoyaltyRuleOut> {\n    return this.http.get<ApiSuccess<LoyaltyRuleOut>>(`${this.url}/loyalty-rules/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to add or update a loyalty rule.\n   *\n   * @param {LoyaltyRuleIn} body - The loyalty rule data to be sent to the server.\n   * @return {Observable<LoyaltyRuleOut>} An observable that emits the updated loyalty rule details.\n   */\n  postLoyaltyRule (body: LoyaltyRuleIn): Observable<LoyaltyRuleOut> {\n    return this.http.post<ApiSuccess<LoyaltyRuleOut>>(`${this.url}/loyalty-rules`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing loyalty rule with the provided data.\n   *\n   * @param {number} id - The unique identifier of the loyalty rule to update.\n   * @param {LoyaltyRuleIn} body - The data to update the loyalty rule with.\n   * @return {Observable<LoyaltyRuleOut>} An observable that emits the updated loyalty rule.\n   */\n  putLoyaltyRule (id: number, body: LoyaltyRuleIn): Observable<LoyaltyRuleOut> {\n    return this.http.put<ApiSuccess<LoyaltyRuleOut>>(`${this.url}/loyalty-rules/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches customer restrictions based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter customer restrictions.\n   * @return {Observable<CustomerRestrictionsOut>} An observable that emits the customer restrictions data.\n   */\n  getCustomerRestrictions (params: QueryParams): Observable<CustomerRestrictionsOut> {\n    return this.http.get<ApiSuccess<CustomerRestrictionsOut>>(`${this.url}/customer-restrictions`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves customer restriction details for a given customer ID.\n   *\n   * @param {number} id - The unique identifier of the customer.\n   * @return {Observable<CustomerRestrictionOut>} An observable containing the customer restriction details.\n   */\n  getCustomerRestriction (id: number): Observable<CustomerRestrictionOut> {\n    return this.http.get<ApiSuccess<CustomerRestrictionOut>>(`${this.url}/customer-restrictions/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to apply a restriction to a customer.\n   *\n   * @param {CustomerRestrictionIn} body - The restriction details to be applied to the customer.\n   * @return {Observable<CustomerRestrictionOut>} An observable containing the response with the applied customer restriction.\n   */\n  postCustomerRestriction (body: CustomerRestrictionIn): Observable<CustomerRestrictionOut> {\n    return this.http.put<ApiSuccess<CustomerRestrictionOut>>(`${this.url}/customer-restrictions`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates customer restrictions using the provided ID and data.\n   *\n   * @param {number} id - The unique identifier of the customer restriction to be updated.\n   * @param {LoyaltyRuleIn} body - The data object containing the customer restriction details to be updated.\n   * @return {Observable<CustomerRestrictionOut>} An observable emitting the updated customer restriction details.\n   */\n  putCustomerRestriction (id: number, body: CustomerRestrictionIn): Observable<CustomerRestrictionOut> {\n    return this.http.put<ApiSuccess<CustomerRestrictionOut>>(`${this.url}/customer-restrictions/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a customer restriction by its ID.\n   *\n   * @param {number} id - The unique identifier of the customer restriction to delete.\n   * @return {Observable<{}>} An Observable that emits the result of the deletion operation.\n   */\n  deleteCustomerRestriction (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/customer-restrictions/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to apply a restriction to a customer (Version 2).\n   *\n   * @param {CustomerRestrictionInV2} body - The restriction details to be applied to the customer.\n   * @return {Observable<CustomerRestrictionOut>} An observable containing the response with the applied customer restriction.\n   */\n  postCustomerRestrictionV2 (body: CustomerRestrictionInV2): Observable<CustomerRestrictionOut> {\n    return this.http.post<ApiSuccess<CustomerRestrictionOut>>(`${this.url}/customer-restrictions/V2`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates customer restrictions using the provided ID and data (Version 2).\n   *\n   * @param {number} id - The unique identifier of the customer restriction to be updated.\n   * @param {CustomerRestrictionInV2} body - The data object containing the customer restriction details to be updated.\n   * @return {Observable<CustomerRestrictionOut>} An observable emitting the updated customer restriction details.\n   */\n  putCustomerRestrictionV2 (id: number, body: CustomerRestrictionInV2): Observable<CustomerRestrictionOut> {\n    return this.http.put<ApiSuccess<CustomerRestrictionOut>>(`${this.url}/customer-restrictions/V2/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  ExternalShipmentAddressesIn,\n  ExternalShipmentAddressesOut, ExternalShipmentCancellationIn,\n  ExternalShipmentFileOut,\n  ExternalShipmentHistoriesOut,\n  ExternalShipmentStatusOut, InvoiceCancellationIn\n} from './models/api-e-tools-auto-billing.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiEToolsAutoBillingService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the shipments API from the environment configurations.\n   *\n   * @return {string} The URL of the shipments API.\n   */\n  get url (): string {\n    return this.environments.apiEToolsAutoBilling ?? ''\n  }\n\n  /**\n   * Updates external shipment address details for the given address ID.\n   *\n   * @param {Object} params - The parameters for the API request.\n   * @param {string} params.id - The unique identifier of the address to update.\n   * @param {Object} params.body - The payload containing updated address details.\n   * @return {Observable<ExternalShipmentAddressesOut>} An observable containing the updated external shipment address information.\n   */\n  patchExternalShipmentAddresses ({\n    id,\n    ...body\n  }: ExternalShipmentAddressesIn): Observable<ExternalShipmentAddressesOut> {\n    return this.http.patch<ApiSuccess<ExternalShipmentAddressesOut>>(`${this.url}/external-shipment-addresses/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the external shipment file by its identifier.\n   *\n   * @param {number} fileId - The unique identifier of the external shipment file to be retrieved.\n   * @return {Observable<ExternalShipmentFileOut>} An observable containing the external shipment file data.\n   */\n  getExternalShipmentFile (fileId: number): Observable<ExternalShipmentFileOut> {\n    return this.http.get<ApiSuccess<ExternalShipmentFileOut>>(`${this.url}/external-shipment-files/${fileId}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the history entries for a specific external shipment.\n   *\n   * @param {number} id - The ID of the external shipment to retrieve history for.\n   * @return {Observable<ExternalShipmentHistoriesOut>} An observable containing the external shipment history entries.\n   */\n  getExternalShipmentHistories (id: number): Observable<ExternalShipmentHistoriesOut> {\n    return this.http.get<ApiSuccess<ExternalShipmentHistoriesOut>>(`${this.url}/external-shipments/${id}/external-shipment-histories`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of external shipment statuses\n   *\n   * @param {QueryParams} params - The query parameters used to fetch the external shipment statuses.\n   * @return {Observable<ExternalShipmentStatusOut>} An observable that emits the external shipment statuses data.\n   */\n  getExternalShipmentStatuses (params: QueryParams): Observable<ExternalShipmentStatusOut> {\n    return this.http.get<ApiSuccess<ExternalShipmentStatusOut>>(`${this.url}/external-shipment-statuses`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Cancels the billing of an external shipment.\n   *\n   * This method sends a POST request to the backend in order to cancel\n   *\n   * @param params Object containing the required cancellation data\n   * @param params.id External shipment ID\n   * @param params.documentId Billing document ID\n   * @param params.cancellationReasonId Cancellation reason ID\n   *\n   * @returns Observable that emits an empty array when the operation is successful\n   */\n\n  postExternalShipmentCancelBilling ({ id, documentId, cancellationReasonId }: InvoiceCancellationIn): Observable<[]> {\n    return this.http.post<ApiSuccess<[]>>(`${this.url}/external-shipments/${id}/cancel-billing`, {\n      documentId,\n      cancellationReasonId\n    })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Re-bills an external shipment.\n   *\n   * This method sends a POST request to the backend to regenerate\n   * @param id External shipment ID\n   * @param body Data required to perform the re-billing\n   * @returns Observable that emits an empty array when the operation is successful\n   */\n\n  postExternalShipmentReBilling (id: number, body: ExternalShipmentCancellationIn): Observable<[]> {\n    return this.http.post<ApiSuccess<[]>>(`${this.url}/external-shipments/${id}/re-billing`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { OperationModuleEndIn, OperationModuleOut, OperationModuleStartIn } from './models/api-events.types'\nimport type { ApiSuccess } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiEventsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Gets the API endpoint URL for Events from the environments configuration.\n   *\n  * @returns {string} The URL for the Events API. Returns an empty string if not defined.\n   */\n  get url (): string {\n    return this.environments.apiEventsUrl ?? ''\n  }\n\n  /**\n   * Sends a request to start an event\n   *\n   * @param {OperationModuleStartIn} body - The event information to be submitted.\n  * @returns {Observable<OperationModuleOut>} An Observable emitting the server's response containing the created event details.\n   */\n  postOperationModulesStart (body: OperationModuleStartIn): Observable<OperationModuleOut> {\n    return this.http.post<ApiSuccess<OperationModuleOut>>(`${this.url}/operation-modules/start`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the discount information for a specific item.\n   *\n   * @param {number} id - The unique identifier of the item whose event is to be updated.\n   * @param {OperationModuleEndIn} body - The payload containing the updated event details.\n  * @returns {Observable<OperationModuleOut>} An observable emitting the updated event details.\n   */\n  putOperationModulesEnd (id: number, body: OperationModuleEndIn): Observable<OperationModuleOut> {\n    return this.http.put<ApiSuccess<OperationModuleOut>>(`${this.url}/operation-modules/${id}/end`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs/operators'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  DeliveryConfirmationCompleteIn,\n  DeliveryConfirmationGenerateIn,\n  DeliveryConfirmationGenerateOut,\n  DeliveryConfirmationIn,\n  DeliveryConfirmationSearchOut\n} from './models/api-external-ops.types'\nimport type { ApiSuccess } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiExternalOperationsService {\n  private http = inject(HttpClient)\n  private environment = inject(ENVIRONMENT_TOKEN)\n  private appKey = this.environment.apiExternalOperationsKey ?? ''\n\n  /**\n   * Getter method to retrieve the API's external operations URL.\n   * Fetches the URL from the `apiExternalOperationsUrl` property of the environment object.\n   * Defaults to an empty string if the property is undefined or null.\n   *\n   * @return {string} The external operations URL or an empty string if unavailable.\n   */\n  get url (): string {\n    return this.environment.apiExternalOperationsUrl ?? ''\n  }\n\n  /**\n   * Retrieves delivery confirmation details based on the provided OTP code.\n   *\n   * @param {string} otpCode - The OTP code used to search for delivery confirmation.\n   * @return {Observable<DeliveryConfirmationData>} An observable containing the delivery confirmation data.\n   */\n  public getDeliveryConfirmation (otpCode: string): Observable<DeliveryConfirmationSearchOut> {\n    return this.http.get<ApiSuccess<DeliveryConfirmationSearchOut>>(`${this.url}/delivery-confirmation/search/${otpCode}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Generates a delivery confirmation by sending the provided payload to the API.\n   *\n   * @param {DeliveryConfirmationGenerateIn} payload - The input payload required to generate the delivery confirmation.\n   * @return {Observable<DeliveryConfirmationGenerateOut>} An observable that emits the generated delivery confirmation data.\n   */\n  public postDeliveryConfirmationGenerate (payload: DeliveryConfirmationGenerateIn): Observable<DeliveryConfirmationGenerateOut> {\n    return this.http.post<ApiSuccess<DeliveryConfirmationGenerateOut>>(\n      `${this.url}/delivery-confirmation/generate`,\n      payload, {\n        headers: this.getAppKeyHeader(),\n      }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Confirms the completion of a delivery operation by making a PATCH request.\n   *\n   * @param {Object} input - The input parameters for the method.\n   * @param {string} input.operationId - The unique identifier of the delivery operation to be confirmed.\n   * @param {string} input.keyOTP - The one-time password (OTP) key associated with the delivery confirmation.\n   * @return {Observable<Object>} - An observable containing the response data from the API.\n   */\n  public patchDeliveryConfirmationComplete ({\n    keyOTP,\n    operationId,\n  }: DeliveryConfirmationCompleteIn): Observable<{}> {\n    return this.http.patch<ApiSuccess<{}>>(\n      `${this.url}/delivery-confirmation/completed/${keyOTP}`,\n      null, {\n        headers: this.getAppKeyHeader(),\n        params: { operation_id: operationId }\n      }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Cancels a delivery confirmation by sending an OTP and additional data to the server.\n   *\n   * @param {Object} param0 - The parameter object containing the required properties.\n   * @param {string} param0.otp - The one-time password to authenticate the cancellation request.\n   * @param {Object} param0.body - Additional body data required for cancellation.\n   * @return {Observable<Object>} An observable that emits the server's response when the cancellation is processed.\n   */\n  public putDeliveryConfirmation ({\n    otp,\n    ...body\n  }: DeliveryConfirmationIn): Observable<{}> {\n    return this.http.put<ApiSuccess<{}>>(\n      `${this.url}/delivery-confirmation/confirmation/${otp}`,\n      body, {\n        headers: this.getAppKeyHeader(),\n      }).pipe(map(({ data }) => data))\n  }\n\n  private getAppKeyHeader () {\n    return { ...(this.appKey && { AppKey: this.appKey }) }\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { CheckpointEventReasonsOut, CheckpointsOut, IncidentIn, IncidentOut, IncidentReasonComplementIn, IncidentReasonComplementOut, IncidentReasonComplementsOut, IncidentReasonIn, IncidentReasonOut, IncidentReasonsOut, IncidentsOut, PackagesInStockIn, PackagesInStockOut, ReEntryOfMissingPackageOut, ReEntryOfMissingPackagesIn, ReEntryOfMissingPackagesOut } from './models/api-inventories.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiInventoriesService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the Inventories API from the environment configurations.\n   *\n   * @return {string} The URL of the Inventories API.\n   */\n  get url (): string {\n    return this.environments.apiInventoriesUrl ?? ''\n  }\n\n  /**\n   * Retrieves a list of checkpoints based on query parameters.\n   *\n   * @param {QueryParams} params - Query parameters for filtering the checkpoints.\n   * @returns {Observable<CheckpointsOut>} The list of checkpoints.\n   */\n  getCheckpoints (params: QueryParams): Observable<CheckpointsOut> {\n    return this.http.get<ApiSuccess<CheckpointsOut>>(`${this.url}/checkpoints`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of checkpoint event reasons based on query parameters.\n   *\n   * @param {QueryParams} params - Query parameters for filtering the checkpoint event reasons.\n   * @returns {Observable<CheckpointEventReasonsOut>} The list of checkpoint event reasons.\n   */\n  getCheckpointEventReasons (params: QueryParams): Observable<CheckpointEventReasonsOut> {\n    return this.http.get<ApiSuccess<CheckpointEventReasonsOut>>(`${this.url}/checkpoint-event-reasons`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of incidents based on query parameters.\n   *\n   * @param {QueryParams} params - Query parameters for filtering the incidents.\n   * @returns {Observable<IncidentsOut>} An observable that emits the list of incidents.\n   */\n  getIncidents (params: QueryParams): Observable<IncidentsOut> {\n    return this.http.get<ApiSuccess<IncidentsOut>>(`${this.url}/incidents`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the incident details based on the provided incident ID.\n   *\n   * @param {number} id - The identifier of the incident record to get detail.\n   * @return {Observable<IncidentOut>} An observable that emits the detail incident data.\n   */\n  getIncident (id: Number): Observable<IncidentOut> {\n    return this.http.get<ApiSuccess<IncidentOut>>(`${this.url}/incidents/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new incident.\n   *\n   * @param {IncidentIn} body - The data for the new incident.\n   * @returns {Observable<IncidentOut>} An observable the created incident detail.\n   */\n  postIncident (body: IncidentIn): Observable<IncidentOut> {\n    return this.http.post<ApiSuccess<IncidentOut>>(`${this.url}/incidents`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing incident.\n   *\n   * @param {number} id - The identifier of the incident record to update.\n   * @param {IncidentIn} body - The incident data to be updated.\n   * @returns {Observable<IncidentOut>} An observable detail of the updated incident.\n   */\n  putIncident (id: Number, body: IncidentIn): Observable<IncidentOut> {\n    return this.http.put<ApiSuccess<IncidentOut>>(`${this.url}/incidents/${id}`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Delete an existing incident.\n   *\n   * @param {number} id - The unique identifier of the incident to be deleted.\n   * @returns {Observable<IncidentOut>} An observable that emits the result of the delete incident.\n   */\n  deleteIncident (id: Number): Observable<IncidentOut> {\n    return this.http.delete<ApiSuccess<IncidentOut>>(`${this.url}/incidents/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of incident reasons based on query parameters.\n   *\n   * @param {QueryParams} params - Query parameters for filtering the incident reasons.\n   * @returns {Observable<IncidentReasonsOut>} An observable that emits the list of incident reasons.\n   */\n  getIncidentReasons (params: QueryParams): Observable<IncidentReasonsOut> {\n    return this.http.get<ApiSuccess<IncidentReasonsOut>>(`${this.url}/incident-reasons`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the incident reason details based on the provided incident reason ID.\n   *\n   * @param {number} id - The identifier of the incident reason record to get detail.\n   * @return {Observable<IncidentReasonOut>} An observable that emits the detail incident reason data.\n   */\n  getIncidentReason (id: Number): Observable<IncidentReasonOut> {\n    return this.http.get<ApiSuccess<IncidentReasonOut>>(`${this.url}/incident-reasons/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new incident reason.\n   *\n   * @param {IncidentReasonIn} body - The data for the new incident reason.\n   * @returns {Observable<IncidentReasonOut>} An observable the created incident reason detail.\n   */\n  postIncidentReason (body: IncidentReasonIn): Observable<IncidentReasonOut> {\n    return this.http.post<ApiSuccess<IncidentReasonOut>>(`${this.url}/incident-reasons`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing incident reason.\n   *\n   * @param {number} id - The identifier of the incident reason record to update.\n   * @param {IncidentIn} body - The incident reason data to be updated.\n   * @returns {Observable<IncidentReasonOut>} An observable detail of the updated incident reason.\n   */\n  putIncidentReason (id: Number, body: IncidentReasonIn): Observable<IncidentReasonOut> {\n    return this.http.put<ApiSuccess<IncidentReasonOut>>(`${this.url}/incident-reasons/${id}`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Delete an existing incident reason.\n   *\n   * @param {number} id - The unique identifier of the incident reason to be deleted.\n   * @returns {Observable<IncidentReasonOut>} An observable that emits the result of the delete incident reason.\n   */\n  deleteIncidentReason (id: Number): Observable<IncidentReasonOut> {\n    return this.http.delete<ApiSuccess<IncidentReasonOut>>(`${this.url}/incident-reasons/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of incident reason complements based on query parameters.\n   *\n   * @param {QueryParams} params - Query parameters for filtering the incident reason complements.\n   * @returns {Observable<IncidentReasonComplementsOut>} An observable that emits the list of incident reason complements.\n   */\n  getIncidentReasonComplements (params: QueryParams): Observable<IncidentReasonComplementsOut> {\n    return this.http.get<ApiSuccess<IncidentReasonComplementsOut>>(`${this.url}/incident-reason-complements`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new incident reason complement.\n   *\n   * @param {IncidentReasonIn} body - The data for the new incident reason complement.\n   * @returns {Observable<IncidentReasonComplementOut>} An observable the created incident reason complement detail.\n   */\n  postIncidentReasonComplement (body: IncidentReasonComplementIn): Observable<IncidentReasonComplementOut> {\n    return this.http.post<ApiSuccess<IncidentReasonComplementOut>>(`${this.url}/incident-reason-complements`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing incident reason complement.\n   *\n   * @param {number} id - The identifier of the incident reason complement record to update.\n   * @param {IncidentIn} body - The incident reason complement data to be updated.\n   * @returns {Observable<IncidentReasonComplementOut>} An observable detail of the updated incident reason complement.\n   */\n  putIncidentReasonComplement (id: Number, body: IncidentReasonComplementIn): Observable<IncidentReasonComplementOut> {\n    return this.http.put<ApiSuccess<IncidentReasonComplementOut>>(`${this.url}/incident-reason-complements/${id}`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Delete an existing incident reason complement.\n   *\n   * @param {number} id - The unique identifier of the incident reason complement to be deleted.\n   * @returns {Observable<IncidentReasonComplementOut>} An observable that emits the result of the delete incident reason complement.\n   */\n  deleteIncidentReasonComplement (id: Number): Observable<IncidentReasonComplementOut> {\n    return this.http.delete<ApiSuccess<IncidentReasonComplementOut>>(`${this.url}/incident-reason-complements/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Posts packages that are currently in stock.\n   *\n   * @param body - The input data containing package stock information\n   * @returns {Observable<PackagesInStockOut>} An Observable that emits the packages in stock output data\n   *\n   * @remarks\n   * This method sends a POST request to the `/packages/in-stock` endpoint and\n   * extracts the data property from the API success response.\n   */\n  postPackagesInStock (body: PackagesInStockIn): Observable<PackagesInStockOut> {\n    return this.http.post<ApiSuccess<PackagesInStockOut>>(`${this.url}/packages/in-stock`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the missing package details based on query parameters.\n   *\n   * @param {QueryParams} params - The query parameters for filtering the missing package details.\n   * @return {Observable<ReEntryOfMissingPackageOut>} An observable that emits the detail missing package data.\n   */\n  getReEntryOfMissingPackages (params: QueryParams): Observable<ReEntryOfMissingPackageOut> {\n    return this.http.get<ApiSuccess<ReEntryOfMissingPackageOut>>(`${this.url}/re-entry-of-missing-packages`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Re-entry missing packages\n   *\n   * @param {ReEntryOfMissingPackagesIn} body - The missing packages data to be re-entry.\n   * @returns {Observable<ReEntryOfMissingPackagesOut>} An observable detail of the updated incident reason complement.\n   */\n  putReEntryOfMissingPackages (body: ReEntryOfMissingPackagesIn): Observable<ReEntryOfMissingPackagesOut> {\n    return this.http.put<ApiSuccess<ReEntryOfMissingPackagesOut>>(`${this.url}/re-entry-of-missing-packages`,\n      body\n    ).pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  CancelPaymentReceiptIn,\n  CountryDocumentTypesOut,\n  CountryPaymentTypeFieldIn,\n  CountryPaymentTypeFieldOut,\n  CountryPaymentTypeFieldsOut,\n  CountryPaymentTypeIn,\n  CountryPaymentTypeOut,\n  CountryPaymentTypesOut,\n  CustomerDocumentTypesOut,\n  CustomersOut,\n  CustomerTypesOut,\n  DocumentStatusesOut,\n  DocumentsTypesRangesCurrentStatusOut,\n  DocumentTypeRangeIn,\n  DocumentTypeRangeOut,\n  DocumentTypeRangesOut,\n  GetDocumentsOut,\n  OperationAccountPaymentIn,\n  OperationAccountPaymentOut,\n  OperationCancelBillingIn,\n  OperationCancelBillingOut,\n  OperationDocumentIn,\n  OperationDocumentOut,\n  OperationDocumentRequestsOut,\n  OperationPrintDocumentOut,\n  OperationPrintXmlOut,\n  OperationShipmentExternalIn,\n  OperationShipmentExternalOut,\n  PaymentTypeFieldAccountIn,\n  PaymentTypeFieldAccountOut,\n  PaymentTypeFieldAccountsOut,\n  PaymentTypeFieldCardTypeIn,\n  PaymentTypeFieldCardTypeOut,\n  PaymentTypeFieldCardTypesOut,\n  PaymentTypesOut,\n  PrintCollectionReceiptOut,\n  ProvidersOut,\n  ToleranceIn,\n  ToleranceOut,\n  TolerancesOut\n} from './models/api-invoices.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiInvoicesService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the API URL for invoices from the environments configuration.\n   *\n   * @return {string} The API URL for invoices.\n   */\n  get url (): string {\n    return this.environments.apiInvoicesUrl ?? ''\n  }\n\n  /**\n   * Sends an operation document to the server and processes the response.\n   *\n   * @param {OperationDocumentIn} body - The input data for the operation document.\n   * @return {Observable<OperationDocumentOut>} An observable containing the processed operation document output.\n   */\n  postOperationDocument (body: OperationDocumentIn): Observable<OperationDocumentOut> {\n    return this.http.post<ApiSuccess<OperationDocumentOut>>(`${this.url}/operation/document`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches and returns the collection receipt data for a given collection ID.\n   *\n   * @param {number} id - The unique identifier of the collection for which the receipt needs to be retrieved.\n   * @return {Observable<PrintCollectionReceiptOut>} An observable containing the collection receipt data.\n   */\n  getPrintCollectionReceipt (id: number): Observable<PrintCollectionReceiptOut> {\n    return this.http.get<ApiSuccess<PrintCollectionReceiptOut>>(`${this.url}/operation/print/collection-receipt/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Handles the account payment operation by sending a POST request to the specified endpoint.\n   * Processes the response and returns the operation data.\n   *\n   * @param {OperationAccountPaymentIn} body The payload containing information for the account payment operation.\n   * @return {Observable<OperationAccountPaymentOut>} An observable emitting the processed account payment operation data.\n   */\n  postOperationAccountPayment (body: OperationAccountPaymentIn): Observable<OperationAccountPaymentOut> {\n    return this.http.post<ApiSuccess<OperationAccountPaymentOut>>(`${this.url}/operation/account-payment`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Cancels a payment receipt based on the provided input.\n   * This method sends a POST request to cancel a document.\n   *\n   * @param body The data required to cancel the payment receipt, encapsulated in a CancelPaymentReceiptIn object.\n   * @return An Observable representing the result of the cancellation. Emits an empty object on success.\n   */\n  postOperationCancelDocument (body: CancelPaymentReceiptIn): Observable<{}> {\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/operation/cancel-document`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to cancel billing for a specific operation.\n   *\n   * @param {Object} params - The parameters for the cancellation request.\n   * @param {string} params.invoiceId - The ID of the invoice to be canceled.\n   * @param {Object} params.body - Additional data to be sent in the request body.\n   * @return {Observable<OperationCancelBillingOut>} An observable emitting the result of the cancellation operation.\n   */\n  postOperationCancelBilling ({ invoiceId, ...body }: OperationCancelBillingIn): Observable<OperationCancelBillingOut> {\n    return this.http.post<ApiSuccess<OperationCancelBillingOut>>(`${this.url}/operation/cancel-billing/${invoiceId}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of customer types from the server.\n   *\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\n   * @return {Observable<CustomerTypesOut>} An observable emitting the customer types fetched from the server.\n   */\n  getCustomerTypes (params: QueryParams): Observable<CustomerTypesOut> {\n    return this.http.get<ApiSuccess<CustomerTypesOut>>(`${this.url}/customer-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves document types specific to a given country.\n   *\n   * @param {QueryParams} params - The query parameters containing country-specific information.\n   * @return {Observable<CustomerDocumentTypesOut>} An observable emitting the document types available for the specified country.\n   */\n  getCustomerDocumentTypes (params: QueryParams): Observable<CustomerDocumentTypesOut> {\n    return this.http.get<ApiSuccess<CustomerDocumentTypesOut>>(`${this.url}/customer-country-document-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches customer invoice details filtered by a custom invoice type.\n   *\n   * @param {InvoiceTypeCustomParamsIn} params - An object containing the filter parameters for the custom invoice type.\n   * @return {Observable<CustomersOut>} An observable containing customer invoice details of the specified type.\n   */\n  getCustomers (params: QueryParams): Observable<CustomersOut> {\n    return this.http.get<ApiSuccess<CustomersOut>>(`${this.url}/customers`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update an external shipment operation.\n   *\n   * @param {OperationShipmentExternalIn} params - The input parameters for the external shipment operation.\n   * @return {Observable<OperationShipmentExternalOut>} An observable that emits the result of the external shipment operation.\n   */\n  postOperationShipmentExternal (params: OperationShipmentExternalIn): Observable<OperationShipmentExternalOut> {\n    return this.http.post<ApiSuccess<OperationShipmentExternalOut>>(`${this.url}/operation/shipment/external`, params)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Processes an external payment operation for a shipment.\n   *\n   * @param {OperationShipmentExternalIn} params - The input parameters required for the external payment operation.\n   * @return {Observable<OperationShipmentExternalOut>} An observable that emits the result of the external payment operation for a shipment.\n   */\n  postOperationShipmentExternalPayment (params: OperationShipmentExternalIn): Observable<OperationShipmentExternalOut> {\n    return this.http.post<ApiSuccess<OperationShipmentExternalOut>>(`${this.url}/operation/shipment/external/payment`, params)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves and returns billing operation print details for a given document ID.\n   *\n   * @param {number} documentId - The ID of the document for which to fetch the print billing operation details.\n   * @return {Observable<OperationPrintDocumentOut>} An observable emitting the print billing operation details for the specified document.\n   */\n  getOperationPrintDocument (documentId: number): Observable<OperationPrintDocumentOut> {\n    return this.http.get<ApiSuccess<OperationPrintDocumentOut>>(`${this.url}/operation/print/document/${documentId}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches all country payment types.\n   *\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\n   * @return {Observable<CountryPaymentTypesOut>} An observable emitting the country payment types fetched from the server.\n   */\n  getCountryPaymentTypes (params: QueryParams): Observable<CountryPaymentTypesOut> {\n    return this.http.get<ApiSuccess<CountryPaymentTypesOut>>(`${this.url}/country-payment-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing country payment type.\n   *\n   * @param {number} id - The ID of the country payment type to update.\n   * @param {CountryPaymentTypeIn} body - The updated data for the country payment type.\n   * @returns {Observable<CountryPaymentTypeOut>} An observable that emits the result of the update operation.\n   */\n  putCountryPaymentType (id: number, body: CountryPaymentTypeIn): Observable<CountryPaymentTypeOut> {\n    return this.http.put<ApiSuccess<CountryPaymentTypeOut>>(`${this.url}/country-payment-types/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Delete an existing country payment type.\n   *\n   * @param {number} id - The unique identifier of the country payment type to be deleted.\n   * @returns {Observable<CountryPaymentTypeOut>} An observable that emits the result of the delete operation.\n   */\n  deleteCountryPaymentType (id: number): Observable<CountryPaymentTypeOut> {\n    return this.http.delete<ApiSuccess<CountryPaymentTypeOut>>(`${this.url}/country-payment-types/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Create a new country payment type resource.\n   *\n   * @param {CountryPaymentTypeIn} body - The input parameters required for create a new country payment type.\n   * @return {Observable<CountryPaymentTypeOut>} An observable that emits the result of create operation.\n   */\n  postCountryPaymentType (body: CountryPaymentTypeIn): Observable<CountryPaymentTypeOut> {\n    return this.http.post<ApiSuccess<CountryPaymentTypeOut>>(`${this.url}/country-payment-types`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves and returns a country payment type for a given ID.\n   *\n   * @param {number} id - The ID of the country payment type.\n   * @return {Observable<CountryPaymentTypeOut>} An observable that emits the result of show operation.\n   */\n  getCountryPaymentType (id: number): Observable<CountryPaymentTypeOut> {\n    return this.http.get<ApiSuccess<CountryPaymentTypeOut>>(`${this.url}/country-payment-types/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches all country payment type fields.\n   *\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\n   * @return {Observable<CountryPaymentTypeFieldsOut>} An observable emitting the country payment type fields fetched from the server.\n   */\n  getCountryPaymentTypeFields (params: QueryParams): Observable<CountryPaymentTypeFieldsOut> {\n    return this.http.get<ApiSuccess<CountryPaymentTypeFieldsOut>>(`${this.url}/country-payment-type-fields`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Create a new country payment type field resource.\n   *\n   * @param {CountryPaymentTypeFieldIn} body - The input parameters required for create a new country payment type field.\n   * @return {Observable<CountryPaymentTypeFieldOut>} An observable that emits the result of create operation.\n   */\n  postCountryPaymentTypeField (body: CountryPaymentTypeFieldIn): Observable<CountryPaymentTypeFieldOut> {\n    return this.http.post<ApiSuccess<CountryPaymentTypeFieldOut>>(`${this.url}/country-payment-type-fields`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing country payment type field.\n   *\n   * @param {number} id - The ID of the country payment type field to update.\n   * @param {CountryPaymentTypeFieldIn} body - The updated data for the country payment type field.\n   * @returns {Observable<CountryPaymentTypeFieldOut>} An observable that emits the result of the update operation.\n   */\n  putCountryPaymentTypeField (id: number, body: CountryPaymentTypeFieldIn): Observable<CountryPaymentTypeFieldOut> {\n    return this.http.put<ApiSuccess<CountryPaymentTypeFieldOut>>(`${this.url}/country-payment-type-fields/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches all payment types.\n   *\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\n   * @return {Observable<PaymentTypesOut>} An observable emitting the payment types fetched from the server.\n   */\n  getPaymentTypes (params: QueryParams): Observable<PaymentTypesOut> {\n    return this.http.get<ApiSuccess<PaymentTypesOut>>(`${this.url}/payment-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches all payment type fields card.\n   *\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\n   * @return {Observable<PaymentTypeFieldCardTypesOut>} An observable emitting the payment type fields card fetched from the server.\n   */\n  getPaymentTypeFieldCardTypes (params: QueryParams): Observable<PaymentTypeFieldCardTypesOut> {\n    return this.http.get<ApiSuccess<PaymentTypeFieldCardTypesOut>>(`${this.url}/payment-type-field-card-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Create a new payment type field card resource.\n   *\n   * @param {PaymentTypeFieldCardTypeIn} body - The input parameters required for create a new payment type field card.\n   * @return {Observable<PaymentTypeFieldCardTypeOut>} An observable that emits the result of create operation.\n   */\n  postCountryPaymentTypeFieldCardType (body: PaymentTypeFieldCardTypeIn): Observable<PaymentTypeFieldCardTypeOut> {\n    return this.http.post<ApiSuccess<PaymentTypeFieldCardTypeOut>>(`${this.url}/payment-type-field-card-types`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing payment type field card.\n   *\n   * @param {number} id - The ID of the payment type field card to update.\n   * @param {PaymentTypeFieldCardTypeIn} body - The updated data for the payment type field card.\n   * @returns {Observable<PaymentTypeFieldCardTypeOut>} An observable that emits the result of the update operation.\n   */\n  putCountryPaymentTypeFieldCardType (id: number, body: PaymentTypeFieldCardTypeIn): Observable<PaymentTypeFieldCardTypeOut> {\n    return this.http.put<ApiSuccess<PaymentTypeFieldCardTypeOut>>(`${this.url}/payment-type-field-card-types/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches all payment type fields accounts.\n   *\n   * @param {QueryParams} params - Query parameters to filter or customize the request.\n   * @return {Observable<PaymentTypeFieldAccountsOut>} An observable emitting the payment type fields accounts fetched from the server.\n   */\n  getPaymentTypeFieldAccounts (params: QueryParams): Observable<PaymentTypeFieldAccountsOut> {\n    return this.http.get<ApiSuccess<PaymentTypeFieldAccountsOut>>(`${this.url}/payment-type-field-accounts`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Create a new payment type field account resource.\n   *\n   * @param {PaymentTypeFieldAccountIn} body - The input parameters required for create a new payment type field account.\n   * @return {Observable<PaymentTypeFieldAccountOut>} An observable that emits the result of create operation.\n   */\n  postCountryPaymentTypeFieldAccount (body: PaymentTypeFieldAccountIn): Observable<PaymentTypeFieldAccountOut> {\n    return this.http.post<ApiSuccess<PaymentTypeFieldAccountOut>>(`${this.url}/payment-type-field-accounts`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing payment type field account.\n   *\n   * @param {number} id - The ID of the payment type field account to update.\n   * @param {PaymentTypeFieldAccountIn} body - The updated data for the payment type field account.\n   * @returns {Observable<PaymentTypeFieldAccountOut>} An observable that emits the result of the update operation.\n   */\n  putCountryPaymentTypeFieldAccount (id: number, body: PaymentTypeFieldAccountIn): Observable<PaymentTypeFieldAccountOut> {\n    return this.http.put<ApiSuccess<PaymentTypeFieldAccountOut>>(`${this.url}/payment-type-field-accounts/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches tolerance data from the server based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters to use for querying tolerances.\n   * @return {Observable<TolerancesOut>} An observable emitting the tolerance data.\n   */\n  getTolerances (params: QueryParams): Observable<TolerancesOut> {\n    return this.http.get<ApiSuccess<TolerancesOut>>(`${this.url}/tolerances`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the tolerance detail for a given identifier.\n   *\n   * @param {number} id - The unique identifier for the tolerance to retrieve.\n   * @return {Observable<ToleranceOut>} An observable containing the tolerance data.\n   */\n  getTolerance (id: number): Observable<ToleranceOut> {\n    return this.http.get<ApiSuccess<ToleranceOut>>(`${this.url}/tolerances/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a request to update or create a tolerance record using the provided data.\n   *\n   * @param {ToleranceIn} body - The tolerance input object containing the data to be sent in the request.\n   * @return {Observable<ToleranceOut>} An observable that emits the updated or created tolerance output object.\n   */\n  postTolerance (body: ToleranceIn): Observable<ToleranceOut> {\n    return this.http.post<ApiSuccess<ToleranceOut>>(`${this.url}/tolerances`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the tolerance with the specified ID using the provided data.\n   *\n   * @param {number} id - The unique identifier of the tolerance to update.\n   * @param {ToleranceIn} body - The data to update the tolerance with.\n   * @return {Observable<ToleranceOut>} An observable containing the updated tolerance information.\n   */\n  putTolerance (id: number, body: ToleranceIn): Observable<ToleranceOut> {\n    return this.http.put<ApiSuccess<ToleranceOut>>(`${this.url}/tolerances/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes the tolerance entry corresponding to the given ID.\n   *\n   * @param {number} id - The unique identifier of the tolerance to be deleted.\n   * @return {Observable<{}>} An Observable that emits the result of the delete operation.\n   */\n  deleteTolerance (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/tolerances/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the document requests associated with a document ID.\n   *\n   * @param id - The unique identifier for the document.\n   * @returns An observable that emits the document requests data.\n   */\n  getOperationDocumentRequests (id: number): Observable<OperationDocumentRequestsOut> {\n    return this.http.get<ApiSuccess<OperationDocumentRequestsOut>>(`${this.url}/operation/document/requests/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of documents based on the provided query parameters.\n   *\n   * @param params - The query parameters to filter and paginate the documents\n   * @returns An Observable that emits the documents data when the HTTP request completes\n   */\n  getDocuments (params: QueryParams): Observable<GetDocumentsOut> {\n    return this.http.get<ApiSuccess<GetDocumentsOut>>(`${this.url}/documents`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches document status values from the API.\n   *\n   * Sends an HTTP GET request to the service's `/document-status` endpoint using the supplied query parameters\n   * and returns the decoded `data` payload from the API success envelope.\n   *\n   * @param params - Query parameters to apply to the request (e.g. filtering, pagination, search).\n   * @returns An Observable that emits a DocumentStatusesOut object containing the document status data.\n   */\n  getDocumentStatuses (params: QueryParams): Observable<DocumentStatusesOut> {\n    return this.http.get<ApiSuccess<DocumentStatusesOut>>(`${this.url}/document-status`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the XML print representation for a given operation (invoice).\n   *\n   * Sends an HTTP GET request to the backend endpoint `/operation/print/xml/{documentId}` and\n   * unwraps the `data` field from the API success response before emitting it.\n   *\n   * @param documentId - The numeric identifier of the document to fetch.\n   * @returns An Observable that emits the OperationPrintXmlOut payload on success and completes.\n   *          The Observable will error if the HTTP request fails or the response does not contain the expected data.\n   */\n  getOperationPrintXml (documentId: number): Observable<OperationPrintXmlOut> {\n    return this.http.get<ApiSuccess<OperationPrintXmlOut>>(`${this.url}/operation/print/xml/${documentId}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of providers based on the provided query parameters.\n   * @param params - Query parameters to filter or paginate the providers list\n   * @returns An Observable that emits the providers data\n   */\n  getProviders (params: QueryParams): Observable<ProvidersOut> {\n    return this.http.get<ApiSuccess<ProvidersOut>>(`${this.url}/providers`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the document type ranges based on the provided query parameters.\n   * @param params - The query parameters to filter document type ranges\n   * @returns An Observable that emits the document type ranges data\n   */\n  getDocumentsTypesRanges (params: QueryParams): Observable<DocumentTypeRangesOut> {\n    return this.http.get<ApiSuccess<DocumentTypeRangesOut>>(`${this.url}/document-type-ranges`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the currently active document type ranges.\n   *\n   * @returns {Observable<DocumentsTypesRangesCurrentStatusOut>} An observable that emits the currently active document type ranges data.\n   */\n  getDocumentsTypesRangesCurrentStatus (): Observable<DocumentsTypesRangesCurrentStatusOut> {\n    return this.http.get<ApiSuccess<DocumentsTypesRangesCurrentStatusOut>>(`${this.url}/document-type-ranges/current-status`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new document type range.\n   * @param body - The document type range data to create\n   * @returns An observable that emits the created document type range\n   */\n  postDocumentTypeRange (body: DocumentTypeRangeIn): Observable<DocumentTypeRangeOut> {\n    return this.http.post<ApiSuccess<DocumentTypeRangeOut>>(`${this.url}/document-type-ranges`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a document type range by its identifier.\n   * @param id - The unique identifier of the document type range to delete\n   * @returns An Observable that emits the deleted DocumentTypeRangeOut object\n   */\n  deleteDocumentsTypesRange (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/document-type-ranges/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates a document type range for a given ID.\n   * @param id - The unique identifier of the document type range to update\n   * @param data - The document type range data to update\n   * @returns An Observable that emits the updated DocumentTypeRangeOut object\n   */\n  putDocumentsTypeRange (id: number, data: DocumentTypeRangeIn): Observable<DocumentTypeRangeOut> {\n    return this.http.put<ApiSuccess<DocumentTypeRangeOut>>(`${this.url}/document-type-ranges/${id}`, data)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the list of document types available for a specific country.\n   * @param params - Query parameters to filter or customize the country document types request\n   * @returns Observable containing the country document types data\n   */\n  getCountryDocumentsTypes (params: QueryParams): Observable<CountryDocumentTypesOut> {\n    return this.http.get<ApiSuccess<CountryDocumentTypesOut>>(`${this.url}/country-document-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  NotificationConfigurationIn,\n  NotificationConfigurationOut,\n  NotificationIn,\n  NotificationOut,\n  NotificationsOut,\n  NotificationsTypeOut\n} from './models/api-notifications.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiNotificationsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the notifications API from the environment settings.\n   * If the URL is not defined, an empty string is returned.\n   *\n   * @return {string} The API Notifications URL or an empty string if not defined.\n   */\n  get url (): string {\n    return this.environments.apiNotificationsUrl ?? ''\n  }\n\n  /**\n   * Retrieves notifications based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter and retrieve notifications.\n   * @return {Observable<NotificationsOut>} An observable that emits the fetched notifications.\n   */\n  getNotifications (params: QueryParams): Observable<NotificationsOut> {\n    return this.http.get<ApiSuccess<NotificationsOut>>(`${this.url}/notifications`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a notification request to the server using the provided body.\n   *\n   * @param {NotificationIn} body - The notification data to be sent in the request body.\n   * @return {Observable<NotificationOut>} An observable emitting the response containing the notification output data.\n   */\n  postNotification (body: NotificationIn): Observable<NotificationOut> {\n    return this.http.post<ApiSuccess<NotificationOut>>(`${this.url}/notifications`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a PUT request to update a notification with the provided ID and body.\n   *\n   * @param {number} id - The unique identifier of the notification to be updated.\n   * @param {NotificationIn} body - The data to update the notification with.\n   * @return {Observable<NotificationOut>} An observable containing the updated notification data.\n   */\n  putNotification (id: number, body: NotificationIn): Observable<NotificationOut> {\n    return this.http.put<ApiSuccess<NotificationOut>>(`${this.url}/notifications/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes a notification by its unique identifier.\n   *\n   * @param {number} id - The unique identifier of the notification to delete.\n   * @return {Observable<{}>} An observable that emits the response after deleting the notification.\n   */\n  deleteNotification (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/notifications/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Marks the notification as finished for the specified notification ID.\n   *\n   * @param {number} id - The unique identifier of the notification to be marked as finished.\n   * @return {Observable<NotificationOut>} An Observable emitting the updated notification object.\n   */\n  putNotificationFinish (id: number): Observable<NotificationOut> {\n    return this.http.put<ApiSuccess<NotificationOut>>(`${this.url}/notifications/finish/${id}`, {})\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to create or update notification configurations.\n   *\n   * @param {NotificationConfigurationIn} body - The notification configuration payload to be sent in the request.\n   * @return {Observable<NotificationConfigurationOut>} An observable emitting the response containing the created or updated notification configuration.\n   */\n  postNotificationConfigurations (body: NotificationConfigurationIn): Observable<NotificationConfigurationOut> {\n    return this.http.post<ApiSuccess<NotificationConfigurationOut>>(`${this.url}/notification-configurations`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the notification types based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters for fetching the notification types.\n   * @return {Observable<NotificationsTypeOut>} An observable that emits the fetched notification types.\n   */\n  getNotificationsType (params: QueryParams): Observable<NotificationsTypeOut> {\n    return this.http.get<ApiSuccess<NotificationsTypeOut>>(`${this.url}/notification-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { OtherInvoiceIn, PaymentOpenItemIn } from './models/api-open-items.interfaces'\nimport type { OpenItemsOut, OtherInvoiceOut, PaymentOut } from './models/api-open-items.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiOpenItemsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the API URL for open-items from the environments' configuration.\n   *\n  * @returns {string} The API URL for open-items.\n   */\n  get url (): string {\n    return this.environments.apiOpenItemsUrl ?? ''\n  }\n\n  /**\n   * Retrieves a list of open-items based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters to use for querying open-items.\n  * @returns {Observable<OpenItemsOut>} An observable that emits the open-item data.\n   */\n  getOpenItems (params: QueryParams): Observable<OpenItemsOut> {\n    return this.http.get<ApiSuccess<OpenItemsOut>>(`${this.url}/open-items`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Processes a payment for an open item.\n   *\n   * @param {PaymentOpenItemIn} body - The payment details for the open item.\n  * @returns {Observable<PaymentOut>} An observable that emits the result of the payment processing.\n   */\n  postPayment (body: PaymentOpenItemIn): Observable<PaymentOut> {\n    return this.http.post<ApiSuccess<PaymentOut>>(`${this.url}/payment`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Processes a payment for other invoice.\n   *\n   * @param {OtherInvoiceIn} body - The payment details for the other invoice.\n  * @returns {Observable<OtherInvoiceOut>} An observable that emits the result of the payment processing.\n   */\n  postOtherInvoice (body: OtherInvoiceIn): Observable<OtherInvoiceOut> {\n    return this.http.post<ApiSuccess<OtherInvoiceOut>>(`${this.url}/other-invoices`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type { QuoteEventIn, QuoteEventOut, QuoteEventsOut, QuoteEventTypesOut } from './models/api-quote.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiQuoteService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Base URL for the Quotes API.\n   */\n  get url (): string {\n    return this.environments.apiQuotesUrl ?? ''\n  }\n\n  /**\n   * Retrieves all registered events for a specific quote.\n   *\n   * @param id - Quote identifier.\n   * @param params - Optional query parameters such as pagination or filtering.\n   * @returns Observable containing the list of quote events.\n   *\n   * @example\n   * ```ts\n   * this.apiQuoteService.getQuoteEvents(10, { page: 1 })\n   *   .subscribe((events) => console.log(events))\n   * ```\n   */\n  getQuoteEvents (id: number, params: QueryParams): Observable<QuoteEventsOut> {\n    return this.http.get<ApiSuccess<QuoteEventsOut>>(`${this.url}/quotes/${id}/quote-events`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Registers a new event related to a specific quote.\n   *\n   * @param id - Quote identifier.\n   * @param body - Event payload to be created.\n   * @returns Observable containing the newly created event.\n   *\n   * @example\n   * ```ts\n   * const event: QuoteEventIn = { code: 'WON', note: 'Client approved' }\n   * this.apiQuoteService.postQuoteEvents(10, event)\n   *   .subscribe((response) => console.log(response))\n   * ```\n   */\n  postQuoteEvents (id: number, body: QuoteEventIn): Observable<QuoteEventOut> {\n    return this.http.post<ApiSuccess<QuoteEventOut>>(`${this.url}/quotes/${id}/quote-events`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the available quote event types.\n   *\n   * @param params - Optional query parameters such as pagination or filtering.\n   * @returns Observable containing the list of event types.\n   *\n   * @example\n   * ```ts\n   * this.apiQuoteService.getQuoteEventTypes({ page: 1 })\n   *   .subscribe((types) => console.log(types))\n   * ```\n   */\n  getQuoteEventTypes (params: QueryParams): Observable<QuoteEventTypesOut> {\n    return this.http.get<ApiSuccess<QuoteEventTypesOut>>(`${this.url}/quote-event-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import type { HttpResponse } from '@angular/common/http'\nimport { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  CollectionPaymentsOut, ExternalShipmentsOut,\n  FileCheckOut, HistoriesReportOut, InventoriesReportOut, InvoicesOut, OperationsReportOut, PackagesReportOut, ParcelsReportOut, PartialWithdrawalsOut,\n  PromotionCodeDiscountsOut,\n  SalesBookReportOut,\n  ShipmentsLandingReportOut,\n  ShipmentsReportOut\n} from './models/api-reports.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiReportsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the reports API from the environment configurations.\n   *\n   * @return {string} The URL of the reports API.\n   */\n  get url (): string {\n    return this.environments.apiReportsUrl ?? ''\n  }\n\n  /**\n   * Retrieves the list of collection payments\n   *\n   * @param {QueryParams} params - The query parameters used to fetch the collection payments.\n   * @return {Observable<CollectionPaymentsOut[]>} An observable that emits an array of collection payment.\n   */\n  getCollectionPayments (params: QueryParams): Observable<CollectionPaymentsOut> {\n    return this.http.get<ApiSuccess<CollectionPaymentsOut>>(`${this.url}/collection-payment`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches shipment reports based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters used to filter or define the shipment reports.\n   * @return {Observable<ShipmentsReportOut>} An observable emitting the shipment report data.\n   */\n  getShipmentsReport (params: QueryParams): Observable<ShipmentsReportOut> {\n    return this.http.get<ApiSuccess<ShipmentsReportOut>>(`${this.url}/shipments-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the shipments landing report from the reports API.\n   *\n   * Sends a GET request to the `/shipments-landing-report` endpoint with the provided query parameters.\n   * The HTTP response is expected to be wrapped in an `ApiSuccess` envelope, from which the `data`\n   * payload is extracted and returned as the stream value.\n   *\n   * @param params - Query parameters used to filter or paginate the shipments landing report.\n   * @returns An observable that emits the parsed `ShipmentsLandingReportOut` data from the API response.\n   *\n   * @remarks\n   * - The underlying HTTP call uses `HttpClient.get` with `params` serialized as query string values.\n   * - The response is piped through `map` to unwrap `data` from `ApiSuccess<T>`.\n   * - Errors from the HTTP request are propagated through the observable stream.\n   *\n   * @example\n   * ```ts\n   * // Basic usage:\n   * service.getShipmentsLandingReport({ page: 1, perPage: 25 })\n   *   .subscribe(report => {\n   *     // handle ShipmentsLandingReportOut\n   *   });\n   * ```\n   */\n  getShipmentsLandingReport (params: QueryParams): Observable<ShipmentsLandingReportOut> {\n    return this.http.get<ApiSuccess<ShipmentsLandingReportOut>>(`${this.url}/shipments-landing-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a report of external shipments based on the provided query parameters.\n   *\n   * @param {QueryParams} params - An object representing the query parameters for filtering the external shipments report.\n   * @return {Observable<ExternalShipmentsOut>} An observable that emits the external shipments report data.\n   */\n  getExternalShipmentsReport (params: QueryParams): Observable<ExternalShipmentsOut> {\n    return this.http.get<ApiSuccess<ExternalShipmentsOut>>(`${this.url}/external-shipments-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a report of promotion code discounts based on the provided query parameters.\n   *\n   * @param {QueryParams} params - An object representing the query parameters for filtering the promotion code discounts report.\n   * @return {Observable<PromotionCodeDiscountsOut>} An observable that emits the promotion code discounts report data.\n   */\n  getPromotionCodeDiscounts (params: QueryParams): Observable<PromotionCodeDiscountsOut> {\n    return this.http.get<ApiSuccess<PromotionCodeDiscountsOut>>(`${this.url}/promotion-code-discounts`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the downloadable resource associated with the given transaction ID.\n   *\n   * @param {string} transactionId - The unique identifier of the transaction whose download is requested.\n   * @return {Observable<HttpResponse<ArrayBuffer>>} An observable that emits the HTTP response containing the resource in the form of an ArrayBuffer.\n   */\n  getDownload (transactionId: string): Observable<HttpResponse<ArrayBuffer>> {\n    return this.http.get(`${this.url}/download/${transactionId}`, {\n      observe: 'response',\n      responseType: 'arraybuffer'\n    })\n  }\n\n  /**\n   * Retrieves file check information for the specified transaction ID.\n   *\n   * @param {string} transactionId - The ID of the transaction for which the file check information is to be retrieved.\n   * @return {Observable<FileCheckOut>} An observable that emits the file check information associated with the given transaction ID.\n   */\n  getFileCheck (transactionId: string): Observable<FileCheckOut> {\n    return this.http.get<ApiSuccess<FileCheckOut>>(`${this.url}/file-check/${transactionId}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes the file check associated with the provided transaction ID.\n   *\n   * @param {string} transactionId - The unique identifier of the transaction whose file check is to be deleted.\n   * @return {Observable<{}>} An observable emitting the response data after the deletion is processed.\n   */\n  deleteFileCheck (transactionId: string): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/file-check/${transactionId}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves partial withdrawals based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The parameters used to filter the list of partial withdrawals.\n   * @returns {Observable<PartialWithdrawalsOut>} An observable that emits the filtered list of partial withdrawals.\n   */\n  getPartialWithdrawals (params: QueryParams): Observable<PartialWithdrawalsOut> {\n    return this.http.get<ApiSuccess<PartialWithdrawalsOut>>(`${this.url}/partial-withdrawals`, {\n      params\n    })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of invoices based on the provided query parameters.\n   *\n   * @param params - The query parameters used to filter the invoices.\n   * @returns An observable that emits the list of invoices.\n   */\n  getInvoices (params: QueryParams): Observable<InvoicesOut> {\n    return this.http.get<ApiSuccess<InvoicesOut>>(`${this.url}/invoices`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the sales book report based on the provided query parameters.\n   *\n   * @param params - The query parameters to filter or customize the report.\n   * @returns An Observable that emits the sales book report data.\n   *\n   * @example\n   * ```typescript\n   * this.apiReportsService.getSalesBookReport({ page: 1, limit: 10 })\n   *   .subscribe(report => console.log(report));\n   * ```\n   */\n  getSalesBookReport (params: QueryParams): Observable<SalesBookReportOut> {\n    return this.http.get<ApiSuccess<SalesBookReportOut>>(`${this.url}/sales-book-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of shipment histories based on the provided query parameters.\n   *\n   * @param params - The query parameters used to filter the shipment histories.\n   * @returns An observable that emits the list of shipment histories.\n   */\n  getHistoriesReport (params: QueryParams): Observable<HistoriesReportOut> {\n    return this.http.get<ApiSuccess<HistoriesReportOut>>(`${this.url}/histories-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of parcels based on the provided query parameters.\n   *\n   * @param params - The query parameters used to filter the parcels.\n   * @returns An observable that emits the list of parcels.\n   */\n  getParcelsReport (params: QueryParams): Observable<ParcelsReportOut> {\n    return this.http.get<ApiSuccess<ParcelsReportOut>>(`${this.url}/parcels-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of operations based on the provided query parameters.\n   *\n   * @param params - The query parameters used to filter the operations.\n   * @returns An observable that emits the list of operations.\n   */\n  getOperationsReport (params: QueryParams): Observable<OperationsReportOut> {\n    return this.http.get<ApiSuccess<OperationsReportOut>>(`${this.url}/operations-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of operations based on the provided query parameters.\n   *\n   * @param params - The query parameters used to filter the operations.\n   * @returns An observable that emits the list of operations.\n   */\n  getPackagesReport (params: QueryParams): Observable<PackagesReportOut> {\n    return this.http.get<ApiSuccess<PackagesReportOut>>(`${this.url}/packages-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of inventories based on the provided query parameters.\n   *\n   * @param params - The query parameters used to filter the inventories.\n   * @returns An observable that emits the list of inventories.\n   */\n  getInventoriesReport (params: QueryParams): Observable<InventoriesReportOut> {\n    return this.http.get<ApiSuccess<InventoriesReportOut>>(`${this.url}/inventories-report`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient, HttpHeaders } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport { CookieService } from 'ngx-cookie-service'\nimport type { Observable } from 'rxjs'\nimport { map, tap } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  AuthLoginIn,\n  AuthLoginOut,\n  AuthMeOut,\n  AuthUserLoginIn,\n  ChangeLanguageIn,\n  GetUserOut,\n  GetUsersOut,\n  ModulesOut,\n  PutUsersIn,\n  PutUsersOut,\n  RoleIn,\n  RoleOut,\n  RolesOut,\n  RoleTypesOut,\n  SessionIn,\n  SessionOut\n} from './models/api-security.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiSecurityService {\n  private cookie = inject(CookieService)\n  private http = inject(HttpClient)\n  private environments = inject(ENVIRONMENT_TOKEN)\n\n  /**\n   * Retrieves the API security URL from the environments configuration.\n   *\n   * @return {string} The API security URL.\n   */\n  get url (): string {\n    return this.environments.apiSecurityUrl ?? ''\n  }\n\n  /**\n   * Handles the login authentication request by sending the login data to the authentication endpoint.\n   *\n   * @param {AuthLoginIn} body The payload containing login credentials.\n   * @return {Observable<AuthLoginOut>} An observable emitting the authentication response data.\n   */\n  postAuthLogin (body: AuthLoginIn): Observable<AuthLoginOut> {\n    return this.http.post<ApiSuccess<AuthLoginOut>>(`${this.url}/auth/login`, body)\n      .pipe(\n        map(({ data }) => data),\n        tap(({ access_token }) => {\n          if (this.environments.authCookie) {\n            this.cookie.set(this.environments.authCookie, access_token, { path: '/' })\n          }\n        })\n      )\n  }\n\n  /**\n   * Handles the user login process by sending user credentials to the authentication endpoint.\n   *\n   * @param {AuthUserLoginIn} body - The request payload containing user login details such as username and password.\n   * @return {Observable<AuthLoginOut>} An observable that emits the authenticated user's login data upon successful login.\n   */\n  postAuthUserLogin (body: AuthUserLoginIn): Observable<AuthLoginOut> {\n    return this.http.post<ApiSuccess<AuthLoginOut>>(`${this.url}/auth/user-login`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Logs out the current user by making a POST request to the logout endpoint.\n   *\n   * This method deletes all cookies after a successful logout.\n   *\n   * @return {Observable<{}>} An observable that emits the server's response to the logout request.\n   */\n  postAuthLogout (): Observable<{}> {\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/auth/logout`, null)\n      .pipe(\n        map(({ data }) => data),\n        tap(() => {\n          if (this.environments.authCookie) {\n            this.cookie.delete(this.environments.authCookie, '/')\n          }\n        })\n      )\n  }\n\n  /**\n   * Creates a new session for a specified model.\n   *\n   * @param {Object} params - The parameters for creating the session.\n   * @param {string} params.modelType - The type of the model.\n   * @param {string} params.modelId - The ID of the model.\n   * @param {string} [params.token] - Optional authorization token.\n   *\n   * @return {Observable<SessionOut>} An observable containing the created session details.\n   */\n  postSession ({\n    modelType,\n    modelId,\n    token,\n  }: SessionIn): Observable<SessionOut> {\n    let headers = new HttpHeaders({})\n\n    if (token) { headers = headers.set('Authorization', `Bearer ${token}`) }\n\n    return this.http.post<ApiSuccess<SessionOut>>(\n      `${this.url}/sessions`, {\n        model_type: modelType,\n        model_id: modelId,\n      }, {\n        headers\n      }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the authenticated user's information.\n   * Sends a GET request to the endpoint '/auth/me' to retrieve information\n   * about the currently authenticated user.\n   *\n   * @return {Observable<AuthMeOut>} An observable that emits the authenticated user's data.\n   */\n  getAuthMe (): Observable<AuthMeOut> {\n    return this.http.get<ApiSuccess<AuthMeOut>>(`${this.url}/auth/me`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the authenticated user's details from the server.\n   *\n   * @param token The JWT token used for authorization.\n   * @return An Observable that emits the user's details encapsulated in a MeOut object.\n   */\n  getOtherMe (token: string): Observable<AuthMeOut> {\n    return this.http.get<ApiSuccess<AuthMeOut>>(`${this.url}/auth/me`, {\n      headers: {\n        Authorization: `Bearer ${token}`\n      }\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a user by their unique ID.\n   *\n   * @param {number} id - The unique identifier of the user to be fetched.\n   * @return {Observable<GetUserOut>} An observable containing the user information.\n   */\n  getUser (id: number): Observable<GetUserOut> {\n    return this.http.get<ApiSuccess<GetUserOut>>(`${this.url}/users/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of users from the server based on the specified query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the list of users.\n   * @return {Observable<GetUsersOut>} An observable that emits the list of users retrieved from the server.\n   */\n  getUsers (params: QueryParams): Observable<GetUsersOut> {\n    return this.http.get<ApiSuccess<GetUsersOut>>(`${this.url}/users`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the information of a specified user on the server.\n   *\n   * @param {Object} params - The parameter object.\n   * @param {Object} params.user - The user object containing updated data.\n   * @param {string} params.user.id - The unique identifier of the user to be updated.\n   *\n   * @return {void} This method does not return a value.\n   */\n  putUsers ({ user }: PutUsersIn) {\n    return this.http.put<ApiSuccess<PutUsersOut>>(`${this.url}/users/${user.id}`, user)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Changes the language for the authenticated user.\n   *\n   * @param {Object} params - The input parameters for changing the language.\n   * @param {string} params.languageId - The ID of the new language to be set.\n   * @return {Observable<ApiSuccess<AuthMeOut>>} An observable that emits the result of the language change request.\n   */\n  putChangeLanguage ({\n    languageId\n  }: ChangeLanguageIn): Observable<AuthMeOut> {\n    return this.http.put<ApiSuccess<AuthMeOut>>(`${this.url}/auth/me`, {\n      language_id: languageId\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of roles with their permissions.\n   *\n   * @param {QueryParams} params - The query parameters to filter the roles.\n   * @returns {Observable<RoleIn[]>} An observable that emits an array of role permissions.\n   */\n  getRoles (params: QueryParams): Observable<RolesOut> {\n    return this.http.get<ApiSuccess<RolesOut>>(`${this.url}/roles`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves roles by the specified ID.\n   *\n   * @param id - The ID of the role to retrieve.\n   * @returns An Observable that emits the role data.\n   */\n  getRole (id: number): Observable<RoleOut> {\n    return this.http.get<ApiSuccess<RoleOut>>(`${this.url}/roles/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new role with the specified permissions.\n   *\n   * @param {RoleIn} body - The permissions and details for the new role.\n   * @returns {Observable<RoleOut>} An observable containing the created role's permissions.\n   */\n  postRole (body: RoleIn): Observable<RoleOut> {\n    return this.http.post<ApiSuccess<RoleOut>>(`${this.url}/roles`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates the permissions of a specific role.\n   *\n   * @param id - The unique identifier of the role to update.\n   * @param body - The new permissions to assign to the role.\n   * @returns An Observable that emits the updated module permissions.\n   */\n  putRole (id: number, body: RoleIn): Observable<RoleOut> {\n    return this.http.put<ApiSuccess<RoleOut>>(`${this.url}/roles/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Deletes the permissions associated with a specific role.\n   *\n   * @param {number} id - The unique identifier of the role whose permissions are to be deleted.\n   * @returns {Observable<{}>} An observable that emits the result of the delete operation.\n   */\n  deleteRole (id: number): Observable<{}> {\n    return this.http.delete<ApiSuccess<{}>>(`${this.url}/roles/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the role types from the API.\n   *\n   * @param {QueryParams} params - The query parameters to be sent with the request.\n   * @returns {Observable<RoleTypesOut>} An observable containing the role types output.\n   */\n  getRoleTypes (params: QueryParams): Observable<RoleTypesOut> {\n    return this.http.get<ApiSuccess<RoleTypesOut>>(`${this.url}/role-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of modules and permissions\n   *\n   * @param queryParams - The query parameters to filter the modules.\n   * @returns Observable<ModulesOut[]> - An observable that emits an array of modules and permissions.\n   */\n  getModules (queryParams: QueryParams): Observable<ModulesOut> {\n    return this.http.get<ApiSuccess<ModulesOut>>(`${this.url}/modules`, {\n      params: queryParams\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a list of modules and permissions\n   *\n   * @param params.token - Custom token for authorization.\n   * @param params.queryParams - The query parameters to filter the modules.\n   * @returns Observable<ModulesOut[]> - An observable that emits an array of modules and permissions.\n   */\n  getModulesByToken (params: {\n    token: string,\n    queryParams: QueryParams\n  }): Observable<ModulesOut> {\n    return this.http.get<ApiSuccess<ModulesOut>>(`${this.url}/modules`, {\n      params: params.queryParams,\n      headers: {\n        Authorization: `Bearer ${params.token}`\n      }\n    }).pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  AddressPlaceDetailIn,\n  AddressPlaceDetailsOut,\n  AddressSuggestionIn,\n  AddressSuggestionsOut,\n  EmailErrorIn,\n  GetPostalLocationsIn,\n  PostalLocationsOut,\n  PromotionIn,\n  PromotionOut,\n  ServiceAreaIn,\n  ServiceAreasOut,\n  ValidateFacilityIn,\n  ValidateFacilityOut,\n  ValidateIdentificationBRIn,\n  ValidateIdentificationBROut,\n  ValidateNIPIn,\n  ValidateNIPOut,\n} from './models/api-services.types'\nimport type { ApiSuccess } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\n\nexport class ApiServicesService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the services API from the environment settings.\n   * If the URL is not defined, an empty string is returned.\n   *\n   * @return {string} The API Services URL or an empty string if not defined.\n   */\n  get url (): string {\n    return this.environments.apiServicesUrl ?? ''\n  }\n\n  /**\n   * Retrieves service areas based on the provided query parameters.\n   *\n   * @param {ServiceAreaIn} body - The query parameters used to filter and retrieve service areas.\n   * @return {Observable<NotificationsOut>} An observable that emits the fetched service areas.\n   */\n  postServiceAreas (body: ServiceAreaIn): Observable<ServiceAreasOut> {\n    return this.http.post<ApiSuccess<ServiceAreasOut>>(`${this.url}/service-areas`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Validate facility values based on the provided parameter.\n   *\n   * @param {ValidateFacilityIn} body - The facility data to be sent in the request body\n   * @return {Observable<ValidateFacilityOut>} An observable emitting the response containing the facility validated output data.\n   */\n  postValidateFacility (body: ValidateFacilityIn): Observable<ValidateFacilityOut> {\n    return this.http.post<ApiSuccess<ValidateFacilityOut>>(`${this.url}/facilities`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Create an email resource.\n   *\n   * @param {EmailErrorIn} body - The email data to be sent in the request body\n   * @return {Observable<{}>} An observable emitting the response data.\n   */\n  postEmailError (body: EmailErrorIn): Observable<{}> {\n    return this.http.post<ApiSuccess<{}>>(`${this.url}/emails/error`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a promotion request to the server using the provided body.\n   *\n   * @param {PromotionIn} body - The promotion data to be sent in the request body.\n   * @return {Observable<PromotionOut>} An observable emitting the response containing the promotion output data.\n   */\n  postPromotion (body: PromotionIn): Observable<PromotionOut> {\n    return this.http.post<ApiSuccess<PromotionOut>>(`${this.url}/promotions`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Validate NIP account value based on the provided parameter.\n   *\n   * @param {ValidateNIPIn} body - The NIP account data to be sent in the request body\n   * @return {Observable<ValidateNIPOut>} An observable emitting the response containing the NIP account validated data.\n   */\n  postValidateNIP (body: ValidateNIPIn): Observable<ValidateNIPOut> {\n    return this.http.post<ApiSuccess<ValidateNIPOut>>(`${this.url}/accounts/nip`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Validate BR Identification value based on the provided parameter.\n   *\n   * @param {ValidateIdentificationBRIn} body - The BR Identification data to be sent in the request body\n   * @return {Observable<ValidateIdentificationBROut>} An observable emitting the response containing the BR Identification validated data.\n   */\n  postValidateIdentificationBR (body: ValidateIdentificationBRIn): Observable<ValidateIdentificationBROut> {\n    return this.http.post<ApiSuccess<ValidateIdentificationBROut>>(`${this.url}/identifications/br-validation`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches postal location details based on the provided query parameters.\n   * @param {GetPostalLocationsIn} queryParams - The query parameters to filter and fetch postal location data.\n   * @return {Observable<PostalLocationsOut>} An observable that emits the postal location details.\n   */\n  getPostalLocations (queryParams: GetPostalLocationsIn): Observable<PostalLocationsOut> {\n    return this.http.get<ApiSuccess<PostalLocationsOut>>(`${this.url}/postal-locations`, {\n      params: queryParams\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches address suggestions based on the provided query parameters.\n   * @param {AddressSuggestionIn} queryParams - The query parameters to filter and fetch address suggestions.\n   * @return {Observable<AddressSuggestionsOut>} An observable that emits the address suggestions.\n   */\n  getAddressSuggestions (queryParams: AddressSuggestionIn): Observable<AddressSuggestionsOut> {\n    return this.http.get<ApiSuccess<AddressSuggestionsOut>>(`${this.url}/address-details/suggestions`, {\n      params: queryParams\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches address place details based on the provided query parameters.\n   * @param {AddressPlaceDetailIn} queryParams - The query parameters to filter and fetch address place details.\n   * @return {Observable<AddressPlaceDetailsOut>} An observable that emits the address place details.\n   */\n  getAddressPlaceDetails (queryParams: AddressPlaceDetailIn): Observable<AddressPlaceDetailsOut> {\n    return this.http.get<ApiSuccess<AddressPlaceDetailsOut>>(`${this.url}/address-details/place-details`, {\n      params: queryParams\n    }).pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  EmbassyShipmentIn, EmbassyShipmentOut,\n  EmbassyShipmentsOut,\n  ExportTypesOut,\n  ManifestMultipleIn,\n  ManifestMultipleOut,\n  ShipmentCancellationIn,\n  ShipmentCancellationOut,\n  ShipmentEmployeeCustomer,\n  ShipmentSignaturePageOut,\n  SignaturePageSettingIn,\n  SignaturePageSettingOut,\n  SignaturePageSettingsOut,\n  ValidateAccountIn,\n  ValidateAccountOut\n} from './models/api-shipments.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiShipmentsService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the shipments API from the environment configurations.\n   *\n   * @return {string} The URL of the shipments API.\n   */\n  get url (): string {\n    return this.environments.apiShipmentUrl ?? ''\n  }\n\n  /**\n   * Retrieves the parameter values based on the provided parameter names.\n   *\n   * @param {ValidateAccountIn} body - An object of parameter names for which the values need to be fetched.\n   * @return {Observable<ValidateAccountIn>} An observable that emits the fetched parameter values\n   * @param body\n   */\n  postValidateAccount (body: ValidateAccountIn): Observable<ValidateAccountOut> {\n    return this.http.post<ApiSuccess<ValidateAccountOut>>(`${this.url}/accounts`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a POST request to the shipments manifest endpoint with the provided body.\n   *\n   * @param body - The request payload of type `ManifestMultipleIn`.\n   * @returns An observable that emits the response data of type `ManifestMultipleOut`.\n   */\n  postManifestMultiple (body: ManifestMultipleIn) {\n    return this.http.post<ApiSuccess<ManifestMultipleOut>>(`${this.url}/shipments/manifest`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Validates and obtains the number of shipments allowed by an employee customer\n   *\n   * @return {Observable<ShipmentEmployeeCustomer>} An observable containing the shipments allowed by an employee\n   * @param id\n   */\n  getEmployeeCustomer (id: number): Observable<ShipmentEmployeeCustomer> {\n    return this.http.get<ApiSuccess<ShipmentEmployeeCustomer>>(`${this.url}/shipments/employee-customer/${id}`).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Generate signature page PDF for one shipment\n   *\n   * @return {Observable<ShipmentSignaturePageOut>} An observable containing base64 file generated\n   * @param id - the shipment id.\n   */\n  postShipmentSignaturePage (id: number): Observable<ShipmentSignaturePageOut> {\n    return this.http.post<ApiSuccess<ShipmentSignaturePageOut>>(`${this.url}/shipments/${id}/signature-page`, {}).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Cancels a specific shipment by providing its ID and a reason for cancellation.\n   * Sends a PATCH request to update the shipment's cancellation status with the specified reason.\n   *\n   * @param {Object} param0 - The input object containing shipment cancellation details.\n   * @param {string} param0.shipmentId - The unique identifier of the shipment to be canceled.\n   * @param {string} param0.reasonId - The unique identifier of the reason for cancellation.\n   * @return {Observable<ShipmentCancellationOut>} An observable emitting the result of the cancellation operation.\n   */\n  patchShipmentsCancellation ({ shipmentId, reasonId }: ShipmentCancellationIn): Observable<ShipmentCancellationOut> {\n    return this.http.patch<ApiSuccess<ShipmentCancellationOut>>(`${this.url}/shipments/${shipmentId}/cancellation`, {\n      cancellationReasonId: reasonId\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches a list of export types based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the export types.\n   * @return {Observable<ExportTypesOut>} An observable containing the list of export types.\n   */\n  getExportTypes (params: QueryParams): Observable<ExportTypesOut> {\n    return this.http.get<ApiSuccess<ExportTypesOut>>(`${this.url}/export-types`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves a paginated list of embassy shipments\n   * @param {QueryParams} params - Query parameters for filtering and pagination\n   * @returns {Observable<EmbassyShipmentsOut>} Observable containing the list of shipments and pagination metadata\n   */\n  getEmbassyShipments (params: QueryParams): Observable<EmbassyShipmentsOut> {\n    return this.http.get<ApiSuccess<EmbassyShipmentsOut>>(`${this.url}/embassy-shipments`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new embassy shipment\n   * @param {EmbassyShipmentIn} body - The shipment data to create\n   * @returns {Observable<EmbassyShipmentOut>} Observable containing the created shipment with its assigned ID\n   */\n  postEmbassyShipments (body: EmbassyShipmentIn) {\n    return this.http.post<ApiSuccess<EmbassyShipmentOut>>(`${this.url}/embassy-shipments`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing embassy shipment\n   * @param {number} id - The unique identifier of the shipment to update\n   * @param {EmbassyShipmentIn} body - The updated shipment data\n   * @returns {Observable<EmbassyShipmentOut>} Observable containing the updated shipment\n   */\n  putEmbassyShipments (id: number, body: EmbassyShipmentIn) {\n    return this.http.put<ApiSuccess<EmbassyShipmentOut>>(`${this.url}/embassy-shipments/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n  \n  /**\n   * Retrieves a paginated list of signature page settings\n   * @param {QueryParams} params - Query parameters for filtering and pagination\n   * @returns {Observable<SignaturePageSettingsOut>} Observable containing the list of signature page settings and pagination metadata\n   */\n  getSignaturePageSettings (params: QueryParams): Observable<SignaturePageSettingsOut> {\n    return this.http.get<ApiSuccess<SignaturePageSettingsOut>>(`${this.url}/signature-page-settings`, {\n      params\n    }).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the details of a signature page setting based on its ID.\n   *\n   * @param {number} id - The identifier of the signature page setting to fetch.\n   * @return {Observable<SignaturePageSettingOut>} An observable that emits the signature page setting data.\n   */\n  getSignaturePageSetting (id: number): Observable<SignaturePageSettingOut> {\n    return this.http.get<ApiSuccess<SignaturePageSettingOut>>(`${this.url}/signature-page-settings/${id}`).pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new signature page setting\n   * @param {SignaturePageSettingIn} body - The signature page setting data to create\n   * @returns {Observable<SignaturePageSettingOut>} Observable containing the created signature page setting with its assigned ID\n   */\n  postSignaturePageSetting (body: SignaturePageSettingIn) {\n    return this.http.post<ApiSuccess<SignaturePageSettingOut>>(`${this.url}/signature-page-settings`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing signature page setting\n   * @param {number} id - The unique identifier of the signature page setting to update\n   * @param {SignaturePageSettingIn} body - The updated signature page setting data\n   * @returns {Observable<SignaturePageSettingOut>} Observable containing the updated signature page setting\n   */\n  putSignaturePageSetting (id: number, body: SignaturePageSettingIn) {\n    return this.http.put<ApiSuccess<SignaturePageSettingOut>>(`${this.url}/signature-page-settings/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { map } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport type {\n  SuppliesOut,\n  SupplyIn,\n  SupplyLocationIn,\n  SupplyLocationOut, SupplyLocationsOut, SupplyLocationTransactionIn, SupplyLocationTransactionOut,\n  SupplyOut, SupplyTransactionTypesOut,\n  SupplyTypesOut\n} from './models/api-supplies.types'\nimport type { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiSuppliesService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Retrieves the URL for the API supplies endpoint.\n   *\n   * @return {string} The API supplies URL or an empty string if not defined.\n   */\n  get url (): string {\n    return this.environments.apiSuppliesUrl ?? ''\n  }\n\n  /**\n   * Fetches a list of supplies based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the supplies.\n   * @return {Observable<SuppliesOut>} An observable containing the list of supplies.\n   */\n  getSupplies (params: QueryParams): Observable<SuppliesOut> {\n    return this.http.get<ApiSuccess<SuppliesOut>>(`${this.url}/supplies`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the supply details for a given supply ID.\n   *\n   * @param {number} id - The unique identifier of the supply to retrieve.\n   * @return {Observable<SupplyOut>} An observable containing the supply details.\n   */\n  getSupply (id: number): Observable<SupplyOut> {\n    return this.http.get<ApiSuccess<SupplyOut>>(`${this.url}/supplies/${id}`)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Sends a supply object to the server and returns the created or updated supply information.\n   *\n   * @param {SupplyIn} body - The supply information to be sent to the server.\n   * @return {Observable<SupplyOut>} An observable containing the response with the supply data.\n   */\n  postSupply (body: SupplyIn): Observable<SupplyOut> {\n    return this.http.post<ApiSuccess<SupplyOut>>(`${this.url}/supplies`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Updates an existing supply with the provided data.\n   *\n   * @param {number} id - The unique identifier of the supply to update.\n   * @param {SupplyIn} body - The data to update the supply with.\n   * @return {Observable<SupplyOut>} An observable containing the updated supply information.\n   */\n  putSupply (id: number, body: SupplyIn): Observable<SupplyOut> {\n    return this.http.put<ApiSuccess<SupplyOut>>(`${this.url}/supplies/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the supply types based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the supply types.\n   * @return {Observable<SupplyTypesOut>} An Observable that emits the supply types data.\n   */\n  getSupplyTypes (params: QueryParams): Observable<SupplyTypesOut> {\n    return this.http.get<ApiSuccess<SupplyTypesOut>>(`${this.url}/supply-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new supply location.\n   *\n   * @param {SupplyLocationIn} body - The supply location data to create.\n   * @return {Observable<SupplyLocationOut>} An Observable that emits the created supply location data.\n   */\n  postSupplyLocations (body: SupplyLocationIn): Observable<SupplyLocationOut> {\n    return this.http.post<ApiSuccess<SupplyLocationOut>>(`${this.url}/supply-locations`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the supply locations based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the supply locations.\n   * @return {Observable<SupplyLocationsOut>} An Observable that emits the supply locations data.\n   */\n  getSupplyLocations (params: QueryParams): Observable<SupplyLocationsOut> {\n    return this.http.get<ApiSuccess<SupplyLocationsOut>>(`${this.url}/supply-locations`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new supply location transaction.\n   *\n   * @param {SupplyLocationTransactionIn} body - The transaction data to create.\n   * @return {Observable<SupplyLocationTransactionOut>} An Observable that emits the created transaction data.\n   */\n  postSupplyLocationTransaction (body: SupplyLocationTransactionIn): Observable<SupplyLocationTransactionOut> {\n    return this.http.post<ApiSuccess<SupplyLocationTransactionOut>>(`${this.url}/supply-location-transactions`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Fetches the supply transaction types based on the provided query parameters.\n   *\n   * @param {QueryParams} params - The query parameters to filter the transaction types.\n   * @return {Observable<SupplyTransactionTypesOut>} An Observable that emits the supply transaction types data.\n   */\n  getSupplyTransactionTypes (params: QueryParams): Observable<SupplyTransactionTypesOut> {\n    return this.http.get<ApiSuccess<SupplyTransactionTypesOut>>(`${this.url}/supply-transaction-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Exports the supply locations to an Excel file.\n   *\n   * @param {QueryParams} params - The query parameters to filter the data before export.\n   * @return {Observable<{ mime_type: string; base64: string }>} An Observable that emits the exported file's MIME type and Base64 content.\n   */\n  getSupplyLocationsExportToExcel (params: QueryParams): Observable<{ mime_type: string; base64: string }> {\n    return this.http.get<ApiSuccess<{ mime_type: string; base64: string }>>(`${this.url}/supply-locations/export/excel`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { inject, Injectable } from '@angular/core'\nimport { map, Observable } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\nimport { QuestionTypesOut, SurveyIn, SurveyOut, SurveyQuestionIn, SurveyQuestionOut, SurveyQuestionsOut, SurveysOut } from './models/api-surveys.types'\nimport { ApiSuccess, QueryParams } from './models/api.models'\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiSurveysService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n  private http = inject(HttpClient)\n\n  /**\n   * Base URL for surveys API endpoints.\n   * @returns The configured surveys API URL or an empty string.\n   */\n  get url (): string {\n    return this.environments.apiSurveysUrl ?? ''\n  }\n\n  /**\n   * Retrieves surveys list based on query parameters.\n   * @param params Query parameters used to filter, paginate, or sort surveys.\n   * @returns Observable stream with surveys response data.\n   */\n  getSurveys (params: QueryParams): Observable<SurveysOut> {\n    return this.http.get<ApiSuccess<SurveysOut>>(`${this.url}/surveys`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new survey.\n   * @param body Survey payload to create.\n   * @returns Observable stream with created survey data.\n   */\n  postSurvey (body: SurveyIn): Observable<SurveyOut> {\n    return this.http.post<ApiSuccess<SurveyOut>>(`${this.url}/surveys`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Replaces an existing survey by id.\n   * @param id Survey identifier.\n   * @param body Survey payload used to replace the resource.\n   * @returns Observable stream with updated survey data.\n   */\n  putSurvey (id: number, body: SurveyIn): Observable<SurveyOut> {\n    return this.http.put<ApiSuccess<SurveyOut>>(`${this.url}/surveys/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Partially updates an existing survey by id.\n   * @param id Survey identifier.\n   * @param body Partial survey payload with fields to update.\n   * @returns Observable stream with updated survey data.\n   */\n  patchSurvey (id: number, body: Partial<SurveyIn>): Observable<SurveyOut> {\n    return this.http.patch<ApiSuccess<SurveyOut>>(`${this.url}/surveys/${id}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the questions for a survey.\n   * @param id Survey identifier.\n   * @param params Query parameters used to filter, paginate, or sort questions.\n   * @returns Observable stream with survey questions response data.\n   */\n  getSurveyQuestions (id: number, params: QueryParams): Observable<SurveyQuestionsOut> {\n    return this.http.get<ApiSuccess<SurveyQuestionsOut>>(`${this.url}/surveys/${id}/questions`, { params })\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Creates a new question for a survey.\n   * @param surveyId Parent survey identifier.\n   * @param body Survey question payload to create.\n   * @returns Observable stream with created survey question data.\n   */\n  postSurveyQuestion (surveyId: number, body: SurveyQuestionIn): Observable<SurveyQuestionOut> {\n    return this.http.post<ApiSuccess<SurveyQuestionOut>>(`${this.url}/surveys/${surveyId}/questions`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Replaces an existing survey question by id.\n   * @param questionId Survey question identifier.\n   * @param body Survey question payload used to replace the resource.\n   * @returns Observable stream with updated survey question data.\n   */\n  putSurveyQuestion (questionId: number, body: SurveyQuestionIn): Observable<SurveyQuestionOut> {\n    return this.http.put<ApiSuccess<SurveyQuestionOut>>(`${this.url}/questions/${questionId}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Partially updates an existing survey question by id.\n   * @param questionId Survey question identifier.\n   * @param body Partial survey question payload with fields to update.\n   * @returns Observable stream with updated survey question data.\n   */\n  patchSurveyQuestion (questionId: number, body: Partial<SurveyQuestionIn>): Observable<SurveyQuestionOut> {\n    return this.http.patch<ApiSuccess<SurveyQuestionOut>>(`${this.url}/questions/${questionId}`, body)\n      .pipe(map(({ data }) => data))\n  }\n\n  /**\n   * Retrieves the available question types.\n   * @param params Query parameters used to filter, paginate, or sort question types.\n   * @returns Observable stream with question types response data.\n   */\n  getQuestionTypes (params: QueryParams): Observable<QuestionTypesOut> {\n    return this.http.get<ApiSuccess<QuestionTypesOut>>(`${this.url}/question-types`, { params })\n      .pipe(map(({ data }) => data))\n  }\n}\n","export enum ViewSectionOption {\n  SHIPMENT = 'shipment',\n  PICKUP = 'pickup',\n  EMPLOYEE_DHL = 'employeeDhl',\n  BILLING = 'billing',\n  CUSTOMER_RESTRICTION = 'customerRestriction'\n}\n","export enum OperationModuleStatus {\n  CANCELED = 'canceled',\n  COMPLETED = 'completed',\n  IN_PROGESS = 'in_progress'\n}\n","export enum Event {\n  damage = 'damage',\n  lost = 'lost',\n  rejected = 'rejected',\n  return = 'return '\n}\n\nexport enum DefaultValueType {\n  payment_type = 'payment_type',\n  currency_code = 'currency_code',\n  destination = 'destination',\n  payment_amount = 'payment_amount'\n}\n\nexport enum AlphaNumeric {\n  alpha_numeric = 'alpha_numeric',\n  numeric = 'numeric',\n  alphabetic = 'alphabetic',\n  amount = 'amount'\n}\n","import { inject, Injectable } from '@angular/core'\nimport type { Channel } from 'pusher-js'\nimport Pusher from 'pusher-js'\nimport { Observable } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class WebSocketsService {\n  private pusher: Pusher | null\n  private environments = inject(ENVIRONMENT_TOKEN)\n\n  constructor () {\n    this.pusher = null\n\n    this.connect()\n      .then((pusher) => {\n        if (!pusher) return\n\n        this.pusher = pusher\n      })\n  }\n\n  /**\n   * Publishes an event to the specified channel with the given data.\n   *\n   * @param {Channel} channel - The channel instance where the event will be published.\n   * @param {string} eventName - The name of the event to be published.\n   * @param {T} data - The payload data to be sent with the event.\n   * @return {Promise<boolean>} A promise that resolves to a boolean indicating\n   * whether the event was successfully triggered on the channel.\n   */\n  async pub<T> (channel: Channel, eventName: string, data: T) {\n    return channel.trigger(`client-${eventName}`, data)\n  }\n\n  /**\n   * Subscribes to a specified channel, retrying multiple times upon failure.\n   *\n   * @param {string} channelName - The name of the channel to be subscribed to.\n   * @return {Promise<Channel>} A promise that resolves to the subscribed channel object if successful.\n   * @throws {Error} If the subscription fails after the maximum number of retry attempts.\n   */\n  async channelSub (channelName: string): Promise<Channel> {\n    const attempts = 3\n\n    for (let attempt = 0; attempt <= attempts; attempt++) {\n      const channel = this.pusher?.channel(channelName)\n\n      if (channel?.subscribed) {\n        return channel\n      }\n\n      this.pusher?.subscribe(channelName)\n\n      if (attempt < attempts) {\n        await this.wait()\n      }\n    }\n\n    throw new Error(`Failed to subscribe to channel \"${channelName}\" after ${attempts} attempts.`)\n  }\n\n  /**\n   * Binds an event listener to a specified event on a given channel using Pusher or a Channel object,\n   * and returns an Observable that emits event data of type T.\n   *\n   * @param {Channel|string} channel - The channel to bind the event to. It can be a Channel object or a string representing the channel name.\n   * @param {string} event - The name of the event to bind to the channel.\n   * @return {Observable<T>} An Observable that emits data of type T when the specified event is triggered.\n   */\n  eventBind<T> (channel: Channel | string, event: string): Observable<T> {\n    return new Observable((subscriber) => {\n      if ((channel as Channel)?.name) {\n        (channel as Channel).bind(event, (data: T) => subscriber.next(data))\n      } else {\n        this.pusher?.subscribe((channel as string))\n          .bind(event, (data: T) => subscriber.next(data))\n      }\n    })\n  }\n\n  /**\n   * Unbinds an event from the specified channel and returns an observable\n   * that emits data when the event callback is triggered.\n   *\n   * @param {Channel} channel - The channel object from which the event should be unbound.\n   * @param {string} event - The name of the event to unbind.\n   * @return {Observable<T>} An observable that emits data from the unbound event callback.\n   */\n  eventUnbind<T> (channel: Channel, event: string) {\n    return new Observable((subscriber) =>\n      channel.unbind(event, (data: T) => subscriber.next(data)))\n  }\n\n  private connect () {\n    return new Promise<Pusher | false>((resolve) => {\n      const { sockets } = this.environments\n\n      if (!sockets) return resolve(false)\n\n      const pusher = new Pusher(sockets.app_key, {\n        wsHost: sockets.url,\n        wsPort: sockets.port,\n        enabledTransports: ['wss', 'ws'],\n        forceTLS: false,\n        enableStats: false,\n      })\n\n      if (sockets.debug) {\n        Pusher.logToConsole = true\n      }\n\n      return resolve(pusher)\n    })\n  }\n\n  private async wait (): Promise<void> {\n    const waitTime = 3 * 1000\n\n    return new Promise((resolve) => setTimeout(resolve, waitTime))\n  }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\n\nconst AES_KEY_USAGES: KeyUsage[] = ['encrypt', 'decrypt']\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CryptoService {\n  private environments = inject(ENVIRONMENT_TOKEN)\n\n  public async encryptAES (plaintext: string): Promise<string> {\n    const cryptoKey = await this.loadKey()\n\n    // Convert the plaintext in Uint8Array\n    const encoder = new TextEncoder()\n    const encoded = encoder.encode(plaintext)\n\n    // Generate a random Initialization Vector (IV)\n    const iv = crypto.getRandomValues(new Uint8Array(12))\n\n    // Encrypt the plaintext\n    const ciphertext = await crypto.subtle.encrypt(\n      {\n        name: 'AES-GCM',\n        iv,\n      },\n      cryptoKey,\n      encoded\n    )\n\n    return `${this.uint8ArrayToBase64(iv)}:${this.arrayBufferToBase64(ciphertext)}`\n  }\n\n  public async decryptAES (payload: string): Promise<string> {\n    // Extract the Initialization Vector (IV), and the cypher text\n    const [base64IV, base64Ciphertext] = payload.split(':')\n\n    if (!base64IV || !base64Ciphertext) { throw new Error('The payload must contain the IV and the cipher text.') }\n\n    const cryptoKey = await this.loadKey()\n\n    const iv = this.base64ToUint8Array(base64IV)\n    const cipherText = this.base64ToArrayBuffer(base64Ciphertext)\n\n    // Decrypt the cypher text\n    const decrypted = await crypto.subtle.decrypt(\n      {\n        name: 'AES-GCM',\n        iv,\n      },\n      cryptoKey,\n      cipherText\n    )\n\n    // Decode the decrypted text\n    const decoder = new TextDecoder()\n    return decoder.decode(decrypted)\n  }\n\n  private async loadKey () {\n    if (!this.environments.secretKey) {\n      throw new Error('The secret key is not defined in the environment configuration.')\n    }\n\n    // Decode the base64 key to Uint8Array\n    const rawKey = this.base64ToUint8Array(this.environments.secretKey)\n\n    // Import the key to API Crypto\n    return await crypto.subtle.importKey(\n      'raw',\n      rawKey,\n      { name: 'AES-GCM' },\n      true,\n      AES_KEY_USAGES\n    )\n  }\n\n  private uint8ArrayToBase64 (data: Uint8Array): string {\n    let binary = ''\n    const len = data.byteLength\n\n    for (let i = 0; i < len; i++) {\n      binary += String.fromCharCode(data[i])\n    }\n\n    return btoa(binary)\n  }\n\n  private base64ToUint8Array (base64: string): Uint8Array<ArrayBuffer> {\n    const binaryString = atob(base64)\n    const len = binaryString.length\n    const bytes = new Uint8Array(len)\n    for (let i = 0; i < len; i++) {\n      bytes[i] = binaryString.charCodeAt(i)\n    }\n    return bytes\n  }\n\n  private arrayBufferToBase64 (buffer: ArrayBuffer): string {\n    let binary = ''\n    const bytes = new Uint8Array(buffer)\n    const len = bytes.byteLength\n\n    for (let i = 0; i < len; i++) {\n      binary += String.fromCharCode(bytes[i])\n    }\n\n    return btoa(binary)\n  }\n\n  private base64ToArrayBuffer (base64: string): ArrayBuffer {\n    const binaryString = atob(base64)\n    const len = binaryString.length\n    const bytes = new Uint8Array(len)\n\n    for (let i = 0; i < len; i++) {\n      bytes[i] = binaryString.charCodeAt(i)\n    }\n\n    return bytes.buffer\n  }\n}\n","import type { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http'\nimport type { Observable } from 'rxjs'\n\nfunction isStaticAsset (url: string): boolean {\n  return url.startsWith('assets/') || url.includes('/i18n/')\n}\n\n/**\n * Intercepts an outgoing HTTP request and modifies its headers to include default values\n * for Cache-Control, Expires, Pragma, Content-Type, Accept, and Accept-Language if they\n * are not already present.\n *\n * @param {HttpRequest<unknown>} req - The outgoing HTTP request to be intercepted and modified.\n * @param {HttpHandlerFn} next - The next handler in the chain to pass the modified request to.\n * @return {Observable<HttpEvent<unknown>>} An observable of the HTTP event resulting from the processed request.\n */\nexport function apiHeadersInterceptor (req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n  if (isStaticAsset(req.url)) {\n    return next(req)\n  }\n\n  let headers = req.headers\n\n  if (!headers.has('Content-Type') && !(req.body instanceof FormData)) {\n    headers = headers.set('Content-Type', 'application/json')\n  }\n\n  if (!headers.has('Accept')) {\n    headers = headers.set('Accept', 'application/json')\n  }\n\n  if (!headers.has('Accept-Language')) {\n    headers = headers.set('Accept-Language', localStorage.getItem('lang') ?? 'en')\n  }\n\n  req = req.clone({ headers })\n\n  return next(req)\n}\n","import type { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http'\nimport { inject } from '@angular/core'\nimport type { Observable } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\n\nconst isStaticAsset = (url: string): boolean => url.startsWith('assets/') || url.includes('/i18n/')\n\n/**\n * HTTP interceptor that injects the external operations API key into outbound requests.\n *\n * The interceptor:\n * 1. Reads `apiExternalOperationsKey` from the injected `ENVIRONMENT_TOKEN`.\n * 2. Skips modification if the key is absent.\n * 3. Leaves the request unchanged if it already contains an `AppKey` header (caller override).\n * 4. Otherwise clones the request adding `AppKey: apiExternalOperationsKey`.\n *\n * This enables centralized, transparent authentication for services targeting external\n * operations endpoints while allowing explicit per-request overrides.\n *\n * Example:\n * ```ts\n * provideHttpClient(\n *   withInterceptors([apiKeyInterceptor])\n * );\n * ```\n *\n * @param request The original immutable `HttpRequest` instance.\n * @param next The next handler in the interceptor chain, used to forward the (possibly cloned) request.\n * @returns An `Observable` stream of the HTTP events for the (potentially augmented) request.\n *\n * @remarks\n * - If you need to intentionally send a different key for a specific request, set the `AppKey`\n *   header manually before this interceptor runs.\n * - If `apiExternalOperationsKey` is undefined (e.g., missing configuration), the request is passed through unchanged.\n * - Order matters: place this interceptor before others that rely on the presence of the `AppKey` header.\n *\n * @see HttpRequest\n * @see HttpHandlerFn\n */\nexport function apiKeyInterceptor (request: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n  if (isStaticAsset(request.url)) {\n    return next(request)\n  }\n\n  const { apiExternalOperationsKey } = inject(ENVIRONMENT_TOKEN)\n\n  if (!apiExternalOperationsKey) return next(request)\n\n  if (request.headers.has('AppKey')) return next(request)\n\n  request = request.clone({\n    setHeaders: {\n      AppKey: apiExternalOperationsKey\n    }\n  })\n\n  return next(request)\n}\n","import type { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http'\nimport { inject } from '@angular/core'\nimport { CookieService } from 'ngx-cookie-service'\nimport type { Observable } from 'rxjs'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\n\n/**\n * An HTTP interceptor to append an Authorization header with a Bearer token\n * to outgoing HTTP requests if certain conditions are met.\n *\n * @param {HttpRequest<unknown>} req - The outgoing HTTP request object which may be modified.\n * @param {HttpHandlerFn} next - The next handler in the HTTP request pipeline.\n * @return {Observable<HttpEvent<unknown>>} An observable of the HTTP event stream resulting from the request.\n */\nexport function apiTokenInterceptor (req: HttpRequest<unknown>, next: HttpHandlerFn): Observable<HttpEvent<unknown>> {\n  const { authCookie } = inject(ENVIRONMENT_TOKEN)\n  const cookie = inject(CookieService)\n\n  if (req.headers.has('Authorization') || req.headers.has('AppKey') || !authCookie) {\n    return next(req)\n  }\n\n  const token = cookie.get(authCookie)\n\n  if (!token) return next(req)\n\n  req = req.clone({\n    setHeaders: {\n      Authorization: `Bearer ${token}`\n    }\n  })\n\n  return next(req)\n}\n","import type { HttpEvent, HttpHandlerFn, HttpRequest } from '@angular/common/http'\nimport { HttpResponse } from '@angular/common/http'\nimport { inject } from '@angular/core'\n\nimport type { Observable } from 'rxjs'\nimport { of } from 'rxjs'\nimport { tap } from 'rxjs/operators'\nimport { ENVIRONMENT_TOKEN } from '../ngx-services.models'\n\nconst DEFAULT_TTL = 10000 // ttl in ms\nconst cache = new Map<string, { ttl: number, res: HttpResponse<any> }>()\n\n/**\n * Interceptor function to handle HTTP caching for GET requests. It retrieves cached responses\n * if available and valid; otherwise, it processes the request and caches the response for future use.\n *\n * @param {HttpRequest<any>} req - The HTTP request object being intercepted.\n * @param {HttpHandlerFn} next - The next HTTP handler function in the chain to process the request.\n * @return {Observable<HttpEvent<any>>} An observable that emits the HTTP event, either from cache\n * or by invoking the next handler.\n */\nexport function httpCachingInterceptor (req: HttpRequest<any>, next: HttpHandlerFn): Observable<HttpEvent<any>> {\n  const { cacheTtl } = inject(ENVIRONMENT_TOKEN)\n\n  if (req.method !== 'GET') return next(req)\n\n  const cached = cache.get(req.urlWithParams)\n\n  if (cached) {\n    const isExpired = Date.now() > cached.ttl\n\n    if (!isExpired) { return of(cached.res) }\n\n    cache.delete(req.urlWithParams) // If expired, remove the entry from cache\n  }\n\n  return next(req).pipe(\n    tap((res) => {\n      if (!(res instanceof HttpResponse)) { return }\n\n      const ttl = Date.now() + (cacheTtl ?? DEFAULT_TTL)\n\n      cache.set(req.urlWithParams, { res, ttl })\n    })\n  )\n}\n","export const base64PdfToUrl = (base64: string): string => {\n  const data = new Uint8Array(\n    atob(base64)\n      .split('')\n      .map(char => char.charCodeAt(0))\n  )\n\n  const blob = new Blob([data], { type: 'application/pdf' })\n\n  return window.URL.createObjectURL(blob)\n}\n\nexport const downloadBase64Pdf = (base64: string) => window.open(base64PdfToUrl(base64))\n","import { HttpHeaders, HttpParams } from '@angular/common/http'\nimport type { QueryParams } from '../apis/models/api.models'\n\n/**\n * Convert an object of key-value pairs into a URL query string.\n *\n * @param {Object} params - The key-value pairs to converted into a query string.\n *\n * @return {string} - The generated query string.\n */\nexport const queryString = (params: QueryParams): string => {\n  const queryElements: string[] = []\n\n  Object.entries(params).forEach(([key, value]) => {\n    if (Array.isArray(value)) {\n      const arrayQuery = value\n        .map((item) => `${encodeURIComponent(key)}=${encodeURIComponent(item as string | number | boolean)}`)\n        .join('&')\n\n      queryElements.push(arrayQuery)\n    } else {\n      const encodedQuery = `${encodeURIComponent(key)}=${encodeURIComponent(value as string | number | boolean)}`\n\n      queryElements.push(encodedQuery)\n    }\n  })\n\n  const queryString = queryElements.join('&')\n\n  return queryString.length ? `?${queryString}` : ''\n}\n\n/**\n * Creates an instance of HttpParams using the provided params object.\n *\n * @param {Object} params - The object containing the params to the HttpParams constructor.\n *\n * @returns {HttpParams} - An instance of HttpParams created from the params object.\n */\nexport const httpParams = (\n  params: QueryParams\n): HttpParams => new HttpParams({\n  fromObject: params\n})\n\n/**\n * Returns the headers for generating PDF files.\n *\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\n *\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating PDF files.\n */\nexport const pdfHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\n  const headers = {\n    Accept: 'application/pdf'\n  }\n\n  return format === 'object'\n    ? headers\n    : new HttpHeaders(headers)\n}\n\n/**\n * Returns the headers for generating XML files.\n *\n * @param {string} format - The format of the headers, 'object' or 'http_header'.\n *\n * @returns {HttpHeaders | { [header: string]: string | string[] }} - The headers for generating XML files.\n */\nexport const xmlHeaders = (format: 'object' | 'http_header' = 'object'): HttpHeaders | { [header: string]: string | string[] } => {\n  const headers = {\n    Accept: 'application/xml',\n  }\n\n  return format === 'object'\n    ? headers\n    : new HttpHeaders(headers)\n}\n","/*\n * Public API Surface of ngx-services\n */\nexport * from './lib/ngx-services.models'\nexport * from './lib/ngx-services.module'\nexport * from './lib/ngx-services.providers'\n\n// api services\nexport * from './lib/apis/api-billing-do.service'\nexport * from './lib/apis/api-billing-gt.service'\nexport * from './lib/apis/api-billing-mx.service'\nexport * from './lib/apis/api-billing-pa.service'\nexport * from './lib/apis/api-billing-sv.service'\nexport * from './lib/apis/api-cash-operations.service'\nexport * from './lib/apis/api-catalogs.service'\nexport * from './lib/apis/api-companies.service'\nexport * from './lib/apis/api-composition.service'\nexport * from './lib/apis/api-customs.service'\nexport * from './lib/apis/api-discounts.service'\nexport * from './lib/apis/api-e-tools-auto-billing.service'\nexport * from './lib/apis/api-events.service'\nexport * from './lib/apis/api-external-ops.service'\nexport * from './lib/apis/api-inventories.service'\nexport * from './lib/apis/api-invoices.service'\nexport * from './lib/apis/api-notifications.service'\nexport * from './lib/apis/api-open-items.service'\nexport * from './lib/apis/api-quote.service'\nexport * from './lib/apis/api-reports.service'\nexport * from './lib/apis/api-security.service'\nexport * from './lib/apis/api-services.service'\nexport * from './lib/apis/api-shipments.service'\nexport * from './lib/apis/api-supplies.service'\nexport * from './lib/apis/api-surveys.service'\n\n// api models\nexport * from './lib/apis/models/api-billing-do.interfaces'\nexport * from './lib/apis/models/api-billing-do.types'\nexport * from './lib/apis/models/api-billing-mx.interfaces'\nexport * from './lib/apis/models/api-billing-mx.types'\nexport * from './lib/apis/models/api-billing-pa.interfaces'\nexport * from './lib/apis/models/api-billing-pa.types'\nexport * from './lib/apis/models/api-billing-sv.interfaces'\nexport * from './lib/apis/models/api-billing-sv.types'\nexport * from './lib/apis/models/api-billing.models'\nexport * from './lib/apis/models/api-cash-operations.interfaces'\nexport * from './lib/apis/models/api-cash-operations.types'\nexport * from './lib/apis/models/api-catalog.enum'\nexport * from './lib/apis/models/api-catalog.interfaces'\nexport * from './lib/apis/models/api-catalog.types'\nexport * from './lib/apis/models/api-companies.interfaces'\nexport * from './lib/apis/models/api-companies.types'\nexport * from './lib/apis/models/api-composition.interfaces'\nexport * from './lib/apis/models/api-composition.types'\nexport * from './lib/apis/models/api-customs.interfaces'\nexport * from './lib/apis/models/api-customs.types'\nexport * from './lib/apis/models/api-discounts.interfaces'\nexport * from './lib/apis/models/api-discounts.types'\nexport * from './lib/apis/models/api-e-tools-auto-billing.interfaces'\nexport * from './lib/apis/models/api-e-tools-auto-billing.types'\nexport * from './lib/apis/models/api-events.enum'\nexport * from './lib/apis/models/api-events.interfaces'\nexport * from './lib/apis/models/api-events.types'\nexport * from './lib/apis/models/api-external-ops.interfaces'\nexport * from './lib/apis/models/api-external-ops.types'\nexport * from './lib/apis/models/api-inventories.enum'\nexport * from './lib/apis/models/api-inventories.interfaces'\nexport * from './lib/apis/models/api-inventories.types'\nexport * from './lib/apis/models/api-invoices.interfaces'\nexport * from './lib/apis/models/api-invoices.types'\nexport * from './lib/apis/models/api-notifications.interfaces'\nexport * from './lib/apis/models/api-notifications.types'\nexport * from './lib/apis/models/api-open-items.interfaces'\nexport * from './lib/apis/models/api-open-items.types'\nexport * from './lib/apis/models/api-quote.interfaces'\nexport * from './lib/apis/models/api-quote.types'\nexport * from './lib/apis/models/api-reports.interfaces'\nexport * from './lib/apis/models/api-reports.types'\nexport * from './lib/apis/models/api-security.interfaces'\nexport * from './lib/apis/models/api-security.types'\nexport * from './lib/apis/models/api-services.interfaces'\nexport * from './lib/apis/models/api-services.types'\nexport * from './lib/apis/models/api-shipments.interfaces'\nexport * from './lib/apis/models/api-shipments.types'\nexport * from './lib/apis/models/api-supplies.interfaces'\nexport * from './lib/apis/models/api-supplies.types'\nexport * from './lib/apis/models/api-surveys.interfaces'\nexport * from './lib/apis/models/api-surveys.types'\nexport * from './lib/apis/models/api.models'\n\n// websockets\nexport * from './lib/websockets/web-sockets.service'\n\n// cypher\nexport * from './lib/cypher/crypto.service'\n\n// interceptors\nexport * from './lib/interceptors/api-headers.interceptor'\nexport * from './lib/interceptors/api-key.interceptor'\nexport * from './lib/interceptors/api-token.interceptor'\nexport * from './lib/interceptors/http-caching.interceptor'\n\n// helpers\nexport * from './lib/helpers/files'\nexport * from './lib/helpers/http'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["map","isStaticAsset","tap"],"mappings":"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"}