@ramiidv/arca-padron 0.2.0 → 0.4.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.
Files changed (151) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +205 -65
  3. package/dist/cjs/arca-padron.d.ts +111 -0
  4. package/dist/cjs/arca-padron.d.ts.map +1 -0
  5. package/dist/cjs/arca-padron.js +211 -0
  6. package/dist/cjs/arca-padron.js.map +1 -0
  7. package/dist/cjs/base-client.d.ts +45 -0
  8. package/dist/cjs/base-client.d.ts.map +1 -0
  9. package/dist/cjs/base-client.js +68 -0
  10. package/dist/cjs/base-client.js.map +1 -0
  11. package/dist/cjs/condicion-iva.d.ts +28 -0
  12. package/dist/cjs/condicion-iva.d.ts.map +1 -0
  13. package/dist/cjs/condicion-iva.js +166 -0
  14. package/dist/cjs/condicion-iva.js.map +1 -0
  15. package/dist/cjs/constants.d.ts +142 -0
  16. package/dist/cjs/constants.d.ts.map +1 -0
  17. package/dist/cjs/constants.js +155 -0
  18. package/dist/cjs/constants.js.map +1 -0
  19. package/dist/cjs/errors.d.ts +50 -0
  20. package/dist/cjs/errors.d.ts.map +1 -0
  21. package/dist/cjs/errors.js +62 -0
  22. package/dist/cjs/errors.js.map +1 -0
  23. package/dist/cjs/index.d.ts +24 -0
  24. package/dist/cjs/index.d.ts.map +1 -0
  25. package/dist/cjs/index.js +66 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/cjs/mapping.d.ts +52 -0
  28. package/dist/cjs/mapping.d.ts.map +1 -0
  29. package/dist/cjs/mapping.js +135 -0
  30. package/dist/cjs/mapping.js.map +1 -0
  31. package/dist/cjs/package.json +1 -0
  32. package/dist/cjs/padron-a10.d.ts +21 -0
  33. package/dist/cjs/padron-a10.d.ts.map +1 -0
  34. package/dist/cjs/padron-a10.js +38 -0
  35. package/dist/cjs/padron-a10.js.map +1 -0
  36. package/dist/cjs/padron-a100.d.ts +20 -0
  37. package/dist/cjs/padron-a100.d.ts.map +1 -0
  38. package/dist/cjs/padron-a100.js +48 -0
  39. package/dist/cjs/padron-a100.js.map +1 -0
  40. package/dist/cjs/padron-a13.d.ts +34 -0
  41. package/dist/cjs/padron-a13.d.ts.map +1 -0
  42. package/dist/cjs/padron-a13.js +100 -0
  43. package/dist/cjs/padron-a13.js.map +1 -0
  44. package/dist/cjs/padron-a4.d.ts +21 -0
  45. package/dist/cjs/padron-a4.d.ts.map +1 -0
  46. package/dist/cjs/padron-a4.js +119 -0
  47. package/dist/cjs/padron-a4.js.map +1 -0
  48. package/dist/cjs/padron-a5.d.ts +37 -0
  49. package/dist/cjs/padron-a5.d.ts.map +1 -0
  50. package/dist/cjs/padron-a5.js +181 -0
  51. package/dist/cjs/padron-a5.js.map +1 -0
  52. package/dist/cjs/types.d.ts +337 -0
  53. package/dist/cjs/types.d.ts.map +1 -0
  54. package/dist/cjs/types.js +3 -0
  55. package/dist/cjs/types.js.map +1 -0
  56. package/dist/esm/arca-padron.d.ts +111 -0
  57. package/dist/esm/arca-padron.d.ts.map +1 -0
  58. package/dist/esm/arca-padron.js +207 -0
  59. package/dist/esm/arca-padron.js.map +1 -0
  60. package/dist/esm/base-client.d.ts +45 -0
  61. package/dist/esm/base-client.d.ts.map +1 -0
  62. package/dist/esm/base-client.js +64 -0
  63. package/dist/esm/base-client.js.map +1 -0
  64. package/dist/esm/condicion-iva.d.ts +28 -0
  65. package/dist/esm/condicion-iva.d.ts.map +1 -0
  66. package/dist/esm/condicion-iva.js +163 -0
  67. package/dist/esm/condicion-iva.js.map +1 -0
  68. package/dist/esm/constants.d.ts +142 -0
  69. package/dist/esm/constants.d.ts.map +1 -0
  70. package/dist/{constants.js → esm/constants.js} +67 -7
  71. package/dist/esm/constants.js.map +1 -0
  72. package/dist/esm/errors.d.ts +50 -0
  73. package/dist/esm/errors.d.ts.map +1 -0
  74. package/dist/esm/errors.js +55 -0
  75. package/dist/esm/errors.js.map +1 -0
  76. package/dist/esm/index.d.ts +24 -0
  77. package/dist/esm/index.d.ts.map +1 -0
  78. package/dist/esm/index.js +30 -0
  79. package/dist/esm/index.js.map +1 -0
  80. package/dist/esm/mapping.d.ts +52 -0
  81. package/dist/esm/mapping.d.ts.map +1 -0
  82. package/dist/esm/mapping.js +118 -0
  83. package/dist/esm/mapping.js.map +1 -0
  84. package/dist/esm/padron-a10.d.ts +21 -0
  85. package/dist/esm/padron-a10.d.ts.map +1 -0
  86. package/dist/esm/padron-a10.js +33 -0
  87. package/dist/esm/padron-a10.js.map +1 -0
  88. package/dist/esm/padron-a100.d.ts +20 -0
  89. package/dist/esm/padron-a100.d.ts.map +1 -0
  90. package/dist/esm/padron-a100.js +44 -0
  91. package/dist/esm/padron-a100.js.map +1 -0
  92. package/dist/esm/padron-a13.d.ts +34 -0
  93. package/dist/esm/padron-a13.d.ts.map +1 -0
  94. package/dist/esm/padron-a13.js +94 -0
  95. package/dist/esm/padron-a13.js.map +1 -0
  96. package/dist/esm/padron-a4.d.ts +21 -0
  97. package/dist/esm/padron-a4.d.ts.map +1 -0
  98. package/dist/esm/padron-a4.js +114 -0
  99. package/dist/esm/padron-a4.js.map +1 -0
  100. package/dist/esm/padron-a5.d.ts +37 -0
  101. package/dist/esm/padron-a5.d.ts.map +1 -0
  102. package/dist/esm/padron-a5.js +176 -0
  103. package/dist/esm/padron-a5.js.map +1 -0
  104. package/dist/esm/types.d.ts +337 -0
  105. package/dist/esm/types.d.ts.map +1 -0
  106. package/dist/esm/types.js.map +1 -0
  107. package/llms.txt +69 -28
  108. package/package.json +25 -17
  109. package/dist/arca-padron.d.ts +0 -70
  110. package/dist/arca-padron.d.ts.map +0 -1
  111. package/dist/arca-padron.js +0 -129
  112. package/dist/arca-padron.js.map +0 -1
  113. package/dist/base-client.d.ts +0 -26
  114. package/dist/base-client.d.ts.map +0 -1
  115. package/dist/base-client.js +0 -27
  116. package/dist/base-client.js.map +0 -1
  117. package/dist/constants.d.ts +0 -79
  118. package/dist/constants.d.ts.map +0 -1
  119. package/dist/constants.js.map +0 -1
  120. package/dist/errors.d.ts +0 -20
  121. package/dist/errors.d.ts.map +0 -1
  122. package/dist/errors.js +0 -24
  123. package/dist/errors.js.map +0 -1
  124. package/dist/index.d.ts +0 -12
  125. package/dist/index.d.ts.map +0 -1
  126. package/dist/index.js +0 -16
  127. package/dist/index.js.map +0 -1
  128. package/dist/padron-a10.d.ts +0 -16
  129. package/dist/padron-a10.d.ts.map +0 -1
  130. package/dist/padron-a10.js +0 -74
  131. package/dist/padron-a10.js.map +0 -1
  132. package/dist/padron-a100.d.ts +0 -15
  133. package/dist/padron-a100.d.ts.map +0 -1
  134. package/dist/padron-a100.js +0 -40
  135. package/dist/padron-a100.js.map +0 -1
  136. package/dist/padron-a4.d.ts +0 -16
  137. package/dist/padron-a4.d.ts.map +0 -1
  138. package/dist/padron-a4.js +0 -174
  139. package/dist/padron-a4.js.map +0 -1
  140. package/dist/soap-client.d.ts +0 -2
  141. package/dist/soap-client.d.ts.map +0 -1
  142. package/dist/soap-client.js +0 -3
  143. package/dist/soap-client.js.map +0 -1
  144. package/dist/types.d.ts +0 -172
  145. package/dist/types.d.ts.map +0 -1
  146. package/dist/types.js.map +0 -1
  147. package/dist/wsaa.d.ts +0 -3
  148. package/dist/wsaa.d.ts.map +0 -1
  149. package/dist/wsaa.js +0 -2
  150. package/dist/wsaa.js.map +0 -1
  151. /package/dist/{types.js → esm/types.js} +0 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,116 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0 (2026-11-01)
