@fintekkers/ledger-models 0.3.1 → 0.4.1

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 (82) hide show
  1. package/node/fintekkers/models/security/security_pb.d.ts +0 -80
  2. package/node/fintekkers/models/security/security_pb.js +1 -723
  3. package/node/fintekkers/models/security/security_pb.test.js +15 -15
  4. package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
  5. package/node/fintekkers/models/security/security_pb.test.ts +17 -18
  6. package/node/wrappers/models/price/Price.cash.test.js +1 -1
  7. package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
  8. package/node/wrappers/models/price/Price.cash.test.ts +2 -2
  9. package/node/wrappers/models/security/BondSecurity.d.ts +41 -3
  10. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.d.ts +1 -0
  11. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +75 -0
  12. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -0
  13. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +95 -0
  14. package/node/wrappers/models/security/BondSecurity.js +57 -9
  15. package/node/wrappers/models/security/BondSecurity.js.map +1 -1
  16. package/node/wrappers/models/security/BondSecurity.priceScale.test.js +5 -3
  17. package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
  18. package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +7 -5
  19. package/node/wrappers/models/security/BondSecurity.test.js +28 -20
  20. package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
  21. package/node/wrappers/models/security/BondSecurity.test.ts +29 -21
  22. package/node/wrappers/models/security/BondSecurity.ts +72 -10
  23. package/node/wrappers/models/security/FloatingRateNote.d.ts +30 -0
  24. package/node/wrappers/models/security/FloatingRateNote.js +80 -0
  25. package/node/wrappers/models/security/FloatingRateNote.js.map +1 -0
  26. package/node/wrappers/models/security/FloatingRateNote.ts +67 -0
  27. package/node/wrappers/models/security/IndexSecurity.d.ts +16 -0
  28. package/node/wrappers/models/security/IndexSecurity.js +26 -0
  29. package/node/wrappers/models/security/IndexSecurity.js.map +1 -0
  30. package/node/wrappers/models/security/IndexSecurity.test.d.ts +1 -0
  31. package/node/wrappers/models/security/IndexSecurity.test.js +60 -0
  32. package/node/wrappers/models/security/IndexSecurity.test.js.map +1 -0
  33. package/node/wrappers/models/security/IndexSecurity.test.ts +60 -0
  34. package/node/wrappers/models/security/IndexSecurity.ts +24 -0
  35. package/node/wrappers/models/security/Issuance.d.ts +35 -0
  36. package/node/wrappers/models/security/Issuance.js +64 -0
  37. package/node/wrappers/models/security/Issuance.js.map +1 -0
  38. package/node/wrappers/models/security/Issuance.test.d.ts +1 -0
  39. package/node/wrappers/models/security/Issuance.test.js +55 -0
  40. package/node/wrappers/models/security/Issuance.test.js.map +1 -0
  41. package/node/wrappers/models/security/Issuance.test.ts +52 -0
  42. package/node/wrappers/models/security/Issuance.ts +74 -0
  43. package/node/wrappers/models/security/TIPSBond.d.ts +30 -0
  44. package/node/wrappers/models/security/TIPSBond.js +83 -0
  45. package/node/wrappers/models/security/TIPSBond.js.map +1 -0
  46. package/node/wrappers/models/security/TIPSBond.ts +70 -0
  47. package/node/wrappers/models/security/security-roundtrip.test.js +77 -61
  48. package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
  49. package/node/wrappers/models/security/security-roundtrip.test.ts +78 -62
  50. package/node/wrappers/models/security/security.d.ts +21 -6
  51. package/node/wrappers/models/security/security.identifiers.test.d.ts +1 -0
  52. package/node/wrappers/models/security/security.identifiers.test.js +67 -0
  53. package/node/wrappers/models/security/security.identifiers.test.js.map +1 -0
  54. package/node/wrappers/models/security/security.identifiers.test.ts +67 -0
  55. package/node/wrappers/models/security/security.js +72 -29
  56. package/node/wrappers/models/security/security.js.map +1 -1
  57. package/node/wrappers/models/security/security.test.js +16 -12
  58. package/node/wrappers/models/security/security.test.js.map +1 -1
  59. package/node/wrappers/models/security/security.test.ts +17 -15
  60. package/node/wrappers/models/security/security.ts +75 -29
  61. package/node/wrappers/models/transaction/transaction.derived.test.js +8 -6
  62. package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
  63. package/node/wrappers/models/transaction/transaction.derived.test.ts +9 -7
  64. package/node/wrappers/models/transaction/transaction.js +4 -2
  65. package/node/wrappers/models/transaction/transaction.js.map +1 -1
  66. package/node/wrappers/models/transaction/transaction.ts +4 -2
  67. package/node/wrappers/models/transaction/transaction_constructor.test.js +8 -6
  68. package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
  69. package/node/wrappers/models/transaction/transaction_constructor.test.ts +9 -7
  70. package/node/wrappers/services/searchWithSecurities.test.js +2 -2
  71. package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
  72. package/node/wrappers/services/searchWithSecurities.test.ts +2 -2
  73. package/node/wrappers/services/security-service/security.maturityLadder.test.js +5 -3
  74. package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
  75. package/node/wrappers/services/security-service/security.maturityLadder.test.ts +5 -3
  76. package/node/wrappers/services/security-service/security.test.js +10 -8
  77. package/node/wrappers/services/security-service/security.test.js.map +1 -1
  78. package/node/wrappers/services/security-service/security.test.ts +12 -9
  79. package/node/wrappers/util/link-resolver.test.js +1 -1
  80. package/node/wrappers/util/link-resolver.test.js.map +1 -1
  81. package/node/wrappers/util/link-resolver.test.ts +1 -1
  82. package/package.json +1 -1
