import { B as BulkContribuyente } from './index-KNOaUG34.js'; export { BulkFormatError } from './errors.js'; interface DownloadOptions { /** Directorio de destino para el archivo ZIP */ outputDir: string; /** Tiempo de espera en milisegundos (por defecto: 60000) */ timeout?: number; } interface ParseOptions { /** Ruta al archivo TXT extraído del ZIP */ filePath: string; /** * Codificación del archivo. La DGII publica el TXT en latin-1 * (ISO-8859-1), que es el valor por defecto. Permite anularla si una * futura versión del archivo llega en otra codificación (p. ej. UTF-8). */ encoding?: BufferEncoding; } declare const DGII_BULK_URL: string; /** * Valores conocidos de la columna `estado` (col 9) en el archivo masivo, * verificados contra ~778k filas en producción. El parser usa este * vocabulario para detectar un cambio de layout: si ninguna fila de una * muestra trae un `estado` reconocido, el formato de la DGII cambió. */ declare const DGII_ESTADOS: readonly ["ACTIVO", "SUSPENDIDO", "DADO DE BAJA", "CESE TEMPORAL", "ANULADO", "RECHAZADO"]; /** * Valor de la columna `estado` del archivo masivo: uno de * {@link DGII_ESTADOS}. Vocabulario completo de la DGII, distinto del * `estado` binario (ACTIVO/INACTIVO) que exponen el scraping y el SOAP. */ type DgiiEstado = (typeof DGII_ESTADOS)[number]; /** * Descarga el archivo masivo DGII_RNC.zip desde el portal de la DGII. * * @returns Ruta absoluta al archivo ZIP descargado */ declare function downloadBulkFile(options: DownloadOptions): Promise; /** * Parsea el archivo TXT de contribuyentes extraído de DGII_RNC.zip. * * El archivo usa delimitador pipe (|) con 11 columnas y viene codificado * en latin-1 (ISO-8859-1); leerlo como UTF-8 corrompe los nombres con * ñ/acentos (p. ej. MUÑOZ, PEÑA). Usa {@link ParseOptions.encoding} para * anular la codificación si una futura versión del archivo cambia. * * Layout verificado contra el archivo en producción (~778k filas): * * col 0 rnc (100% dígitos) * col 1 nombre (razón social) * col 2 nombreComercial * col 3 actividad * col 4-7 reservadas/vacías en el archivo actual * col 8 fechaConstitucion (dd/mm/yyyy) * col 9 estado (ACTIVO / SUSPENDIDO / DADO DE BAJA / ...) * col 10 regimen (NORMAL / RST / PST) * * `estado` se normaliza a mayúsculas para que coincida con * {@link DGII_ESTADOS} sin importar la capitalización de la fuente. * * Las filas cuyo número de columnas no sea exactamente 11 se descartan por * malformadas (formato viejo más corto, o una columna añadida/insertada). * Si el archivo trae filas pero la mayoría de la muestra no trae un * `estado` reconocido, se lanza {@link BulkFormatError}: un cambio de * layout de la DGII debe fallar ruidosamente en vez de devolver `estado` * vacío o mapeado a la columna equivocada en silencio. */ declare function parseBulkFile(options: ParseOptions): Promise; export { BulkContribuyente, DGII_BULK_URL, DGII_ESTADOS, type DgiiEstado, type DownloadOptions, type ParseOptions, downloadBulkFile, parseBulkFile };