@fintekkers/ledger-models 0.4.2 → 0.4.3

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 (43) hide show
  1. package/node/wrappers/models/security/BondSecurity.d.ts +5 -21
  2. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +17 -11
  3. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -1
  4. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +17 -11
  5. package/node/wrappers/models/security/BondSecurity.js +15 -32
  6. package/node/wrappers/models/security/BondSecurity.js.map +1 -1
  7. package/node/wrappers/models/security/BondSecurity.ts +18 -37
  8. package/node/wrappers/models/security/Issuance.d.ts +3 -5
  9. package/node/wrappers/models/security/Issuance.js +3 -8
  10. package/node/wrappers/models/security/Issuance.js.map +1 -1
  11. package/node/wrappers/models/security/Issuance.test.js +16 -8
  12. package/node/wrappers/models/security/Issuance.test.js.map +1 -1
  13. package/node/wrappers/models/security/Issuance.test.ts +10 -2
  14. package/node/wrappers/models/security/Issuance.ts +6 -12
  15. package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js +11 -7
  16. package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.js.map +1 -1
  17. package/node/wrappers/models/security/MortgageBackedSecurity.fromPricerInputs.test.ts +12 -8
  18. package/node/wrappers/models/security/TIPSBond.d.ts +2 -3
  19. package/node/wrappers/models/security/TIPSBond.js +2 -4
  20. package/node/wrappers/models/security/TIPSBond.js.map +1 -1
  21. package/node/wrappers/models/security/TIPSBond.ts +5 -7
  22. package/node/wrappers/models/security/security.d.ts +38 -12
  23. package/node/wrappers/models/security/security.js +58 -15
  24. package/node/wrappers/models/security/security.js.map +1 -1
  25. package/node/wrappers/models/security/security.test.js +91 -10
  26. package/node/wrappers/models/security/security.test.js.map +1 -1
  27. package/node/wrappers/models/security/security.test.ts +106 -11
  28. package/node/wrappers/models/security/security.ts +64 -16
  29. package/node/wrappers/models/transaction/transaction.d.ts +2 -3
  30. package/node/wrappers/models/transaction/transaction.js +23 -21
  31. package/node/wrappers/models/transaction/transaction.js.map +1 -1
  32. package/node/wrappers/models/transaction/transaction.ts +22 -21
  33. package/node/wrappers/models/transaction/transaction_constructor.test.js +4 -2
  34. package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
  35. package/node/wrappers/models/transaction/transaction_constructor.test.ts +10 -8
  36. package/node/wrappers/models/utils/date.d.ts +13 -1
  37. package/node/wrappers/models/utils/date.js +26 -1
  38. package/node/wrappers/models/utils/date.js.map +1 -1
  39. package/node/wrappers/models/utils/date.ts +25 -1
  40. package/node/wrappers/services/security-service/security.maturityLadder.test.js +4 -2
  41. package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
  42. package/node/wrappers/services/security-service/security.maturityLadder.test.ts +3 -2
  43. package/package.json +1 -1
@@ -4,12 +4,15 @@ import { UUID } from '../utils/uuid';
4
4
  import assert = require('assert');
5
5
  import Security from './security';
6
6
  import BondSecurity from './BondSecurity';
7
+ import IndexSecurity from './IndexSecurity';
8
+ import MortgageBackedSecurity from './MortgageBackedSecurity';
7
9
 
8
10
  import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
9
- import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/security/security_pb';
11
+ import { SecurityProto, BondDetailsProto, IndexDetailsProto } from '../../../fintekkers/models/security/security_pb';
10
12
  import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
11
13
  import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
12
14
  import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
15
+ import { IndexTypeProto } from '../../../fintekkers/models/security/index/index_type_pb';
13
16
  import { SecurityQuantityTypeProto } from '../../../fintekkers/models/security/security_quantity_type_pb';
14
17
 
15
18
 