@@ -40,15 +40,17 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
40
40
  original.setAssetClass('Fixed Income');
41
41
  original.setIssuerName('US Treasury');
42
42
  original.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
43
- original.setIdentifier(makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, '912828ZT0'));
43
+ original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, '912828ZT0')]);
44
44
  original.setDescription('UST 5% 2030');
45
- original.setCouponRate(makeDecimal('5.0'));
46
- original.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
47
- original.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
48
- original.setFaceValue(makeDecimal('1000'));
49
- original.setIssueDate(makeDate(2020, 1, 15));
50
- original.setDatedDate(makeDate(2020, 1, 15));
51
- original.setMaturityDate(makeDate(2030, 1, 15));
45
+ const bond = new security_pb_2.BondDetailsProto();
46
+ bond.setCouponRate(makeDecimal('5.0'));
47
+ bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
48
+ bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
49
+ bond.setFaceValue(makeDecimal('1000'));
50
+ bond.setIssueDate(makeDate(2020, 1, 15));
51
+ bond.setDatedDate(makeDate(2020, 1, 15));
52
+ bond.setMaturityDate(makeDate(2030, 1, 15));
53
+ original.setBondDetails(bond);
52
54
  const bytes = original.serializeBinary();
53
55
  const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
54
56
  expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
@@ -56,17 +58,18 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
56
58
  expect(parsed.getIssuerName()).toBe('US Treasury');
57
59
  expect(parsed.getDescription()).toBe('UST 5% 2030');
