lib-fints 1.1.1 → 1.2.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 (129) hide show
  1. package/README.md +4 -0
  2. package/dist/client.js +33 -0
  3. package/dist/index.js +1 -0
  4. package/dist/interactions/portfolioInteraction.js +57 -0
  5. package/dist/mt535parser.js +196 -0
  6. package/dist/partedSegment.js +4 -1
  7. package/dist/segment.js +3 -5
  8. package/dist/segmentDefinition.js +4 -1
  9. package/dist/segments/HIBPA.js +4 -1
  10. package/dist/segments/HIKAZ.js +4 -1
  11. package/dist/segments/HIKAZS.js +2 -2
  12. package/dist/segments/HIKIM.js +4 -1
  13. package/dist/segments/HIKOM.js +4 -1
  14. package/dist/segments/HIPINS.js +2 -2
  15. package/dist/segments/HIRMG.js +4 -1
  16. package/dist/segments/HIRMS.js +4 -1
  17. package/dist/segments/HISAL.js +4 -1
  18. package/dist/segments/HISYN.js +4 -1
  19. package/dist/segments/HITAB.js +4 -1
  20. package/dist/segments/HITAN.js +4 -1
  21. package/dist/segments/HITANS.js +2 -2
  22. package/dist/segments/HIUPA.js +4 -1
  23. package/dist/segments/HIUPD.js +4 -1
  24. package/dist/segments/HIWPD.js +15 -0
  25. package/dist/segments/HKEND.js +4 -1
  26. package/dist/segments/HKIDN.js +4 -1
  27. package/dist/segments/HKKAZ.js +4 -1
  28. package/dist/segments/HKSAL.js +4 -1
  29. package/dist/segments/HKSYN.js +4 -1
  30. package/dist/segments/HKTAB.js +4 -1
  31. package/dist/segments/HKTAN.js +4 -1
  32. package/dist/segments/HKVVB.js +4 -1
  33. package/dist/segments/HKWPD.js +23 -0
  34. package/dist/segments/HNHBK.js +4 -1
  35. package/dist/segments/HNHBS.js +4 -1
  36. package/dist/segments/HNSHA.js +4 -1
  37. package/dist/segments/HNSHK.js +4 -1
  38. package/dist/segments/HNVSD.js +5 -2
  39. package/dist/segments/HNVSK.js +5 -2
  40. package/dist/segments/businessTransactionParameter.js +2 -2
  41. package/dist/segments/registry.js +4 -0
  42. package/dist/tests/HIWPD.test.js +25 -0
  43. package/dist/tests/HKWPD.test.js +38 -0
  44. package/dist/tests/mt535parser.test.js +157 -0
  45. package/dist/types/client.d.ts +24 -0
  46. package/dist/types/client.d.ts.map +1 -1
  47. package/dist/types/index.d.ts +2 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/interactions/portfolioInteraction.d.ts +39 -0
  50. package/dist/types/interactions/portfolioInteraction.d.ts.map +1 -0
  51. package/dist/types/mt535parser.d.ts +44 -0
  52. package/dist/types/mt535parser.d.ts.map +1 -0
  53. package/dist/types/partedSegment.d.ts +1 -0
  54. package/dist/types/partedSegment.d.ts.map +1 -1
  55. package/dist/types/segment.d.ts.map +1 -1
  56. package/dist/types/segmentDefinition.d.ts +1 -0
  57. package/dist/types/segmentDefinition.d.ts.map +1 -1
  58. package/dist/types/segments/HIBPA.d.ts +1 -0
  59. package/dist/types/segments/HIBPA.d.ts.map +1 -1
  60. package/dist/types/segments/HIKAZ.d.ts +1 -0
  61. package/dist/types/segments/HIKAZ.d.ts.map +1 -1
  62. package/dist/types/segments/HIKAZS.d.ts.map +1 -1
  63. package/dist/types/segments/HIKIM.d.ts +1 -0
  64. package/dist/types/segments/HIKIM.d.ts.map +1 -1
  65. package/dist/types/segments/HIKOM.d.ts +1 -0
  66. package/dist/types/segments/HIKOM.d.ts.map +1 -1
  67. package/dist/types/segments/HIPINS.d.ts.map +1 -1
  68. package/dist/types/segments/HIRMG.d.ts +1 -0
  69. package/dist/types/segments/HIRMG.d.ts.map +1 -1
  70. package/dist/types/segments/HIRMS.d.ts +1 -0
  71. package/dist/types/segments/HIRMS.d.ts.map +1 -1
  72. package/dist/types/segments/HISAL.d.ts +1 -0
  73. package/dist/types/segments/HISAL.d.ts.map +1 -1
  74. package/dist/types/segments/HISYN.d.ts +1 -0
  75. package/dist/types/segments/HISYN.d.ts.map +1 -1
  76. package/dist/types/segments/HITAB.d.ts +1 -0
  77. package/dist/types/segments/HITAB.d.ts.map +1 -1
  78. package/dist/types/segments/HITAN.d.ts +1 -0
  79. package/dist/types/segments/HITAN.d.ts.map +1 -1
  80. package/dist/types/segments/HITANS.d.ts.map +1 -1
  81. package/dist/types/segments/HIUPA.d.ts +1 -0
  82. package/dist/types/segments/HIUPA.d.ts.map +1 -1
  83. package/dist/types/segments/HIUPD.d.ts +1 -0
  84. package/dist/types/segments/HIUPD.d.ts.map +1 -1
  85. package/dist/types/segments/HIWPD.d.ts +22 -0
  86. package/dist/types/segments/HIWPD.d.ts.map +1 -0
  87. package/dist/types/segments/HKEND.d.ts +1 -0
  88. package/dist/types/segments/HKEND.d.ts.map +1 -1
  89. package/dist/types/segments/HKIDN.d.ts +1 -0
  90. package/dist/types/segments/HKIDN.d.ts.map +1 -1
  91. package/dist/types/segments/HKKAZ.d.ts +1 -0
  92. package/dist/types/segments/HKKAZ.d.ts.map +1 -1
  93. package/dist/types/segments/HKSAL.d.ts +1 -0
  94. package/dist/types/segments/HKSAL.d.ts.map +1 -1
  95. package/dist/types/segments/HKSYN.d.ts +1 -0
  96. package/dist/types/segments/HKSYN.d.ts.map +1 -1
  97. package/dist/types/segments/HKTAB.d.ts +1 -0
  98. package/dist/types/segments/HKTAB.d.ts.map +1 -1
  99. package/dist/types/segments/HKTAN.d.ts +1 -0
  100. package/dist/types/segments/HKTAN.d.ts.map +1 -1
  101. package/dist/types/segments/HKVVB.d.ts +1 -0
  102. package/dist/types/segments/HKVVB.d.ts.map +1 -1
  103. package/dist/types/segments/HKWPD.d.ts +43 -0
  104. package/dist/types/segments/HKWPD.d.ts.map +1 -0
  105. package/dist/types/segments/HNHBK.d.ts +1 -0
  106. package/dist/types/segments/HNHBK.d.ts.map +1 -1
  107. package/dist/types/segments/HNHBS.d.ts +1 -0
  108. package/dist/types/segments/HNHBS.d.ts.map +1 -1
  109. package/dist/types/segments/HNSHA.d.ts +1 -0
  110. package/dist/types/segments/HNSHA.d.ts.map +1 -1
  111. package/dist/types/segments/HNSHK.d.ts +1 -0
  112. package/dist/types/segments/HNSHK.d.ts.map +1 -1
  113. package/dist/types/segments/HNVSD.d.ts +1 -0
  114. package/dist/types/segments/HNVSD.d.ts.map +1 -1
  115. package/dist/types/segments/HNVSK.d.ts +1 -0
  116. package/dist/types/segments/HNVSK.d.ts.map +1 -1
  117. package/dist/types/segments/businessTransactionParameter.d.ts +1 -1
  118. package/dist/types/segments/businessTransactionParameter.d.ts.map +1 -1
  119. package/dist/types/segments/registry.d.ts.map +1 -1
  120. package/dist/types/tests/HIWPD.test.d.ts +2 -0
  121. package/dist/types/tests/HIWPD.test.d.ts.map +1 -0
  122. package/dist/types/tests/HKWPD.test.d.ts +2 -0
  123. package/dist/types/tests/HKWPD.test.d.ts.map +1 -0
  124. package/dist/types/tests/mt535parser.test.d.ts +2 -0
  125. package/dist/types/tests/mt535parser.test.d.ts.map +1 -0
  126. package/dist/types/unknownSegment.d.ts +1 -0
  127. package/dist/types/unknownSegment.d.ts.map +1 -1
  128. package/dist/unknownSegment.js +4 -1
  129. package/package.json +1 -1