@@ -20,7 +23,9 @@ test('test the security wrapper', () => {
20
23
  function testSerialization(): void {
21
24
  const security = dummySecurity();
22
25
 
23
- assert(security.getMaturityDate().toDate().getFullYear() == 2026);
26
+ const maturityDate = security.getMaturityDate();
27
+ assert(maturityDate !== null);
28
+ assert(maturityDate.getFullYear() == 2026);
24
29
  }
25
30
 
26
31
  test('equity routes to base Security and isBond() returns false', () => {
@@ -48,25 +53,68 @@ test('Security.getIssueDate returns null on equity (no throw)', () => {
48
53
  expect(equity.getIssueDate()).toBeNull();
49
54
  });
50
55
 
51
- test('BondSecurity.getIssueDate returns LocalDate (non-nullable) on bond', () => {
56
+ test('BondSecurity.getIssueDate returns Date on bond', () => {
52
57
  const bond = dummyBondSecurity();
53
58
  if (!bond.isBond()) throw new Error('test setup: expected bond');
54
59
  const issueDate = bond.getIssueDate();
55
60
  expect(issueDate).not.toBeNull();
56
- expect(issueDate.toDate().getFullYear()).toBe(2021);
61
+ expect(issueDate).toBeInstanceOf(Date);
62
+ expect(issueDate!.getFullYear()).toBe(2021);
57
63
  });
58
64
 
59
- test('Security.getMaturityDate still throws on equity (Phase 1 deprecation, not removal)', () => {
65
+ test('Security.getMaturityDate returns null on equity (no throw)', () => {
60
66
  const equity = dummyEquity();
61
- // Behavior preserved deliberately for Phase 1 — callers still get a
62
- // loud error if they don't narrow first. Removal happens in Phase 2.
63
- expect(() => equity.getMaturityDate()).toThrow('Maturity date is required');
67
+ expect(equity.getMaturityDate()).toBeNull();
64
68
  });
65
69
 
66
70
  test('BondSecurity.getMaturityDate works on bond (inherited from Security)', () => {
67
71
  const bond = dummyBondSecurity();
68
72
  if (!bond.isBond()) throw new Error('test setup: expected bond');
69
- expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2026);
73
+ const maturityDate = bond.getMaturityDate();
74
+ expect(maturityDate).not.toBeNull();
75
+ expect(maturityDate).toBeInstanceOf(Date);
76
+ expect(maturityDate!.getFullYear()).toBe(2026);
77
+ });
78
+
79
+ test('isMbs(): true on MORTGAGE_BACKED, narrows to MortgageBackedSecurity', () => {
80
+ const mbs = dummyMbs();
81
+ expect(mbs.isMbs()).toBe(true);
82
+ if (mbs.isMbs()) {
83
+ // Inside the narrowed branch TS knows mbs: MortgageBackedSecurity.
84
+ expect(mbs.getPoolNumber()).toBe('FN AS1234');
85
+ }
86
+ // Non-MBS bonds return false.
87
+ expect(dummyBondSecurity().isMbs()).toBe(false);
88
+ expect(dummyEquity().isMbs()).toBe(false);
89
+ });
90
+
91
+ test('isIndex(): true on EQUITY_INDEX / CPI_SERIES, narrows to IndexSecurity', () => {
92
+ const idx = dummyIndex();
93
+ expect(idx.isIndex()).toBe(true);
94
+ if (idx.isIndex()) {
95
+ // Inside the narrowed branch TS knows idx: IndexSecurity.
96
+ expect(idx.getIndexType()).toBe(IndexTypeProto.CPI_U);
97
+ }
98
+ expect(dummyBondSecurity().isIndex()).toBe(false);
99
+ expect(dummyEquity().isIndex()).toBe(false);
100
+ });
101
+
102
+ test('isCash(): runtime predicate, true on CURRENCY only', () => {
103
+ expect(dummyCash().isCash()).toBe(true);
104
+ expect(dummyBondSecurity().isCash()).toBe(false);
105
+ expect(dummyEquity().isCash()).toBe(false);
106
+ });
107
+
108
+ test('isEquity(): runtime predicate, true on STOCK descendants', () => {
109
+ expect(dummyEquity().isEquity()).toBe(true);
110
+ expect(dummyBondSecurity().isEquity()).toBe(false);
111
+ expect(dummyCash().isEquity()).toBe(false);
112
+ });
113
+
114
+ test('isFxSpot(): runtime predicate, true on FX_SPOT only', () => {
115
+ expect(dummyFxSpot().isFxSpot()).toBe(true);
116
+ expect(dummyCash().isFxSpot()).toBe(false);
117
+ expect(dummyEquity().isFxSpot()).toBe(false);
70
118
  });
71
119
 
72
120
  function dummySecurity() {
@@ -110,8 +158,7 @@ function dummyBondSecurity() {
110
158
 
111
159
  function dummyEquity() {
112
160
  // Equity has no maturity / issue date in the proto, exercising the
113
- // null-return behavior on getIssueDate and the throw-on-missing
114
- // behavior on getMaturityDate.
161
+ // null-return behavior on the date accessors.
115
162
  return Security.create(new SecurityProto()
116
163
  .setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
117
164
  .setProductType(ProductTypeProto.COMMON_STOCK)
@@ -121,3 +168,51 @@ function dummyEquity() {
121
168
  );
122
169
  }
123
170
 
171
+ function dummyMbs() {
172
+ const bond = new BondDetailsProto()
173
+ .setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.04'))
174
+ .setCouponFrequency(CouponFrequencyProto.MONTHLY)
175
+ .setCouponType(CouponTypeProto.FIXED)
176
+ .setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('250000000'))
177
+ .setIssueDate(new LocalDateProto().setYear(2024).setMonth(1).setDay(1))
178
+ .setMaturityDate(new LocalDateProto().setYear(2054).setMonth(1).setDay(1));
179
+ const proto = new SecurityProto()
180
+ .setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
181
+ .setProductType(ProductTypeProto.MORTGAGE_BACKED)
182
+ .setAssetClass("FixedIncome")
183
+ .setIssuerName("FNMA")
184
+ .setBondDetails(bond);
185
+ // Pool number lives on the mbs_extension sub-message.
186
+ const MbsExtension = require('../../../fintekkers/models/security/security_pb').MbsExtensionProto;
187
+ proto.setMbsExtension(new MbsExtension().setPoolNumber('FN AS1234'));
188
+ return Security.create(proto);
189
+ }
190
+
191
+ function dummyIndex() {
192
+ return Security.create(new SecurityProto()
193
+ .setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
194
+ .setProductType(ProductTypeProto.CPI_SERIES)
195
+ .setAssetClass("Index")
196
+ .setIssuerName("BLS")
197
+ .setIndexDetails(new IndexDetailsProto().setIndexType(IndexTypeProto.CPI_U))
198
+ );
199
+ }
200
+
201
+ function dummyCash() {
202
+ return Security.create(new SecurityProto()
203
+ .setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
204
+ .setProductType(ProductTypeProto.CURRENCY)
205
+ .setAssetClass("Cash")
206
+ .setIssuerName("Federal Reserve")
207
+ );
208
+ }
209
+
210
+ function dummyFxSpot() {
211
+ return Security.create(new SecurityProto()
212
+ .setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
213
+ .setProductType(ProductTypeProto.FX_SPOT)
214
+ .setAssetClass("FX")
215
+ .setIssuerName("FX")
216
+ );
217
+ }
218
+
@@ -4,7 +4,7 @@ import { UUIDProto } from "../../../fintekkers/models/util/uuid_pb";
4
4
  import { LocalTimestampProto } from "../../../fintekkers/models/util/local_timestamp_pb";
5
5
  import { ZonedDateTime } from "../utils/datetime";
6
6
  import { UUID } from "../utils/uuid";
7
- import { LocalDate } from "../utils/date";
7
+ import { localDateProtoToDate } from "../utils/date";
8
8
  import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
9
9
  import { IdentifierTypeProto } from "../../../fintekkers/models/security/identifier/identifier_type_pb";
10
10
  import { Identifier } from "./identifier";
@@ -137,6 +137,59 @@ class Security {
137
137
  return isDescendantOf(ptName as string, 'BOND');
138
138
  }
139
139
 
140
+ /**
141
+ * Type guard: true iff this Security is a MortgageBackedSecurity (a
142
+ * descendant of STRUCTURED_BOND in hierarchy.json — MBS_PASSTHROUGH today,
143
+ * CMBS/ABS/CLO when those leaves become active).
144
+ */
145
+ isMbs(): this is import('./MortgageBackedSecurity').default {
146
+ return this.proto.getProductType() === ProductTypeProto.MORTGAGE_BACKED;
147
+ }
148
+
149
+ /**
150
+ * Type guard: true iff this Security is an IndexSecurity (any descendant
151
+ * of INDEX in hierarchy.json — CPI_SERIES, SOFR_SERIES, EQUITY_INDEX, ...).
152
+ */
153
+ isIndex(): this is import('./IndexSecurity').default {
154
+ const t = this.proto.getProductType();
155
+ const ptName = (Object.keys(ProductTypeProto) as Array<keyof typeof ProductTypeProto>)
156
+ .find(k => ProductTypeProto[k] === t);
157
+ if (!ptName) return false;
158
+ return isDescendantOf(ptName as string, 'INDEX');
159
+ }
160
+
161
+ /**
162
+ * Runtime predicate: true iff this Security wraps a cash currency
163
+ * (product_type == CURRENCY). No dedicated CashSecurity wrapper exists
164
+ * yet so this isn't a TS type-guard — the return is base Security.
165
+ */
166
+ isCash(): boolean {
167
+ return this.proto.getProductType() === ProductTypeProto.CURRENCY;
168
+ }
169
+
170
+ /**
171
+ * Runtime predicate: true iff this Security wraps a stock-shape product
172
+ * type (any descendant of STOCK in hierarchy.json — COMMON_STOCK,
173
+ * PREFERRED_STOCK, ADR, ETF). No dedicated EquitySecurity wrapper exists
174
+ * yet so this isn't a TS type-guard — the return is base Security.
175
+ */
176
+ isEquity(): boolean {
177
+ const t = this.proto.getProductType();
178
+ const ptName = (Object.keys(ProductTypeProto) as Array<keyof typeof ProductTypeProto>)
179
+ .find(k => ProductTypeProto[k] === t);
180
+ if (!ptName) return false;
181
+ return isDescendantOf(ptName as string, 'STOCK');
182
+ }
183
+
184
+ /**
185
+ * Runtime predicate: true iff this Security wraps an FX spot
186
+ * (product_type == FX_SPOT). No dedicated FxSpotSecurity wrapper exists
187
+ * yet so this isn't a TS type-guard — the return is base Security.
188
+ */
189
+ isFxSpot(): boolean {
190
+ return this.proto.getProductType() === ProductTypeProto.FX_SPOT;
191
+ }
192
+
140
193
 
141
194
  toString(): string {
142
195
  const ids = this.proto.getIsLink() ? [] : this.proto.getIdentifiersList();
@@ -257,32 +310,27 @@ class Security {
257
310
  * Returns null on equities/cash/etc. that don't have an issue date set,
258
311
  * rather than throwing — issue date is optional on the base Security.
259
312
  * For bond-specific code paths, prefer narrowing first via isBond() and
260
- * calling BondSecurity.getIssueDate() (which returns LocalDate, not null).
313
+ * calling BondSecurity.getIssueDate() (which is non-nullable on a
314
+ * properly-formed bond).
261
315
  */
262
- getIssueDate(): LocalDate | null {
316
+ getIssueDate(): Date | null {
263
317
  this.assertNotLink('issueDate');
264
318
  const bond = this.getBondLikeDetails();
265
319
  const date = bond ? bond.getIssueDate() : undefined;
266
- if (!date) return null;
267
- return new LocalDate(date);
320
+ return localDateProtoToDate(date);
268
321
  }
269
322
 
270
323
  /**
271
- * @deprecated Maturity date is a bond-only concept. On the base Security
272
- * this still throws when unset for backwards compatibility. Prefer
273
- * narrowing first:
274
- *
275
- * if (sec.isBond()) sec.getMaturityDate(); // BondSecurity, returns LocalDate
276
- *
277
- * In a future major version this method will move to BondSecurity only
278
- * and TS will catch the misuse at compile time.
324
+ * Returns the maturity date if set, else null. Maturity date is a
325
+ * bond-only concept; on non-bond securities this returns null rather
326
+ * than throwing. Prefer narrowing first via isBond() for bond-specific
327
+ * code paths.
279
328
  */
280
- getMaturityDate(): LocalDate {
329
+ getMaturityDate(): Date | null {
281
330
  this.assertNotLink('maturityDate');
282
331
  const bond = this.getBondLikeDetails();
283
332
  const date = bond ? bond.getMaturityDate() : undefined;
284
- if (!date) throw new Error("Maturity date is required");
285
- return new LocalDate(date);
333
+ return localDateProtoToDate(date);
286
334
  }
287
335
 
288
336
  /**
@@ -8,7 +8,6 @@ import Security from "../security/security";
8
8
  import Portfolio from "../portfolio/portfolio";
9
9
  import { ZonedDateTime } from "../utils/datetime";
10
10
  import { UUID } from "../utils/uuid";
11
- import { LocalDate } from "../utils/date";
12
11
  import { Decimal } from "decimal.js";
13
12
  interface TransactionConstructorParams {
14
13
  tradeDate: Date;
@@ -39,8 +38,8 @@ declare class Transaction {
39
38
  getQuantity(): Decimal;
40
39
  getIssuerName(): string;
41
40
  getDirectedQuantity(): Decimal;
42
- getTradeDate(): LocalDate;
43
- getSettlementDate(): LocalDate;
41
+ getTradeDate(): Date | null;
42
+ getSettlementDate(): Date | null;
44
43
  getTransactionType(): TransactionType;
45
44
  getTradeName(): string;
46
45
  getPositionStatus(): PositionStatusProto;
@@ -40,8 +40,8 @@ class Transaction {
40
40
  const asOfZonedDateTime = datetime_1.ZonedDateTime.from(params.asOfDate);
41
41
  transactionProto.setAsOf(asOfZonedDateTime.toProto());
42
42
  // Convert tradeDate and settlementDate to LocalDateProto
43
- transactionProto.setTradeDate(date_1.LocalDate.from(params.tradeDate).toProto());
44
- transactionProto.setSettlementDate(date_1.LocalDate.from(params.settlementDate).toProto());
43
+ transactionProto.setTradeDate((0, date_1.dateToLocalDateProto)(params.tradeDate));
44
+ transactionProto.setSettlementDate((0, date_1.dateToLocalDateProto)(params.settlementDate));
45
45
  // Create Price using Price.create() factory method
46
46
  const price = Price_1.default.create(params.price, params.security, asOfZonedDateTime);
47
47
  transactionProto.setPrice(price.proto);
@@ -63,13 +63,13 @@ class Transaction {
63
63
  return transactionProto;
64
64
  }
65
65
  toString() {
66
- var _a, _b, _c, _d, _e, _f;
66
+ var _a, _b, _c, _d, _e, _f, _g, _h;
67
67
  try {
68
68
  const validTo = (_b = (_a = this.proto.getValidTo()) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : "NULL";
69
69
  const validFrom = (_d = (_c = this.proto.getValidFrom()) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : "NULL";
70
70
  const strategyAllocation = (_f = (_e = this.proto.getStrategyAllocation()) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : "NULL";
71
71
  return `${ /*this.proto.isCancelled()*/false ? "INVALIDATED: " : ""}TXN[${this.getID().toString()}], ` +
72
- `TradeDate[${this.getTradeDate().toString()}], TxnType[${this.getTransactionType()}], Price[${this.getPrice()}], Quantity[${this.getQuantity()}], ` +
72
+ `TradeDate[${(_h = (_g = this.getTradeDate()) === null || _g === void 0 ? void 0 : _g.toString()) !== null && _h !== void 0 ? _h : "NULL"}], TxnType[${this.getTransactionType()}], Price[${this.getPrice()}], Quantity[${this.getQuantity()}], ` +
73
73
  `AsOf[${this.getAsOf().toString()}], Portfolio[${this.getPortfolio().getPortfolioName()}], Issuer[${this.getSecurity().getIssuerName()}], ` +
74
74
  `ValidFrom[${validFrom}], ValidTo[${validTo}], Strategy[${strategyAllocation}]`;
75
75
  }
@@ -156,16 +156,10 @@ class Transaction {
156
156
  return this.getQuantity().mul(this.getTransactionType().getDirectionMultiplier());
157
157
  }
158
158
  getTradeDate() {
159
- const tradeDate = this.proto.getTradeDate();
160
- if (!tradeDate)
161
- throw new Error("TradeDate is required");
162
- return new date_1.LocalDate(tradeDate);
159
+ return (0, date_1.localDateProtoToDate)(this.proto.getTradeDate());
163
160
  }
164
161
  getSettlementDate() {
165
- const settlementDate = this.proto.getSettlementDate();
166
- if (!settlementDate)
167
- throw new Error("SettlementDate is required");
168
- return new date_1.LocalDate(settlementDate);
162
+ return (0, date_1.localDateProtoToDate)(this.proto.getSettlementDate());
169
163
  }
170
164
  getTransactionType() {
171
165
  return new transaction_type_1.TransactionType(this.proto.getTransactionType());
@@ -253,8 +247,9 @@ class Transaction {
253
247
  const BondSecurity = require('../security/BondSecurity').default;
254
248
  const bondSecurity = new BondSecurity(parentTransaction.getSecurity().proto);
255
249
  const priceScaleFactor = bondSecurity.getPriceScaleFactor();
256
- const faceValueProto = bondSecurity.getFaceValue();
257
- const faceValue = new decimal_js_1.Decimal(faceValueProto.getArbitraryPrecisionValue());
250
+ const faceValue = bondSecurity.getFaceValue();
251
+ if (!faceValue)
252
+ throw new Error("Face value is required for bond cash impact calculation");
258
253
  const priceProto = parentTransaction.getPrice();
259
254
  const priceValue = new decimal_js_1.Decimal(((_a = priceProto.getPrice()) === null || _a === void 0 ? void 0 : _a.getArbitraryPrecisionValue()) || '0');
260
255
  const scaledPrice = priceValue.mul(priceScaleFactor);
@@ -271,10 +266,16 @@ class Transaction {
271
266
  }
272
267
  // Get asOf ZonedDateTime
273
268
  const asOf = parentTransaction.getAsOf();
269
+ const tradeDate = parentTransaction.getTradeDate();
270
+ const settlementDate = parentTransaction.getSettlementDate();
271
+ if (!tradeDate)
272
+ throw new Error("TradeDate is required to derive a cash transaction");
273
+ if (!settlementDate)
274
+ throw new Error("SettlementDate is required to derive a cash transaction");
274
275
  // Create cash transaction using parameter-based constructor
275
276
  const cashTransaction = new Transaction({
276
- tradeDate: parentTransaction.getTradeDate().toDate(),
277
- settlementDate: parentTransaction.getSettlementDate().toDate(),
277
+ tradeDate,
278
+ settlementDate,
278
279
  asOfDate: asOf.toDateTime().toJSDate(),
279
280
  price: new decimal_js_1.Decimal('1.0'),
280
281
  security: cashSecurity,
@@ -304,10 +305,11 @@ class Transaction {
304
305
  const bondSecurity = new BondSecurity(transaction.getSecurity().proto);
305
306
  // Get maturity date
306
307
  const maturityDate = bondSecurity.getMaturityDate();
308
+ if (!maturityDate)
309
+ throw new Error("Maturity date is required to derive a maturation transaction");
307
310
  // Calculate settlement date: maturity date + 2 days
308
- const maturityDateObj = maturityDate.toDate();
309
- maturityDateObj.setDate(maturityDateObj.getDate() + 2);
310
- const settlementDate = date_1.LocalDate.from(maturityDateObj);
311
+ const settlementDate = new Date(maturityDate.getTime());
312
+ settlementDate.setDate(settlementDate.getDate() + 2);
311
313
  // Get price as Decimal
312
314
  const priceProto = transaction.getPrice();
313
315
  const priceValue = new decimal_js_1.Decimal(((_a = priceProto.getPrice()) === null || _a === void 0 ? void 0 : _a.getArbitraryPrecisionValue()) || '0');
@@ -315,8 +317,8 @@ class Transaction {
315
317
  const asOf = transaction.getAsOf();
316
318
  // Create maturation transaction
317
319
  const maturation = new Transaction({
318
- tradeDate: maturityDate.toDate(),
319
- settlementDate: settlementDate.toDate(),
320
+ tradeDate: maturityDate,
321
+ settlementDate,
320
322
  asOfDate: asOf.toDateTime().toJSDate(),
321
323
  price: priceValue,
322
324
  security: transaction.getSecurity(),
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["transaction.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ import { ProductTypeProto } from "../../../fintekkers/models/security/product_ty
16
16
  //Model Utils
17
17
  import { ZonedDateTime } from "../utils/datetime";
18
18
  import { UUID } from "../utils/uuid";
19
- import { LocalDate } from "../utils/date";
19
+ import { dateToLocalDateProto, localDateProtoToDate } from "../utils/date";
20
20
  import { Decimal } from "decimal.js";
21
21
 
22
22
  interface TransactionConstructorParams {
@@ -55,8 +55,8 @@ class Transaction {
55
55
  transactionProto.setAsOf(asOfZonedDateTime.toProto());
56
56
 
57
57
  // Convert tradeDate and settlementDate to LocalDateProto
58
- transactionProto.setTradeDate(LocalDate.from(params.tradeDate).toProto());
59
- transactionProto.setSettlementDate(LocalDate.from(params.settlementDate).toProto());
58
+ transactionProto.setTradeDate(dateToLocalDateProto(params.tradeDate));
59
+ transactionProto.setSettlementDate(dateToLocalDateProto(params.settlementDate));
60
60
 
61
61
  // Create Price using Price.create() factory method
62
62
  const price = Price.create(params.price, params.security, asOfZonedDateTime);
@@ -96,7 +96,7 @@ class Transaction {
96
96
  this.proto.getStrategyAllocation()?.toString() ?? "NULL";
97
97
 
98
98
  return `${/*this.proto.isCancelled()*/ false ? "INVALIDATED: " : ""}TXN[${this.getID().toString()}], ` +
99
- `TradeDate[${this.getTradeDate().toString()}], TxnType[${this.getTransactionType()}], Price[${this.getPrice()}], Quantity[${this.getQuantity()}], ` +
99
+ `TradeDate[${this.getTradeDate()?.toString() ?? "NULL"}], TxnType[${this.getTransactionType()}], Price[${this.getPrice()}], Quantity[${this.getQuantity()}], ` +
100
100
  `AsOf[${this.getAsOf().toString()}], Portfolio[${this.getPortfolio().getPortfolioName()}], Issuer[${this.getSecurity().getIssuerName()}], ` +
101
101
  `ValidFrom[${validFrom}], ValidTo[${validTo}], Strategy[${strategyAllocation}]`;
102
102
  } catch (e) {
@@ -186,16 +186,12 @@ class Transaction {
186
186
  return this.getQuantity().mul(this.getTransactionType().getDirectionMultiplier());
187
187
  }
188
188
 
189
- getTradeDate(): LocalDate {
190
- const tradeDate = this.proto.getTradeDate();
191
- if (!tradeDate) throw new Error("TradeDate is required");
192
- return new LocalDate(tradeDate);
189
+ getTradeDate(): Date | null {
190
+ return localDateProtoToDate(this.proto.getTradeDate());
193
191
  }
194
192
 
195
- getSettlementDate(): LocalDate {
196
- const settlementDate = this.proto.getSettlementDate();
197
- if (!settlementDate) throw new Error("SettlementDate is required");
198
- return new LocalDate(settlementDate);
193
+ getSettlementDate(): Date | null {
194
+ return localDateProtoToDate(this.proto.getSettlementDate());
199
195
  }
200
196
 
201
197
  getTransactionType(): TransactionType {
@@ -291,8 +287,8 @@ class Transaction {
291
287
  const bondSecurity = new BondSecurity(parentTransaction.getSecurity().proto);
292
288
 
293
289
  const priceScaleFactor = bondSecurity.getPriceScaleFactor();
294
- const faceValueProto = bondSecurity.getFaceValue();
295
- const faceValue = new Decimal(faceValueProto.getArbitraryPrecisionValue());
290
+ const faceValue = bondSecurity.getFaceValue();
291
+ if (!faceValue) throw new Error("Face value is required for bond cash impact calculation");
296
292
 
297
293
  const priceProto = parentTransaction.getPrice();
298
294
  const priceValue = new Decimal(priceProto.getPrice()?.getArbitraryPrecisionValue() || '0');
@@ -313,10 +309,15 @@ class Transaction {
313
309
  // Get asOf ZonedDateTime
314
310
  const asOf = parentTransaction.getAsOf();
315
311
 
312
+ const tradeDate = parentTransaction.getTradeDate();
313
+ const settlementDate = parentTransaction.getSettlementDate();
314
+ if (!tradeDate) throw new Error("TradeDate is required to derive a cash transaction");
315
+ if (!settlementDate) throw new Error("SettlementDate is required to derive a cash transaction");
316
+
316
317
  // Create cash transaction using parameter-based constructor
317
318
  const cashTransaction = new Transaction({
318
- tradeDate: parentTransaction.getTradeDate().toDate(),
319
- settlementDate: parentTransaction.getSettlementDate().toDate(),
319
+ tradeDate,
320
+ settlementDate,
320
321
  asOfDate: asOf.toDateTime().toJSDate(),
321
322
  price: new Decimal('1.0'), // Cash price is always 1.0
322
323
  security: cashSecurity,
@@ -351,11 +352,11 @@ class Transaction {
351
352
 
352
353
  // Get maturity date
353
354
  const maturityDate = bondSecurity.getMaturityDate();
355
+ if (!maturityDate) throw new Error("Maturity date is required to derive a maturation transaction");
354
356
 
355
357
  // Calculate settlement date: maturity date + 2 days
356
- const maturityDateObj = maturityDate.toDate();
357
- maturityDateObj.setDate(maturityDateObj.getDate() + 2);
358
- const settlementDate = LocalDate.from(maturityDateObj);
358
+ const settlementDate = new Date(maturityDate.getTime());
359
+ settlementDate.setDate(settlementDate.getDate() + 2);
359
360
 
360
361
  // Get price as Decimal
361
362
  const priceProto = transaction.getPrice();
@@ -366,8 +367,8 @@ class Transaction {
366
367
 
367
368
  // Create maturation transaction
368
369
  const maturation = new Transaction({
369
- tradeDate: maturityDate.toDate(),
370
- settlementDate: settlementDate.toDate(),
370
+ tradeDate: maturityDate,
371
+ settlementDate,
371
372
  asOfDate: asOf.toDateTime().toJSDate(),
372
373
  price: priceValue,
373
374
  security: transaction.getSecurity(),
@@ -45,12 +45,14 @@ function testTransactionConstructor() {
45
45
  });
46
46
  // Verify all getters return expected values
47
47
  // getTradeDate() - should match input tradeDate
48
- const tradeDateFromTransaction = transaction.getTradeDate().toDate();
48
+ const tradeDateFromTransaction = transaction.getTradeDate();
49
+ assert(tradeDateFromTransaction !== null, 'TradeDate should not be null');
49
50
  assert(tradeDateFromTransaction.getFullYear() === tradeDate.getFullYear());
50
51
  assert(tradeDateFromTransaction.getMonth() === tradeDate.getMonth());
51
52
  assert(tradeDateFromTransaction.getDate() === tradeDate.getDate());
52
53
  // getSettlementDate() - should match input settlementDate
53
- const settlementDateFromTransaction = transaction.getSettlementDate().toDate();
54
+ const settlementDateFromTransaction = transaction.getSettlementDate();
55
+ assert(settlementDateFromTransaction !== null, 'SettlementDate should not be null');
54
56
  assert(settlementDateFromTransaction.getFullYear() === settlementDate.getFullYear());
55
57
  assert(settlementDateFromTransaction.getMonth() === settlementDate.getMonth());
56
58
  assert(settlementDateFromTransaction.getDate() === settlementDate.getDate());
@@ -1 +1 @@
1
- {"version":3,"file":"transaction_constructor.test.js","sourceRoot":"","sources":["transaction_constructor.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction_constructor.test.js","sourceRoot":"","sources":["transaction_constructor.test.ts"],"names":[],"mappings":"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"}
@@ -46,16 +46,18 @@ function testTransactionConstructor(): void {
46
46
  // Verify all getters return expected values
47
47
 
48
48
  // getTradeDate() - should match input tradeDate
49
- const tradeDateFromTransaction = transaction.getTradeDate().toDate();
50
- assert(tradeDateFromTransaction.getFullYear() === tradeDate.getFullYear());
51
- assert(tradeDateFromTransaction.getMonth() === tradeDate.getMonth());
52
- assert(tradeDateFromTransaction.getDate() === tradeDate.getDate());
49
+ const tradeDateFromTransaction = transaction.getTradeDate();
50
+ assert(tradeDateFromTransaction !== null, 'TradeDate should not be null');
51
+ assert(tradeDateFromTransaction!.getFullYear() === tradeDate.getFullYear());
52
+ assert(tradeDateFromTransaction!.getMonth() === tradeDate.getMonth());
53
+ assert(tradeDateFromTransaction!.getDate() === tradeDate.getDate());
53
54
 
54
55
  // getSettlementDate() - should match input settlementDate
55
- const settlementDateFromTransaction = transaction.getSettlementDate().toDate();
56
- assert(settlementDateFromTransaction.getFullYear() === settlementDate.getFullYear());
57
- assert(settlementDateFromTransaction.getMonth() === settlementDate.getMonth());
58
- assert(settlementDateFromTransaction.getDate() === settlementDate.getDate());
56
+ const settlementDateFromTransaction = transaction.getSettlementDate();
57
+ assert(settlementDateFromTransaction !== null, 'SettlementDate should not be null');
58
+ assert(settlementDateFromTransaction!.getFullYear() === settlementDate.getFullYear());
59
+ assert(settlementDateFromTransaction!.getMonth() === settlementDate.getMonth());
60
+ assert(settlementDateFromTransaction!.getDate() === settlementDate.getDate());
59
61
 
60
62
  // getAsOf() - should match input asOfDate (converted to ZonedDateTime)
61
63
  const asOfFromTransaction = transaction.getAsOf();