58
60
  expect(parsed.getQuantityType()).toBe(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
59
- expect(parsed.getCouponRate().getArbitraryPrecisionValue()).toBe('5.0');
60
- expect(parsed.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FIXED);
61
- expect(parsed.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
62
- expect(parsed.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
63
- expect(parsed.getIssueDate().getYear()).toBe(2020);
64
- expect(parsed.getDatedDate().getMonth()).toBe(1);
65
- expect(parsed.getMaturityDate().getYear()).toBe(2030);
66
- expect(parsed.getMaturityDate().getMonth()).toBe(1);
67
- expect(parsed.getMaturityDate().getDay()).toBe(15);
68
- expect(parsed.getIdentifier().getIdentifierValue()).toBe('912828ZT0');
69
- expect(parsed.getIdentifier().getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.CUSIP);
61
+ const parsedBond = parsed.getBondDetails();
62
+ expect(parsedBond.getCouponRate().getArbitraryPrecisionValue()).toBe('5.0');
63
+ expect(parsedBond.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FIXED);
64
+ expect(parsedBond.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
65
+ expect(parsedBond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
66
+ expect(parsedBond.getIssueDate().getYear()).toBe(2020);
67
+ expect(parsedBond.getDatedDate().getMonth()).toBe(1);
68
+ expect(parsedBond.getMaturityDate().getYear()).toBe(2030);
69
+ expect(parsedBond.getMaturityDate().getMonth()).toBe(1);
70
+ expect(parsedBond.getMaturityDate().getDay()).toBe(15);
71
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('912828ZT0');
72
+ expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.CUSIP);
70
73
  });
71
74
  test('TIPS: bond fields + base_cpi + inflation_index_type survive round-trip', () => {
72
75
  const original = new security_pb_2.SecurityProto();
@@ -75,23 +78,29 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
75
78
  original.setProductType(product_type_pb_1.ProductTypeProto.TIPS);
76
79
  original.setAssetClass('Fixed Income');
77
80
  original.setIssuerName('US Treasury');
78
- original.setCouponRate(makeDecimal('0.625'));
79
- original.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
80
- original.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
81
- original.setFaceValue(makeDecimal('1000'));
82
- original.setMaturityDate(makeDate(2030, 1, 15));
83
- original.setBaseCpi(makeDecimal('256.394'));
84
- original.setInflationIndexType(index_type_pb_1.IndexTypeProto.CPI_U);
81
+ const bond = new security_pb_2.BondDetailsProto();
82
+ bond.setCouponRate(makeDecimal('0.625'));
83
+ bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
84
+ bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
85
+ bond.setFaceValue(makeDecimal('1000'));
86
+ bond.setMaturityDate(makeDate(2030, 1, 15));
87
+ original.setBondDetails(bond);
88
+ const tips = new security_pb_2.TipsExtensionProto();
89
+ tips.setBaseCpi(makeDecimal('256.394'));
90
+ tips.setInflationIndexType(index_type_pb_1.IndexTypeProto.CPI_U);
91
+ original.setTipsExtension(tips);
85
92
  const bytes = original.serializeBinary();
86
93
  const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
87
94
  expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TIPS);
88
- expect(parsed.getCouponRate().getArbitraryPrecisionValue()).toBe('0.625');
89
- expect(parsed.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FIXED);
90
- expect(parsed.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
91
- expect(parsed.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
92
- expect(parsed.getMaturityDate().getYear()).toBe(2030);
93
- expect(parsed.getBaseCpi().getArbitraryPrecisionValue()).toBe('256.394');
94
- expect(parsed.getInflationIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
95
+ const parsedBond = parsed.getBondDetails();
96
+ expect(parsedBond.getCouponRate().getArbitraryPrecisionValue()).toBe('0.625');
97
+ expect(parsedBond.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FIXED);
98
+ expect(parsedBond.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
99
+ expect(parsedBond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
100
+ expect(parsedBond.getMaturityDate().getYear()).toBe(2030);
101
+ const parsedTips = parsed.getTipsExtension();
102
+ expect(parsedTips.getBaseCpi().getArbitraryPrecisionValue()).toBe('256.394');
103
+ expect(parsedTips.getInflationIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
95
104
  });
96
105
  test('FRN: spread + reference_rate_index + reset_frequency survive round-trip', () => {
97
106
  const original = new security_pb_2.SecurityProto();
@@ -100,22 +109,28 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
100
109
  original.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_FRN);
101
110
  original.setAssetClass('Fixed Income');
102
111
  original.setIssuerName('US Treasury');
103
- original.setCouponType(coupon_type_pb_1.CouponTypeProto.FLOAT);
104
- original.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
105
- original.setFaceValue(makeDecimal('100'));
106
- original.setMaturityDate(makeDate(2028, 1, 15));
107
- original.setSpread(makeDecimal('50'));
108
- original.setReferenceRateIndex(index_type_pb_1.IndexTypeProto.T_BILL_13_WEEK);
112
+ const bond = new security_pb_2.BondDetailsProto();
113
+ bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FLOAT);
114
+ bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
115
+ bond.setFaceValue(makeDecimal('100'));
116
+ bond.setMaturityDate(makeDate(2028, 1, 15));
117
+ original.setBondDetails(bond);
118
+ const frn = new security_pb_2.FrnExtensionProto();
119
+ frn.setSpread(makeDecimal('50'));
120
+ frn.setReferenceRateIndex(index_type_pb_1.IndexTypeProto.T_BILL_13_WEEK);
121
+ original.setFrnExtension(frn);
109
122
  // Note: setResetFrequency (field 92) not yet in generated JS — codegen needs update
110
123
  const bytes = original.serializeBinary();
111
124
  const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
112
125
  expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TREASURY_FRN);
113
- expect(parsed.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FLOAT);
114
- expect(parsed.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
115
- expect(parsed.getFaceValue().getArbitraryPrecisionValue()).toBe('100');
116
- expect(parsed.getMaturityDate().getYear()).toBe(2028);
117
- expect(parsed.getSpread().getArbitraryPrecisionValue()).toBe('50');
118
- expect(parsed.getReferenceRateIndex()).toBe(index_type_pb_1.IndexTypeProto.T_BILL_13_WEEK);
126
+ const parsedBond = parsed.getBondDetails();
127
+ expect(parsedBond.getCouponType()).toBe(coupon_type_pb_1.CouponTypeProto.FLOAT);
128
+ expect(parsedBond.getCouponFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
129
+ expect(parsedBond.getFaceValue().getArbitraryPrecisionValue()).toBe('100');
130
+ expect(parsedBond.getMaturityDate().getYear()).toBe(2028);
131
+ const parsedFrn = parsed.getFrnExtension();
132
+ expect(parsedFrn.getSpread().getArbitraryPrecisionValue()).toBe('50');
133
+ expect(parsedFrn.getReferenceRateIndex()).toBe(index_type_pb_1.IndexTypeProto.T_BILL_13_WEEK);
119
134
  });
120
135
  test('EQUITY_SECURITY: identifier + asset_class survive round-trip', () => {
121
136
  const original = new security_pb_2.SecurityProto();
@@ -125,7 +140,7 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
125
140
  original.setAssetClass('Equity');
126
141
  original.setIssuerName('Apple Inc.');
127
142
  original.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.UNITS);
128
- original.setIdentifier(makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER, 'AAPL'));
143
+ original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER, 'AAPL')]);
129
144
  original.setDescription('Apple Inc. Common Stock');
130
145
  const bytes = original.serializeBinary();
131
146
  const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
@@ -134,8 +149,8 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
134
149
  expect(parsed.getIssuerName()).toBe('Apple Inc.');
135
150
  expect(parsed.getQuantityType()).toBe(security_quantity_type_pb_1.SecurityQuantityTypeProto.UNITS);
136
151
  expect(parsed.getDescription()).toBe('Apple Inc. Common Stock');
137
- expect(parsed.getIdentifier().getIdentifierValue()).toBe('AAPL');
138
- expect(parsed.getIdentifier().getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER);
152
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('AAPL');
153
+ expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER);
139
154
  });
