@ramiidv/arca-sdk 0.3.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  SDK en TypeScript para interactuar con los Web Services de **ARCA** (ex AFIP) — Facturación Electrónica Argentina.
4
4
 
5
- Soporta **todos los tipos de comprobante** de WSFEv1: Facturas, Notas de Débito/Crédito, Recibos (A, B, C, E, M) y Facturas de Crédito Electrónica MiPyME (FCE).
5
+ Soporta **todos los tipos de comprobante** de WSFEv1 y WSFEX: Facturas, Notas de Débito/Crédito, Recibos (A, B, C, E, M), Facturas de Crédito Electrónica MiPyME (FCE) y Facturas de Exportación.
6
6
 
7
7
  ## Instalación
8
8
 
@@ -60,6 +60,11 @@ const arca = new Arca({
60
60
  production: false, // Default: false (testing/homologación)
61
61
  tokenTTLMinutes: 720, // Default: 720 (12 horas)
62
62
  requestTimeoutMs: 30_000, // Default: 30000 (30 segundos)
63
+ retries: 1, // Default: 1 (reintentos en errores transitorios)
64
+ retryDelayMs: 1_000, // Default: 1000 (backoff exponencial: 1s, 2s, ...)
65
+ onEvent: (e) => { // Opcional: callback para logging/debugging
66
+ console.log(e.type, e);
67
+ },
63
68
  });
64
69
  ```
65
70
 
@@ -174,6 +179,46 @@ const result = await arca.facturar({
174
179
  });
175
180
  ```
176
181
 
182
+ ### Factura de exportación (WSFEX)
183
+
184
+ ```typescript
185
+ const nextId = (await arca.ultimoIdExpo()) + 1;
186
+ const nextNum = await arca.siguienteComprobanteExpo(1, CbteTipo.FACTURA_E);
187
+
188
+ const result = await arca.crearFacturaExportacion({
189
+ Id: nextId,
190
+ Cbte_Tipo: CbteTipo.FACTURA_E,
191
+ Fecha_cbte: Arca.formatDate(new Date()),
192
+ Punto_vta: 1,
193
+ Cbte_nro: nextNum,
194
+ Tipo_expo: 1, // 1=Bienes, 2=Servicios, 4=Otros
195
+ Permiso_existente: "N",
196
+ Dst_cmp: 203, // País destino (203 = Estados Unidos)
197
+ Cliente: "ACME Corp",
198
+ Cuit_pais_cliente: 50000000016,
199
+ Domicilio_cliente: "123 Main St, New York",
200
+ Id_impositivo: "12-3456789",
201
+ Moneda_Id: "DOL",
202
+ Moneda_ctz: 1200,
203
+ Idioma_cbte: 2, // 1=Español, 2=Inglés, 3=Portugués
204
+ Forma_pago: "Wire Transfer",
205
+ Incoterms: "FOB",
206
+ Items: [{
207
+ Pro_codigo: "SKU001",
208
+ Pro_ds: "Widget",
209
+ Pro_qty: 100,
210
+ Pro_umed: 7,
211
+ Pro_precio_uni: 10,
212
+ Pro_bonificacion: 0,
213
+ Pro_total_item: 1000,
214
+ }],
215
+ });
216
+
217
+ if (result.FEXResultAuth?.Resultado === "A") {
218
+ console.log(`CAE: ${result.FEXResultAuth.Cae}`);
219
+ }
220
+ ```
221
+
177
222
  ### Previsualizar totales sin enviar
178
223
 
179
224
  ```typescript
@@ -185,6 +230,25 @@ console.log(importes);
185
230
  // { total: 1762.5, neto: 1500, iva: 262.5, exento: 0, noGravado: 0, tributos: 0 }
186
231
  ```
187
232
 
233
+ ### QR para factura impresa
234
+
235
+ ```typescript
236
+ const url = Arca.generateQRUrl({
237
+ fecha: "2026-03-28",
238
+ cuit: 20123456789,
239
+ ptoVta: 1,
240
+ tipoCmp: CbteTipo.FACTURA_B,
241
+ nroCmp: 150,
242
+ importe: 121,
243
+ moneda: "PES",
244
+ ctz: 1,
245
+ tipoDocRec: DocTipo.CONSUMIDOR_FINAL,
246
+ nroDocRec: 0,
247
+ codAut: 73429843294823, // CAE
248
+ });
249
+ // → "https://www.afip.gob.ar/fe/qr/?p=<base64>"
250
+ ```
251
+
188
252
  ### Factura en moneda extranjera
