@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
@@ -1,8 +1,6 @@
1
1
  import Security from './security';
2
2
  import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/security/security_pb';
3
3
  import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
4
- import { LocalDateProto } from '../../../fintekkers/models/util/local_date_pb';
5
- import { LocalDate } from '../utils/date';
6
4
  import { CouponFrequency } from './coupon_frequency';
7
5
  import { CouponType } from './coupon_type';
8
6
  import { Tenor } from './term';
@@ -19,15 +17,9 @@ export interface BondPricerInputs {
19
17
  couponRate: Decimal;
20
18
  couponType: CouponTypeProto;
21
19
  couponFrequency: CouponFrequencyProto;
22
- issueDate: LocalDate;
23
- maturityDate: LocalDate;
20
+ issueDate: Date;
21
+ maturityDate: Date;
24
22
  }
25
- /**
26
- * Build a LocalDateProto from a LocalDate wrapper. Exported so subclass
27
- * builders (TIPSBond, FloatingRateNote) can re-use it without poking at
28
- * LocalDate's proto privately.
29
- */
30
- export declare function localDateToProto(d: LocalDate): LocalDateProto;
31
23
  /** Build a DecimalValueProto from a Decimal. */
32
24
  export declare function decimalToProto(v: Decimal): DecimalValueProto;
33
25
  /**
@@ -50,11 +42,11 @@ declare class BondSecurity extends Security {
50
42
  * This method handles month and year boundaries correctly.
51
43
  */
52
44
  private calculatePeriod;
53
- getCouponRate(): DecimalValueProto;
54
- getFaceValue(): DecimalValueProto;
45
+ getCouponRate(): Decimal | null;
46
+ getFaceValue(): Decimal | null;
55
47
  getCouponType(): CouponType;
56
48
  getCouponFrequency(): CouponFrequency;
57
- getDatedDate(): LocalDate | undefined;
49
+ getDatedDate(): Date | null;
58
50
  /**
59
51
  * Returns every auction/reopening record on this bond as typed Issuance
60
52
  * wrappers. Empty list if bond_details is unset or has no issuances.
@@ -73,14 +65,6 @@ declare class BondSecurity extends Security {
73
65
  * @returns The price scale factor as a Decimal (0.01)
74
66
  */
75
67
  getPriceScaleFactor(): Decimal;
76
- /**
77
- * Bond issue date is the auction date and is required for bonds.
78
- * Overrides Security.getIssueDate (which returns LocalDate | null on the
79
- * base) with a non-nullable return type — for a properly-formed bond,
80
- * issue date is always present, and TS callers narrowed via isBond()
81
- * shouldn't have to null-check.
82
- */
83
- getIssueDate(): LocalDate;
84
68
  getProductType(): string;
85
69
  }
86
70
  export default BondSecurity;
