@fintekkers/ledger-models 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/node/fintekkers/models/security/security_pb.d.ts +0 -80
  2. package/node/fintekkers/models/security/security_pb.js +1 -723
  3. package/node/fintekkers/models/security/security_pb.test.js +15 -15
  4. package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
  5. package/node/fintekkers/models/security/security_pb.test.ts +17 -18
  6. package/node/wrappers/models/price/Price.cash.test.js +1 -1
  7. package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
  8. package/node/wrappers/models/price/Price.cash.test.ts +2 -2
  9. package/node/wrappers/models/security/BondSecurity.d.ts +41 -3
  10. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.d.ts +1 -0
  11. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js +75 -0
  12. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.js.map +1 -0
  13. package/node/wrappers/models/security/BondSecurity.fromPricerInputs.test.ts +95 -0
  14. package/node/wrappers/models/security/BondSecurity.js +57 -9
  15. package/node/wrappers/models/security/BondSecurity.js.map +1 -1
  16. package/node/wrappers/models/security/BondSecurity.priceScale.test.js +5 -3
  17. package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
  18. package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +7 -5
  19. package/node/wrappers/models/security/BondSecurity.test.js +28 -20
  20. package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
  21. package/node/wrappers/models/security/BondSecurity.test.ts +29 -21
  22. package/node/wrappers/models/security/BondSecurity.ts +72 -10
  23. package/node/wrappers/models/security/FloatingRateNote.d.ts +30 -0
  24. package/node/wrappers/models/security/FloatingRateNote.js +80 -0
  25. package/node/wrappers/models/security/FloatingRateNote.js.map +1 -0
  26. package/node/wrappers/models/security/FloatingRateNote.ts +67 -0
  27. package/node/wrappers/models/security/IndexSecurity.d.ts +16 -0
  28. package/node/wrappers/models/security/IndexSecurity.js +26 -0
  29. package/node/wrappers/models/security/IndexSecurity.js.map +1 -0
  30. package/node/wrappers/models/security/IndexSecurity.test.d.ts +1 -0
  31. package/node/wrappers/models/security/IndexSecurity.test.js +60 -0
  32. package/node/wrappers/models/security/IndexSecurity.test.js.map +1 -0
  33. package/node/wrappers/models/security/IndexSecurity.test.ts +60 -0
  34. package/node/wrappers/models/security/IndexSecurity.ts +24 -0
  35. package/node/wrappers/models/security/Issuance.d.ts +35 -0
  36. package/node/wrappers/models/security/Issuance.js +64 -0
  37. package/node/wrappers/models/security/Issuance.js.map +1 -0
  38. package/node/wrappers/models/security/Issuance.test.d.ts +1 -0
  39. package/node/wrappers/models/security/Issuance.test.js +55 -0
  40. package/node/wrappers/models/security/Issuance.test.js.map +1 -0
  41. package/node/wrappers/models/security/Issuance.test.ts +52 -0
  42. package/node/wrappers/models/security/Issuance.ts +74 -0
  43. package/node/wrappers/models/security/TIPSBond.d.ts +30 -0
  44. package/node/wrappers/models/security/TIPSBond.js +83 -0
  45. package/node/wrappers/models/security/TIPSBond.js.map +1 -0
  46. package/node/wrappers/models/security/TIPSBond.ts +70 -0
  47. package/node/wrappers/models/security/security-roundtrip.test.js +77 -61
  48. package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
  49. package/node/wrappers/models/security/security-roundtrip.test.ts +78 -62
  50. package/node/wrappers/models/security/security.d.ts +21 -6
  51. package/node/wrappers/models/security/security.identifiers.test.d.ts +1 -0
  52. package/node/wrappers/models/security/security.identifiers.test.js +67 -0
  53. package/node/wrappers/models/security/security.identifiers.test.js.map +1 -0
  54. package/node/wrappers/models/security/security.identifiers.test.ts +67 -0
  55. package/node/wrappers/models/security/security.js +72 -29
  56. package/node/wrappers/models/security/security.js.map +1 -1
  57. package/node/wrappers/models/security/security.test.js +16 -12
  58. package/node/wrappers/models/security/security.test.js.map +1 -1
  59. package/node/wrappers/models/security/security.test.ts +17 -15
  60. package/node/wrappers/models/security/security.ts +75 -29
  61. package/node/wrappers/models/transaction/transaction.derived.test.js +8 -6
  62. package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
  63. package/node/wrappers/models/transaction/transaction.derived.test.ts +9 -7
  64. package/node/wrappers/models/transaction/transaction.js +4 -2
  65. package/node/wrappers/models/transaction/transaction.js.map +1 -1
  66. package/node/wrappers/models/transaction/transaction.ts +4 -2
  67. package/node/wrappers/models/transaction/transaction_constructor.test.js +8 -6
  68. package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
  69. package/node/wrappers/models/transaction/transaction_constructor.test.ts +9 -7
  70. package/node/wrappers/services/searchWithSecurities.test.js +2 -2
  71. package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
  72. package/node/wrappers/services/searchWithSecurities.test.ts +2 -2
  73. package/node/wrappers/services/security-service/security.maturityLadder.test.js +5 -3
  74. package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
  75. package/node/wrappers/services/security-service/security.maturityLadder.test.ts +5 -3
  76. package/node/wrappers/services/security-service/security.test.js +10 -8
  77. package/node/wrappers/services/security-service/security.test.js.map +1 -1
  78. package/node/wrappers/services/security-service/security.test.ts +12 -9
  79. package/node/wrappers/util/link-resolver.test.js +1 -1
  80. package/node/wrappers/util/link-resolver.test.js.map +1 -1
  81. package/node/wrappers/util/link-resolver.test.ts +1 -1
  82. package/package.json +1 -1