4
+
5
+ ### Breaking changes
6
+ - Requiere `@ramiidv/arca-common` ^0.4.0. `ArcaPadronConfig` extiende `ArcaBaseConfig` (`cuit` acepta
7
+ `string | number`; se agregan `tokenTTLMinutes`, `loginErrorCooldownMs`, `fetch`, `legacyTls` y
8
+ `endpoints`, que se pasan al `WsaaClient` y a cada servicio).
9
+ - Las CUIT se validan localmente con `validateCuit` (dígito verificador) y se envían normalizadas: una
10
+ CUIT inválida (también la representada de la config) lanza `ArcaValidationError` sin llamar a ARCA.
11
+ - Los SOAP Faults de negocio conocidos (CUIT inexistente, clave INACTIVA, id inválido, token no
12
+ autorizado; textos de los manuales) se lanzan como `ArcaPadronServiceError` con `reason` tipado y el
13
+ `ArcaSoapError` original en `cause` (antes llegaban como `ArcaSoapError`).
14
+ - Si `personaReturn` no trae `persona` (A4, A10, A13), la constancia no trae `datosGenerales` ni
15
+ `errorConstancia`, o A100 no trae `parameterCollection`, se lanza `ArcaPadronError` (antes se
16
+ devolvía una persona inventada `{ idPersona: '', tipoPersona: 'FISICA' }` o `[]`). También si falta el
17
+ id de un ítem (`idImpuesto`, `idActividad`, `idCategoria`, etc.): ya no se rellenan con `0` / `''`.
18
+ - `status()` devuelve `PromiseSettledResult<ServerStatus>` por servicio (`Promise.allSettled`): un
19
+ servicio caído ya no hace fallar todo.
20
+ - `ImpuestoId.BIENES_PERSONALES` es `180` (estaba como `31`, incorrecto); se quitó el alias
21
+ `ImpuestoId.MONOTRIBUTO_SOCIAL` (mismo valor que `MONOTRIBUTO`, rompía el mapeo inverso).
22
+ - `condicionIvaDesdePadron`: el impuesto 30 en estado `NA` / `NO APORTANTE` ya no se interpreta como IVA
23
+ no alcanzado (`NA` es "NO APORTANTE" en la tabla TipoEstado); un impuesto 20 en baja ya no da
24
+ monotributista aunque haya categoría.
25
+ - Tipos: `DomicilioA4` ya no tiene `estadoDomicilio` (no existe en el WSDL de A4) y, como
26
+ `DependenciaA4`/`DependenciaA10`, tiene sus campos opcionales (son `minOccurs="0"`);
27
+ `ImpuestoA4.estado` y `ParameterAttribute.value` son opcionales.
28
+ - Se eliminaron los módulos internos `soap-client.ts` y `wsaa.ts` (re-exports puros): `WsaaClient`,
29
+ `ensureArray`, `parseXml` y `buildXml` se siguen exportando desde el índice.
30
+
31
+ ### Features
32
+ - `getConstanciasInscripcion(cuits)` / `a5.getPersonaList`: `getPersonaList_v2`, hasta 250 CUITs; las
33
+ inexistentes vuelven con `errorConstancia`.
34
+ - `getPersonaA13V2(cuit)` / `a13.getPersonaV2`: consulta de claves INACTIVAS (manual A13 v1.4).
35
+ - `monotributo.componenteDeSociedad` en la constancia (tipo `relacion` del WSDL).
36
+ - `CollectionName`: `AUTONOMO_MONOTRIBUTO`, `REGIMEN`, `TIPO_REGIMEN`, `CARACTERIZACION`,
37
+ `TIPO_ARCHIVO`, `ACTIVIDAD_RUBRO`, `RUBRO_ACTIVIDAD`, `ACTIVIDAD_OCUPACIONAL` (manual A100 v2.1).
38
+ - `ImpuestoId`: `MONOTRIBUTO_AUTONOMO` (21), `AUTONOMOS` (308).
39
+ - `getIdPersonaListByDocumento` acepta el documento con puntos/espacios y lo valida.
40
+ - Se exportan `ArcaValidationError`, `DocTipo`, `PadronErrorReason`, `PadronStatus`, `PadronServicio`,
41
+ `ComponenteSociedadA5`, `PadronSoapOptions` y `MAX_PERSONA_LIST`.
42
+
43
+ ### Fixes
44
+ - A4 y A10: los campos `xs:string` con contenido numérico (`codPostal`, `datoAdicional`, `localidad`,
45
+ `numeroInscripcion`) salían como `number`; ahora son `string`. A4 y A10 usan los helpers de
46
+ `mapping.ts` (sin bloques duplicados de dependencia, claves inactivas y domicilio).
47
+ - A100: `id`, `description`, `name` y `value` se preservan tal cual (`"10.50"` ya no se convierte en
48
+ `10.5`, ni `"1E3"` en `1000`). Usa `parseNumbers: false` de arca-common en lugar de envolver `fetch`:
49
+ el A100 ya no desactiva el fallback TLS legacy (`legacyTls`) y respeta el `fetch` de la config.
50
+ - Todos los servicios parsean las respuestas con `parseNumbers: false` y convierten explícitamente los
51
+ campos numéricos del WSDL: los `xs:string` con decimales, exponente o ceros a la izquierda
52
+ (`datoAdicional`, `piso`, `numeroDocumento`, etc.) llegan tal cual (`"1.50"` antes era `"1.5"`).
53
+ - Los elementos `xsi:nil="true"` se tratan como ausentes (antes, por ejemplo, una caracterización nil
54
+ se mapeaba como `{ idCaracterizacion: 0 }`).
55
+ - `condicionIvaDesdePadron`: reconoce los estados del manual A4 en palabras (`ACTIVO EN TRAMITE`,
56
+ `EXENTO`, `EXENTO EN TRAMITE`, `BAJA ...`) además de las abreviaturas; categorías 101 a 104
57
+ (proyectos productivos) como monotributo social; incluye `errorRegimenGeneral` / `errorMonotributo`
58
+ en el motivo y ya no afirma "No figura inscripto" cuando ARCA informó errores.
59
+ - `ArcaPadronError` y `ArcaPadronServiceError` ahora se lanzan de verdad (la documentación enseñaba a
60
+ capturarlos pero el SDK nunca los usaba).
61
+
62
+ ### Deprecated
63
+ - `TipoDocumento` (es `DocTipo` numérico de WSFEv1, no el `tipoDocumento` string del padrón): usar `DocTipo`.
64
+ - `checkServiceErrors` desde este paquete (Padrón informa los errores como SOAP Fault).
65
+ - `ImpuestoId.IVA_NO_INSCRIPTO` (33), sin respaldo en los manuales.
66
+
67
+ ## 0.3.0 (2026-10-30)
68
+
69
+ ### Breaking changes
70
+ - Requiere `@ramiidv/arca-common` ^0.3.0 (`AccessTicket.expirationTime` es un string ISO).
71
+ - `ImpuestoId.MONOTRIBUTO` es `20` (estaba como `21`, incorrecto según el manual de
72
+ `ws_sr_constancia_inscripcion`). `ImpuestoId.MONOTRIBUTO_SOCIAL` queda deprecado (mismo valor 20):
73
+ el monotributo social se identifica por la categoría.
74
+ - `status()` devuelve también `a5` y `a13`.
75
+
76
+ ### Features
77
+ - `getConstanciaInscripcion(cuit)`: constancia de inscripción (`ws_sr_constancia_inscripcion`,
78
+ `getPersona_v2`), que reemplaza a Padrón A5 (deprecado por ARCA). Tipo `PersonaA5` con datos
79
+ generales, domicilio fiscal, caracterizaciones, régimen general, monotributo y errores.
80
+ - `getPersonaA13(cuit)` y `getIdPersonaListByDocumento(dni)` (`ws_sr_padron_a13`).
81
+ - `condicionIvaDesdePadron(persona)`: condición frente al IVA para `CondicionIVAReceptorId` (también
82
+ reconoce el impuesto 30 en estado `EX` / `NA`).
83
+ - `ticketStorage`, `clockOffsetMs`, `autoClockSkew`, `signal` y `wsaa` en `ArcaPadronConfig`; `signal`
84
+ por llamada en todos los métodos.
85
+ - `ArcaPadronError` y `ArcaPadronServiceError` tienen `code` propio (`ARCA_PADRON_ERROR`,
86
+ `ARCA_PADRON_SERVICE_ERROR`).
87
+ - Re-exporta `CondicionIva`, `MemoryTicketStorage`, `FileTicketStorage` y `ArcaTicketVigenteError`.
88
+ - Build dual ESM + CommonJS con `exports` condicional, y smoke test CommonJS/ESM en CI.
89
+
90
+ ### Fixes
91
+ - Se quitaron dependencias que no se usaban (`fast-xml-parser`, `node-forge`): todo pasa por arca-common.
92
+ - A4, A10 y A100 no desenvolvían `personaReturn` / `parameterCollectionReturn`: con respuestas reales de
93
+ ARCA los datos quedaban vacíos y A100 devolvía `[]`.
94
+ - Documentación: el paquete es `@ramiidv/arca-padron` (decía `@ramiidv/arca-padron-sdk`, que da 404).
95
+ - Ejemplo de eventos: los campos son `service` y `source` (decía `serviceId`).
96
+
97
+ ### Estado de los servicios
98
+ Según el catálogo de web services de ARCA (consultado el 24/10/2026), A4, A10, A13 y A100 no están
99
+ deprecados; A5 sí (reemplazado por la constancia de inscripción).
100
+
101
+ ## 0.2.0
102
+
103
+ - Migración de WSAA/SOAP a `@ramiidv/arca-common`.
104
+ - CI en Node 18/20/22, build standalone, workflow de release, `publishConfig` público y homepage.
105
+
106
+ ## 0.1.0 (2026-03-31)
107
+
108
+ ### Features
109
+ - Initial release
110
+ - Padrón A4: full taxpayer data (domicilios, impuestos, actividades, regímenes, relaciones, categorías, emails, teléfonos)
111
+ - Padrón A10: minimal taxpayer data (name, status, domicilio fiscal)
112
+ - Padrón A100: parameter tables lookup (provincias, tipos documento, etc.)
113
+ - Auto-handles WSAA authentication
114
+ - Shared infrastructure from @ramiidv/arca-common
115
+ - Retry with exponential backoff on transient errors
116
+ - Event system for logging/debugging
package/README.md CHANGED
@@ -1,113 +1,218 @@
1
- # @ramiidv/arca-padron-sdk
1
+ # @ramiidv/arca-padron
2
2
 
