/** * Regras de texto dos tipos simples do XSD da NFS-e nacional * (`PL_NFSE_NT04_RTCv101/tiposSimples_v1.01.xsd`). * * Existem dois regimes de texto no schema e confundi-los custa caro: * * - **`TSString`** (logradouro, número, complemento, bairro, e-mail) restringe o * charset a `[!-ÿ]` — U+0021..U+00FF, o Latin-1 imprimível, com espaço * permitido só no meio. Acento latino passa; cirílico e CJK, não. * - **`xs:string`** (cidade, estado/província, código postal, nome/razão social, * NIF) não restringe charset nenhum: cidade chinesa e nome cirílico são * válidos, só o `maxLength` vale. * * `validateDps` **rejeita** o que estiver fora da regra, com o campo apontado. * Normalizar é decisão de quem chama — estes helpers existem para isso, para o * caso comum de dado vindo de cadastro (colado de e-mail, PDF ou planilha). */ /** Comprimento máximo por tipo do XSD. */ export declare const TS_LOGRADOURO_MAX = 255; export declare const TS_NUMERO_ENDERECO_MAX = 60; export declare const TS_COMPLEMENTO_ENDERECO_MAX = 156; export declare const TS_BAIRRO_MAX = 60; export declare const TS_EMAIL_MAX = 80; export declare const TS_CIDADE_MAX = 60; export declare const TS_ESTADO_PROV_REGIAO_MAX = 60; export declare const TS_CODIGO_END_POSTAL_MAX = 11; export declare const TS_NOME_RAZAO_SOCIAL_MAX = 300; export declare const TS_NIF_MAX = 40; export declare const TS_INSC_MUN_MAX = 15; export declare const TS_DESC_INF_COMPL_MAX = 2000; export declare const TS_DESC_255_MAX = 255; export declare const TS_IDE_EVENTO_MAX = 30; /** * Normaliza um valor para o charset do `TSString` e corta em `maxLength`. * * Três passos por caractere: (1) dentro de U+0021..U+00FF ou espaço → mantém, * então `é`, `Ã` e `ç` sobrevivem; (2) fora → tenta o mapa tipográfico e a * decomposição NFKD (`ł`→`l`, `fi`→`fi`); (3) sem equivalente (cirílico, CJK) → * descarta. Quebra de linha e tab viram espaço — não passam no charset, mas * separam palavras, e colar os termos vizinhos seria pior. * * @returns `undefined` quando não sobra nada de aproveitável — caso em que o * chamador deve tratar o campo como ausente, não como string vazia. */ export declare function normalizeTsString(value: string | null | undefined, maxLength: number): string | undefined; /** * Normaliza um valor de tipo com base `xs:string` (sem restrição de charset, * como `TSCidade`, `TSCodigoEndPostal` e `TSNIF`): só trim e corte no * `maxLength`. */ export declare function normalizeXsString(value: string | null | undefined, maxLength: number): string | undefined; /** `TSString`: todos os caracteres cabem no charset Latin-1 imprimível? */ export declare function isTsString(value: string): boolean; /** `TSCEP`: exatamente 8 dígitos — não há como normalizar o que falta. */ export declare function isTsCep(value: string | undefined): boolean; /** `TSCodPaisISO`: exatamente 2 letras maiúsculas (`BR`, `VG`, `PT`). */ export declare function isTsCodPaisIso(value: string | undefined): boolean; /** * Lista os campos ausentes/inválidos numa mensagem só, para o usuário corrigir * tudo de uma vez em vez de descobrir um por requisição. * * @param fields Rótulo → valor (ou `true`/`false` para checagens já resolvidas). */ export declare function missingFieldsMessage(prefix: string, fields: Record): string; //# sourceMappingURL=xsd-string.d.ts.map