189
253
 
190
254
  ```typescript
@@ -201,6 +265,55 @@ const result = await arca.facturar({
201
265
  });
202
266
  ```
203
267
 
268
+ ## Retry automático
269
+
270
+ El SDK reintenta automáticamente en errores transitorios (timeout, HTTP 5xx, errores de red). No reintenta en errores de negocio (4xx, errores de ARCA).
271
+
272
+ - **Default**: 1 reintento con backoff exponencial (1s, 2s, ...)
273
+ - **Configurable**: `retries: 0` para desactivar, `retries: 3` para más intentos
274
+
275
+ ```typescript
276
+ const arca = new Arca({
277
+ ...config,
278
+ retries: 2, // 2 reintentos (3 intentos totales)
279
+ retryDelayMs: 2000, // empezar con 2s → 4s → 8s
280
+ });
281
+ ```
282
+
283
+ ## Eventos / Logging
284
+
285
+ El SDK emite eventos para debugging y monitoreo sin forzar un logger específico.
286
+
287
+ ```typescript
288
+ // Opción 1: callback en config
289
+ const arca = new Arca({
290
+ ...config,
291
+ onEvent: (e) => console.log(`[${e.type}]`, e),
292
+ });
293
+
294
+ // Opción 2: suscripción por tipo de evento
295
+ arca.on("request:end", (e) => {
296
+ if (e.type === "request:end") {
297
+ metrics.histogram("arca.request.duration", e.durationMs);
298
+ }
299
+ });
300
+
301
+ arca.on("request:retry", (e) => {
302
+ if (e.type === "request:retry") {
303
+ logger.warn(`Retry #${e.attempt} for ${e.method}: ${e.error}`);
304
+ }
305
+ });
306
+ ```
307
+
308
+ | Evento | Cuándo | Datos |
309
+ | --- | --- | --- |
310
+ | `auth:login` | Nuevo token obtenido | `service`, `durationMs` |
311
+ | `auth:cache-hit` | Token cacheado reutilizado | `service` |
312
+ | `request:start` | Antes de una llamada SOAP | `method`, `endpoint` |
313
+ | `request:end` | Llamada SOAP completada | `method`, `durationMs` |
314
+ | `request:retry` | Reintentando tras error | `method`, `attempt`, `delayMs`, `error` |
315
+ | `request:error` | Llamada SOAP falló | `method`, `error` |
316
+
204
317
  ## Manejo de errores
205
318
 
206
319
  El SDK provee clases de error específicas para catch granular:
@@ -223,7 +336,7 @@ try {
223
336
  }
224
337
 
225
338
  if (e instanceof ArcaWSFEError) {
226
- // Error de WSFE con códigos de ARCA
339
+ // Error de WSFE/WSFEX con códigos de ARCA
227
340
  for (const err of e.errors) {
228
341
  console.error(`[${err.code}] ${err.msg}`);
229
342
  }
@@ -239,7 +352,7 @@ try {
239
352
  | Clase | Cuándo se lanza |
240
353
  | --- | --- |
241
354
  | `ArcaAuthError` | Falla en login WSAA, respuesta inesperada, token/sign inválidos |
242
- | `ArcaWSFEError` | Error devuelto por WSFE (campos inválidos, CUIT no autorizado, etc.). Contiene `errors: { code, msg }[]` |
355
+ | `ArcaWSFEError` | Error devuelto por WSFE/WSFEX (campos inválidos, CUIT no autorizado, etc.). Contiene `errors: { code, msg }[]` |
243
356
  | `ArcaSoapError` | Error HTTP, timeout, SOAP Fault. Contiene `statusCode?: number` |
244
357
  | `ArcaError` | Clase base para todos los errores del SDK |
245
358
 
@@ -284,6 +397,9 @@ const maxRegs = await arca.getCantMaxRegistros();
284
397
  | `production` | `boolean` | `false` | Entorno de producción |
285
398
  | `tokenTTLMinutes` | `number` | `720` | TTL del token en minutos |
286
399
  | `requestTimeoutMs` | `number` | `30000` | Timeout HTTP en milisegundos |
400
+ | `retries` | `number` | `1` | Reintentos en errores transitorios |
401
+ | `retryDelayMs` | `number` | `1000` | Delay inicial entre reintentos (exponencial) |
402
+ | `onEvent` | `function` | — | Callback para eventos del SDK |
287
403
 
288
404
  ### Facturación — API simplificada
289
405
 
@@ -305,7 +421,26 @@ Retornan `FacturaResult` con: `aprobada`, `cae`, `caeVencimiento`, `cbteNro`, `i
305
421
  | `siguienteComprobante(ptoVta, cbteTipo)` | Siguiente número (último + 1) |