@@ -1,31 +1,31 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // Import or define the SecurityProto class
3
+ // v0.4.0 (#277/#278): legacy SecurityProto flat fields removed. Round-trip
4
+ // uses the structured shape (bond_details + extensions).
4
5
  const decimal_value_pb_1 = require("../util/decimal_value_pb");
5
6
  const local_date_pb_1 = require("../util/local_date_pb");
6
7
  const coupon_frequency_pb_1 = require("./coupon_frequency_pb");
7
8
  const coupon_type_pb_1 = require("./coupon_type_pb");
8
9
  const security_pb_1 = require("./security_pb");
9
10
  const product_type_pb_1 = require("./product_type_pb");
10
- test('create a security proto (from sue) object and test it can be read', () => {
11
- // Usage example
11
+ test('create a SecurityProto (with bond_details) and round-trip via binary', () => {
12
+ const bond = new security_pb_1.BondDetailsProto();
13
+ bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.ANNUALLY);
14
+ bond.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'));
15
+ bond.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
16
+ bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(1).setDay(1));
17
+ bond.setDatedDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(1).setDay(1));
18
+ bond.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(1).setDay(1));
19
+ bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
12
20
  const security = new security_pb_1.SecurityProto();
13
21
  security.setObjectClass('SomeObjectClass');
14
22
  security.setVersion('1.0');
15
23
  security.setAssetClass('FixedIncome');
16
- security.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.ANNUALLY);
17
- security.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'));
18
- security.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
19
- security.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(1).setDay(1));
20
- security.setDatedDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(1).setDay(1));
21
- security.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(1).setDay(1));
22
24
  security.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
23
- security.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
24
- // Serialize the object to a binary representation
25
+ security.setBondDetails(bond);
25
26
  const binaryData = security.serializeBinary();
26
- // Deserialize the binary data back to a SecurityProto object
27
- const deserializedSecurity = security_pb_1.SecurityProto.deserializeBinary(binaryData);
28
- // Test that the deserialized object is the same as the original
29
- expect(deserializedSecurity.toObject()).toEqual(security.toObject());
27
+ const deserialized = security_pb_1.SecurityProto.deserializeBinary(binaryData);
28
+ expect(deserialized.toObject()).toEqual(security.toObject());
29
+ expect(deserialized.getBondDetails().getCouponRate().getArbitraryPrecisionValue()).toBe('0.05');
30
30
  });
31
31
  //# sourceMappingURL=security_pb.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"security_pb.test.js","sourceRoot":"","sources":["security_pb.test.ts"],"names":[],"mappings":";;AAAA,2CAA2C;AAC3C,+DAA6D;AAC7D,yDAAuD;AACvD,+DAA6D;AAC7D,qDAAmD;AACnD,+CAA8C;AAC9C,uDAAqD;AAErD,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,gBAAgB;IAChB,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;IAErC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,QAAQ,CAAC,CAAC;IAC3D,QAAQ,CAAC,aAAa,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,YAAY,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC;IACrF,QAAQ,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,eAAe,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;IACxD,QAAQ,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAA;IAE7C,kDAAkD;IAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;IAE9C,6DAA6D;IAC7D,MAAM,oBAAoB,GAAG,2BAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEzE,gEAAgE;IAChE,MAAM,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"security_pb.test.js","sourceRoot":"","sources":["security_pb.test.ts"],"names":[],"mappings":";;AAAA,2EAA2E;AAC3E,yDAAyD;AACzD,+DAA6D;AAC7D,yDAAuD;AACvD,+DAA6D;AAC7D,qDAAmD;AACnD,+CAAgE;AAChE,uDAAqD;AAErD,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;IAChF,MAAM,IAAI,GAAG,IAAI,8BAAgB,EAAE,CAAC;IACpC,IAAI,CAAC,kBAAkB,CAAC,0CAAoB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,aAAa,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,YAAY,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,eAAe,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,CAAC,aAAa,CAAC,gCAAe,CAAC,KAAK,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAI,2BAAa,EAAE,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC3B,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;IACxD,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC;IAC9C,MAAM,YAAY,GAAG,2BAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEjE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,YAAY,CAAC,cAAc,EAAG,CAAC,aAAa,EAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC"}