140
155
  test('CASH_SECURITY: cash_id + settlement fields survive round-trip', () => {
141
156
  const original = new security_pb_2.SecurityProto();
@@ -145,17 +160,17 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
145
160
  original.setAssetClass('Cash');
146
161
  original.setIssuerName('Federal Reserve');
147
162
  original.setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.UNITS);
148
- original.setCashId('USD');
163
+ original.setCashDetails(new security_pb_2.CashDetailsProto().setCashId('USD'));
149
164
  original.setDescription('US Dollar');
150
- original.setIdentifier(makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CASH, 'USD'));
165
+ original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CASH, 'USD')]);
151
166
  const bytes = original.serializeBinary();
152
167
  const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
153
168
  expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.CURRENCY);
154
169
  expect(parsed.getAssetClass()).toBe('Cash');
155
- expect(parsed.getCashId()).toBe('USD');
170
+ expect(parsed.getCashDetails().getCashId()).toBe('USD');
156
171
  expect(parsed.getDescription()).toBe('US Dollar');
157
- expect(parsed.getIdentifier().getIdentifierValue()).toBe('USD');
158
- expect(parsed.getIdentifier().getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.CASH);
172
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('USD');
173
+ expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.CASH);
159
174
  });
160
175
  test('INDEX_SECURITY: index_type + inflation_index_type survive round-trip', () => {
161
176
  const original = new security_pb_2.SecurityProto();
@@ -165,19 +180,19 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
165
180
  original.setAssetClass('Index');
166
181
  original.setIssuerName('Bureau of Labor Statistics');
167
182
  original.setDescription('US CPI-U All Urban Consumers');
168
- original.setIndexType(index_type_pb_1.IndexTypeProto.CPI_U);
169
- original.setIdentifier(makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, 'CPI-U'));
183
+ original.setIndexDetails(new security_pb_1.IndexDetailsProto().setIndexType(index_type_pb_1.IndexTypeProto.CPI_U));
184
+ original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, 'CPI-U')]);
170
185
  const bytes = original.serializeBinary();
171
186
  const parsed = security_pb_2.SecurityProto.deserializeBinary(bytes);
172
187
  expect(parsed.getProductType()).toBe(product_type_pb_1.ProductTypeProto.EQUITY_INDEX);
173
188
  expect(parsed.getAssetClass()).toBe('Index');
174
189
  expect(parsed.getIssuerName()).toBe('Bureau of Labor Statistics');
175
190
  expect(parsed.getDescription()).toBe('US CPI-U All Urban Consumers');
176
- expect(parsed.getIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
177
- expect(parsed.getIdentifier().getIdentifierValue()).toBe('CPI-U');
191
+ expect(parsed.getIndexDetails().getIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
192
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('CPI-U');
178
193
  });
179
194
  });
