validation-br 2.0.0-next-9 → 2.0.0-next-11

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 (125) hide show
  1. package/dist/cjs/_helpers/expiration-factor.d.ts +39 -0
  2. package/dist/cjs/_helpers/expiration-factor.js +59 -0
  3. package/dist/{_helpers → cjs/_helpers}/random.js +4 -1
  4. package/dist/{_helpers → cjs/_helpers}/utils.d.ts +1 -1
  5. package/dist/{_helpers → cjs/_helpers}/utils.js +2 -2
  6. package/dist/{base.d.ts → cjs/base.d.ts} +5 -5
  7. package/dist/{base.js → cjs/base.js} +3 -4
  8. package/dist/cjs/boleto.d.ts +182 -0
  9. package/dist/cjs/boleto.js +349 -0
  10. package/dist/cjs/caepf.d.ts +93 -0
  11. package/dist/cjs/caepf.js +141 -0
  12. package/dist/{carplate.d.ts → cjs/carplate.d.ts} +1 -1
  13. package/dist/{carplate.js → cjs/carplate.js} +1 -1
  14. package/dist/{cep.d.ts → cjs/cep.d.ts} +1 -1
  15. package/dist/{cep.js → cjs/cep.js} +2 -2
  16. package/dist/cjs/certidao.d.ts +111 -0
  17. package/dist/{certidao.js → cjs/certidao.js} +82 -38
  18. package/dist/{index.d.ts → cjs/index.d.ts} +6 -0
  19. package/dist/{index.js → cjs/index.js} +19 -1
  20. package/dist/cjs/package.json +3 -0
  21. package/dist/{pix-copy-paste.d.ts → cjs/pix-copy-paste.d.ts} +5 -3
  22. package/dist/{uuid.js → cjs/uuid.js} +7 -4
  23. package/dist/esm/_exceptions/ValidationBRError.d.ts +24 -0
  24. package/dist/esm/_exceptions/ValidationBRError.js +40 -0
  25. package/dist/esm/_helpers/crc.d.ts +7 -0
  26. package/dist/esm/_helpers/crc.js +43 -0
  27. package/dist/esm/_helpers/crockford.d.ts +31 -0
  28. package/dist/esm/_helpers/crockford.js +58 -0
  29. package/dist/esm/_helpers/expiration-factor.d.ts +39 -0
  30. package/dist/esm/_helpers/expiration-factor.js +55 -0
  31. package/dist/esm/_helpers/mask.d.ts +18 -0
  32. package/dist/esm/_helpers/mask.js +33 -0
  33. package/dist/esm/_helpers/random.d.ts +27 -0
  34. package/dist/esm/_helpers/random.js +53 -0
  35. package/dist/esm/_helpers/utils.d.ts +94 -0
  36. package/dist/esm/_helpers/utils.js +119 -0
  37. package/dist/esm/base.d.ts +33 -0
  38. package/dist/esm/base.js +44 -0
  39. package/dist/esm/boleto.d.ts +182 -0
  40. package/dist/esm/boleto.js +345 -0
  41. package/dist/esm/caepf.d.ts +93 -0
  42. package/dist/esm/caepf.js +137 -0
  43. package/dist/esm/carplate.d.ts +31 -0
  44. package/dist/esm/carplate.js +65 -0
  45. package/dist/esm/cbi_sinter.d.ts +78 -0
  46. package/dist/esm/cbi_sinter.js +119 -0
  47. package/dist/esm/cep.d.ts +61 -0
  48. package/dist/esm/cep.js +183 -0
  49. package/dist/esm/certidao.d.ts +111 -0
  50. package/dist/esm/certidao.js +169 -0
  51. package/dist/esm/cnh.d.ts +80 -0
  52. package/dist/esm/cnh.js +124 -0
  53. package/dist/esm/cnpj.d.ts +107 -0
  54. package/dist/esm/cnpj.js +170 -0
  55. package/dist/esm/cpf.d.ts +88 -0
  56. package/dist/esm/cpf.js +132 -0
  57. package/dist/esm/email.d.ts +12 -0
  58. package/dist/esm/email.js +36 -0
  59. package/dist/esm/index.d.ts +21 -0
  60. package/dist/esm/index.js +51 -0
  61. package/dist/esm/judicial-process.d.ts +150 -0
  62. package/dist/esm/judicial-process.js +253 -0
  63. package/dist/esm/nup17.d.ts +98 -0
  64. package/dist/esm/nup17.js +150 -0
  65. package/dist/esm/package.json +3 -0
  66. package/dist/esm/phone.d.ts +103 -0
  67. package/dist/esm/phone.js +165 -0
  68. package/dist/esm/pis-pasep.d.ts +70 -0
  69. package/dist/esm/pis-pasep.js +111 -0
  70. package/dist/esm/pix-copy-paste.d.ts +28 -0
  71. package/dist/esm/pix-copy-paste.js +78 -0
  72. package/dist/esm/pix-key.d.ts +29 -0
  73. package/dist/esm/pix-key.js +83 -0
  74. package/dist/esm/postal-track-code.d.ts +76 -0
  75. package/dist/esm/postal-track-code.js +125 -0
  76. package/dist/esm/renavam.d.ts +31 -0
  77. package/dist/esm/renavam.js +108 -0
  78. package/dist/esm/tituloEleitor.d.ts +82 -0
  79. package/dist/esm/tituloEleitor.js +129 -0
  80. package/dist/esm/uf.d.ts +89 -0
  81. package/dist/esm/uf.js +223 -0
  82. package/dist/esm/uuid.d.ts +9 -0
  83. package/dist/esm/uuid.js +29 -0
  84. package/package.json +30 -21
  85. package/readme.md +607 -171
  86. package/dist/certidao.d.ts +0 -83
  87. /package/dist/{_exceptions → cjs/_exceptions}/ValidationBRError.d.ts +0 -0
  88. /package/dist/{_exceptions → cjs/_exceptions}/ValidationBRError.js +0 -0
  89. /package/dist/{_helpers → cjs/_helpers}/crc.d.ts +0 -0
  90. /package/dist/{_helpers → cjs/_helpers}/crc.js +0 -0
  91. /package/dist/{_helpers → cjs/_helpers}/crockford.d.ts +0 -0
  92. /package/dist/{_helpers → cjs/_helpers}/crockford.js +0 -0
  93. /package/dist/{_helpers → cjs/_helpers}/mask.d.ts +0 -0
  94. /package/dist/{_helpers → cjs/_helpers}/mask.js +0 -0
  95. /package/dist/{_helpers → cjs/_helpers}/random.d.ts +0 -0
  96. /package/dist/{cbi_sinter.d.ts → cjs/cbi_sinter.d.ts} +0 -0
  97. /package/dist/{cbi_sinter.js → cjs/cbi_sinter.js} +0 -0
  98. /package/dist/{cnh.d.ts → cjs/cnh.d.ts} +0 -0
  99. /package/dist/{cnh.js → cjs/cnh.js} +0 -0
  100. /package/dist/{cnpj.d.ts → cjs/cnpj.d.ts} +0 -0
  101. /package/dist/{cnpj.js → cjs/cnpj.js} +0 -0
  102. /package/dist/{cpf.d.ts → cjs/cpf.d.ts} +0 -0
  103. /package/dist/{cpf.js → cjs/cpf.js} +0 -0
  104. /package/dist/{email.d.ts → cjs/email.d.ts} +0 -0
  105. /package/dist/{email.js → cjs/email.js} +0 -0
  106. /package/dist/{judicial-process.d.ts → cjs/judicial-process.d.ts} +0 -0
  107. /package/dist/{judicial-process.js → cjs/judicial-process.js} +0 -0
  108. /package/dist/{nup17.d.ts → cjs/nup17.d.ts} +0 -0
  109. /package/dist/{nup17.js → cjs/nup17.js} +0 -0
  110. /package/dist/{phone.d.ts → cjs/phone.d.ts} +0 -0
  111. /package/dist/{phone.js → cjs/phone.js} +0 -0
  112. /package/dist/{pis-pasep.d.ts → cjs/pis-pasep.d.ts} +0 -0
  113. /package/dist/{pis-pasep.js → cjs/pis-pasep.js} +0 -0
  114. /package/dist/{pix-copy-paste.js → cjs/pix-copy-paste.js} +0 -0
  115. /package/dist/{pix-key.d.ts → cjs/pix-key.d.ts} +0 -0
  116. /package/dist/{pix-key.js → cjs/pix-key.js} +0 -0
  117. /package/dist/{postal-track-code.d.ts → cjs/postal-track-code.d.ts} +0 -0
  118. /package/dist/{postal-track-code.js → cjs/postal-track-code.js} +0 -0
  119. /package/dist/{renavam.d.ts → cjs/renavam.d.ts} +0 -0
  120. /package/dist/{renavam.js → cjs/renavam.js} +0 -0
  121. /package/dist/{tituloEleitor.d.ts → cjs/tituloEleitor.d.ts} +0 -0
  122. /package/dist/{tituloEleitor.js → cjs/tituloEleitor.js} +0 -0
  123. /package/dist/{uf.d.ts → cjs/uf.d.ts} +0 -0
  124. /package/dist/{uf.js → cjs/uf.js} +0 -0
  125. /package/dist/{uuid.d.ts → cjs/uuid.d.ts} +0 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * ExpirationFactor