306
422
  | `consultarComprobante(cbteTipo, ptoVta, cbteNro)` | Consulta un comprobante existente |
307
423
 
308
- ### Parámetros
424
+ ### Exportación (WSFEX)
425
+
426
+ | Método | Descripción |
427
+ | --- | --- |
428
+ | `crearFacturaExportacion(invoice)` | Autoriza un comprobante de exportación |
429
+ | `ultimoComprobanteExpo(ptoVta, cbteTipo)` | Último número autorizado (WSFEX) |
430
+ | `siguienteComprobanteExpo(ptoVta, cbteTipo)` | Siguiente número (WSFEX) |
431
+ | `ultimoIdExpo()` | Último ID de request WSFEX |
432
+ | `consultarComprobanteExpo(cbteTipo, ptoVta, cbteNro)` | Consulta comprobante de exportación |
433
+ | `serverStatusExpo()` | Estado de los servidores WSFEX |
434
+ | `getTiposCbteExpo()` | Tipos de comprobante de exportación |
435
+ | `getMonedasExpo()` | Monedas (WSFEX) |
436
+ | `getPaisesExpo()` | Países destino |
437
+ | `getIdiomasExpo()` | Idiomas disponibles |
438
+ | `getIncotermsExpo()` | Incoterms |
439
+ | `getUMedExpo()` | Unidades de medida |
440
+ | `getTiposExpo()` | Tipos de exportación |
441
+ | `getCuitsPaisExpo()` | CUITs de países |
442
+
443
+ ### Parámetros WSFE
309
444
 
310
445
  | Método | Descripción |
311
446
  | --- | --- |
@@ -321,11 +456,19 @@ Retornan `FacturaResult` con: `aprobada`, `cae`, `caeVencimiento`, `cbteNro`, `i
321
456
  | `getCotizacion(monedaId)` | Cotización de una moneda |
322
457
  | `getCantMaxRegistros()` | Máx registros por request |
323
458
 
459
+ ### Eventos
460
+
461
+ | Método | Descripción |
462
+ | --- | --- |
463
+ | `on(event, handler)` | Suscribirse a un tipo de evento |
464
+ | `off(event, handler)` | Desuscribirse de un evento |
465
+
324
466
  ### Utilidades estáticas
325
467
 
326
468
  | Método | Descripción |
327
469
  | --- | --- |
328
470
  | `Arca.calcularTotales(items, opts?)` | Calcula importes e IVA sin enviar a ARCA |
471
+ | `Arca.generateQRUrl(input)` | Genera la URL del QR oficial de AFIP |
329
472
  | `Arca.extractCAE(result)` | Extrae CAE del resultado raw |
330
473
  | `Arca.formatDate(date)` | Formatea `Date` a `YYYYMMDD` (timezone Argentina) |
331
474
 
@@ -378,10 +521,10 @@ Tambien se incluyen tipos especiales: `COMPRA_BIENES_USADOS` (49), `CTA_VTA_LIQ_
378
521
 
379
522
  ## Entornos
380
523
 
381
- | Entorno | WSAA | WSFE |
382
- | --- | --- | --- |
383
- | Testing | `wsaahomo.afip.gov.ar` | `wswhomo.afip.gov.ar` |
384
- | Producción | `wsaa.afip.gov.ar` | `servicios1.afip.gov.ar` |
524
+ | Entorno | WSAA | WSFE | WSFEX |
525
+ | --- | --- | --- | --- |
526
+ | Testing | `wsaahomo.afip.gov.ar` | `wswhomo.afip.gov.ar` | `wswhomo.afip.gov.ar` |
527
+ | Producción | `wsaa.afip.gov.ar` | `servicios1.afip.gov.ar` | `servicios1.afip.gov.ar` |
385
528
 
386
529
  ## Licencia
387
530
 