@@ -1,33 +1,32 @@
1
- // Import or define the SecurityProto class
1
+ // v0.4.0 (#277/#278): legacy SecurityProto flat fields removed. Round-trip
2
+ // uses the structured shape (bond_details + extensions).
2
3
  import { DecimalValueProto } from '../util/decimal_value_pb';
3
4
  import { LocalDateProto } from '../util/local_date_pb';
4
5
  import { CouponFrequencyProto } from './coupon_frequency_pb';
5
6
  import { CouponTypeProto } from './coupon_type_pb';
6
- import { SecurityProto } from './security_pb';
7
+ import { BondDetailsProto, SecurityProto } from './security_pb';
7
8
  import { ProductTypeProto } from './product_type_pb';
8
9
 
9
- test('create a security proto (from sue) object and test it can be read', () => {
10
- // Usage example
11
- const security = new SecurityProto();
10
+ test('create a SecurityProto (with bond_details) and round-trip via binary', () => {
11
+ const bond = new BondDetailsProto();
12
+ bond.setCouponFrequency(CouponFrequencyProto.ANNUALLY);
13
+ bond.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'));
14
+ bond.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
15
+ bond.setIssueDate(new LocalDateProto().setYear(2023).setMonth(1).setDay(1));
16
+ bond.setDatedDate(new LocalDateProto().setYear(2023).setMonth(1).setDay(1));
17
+ bond.setMaturityDate(new LocalDateProto().setYear(2023).setMonth(1).setDay(1));
18
+ bond.setCouponType(CouponTypeProto.FIXED);
12
19
 
20
+ const security = new SecurityProto();
13
21
  security.setObjectClass('SomeObjectClass');
14
22
  security.setVersion('1.0');
15
23
  security.setAssetClass('FixedIncome');
16
- security.setCouponFrequency(CouponFrequencyProto.ANNUALLY);
17
- security.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'));
18
- security.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
19
- security.setIssueDate(new LocalDateProto().setYear(2023).setMonth(1).setDay(1));
20
- security.setDatedDate(new LocalDateProto().setYear(2023).setMonth(1).setDay(1));
21
- security.setMaturityDate(new LocalDateProto().setYear(2023).setMonth(1).setDay(1));
22
24
  security.setProductType(ProductTypeProto.TREASURY_NOTE);
23
- security.setCouponType(CouponTypeProto.FIXED)
25
+ security.setBondDetails(bond);
24
26
 
25
- // Serialize the object to a binary representation
26
27
  const binaryData = security.serializeBinary();
28
+ const deserialized = SecurityProto.deserializeBinary(binaryData);
27
29
 
28
- // Deserialize the binary data back to a SecurityProto object
29
- const deserializedSecurity = SecurityProto.deserializeBinary(binaryData);
30
-
31
- // Test that the deserialized object is the same as the original
32
- expect(deserializedSecurity.toObject()).toEqual(security.toObject());
30
+ expect(deserialized.toObject()).toEqual(security.toObject());
31
+ expect(deserialized.getBondDetails()!.getCouponRate()!.getArbitraryPrecisionValue()).toBe('0.05');
33
32
  });
@@ -36,7 +36,7 @@ function createDummyCashSecurity() {
36
36
  securityProto.setProductType(product_type_pb_1.ProductTypeProto.CURRENCY);
37
37
  securityProto.setAsOf(datetime_1.ZonedDateTime.now().toProto());
38
38
  securityProto.setAssetClass('Cash');
39
- securityProto.setCashId('USD');
39
+ securityProto.setCashDetails(new security_pb_1.CashDetailsProto().setCashId('USD'));
40
40
  return security_1.default.create(securityProto);
41
41
  }
42
42
  //# sourceMappingURL=Price.cash.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Price.cash.test.js","sourceRoot":"","sources":["Price.cash.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,oDAA4B;AAC5B,oEAA4C;AAC5C,iFAAgF;AAChF,yFAAuF;AACvF,wCAAqC;AACrC,gDAAkD;AAClD,2CAAqC;AAErC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACjC,gBAAgB,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB;;IACrB,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,eAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEzD,uDAAuD;IACvD,MAAM,UAAU,GAAG,MAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,0CAAE,0BAA0B,EAAE,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gCAAgC,UAAU,EAAE,CAAC,CAAC;IAE9F,wBAAwB;IACxB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAEtF,oBAAoB;IACpB,MAAM,CAAC,CAAA,MAAA,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,0CAAE,WAAW,EAAE,MAAK,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,4BAA4B,CAAC,CAAC;AACpH,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;IAC1C,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,OAAO,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,cAAc,CAAC,kCAAgB,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,OAAO,CAAC,wBAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAE/B,OAAO,kBAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"Price.cash.test.js","sourceRoot":"","sources":["Price.cash.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,oDAA4B;AAC5B,oEAA4C;AAC5C,iFAAkG;AAClG,yFAAuF;AACvF,wCAAqC;AACrC,gDAAkD;AAClD,2CAAqC;AAErC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACjC,gBAAgB,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,SAAS,gBAAgB;;IACrB,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,wBAAa,CAAC,GAAG,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,eAAK,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEzD,uDAAuD;IACvD,MAAM,UAAU,GAAG,MAAA,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,0CAAE,0BAA0B,EAAE,CAAC;IAC5E,MAAM,YAAY,GAAG,IAAI,oBAAO,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,oBAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gCAAgC,UAAU,EAAE,CAAC,CAAC;IAE9F,wBAAwB;IACxB,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IAEtF,oBAAoB;IACpB,MAAM,CAAC,CAAA,MAAA,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,0CAAE,WAAW,EAAE,MAAK,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,EAAE,4BAA4B,CAAC,CAAC;AACpH,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;IAC1C,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,OAAO,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,cAAc,CAAC,kCAAgB,CAAC,QAAQ,CAAC,CAAC;IACxD,aAAa,CAAC,OAAO,CAAC,wBAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,aAAa,CAAC,cAAc,CAAC,IAAI,8BAAgB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEtE,OAAO,kBAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import assert = require('assert');
2
2
  import Price from './Price';
3
3
  import Security from '../security/security';
4
- import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
4
+ import { SecurityProto, CashDetailsProto } from '../../../fintekkers/models/security/security_pb';
5
5
  import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
6
6
  import { UUID } from '../utils/uuid';
7
7
  import { ZonedDateTime } from '../utils/datetime';
@@ -37,7 +37,7 @@ function createDummyCashSecurity(): Security {
37
37
  securityProto.setProductType(ProductTypeProto.CURRENCY);
38
38
  securityProto.setAsOf(ZonedDateTime.now().toProto());
39
39
  securityProto.setAssetClass('Cash');
40
- securityProto.setCashId('USD');
40
+ securityProto.setCashDetails(new CashDetailsProto().setCashId('USD'));
41
41
 
42
42
  return Security.create(securityProto);
43
43
  }
@@ -1,12 +1,40 @@
1
1
  import Security from './security';
2
- import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
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';
4
5
  import { LocalDate } from '../utils/date';
5
- import { IssuanceProto } from '../../../fintekkers/models/security/bond/issuance_pb';
6
6
  import { CouponFrequency } from './coupon_frequency';
7
7
  import { CouponType } from './coupon_type';
8
8
  import { Tenor } from './term';
9
+ import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
10
+ import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
9
11
  import { Decimal } from 'decimal.js';
12
+ import Issuance from './Issuance';
13
+ /**
14
+ * Inputs required to mint a SecurityProto for the bond pricer. Shared by
15
+ * BondSecurity / TIPSBond / FloatingRateNote builders.
16
+ */
17
+ export interface BondPricerInputs {
18
+ faceValue: Decimal;
19
+ couponRate: Decimal;
20
+ couponType: CouponTypeProto;
21
+ couponFrequency: CouponFrequencyProto;
22
+ issueDate: LocalDate;
23
+ maturityDate: LocalDate;
24
+ }
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
+ /** Build a DecimalValueProto from a Decimal. */
32
+ export declare function decimalToProto(v: Decimal): DecimalValueProto;
33
+ /**
34
+ * Build a populated BondDetailsProto from BondPricerInputs. Shared helper
35
+ * so the three pricer-input builders stay in sync.
36
+ */
37
+ export declare function buildBondDetails(args: BondPricerInputs): BondDetailsProto;
10
38
  declare class BondSecurity extends Security {
11
39
  constructor(proto: SecurityProto);
12
40
  /** Returns the tenor (term) of the bond as a Tenor object.
@@ -27,7 +55,17 @@ declare class BondSecurity extends Security {
27
55
  getCouponType(): CouponType;
28
56
  getCouponFrequency(): CouponFrequency;
29
57
  getDatedDate(): LocalDate | undefined;
30
- getIssuanceInfo(): IssuanceProto[];
58
+ /**
59
+ * Returns every auction/reopening record on this bond as typed Issuance
60
+ * wrappers. Empty list if bond_details is unset or has no issuances.
61
+ */
62
+ getIssuances(): Issuance[];
63
+ /**
64
+ * Build a fresh SecurityProto for a vanilla treasury note from pricer
65
+ * inputs. Use TIPSBond.fromPricerInputs / FloatingRateNote.fromPricerInputs
66
+ * for the inflation-linked / floating variants.
67
+ */
68
+ static fromPricerInputs(args: BondPricerInputs): SecurityProto;
31
69
  /**
32
70
  * Returns the price scale factor for bonds.
33
71
  * Bonds are typically priced as percentages (e.g., 99.5 means 99.5%),
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const security_1 = __importDefault(require("./security"));
7
+ const BondSecurity_1 = __importDefault(require("./BondSecurity"));
8
+ const TIPSBond_1 = __importDefault(require("./TIPSBond"));
9
+ const FloatingRateNote_1 = __importDefault(require("./FloatingRateNote"));
10
+ const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
11
+ const coupon_type_pb_1 = require("../../../fintekkers/models/security/coupon_type_pb");
12
+ const coupon_frequency_pb_1 = require("../../../fintekkers/models/security/coupon_frequency_pb");
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
+ const decimal_js_1 = require("decimal.js");
17
+ function makeDate(y, m, d) {
18
+ return new date_1.LocalDate(new local_date_pb_1.LocalDateProto().setYear(y).setMonth(m).setDay(d));
19
+ }
20
+ const baseInputs = {
21
+ faceValue: new decimal_js_1.Decimal('1000'),
22
+ couponRate: new decimal_js_1.Decimal('0.045'),
23
+ couponType: coupon_type_pb_1.CouponTypeProto.FIXED,
24
+ couponFrequency: coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY,
25
+ issueDate: makeDate(2024, 1, 15),
26
+ maturityDate: makeDate(2034, 1, 15),
27
+ };
28
+ test('BondSecurity.fromPricerInputs round-trips through Security.create as a BondSecurity', () => {
29
+ const proto = BondSecurity_1.default.fromPricerInputs(baseInputs);
30
+ expect(proto.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
31
+ const sec = security_1.default.create(proto);
32
+ expect(sec).toBeInstanceOf(BondSecurity_1.default);
33
+ const bond = sec;
34
+ expect(bond.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
35
+ expect(bond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
36
+ expect(bond.getCouponType().name()).toBe('FIXED');
37
+ expect(bond.getCouponFrequency().toString()).toBe('SEMIANNUALLY');
38
+ expect(bond.getIssueDate().toDate().getFullYear()).toBe(2024);
39
+ expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2034);
40
+ });
41
+ test('TIPSBond.fromPricerInputs round-trips with tips_extension populated', () => {
42
+ var _a, _b;
43
+ 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
+ expect(proto.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TIPS);
45
+ expect(proto.hasTipsExtension()).toBe(true);
46
+ const sec = security_1.default.create(proto);
47
+ expect(sec).toBeInstanceOf(TIPSBond_1.default);
48
+ const tips = sec;
49
+ // Bond-side checks (inherited from BondSecurity)
50
+ expect(tips.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
51
+ // TIPS-specific checks
52
+ 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);
54
+ expect(tips.getInflationIndexType()).toBe(index_type_pb_1.IndexTypeProto.CPI_U);
55
+ });
56
+ test('FloatingRateNote.fromPricerInputs round-trips with frn_extension populated', () => {
57
+ var _a;
58
+ const proto = FloatingRateNote_1.default.fromPricerInputs(Object.assign(Object.assign({}, baseInputs), { spread: new decimal_js_1.Decimal('0.0015'), referenceRateIndex: index_type_pb_1.IndexTypeProto.SOFR, resetFrequency: coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY }));
59
+ expect(proto.getProductType()).toBe(product_type_pb_1.ProductTypeProto.TREASURY_FRN);
60
+ expect(proto.hasFrnExtension()).toBe(true);
61
+ const sec = security_1.default.create(proto);
62
+ expect(sec).toBeInstanceOf(FloatingRateNote_1.default);
63
+ const frn = sec;
64
+ expect(frn.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
65
+ expect((_a = frn.getSpread()) === null || _a === void 0 ? void 0 : _a.toString()).toBe('0.0015');
66
+ expect(frn.getReferenceRateIndex()).toBe(index_type_pb_1.IndexTypeProto.SOFR);
67
+ expect(frn.getResetFrequency()).toBe(coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY);
68
+ });
69
+ test('TIPS / FRN wrappers inherit isBond() narrowing', () => {
70
+ const tipsProto = TIPSBond_1.default.fromPricerInputs(Object.assign(Object.assign({}, baseInputs), { baseCpi: new decimal_js_1.Decimal('250'), indexDate: makeDate(2024, 1, 15), inflationIndexType: index_type_pb_1.IndexTypeProto.CPI_U }));
71
+ const frnProto = FloatingRateNote_1.default.fromPricerInputs(Object.assign(Object.assign({}, baseInputs), { spread: new decimal_js_1.Decimal('0.002'), referenceRateIndex: index_type_pb_1.IndexTypeProto.SOFR, resetFrequency: coupon_frequency_pb_1.CouponFrequencyProto.QUARTERLY }));
72
+ expect(security_1.default.create(tipsProto).isBond()).toBe(true);
73
+ expect(security_1.default.create(frnProto).isBond()).toBe(true);
74
+ });
75
+ //# sourceMappingURL=BondSecurity.fromPricerInputs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BondSecurity.fromPricerInputs.test.js","sourceRoot":"","sources":["BondSecurity.fromPricerInputs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import Security from './security';
2
+ import BondSecurity from './BondSecurity';
3
+ import TIPSBond from './TIPSBond';
4
+ import FloatingRateNote from './FloatingRateNote';
5
+ import { ProductTypeProto } from '../../../fintekkers/models/security/product_type_pb';
6
+ import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
7
+ import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
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
+ import { Decimal } from 'decimal.js';
12
+
13
+ function makeDate(y: number, m: number, d: number): LocalDate {
14
+ return new LocalDate(new LocalDateProto().setYear(y).setMonth(m).setDay(d));
15
+ }
16
+
17
+ const baseInputs = {
18
+ faceValue: new Decimal('1000'),
19
+ couponRate: new Decimal('0.045'),
20
+ couponType: CouponTypeProto.FIXED,
21
+ couponFrequency: CouponFrequencyProto.SEMIANNUALLY,
22
+ issueDate: makeDate(2024, 1, 15),
23
+ maturityDate: makeDate(2034, 1, 15),
24
+ };
25
+
26
+ test('BondSecurity.fromPricerInputs round-trips through Security.create as a BondSecurity', () => {
27
+ const proto = BondSecurity.fromPricerInputs(baseInputs);
28
+ expect(proto.getProductType()).toBe(ProductTypeProto.TREASURY_NOTE);
29
+ const sec = Security.create(proto);
30
+ expect(sec).toBeInstanceOf(BondSecurity);
31
+ const bond = sec as BondSecurity;
32
+ expect(bond.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
33
+ expect(bond.getFaceValue().getArbitraryPrecisionValue()).toBe('1000');
34
+ expect(bond.getCouponType().name()).toBe('FIXED');
35
+ expect(bond.getCouponFrequency().toString()).toBe('SEMIANNUALLY');
36
+ expect(bond.getIssueDate().toDate().getFullYear()).toBe(2024);
37
+ expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2034);
38
+ });
39
+
40
+ test('TIPSBond.fromPricerInputs round-trips with tips_extension populated', () => {
41
+ const proto = TIPSBond.fromPricerInputs({
42
+ ...baseInputs,
43
+ baseCpi: new Decimal('301.5'),
44
+ indexDate: makeDate(2024, 1, 15),
45
+ inflationIndexType: IndexTypeProto.CPI_U,
46
+ });
47
+ expect(proto.getProductType()).toBe(ProductTypeProto.TIPS);
48
+ expect(proto.hasTipsExtension()).toBe(true);
49
+
50
+ const sec = Security.create(proto);
51
+ expect(sec).toBeInstanceOf(TIPSBond);
52
+ const tips = sec as TIPSBond;
53
+ // Bond-side checks (inherited from BondSecurity)
54
+ expect(tips.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
55
+ // TIPS-specific checks
56
+ expect(tips.getBaseCpi()?.toString()).toBe('301.5');
57
+ expect(tips.getIndexDate()?.toDate().getFullYear()).toBe(2024);
58
+ expect(tips.getInflationIndexType()).toBe(IndexTypeProto.CPI_U);
59
+ });
60
+
61
+ test('FloatingRateNote.fromPricerInputs round-trips with frn_extension populated', () => {
62
+ const proto = FloatingRateNote.fromPricerInputs({
63
+ ...baseInputs,
64
+ spread: new Decimal('0.0015'),
65
+ referenceRateIndex: IndexTypeProto.SOFR,
66
+ resetFrequency: CouponFrequencyProto.QUARTERLY,
67
+ });
68
+ expect(proto.getProductType()).toBe(ProductTypeProto.TREASURY_FRN);
69
+ expect(proto.hasFrnExtension()).toBe(true);
70
+
71
+ const sec = Security.create(proto);
72
+ expect(sec).toBeInstanceOf(FloatingRateNote);
73
+ const frn = sec as FloatingRateNote;
74
+ expect(frn.getCouponRate().getArbitraryPrecisionValue()).toBe('0.045');
75
+ expect(frn.getSpread()?.toString()).toBe('0.0015');
76
+ expect(frn.getReferenceRateIndex()).toBe(IndexTypeProto.SOFR);
77
+ expect(frn.getResetFrequency()).toBe(CouponFrequencyProto.QUARTERLY);
78
+ });
79
+
80
+ test('TIPS / FRN wrappers inherit isBond() narrowing', () => {
81
+ const tipsProto = TIPSBond.fromPricerInputs({
82
+ ...baseInputs,
83
+ baseCpi: new Decimal('250'),
84
+ indexDate: makeDate(2024, 1, 15),
85
+ inflationIndexType: IndexTypeProto.CPI_U,
86
+ });
87
+ const frnProto = FloatingRateNote.fromPricerInputs({
88
+ ...baseInputs,
89
+ spread: new Decimal('0.002'),
90
+ referenceRateIndex: IndexTypeProto.SOFR,
91
+ resetFrequency: CouponFrequencyProto.QUARTERLY,
92
+ });
93
+ expect(Security.create(tipsProto).isBond()).toBe(true);
94
+ expect(Security.create(frnProto).isBond()).toBe(true);
95
+ });
@@ -3,8 +3,11 @@ 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
7
  const security_1 = __importDefault(require("./security"));
8
+ const security_pb_1 = require("../../../fintekkers/models/security/security_pb");
7
9
  const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
10
+ const decimal_value_pb_1 = require("../../../fintekkers/models/util/decimal_value_pb");
8
11
  const date_1 = require("../utils/date");
9
12
  const coupon_frequency_1 = require("./coupon_frequency");
10
13
  const coupon_type_1 = require("./coupon_type");
@@ -12,6 +15,35 @@ const term_1 = require("./term");
12
15
  const tenor_type_pb_1 = require("../../../fintekkers/models/security/tenor_type_pb");
13
16
  const decimal_js_1 = require("decimal.js");
14
17
  const product_hierarchy_1 = require("./product_hierarchy");
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
+ /** Build a DecimalValueProto from a Decimal. */
29
+ function decimalToProto(v) {
30
+ return new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue(v.toString());
31
+ }
32
+ exports.decimalToProto = decimalToProto;
33
+ /**
34
+ * Build a populated BondDetailsProto from BondPricerInputs. Shared helper
35
+ * so the three pricer-input builders stay in sync.
36
+ */
37
+ function buildBondDetails(args) {
38
+ return new security_pb_1.BondDetailsProto()
39
+ .setFaceValue(decimalToProto(args.faceValue))
40
+ .setCouponRate(decimalToProto(args.couponRate))
41
+ .setCouponType(args.couponType)
42
+ .setCouponFrequency(args.couponFrequency)
43
+ .setIssueDate(localDateToProto(args.issueDate))
44
+ .setMaturityDate(localDateToProto(args.maturityDate));
45
+ }
46
+ exports.buildBondDetails = buildBondDetails;
15
47
  class BondSecurity extends security_1.default {
16
48
  constructor(proto) {
17
49
  super(proto);
@@ -68,40 +100,56 @@ class BondSecurity extends security_1.default {
68
100
  }
69
101
  getCouponRate() {
70
102
  const bond = this.getBondLikeDetails();
71
- const rate = bond ? bond.getCouponRate() : this.proto.getCouponRate();
103
+ const rate = bond ? bond.getCouponRate() : undefined;
72
104
  if (!rate)
73
105
  throw new Error("Coupon rate is required for bonds");
74
106
  return rate;
75
107
  }
76
108
  getFaceValue() {
77
109
  const bond = this.getBondLikeDetails();
78
- const faceValue = bond ? bond.getFaceValue() : this.proto.getFaceValue();
110
+ const faceValue = bond ? bond.getFaceValue() : undefined;
79
111
  if (!faceValue)
80
112
  throw new Error("Face value is required for bonds");
81
113
  return faceValue;
82
114
  }
83
115
  getCouponType() {
84
116
  const bond = this.getBondLikeDetails();
85
- const couponType = bond ? bond.getCouponType() : this.proto.getCouponType();
86
- if (!couponType)
117
+ const couponType = bond ? bond.getCouponType() : undefined;
118
+ if (couponType === undefined)
87
119
  throw new Error("Coupon Type is required for bonds");
88
120
  return new coupon_type_1.CouponType(couponType);
89
121
  }
90
122
  getCouponFrequency() {
91
123
  const bond = this.getBondLikeDetails();
92
- const couponFrequency = bond ? bond.getCouponFrequency() : this.proto.getCouponFrequency();
93
- if (!couponFrequency)
124
+ const couponFrequency = bond ? bond.getCouponFrequency() : undefined;
125
+ if (couponFrequency === undefined)
94
126
  throw new Error("Coupon Frequency is required for bonds");
95
127
  return new coupon_frequency_1.CouponFrequency(couponFrequency);
96
128
  }
97
129
  getDatedDate() {
98
130
  const bond = this.getBondLikeDetails();
99
- const datedDate = bond ? bond.getDatedDate() : this.proto.getDatedDate();
131
+ const datedDate = bond ? bond.getDatedDate() : undefined;
100
132
  return datedDate ? new date_1.LocalDate(datedDate) : undefined;
101
133
  }
102
- getIssuanceInfo() {
134
+ /**
135
+ * Returns every auction/reopening record on this bond as typed Issuance
136
+ * wrappers. Empty list if bond_details is unset or has no issuances.
137
+ */
138
+ getIssuances() {
103
139
  const bond = this.getBondLikeDetails();
104
- return bond ? bond.getIssuanceInfoList() : this.proto.getIssuanceInfoList();
140
+ const list = bond ? bond.getIssuanceInfoList() : [];
141
+ return list.map(p => new Issuance_1.default(p));
142
+ }
143
+ /**
144
+ * Build a fresh SecurityProto for a vanilla treasury note from pricer
145
+ * inputs. Use TIPSBond.fromPricerInputs / FloatingRateNote.fromPricerInputs
146
+ * for the inflation-linked / floating variants.
147
+ */
148
+ static fromPricerInputs(args) {
149
+ const bond = buildBondDetails(args);
150
+ return new security_pb_1.SecurityProto()
151
+ .setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE)
152
+ .setBondDetails(bond);
105
153
  }
106
154
  /**
107
155
  * Returns the price scale factor for bonds.
@@ -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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"}
@@ -28,9 +28,11 @@ function createDummyBondSecurity() {
28
28
  securityProto.setUuid(uuid_1.UUID.random().toUUIDProto());
29
29
  securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
30
30
  securityProto.setAsOf(datetime_1.ZonedDateTime.now().toProto());
31
- securityProto.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
32
- securityProto.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
33
- securityProto.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
31
+ const bond = new security_pb_1.BondDetailsProto();
32
+ bond.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
33
+ bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
34
+ bond.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
35
+ securityProto.setBondDetails(bond);
34
36
  return new BondSecurity_1.default(securityProto);
35
37
  }
36
38
  //# sourceMappingURL=BondSecurity.priceScale.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BondSecurity.priceScale.test.js","sourceRoot":"","sources":["BondSecurity.priceScale.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,kEAA0C;AAC1C,iFAAgF;AAChF,yFAAuF;AACvF,uFAAqF;AACrF,iFAA+E;AAC/E,wCAAqC;AACrC,gDAAkD;AAClD,2CAAqC;AAErC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IAC/C,uBAAuB,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,SAAS,uBAAuB;IAC5B,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAE5D,8CAA8C;IAC9C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,EAC/C,yCAAyC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;IAC1C,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,OAAO,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;IAC7D,aAAa,CAAC,OAAO,CAAC,wBAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,YAAY,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1F,aAAa,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,aAAa,CAAC,eAAe,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAExF,OAAO,IAAI,sBAAY,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"BondSecurity.priceScale.test.js","sourceRoot":"","sources":["BondSecurity.priceScale.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,kEAA0C;AAC1C,iFAAkG;AAClG,yFAAuF;AACvF,uFAAqF;AACrF,iFAA+E;AAC/E,wCAAqC;AACrC,gDAAkD;AAClD,2CAAqC;AAErC,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;IAC/C,uBAAuB,EAAE,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,SAAS,uBAAuB;IAC5B,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAC;IAE5D,8CAA8C;IAC9C,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,EAC/C,yCAAyC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,uBAAuB;IAC5B,MAAM,aAAa,GAAG,IAAI,2BAAa,EAAE,CAAC;IAC1C,aAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IACzC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,aAAa,CAAC,OAAO,CAAC,WAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IACnD,aAAa,CAAC,cAAc,CAAC,kCAAgB,CAAC,aAAa,CAAC,CAAC;IAC7D,aAAa,CAAC,OAAO,CAAC,wBAAa,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,IAAI,8BAAgB,EAAE,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,IAAI,oCAAiB,EAAE,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,eAAe,CAAC,IAAI,8BAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,IAAI,sBAAY,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import assert = require('assert');
2
2
  import BondSecurity from './BondSecurity';
3
- import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
3
+ import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/security/security_pb';
4
4
  import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
5
5
  import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
6
6
  import { LocalDateProto } from '../../../fintekkers/models/util/local_date_pb';
@@ -28,9 +28,11 @@ function createDummyBondSecurity(): BondSecurity {
28
28
  securityProto.setUuid(UUID.random().toUUIDProto());
29
29
  securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
30
30
  securityProto.setAsOf(ZonedDateTime.now().toProto());
31
- securityProto.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
32
- securityProto.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
33
- securityProto.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
34
-
31
+ const bond = new BondDetailsProto();
32
+ bond.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
33
+ bond.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
34
+ bond.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
35
+ securityProto.setBondDetails(bond);
36
+
35
37
  return new BondSecurity(securityProto);
36
38
  }