3
- SDK de TypeScript para los web services de Padron de ARCA (ex AFIP). Soporta los alcances A4 (datos completos), A10 (datos basicos) y A100 (tablas de parametros).
3
+ SDK de TypeScript para los web services de Padron de ARCA (ex AFIP): Constancia de Inscripcion
4
+ (`ws_sr_constancia_inscripcion`, ex A5), A4 (datos completos), A10 y A13 (datos basicos) y A100
5
+ (tablas de parametros). Incluye `condicionIvaDesdePadron` para obtener la condicion frente al IVA
6
+ que pide la factura electronica (`CondicionIVAReceptorId`).
4
7
 
5
8
  ## Caracteristicas
6
9
 
7
- - Zero dependencias SOAP: construye los envelopes SOAP manualmente
8
- - Zero dependencias HTTP: usa `fetch` nativo (Node 18+)
9
- - Firma CMS/PKCS#7 con node-forge
10
- - ESM only
10
+ - Unica dependencia: `@ramiidv/arca-common` (WSAA, SOAP, validadores); usa `fetch` nativo (Node 18+)
11
+ - ESM y CommonJS (funciona con `import` y con `require`, incluido TypeScript con `"module": "CommonJS"`)
11
12
  - TypeScript estricto con tipos completos
12
- - Cache automatico de tokens WSAA
13
- - Reintentos con backoff exponencial
13
+ - Cache automatico de tokens WSAA, con persistencia opcional (`ticketStorage`) y ajuste de reloj
14
+ - Cancelacion con `AbortSignal` (global o por llamada)
15
+ - Reintentos con backoff exponencial ante errores transitorios (nunca ante un SOAP Fault)
16
+ - Errores de negocio tipados: `ArcaPadronServiceError` con `reason` (`inexistente`, `inactiva`, ...)
17
+ - Validacion local de CUIT (digito verificador) antes de llamar a ARCA
14
18
  - Sistema de eventos para monitoreo