3
+ * Converte entre o fator de vencimento do boleto bancário e a data que ele representa
4
+ *
5
+ * @doc
6
+ * O fator de vencimento é a quantidade de dias corridos entre uma data-base e o
7
+ * vencimento do boleto, representado em 4 dígitos (0000 a 9999). "0000" indica
8
+ * que o boleto não tem vencimento definido.
9
+ *
10
+ * Esse intervalo de 4 dígitos, contado a partir de 07/10/1997, esgotou em
11
+ * 21/02/2025 e, a partir de 22/02/2025, a Febraban reiniciou a contagem em
12
+ * 1000, usando 29/05/2022 como nova data-base. Como o fator sozinho não indica
13
+ * de qual era ele é, usamos 6000 como corte: fatores menores indicam a era
14
+ * nova (válida até 31/10/2038) e fatores maiores ou iguais indicam a era
15
+ * antiga (válida até 21/02/2025, quando ela se esgotou).
16
+ *
17
+ * Nota para o futuro: quando a era nova se esgotar (por volta de 2038), a
18
+ * data-base usada abaixo deixa de ser válida e um novo corte precisará ser
19
+ * calculado.
20
+ *
21
+ * Fonte: http://portalabbc.org.br/images/content/manual%20operacional.pdf
22
+ */
23
+ export declare class ExpirationFactor {
24
+ private static readonly oldEraBaseDate;
25
+ private static readonly newEraBaseDate;
26
+ private static readonly newEraStartDate;
27
+ private static readonly newEraThreshold;
28
+ /**
29
+ * Converte o fator de vencimento em data. "0000" representa um boleto sem
30
+ * vencimento definido.
31
+ */
32
+ static toDate(factor: string): Date | null;
33
+ /**
34
+ * Converte uma data no fator de vencimento equivalente, escolhendo a era
35
+ * (ver acima) a partir da própria data: a era antiga só é usada para datas
36
+ * até 21/02/2025, quando ela se esgotou.
37
+ */
38
+ static fromDate(date: Date): string;
39
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ExpirationFactor = void 0;
4
+ /**
5
+ * ExpirationFactor
6
+ * Converte entre o fator de vencimento do boleto bancário e a data que ele representa
7
+ *
8
+ * @doc
9
+ * O fator de vencimento é a quantidade de dias corridos entre uma data-base e o
10
+ * vencimento do boleto, representado em 4 dígitos (0000 a 9999). "0000" indica
11
+ * que o boleto não tem vencimento definido.
12
+ *
13
+ * Esse intervalo de 4 dígitos, contado a partir de 07/10/1997, esgotou em
14
+ * 21/02/2025 e, a partir de 22/02/2025, a Febraban reiniciou a contagem em
15
+ * 1000, usando 29/05/2022 como nova data-base. Como o fator sozinho não indica
16
+ * de qual era ele é, usamos 6000 como corte: fatores menores indicam a era
17
+ * nova (válida até 31/10/2038) e fatores maiores ou iguais indicam a era
18
+ * antiga (válida até 21/02/2025, quando ela se esgotou).
19
+ *
20
+ * Nota para o futuro: quando a era nova se esgotar (por volta de 2038), a
21
+ * data-base usada abaixo deixa de ser válida e um novo corte precisará ser
22
+ * calculado.
23
+ *
24
+ * Fonte: http://portalabbc.org.br/images/content/manual%20operacional.pdf
25
+ */
26
+ class ExpirationFactor {
27
+ /**
28
+ * Converte o fator de vencimento em data. "0000" representa um boleto sem
29
+ * vencimento definido.
30
+ */
31
+ static toDate(factor) {
32
+ if (factor === '0000')
33
+ return null;
34
+ const baseDate = factor < ExpirationFactor.newEraThreshold
35
+ ? ExpirationFactor.newEraBaseDate
36
+ : ExpirationFactor.oldEraBaseDate;
37
+ const msByDay = 1000 * 60 * 60 * 24;
38
+ const baseDays = baseDate.getTime() / msByDay;
39
+ return new Date((+factor + baseDays) * msByDay);
40
+ }
41
+ /**
42
+ * Converte uma data no fator de vencimento equivalente, escolhendo a era
43
+ * (ver acima) a partir da própria data: a era antiga só é usada para datas
44
+ * até 21/02/2025, quando ela se esgotou.
45
+ */
46
+ static fromDate(date) {
47
+ const baseDate = date < ExpirationFactor.newEraStartDate
48
+ ? ExpirationFactor.oldEraBaseDate
49
+ : ExpirationFactor.newEraBaseDate;
50
+ const msByDay = 1000 * 60 * 60 * 24;
51
+ const days = Math.round(date.getTime() / msByDay - baseDate.getTime() / msByDay);
52
+ return String(days).padStart(4, '0').slice(-4);
53
+ }
54
+ }
55
+ exports.ExpirationFactor = ExpirationFactor;
56
+ ExpirationFactor.oldEraBaseDate = new Date('1997-10-07');
57
+ ExpirationFactor.newEraBaseDate = new Date('2022-05-29');
58
+ ExpirationFactor.newEraStartDate = new Date('2025-02-22');
59
+ ExpirationFactor.newEraThreshold = '6000';
@@ -41,7 +41,10 @@ class Random {
41
41
  static number(length, forceLength = false, isAlpha = false) {
42
42
  let value;
43
43
  if (isAlpha)
44
- value = Math.round(Math.random() * 36 ** length)
44
+ // Math.floor (não Math.round) é essencial aqui: Math.random() nunca atinge 1, mas
45
+ // arredondar para cima pode levar o valor a 36 ** length exatamente, que em base 36
46
+ // vira '1' seguido de `length` zeros — um caractere a mais do que o esperado.
47
+ value = Math.floor(Math.random() * 36 ** length)
45
48
  .toString(36)
46
49
  .toLocaleUpperCase();
47
50
  else
@@ -6,7 +6,7 @@
6
6
  * @param {Integer} sum Soma
7
7
  * @returns {Integer}
8
8
  */
9
- export declare function sumToDV(sum: number): number;
9
+ export declare function sumToDV(sum: number, restException?: 0 | 1): number;
10
10
  /**
11
11
  * Checa se o número repassado possui todos os digitos iguais
12
12
  *
@@ -15,8 +15,8 @@ const ValidationBRError_1 = require("../_exceptions/ValidationBRError");
15
15
  * @param {Integer} sum Soma
16
16
  * @returns {Integer}
17
17
  */
18
- function sumToDV(sum) {
19
- return sum % 11 < 2 ? 0 : 11 - (sum % 11);
18
+ function sumToDV(sum, restException = 0) {
19
+ return sum % 11 < 2 ? restException : 11 - (sum % 11);
20
20
  }
21
21
  /**
22
22
  * Checa se o número repassado possui todos os digitos iguais
@@ -5,17 +5,17 @@ export declare abstract class Base {
5
5
  *
6
6
  */
7
7
  protected abstract _mask: string | null;
8
- constructor(_value: string, fakeFn?: Function);
8
+ constructor(_value: string);
9
9
  get value(): string;
10
10
  toString(): string;
11
11
  /**
12
12
  * Deve remover apenas pontos e traços.
13
13
  */
14
- protected abstract normalize(options?: any): void;
14
+ protected abstract normalize(options?: unknown): void;
15
15
  /**
16
16
  * Deve aplicar as regras de validação do dígito verificador do documento
17
17
  */
18
- protected abstract validate(options?: any): boolean;
18
+ protected abstract validate(options?: unknown): boolean;
19
19
  /**
20
20
  * Deve devolver o número com a máscara
21
21
  */
@@ -25,9 +25,9 @@ export declare abstract class Base {
25
25
  * Calcula o dígito verificador de um número SEM o dígito incluído
26
26
  *
27
27
  */
28
- static checksum(value: string): string | null;
28
+ static checksum(_value: string): string | null;
29
29
  /**
30
30
  * Deve gerar um número fake no padrão
31
31
  */
32
- static fake(options?: any): any;
32
+ static fake(_options?: unknown): unknown;
33
33
  }
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Base = void 0;
4
4
  const mask_1 = require("./_helpers/mask");
5
5
  class Base {
6
- constructor(_value, fakeFn) {
6
+ constructor(_value) {
7
7
  this._value = _value;
8
8
  }
9
9
  get value() {
@@ -35,15 +35,14 @@ class Base {
35
35
  * Calcula o dígito verificador de um número SEM o dígito incluído
36
36
  *
37
37
  */
38
- static checksum(value) {
38
+ static checksum(_value) {
39
39
  throw new Error('Should implement on child');
40
40
  }
41
41
  /**
42
42
  * Deve gerar um número fake no padrão
43
43
  */
44
- static fake(options) {
44
+ static fake(_options) {
45
45
  throw new Error('Should implement on child');
46
- // Base.fakeFn(options)
47
46
  }
48
47
  }
49
48
  exports.Base = Base;
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Boleto
3
+ * Calcula, converte e mascara boletos bancários (linha digitável e código de barras)
4
+ *
5
+ * @doc
6
+ * O boleto bancário possui duas representações: o código de barras, com 44 dígitos,
7
+ * e a linha digitável, com 47 dígitos, que reorganiza o código de barras em 5 campos,
8
+ * 3 deles com um dígito verificador próprio (Módulo 10).
9
+ *
10
+ * Exemplo usado nos cálculos abaixo:
11
+ * Banco 001, moeda 9, fator de vencimento 9636, valor R$ 1.234,00 e campo livre
12
+ * "1234567890123456789012345".
13
+ *
14
+ * 1) Partes do código de barras (44 dígitos)
15
+ * _____ ________ ______ ________________ ____________ ___________________________
16
+ * | Bco | Moeda | DV | Fator vencto. | Valor | Campo livre |
17
+ * | 001 | 9 | 1 | 9636 | 0000123400 | 1234567890123456789012345 |
18
+ * |_____|________|______|________________|_____________|___________________________|
19
+ *
20
+ * - Banco (3): código do banco emissor.
21
+ * - Moeda (1): sempre "9" (Real).
22
+ * - DV geral (1): dígito verificador Módulo 11, calculado no passo 2 abaixo.
23
+ * - Fator de vencimento (4): quantidade de dias corridos desde 07/10/1997. "0000" quando
24
+ * o boleto não tem vencimento definido.
25
+ * - Valor (10): valor do boleto em centavos.
26
+ * - Campo livre (25): definido livremente por cada banco (agência, conta, nosso número
27
+ * etc.), sem um padrão único entre eles. Por isso este validador não tenta decompor
28
+ * esse trecho, apenas o mantém disponível como está.
29
+ *
30
+ * 2) Cálculo do DV geral (Módulo 11)
31
+ *
32
+ * - Soma-se o produto dos 43 dígitos do código de barras SEM o DV geral (banco + moeda
33
+ * + fator de vencimento + valor + campo livre) por pesos de 2 a 9, cíclicos, aplicados
34
+ * da direita para a esquerda.
35
+ *
36
+ * 0 0 1 9 9 6 3 6 0 0 0 0 1 2 3 4 0 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
37
+ * x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
38
+ * 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2 9 8 7 6 5 4 3 2
39
+ *
40
+ * Soma = 813
41
+ *
42
+ * - O somatório encontrado é dividido por 11. O DV geral é 11 subtraído do resto da divisão.
43
+ * 813 / 11 tem resto 10. 11 - 10 = 1. DV geral é 1.
44
+ * Obs.: Caso o cálculo do DV retorne 0, 10 ou 11, o resultado será 1.
45
+ *
46
+ * 3) Partes da linha digitável (47 dígitos), a partir do mesmo exemplo
47
+ * ____________ _____________ _____________ _ ______________
48
+ * | Campo 1 | Campo 2 | Campo 3 |4| Campo 5 |
49
+ * | 00191.23454| 67890.123457| 67890.123457|1|96360000123400|
50
+ * |____________|_____________|_____________|_|______________|
51
+ *
52
+ * - Campo 1 (10): banco (3) + moeda (1) + 5 primeiros dígitos do campo livre (5) + DV1
53
+ * - Campo 2 (11): dígitos 6 a 15 do campo livre (10) + DV2
54
+ * - Campo 3 (11): dígitos 16 a 25 do campo livre (10) + DV3
55
+ * - Campo 4 (1): DV geral, o mesmo calculado no passo 2
56
+ * - Campo 5 (14): fator de vencimento (4) + valor (10)
57
+ *
58
+ * 4) Cálculo do DV de cada campo da linha digitável (Módulo 10)
59
+ *
60
+ * - Soma-se o produto dos dígitos do campo (sem o seu DV) por pesos alternados 2 e 1,
61
+ * da direita para a esquerda. Quando o produto é maior que 9, somam-se os dois
62
+ * algarismos do resultado (ex.: 5 x 2 = 10, que vira 1 + 0 = 1).
63
+ *
64
+ * Campo 1 (001912345):
65
+ *
66
+ * 0 0 1 9 1 2 3 4 5
67
+ * x x x x x x x x x
68
+ * 2 1 2 1 2 1 2 1 2
69
+ * = 0 +0 +2 +9 +2 +2 +6 +4 +1 = 26
70
+ *
71
+ * - O somatório encontrado é dividido por 10. O DV é 10 menos o resto da divisão.
72
+ * 26 / 10 tem resto 6. 10 - 6 = 4. DV1 é 4.
73
+ * Obs.: Caso o resto seja 0, o DV será 0.
74
+ *
75
+ * - O mesmo cálculo se aplica aos campos 2 e 3, usando os 10 dígitos de cada um.
76
+ *
77
+ * Fonte: Febraban - Layout do código de barras de cobrança
78
+ *
79
+ * @param {String} value Linha digitável (47) ou código de barras (44)
80
+ * @returns {Boolean}
81
+ */
82
+ import { Base } from './base';
83
+ export declare class Boleto extends Base {
84
+ protected _value: string;
85
+ protected _mask: string;
86
+ private static readonly generalChecksumWeights;
87
+ private _bank;
88
+ private _generalChecksum;
89
+ private _expirationFactor;
90
+ private _amount;
91
+ private _freeField;
92
+ constructor(_value: string);
93
+ /**
94
+ * Cria um Boleto a partir de um código de barras (44 dígitos).
95
+ * Equivalente a chamar o construtor diretamente, mas deixa a intenção explícita.
96
+ */
97
+ static fromBarcode(barcode: string): Boleto;
98
+ /**
99
+ * Código do banco emissor
100
+ */
101
+ get bank(): string;
102
+ /**
103
+ * Valor do boleto, em reais
104
+ */
105
+ get amount(): number;
106
+ /**
107
+ * Data de vencimento, ou null se o boleto não tiver vencimento definido
108
+ */
109
+ get expiresAt(): Date | null;
110
+ /**
111
+ * Campo livre (25 dígitos), definido livremente por cada banco.
112
+ * Não é decomposto por este validador por não seguir um padrão único.
113
+ */
114
+ get freeField(): string;
115
+ protected normalize(): void;
116
+ /**
117
+ * validate()
118
+ * Identifica se o valor é uma linha digitável (47) ou um código de barras (44)
119
+ * e delega para a validação específica de cada formato.
120
+ */
121
+ protected validate(): boolean;
122
+ /**
123
+ * Valida um código de barras (44 dígitos): recalcula o DV geral (Módulo 11)
124
+ * sobre os outros 43 dígitos e compara com o DV informado.
125
+ */
126
+ private validateBarcode;
127
+ /**
128
+ * Valida uma linha digitável (47 dígitos): recalcula o DV (Módulo 10) de cada
129
+ * um dos 3 campos e, a partir deles, o DV geral (Módulo 11), comparando ambos
130
+ * com os dígitos informados.
131
+ */
132
+ private validateLinhaDigitavel;
133
+ /**
134
+ * Preenche os campos comuns a partir do valor já validado, convertendo para
135
+ * o código de barras quando o valor recebido for uma linha digitável.
136
+ */
137
+ private parse;
138
+ /**
139
+ * Devolve sempre o código de barras (44 dígitos), independentemente do
140
+ * formato recebido no construtor.
141
+ */
142
+ toBarcode(): string;
143
+ /**
144
+ * Devolve sempre a linha digitável (47 dígitos, sem máscara), independentemente
145
+ * do formato recebido no construtor.
146
+ */
147
+ toString(): string;
148
+ /**
149
+ * Devolve a linha digitável mascarada, no formato
150
+ * 00000.00000 00000.000000 00000.000000 0 00000000000000
151
+ */
152
+ mask(): string;
153
+ /**
154
+ * checksum()
155
+ * Calcula o DV geral (Módulo 11) a partir dos 43 dígitos do código de
156
+ * barras SEM o DV geral (banco + moeda + fator de vencimento + valor + campo livre)
157
+ */
158
+ static checksum(value: string): string;
159
+ /**
160
+ * Gera um boleto fake válido
161
+ */
162
+ static fake(options?: Partial<FakeBoletoOptions>): Boleto;
163
+ /**
164
+ * Converte uma linha digitável (47) no código de barras (44) equivalente.
165
+ */
166
+ private static linhaDigitavelToBarcode;
167
+ /**
168
+ * Converte um código de barras (44) na linha digitável (47) equivalente,
169
+ * calculando o DV (Módulo 10) de cada um dos 3 campos.
170
+ */
171
+ private static barcodeToLinhaDigitavel;
172
+ /**
173
+ * Módulo 10: usado no DV de cada campo da linha digitável.
174
+ */
175
+ private static calculateModulo10;
176
+ }
177
+ interface FakeBoletoOptions {
178
+ bank: string;
179
+ amount: number;
180
+ expiresAt: Date;
181
+ }
182
+ export {};