@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.
- package/node/fintekkers/models/security/security_pb.d.ts +0 -80
- package/node/fintekkers/models/security/security_pb.js +1 -723
- package/node/fintekkers/models/security/security_pb.test.js +15 -15
- package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
- package/node/fintekkers/models/security/security_pb.test.ts +17 -18
- package/node/wrappers/models/price/Price.cash.test.js +1 -1
- package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
- package/node/wrappers/models/price/Price.cash.test.ts +2 -2
- package/node/wrappers/models/security/BondSecurity.d.ts +41 -3
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.d.ts +1 -0
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +75 -0
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -0
- package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +95 -0
- package/node/wrappers/models/security/BondSecurity.js +57 -9
- package/node/wrappers/models/security/BondSecurity.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js +5 -3
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +7 -5
- package/node/wrappers/models/security/BondSecurity.test.js +28 -20
- package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.test.ts +29 -21
- package/node/wrappers/models/security/BondSecurity.ts +72 -10
- package/node/wrappers/models/security/FloatingRateNote.d.ts +30 -0
- package/node/wrappers/models/security/FloatingRateNote.js +80 -0
- package/node/wrappers/models/security/FloatingRateNote.js.map +1 -0
- package/node/wrappers/models/security/FloatingRateNote.ts +67 -0
- package/node/wrappers/models/security/IndexSecurity.d.ts +16 -0
- package/node/wrappers/models/security/IndexSecurity.js +26 -0
- package/node/wrappers/models/security/IndexSecurity.js.map +1 -0
- package/node/wrappers/models/security/IndexSecurity.test.d.ts +1 -0
- package/node/wrappers/models/security/IndexSecurity.test.js +60 -0
- package/node/wrappers/models/security/IndexSecurity.test.js.map +1 -0
- package/node/wrappers/models/security/IndexSecurity.test.ts +60 -0
- package/node/wrappers/models/security/IndexSecurity.ts +24 -0
- package/node/wrappers/models/security/Issuance.d.ts +35 -0
- package/node/wrappers/models/security/Issuance.js +64 -0
- package/node/wrappers/models/security/Issuance.js.map +1 -0
- package/node/wrappers/models/security/Issuance.test.d.ts +1 -0
- package/node/wrappers/models/security/Issuance.test.js +55 -0
- package/node/wrappers/models/security/Issuance.test.js.map +1 -0
- package/node/wrappers/models/security/Issuance.test.ts +52 -0
- package/node/wrappers/models/security/Issuance.ts +74 -0
- package/node/wrappers/models/security/TIPSBond.d.ts +30 -0
- package/node/wrappers/models/security/TIPSBond.js +83 -0
- package/node/wrappers/models/security/TIPSBond.js.map +1 -0
- package/node/wrappers/models/security/TIPSBond.ts +70 -0
- package/node/wrappers/models/security/security-roundtrip.test.js +77 -61
- package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
- package/node/wrappers/models/security/security-roundtrip.test.ts +78 -62
- package/node/wrappers/models/security/security.d.ts +21 -6
- package/node/wrappers/models/security/security.identifiers.test.d.ts +1 -0
- package/node/wrappers/models/security/security.identifiers.test.js +67 -0
- package/node/wrappers/models/security/security.identifiers.test.js.map +1 -0
- package/node/wrappers/models/security/security.identifiers.test.ts +67 -0
- package/node/wrappers/models/security/security.js +72 -29
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.test.js +16 -12
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +17 -15
- package/node/wrappers/models/security/security.ts +75 -29
- package/node/wrappers/models/transaction/transaction.derived.test.js +8 -6
- package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.derived.test.ts +9 -7
- package/node/wrappers/models/transaction/transaction.js +4 -2
- package/node/wrappers/models/transaction/transaction.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.ts +4 -2
- package/node/wrappers/models/transaction/transaction_constructor.test.js +8 -6
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +9 -7
- package/node/wrappers/services/searchWithSecurities.test.js +2 -2
- package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
- package/node/wrappers/services/searchWithSecurities.test.ts +2 -2
- package/node/wrappers/services/security-service/security.maturityLadder.test.js +5 -3
- package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.ts +5 -3
- package/node/wrappers/services/security-service/security.test.js +10 -8
- package/node/wrappers/services/security-service/security.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.test.ts +12 -9
- package/node/wrappers/util/link-resolver.test.js +1 -1
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +1 -1
- 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.
|
|
43
|
+
original.setIdentifiersList([makeIdentifier(identifier_type_pb_1.IdentifierTypeProto.CUSIP, '912828ZT0')]);
|
|
44
44
|
original.setDescription('UST 5% 2030');
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
60
|
-
expect(
|
|
61
|
-
expect(
|
|
62
|
-
expect(
|
|
63
|
-
expect(
|
|
64
|
-
expect(
|
|
65
|
-
expect(
|
|
66
|
-
expect(
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
69
|
-
expect(parsed.
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
original.
|
|
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
|
-
|
|
89
|
-
expect(
|
|
90
|
-
expect(
|
|
91
|
-
expect(
|
|
92
|
-
expect(
|
|
93
|
-
expect(
|
|
94
|
-
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
original.
|
|
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
|
-
|
|
114
|
-
expect(
|
|
115
|
-
expect(
|
|
116
|
-
expect(
|
|
117
|
-
expect(
|
|
118
|
-
|
|
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.
|
|
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.
|
|
138
|
-
expect(parsed.
|
|
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.
|
|
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.
|
|
158
|
-
expect(parsed.
|
|
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.
|
|
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.
|
|
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('
|
|
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
|
-
//
|
|
246
|
-
//
|
|
247
|
-
//
|
|
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":";;;;;AAAA;;;;GAIG;AACH,iFAAoF;AACpF,iFAA2J;AAC3J,0DAAkC;AAClC,wCAAqC;AACrC,gDAAkD;AAClD,yFAAuF;AACvF,iGAA+F;AAC/F,uFAAqF;AACrF,6GAA0G;AAC1G,gGAA+F;AAC/F,0GAAwG;AACxG,2FAAyF;AACzF,uFAAqF;AACrF,iFAA+E;AAE/E,SAAS,WAAW,CAAC,KAAa;IAC9B,OAAO,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW;IACtD,OAAO,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,+BAAe,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnF,CAAC;AAED,QAAQ,CAAC,+DAA+D,EAAE,GAAG,EAAE;IAE3E,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;QACxD,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtC,QAAQ,CAAC,eAAe,CAAC,qDAAyB,CAAC,mBAAmB,CAAC,CAAC;QACxE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,wCAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;QACtF,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,8BAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,qDAAyB,CAAC,mBAAmB,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAG,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,aAAa,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAChF,MAAM,CAAC,UAAU,CAAC,YAAY,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,YAAY,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,UAAU,CAAC,YAAY,EAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,UAAU,CAAC,eAAe,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,CAAC,UAAU,CAAC,eAAe,EAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,UAAU,CAAC,eAAe,EAAG,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9E,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,IAAI,CAAC,CAAC;QAC/C,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,8BAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,gCAAkB,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,qBAAqB,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QACjD,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAEhC,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAG,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,aAAa,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/E,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0CAAoB,CAAC,YAAY,CAAC,CAAC;QAChF,MAAM,CAAC,UAAU,CAAC,YAAY,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,eAAe,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,gBAAgB,EAAG,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,UAAU,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9E,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACvC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,8BAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,+BAAiB,EAAE,CAAC;QACpC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,qBAAqB,CAAC,8BAAc,CAAC,cAAc,CAAC,CAAC;QACzD,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9B,oFAAoF;QAEpF,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,EAAG,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,0CAAoB,CAAC,SAAS,CAAC,CAAC;QAC7E,MAAM,CAAC,UAAU,CAAC,YAAY,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,UAAU,CAAC,eAAe,EAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,EAAG,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,SAAS,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,MAAM,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,8BAAc,CAAC,cAAc,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACrC,QAAQ,CAAC,eAAe,CAAC,qDAAyB,CAAC,KAAK,CAAC,CAAC;QAC1D,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,wCAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QACvF,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,qDAAyB,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,QAAQ,CAAC,CAAC;QACnD,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC/B,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAC1C,QAAQ,CAAC,eAAe,CAAC,qDAAyB,CAAC,KAAK,CAAC,CAAC;QAC1D,QAAQ,CAAC,cAAc,CAAC,IAAI,8BAAgB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,wCAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAE/E,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,QAAQ,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,cAAc,EAAG,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,wCAAmB,CAAC,IAAI,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC;QACrD,QAAQ,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC;QACxD,QAAQ,CAAC,eAAe,CAAC,IAAI,+BAAiB,EAAE,CAAC,YAAY,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,QAAQ,CAAC,kBAAkB,CAAC,CAAC,cAAc,CAAC,wCAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QAElF,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QACrE,MAAM,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,wDAAwD,EAAE,GAAG,EAAE;IAEpE,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;IACvE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,kBAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,SAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,IAAI,GAAG,IAAI,2BAAa,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,wBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,wBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,kBAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;QAChF,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,kBAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,kBAAQ,CAAC,MAAM,CAAC,WAAI,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,IAAI,+BAAiB,EAAE,CAAC;QACxC,OAAO,CAAC,YAAY,CAAC,8BAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAEtC,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,YAAY,CAAC,CAAC;QACvD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAElC,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,EAAG,CAAC;QAChD,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,MAAM,CAAC,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,qEAAqE;QACrE,sEAAsE;QACtE,sEAAsE;QACtE,iCAAiC;QACjC,MAAM,IAAI,GAAG,WAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,2BAAa,EAAE,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnC,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,2BAAa,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -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.
|
|
43
|
+
original.setIdentifiersList([makeIdentifier(IdentifierTypeProto.CUSIP, '912828ZT0')]);
|
|
44
44
|
original.setDescription('UST 5% 2030');
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
62
|
-
expect(
|
|
63
|
-
expect(
|
|
64
|
-
expect(
|
|
65
|
-
expect(
|
|
66
|
-
expect(
|
|
67
|
-
expect(
|
|
68
|
-
expect(
|
|
69
|
-
expect(
|
|
70
|
-
expect(
|
|
71
|
-
expect(parsed.
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
original.
|
|
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
|
-
|
|
94
|
-
expect(
|
|
95
|
-
expect(
|
|
96
|
-
expect(
|
|
97
|
-
expect(
|
|
98
|
-
expect(
|
|
99
|
-
|
|
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
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
original.
|
|
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
|
-
|
|
122
|
-
expect(
|
|
123
|
-
expect(
|
|
124
|
-
expect(
|
|
125
|
-
expect(
|
|
126
|
-
|
|
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.
|
|
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.
|
|
149
|
-
expect(parsed.
|
|
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.
|
|
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.
|
|
172
|
-
expect(parsed.
|
|
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.
|
|
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.
|
|
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('
|
|
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
|
-
//
|
|
278
|
-
//
|
|
279
|
-
//
|
|
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
|
|
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
|
-
|
|
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
|
-
*
|
|
94
|
-
*
|
|
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;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|