15
19
 
16
20
  ## Instalacion
17
21
 
18
22
  ```bash
19
- npm install @ramiidv/arca-padron-sdk
23
+ npm install @ramiidv/arca-padron
20
24
  ```
21
25
 
22
26
  ## Inicio rapido
23
27
 
24
28
  ```typescript
25
29
  import { readFileSync } from 'fs';
26
- import { ArcaPadron } from '@ramiidv/arca-padron-sdk';
30
+ import { ArcaPadron, FileTicketStorage } from '@ramiidv/arca-padron';
27
31
 
28
32
  const padron = new ArcaPadron({
29
33
  cert: readFileSync('./cert.pem', 'utf-8'),
30
34
  key: readFileSync('./key.pem', 'utf-8'),
31
- cuit: '20123456789',
35
+ cuit: '20123456786',
32
36
  production: false, // false = homologacion
37
+ ticketStorage: new FileTicketStorage('./.arca-tickets'), // recomendado
33
38
  });
34
39
 
40
+ // Constancia de inscripcion (ex A5) + condicion frente al IVA para facturar
41
+ import { condicionIvaDesdePadron } from '@ramiidv/arca-padron';
42
+ const constancia = await padron.getConstanciaInscripcion('30712345671');
43
+ const { condicionIva, motivo } = condicionIvaDesdePadron(constancia);
44
+ // condicionIva: CondicionIva.RESPONSABLE_INSCRIPTO (1), motivo: "Inscripto en IVA (impuesto 30)."
45
+
35
46
  // Consulta completa (A4)
36
- const contribuyente = await padron.getPersona('20123456789');
47
+ const contribuyente = await padron.getPersona('20-11111111-2'); // con o sin guiones
37
48
  console.log(contribuyente.tipoPersona, contribuyente.nombre);
38
49
 
39
50
  // Consulta basica (A10)
40
- const contribuyenteBasico = await padron.getPersonaBasic('20123456789');
51
+ const contribuyenteBasico = await padron.getPersonaBasic('20111111112');
41
52
  console.log(contribuyenteBasico.domicilio?.[0]?.direccion);
42
53
 
43
54
  // Tablas de parametros (A100)
44
- import { CollectionName } from '@ramiidv/arca-padron-sdk';
55
+ import { CollectionName } from '@ramiidv/arca-padron';
45
56
  const provincias = await padron.getParametros(CollectionName.PROVINCIA);
46
57
  console.log(provincias.length, 'provincias');
47
58
  ```
48
59
 
49
60
  ## Configuracion
50
61
 
62
+ `ArcaPadronConfig` extiende `ArcaBaseConfig` de `@ramiidv/arca-common`:
63
+
51
64
  ```typescript
52
- interface ArcaPadronConfig {
53
- /** Certificado X.509 en formato PEM */
54
- cert: string;
55
- /** Clave privada RSA en formato PEM */
56
- key: string;
57
- /** CUIT de la entidad representada */
58
- cuit: string;
59
- /** Usar endpoints de produccion (default: false) */
60
- production?: boolean;
61
- /** Cantidad de reintentos en errores 5xx/red (default: 1) */
62
- retries?: number;
63
- /** Delay base en ms para backoff exponencial (default: 1000) */
64
- retryDelayMs?: number;
65
- /** Callback de eventos para monitoreo */
66
- onEvent?: (event: ArcaPadronEvent) => void;
65
+ interface ArcaPadronConfig extends ArcaBaseConfig {
66
+ // De ArcaBaseConfig:
67
+ cert: string; // Certificado X.509 en formato PEM
68
+ key: string; // Clave privada en formato PEM
69
+ cuit: string | number; // CUIT representada (se valida el digito verificador)
70
+ production?: boolean; // default: false (homologacion)
71
+ timeout?: number; // ms por request (default: 30000)
72
+ retries?: number; // reintentos ante errores transitorios (default: 1)
73
+ retryDelayMs?: number; // backoff exponencial (default: 1000)
74
+ tokenTTLMinutes?: number; // vigencia pedida a WSAA (default: 720)
75
+ onEvent?: (event: ArcaEvent) => void;
76
+ ticketStorage?: TicketStorage; // persistencia de tickets WSAA (recomendado)
77
+ clockOffsetMs?: number; // relojARCA - relojLocal en ms (default: 0)
78
+ autoClockSkew?: boolean; // default: true
79
+ loginErrorCooldownMs?: number; // default: 60000
80
+ fetch?: typeof fetch; // fetch propio (proxy, mTLS, tests)
81
+ legacyTls?: 'auto' | 'never' | 'always';
82
+ // Propias de Padron:
83
+ signal?: AbortSignal; // cancela todas las llamadas de la instancia
84
+ wsaa?: WsaaClient; // WsaaClient compartido (ej: arca.wsaa de arca-facturacion)
85
+ endpoints?: { wsaa?: string; a5?: string; a4?: string; a10?: string; a13?: string; a100?: string };
67
86
  }
68
87
  ```
69
88
 