180
- describe('v0.2.5: Security link helpers + IndexDetailsProto.constituents', () => {
195
+ describe('Security link helpers + IndexDetailsProto.constituents', () => {
181
196
  test('linkOf populates uuid, as_of and sets is_link=true', () => {
182
197
  const uuid = uuid_1.UUID.random();
183
198
  const asOf = datetime_1.ZonedDateTime.now();
@@ -242,9 +257,10 @@ describe('v0.2.5: Security link helpers + IndexDetailsProto.constituents', () =>
242
257
  expect(parsedDetails.getConstituentsList()[0].getAsOf()).toBeDefined();
243
258
  });
244
259
  test('Wire compat: SecurityIdProto-shaped bytes (uuid at tag 1) parse as SecurityProto', () => {
245
- // Pre-v0.2.5, legs were SecurityIdProto (uuid at tag 1). We rebuild that
246
- // wire shape by serializing a SecurityProto with only uuid set same
247
- // bytes and confirm round-trip under the new type.
260
+ // Wire-format contract: SecurityIdProto-shaped bytes (uuid at tag 1)
261
+ // are bit-for-bit a SecurityProto with only uuid set. We rebuild that
262
+ // shape by serializing a SecurityProto with only uuid set and confirm
263
+ // round-trip under the new type.
248
264
  const uuid = uuid_1.UUID.random();
249
265
  const legacy = new security_pb_2.SecurityProto();
250
266
  legacy.setUuid(uuid.toUUIDProto());
@@ -1 +1 @@
1
- {"version":3,"file":"security-roundtrip.test.js","sourceRoot":"","sources":["security-roundtrip.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security-roundtrip.test.js","sourceRoot":"","sources":["security-roundtrip.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * For each type: construct → serialize to bytes → deserialize → verify all fields match.
5
5
  */
6
6
  import { IndexDetailsProto } from '../../../fintekkers/models/security/security_pb';
7
- import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
7
+ import { SecurityProto, BondDetailsProto, TipsExtensionProto, FrnExtensionProto, CashDetailsProto } from '../../../fintekkers/models/security/security_pb';
8
8
  import Security from './security';
9
9
  import { UUID } from '../utils/uuid';
10
10
  import { ZonedDateTime } from '../utils/datetime';
@@ -40,15 +40,17 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
40
40
  original.setAssetClass('Fixed Income');
41
41
  original.setIssuerName('US Treasury');
42
42
  original.setQuantityType(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
43
- original.setIdentifier(makeIdentifier(IdentifierTypeProto.CUSIP, '912828ZT0'));
43
+ original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CUSIP, '912828ZT0')]);
44
44
  original.setDescription('UST 5% 2030');
45
- original.setCouponRate(makeDecimal('5.0'));
46
- original.setCouponType(CouponTypeProto.FIXED);
47
- original.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
48
- original.setFaceValue(makeDecimal('1000'));
49
- original.setIssueDate(makeDate(2020, 1, 15));
50
- original.setDatedDate(makeDate(2020, 1, 15));
51
- original.setMaturityDate(makeDate(2030, 1, 15));
45
+ const bond = new BondDetailsProto();
46
+ bond.setCouponRate(makeDecimal('5.0'));
47
+ bond.setCouponType(CouponTypeProto.FIXED);
48
+ bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
49
+ bond.setFaceValue(makeDecimal('1000'));
50
+ bond.setIssueDate(makeDate(2020, 1, 15));
51
+ bond.setDatedDate(makeDate(2020, 1, 15));
52
+ bond.setMaturityDate(makeDate(2030, 1, 15));
53
+ original.setBondDetails(bond);
52
54
 
53
55
  const bytes = original.serializeBinary();
54
56
  const parsed = SecurityProto.deserializeBinary(bytes);
@@ -58,17 +60,18 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
58
60
  expect(parsed.getIssuerName()).toBe('US Treasury');
59
61
  expect(parsed.getDescription()).toBe('UST 5% 2030');
60
62
  expect(parsed.getQuantityType()).toBe(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE);
61
- expect(parsed.getCouponRate()!.getArbitraryPrecisionValue()).toBe('5.0');
62
- expect(parsed.getCouponType()).toBe(CouponTypeProto.FIXED);
63
- expect(parsed.getCouponFrequency()).toBe(CouponFrequencyProto.SEMIANNUALLY);
64
- expect(parsed.getFaceValue()!.getArbitraryPrecisionValue()).toBe('1000');
65
- expect(parsed.getIssueDate()!.getYear()).toBe(2020);
66
- expect(parsed.getDatedDate()!.getMonth()).toBe(1);
67
- expect(parsed.getMaturityDate()!.getYear()).toBe(2030);
68
- expect(parsed.getMaturityDate()!.getMonth()).toBe(1);
69
- expect(parsed.getMaturityDate()!.getDay()).toBe(15);
70
- expect(parsed.getIdentifier()!.getIdentifierValue()).toBe('912828ZT0');
71
- expect(parsed.getIdentifier()!.getIdentifierType()).toBe(IdentifierTypeProto.CUSIP);
63
+ const parsedBond = parsed.getBondDetails()!;
64
+ expect(parsedBond.getCouponRate()!.getArbitraryPrecisionValue()).toBe('5.0');
65
+ expect(parsedBond.getCouponType()).toBe(CouponTypeProto.FIXED);
66
+ expect(parsedBond.getCouponFrequency()).toBe(CouponFrequencyProto.SEMIANNUALLY);
67
+ expect(parsedBond.getFaceValue()!.getArbitraryPrecisionValue()).toBe('1000');
68
+ expect(parsedBond.getIssueDate()!.getYear()).toBe(2020);
69
+ expect(parsedBond.getDatedDate()!.getMonth()).toBe(1);
70
+ expect(parsedBond.getMaturityDate()!.getYear()).toBe(2030);
71
+ expect(parsedBond.getMaturityDate()!.getMonth()).toBe(1);
72
+ expect(parsedBond.getMaturityDate()!.getDay()).toBe(15);
73
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('912828ZT0');
74
+ expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(IdentifierTypeProto.CUSIP);
72
75
  });
73
76
 
74
77
  test('TIPS: bond fields + base_cpi + inflation_index_type survive round-trip', () => {
@@ -78,25 +81,31 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
78
81
  original.setProductType(ProductTypeProto.TIPS);
79
82
  original.setAssetClass('Fixed Income');
80
83
  original.setIssuerName('US Treasury');
81
- original.setCouponRate(makeDecimal('0.625'));
82
- original.setCouponType(CouponTypeProto.FIXED);
83
- original.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
84
- original.setFaceValue(makeDecimal('1000'));
85
- original.setMaturityDate(makeDate(2030, 1, 15));
86
- original.setBaseCpi(makeDecimal('256.394'));
87
- original.setInflationIndexType(IndexTypeProto.CPI_U);
84
+ const bond = new BondDetailsProto();
85
+ bond.setCouponRate(makeDecimal('0.625'));
86
+ bond.setCouponType(CouponTypeProto.FIXED);
87
+ bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
88
+ bond.setFaceValue(makeDecimal('1000'));
89
+ bond.setMaturityDate(makeDate(2030, 1, 15));
90
+ original.setBondDetails(bond);
91
+ const tips = new TipsExtensionProto();
92
+ tips.setBaseCpi(makeDecimal('256.394'));
93
+ tips.setInflationIndexType(IndexTypeProto.CPI_U);
94
+ original.setTipsExtension(tips);
88
95
 
89
96
  const bytes = original.serializeBinary();
90
97
  const parsed = SecurityProto.deserializeBinary(bytes);
91
98
 
92
99
  expect(parsed.getProductType()).toBe(ProductTypeProto.TIPS);
93
- expect(parsed.getCouponRate()!.getArbitraryPrecisionValue()).toBe('0.625');
94
- expect(parsed.getCouponType()).toBe(CouponTypeProto.FIXED);
95
- expect(parsed.getCouponFrequency()).toBe(CouponFrequencyProto.SEMIANNUALLY);
96
- expect(parsed.getFaceValue()!.getArbitraryPrecisionValue()).toBe('1000');
97
- expect(parsed.getMaturityDate()!.getYear()).toBe(2030);
98
- expect(parsed.getBaseCpi()!.getArbitraryPrecisionValue()).toBe('256.394');
99
- expect(parsed.getInflationIndexType()).toBe(IndexTypeProto.CPI_U);
100
+ const parsedBond = parsed.getBondDetails()!;
101
+ expect(parsedBond.getCouponRate()!.getArbitraryPrecisionValue()).toBe('0.625');
102
+ expect(parsedBond.getCouponType()).toBe(CouponTypeProto.FIXED);
103
+ expect(parsedBond.getCouponFrequency()).toBe(CouponFrequencyProto.SEMIANNUALLY);
104
+ expect(parsedBond.getFaceValue()!.getArbitraryPrecisionValue()).toBe('1000');
105
+ expect(parsedBond.getMaturityDate()!.getYear()).toBe(2030);
106
+ const parsedTips = parsed.getTipsExtension()!;
107
+ expect(parsedTips.getBaseCpi()!.getArbitraryPrecisionValue()).toBe('256.394');
108
+ expect(parsedTips.getInflationIndexType()).toBe(IndexTypeProto.CPI_U);
100
109
  });
101
110
 
102
111
  test('FRN: spread + reference_rate_index + reset_frequency survive round-trip', () => {
@@ -106,24 +115,30 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
106
115
  original.setProductType(ProductTypeProto.TREASURY_FRN);
107
116
  original.setAssetClass('Fixed Income');
108
117
  original.setIssuerName('US Treasury');
109
- original.setCouponType(CouponTypeProto.FLOAT);
110
- original.setCouponFrequency(CouponFrequencyProto.QUARTERLY);
111
- original.setFaceValue(makeDecimal('100'));
112
- original.setMaturityDate(makeDate(2028, 1, 15));
113
- original.setSpread(makeDecimal('50'));
114
- original.setReferenceRateIndex(IndexTypeProto.T_BILL_13_WEEK);
118
+ const bond = new BondDetailsProto();
119
+ bond.setCouponType(CouponTypeProto.FLOAT);
120
+ bond.setCouponFrequency(CouponFrequencyProto.QUARTERLY);
121
+ bond.setFaceValue(makeDecimal('100'));
122
+ bond.setMaturityDate(makeDate(2028, 1, 15));
123
+ original.setBondDetails(bond);
124
+ const frn = new FrnExtensionProto();
125
+ frn.setSpread(makeDecimal('50'));
126
+ frn.setReferenceRateIndex(IndexTypeProto.T_BILL_13_WEEK);
127
+ original.setFrnExtension(frn);
115
128
  // Note: setResetFrequency (field 92) not yet in generated JS — codegen needs update
116
129
 
117
130
  const bytes = original.serializeBinary();
118
131
  const parsed = SecurityProto.deserializeBinary(bytes);
119
132
 
120
133
  expect(parsed.getProductType()).toBe(ProductTypeProto.TREASURY_FRN);
121
- expect(parsed.getCouponType()).toBe(CouponTypeProto.FLOAT);
122
- expect(parsed.getCouponFrequency()).toBe(CouponFrequencyProto.QUARTERLY);
123
- expect(parsed.getFaceValue()!.getArbitraryPrecisionValue()).toBe('100');
124
- expect(parsed.getMaturityDate()!.getYear()).toBe(2028);
125
- expect(parsed.getSpread()!.getArbitraryPrecisionValue()).toBe('50');
126
- expect(parsed.getReferenceRateIndex()).toBe(IndexTypeProto.T_BILL_13_WEEK);
134
+ const parsedBond = parsed.getBondDetails()!;
135
+ expect(parsedBond.getCouponType()).toBe(CouponTypeProto.FLOAT);
136
+ expect(parsedBond.getCouponFrequency()).toBe(CouponFrequencyProto.QUARTERLY);
137
+ expect(parsedBond.getFaceValue()!.getArbitraryPrecisionValue()).toBe('100');
138
+ expect(parsedBond.getMaturityDate()!.getYear()).toBe(2028);
139
+ const parsedFrn = parsed.getFrnExtension()!;
140
+ expect(parsedFrn.getSpread()!.getArbitraryPrecisionValue()).toBe('50');
141
+ expect(parsedFrn.getReferenceRateIndex()).toBe(IndexTypeProto.T_BILL_13_WEEK);
127
142
  });
128
143
 
129
144
  test('EQUITY_SECURITY: identifier + asset_class survive round-trip', () => {
@@ -134,7 +149,7 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
134
149
  original.setAssetClass('Equity');
135
150
  original.setIssuerName('Apple Inc.');
136
151
  original.setQuantityType(SecurityQuantityTypeProto.UNITS);
137
- original.setIdentifier(makeIdentifier(IdentifierTypeProto.EXCH_TICKER, 'AAPL'));
152
+ original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.EXCH_TICKER, 'AAPL')]);
138
153
  original.setDescription('Apple Inc. Common Stock');
139
154
 
140
155
  const bytes = original.serializeBinary();
@@ -145,8 +160,8 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
145
160
  expect(parsed.getIssuerName()).toBe('Apple Inc.');
146
161
  expect(parsed.getQuantityType()).toBe(SecurityQuantityTypeProto.UNITS);
147
162
  expect(parsed.getDescription()).toBe('Apple Inc. Common Stock');
148
- expect(parsed.getIdentifier()!.getIdentifierValue()).toBe('AAPL');
149
- expect(parsed.getIdentifier()!.getIdentifierType()).toBe(IdentifierTypeProto.EXCH_TICKER);
163
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('AAPL');
164
+ expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(IdentifierTypeProto.EXCH_TICKER);
150
165
  });
151
166
 
152
167
  test('CASH_SECURITY: cash_id + settlement fields survive round-trip', () => {
@@ -157,19 +172,19 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
157
172
  original.setAssetClass('Cash');
158
173
  original.setIssuerName('Federal Reserve');
159
174
  original.setQuantityType(SecurityQuantityTypeProto.UNITS);
160
- original.setCashId('USD');
175
+ original.setCashDetails(new CashDetailsProto().setCashId('USD'));
161
176
  original.setDescription('US Dollar');
162
- original.setIdentifier(makeIdentifier(IdentifierTypeProto.CASH, 'USD'));
177
+ original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CASH, 'USD')]);
163
178
 
164
179
  const bytes = original.serializeBinary();
165
180
  const parsed = SecurityProto.deserializeBinary(bytes);
166
181
 
167
182
  expect(parsed.getProductType()).toBe(ProductTypeProto.CURRENCY);
168
183
  expect(parsed.getAssetClass()).toBe('Cash');
169
- expect(parsed.getCashId()).toBe('USD');
184
+ expect(parsed.getCashDetails()!.getCashId()).toBe('USD');
170
185
  expect(parsed.getDescription()).toBe('US Dollar');
171
- expect(parsed.getIdentifier()!.getIdentifierValue()).toBe('USD');
172
- expect(parsed.getIdentifier()!.getIdentifierType()).toBe(IdentifierTypeProto.CASH);
186
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('USD');
187
+ expect(parsed.getIdentifiersList()[0].getIdentifierType()).toBe(IdentifierTypeProto.CASH);
173
188
  });