package/dist/arca.d.ts CHANGED
@@ -1,175 +1,122 @@
1
- import type { ArcaConfig, InvoiceRequest, InvoiceDetail, FECAESolicitarResult, FECAEDetResponse, FECompConsultarResult, ServerStatus, ParamItem, MonedaItem, PtoVentaItem, CotizacionResult, FacturarOpts, NotaCreditoOpts, NotaDebitoOpts, FacturaResult, LineItem } from "./types.js";
1
+ import type { ArcaConfig, ArcaEvent, InvoiceRequest, InvoiceDetail, FECAESolicitarResult, FECAEDetResponse, FECompConsultarResult, ServerStatus, ParamItem, MonedaItem, PtoVentaItem, CotizacionResult, FacturarOpts, NotaCreditoOpts, NotaDebitoOpts, FacturaResult, LineItem, QRInput, WsfexInvoice, WsfexAuthResult, WsfexGetCmpResult, WsfexParamItem } from "./types.js";
2
2
  export declare class Arca {
3
3
  private wsaa;
4
4
  private wsfe;
5
+ private wsfex;
5
6
  private cuit;
6
7
  private production;
8
+ private emitter;
9
+ private onEventCb?;
7
10
  constructor(config: ArcaConfig);
8
11
  /**
9
- * Obtiene las credenciales de autenticación para WSFE.
10
- */
11
- private getAuth;
12
- /**
13
- * Crea una factura y obtiene el CAE.
12
+ * Suscribirse a eventos del SDK.
14
13
  *
15
14
  * @example
16
15
  * ```ts
17
- * const result = await arca.crearFactura({
18
- * PtoVta: 1,
19
- * CbteTipo: CbteTipo.FACTURA_B,
20
- * invoices: [{
21
- * Concepto: Concepto.PRODUCTOS,
22
- * DocTipo: DocTipo.CONSUMIDOR_FINAL,
23
- * DocNro: 0,
24
- * CbteDesde: nextNum,
25
- * CbteHasta: nextNum,
26
- * CbteFch: "20260328",
27
- * ImpTotal: 121,
28
- * ImpTotConc: 0,
29
- * ImpNeto: 100,
30
- * ImpOpEx: 0,
31
- * ImpTrib: 0,
32
- * ImpIVA: 21,
33
- * MonId: Moneda.PESOS,
34
- * MonCotiz: 1,
35
- * Iva: [{ Id: IvaTipo.IVA_21, BaseImp: 100, Importe: 21 }],
36
- * }],
37
- * });
16
+ * arca.on("request:end", (e) => console.log(`${e.method} took ${e.durationMs}ms`));
17
+ * arca.on("auth:login", (e) => console.log(`Login ${e.service} in ${e.durationMs}ms`));
18
+ * arca.on("request:retry", (e) => console.warn(`Retry #${e.attempt}: ${e.error}`));
38
19
  * ```
39
20
  */
21
+ on(event: ArcaEvent["type"], handler: (event: ArcaEvent) => void): this;
22
+ /** Desuscribirse de un evento. */
23
+ off(event: ArcaEvent["type"], handler: (event: ArcaEvent) => void): this;
24
+ private getAuth;
25
+ /** Solicita CAE para uno o más comprobantes (API raw). */
40
26
  crearFactura(request: InvoiceRequest): Promise<FECAESolicitarResult>;
41
- /**
42
- * Obtiene el último número de comprobante autorizado.
43
- * Útil para calcular el siguiente número antes de crear una factura.
44
- */
27
+ /** Último número de comprobante autorizado. */
45
28
  ultimoComprobante(ptoVta: number, cbteTipo: number): Promise<number>;
46
- /**
47
- * Obtiene el siguiente número de comprobante (último + 1).
48
- */
29
+ /** Siguiente número de comprobante (último + 1). */
49
30
  siguienteComprobante(ptoVta: number, cbteTipo: number): Promise<number>;
50
- /**
51
- * Crea una factura automáticamente calculando el siguiente número de comprobante.
52
- * Simplifica el flujo más común: obtener número → crear factura.
53
- */
31
+ /** Crea factura obteniendo el número automáticamente (API raw). */
54
32
  crearFacturaAuto(ptoVta: number, cbteTipo: number, invoice: Omit<InvoiceDetail, "CbteDesde" | "CbteHasta">): Promise<FECAESolicitarResult>;
55
33
  /**
56
34
  * Crea una factura con API simplificada.
57
35
  * Calcula automáticamente IVA, totales, y número de comprobante.
58
- *
59
- * @example
60
- * ```ts
61
- * const result = await arca.facturar({
62
- * ptoVta: 1,
63
- * cbteTipo: CbteTipo.FACTURA_B,
64
- * items: [
65
- * { neto: 1000, iva: IvaTipo.IVA_21 },
66
- * { neto: 500, iva: IvaTipo.IVA_10_5 },
67
- * ],
68
- * });
69
- *
70
- * if (result.aprobada) {
71
- * console.log(`CAE: ${result.cae}, Cbte: ${result.cbteNro}`);
72
- * }
73
- * ```
74
36
  */
75
37
  facturar(opts: FacturarOpts): Promise<FacturaResult>;
76
38
  /**
77
- * Crea una nota de crédito asociada a un comprobante original.
78
- * El tipo de NC se infiere automáticamente del tipo del comprobante original.
79
- *
80
- * @example
81
- * ```ts
82
- * const result = await arca.notaCredito({
83
- * ptoVta: 1,
84
- * comprobanteOriginal: {
85
- * tipo: CbteTipo.FACTURA_B,
86
- * ptoVta: 1,
87
- * nro: 5,
88
- * },
89
- * items: [{ neto: 500, iva: IvaTipo.IVA_21 }],
90
- * });
91
- * ```
39
+ * Crea una nota de crédito. Tipo de NC inferido del comprobante original.
92
40
  */
93
41
  notaCredito(opts: NotaCreditoOpts): Promise<FacturaResult>;
94
42
  /**
95
- * Crea una nota de débito asociada a un comprobante original.
96
- * El tipo de ND se infiere automáticamente del tipo del comprobante original.
97
- *
98
- * @example
99
- * ```ts
100
- * const result = await arca.notaDebito({
101
- * ptoVta: 1,
102
- * comprobanteOriginal: {
103
- * tipo: CbteTipo.FACTURA_A,
104
- * ptoVta: 1,
105
- * nro: 10,
106
- * fecha: "20260301",
107
- * },
108
- * docTipo: DocTipo.CUIT,
109
- * docNro: 20123456789,
110
- * items: [{ neto: 200, iva: IvaTipo.IVA_21 }],
111
- * });
112
- * ```
43
+ * Crea una nota de débito. Tipo de ND inferido del comprobante original.
113
44
  */
114
45
  notaDebito(opts: NotaDebitoOpts): Promise<FacturaResult>;
115
46
  private facturarConAsociado;
116
- /**
117
- * Consulta un comprobante previamente autorizado.
118
- */
47
+ /** Consulta un comprobante previamente autorizado. */
119
48
  consultarComprobante(cbteTipo: number, ptoVta: number, cbteNro: number): Promise<FECompConsultarResult>;
120
- /**
121
- * Verifica el estado de los servidores de ARCA.
122
- * No requiere autenticación.
123
- */
49
+ /** Autoriza un comprobante de exportación (WSFEX). */
50
+ crearFacturaExportacion(invoice: WsfexInvoice): Promise<WsfexAuthResult>;
51
+ /** Último número de comprobante de exportación autorizado. */
52
+ ultimoComprobanteExpo(ptoVta: number, cbteTipo: number): Promise<number>;
53
+ /** Siguiente número de comprobante de exportación. */
54
+ siguienteComprobanteExpo(ptoVta: number, cbteTipo: number): Promise<number>;
55
+ /** Último ID de request WSFEX. */
56
+ ultimoIdExpo(): Promise<number>;
57
+ /** Consulta un comprobante de exportación. */
58
+ consultarComprobanteExpo(cbteTipo: number, ptoVta: number, cbteNro: number): Promise<WsfexGetCmpResult>;
59
+ /** Estado de los servidores WSFEX. */
60
+ serverStatusExpo(): Promise<ServerStatus>;
61
+ /** Tipos de comprobante de exportación. */
62
+ getTiposCbteExpo(): Promise<WsfexParamItem[]>;
63
+ /** Monedas (WSFEX). */
64
+ getMonedasExpo(): Promise<WsfexParamItem[]>;
65
+ /** Países destino de exportación. */
66
+ getPaisesExpo(): Promise<WsfexParamItem[]>;
67
+ /** Idiomas disponibles (WSFEX). */
68
+ getIdiomasExpo(): Promise<WsfexParamItem[]>;
69
+ /** Incoterms disponibles. */
70
+ getIncotermsExpo(): Promise<WsfexParamItem[]>;
71
+ /** Unidades de medida (WSFEX). */
72
+ getUMedExpo(): Promise<WsfexParamItem[]>;
73
+ /** Tipos de exportación. */
74
+ getTiposExpo(): Promise<WsfexParamItem[]>;
75
+ /** CUITs de países. */
76
+ getCuitsPaisExpo(): Promise<WsfexParamItem[]>;
77
+ /** Estado de los servidores WSFE. No requiere autenticación. */
124
78
  serverStatus(): Promise<ServerStatus>;
125
- /** Obtiene los tipos de comprobante disponibles. */
126
79
  getTiposComprobante(): Promise<ParamItem[]>;
127
- /** Obtiene los tipos de concepto disponibles (Productos, Servicios, Productos y Servicios). */
128
80
  getTiposConcepto(): Promise<ParamItem[]>;
129
- /** Obtiene los tipos de documento disponibles. */
130
81
  getTiposDocumento(): Promise<ParamItem[]>;
131
- /** Obtiene los tipos de IVA disponibles. */
132
82
  getTiposIva(): Promise<ParamItem[]>;
133
- /** Obtiene las monedas disponibles. */
134
83
  getMonedas(): Promise<MonedaItem[]>;
135
- /** Obtiene los tipos de tributo disponibles. */
136
84
  getTiposTributo(): Promise<ParamItem[]>;
137
- /** Obtiene los tipos de datos opcionales disponibles. */
138
85
  getTiposOpcional(): Promise<ParamItem[]>;
139
- /** Obtiene los puntos de venta habilitados. */
140
86
  getPuntosVenta(): Promise<PtoVentaItem[]>;
141
- /** Obtiene la cotización de una moneda. */
142
87
  getCotizacion(monedaId: string): Promise<CotizacionResult>;
143
- /** Obtiene la cantidad máxima de registros por request. */
144
88
  getCantMaxRegistros(): Promise<number>;
145
89
  /**
146
- * Extrae el CAE y detalles de respuesta de FECAESolicitar.
147
- * Helper para simplificar el procesamiento del resultado.
90
+ * Genera la URL del QR oficial de ARCA para un comprobante autorizado.
91
+ *
92
+ * @example
93
+ * ```ts
94
+ * const url = Arca.generateQRUrl({
95
+ * fecha: "2026-03-28",
96
+ * cuit: 20123456789,
97
+ * ptoVta: 1,
98
+ * tipoCmp: CbteTipo.FACTURA_B,
99
+ * nroCmp: 150,
100
+ * importe: 121,
101
+ * moneda: "PES",
102
+ * ctz: 1,
103
+ * tipoDocRec: DocTipo.CONSUMIDOR_FINAL,
104
+ * nroDocRec: 0,
105
+ * codAut: 73429843294823,
106
+ * });
107
+ * ```
148
108
  */
109
+ static generateQRUrl(input: QRInput): string;
110
+ /** Extrae CAE del resultado raw de FECAESolicitar. */
149
111
  static extractCAE(result: FECAESolicitarResult): {
150
112
  approved: boolean;
151
113
  details: FECAEDetResponse[];
152
114
  cae?: string;
153
115
  caeFchVto?: string;
154
116
  };
155
- /**
156
- * Formatea una fecha Date a formato YYYYMMDD requerido por ARCA.
157
- * Usa timezone America/Argentina/Buenos_Aires.
158
- */
117
+ /** Formatea Date a YYYYMMDD (timezone Argentina). */
159
118
  static formatDate(date: Date | string): string;
160
- /**
161
- * Calcula los importes de una factura a partir de line items.
162
- * Útil para previsualizar totales antes de enviar a ARCA.
163
- *
164
- * @example
165
- * ```ts
166
- * const { importes } = Arca.calcularTotales([
167
- * { neto: 1000, iva: IvaTipo.IVA_21 },
168
- * { neto: 500, iva: IvaTipo.IVA_10_5 },
169
- * ]);
170
- * console.log(importes.total); // 1762.5
171
- * ```
172
- */
119
+ /** Calcula importes e IVA desde line items. Para previsualizar sin enviar. */
173
120
  static calcularTotales(items: LineItem[], opts?: {
174
121
  tributos?: {
175
122
  Importe: number;
@@ -179,9 +126,7 @@ export declare class Arca {
179
126
  importes: import("./types.js").Importes;
180
127
  iva: import("./types.js").AlicuotaIva[];
181
128
  };
182
- /**
183
- * Invalida los tickets de acceso cacheados.
184
- */
129
+ /** Invalida los tickets de acceso cacheados. */
185
130
  clearAuthCache(): void;
186
131
  }
187
132
  //# sourceMappingURL=arca.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arca.d.ts","sourceRoot":"","sources":["../src/arca.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arca.d.ts","sourceRoot":"","sources":["../src/arca.ts"],"names":[],"mappings":"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"}