89
+ > **Persisti el Ticket de Acceso.** WSAA rechaza el login si ya hay un TA vigente para el
90
+ > certificado y servicio. Sin `ticketStorage`, un reinicio del proceso te deja sin poder consultar
91
+ > hasta que venza (hasta 12 horas, `ArcaTicketVigenteError`). Ver `TicketStorage` en
92
+ > [`@ramiidv/arca-common`](https://github.com/ramiidv/arca-common).
93
+
94
+ Si usas tambien `@ramiidv/arca-facturacion` con el mismo certificado, comparti el cliente WSAA:
95
+
96
+ ```typescript
97
+ const arca = new Arca({ cuit, cert, key, ticketStorage });
98
+ const padron = new ArcaPadron({ cuit, cert, key, wsaa: arca.wsaa });
99
+ ```
100
+
101
+ Todos los metodos aceptan un ultimo parametro opcional `{ signal }`. Las CUIT se aceptan con o sin
102
+ guiones (`'20-11111111-2'`, `'20111111112'` o `20111111112`): se validan localmente (digito
103
+ verificador) y se envian normalizadas; una CUIT invalida lanza `ArcaValidationError` sin llamar a ARCA.
104
+
105
+ Todas las operaciones de Padron son consultas (no modifican nada en ARCA): se pueden reintentar sin
106
+ riesgo.
107
+
70
108
  ## API
71
109
 
72
110
  ### Metodos de alto nivel
73
111
 
74
- #### `getPersona(cuit: string): Promise<PersonaA4>`
112
+ #### `getConstanciaInscripcion(cuit): Promise<PersonaA5>`
113
+
114
+ Constancia de inscripcion via `ws_sr_constancia_inscripcion` (metodo `getPersona_v2`). Reemplaza a
115
+ Padron A5 (`ws_sr_padron_a5`), deprecado por ARCA. Incluye datos generales, domicilio fiscal,
116
+ caracterizaciones, regimen general (impuestos, actividades, regimenes), monotributo (categoria,
117
+ impuestos, actividad, `componenteDeSociedad`) y, si ARCA no puede emitir la constancia (o una parte),
118
+ `errorConstancia` / `errorRegimenGeneral` / `errorMonotributo`: esos casos se devuelven, no se lanzan.
119
+
120
+ ```typescript
121
+ const constancia = await padron.getConstanciaInscripcion('30712345671');
122
+ constancia.domicilioFiscal; // { direccion, localidad, codPostal, idProvincia, ... }
123
+ constancia.impuestos; // impuestos de ambos regimenes
124
+ constancia.monotributo?.categoria; // { idCategoria, descripcionCategoria, ... }
125
+ ```
126
+
127
+ #### `getConstanciasInscripcion(cuits): Promise<PersonaA5[]>`
128
+
129
+ Hasta 250 CUITs en una llamada (`getPersonaList_v2`). Las CUITs inexistentes no hacen fallar la
130
+ consulta: vuelven como una persona con `errorConstancia.error = ['No existe persona con ese Id']`.
131
+
132
+ ```typescript
133
+ const constancias = await padron.getConstanciasInscripcion(['20224107030', '27015942210']);
134
+ for (const c of constancias) {
135
+ if (c.errorConstancia) console.warn(c.idPersona, c.errorConstancia.error);
136
+ }
137
+ ```
138
+
139
+ #### `condicionIvaDesdePadron(persona): { condicionIva: CondicionIva | null; motivo: string }`
140
+
141
+ Funcion pura (no consulta ARCA). Acepta una constancia (`PersonaA5`) o una persona de A4:
142
+
143
+ | Padron | `condicionIva` |
144
+ | --- | --- |
145
+ | Monotributo activo (impuesto 20 activo; si no figura el 20, la categoria) | `MONOTRIBUTISTA` (6) |
146
+ | Monotributo social (categorias 61, 99, 100 y proyectos productivos 101-104) | `MONOTRIBUTO_SOCIAL` (13) |
147
+ | Trabajador independiente promovido (por la descripcion de la categoria) | `MONOTRIBUTO_INDEPENDIENTE_PROMOVIDO` (16) |
148
+ | IVA (impuesto 30) `ACTIVO` / `ACTIVO EN TRAMITE` / `AC` | `RESPONSABLE_INSCRIPTO` (1) |
149
+ | IVA (impuesto 30) `EXENTO` / `EXENTO EN TRAMITE` / `EX`, o impuesto 32 | `EXENTO` (4) |
150
+ | Impuesto 34 (IVA no alcanzado) | `IVA_NO_ALCANZADO` (15) |
151
+ | Ninguno de los anteriores, constancia no emitida o con errores | `null` (con el motivo) |
152
+
153
+ Los impuestos en `BAJA PROVISORIA`, `BAJA DEFINITIVA` o `NO APORTANTE` no cuentan (un impuesto 20
154
+ en baja no se considera monotributo aunque haya categoria). Si el padron no alcanza, devuelve `null`
155
+ en lugar de asumir consumidor final: decidilo segun la operacion. Si ARCA informo
156
+ `errorRegimenGeneral` / `errorMonotributo`, el motivo los incluye.
157
+
158
+ Fuentes: manual de `ws_sr_constancia_inscripcion` v4.1 (impuestos 20 y 30, estado `AC`, categorias
159
+ de monotributo del anexo 5.3) y manual de `ws_sr_padron_a4` v1.3 §5.3 (TipoEstado). Los impuestos 32
160
+ y 34 no figuran en los manuales: se reconocen por id o por su descripcion. La categoria 98
161
+ (`B ASOCIADO COOPERATIVA`) se trata como monotributo comun.
162
+
163
+ #### `getPersonaA13(cuit): Promise<PersonaA13>` y `getPersonaA13V2(cuit)`
164
+
165
+ Datos basicos via `ws_sr_padron_a13`. `getPersona` falla con `reason: 'inactiva'` si la clave esta
166
+ inactiva; `getPersonaV2` (manual A13 v1.4) devuelve los datos igual (con `estadoClave: 'INACTIVO'`).
167
+
168
+ #### `getIdPersonaListByDocumento(documento): Promise<string[]>`
169
+
170
+ CUIT/CUIL asociados a un numero de documento (A13). Acepta puntos y espacios (`'11.709.676'`).
171
+ Devuelve `[]` si ARCA no informa claves.
172
+
173
+ #### `getPersona(cuit): Promise<PersonaA4>`
75
174
 
76
175
  Obtiene los datos completos de un contribuyente via ws_sr_padron_a4. Autentica automaticamente con WSAA.
77
176
 
78
177
  ```typescript
79
- const contribuyente = await padron.getPersona('20123456789');
178
+ const contribuyente = await padron.getPersona('20111111112');
80
179
  ```
81
180
 
82
- #### `getPersonaBasic(cuit: string): Promise<PersonaA10>`
181
+ #### `getPersonaBasic(cuit): Promise<PersonaA10>`
83
182
 
84
183
  Obtiene los datos basicos de un contribuyente via ws_sr_padron_a10.
85
184
 
86
185
  ```typescript
87
- const contribuyenteBasico = await padron.getPersonaBasic('20123456789');
186
+ const contribuyenteBasico = await padron.getPersonaBasic('20111111112');
88
187
  ```
89
188
 
90
189
  #### `getParametros(collection: string): Promise<ParameterRecord[]>`
91
190
 
92
- Obtiene una tabla de parametros via ws_sr_padron_a100.
191
+ Obtiene una tabla de parametros via ws_sr_padron_a100. `id`, `descripcion` y los `value` de los
192
+ atributos se devuelven tal cual los envia ARCA (`"10.50"` sigue siendo `"10.50"`). Lanza
193
+ `ArcaPadronError` si la respuesta no trae `parameterCollection`; una coleccion vacia devuelve `[]`.
93
194
 
94
195
  ```typescript
95
- import { CollectionName } from '@ramiidv/arca-padron-sdk';
196
+ import { CollectionName } from '@ramiidv/arca-padron';
96
197
 
97
198
  const provincias = await padron.getParametros(CollectionName.PROVINCIA);
98
199
  const tiposDocumento = await padron.getParametros(CollectionName.TIPO_DOCUMENTO);
99
200
  const tiposRelacion = await padron.getParametros(CollectionName.TIPO_RELACION);
100
201
  ```
101
202
 
102
- Colecciones disponibles (enum `CollectionName`, valores SUPA.\* prefijados): `PROVINCIA`, `TIPO_DOCUMENTO`, `TIPO_DOMICILIO`, `TIPO_CLAVE`, `TIPO_EMPRESA_JURIDICA`, `TIPO_EMPRESA_JURIDICA_SUBGRUPO`, `TIPO_RELACION`, `TIPO_SUBTIPO_RELACION`, `TIPO_COMPONENTE_SOCIEDAD`, `TIPO_RELACION_COMPONENTE_SOC`, `TIPO_EMAIL`, `TIPO_TELEFONO`, `TIPO_RESIDENCIA`, `TIPO_DATO_ADICIONAL_DOMICILIO`, `ORGANISMO_INFORMANTE`, `ORGANISMO_CONTROL`, `PROVINCIA_SOCIEDAD_ORG`, `SEXO`, `CALLE`, `LOCALIDAD`.
203
+ Colecciones disponibles (enum `CollectionName`, manual A100 v2.1 anexo 5.1): `PROVINCIA`, `TIPO_DOCUMENTO`, `TIPO_DOMICILIO`, `TIPO_CLAVE`, `TIPO_EMPRESA_JURIDICA`, `TIPO_EMPRESA_JURIDICA_SUBGRUPO`, `TIPO_RELACION`, `TIPO_SUBTIPO_RELACION`, `TIPO_COMPONENTE_SOCIEDAD`, `TIPO_RELACION_COMPONENTE_SOC`, `TIPO_EMAIL`, `TIPO_TELEFONO`, `TIPO_RESIDENCIA`, `TIPO_DATO_ADICIONAL_DOMICILIO`, `ORGANISMO_INFORMANTE`, `ORGANISMO_CONTROL`, `PROVINCIA_SOCIEDAD_ORG`, `SEXO`, `CALLE`, `LOCALIDAD`, `AUTONOMO_MONOTRIBUTO`, `REGIMEN`, `TIPO_REGIMEN`, `CARACTERIZACION`, `TIPO_ARCHIVO`, `ACTIVIDAD_RUBRO`, `RUBRO_ACTIVIDAD`, `ACTIVIDAD_OCUPACIONAL`.
204
+ La coleccion de categorias de monotributo no se incluye porque su nombre aparece cortado en el manual.
103
205
 
104
- #### `status(): Promise<{ a4: ServerStatus, a10: ServerStatus, a100: ServerStatus }>`
206
+ #### `status(): Promise<PadronStatus>`
105
207
 
106
- Verifica el estado de los tres servicios (no requiere autenticacion).
208
+ Verifica el estado de los servicios (`dummy`, no requiere autenticacion). Consulta los cinco en
209
+ paralelo con `Promise.allSettled`: cada uno es un `PromiseSettledResult<ServerStatus>`, asi que un
210
+ servicio caido no oculta el estado de los demas.
107
211
 
108
212
  ```typescript
109
- const estadoServicios = await padron.status();
110
- console.log(estadoServicios.a4.appserver); // "OK"
213
+ const estado = await padron.status();
214
+ if (estado.a4.status === 'fulfilled') console.log(estado.a4.value.appserver); // "OK"
215
+ else console.error('A4 caido:', estado.a4.reason);
111
216
  ```
112
217
 
113
218
  ### Acceso a clientes de bajo nivel
@@ -123,15 +228,23 @@ const ticket = await padron.wsaa.getAccessTicket('ws_sr_padron_a4');
123
228
  const credenciales = {
124
229
  Token: ticket.token,
125
230
  Sign: ticket.sign,
126
- CuitRepresentada: '20123456789',
231
+ CuitRepresentada: '20123456786',
127
232
  };
128
233
 
129
234
  // Llamar directamente al servicio
130
- const contribuyente = await padron.a4.getPersona(credenciales, '20123456789');
235
+ const contribuyente = await padron.a4.getPersona(credenciales, '20111111112');
236
+ // Tambien: padron.a5.getPersona / getPersonaList, padron.a13.getPersonaV2, padron.a100.getParameterCollectionByName
131
237
  ```
132
238
 
239
+ Clientes disponibles: `padron.wsaa`, `padron.a5` (constancia), `padron.a4`, `padron.a10`,
240
+ `padron.a13`, `padron.a100`.
241
+
133
242
  ## Tipos de respuesta
134
243
 
244
+ Los campos `xs:string` de los WSDL (codigos postales, datos adicionales, numeros de inscripcion,
245
+ documentos) y los `xs:long` (CUIT, actividades, telefonos) se devuelven siempre como `string`, aunque
246
+ sean numericos. Los elementos `xsi:nil` se tratan como ausentes.
247
+
135
248
  ### PersonaA4 (datos completos)
136
249
 
137
250
  ```typescript
@@ -209,43 +322,62 @@ interface ParameterRecord {
209
322
 
210
323
  interface ParameterAttribute {
211
324
  name: string;
212
- value: string;
325
+ value?: string; // tal cual lo envia ARCA (xs:string)
213
326
  }
214
327
  ```
215
328
 
216
329
  ## Manejo de errores
217
330
 
218
- El SDK usa una jerarquia de errores de 4 clases:
219
-
220
331
  ```
221
332
  Error
222
- └── ArcaPadronError (base)
333
+ └── ArcaError (base, de @ramiidv/arca-common)
334
+ ├── ArcaPadronError (respuesta de ARCA sin un dato obligatorio, ej: personaReturn sin persona)
223
335
  ├── ArcaAuthError (errores de WSAA)
224
- ├── ArcaPadronServiceError (errores de negocio)
225
- └── ArcaSoapError (errores HTTP/transporte)
336
+ │ └── ArcaTicketVigenteError (TA vigente que no esta en memoria ni en el storage)
337
+ ├── ArcaValidationError (CUIT o documento invalido: no se llamo a ARCA)
338
+ ├── ArcaServiceError
339
+ │ └── ArcaPadronServiceError (errores de negocio: reason + errors + cause)
340
+ └── ArcaSoapError (HTTP/red/timeout y SOAP Faults no reconocidos)
226
341
  ```
227
342
 
343
+ Todos tienen un `code` estable y `instanceof` funciona aunque haya mas de una copia del paquete
344
+ cargada. ARCA informa los errores de negocio como SOAP Fault; el SDK reconoce los textos de los
345
+ manuales y los convierte en `ArcaPadronServiceError` con un `reason` tipado (el `ArcaSoapError`
346
+ original queda en `cause`). No se reintentan.
347
+
348
+ | `reason` | Mensaje de ARCA |
349
+ | --- | --- |
350
+ | `inexistente` | "La Clave (CUIT/CUIL) consultada es inexistente", "No existe persona con ese Id" |
351
+ | `inactiva` | "La clave (CUIT/CUIL) consultada se encuentra INACTIVA" (A13: usar `getPersonaA13V2`) |
352
+ | `id_invalido` | "El Id de la persona no es valido" |
353
+ | `no_autorizado` | "No autorizado, par token/sign invalido.", "Falta token y/o sign.", "Debe enviar la CUIT representada", "Este token no le permite actuar en representacion de la CUIT ..." |
354
+
355
+ Un SOAP Fault con otro texto queda como `ArcaSoapError` (con `faultString`). En la constancia de
356
+ inscripcion, los motivos por los que ARCA no emite la constancia (CUIT limitada, domicilio
357
+ incompleto, etc.) no son excepciones: vienen en `errorConstancia`, `errorRegimenGeneral` y
358
+ `errorMonotributo`.
359
+
228
360
  ```typescript
229
361
  import {
230
362
  ArcaAuthError,
231
363
  ArcaPadronServiceError,
232
364
  ArcaSoapError,
233
- } from '@ramiidv/arca-padron-sdk';
365
+ ArcaValidationError,
366
+ } from '@ramiidv/arca-padron';
234
367
 
235
368
  try {
236
- await padron.getPersona('20123456789');
369
+ await padron.getPersona('20111111112');
237
370
  } catch (error) {
238
- if (error instanceof ArcaAuthError) {
239
- // Certificado vencido, servicio no autorizado, WSAA caido
240
- console.error('Error de autenticacion:', error.message);
371
+ if (error instanceof ArcaValidationError) {
372
+ console.error('CUIT invalida:', error.message);
241
373
  } else if (error instanceof ArcaPadronServiceError) {
242
- // Errores de negocio (CUIT no encontrada, etc.)
243
- for (const detalle of error.errors) {
244
- console.error(`[${detalle.code}] ${detalle.msg}`);
245
- }
374
+ if (error.reason === 'inexistente') console.error('La CUIT no existe');
375
+ else if (error.reason === 'inactiva') console.error('La CUIT esta inactiva');
376
+ else console.error(error.errors[0]?.msg);
377
+ } else if (error instanceof ArcaAuthError) {
378
+ console.error('Error de autenticacion:', error.message);
246
379
  } else if (error instanceof ArcaSoapError) {
247
- // Errores HTTP/red
248
- console.error('Error HTTP:', error.statusCode, error.message);
380
+ console.error('Error HTTP/red:', error.statusCode, error.message);
249
381
  }
250
382
  }
251
383
  ```
@@ -260,10 +392,10 @@ const padron = new ArcaPadron({
260
392
  onEvent: (evento) => {
261
393
  switch (evento.type) {
262
394
  case 'auth:login':
263
- console.log(`Login para ${evento.serviceId}`);
395
+ console.log(`Login para ${evento.service}`);
264
396
  break;
265
397
  case 'auth:cache-hit':
266
- console.log(`Token cacheado para ${evento.serviceId}`);
398
+ console.log(`Token reutilizado para ${evento.service} (${evento.source})`);
267
399
  break;
268
400
  case 'request:start':
269
401
  console.log(`Inicio ${evento.method}`);
@@ -291,19 +423,27 @@ import {
291
423
  TipoPersona,
292
424
  ImpuestoId,
293
425
  CollectionName,
294
- } from '@ramiidv/arca-padron-sdk';
426
+ } from '@ramiidv/arca-padron';
295
427
 
296
- // Verificar si el contribuyente esta inscripto en IVA
428
+ // Verificar si el contribuyente esta inscripto en IVA (mejor: condicionIvaDesdePadron)
297
429
  const tieneIva = contribuyente.impuesto?.some(
298
- (imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado === 'AC'
430
+ (imp) => imp.idImpuesto === ImpuestoId.IVA_RESPONSABLE_INSCRIPTO && imp.estado?.startsWith('ACTIVO')
299
431
  );
432
+
433
+ // ImpuestoId.MONOTRIBUTO = 20, IVA_RESPONSABLE_INSCRIPTO = 30, BIENES_PERSONALES = 180,
434
+ // EMPLEADOR = 301, AUTONOMOS = 308 (manuales de ARCA). IVA_EXENTO (32) e IVA_NO_ALCANZADO (34)
435
+ // no figuran en los manuales del padron.
436
+ //
437
+ // `TipoDocumento` esta deprecado: es `DocTipo` (codigos numericos de WSFEv1), no el
438
+ // `tipoDocumento` string del padron ("DNI", "LC"...).
300
439
  ```
301
440
 
302
441
  ## Requisitos
303
442
 
304
443
  - Node.js >= 18 (soporte nativo de `fetch`)
305
444
  - Certificado digital emitido por ARCA/AFIP
306
- - Autorizacion para los servicios web correspondientes
445
+ - Autorizacion para los servicios web correspondientes: `ws_sr_constancia_inscripcion`,
446
+ `ws_sr_padron_a4`, `ws_sr_padron_a10`, `ws_sr_padron_a13`, `ws_sr_padron_a100` (cada uno por separado)
307
447
 
308
448
  ## Licencia
309
449
 
@@ -0,0 +1,111 @@
1
+ import { WsaaClient } from '@ramiidv/arca-common';
2
+ import type { CallOptions } from '@ramiidv/arca-common';
3
+ import { PadronA4Client } from './padron-a4.js';
4
+ import { PadronA5Client } from './padron-a5.js';
5
+ import { PadronA10Client } from './padron-a10.js';
6
+ import { PadronA13Client } from './padron-a13.js';
7
+ import { PadronA100Client } from './padron-a100.js';
8
+ import type { ArcaPadronConfig, PadronStatus, ParameterRecord, PersonaA4, PersonaA5, PersonaA10, PersonaA13 } from './types.js';
9
+ /**
10
+ * Main orchestrator class for ARCA Padrón web services.
11
+ *
12
+ * Provides high-level methods that handle WSAA authentication automatically
13
+ * and expose results from the Constancia de Inscripción (ex A5), A4 (full),
14
+ * A10 (basic), A13 (basic) and A100 (parameters) web services.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { ArcaPadron, condicionIvaDesdePadron, FileTicketStorage } from '@ramiidv/arca-padron';
19
+ * import { readFileSync } from 'fs';
20
+ *
21
+ * const client = new ArcaPadron({
22
+ * cert: readFileSync('cert.pem', 'utf-8'),
23
+ * key: readFileSync('key.pem', 'utf-8'),
24
+ * cuit: '20123456789',
25
+ * production: false,
26
+ * ticketStorage: new FileTicketStorage('./.arca-tickets'),
27
+ * });
28
+ *
29
+ * const persona = await client.getConstanciaInscripcion('30712345674');
30
+ * const { condicionIva, motivo } = condicionIvaDesdePadron(persona);
31
+ * ```
32
+ */
33
+ export declare class ArcaPadron {
34
+ /** Low-level WSAA client for direct access (se puede compartir con arca-facturacion) */
35
+ readonly wsaa: WsaaClient;
36
+ /** Low-level Constancia de Inscripción (ex Padrón A5) client */
37
+ readonly a5: PadronA5Client;
38
+ /** Low-level Padrón A4 client for direct access */
39
+ readonly a4: PadronA4Client;
40
+ /** Low-level Padrón A10 client for direct access */
41
+ readonly a10: PadronA10Client;
42
+ /** Low-level Padrón A13 client for direct access */
43
+ readonly a13: PadronA13Client;
44
+ /** Low-level Padrón A100 client for direct access */
45
+ readonly a100: PadronA100Client;
46
+ private readonly cuit;
47
+ private readonly signal?;
48
+ constructor(config: ArcaPadronConfig);
49
+ /**
50
+ * Constancia de inscripción (ws_sr_constancia_inscripcion, ex Padrón A5,
51
+ * `getPersona_v2`): datos generales, domicilio fiscal, impuestos del régimen
52
+ * general y monotributo. Combinar con `condicionIvaDesdePadron` para facturar.
53
+ * @param cuit - CUIT a consultar (con o sin guiones)
54
+ * @throws ArcaValidationError si la CUIT es inválida (dígito verificador)
55
+ * @throws ArcaPadronServiceError si ARCA informa la CUIT inexistente, inactiva, etc.
56
+ */
57
+ getConstanciaInscripcion(cuit: string | number, call?: CallOptions): Promise<PersonaA5>;
58
+ /**
59
+ * Constancias de inscripción de hasta 250 CUITs en una llamada
60
+ * (`getPersonaList_v2`). Las CUITs inexistentes vuelven con `errorConstancia`
61
+ * ("No existe persona con ese Id") en lugar de hacer fallar la consulta.
62
+ */
63
+ getConstanciasInscripcion(cuits: Array<string | number>, call?: CallOptions): Promise<PersonaA5[]>;
64
+ /**
65
+ * Datos completos de un contribuyente (Padrón A4).
66
+ * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
67
+ */
68
+ getPersona(cuit: string | number, call?: CallOptions): Promise<PersonaA4>;
69
+ /**
70
+ * Datos básicos de un contribuyente (Padrón A10).
71
+ * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
72
+ */
73
+ getPersonaBasic(cuit: string | number, call?: CallOptions): Promise<PersonaA10>;
74
+ /**
75
+ * Datos básicos de un contribuyente (Padrón A13, `getPersona`). Con la clave
76
+ * inactiva ARCA responde con error (`reason: 'inactiva'`): ver `getPersonaA13V2`.
77
+ * @param cuit - CUIT/CUIL a consultar (con o sin guiones)
78
+ */
79
+ getPersonaA13(cuit: string | number, call?: CallOptions): Promise<PersonaA13>;
80
+ /**
81
+ * Datos básicos de un contribuyente (Padrón A13, `getPersonaV2`): responde
82
+ * también si la clave está INACTIVA (manual A13 v1.4).
83
+ */
84
+ getPersonaA13V2(cuit: string | number, call?: CallOptions): Promise<PersonaA13>;
85
+ /**
86
+ * CUITs/CUILs asociados a un número de documento (Padrón A13).
87
+ * @param documento - Número de documento (DNI); se aceptan puntos y espacios
88
+ */
89
+ getIdPersonaListByDocumento(documento: string | number, call?: CallOptions): Promise<string[]>;
90
+ /**
91
+ * Tabla de parámetros (Padrón A100) por nombre de colección.
92
+ * @param collection - Nombre de la colección (ej: CollectionName.PROVINCIA)
93
+ */
94
+ getParametros(collection: string, call?: CallOptions): Promise<ParameterRecord[]>;
95
+ /**
96
+ * Estado de los servicios de Padrón (`dummy`, sin autenticación). Consulta
97
+ * todos en paralelo y devuelve el resultado de cada uno por separado: un
98
+ * servicio caído no oculta el estado de los demás.
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * const s = await padron.status();
103
+ * if (s.a4.status === 'fulfilled') console.log(s.a4.value.appserver);
104
+ * else console.error(s.a4.reason);
105
+ * ```
106
+ */
107
+ status(call?: CallOptions): Promise<PadronStatus>;
108
+ private opts;
109
+ private getAuth;
110
+ }
111
+ //# sourceMappingURL=arca-padron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arca-padron.d.ts","sourceRoot":"","sources":["../../src/arca-padron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA2B,MAAM,sBAAsB,CAAC;AAC3E,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,EAEhB,YAAY,EACZ,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EAEX,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAU;IACrB,wFAAwF;IACxF,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,gEAAgE;IAChE,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,mDAAmD;IACnD,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,oDAAoD;IACpD,SAAgB,GAAG,EAAE,eAAe,CAAC;IACrC,oDAAoD;IACpD,SAAgB,GAAG,EAAE,eAAe,CAAC;IACrC,qDAAqD;IACrD,SAAgB,IAAI,EAAE,gBAAgB,CAAC;IAEvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;gBAE1B,MAAM,EAAE,gBAAgB;IAiDpC;;;;;;;OAOG;IACG,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAM7F;;;;OAIG;IACG,yBAAyB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAMxG;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC;IAM/E;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMrF;;;;OAIG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMnF;;;OAGG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMrF;;;OAGG;IACG,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMpG;;;OAGG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMvF;;;;;;;;;;;OAWG;IACG,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAgBvD,OAAO,CAAC,IAAI;YAIE,OAAO;CAQtB"}