174
189
 
175
190
  test('INDEX_SECURITY: index_type + inflation_index_type survive round-trip', () => {
@@ -180,8 +195,8 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
180
195
  original.setAssetClass('Index');
181
196
  original.setIssuerName('Bureau of Labor Statistics');
182
197
  original.setDescription('US CPI-U All Urban Consumers');
183
- original.setIndexType(IndexTypeProto.CPI_U);
184
- original.setIdentifier(makeIdentifier(IdentifierTypeProto.CUSIP, 'CPI-U'));
198
+ original.setIndexDetails(new IndexDetailsProto().setIndexType(IndexTypeProto.CPI_U));
199
+ original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CUSIP, 'CPI-U')]);
185
200
 
186
201
  const bytes = original.serializeBinary();
187
202
  const parsed = SecurityProto.deserializeBinary(bytes);
@@ -190,12 +205,12 @@ describe('SecurityProto Round-Trip Serialization — All 6 Security Types', () =
190
205
  expect(parsed.getAssetClass()).toBe('Index');
191
206
  expect(parsed.getIssuerName()).toBe('Bureau of Labor Statistics');
192
207
  expect(parsed.getDescription()).toBe('US CPI-U All Urban Consumers');
193
- expect(parsed.getIndexType()).toBe(IndexTypeProto.CPI_U);
194
- expect(parsed.getIdentifier()!.getIdentifierValue()).toBe('CPI-U');
208
+ expect(parsed.getIndexDetails()!.getIndexType()).toBe(IndexTypeProto.CPI_U);
209
+ expect(parsed.getIdentifiersList()[0].getIdentifierValue()).toBe('CPI-U');
195
210
  });