@@ -11,11 +11,11 @@ const product_type_pb_1 = require("../../../fintekkers/models/security/product_t
11
11
  const coupon_type_pb_1 = require("../../../fintekkers/models/security/coupon_type_pb");
12
12
  const coupon_frequency_pb_1 = require("../../../fintekkers/models/security/coupon_frequency_pb");
13
13
  const index_type_pb_1 = require("../../../fintekkers/models/security/index/index_type_pb");
14
- const date_1 = require("../utils/date");
15
- const local_date_pb_1 = require("../../../fintekkers/models/util/local_date_pb");
16
14
  const decimal_js_1 = require("decimal.js");
17
15
  function makeDate(y, m, d) {
18
- return new date_1.LocalDate(new local_date_pb_1.LocalDateProto().setYear(y).setMonth(m).setDay(d));
16
+ const date = new Date(y, m - 1, d);
17
+ date.setHours(0, 0, 0, 0);
18
+ return date;
19
19
  }
20
20
  const baseInputs = {
21
21
  faceValue: new decimal_js_1.Decimal('1000'),
@@ -31,15 +31,19 @@ test('BondSecurity.fromPricerInputs round-trips through Security.create as a Bon
31
31
  const sec = security_1.default.create(proto);
32
32
  expect(sec).toBeInstanceOf(BondSecurity_1.default);
33
33
  const bond = sec;
34
- expect(bond.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
35
- expect(bond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
34
+ expect(bond.getCouponRate().equals(new decimal_js_1.Decimal('0.045'))).toBe(true);
35
+ expect(bond.getFaceValue().equals(new decimal_js_1.Decimal('1000'))).toBe(true);
36
36
  expect(bond.getCouponType().name()).toBe('FIXED');
37
37
  expect(bond.getCouponFrequency().toString()).toBe('SEMIANNUALLY');
38
- expect(bond.getIssueDate().toDate().getFullYear()).toBe(2024);
39
- expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2034);
38
+ const issueDate = bond.getIssueDate();
39
+ const maturityDate = bond.getMaturityDate();
40
+ expect(issueDate).toBeInstanceOf(Date);
41
+ expect(maturityDate).toBeInstanceOf(Date);
42
+ expect(issueDate.getFullYear()).toBe(2024);
43
+ expect(maturityDate.getFullYear()).toBe(2034);
40
44
  });
41
45
  test('TIPSBond.fromPricerInputs round-trips with tips_extension populated', () => {
42
- var _a, _b;
46
+ var _a;
43
47
  const proto = TIPSBond_1.default.fromPricerInputs(Object.assign(Object.assign({}, baseInputs), { baseCpi: new decimal_js_1.Decimal('301.5'), indexDate: makeDate(2024, 1, 15), inflationIndexType: index_type_pb_1.IndexTypeProto.CPI_U }));
44
48
  expect(proto.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TIPS);
45
49
  expect(proto.hasTipsExtension()).toBe(true);
@@ -47,10 +51,12 @@ test('TIPSBond.fromPricerInputs round-trips with tips_extension populated', () =
47
51
  expect(sec).toBeInstanceOf(TIPSBond_1.default);
48
52
  const tips = sec;
49
53
  // Bond-side checks (inherited from BondSecurity)
50
- expect(tips.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
54
+ expect(tips.getCouponRate().equals(new decimal_js_1.Decimal('0.045'))).toBe(true);
51
55
  // TIPS-specific checks
52
56
  expect((_a = tips.getBaseCpi()) === null || _a === void 0 ? void 0 : _a.toString()).toBe('301.5');
53
- expect((_b = tips.getIndexDate()) === null || _b === void 0 ? void 0 : _b.toDate().getFullYear()).toBe(2024);
57
+ const indexDate = tips.getIndexDate();
58
+ expect(indexDate).toBeInstanceOf(Date);
59
+ expect(indexDate.getFullYear()).toBe(2024);
54
60
  expect(tips.getInflationIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
55
61
  });
56
62
  test('FloatingRateNote.fromPricerInputs round-trips with frn_extension populated', () => {
@@ -61,7 +67,7 @@ test('FloatingRateNote.fromPricerInputs round-trips with frn_extension populated
61
67
  const sec = security_1.default.create(proto);
62
68
  expect(sec).toBeInstanceOf(FloatingRateNote_1.default);
63
69
  const frn = sec;
64
- expect(frn.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
70
+ expect(frn.getCouponRate().equals(new decimal_js_1.Decimal('0.045'))).toBe(true);
65
71
  expect((_a = frn.getSpread()) === null || _a === void 0 ? void 0 : _a.toString()).toBe('0.0015');
66
72
  expect(frn.getReferenceRateIndex()).toBe(index_type_pb_1.IndexTypeProto.SOFR);
67
73
  expect(frn.getResetFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
@@ -1 +1 @@
1
- {"version":3,"file":"BondSecurity.fromPricerInputs.test.js","sourceRoot":"","sources":["BondSecurity.fromPricerInputs.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BondSecurity.fromPricerInputs.test.js","sourceRoot":"","sources":["BondSecurity.fromPricerInputs.test.ts"],"names":[],"mappings":"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"}
@@ -6,12 +6,12 @@ import { ProductTypeProto } from '../../../fintekkers/models/security/product_ty
6
6
  import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
7
7
  import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
8
8
  import { IndexTypeProto } from '../../../fintekkers/models/security/index/index_type_pb';
9
- import { LocalDate } from '../utils/date';
10
- import { LocalDateProto } from '../../../fintekkers/models/util/local_date_pb';
11
9
  import { Decimal } from 'decimal.js';
12
10
 
13
- function makeDate(y: number, m: number, d: number): LocalDate {
14
- return new LocalDate(new LocalDateProto().setYear(y).setMonth(m).setDay(d));
11
+ function makeDate(y: number, m: number, d: number): Date {
12
+ const date = new Date(y, m - 1, d);
13
+ date.setHours(0, 0, 0, 0);
14
+ return date;
15
15
  }
16
16
 
17
17
  const baseInputs = {
@@ -29,12 +29,16 @@ test('BondSecurity.fromPricerInputs round-trips through Security.create as a Bon
29
29
  const sec = Security.create(proto);
30
30
  expect(sec).toBeInstanceOf(BondSecurity);
31
31
  const bond = sec as BondSecurity;
32
- expect(bond.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
33
- expect(bond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
32
+ expect(bond.getCouponRate()!.equals(new Decimal('0.045'))).toBe(true);
33
+ expect(bond.getFaceValue()!.equals(new Decimal('1000'))).toBe(true);
34
34
  expect(bond.getCouponType().name()).toBe('FIXED');
35
35
  expect(bond.getCouponFrequency().toString()).toBe('SEMIANNUALLY');
36
- expect(bond.getIssueDate().toDate().getFullYear()).toBe(2024);
37
- expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2034);
36
+ const issueDate = bond.getIssueDate();
37
+ const maturityDate = bond.getMaturityDate();
38
+ expect(issueDate).toBeInstanceOf(Date);
39
+ expect(maturityDate).toBeInstanceOf(Date);
40
+ expect(issueDate!.getFullYear()).toBe(2024);
41
+ expect(maturityDate!.getFullYear()).toBe(2034);
38
42
  });
39
43
 
40
44
  test('TIPSBond.fromPricerInputs round-trips with tips_extension populated', () => {
@@ -51,10 +55,12 @@ test('TIPSBond.fromPricerInputs round-trips with tips_extension populated', () =
51
55
  expect(sec).toBeInstanceOf(TIPSBond);
52
56
  const tips = sec as TIPSBond;
53
57
  // Bond-side checks (inherited from BondSecurity)
54
- expect(tips.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
58
+ expect(tips.getCouponRate()!.equals(new Decimal('0.045'))).toBe(true);
55
59
  // TIPS-specific checks
56
60
  expect(tips.getBaseCpi()?.toString()).toBe('301.5');
57
- expect(tips.getIndexDate()?.toDate().getFullYear()).toBe(2024);
61
+ const indexDate = tips.getIndexDate();
62
+ expect(indexDate).toBeInstanceOf(Date);
63
+ expect(indexDate!.getFullYear()).toBe(2024);
58
64
  expect(tips.getInflationIndexType()).toBe(IndexTypeProto.CPI_U);
59
65
  });
60
66
 
@@ -71,7 +77,7 @@ test('FloatingRateNote.fromPricerInputs round-trips with frn_extension populated
71
77
  const sec = Security.create(proto);
72
78
  expect(sec).toBeInstanceOf(FloatingRateNote);
73
79
  const frn = sec as FloatingRateNote;
74
- expect(frn.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
80
+ expect(frn.getCouponRate()!.equals(new Decimal('0.045'))).toBe(true);
75
81
  expect(frn.getSpread()?.toString()).toBe('0.0015');
76
82
  expect(frn.getReferenceRateIndex()).toBe(IndexTypeProto.SOFR);
77
83
  expect(frn.getResetFrequency()).toBe(CouponFrequencyProto.QUARTERLY);
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.buildBondDetails = exports.decimalToProto = exports.localDateToProto = void 0;
6
+ exports.buildBondDetails = exports.decimalToProto = void 0;
7
7
  const security_1 = __importDefault(require("./security"));
8
8
  const security_pb_1 = require("../../../fintekkers/models/security/security_pb");
9
9
  const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
@@ -16,15 +16,6 @@ const tenor_type_pb_1 = require("../../../fintekkers/models/security/tenor_type_
16
16
  const decimal_js_1 = require("decimal.js");
17
17
  const product_hierarchy_1 = require("./product_hierarchy");
18
18
  const Issuance_1 = __importDefault(require("./Issuance"));
19
- /**
20
- * Build a LocalDateProto from a LocalDate wrapper. Exported so subclass
21
- * builders (TIPSBond, FloatingRateNote) can re-use it without poking at
22
- * LocalDate's proto privately.
23
- */
24
- function localDateToProto(d) {
25
- return d.toProto();
26
- }
27
- exports.localDateToProto = localDateToProto;
28
19
  /** Build a DecimalValueProto from a Decimal. */
29
20
  function decimalToProto(v) {
30
21
  return new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue(v.toString());
@@ -40,8 +31,8 @@ function buildBondDetails(args) {
40
31
  .setCouponRate(decimalToProto(args.couponRate))
41
32
  .setCouponType(args.couponType)
42
33
  .setCouponFrequency(args.couponFrequency)
43
- .setIssueDate(localDateToProto(args.issueDate))
44
- .setMaturityDate(localDateToProto(args.maturityDate));
34
+ .setIssueDate((0, date_1.dateToLocalDateProto)(args.issueDate))
35
+ .setMaturityDate((0, date_1.dateToLocalDateProto)(args.maturityDate));
45
36
  }
46
37
  exports.buildBondDetails = buildBondDetails;
47
38
  class BondSecurity extends security_1.default {
@@ -66,8 +57,13 @@ class BondSecurity extends security_1.default {
66
57
  * @returns The tenor (term) of the bond as a Tenor object.
67
58
  */
68
59
  getTenor(asOfDate) {
69
- const startDate = asOfDate ? asOfDate : this.getIssueDate().toDate();
70
- const maturityDate = this.getMaturityDate().toDate();
60
+ const issueDate = this.getIssueDate();
61
+ const maturityDate = this.getMaturityDate();
62
+ if (!issueDate)
63
+ throw new Error("Issue date is required for getTenor");
64
+ if (!maturityDate)
65
+ throw new Error("Maturity date is required for getTenor");
66
+ const startDate = asOfDate ? asOfDate : issueDate;
71
67
  // Calculate the period between issue date and maturity date
72
68
  const period = this.calculatePeriod(startDate, maturityDate);
73
69
  return new term_1.Tenor(tenor_type_pb_1.TenorTypeProto.TERM, period);
@@ -102,15 +98,15 @@ class BondSecurity extends security_1.default {
102
98
  const bond = this.getBondLikeDetails();
103
99
  const rate = bond ? bond.getCouponRate() : undefined;
104
100
  if (!rate)
105
- throw new Error("Coupon rate is required for bonds");
106
- return rate;
101
+ return null;
102
+ return new decimal_js_1.Decimal(rate.getArbitraryPrecisionValue());
107
103
  }
108
104
  getFaceValue() {
109
105
  const bond = this.getBondLikeDetails();
110
106
  const faceValue = bond ? bond.getFaceValue() : undefined;
111
107
  if (!faceValue)
112
- throw new Error("Face value is required for bonds");
113
- return faceValue;
108
+ return null;
109
+ return new decimal_js_1.Decimal(faceValue.getArbitraryPrecisionValue());
114
110
  }
115
111
  getCouponType() {
116
112
  const bond = this.getBondLikeDetails();
@@ -129,7 +125,7 @@ class BondSecurity extends security_1.default {
129
125
  getDatedDate() {
130
126
  const bond = this.getBondLikeDetails();
131
127
  const datedDate = bond ? bond.getDatedDate() : undefined;
132
- return datedDate ? new date_1.LocalDate(datedDate) : undefined;
128
+ return (0, date_1.localDateProtoToDate)(datedDate);
133
129
  }
134
130
  /**
135
131
  * Returns every auction/reopening record on this bond as typed Issuance
@@ -160,19 +156,6 @@ class BondSecurity extends security_1.default {
160
156
  getPriceScaleFactor() {
161
157
  return new decimal_js_1.Decimal('0.01');
162
158
  }
163
- /**
164
- * Bond issue date is the auction date and is required for bonds.
165
- * Overrides Security.getIssueDate (which returns LocalDate | null on the
166
- * base) with a non-nullable return type — for a properly-formed bond,
167
- * issue date is always present, and TS callers narrowed via isBond()
168
- * shouldn't have to null-check.
169
- */
170
- getIssueDate() {
171
- const date = super.getIssueDate();
172
- if (!date)
173
- throw new Error("Issue date is required for bonds");
174
- return date;
175
- }
176
159
  getProductType() {
177
160
  // Only BondSecurity has getTenor implemented
178
161
  // Check if getTenor method exists (it's only in BondSecurity)
@@ -1 +1 @@
1
- {"version":3,"file":"BondSecurity.js","sourceRoot":"","sources":["BondSecurity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BondSecurity.js","sourceRoot":"","sources":["BondSecurity.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/secu
3
3
  import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
4
4
  import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
5
5
  import { LocalDateProto } from '../../../fintekkers/models/util/local_date_pb';
6
- import { LocalDate } from '../utils/date';
6
+ import { dateToLocalDateProto, localDateProtoToDate } from '../utils/date';
7
7
  import { IssuanceProto } from '../../../fintekkers/models/security/bond/issuance_pb';
8
8
  import { CouponFrequency } from './coupon_frequency';
9
9
  import { CouponType } from './coupon_type';
@@ -24,17 +24,8 @@ export interface BondPricerInputs {
24
24
  couponRate: Decimal;
25
25
  couponType: CouponTypeProto;
26
26
  couponFrequency: CouponFrequencyProto;
27
- issueDate: LocalDate;
28
- maturityDate: LocalDate;
29
- }
30
-
31
- /**
32
- * Build a LocalDateProto from a LocalDate wrapper. Exported so subclass
33
- * builders (TIPSBond, FloatingRateNote) can re-use it without poking at
34
- * LocalDate's proto privately.
35
- */
36
- export function localDateToProto(d: LocalDate): LocalDateProto {
37
- return d.toProto();
27
+ issueDate: Date;
28
+ maturityDate: Date;
38
29
  }
39
30
 
40
31
  /** Build a DecimalValueProto from a Decimal. */
@@ -52,8 +43,8 @@ export function buildBondDetails(args: BondPricerInputs): BondDetailsProto {
52
43
  .setCouponRate(decimalToProto(args.couponRate))
53
44
  .setCouponType(args.couponType)
54
45
  .setCouponFrequency(args.couponFrequency)
55
- .setIssueDate(localDateToProto(args.issueDate))
56
- .setMaturityDate(localDateToProto(args.maturityDate));
46
+ .setIssueDate(dateToLocalDateProto(args.issueDate))
47
+ .setMaturityDate(dateToLocalDateProto(args.maturityDate));
57
48
  }
58
49
 
59
50
  class BondSecurity extends Security {
@@ -81,8 +72,11 @@ class BondSecurity extends Security {
81
72
  * @returns The tenor (term) of the bond as a Tenor object.
82
73
  */
83
74
  getTenor(asOfDate?: Date): Tenor {
84
- const startDate = asOfDate ? asOfDate : this.getIssueDate().toDate();
85
- const maturityDate = this.getMaturityDate().toDate();
75
+ const issueDate = this.getIssueDate();
76
+ const maturityDate = this.getMaturityDate();
77
+ if (!issueDate) throw new Error("Issue date is required for getTenor");
78
+ if (!maturityDate) throw new Error("Maturity date is required for getTenor");
79
+ const startDate = asOfDate ? asOfDate : issueDate;
86
80
 
87
81
  // Calculate the period between issue date and maturity date
88
82
  const period = this.calculatePeriod(startDate, maturityDate);
@@ -120,18 +114,18 @@ class BondSecurity extends Security {
120
114
  };
121
115
  }
122
116
 
123
- getCouponRate(): DecimalValueProto {
117
+ getCouponRate(): Decimal | null {
124
118
  const bond = this.getBondLikeDetails();
125
119
  const rate = bond ? bond.getCouponRate() : undefined;
126
- if (!rate) throw new Error("Coupon rate is required for bonds");
127
- return rate;
120
+ if (!rate) return null;
121
+ return new Decimal(rate.getArbitraryPrecisionValue());
128
122
  }
129
123
 
130
- getFaceValue(): DecimalValueProto {
124
+ getFaceValue(): Decimal | null {
131
125
  const bond = this.getBondLikeDetails();
132
126
  const faceValue = bond ? bond.getFaceValue() : undefined;
133
- if (!faceValue) throw new Error("Face value is required for bonds");
134
- return faceValue;
127
+ if (!faceValue) return null;
128
+ return new Decimal(faceValue.getArbitraryPrecisionValue());
135
129
  }
136
130
 
137
131
  getCouponType(): CouponType {
@@ -148,10 +142,10 @@ class BondSecurity extends Security {
148
142
  return new CouponFrequency(couponFrequency);
149
143
  }
150
144
 
151
- getDatedDate(): LocalDate | undefined {
145
+ getDatedDate(): Date | null {
152
146
  const bond = this.getBondLikeDetails();
153
147
  const datedDate = bond ? bond.getDatedDate() : undefined;
154
- return datedDate ? new LocalDate(datedDate) : undefined;
148
+ return localDateProtoToDate(datedDate);
155
149
  }
156
150
 
157
151
  /**
@@ -186,19 +180,6 @@ class BondSecurity extends Security {
186
180
  return new Decimal('0.01');
187
181
  }
188
182
 
189
- /**
190
- * Bond issue date is the auction date and is required for bonds.
191
- * Overrides Security.getIssueDate (which returns LocalDate | null on the
192
- * base) with a non-nullable return type — for a properly-formed bond,
193
- * issue date is always present, and TS callers narrowed via isBond()
194
- * shouldn't have to null-check.
195
- */
196
- getIssueDate(): LocalDate {
197
- const date = super.getIssueDate();
198
- if (!date) throw new Error("Issue date is required for bonds");
199
- return date;
200
- }
201
-
202
183
  getProductType(): string {
203
184
  // Only BondSecurity has getTenor implemented
204
185
  // Check if getTenor method exists (it's only in BondSecurity)
@@ -1,10 +1,9 @@
1
1
  import { IssuanceProto } from "../../../fintekkers/models/security/bond/issuance_pb";
2
2
  import { AuctionTypeProto } from "../../../fintekkers/models/security/bond/auction_type_pb";
3
- import { LocalDate } from "../utils/date";
4
3
  import Decimal from "decimal.js";
5
4
  /**
6
5
  * Typed wrapper around a single IssuanceProto. Returns null for unset
7
- * sub-messages and Decimal/LocalDate for populated ones — callers no longer
6
+ * sub-messages and Decimal/Date for populated ones — callers no longer
8
7
  * have to spell out the proto / Decimal coercions at every call site.
9
8
  *
10
9
  * Note: IssuanceProto has no `dated_date` or `auction_date` field on the
@@ -14,11 +13,10 @@ declare class Issuance {
14
13
  proto: IssuanceProto;
15
14
  constructor(proto: IssuanceProto);
16
15
  private static _toDecimal;
17
- private static _toLocalDate;
18
16
  /** Auction issue (settlement) date. Null if unset. */
19
- getIssueDate(): LocalDate | null;
17
+ getIssueDate(): Date | null;
20
18
  /** Auction announcement date. Null if unset. */
21
- getAnnouncementDate(): LocalDate | null;
19
+ getAnnouncementDate(): Date | null;
22
20
  /** Auction offering amount (original face value offered). Null if unset. */
23
21
  getOriginalFaceValue(): Decimal | null;
24
22
  /** Total quantity accepted at auction. Null if unset. */
@@ -7,7 +7,7 @@ const date_1 = require("../utils/date");
7
7
  const decimal_js_1 = __importDefault(require("decimal.js"));
8
8
  /**
9
9
  * Typed wrapper around a single IssuanceProto. Returns null for unset
10
- * sub-messages and Decimal/LocalDate for populated ones — callers no longer
10
+ * sub-messages and Decimal/Date for populated ones — callers no longer
11
11
  * have to spell out the proto / Decimal coercions at every call site.
12
12
  *
13
13
  * Note: IssuanceProto has no `dated_date` or `auction_date` field on the
@@ -22,18 +22,13 @@ class Issuance {
22
22
  return null;
23
23
  return new decimal_js_1.default(value.getArbitraryPrecisionValue());
24
24
  }
25
- static _toLocalDate(value) {
26
- if (!value)
27
- return null;
28
- return new date_1.LocalDate(value);
29
- }
30
25
  /** Auction issue (settlement) date. Null if unset. */
31
26
  getIssueDate() {
32
- return Issuance._toLocalDate(this.proto.getAuctionIssueDate());
27
+ return (0, date_1.localDateProtoToDate)(this.proto.getAuctionIssueDate());
33
28
  }
34
29
  /** Auction announcement date. Null if unset. */
35
30
  getAnnouncementDate() {
36
- return Issuance._toLocalDate(this.proto.getAuctionAnnouncementDate());
31
+ return (0, date_1.localDateProtoToDate)(this.proto.getAuctionAnnouncementDate());
37
32
  }
38
33
  /** Auction offering amount (original face value offered). Null if unset. */
39
34
  getOriginalFaceValue() {
@@ -1 +1 @@
1
- {"version":3,"file":"Issuance.js","sourceRoot":"","sources":["Issuance.ts"],"names":[],"mappings":";;;;;AAIA,wCAA0C;AAC1C,4DAAiC;AAEjC;;;;;;;GAOG;AACH,MAAM,QAAQ;IAGZ,YAAY,KAAoB;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,KAAoC;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,IAAI,oBAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,KAAiC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,IAAI,gBAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,sDAAsD;IACtD,YAAY;QACV,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,gDAAgD;IAChD,mBAAmB;QACjB,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;QAClB,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,yDAAyD;IACzD,gBAAgB;QACd,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iEAAiE;IACjE,iCAAiC;QAC/B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,yEAAyE;IACzE,uBAAuB;QACrB,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,8EAA8E;IAC9E,6BAA6B;QAC3B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,qEAAqE;IACrE,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;CACF;AAED,kBAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Issuance.js","sourceRoot":"","sources":["Issuance.ts"],"names":[],"mappings":";;;;;AAGA,wCAAqD;AACrD,4DAAiC;AAEjC;;;;;;;GAOG;AACH,MAAM,QAAQ;IAGZ,YAAY,KAAoB;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,KAAoC;QAC5D,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,IAAI,oBAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,sDAAsD;IACtD,YAAY;QACV,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,gDAAgD;IAChD,mBAAmB;QACjB,OAAO,IAAA,2BAAoB,EAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;QAClB,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,yDAAyD;IACzD,gBAAgB;QACd,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,iEAAiE;IACjE,iCAAiC;QAC/B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,yEAAyE;IACzE,uBAAuB;QACrB,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,8EAA8E;IAC9E,6BAA6B;QAC3B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,qEAAqE;IACrE,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;IACrC,CAAC;CACF;AAED,kBAAe,QAAQ,CAAC"}
@@ -22,15 +22,23 @@ function buildProto() {
22
22
  return p;
23
23
  }
24
24
  test('Issuance typed accessors return wrapped values', () => {
25
- var _a, _b, _c, _d, _e, _f, _g;
25
+ var _a, _b, _c, _d, _e;
26
26
  const iss = new Issuance_1.default(buildProto());
27
- expect((_a = iss.getIssueDate()) === null || _a === void 0 ? void 0 : _a.toString()).toBe('2023-2-15');
28
- expect((_b = iss.getAnnouncementDate()) === null || _b === void 0 ? void 0 : _b.toString()).toBe('2023-2-8');
29
- expect((_c = iss.getOriginalFaceValue()) === null || _c === void 0 ? void 0 : _c.toString()).toBe('45000000000');
30
- expect((_d = iss.getTotalAccepted()) === null || _d === void 0 ? void 0 : _d.toString()).toBe('44999500000');
31
- expect((_e = iss.getPostAuctionOutstandingQuantity()) === null || _e === void 0 ? void 0 : _e.toString()).toBe('44999500000');
32
- expect((_f = iss.getMatureSecurityAmount()) === null || _f === void 0 ? void 0 : _f.toString()).toBe('0');
33
- expect((_g = iss.getPriceForSinglePriceAuction()) === null || _g === void 0 ? void 0 : _g.toString()).toBe('99.875');
27
+ const issueDate = iss.getIssueDate();
28
+ const announcementDate = iss.getAnnouncementDate();
29
+ expect(issueDate).toBeInstanceOf(Date);
30
+ expect(announcementDate).toBeInstanceOf(Date);
31
+ expect(issueDate.getFullYear()).toBe(2023);
32
+ expect(issueDate.getMonth()).toBe(1); // February (0-based)
33
+ expect(issueDate.getDate()).toBe(15);
34
+ expect(announcementDate.getFullYear()).toBe(2023);
35
+ expect(announcementDate.getMonth()).toBe(1);
36
+ expect(announcementDate.getDate()).toBe(8);
37
+ expect((_a = iss.getOriginalFaceValue()) === null || _a === void 0 ? void 0 : _a.toString()).toBe('45000000000');
38
+ expect((_b = iss.getTotalAccepted()) === null || _b === void 0 ? void 0 : _b.toString()).toBe('44999500000');
39
+ expect((_c = iss.getPostAuctionOutstandingQuantity()) === null || _c === void 0 ? void 0 : _c.toString()).toBe('44999500000');
40
+ expect((_d = iss.getMatureSecurityAmount()) === null || _d === void 0 ? void 0 : _d.toString()).toBe('0');
41
+ expect((_e = iss.getPriceForSinglePriceAuction()) === null || _e === void 0 ? void 0 : _e.toString()).toBe('99.875');
34
42
  expect(iss.getAuctionType()).toBe(auction_type_pb_1.AuctionTypeProto.SINGLE_PRICE);
35
43
  });
36
44
  test('Issuance returns null for unset sub-messages', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"Issuance.test.js","sourceRoot":"","sources":["Issuance.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Issuance.test.js","sourceRoot":"","sources":["Issuance.test.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,16 @@ function buildProto(): IssuanceProto {
20
20
 
21
21
  test('Issuance typed accessors return wrapped values', () => {
22
22
  const iss = new Issuance(buildProto());
23
- expect(iss.getIssueDate()?.toString()).toBe('2023-2-15');
24
- expect(iss.getAnnouncementDate()?.toString()).toBe('2023-2-8');
23
+ const issueDate = iss.getIssueDate();
24
+ const announcementDate = iss.getAnnouncementDate();
25
+ expect(issueDate).toBeInstanceOf(Date);
26
+ expect(announcementDate).toBeInstanceOf(Date);
27
+ expect(issueDate!.getFullYear()).toBe(2023);
28
+ expect(issueDate!.getMonth()).toBe(1); // February (0-based)
29
+ expect(issueDate!.getDate()).toBe(15);
30
+ expect(announcementDate!.getFullYear()).toBe(2023);
31
+ expect(announcementDate!.getMonth()).toBe(1);
32
+ expect(announcementDate!.getDate()).toBe(8);
25
33
  expect(iss.getOriginalFaceValue()?.toString()).toBe('45000000000');
26
34
  expect(iss.getTotalAccepted()?.toString()).toBe('44999500000');
27
35
  expect(iss.getPostAuctionOutstandingQuantity()?.toString()).toBe('44999500000');
@@ -1,13 +1,12 @@
1
1
  import { IssuanceProto } from "../../../fintekkers/models/security/bond/issuance_pb";
2
2
  import { AuctionTypeProto } from "../../../fintekkers/models/security/bond/auction_type_pb";
3
3
  import { DecimalValueProto } from "../../../fintekkers/models/util/decimal_value_pb";
4
- import { LocalDateProto } from "../../../fintekkers/models/util/local_date_pb";
5
- import { LocalDate } from "../utils/date";
4
+ import { localDateProtoToDate } from "../utils/date";
6
5
  import Decimal from "decimal.js";
7
6
 
8
7
  /**
9
8
  * Typed wrapper around a single IssuanceProto. Returns null for unset
10
- * sub-messages and Decimal/LocalDate for populated ones — callers no longer
9
+ * sub-messages and Decimal/Date for populated ones — callers no longer
11
10
  * have to spell out the proto / Decimal coercions at every call site.
12
11
  *
13
12
  * Note: IssuanceProto has no `dated_date` or `auction_date` field on the
@@ -25,19 +24,14 @@ class Issuance {
25
24
  return new Decimal(value.getArbitraryPrecisionValue());
26
25
  }
27
26
 
28
- private static _toLocalDate(value: LocalDateProto | undefined): LocalDate | null {
29
- if (!value) return null;
30
- return new LocalDate(value);
31
- }
32
-
33
27
  /** Auction issue (settlement) date. Null if unset. */
34
- getIssueDate(): LocalDate | null {
35
- return Issuance._toLocalDate(this.proto.getAuctionIssueDate());
28
+ getIssueDate(): Date | null {
29
+ return localDateProtoToDate(this.proto.getAuctionIssueDate());
36
30
  }
37
31
 
38
32
  /** Auction announcement date. Null if unset. */
39
- getAnnouncementDate(): LocalDate | null {
40
- return Issuance._toLocalDate(this.proto.getAuctionAnnouncementDate());
33
+ getAnnouncementDate(): Date | null {
34
+ return localDateProtoToDate(this.proto.getAuctionAnnouncementDate());
41
35
  }
42
36
 
43
37
  /** Auction offering amount (original face value offered). Null if unset. */