@@ -4,8 +4,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
4
4
  * Synchonisation
5
5
  */
6
6
  export class HKSYN extends SegmentDefinition {
7
- static Id = this.name;
7
+ static Id = 'HKSYN';
8
8
  static Version = 3;
9
+ constructor() {
10
+ super(HKSYN.Id);
11
+ }
9
12
  version = HKSYN.Version;
10
13
  elements = [new Numeric('mode', 1, 1, 1)];
11
14
  }
@@ -5,8 +5,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
5
5
  * Request TAN media
6
6
  */
7
7
  export class HKTAB extends SegmentDefinition {
8
- static Id = this.name;
8
+ static Id = 'HKTAB';
9
9
  static Version = 5;
10
+ constructor() {
11
+ super(HKTAB.Id);
12
+ }
10
13
  version = HKTAB.Version;
11
14
  elements = [new Numeric('mediaType', 1, 1, 1), new AlphaNumeric('mediaClass', 1, 1, 1)];
12
15
  }
@@ -9,8 +9,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
9
9
  * Two-Step TAN
10
10
  */
11
11
  export class HKTAN extends SegmentDefinition {
12
- static Id = this.name;
12
+ static Id = 'HKTAN';
13
13
  static Version = 7;
14
+ constructor() {
15
+ super(HKTAN.Id);
16
+ }
14
17
  version = HKTAN.Version;
15
18
  elements = [
16
19
  new AlphaNumeric('tanProcess', 1, 1, 1),
@@ -5,8 +5,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
5
5
  * Identification
6
6
  */
7
7
  export class HKVVB extends SegmentDefinition {
8
- static Id = this.name;
8
+ static Id = 'HKVVB';
9
9
  static Version = 3;
10
+ constructor() {
11
+ super(HKVVB.Id);
12
+ }
10
13
  version = HKVVB.Version;
11
14
  elements = [
12
15
  new Numeric('bpdVersion', 1, 1, 3),
@@ -0,0 +1,23 @@
1
+ import { AccountGroup } from '../dataGroups/Account.js';
2
+ import { AlphaNumeric } from '../dataElements/AlphaNumeric.js';
3
+ import { Numeric } from '../dataElements/Numeric.js';
4
+ import { SegmentDefinition } from '../segmentDefinition.js';
5
+ /**
6
+ * Geschäftsvorfälle: C.4.3.1 Depotaufstellung
7
+ * Version: 6
8
+ */
9
+ export class HKWPD extends SegmentDefinition {
10
+ static Id = 'HKWPD';
11
+ static Version = 6;
12
+ constructor() {
13
+ super(HKWPD.Id);
14
+ }
15
+ version = HKWPD.Version;
16
+ elements = [
17
+ new AccountGroup('depot', 1, 1),
18
+ new AlphaNumeric('currency', 0, 1, 3),
19
+ new AlphaNumeric('priceQuality', 0, 1, 1),
20
+ new Numeric('maxEntries', 0, 1, 4),
21
+ new AlphaNumeric('paginationMarker', 0, 1, 35),
22
+ ];
23
+ }
@@ -7,8 +7,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
7
7
  * Message header
8
8
  */
9
9
  export class HNHBK extends SegmentDefinition {
10
- static Id = this.name;
10
+ static Id = 'HNHBK';
11
11
  static Version = 3;
12
+ constructor() {
13
+ super(HNHBK.Id);
14
+ }
12
15
  version = HNHBK.Version;
13
16
  elements = [
14
17
  new Digits('messageLength', 1, 1, 12),
@@ -4,8 +4,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
4
4
  * Message end
5
5
  */
6
6
  export class HNHBS extends SegmentDefinition {
7
- static Id = this.name;
7
+ static Id = 'HNHBS';
8
8
  static Version = 1;
9
+ constructor() {
10
+ super(HNHBS.Id);
11
+ }
9
12
  version = HNHBS.Version;
10
13
  elements = [new Numeric('msgNr', 1, 1, 4)];
11
14
  }
@@ -6,8 +6,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
6
6
  * Signature end
7
7
  */
8
8
  export class HNSHA extends SegmentDefinition {
9
- static Id = this.name;
9
+ static Id = 'HNSHA';
10
10
  static Version = 2;
11
+ constructor() {
12
+ super(HNSHA.Id);
13
+ }
11
14
  version = HNSHA.Version;
12
15
  elements = [
13
16
  new AlphaNumeric('secControlRef', 1, 1, 14),
@@ -12,8 +12,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
12
12
  * Signature Header
13
13
  */
14
14
  export class HNSHK extends SegmentDefinition {
15
- static Id = this.name;
15
+ static Id = 'HNSHK';
16
16
  static Version = 4;
17
+ constructor() {
18
+ super(HNSHK.Id);
19
+ }
17
20
  version = HNSHK.Version;
18
21
  elements = [
19
22
  new DataGroup('secProfile', [new AlphaNumeric('secMethod', 1, 1, 3), new Numeric('secVersion', 1, 1, 3)], 1, 1),
@@ -4,8 +4,11 @@ import { SegmentDefinition } from '../segmentDefinition.js';
4
4
  * Encrypted data
5
5
  */
6
6
  export class HNVSD extends SegmentDefinition {
7
- static Id = this.name;
7
+ static Id = 'HNVSD';
8
8
  static Version = 1;
9
- version = HNVSD.Version;
9
+ constructor() {
10
+ super(HNVSD.Id);
11
+ }
12
+ version = 1;
10
13
  elements = [new Binary('encryptedData', 1, 1)];
11
14
  }
@@ -11,9 +11,12 @@ import { SegmentDefinition } from '../segmentDefinition.js';
11
11
  * Encryption body
12
12
  */
13
13
  export class HNVSK extends SegmentDefinition {
14
- static Id = this.name;
14
+ static Id = 'HNVSK';
15
15
  static Version = 3;
16
- version = HNVSK.Version;
16
+ constructor() {
17
+ super(HNVSK.Id);
18
+ }
19
+ version = 3;
17
20
  elements = [
18
21
  new DataGroup('secProfile', [new AlphaNumeric('secMethod', 1, 1, 3), new Numeric('secVersion', 1, 1, 3)], 1, 1),
19
22
  new Numeric('secFunc', 1, 1, 3),
@@ -7,8 +7,8 @@ import { SegmentDefinition } from '../segmentDefinition.js';
7
7
  export class BusinessTransactionParameter extends SegmentDefinition {
8
8
  paramElements;
9
9
  elements;
10
- constructor(paramElements, secClassMinVersion = 1) {
11
- super();
10
+ constructor(id, paramElements, secClassMinVersion = 1) {
11
+ super(id);
12
12
  this.paramElements = paramElements;
13
13
  this.elements = [
14
14
  new Numeric('maxTrans', 1, 1, 3),
@@ -27,6 +27,8 @@ import { HKKAZ } from './HKKAZ.js';
27
27
  import { HIKAZ } from './HIKAZ.js';
28
28
  import { HIKAZS } from './HIKAZS.js';
29
29
  import { HITAB } from './HITAB.js';
30
+ import { HKWPD } from './HKWPD.js';
31
+ import { HIWPD } from './HIWPD.js';
30
32
  import { UNKNOW } from '../unknownSegment.js';
31
33
  import { PARTED } from '../partedSegment.js';
32
34
  const registry = new Map();
@@ -60,6 +62,8 @@ export function registerSegments() {
60
62
  registerSegmentDefinition(new HKKAZ());
61
63
  registerSegmentDefinition(new HIKAZ());
62
64
  registerSegmentDefinition(new HIKAZS());
65
+ registerSegmentDefinition(new HKWPD());
66
+ registerSegmentDefinition(new HIWPD());
63
67
  registerSegmentDefinition(new UNKNOW());
64
68
  registerSegmentDefinition(new PARTED());
65
69
  }
@@ -0,0 +1,25 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { registerSegments } from '../segments/registry.js';
3
+ import { decode, encode } from '../segment.js';
4
+ registerSegments();
5
+ describe('HIWPD', () => {
6
+ it('decode and encode roundtrip matches', () => {
7
+ const portfolioData = 'U29tZSBTd2lmdCBNVCA1MzUvNTcxIGRhdGE=';
8
+ const text = `HIWPD:1:6+${portfolioData}'`;
9
+ const segment = decode(text);
10
+ expect(segment.portfolioStatement).toBe(portfolioData);
11
+ const expectedEncodedText = `HIWPD:1:6+@${portfolioData.length}@${portfolioData}'`;
12
+ expect(encode(segment)).toBe(expectedEncodedText);
13
+ });
14
+ it('handles empty portfolio data', () => {
15
+ const text = "HIWPD:1:6+@@'";
16
+ const segment = decode(text);
17
+ expect(segment.portfolioStatement).toBe('');
18
+ });
19
+ it('handles large portfolio data', () => {
20
+ const largeData = 'A'.repeat(1000);
21
+ const text = `HIWPD:1:6+${largeData}'`;
22
+ const segment = decode(text);
23
+ expect(segment.portfolioStatement).toBe(largeData);
24
+ });
25
+ });
@@ -0,0 +1,38 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { registerSegments } from '../segments/registry.js';
3
+ import { decode, encode } from '../segment.js';
4
+ registerSegments();
5
+ describe('HKWPD', () => {
6
+ it('decode and encode roundtrip matches with all fields', () => {
7
+ const text = "HKWPD:2:6+12345678901234567890:EUR:276:280+EUR+1+100+NextMarkerABC123'";
8
+ const segment = decode(text);
9
+ expect(segment.depot.accountNumber).toBe('12345678901234567890');
10
+ expect(segment.depot.subAccountId).toBe('EUR');
11
+ expect(segment.depot.bank.country).toBe(276);
12
+ expect(segment.depot.bank.bankId).toBe('280');
13
+ expect(segment.currency).toBe('EUR');
14
+ expect(segment.priceQuality).toBe('1');
15
+ expect(segment.maxEntries).toBe(100);
16
+ expect(segment.paginationMarker).toBe('NextMarkerABC123');
17
+ expect(encode(segment)).toBe(text);
18
+ });
19
+ it('decode and encode roundtrip matches with minimal fields', () => {
20
+ const text = "HKWPD:1:6+9876543210::276:280'";
21
+ const segment = decode(text);
22
+ expect(segment.depot.accountNumber).toBe('9876543210');
23
+ expect(segment.depot.subAccountId).toBeUndefined();
24
+ expect(segment.depot.bank.country).toBe(276);
25
+ expect(segment.depot.bank.bankId).toBe('280');
26
+ expect(segment.currency).toBeUndefined();
27
+ expect(segment.priceQuality).toBeUndefined();
28
+ expect(segment.maxEntries).toBeUndefined();
29
+ expect(segment.paginationMarker).toBeUndefined();
30
+ const encoded = encode(segment);
31
+ expect(encoded).toBe("HKWPD:1:6+9876543210::276:280'");
32
+ const decodedAgain = decode(encoded);
33
+ expect(decodedAgain.depot.accountNumber).toBe('9876543210');
34
+ expect(decodedAgain.depot.subAccountId).toBeUndefined();
35
+ expect(decodedAgain.depot.bank.country).toBe(276);
36
+ expect(decodedAgain.depot.bank.bankId).toBe('280');
37
+ });
38
+ });
@@ -0,0 +1,157 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { Mt535Parser } from '../mt535parser.js';
3
+ describe('Mt535Parser', () => {
4
+ it('parses a MT535 input string with depot value and multiple holdings', () => {
5
+ const input = ':16R:ADDINFO\r\n' +
6
+ 'EUR125000,50\r\n' +
7
+ ':16S:ADDINFO\r\n' +
8
+ // Holding 1 (BMW)
9
+ ':16R:FIN\r\n' +
10
+ ':35B:ISIN DE0005190003/DE/519000BAY.MOTOREN WERKE AG ST:\r\n' +
11
+ ':70E::HOLD//100STK275,30+EUR\r\n' +
12
+ ':90B::PREFIX_11_CEUR100,50:\r\n' +
13
+ ':93B::QTY/AVALBLX100,:\r\n' +
14
+ ':98A::SETT//DTE20231101:\r\n' +
15
+ ':16S:FIN\r\n' +
16
+ // Holding 2 (Apple)
17
+ ':16R:FIN\r\n' +
18
+ ':35B:ISIN US0378331005/US/037833Apple Inc. Common Stock:\r\n' +
19
+ ':70E::HOLD//50STK2150,75+USD\r\n' +
20
+ ':90A::PRIC/RATE_X85,50:\r\n' +
21
+ ':93B::QTY/AVALBLX50,:\r\n' +
22
+ ':98C::TRADTE20231101143000:\r\n' +
23
+ ':16S:FIN\r\n';
24
+ const parser = new Mt535Parser(input);
25
+ const statement = parser.parse();
26
+ // Test depot value
27
+ expect(statement.totalValue).toBe(125000.5);
28
+ expect(statement.holdings).toHaveLength(2);
29
+ // Test first holding (BMW)
30
+ const bmwHolding = statement.holdings[0];
31
+ expect(bmwHolding.isin).toBe('DE0005190003');
32
+ expect(bmwHolding.wkn).toBe('519000');
33
+ expect(bmwHolding.name).toBe('BAY.MOTOREN WERKE AG ST');
34
+ expect(bmwHolding.acquisitionPrice).toBe(75.3);
35
+ expect(bmwHolding.price).toBe(100.5);
36
+ expect(bmwHolding.currency).toBe('EUR');
37
+ expect(bmwHolding.amount).toBe(100);
38
+ expect(bmwHolding.value).toBe(10050);
39
+ expect(bmwHolding.date).toEqual(new Date(2023, 10, 1, 0, 0, 0));
40
+ // Test second holding (Apple)
41
+ const appleHolding = statement.holdings[1];
42
+ expect(appleHolding.isin).toBe('US0378331005');
43
+ expect(appleHolding.wkn).toBe('037833');
44
+ expect(appleHolding.name).toBe('Apple Inc. Common Stock');
45
+ expect(appleHolding.acquisitionPrice).toBe(150.75);
46
+ expect(appleHolding.price).toBe(0.855);
47
+ expect(appleHolding.currency).toBe('%');
48
+ expect(appleHolding.amount).toBe(50);
49
+ expect(appleHolding.value).toBe(42.75);
50
+ expect(appleHolding.date).toEqual(new Date(2023, 10, 1, 14, 30, 0));
51
+ });
52
+ it('parses MT535 with @@ dividers and different data points', () => {
53
+ const input = ':16R:ADDINFO@@' +
54
+ 'EUR50000,25@@' +
55
+ ':16S:ADDINFO@@' +
56
+ ':16R:FIN@@' +
57
+ ':35B:ISIN DE0007164600/DE/716460SAP SE:@@' +
58
+ ':70E::HOLD//25STK2120,80+EUR@@' +
59
+ ':90B::UNKNOWNVALXEUR115,75:@@' +
60
+ ':93B::SOMESTATUS_25,:@@' +
61
+ ':98A::REGD//DTE20231215:@@' +
62
+ ':16S:FIN@@';
63
+ const parser = new Mt535Parser(input);
64
+ const statement = parser.parse();
65
+ expect(statement.totalValue).toBe(50000.25);
66
+ expect(statement.holdings).toHaveLength(1);
67
+ const holding = statement.holdings[0];
68
+ expect(holding.isin).toBe('DE0007164600');
69
+ expect(holding.wkn).toBe('716460');
70
+ expect(holding.name).toBe('SAP SE');
71
+ expect(holding.acquisitionPrice).toBe(120.8);
72
+ expect(holding.price).toBe(115.75);
73
+ expect(holding.currency).toBe('EUR');
74
+ expect(holding.amount).toBe(25);
75
+ expect(holding.value).toBe(2893.75);
76
+ expect(holding.date).toEqual(new Date(2023, 11, 15));
77
+ });
78
+ it('handles empty input', () => {
79
+ const parser = new Mt535Parser('');
80
+ const statement = parser.parse();
81
+ expect(statement.totalValue).toBeUndefined();
82
+ expect(statement.holdings).toHaveLength(0);
83
+ });
84
+ it('handles input without depot value', () => {
85
+ const input = ':16R:FIN\r\n' +
86
+ ':35B:ISIN DE0005190003/DE/519000SOME OTHER AG ST:\r\n' +
87
+ ':90B::PREFIX_11_CEUR100,50:\r\n' +
88
+ ':93B::QTY/AVALBLX100,:\r\n' +
89
+ ':98A::SETT//DTE20231101:\r\n' +
90
+ ':16S:FIN\r\n';
91
+ const parser = new Mt535Parser(input);
92
+ const statement = parser.parse();
93
+ expect(statement.totalValue).toBeUndefined();
94
+ expect(statement.holdings).toHaveLength(1);
95
+ expect(statement.holdings[0].isin).toBe('DE0005190003');
96
+ expect(statement.holdings[0].name).toBe('SOME OTHER AG ST');
97
+ expect(statement.holdings[0].price).toBe(100.5);
98
+ expect(statement.holdings[0].amount).toBe(100);
99
+ });
100
+ it('handles input without holdings', () => {
101
+ const input = ':16R:ADDINFO\r\n' + 'EUR75000,00\r\n' + ':16S:ADDINFO\r\n';
102
+ const parser = new Mt535Parser(input);
103
+ const statement = parser.parse();
104
+ expect(statement.totalValue).toBe(75000.0);
105
+ expect(statement.holdings).toHaveLength(0);
106
+ });
107
+ it('handles holding with minimal data (only security identification)', () => {
108
+ const input = ':16R:FIN\r\n' +
109
+ ':35B:ISIN FR0000120271/FR/120271AIR LIQUIDE SA: \r\n' +
110
+ ':16S:FIN\r\n';
111
+ const parser = new Mt535Parser(input);
112
+ const statement = parser.parse();
113
+ expect(statement.holdings).toHaveLength(1);
114
+ const holding = statement.holdings[0];
115
+ expect(holding.isin).toBe('FR0000120271');
116
+ expect(holding.wkn).toBe('120271');
117
+ expect(holding.name).toBe('AIR LIQUIDE SA');
118
+ expect(holding.price).toBeUndefined();
119
+ expect(holding.amount).toBeUndefined();
120
+ expect(holding.value).toBeUndefined();
121
+ expect(holding.date).toBeUndefined();
122
+ });
123
+ it('calculates value correctly for percentage currency when price is from :90A', () => {
124
+ const input = ':16R:FIN\r\n' +
125
+ ':35B:ISIN US0378331005/US/037833Apple Inc. Common Stock:\r\n' +
126
+ ':90A::PRIC/RATE_X85,50:\r\n' +
127
+ ':93B::QTY/AVALBLX100,:\r\n' +
128
+ ':16S:FIN\r\n';
129
+ const parser = new Mt535Parser(input);
130
+ const statement = parser.parse();
131
+ const holding = statement.holdings[0];
132
+ expect(holding.currency).toBe('%');
133
+ expect(holding.price).toBe(0.855);
134
+ expect(holding.amount).toBe(100);
135
+ expect(holding.value).toBe(85.5);
136
+ });
137
+ it('correctly parses date and time for :98C', () => {
138
+ const input = ':16R:FIN\r\n' +
139
+ ':35B:ISIN DE000BASF111/DE/BASF11BASF SE:\r\n' +
140
+ ':98C::QUALIF20240115093045:\r\n' +
141
+ ':16S:FIN\r\n';
142
+ const parser = new Mt535Parser(input);
143
+ const statement = parser.parse();
144
+ const holding = statement.holdings[0];
145
+ expect(holding.date).toEqual(new Date(2024, 0, 15, 9, 30, 45));
146
+ });
147
+ it('correctly parses date for :98A (time defaults to 00:00:00)', () => {
148
+ const input = ':16R:FIN\r\n' +
149
+ ':35B:ISIN DE000BAY0017/DE/BAY001BAYER AG:\r\n' +
150
+ ':98A::SETT//DTE20231005:\r\n' +
151
+ ':16S:FIN\r\n';
152
+ const parser = new Mt535Parser(input);
153
+ const statement = parser.parse();
154
+ const holding = statement.holdings[0];
155
+ expect(holding.date).toEqual(new Date(2023, 9, 5, 0, 0, 0));
156
+ });
157
+ });
@@ -1,5 +1,6 @@
1
1
  import { StatementResponse } from './interactions/statementInteraction.js';
2
2
  import { AccountBalanceResponse } from './interactions/balanceInteraction.js';
3
+ import { PortfolioResponse } from './interactions/portfolioInteraction.js';
3
4
  import { FinTSConfig } from './config.js';
4
5
  import { TanMethod } from './tanMethod.js';
5
6
  import { InitResponse } from './interactions/initDialogInteraction.js';
@@ -79,6 +80,29 @@ export declare class FinTSClient {
79
80
  * @returns an account statements response containing an array of statements
80
81
  */
81
82
  getAccountStatementsWithTan(tanReference: string, tan?: string): Promise<StatementResponse>;
83
+ /**
84
+ * Checks if the bank supports fetching portfolio information in general or for the given account number when provided
85
+ * @param accountNumber when the account number is provided, checks if the account supports fetching of portfolio information
86
+ * @returns true if the bank (and account) supports fetching portfolio information
87
+ */
88
+ canGetPortfolio(accountNumber?: string): boolean;
89
+ /**
90
+ * Fetches the portfolio information for the given depot account number
91
+ * @param accountNumber - the depot account number to fetch the portfolio for, must be an account available in the config.bankingInformation.UPD.accounts
92
+ * @param currency - optional currency filter for the portfolio statement
93
+ * @param priceQuality - optional price quality filter ('1' for real-time, '2' for delayed)
94
+ * @param maxEntries - optional maximum number of entries to retrieve
95
+ * @returns a portfolio response containing holdings and total value
96
+ */
97
+ getPortfolio(accountNumber: string, currency?: string, priceQuality?: '1' | '2', maxEntries?: number): Promise<PortfolioResponse>;
98
+ /**
99
+ * Continues the portfolio fetching when a TAN is required
100
+ * @param tanReference The TAN reference provided in the first call's response
101
+
102
+ * @param tan The TAN entered by the user, can be omitted if a decoupled TAN method is used
103
+ * @returns a portfolio response containing holdings and total value
104
+ */
105
+ getPortfolioWithTan(tanReference: string, tan?: string): Promise<PortfolioResponse>;
82
106
  private startCustomerOrderInteraction;
83
107
  private continueCustomerInteractionWithTan;
84
108
  private initDialog;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAsB,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAyB,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,WAAW,mBAAoB,SAAQ,YAAY;CAAG;AAE5D;;GAEG;AACH,qBAAa,WAAW;IAOJ,MAAM,EAAE,WAAW;IANtC,OAAO,CAAC,wBAAwB,CAA0C;IAE1E;;;OAGG;gBACgB,MAAM,EAAE,WAAW;IAUtC;;;;OAIG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAK/C;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwBjD;;;;;OAKG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1F;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMrD;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI/E;;;;;OAKG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInG;;;;OAIG;IACH,uBAAuB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMxD;;;;;;OAMG;IACG,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIrG;;;;;OAKG;IACG,2BAA2B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAInF,6BAA6B;YAqB7B,kCAAkC;YA0ClC,UAAU;CAcxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAsB,MAAM,sCAAsC,CAAC;AAClG,OAAO,EAAE,iBAAiB,EAAwB,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAI3C,OAAO,EAAyB,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAE9F,MAAM,WAAW,mBAAoB,SAAQ,YAAY;CAAG;AAE5D;;GAEG;AACH,qBAAa,WAAW;IAOJ,MAAM,EAAE,WAAW;IANtC,OAAO,CAAC,wBAAwB,CAA0C;IAE1E;;;OAGG;gBACgB,MAAM,EAAE,WAAW;IAUtC;;;;OAIG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAK/C;;;OAGG;IACH,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI1C;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwBjD;;;;;OAKG;IACG,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1F;;;;OAIG;IACH,oBAAoB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMrD;;;;OAIG;IACG,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI/E;;;;;OAKG;IACG,wBAAwB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAInG;;;;OAIG;IACH,uBAAuB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMxD;;;;;;OAMG;IACG,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIrG;;;;;OAKG;IACG,2BAA2B,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjG;;;;OAIG;IACH,eAAe,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;IAMhD;;;;;;;OAOG;IACG,YAAY,CACjB,aAAa,EAAE,MAAM,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,GAAG,GAAG,GAAG,EACxB,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;;;;;OAMG;IACG,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAI3E,6BAA6B;YAqB7B,kCAAkC;YA0ClC,UAAU;CAcxB"}
@@ -3,6 +3,7 @@ export * from './config.js';
3
3
  export { ClientResponse } from './interactions/customerInteraction.js';
4
4
  export { AccountBalanceResponse } from './interactions/balanceInteraction.js';
5
5
  export { StatementResponse } from './interactions/statementInteraction.js';
6
+ export { PortfolioResponse } from './interactions/portfolioInteraction.js';
6
7
  export * from './segment.js';
7
8
  export * from './message.js';
8
9
  export * from './dialog.js';
@@ -14,4 +15,5 @@ export * from './accountBalance.js';
14
15
  export * from './bpd.js';
15
16
  export * from './upd.js';
16
17
  export * from './mt940parser.js';
18
+ export * from './mt535parser.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { ClientResponse, CustomerOrderInteraction } from './customerInteraction.js';
2
+ import { FinTSConfig } from '../config.js';
3
+ import { Message } from '../message.js';
4
+ import { Segment } from '../segment.js';
5
+ import { StatementOfHoldings, Holding } from '../mt535parser.js';
6
+ /**
7
+ * Represents a single holding within a stock portfolio.
8
+ * This is an alias for the Holding interface from the MT535 parser.
9
+ */
10
+ export type PortfolioHolding = Holding;
11
+ /**
12
+ * Represents the structured portfolio data parsed from an MT535 message.
13
+ * This is an alias for the StatementOfHoldings interface from the MT535 parser.
14
+ */
15
+ export type ParsedPortfolioStatement = StatementOfHoldings;
16
+ export interface PortfolioResponse extends ClientResponse {
17
+ /**
18
+ * The parsed portfolio statement containing holdings and total value
19
+ */
20
+ portfolioStatement?: ParsedPortfolioStatement;
21
+ /**
22
+ * Raw MT535 data if parsing fails
23
+ */
24
+ rawMT535Data?: string;
25
+ }
26
+ /**
27
+ * Interaction for requesting and parsing stock portfolio information (HKWPD/HIWPD)
28
+ */
29
+ export declare class PortfolioInteraction extends CustomerOrderInteraction {
30
+ accountNumber: string;
31
+ private currency?;
32
+ private priceQuality?;
33
+ private maxEntries?;
34
+ private paginationMarker?;
35
+ constructor(accountNumber: string, currency?: string | undefined, priceQuality?: "1" | "2" | undefined, maxEntries?: number | undefined, paginationMarker?: string | undefined);
36
+ createSegments(config: FinTSConfig): Segment[];
37
+ handleResponse(response: Message, clientResponse: PortfolioResponse): void;
38
+ }
39
+ //# sourceMappingURL=portfolioInteraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portfolioInteraction.d.ts","sourceRoot":"","sources":["../../../src/interactions/portfolioInteraction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAe,mBAAmB,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE9E;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEvC;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAE3D,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD;;OAEG;IACH,kBAAkB,CAAC,EAAE,wBAAwB,CAAC;IAC9C;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAEvD,aAAa,EAAE,MAAM;IAC5B,OAAO,CAAC,QAAQ,CAAC;IACjB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,UAAU,CAAC;IACnB,OAAO,CAAC,gBAAgB,CAAC;gBAJlB,aAAa,EAAE,MAAM,EACpB,QAAQ,CAAC,oBAAQ,EACjB,YAAY,CAAC,uBAAW,EACxB,UAAU,CAAC,oBAAQ,EACnB,gBAAgB,CAAC,oBAAQ;IAKnC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,EAAE;IA8B9C,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,iBAAiB,GAAG,IAAI;CAe3E"}
@@ -0,0 +1,44 @@
1
+ export interface StatementOfHoldings {
2
+ totalValue?: number;
3
+ currency?: string;
4
+ holdings: Holding[];
5
+ }
6
+ export interface Holding {
7
+ isin?: string;
8
+ wkn?: string;
9
+ name?: string;
10
+ amount?: number;
11
+ price?: number;
12
+ currency?: string;
13
+ value?: number;
14
+ acquisitionPrice?: number;
15
+ date?: Date;
16
+ }
17
+ export declare enum TokenType535 {
18
+ DepotValueBlock = "DepotValueBlock",
19
+ DepotValueCurrency = "DepotValueCurrency",
20
+ FinBlock = "FinBlock",
21
+ SecurityIdentification = "SecurityIdentification",
22
+ AcquisitionPrice = "AcquisitionPrice",
23
+ PriceBlock = "PriceBlock",
24
+ AmountBlock = "AmountBlock",
25
+ DateTimeBlock = "DateTimeBlock",
26
+ DateString = "DateString",
27
+ TimeString = "TimeString"
28
+ }
29
+ export declare class Mt535Parser {
30
+ private rawData;
31
+ private cleanedRawData;
32
+ constructor(rawData: string);
33
+ parse(): StatementOfHoldings;
34
+ private parseDepotValue;
35
+ private parseHoldings;
36
+ private parseHolding;
37
+ private parseSecurityIdentification;
38
+ private parseAcquisitionPrice;
39
+ private parsePrice;
40
+ private parseAmount;
41
+ private parseDateTime;
42
+ private parseDate;
43
+ }
44
+ //# sourceMappingURL=mt535parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mt535parser.d.ts","sourceRoot":"","sources":["../../src/mt535parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,oBAAY,YAAY;IACtB,eAAe,oBAAoB;IACnC,kBAAkB,uBAAuB;IACzC,QAAQ,aAAa;IACrB,sBAAsB,2BAA2B;IACjD,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,UAAU,eAAe;CAC1B;AAgBD,qBAAa,WAAW;IAGV,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,cAAc,CAAS;gBAEX,OAAO,EAAE,MAAM;IAWnC,KAAK,IAAI,mBAAmB;IAc5B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,2BAA2B;IAyBnC,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,UAAU;IA8BlB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,SAAS;CAgBlB"}
@@ -7,6 +7,7 @@ export type PartedSegment = Segment & {
7
7
  };
8
8
  export declare class PARTED extends SegmentDefinition {
9
9
  static Id: string;
10
+ constructor();
10
11
  version: number;
11
12
  elements: Text[];
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"partedSegment.d.ts","sourceRoot":"","sources":["../../src/partedSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,qBAAa,MAAO,SAAQ,iBAAiB;IAC3C,MAAM,CAAC,EAAE,SAAa;IACtB,OAAO,SAAK;IACZ,QAAQ,SAA+B;CACxC;AAED,eAAO,MAAM,QAAQ,QAAY,CAAC"}
1
+ {"version":3,"file":"partedSegment.d.ts","sourceRoot":"","sources":["../../src/partedSegment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,MAAO,SAAQ,iBAAiB;IAC5C,MAAM,CAAC,EAAE,SAAY;;IAIrB,OAAO,SAAK;IACZ,QAAQ,SAA+B;CACvC;AAED,eAAO,MAAM,QAAQ,QAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../src/segment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA6B5C;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAQ5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CA6BxD"}
1
+ {"version":3,"file":"segment.d.ts","sourceRoot":"","sources":["../../src/segment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA6B5C;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAQ5C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAyBxD"}
@@ -3,6 +3,7 @@ import { Segment } from './segment.js';
3
3
  import { SegmentHeaderGroup } from './segmentHeader.js';
4
4
  export declare abstract class SegmentDefinition {
5
5
  id: string;
6
+ constructor(id: string);
6
7
  abstract version: number;
7
8
  static header: SegmentHeaderGroup;
8
9
  abstract elements: DataElement[];
@@ -1 +1 @@
1
- {"version":3,"file":"segmentDefinition.d.ts","sourceRoot":"","sources":["../../src/segmentDefinition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,8BAAsB,iBAAiB;IACtC,EAAE,SAAyB;IAE3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,MAAM,qBAA4B;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAEjC,qBAAqB,CAAC,OAAO,EAAE,MAAM;IAMrC,MAAM,CAAC,IAAI,EAAE,OAAO;CAKpB"}
1
+ {"version":3,"file":"segmentDefinition.d.ts","sourceRoot":"","sources":["../../src/segmentDefinition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,8BAAsB,iBAAiB;IACtC,EAAE,EAAE,MAAM,CAAC;gBAEC,EAAE,EAAE,MAAM;IAItB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,MAAM,qBAA4B;IACzC,QAAQ,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAEjC,qBAAqB,CAAC,OAAO,EAAE,MAAM;IAMrC,MAAM,CAAC,IAAI,EAAE,OAAO;CAKpB"}
@@ -22,6 +22,7 @@ export type HIBPASegment = Segment & {
22
22
  export declare class HIBPA extends SegmentDefinition {
23
23
  static Id: string;
24
24
  version: number;
25
+ constructor();
25
26
  elements: (DataGroup | AlphaNumeric | Numeric)[];
26
27
  }
27
28
  //# sourceMappingURL=HIBPA.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HIBPA.d.ts","sourceRoot":"","sources":["../../../src/segments/HIBPA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,qBAAa,KAAM,SAAQ,iBAAiB;IAC1C,MAAM,CAAC,EAAE,SAAa;IACtB,OAAO,SAAK;IACZ,QAAQ,yCAUN;CACH"}
1
+ {"version":3,"file":"HIBPA.d.ts","sourceRoot":"","sources":["../../../src/segments/HIBPA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGhD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,QAAQ,EAAE,CAAC;IAC/B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,qBAAa,KAAM,SAAQ,iBAAiB;IAC3C,MAAM,CAAC,EAAE,SAAW;IACpB,OAAO,SAAK;;IAIZ,QAAQ,yCAUN;CACF"}
@@ -11,6 +11,7 @@ export type HIKAZSegment = Segment & {
11
11
  export declare class HIKAZ extends SegmentDefinition {
12
12
  static Id: string;
13
13
  version: number;
14
+ constructor();
14
15
  elements: Binary[];
15
16
  }
16
17
  //# sourceMappingURL=HIKAZ.d.ts.map