196
211
  });
197
212
 
198
- describe('v0.2.5: Security link helpers + IndexDetailsProto.constituents', () => {
213
+ describe('Security link helpers + IndexDetailsProto.constituents', () => {
199
214
 
200
215
  test('linkOf populates uuid, as_of and sets is_link=true', () => {
201
216
  const uuid = UUID.random();
@@ -274,9 +289,10 @@ describe('v0.2.5: Security link helpers + IndexDetailsProto.constituents', () =>
274
289
  });
275
290
 
276
291
  test('Wire compat: SecurityIdProto-shaped bytes (uuid at tag 1) parse as SecurityProto', () => {
277
- // Pre-v0.2.5, legs were SecurityIdProto (uuid at tag 1). We rebuild that
278
- // wire shape by serializing a SecurityProto with only uuid set same
279
- // bytes and confirm round-trip under the new type.
292
+ // Wire-format contract: SecurityIdProto-shaped bytes (uuid at tag 1)
293
+ // are bit-for-bit a SecurityProto with only uuid set. We rebuild that
294
+ // shape by serializing a SecurityProto with only uuid set and confirm
295
+ // round-trip under the new type.
280
296
  const uuid = UUID.random();
281
297
  const legacy = new SecurityProto();
282
298
  legacy.setUuid(uuid.toUUIDProto());
@@ -1,9 +1,10 @@
1
1
  import { FieldProto } from "../../../fintekkers/models/position/field_pb";
2
- import { IdentifierProto } from "../../../fintekkers/models/security/identifier/identifier_pb";
3
2
  import { SecurityProto } from "../../../fintekkers/models/security/security_pb";
4
3
  import { ZonedDateTime } from "../utils/datetime";
5
4
  import { UUID } from "../utils/uuid";
6
5
  import { LocalDate } from "../utils/date";
6
+ import { IdentifierTypeProto } from "../../../fintekkers/models/security/identifier/identifier_type_pb";
7
+ import { Identifier } from "./identifier";
7
8
  declare class Security {
8
9
  proto: SecurityProto;
9
10
  constructor(proto: SecurityProto);
@@ -33,7 +34,13 @@ declare class Security {
33
34
  */
34
35
  private assertNotLink;
35
36
  /**
36
- * Factory method to create the appropriate Security subclass based on security type
37
+ * Factory method to create the appropriate Security subclass based on
38
+ * the proto's product_type. Dispatch rules:
39
+ * - TIPS -> TIPSBond
40
+ * - TREASURY_FRN -> FloatingRateNote
41
+ * - any other descendant of BOND in hierarchy.json -> BondSecurity
42
+ * - any descendant of INDEX in hierarchy.json -> IndexSecurity
43
+ * - everything else (equity, cash, fx, etc.) -> base Security
37
44
  */
38
45
  static create(proto: SecurityProto): Security;
39
46
  /**
@@ -63,7 +70,16 @@ declare class Security {
63
70
  getAssetClass(): string;
64
71
  getProductClass(): string;
65
72
  getProductType(): string;
66
- getSecurityID(): IdentifierProto;
73
+ /**
74
+ * Returns every Identifier attached to this security as typed wrappers.
75
+ * Empty list if none are set. Throws on a link-mode Security.
76
+ */
77
+ getIdentifiers(): Identifier[];
78
+ /**
79
+ * Returns the first Identifier matching the given IdentifierTypeProto,
80
+ * or undefined if none is present. Throws on a link-mode Security.
81
+ */
82
+ getIdentifierByType(type: IdentifierTypeProto): Identifier | undefined;
67
83
  /**
68
84
  * Returns the issue date if set, else null. Per-type semantic:
69
85
  * - Bond / TIPS / FRN: auction date.
@@ -90,9 +106,8 @@ declare class Security {
90
106
  getMaturityDate(): LocalDate;
91
107
  /**
92
108
  * Returns the canonical bond_details sub-message if set, else undefined.
93
- * v0.3.0 collapsed the prior 3-arm bond/tips/frn oneof into a single
94
- * top-level bond_details — TIPS and FRN extras now live in their own
95
- * tips_extension / frn_extension fields.
109
+ * TIPS and FRN extras live in their own tips_extension / frn_extension
110
+ * fields and co-exist with bond_details.
96
111
  */
97
112
  protected getBondLikeDetails(): any | undefined;
98
113
  getIssuerName(): string;