@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
@@ -0,0 +1,67 @@
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 security_pb_1 = require("../../../fintekkers/models/security/security_pb");
8
+ const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
9
+ const identifier_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_pb");
10
+ const identifier_type_pb_1 = require("../../../fintekkers/models/security/identifier/identifier_type_pb");
11
+ const uuid_1 = require("../utils/uuid");
12
+ const identifier_1 = require("./identifier");
13
+ function buildSecurityWithIds(ids) {
14
+ const proto = new security_pb_1.SecurityProto()
15
+ .setObjectClass('Security')
16
+ .setVersion('0.0.1')
17
+ .setUuid(uuid_1.UUID.random().toUUIDProto())
18
+ .setProductType(product_type_pb_1.ProductTypeProto.COMMON_STOCK)
19
+ .setAssetClass('Equity')
20
+ .setIssuerName('Acme');
21
+ for (const id of ids) {
22
+ proto.addIdentifiers(new identifier_pb_1.IdentifierProto().setIdentifierType(id.type).setIdentifierValue(id.value));
23
+ }
24
+ return security_1.default.create(proto);
25
+ }
26
+ test('getIdentifiers returns wrapped Identifier list preserving order', () => {
27
+ const sec = buildSecurityWithIds([
28
+ { type: identifier_type_pb_1.IdentifierTypeProto.ISIN, value: 'US0378331005' },
29
+ { type: identifier_type_pb_1.IdentifierTypeProto.CUSIP, value: '037833100' },
30
+ { type: identifier_type_pb_1.IdentifierTypeProto.EXCH_TICKER, value: 'AAPL' },
31
+ ]);
32
+ const ids = sec.getIdentifiers();
33
+ expect(ids).toHaveLength(3);
34
+ expect(ids[0]).toBeInstanceOf(identifier_1.Identifier);
35
+ expect(ids[0].getIdentifierValue()).toBe('US0378331005');
36
+ expect(ids[0].getIdentifierType()).toBe(identifier_type_pb_1.IdentifierTypeProto.ISIN);
37
+ expect(ids[2].getIdentifierValue()).toBe('AAPL');
38
+ });
39
+ test('getIdentifiers returns empty list when none set', () => {
40
+ const sec = buildSecurityWithIds([]);
41
+ expect(sec.getIdentifiers()).toEqual([]);
42
+ });
43
+ test('getIdentifierByType finds the matching identifier', () => {
44
+ const sec = buildSecurityWithIds([
45
+ { type: identifier_type_pb_1.IdentifierTypeProto.ISIN, value: 'US0378331005' },
46
+ { type: identifier_type_pb_1.IdentifierTypeProto.CUSIP, value: '037833100' },
47
+ ]);
48
+ const cusip = sec.getIdentifierByType(identifier_type_pb_1.IdentifierTypeProto.CUSIP);
49
+ expect(cusip).toBeDefined();
50
+ expect(cusip.getIdentifierValue()).toBe('037833100');
51
+ });
52
+ test('getIdentifierByType returns undefined when type is absent', () => {
53
+ const sec = buildSecurityWithIds([
54
+ { type: identifier_type_pb_1.IdentifierTypeProto.ISIN, value: 'US0378331005' },
55
+ ]);
56
+ expect(sec.getIdentifierByType(identifier_type_pb_1.IdentifierTypeProto.FIGI)).toBeUndefined();
57
+ });
58
+ test('identifier accessors throw on a link-mode Security', () => {
59
+ // linkOf builds a link-mode SecurityProto. Reading the identifier list
60
+ // off a link is meaningless, so we explicitly reject it.
61
+ const linkProto = new security_pb_1.SecurityProto().setIsLink(true);
62
+ linkProto.setUuid(uuid_1.UUID.random().toUUIDProto());
63
+ const link = security_1.default.create(linkProto);
64
+ expect(() => link.getIdentifiers()).toThrow(/link-mode/);
65
+ expect(() => link.getIdentifierByType(identifier_type_pb_1.IdentifierTypeProto.ISIN)).toThrow(/link-mode/);
66
+ });
67
+ //# sourceMappingURL=security.identifiers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.identifiers.test.js","sourceRoot":"","sources":["security.identifiers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import Security from './security';
2
+ import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
3
+ import { ProductTypeProto } from '../../../fintekkers/models/security/product_type_pb';
4
+ import { IdentifierProto } from '../../../fintekkers/models/security/identifier/identifier_pb';
5
+ import { IdentifierTypeProto } from '../../../fintekkers/models/security/identifier/identifier_type_pb';
6
+ import { UUID } from '../utils/uuid';
7
+ import { Identifier } from './identifier';
8
+
9
+ function buildSecurityWithIds(ids: Array<{ type: IdentifierTypeProto; value: string }>): Security {
10
+ const proto = new SecurityProto()
11
+ .setObjectClass('Security')
12
+ .setVersion('0.0.1')
13
+ .setUuid(UUID.random().toUUIDProto())
14
+ .setProductType(ProductTypeProto.COMMON_STOCK)
15
+ .setAssetClass('Equity')
16
+ .setIssuerName('Acme');
17
+ for (const id of ids) {
18
+ proto.addIdentifiers(new IdentifierProto().setIdentifierType(id.type).setIdentifierValue(id.value));
19
+ }
20
+ return Security.create(proto);
21
+ }
22
+
23
+ test('getIdentifiers returns wrapped Identifier list preserving order', () => {
24
+ const sec = buildSecurityWithIds([
25
+ { type: IdentifierTypeProto.ISIN, value: 'US0378331005' },
26
+ { type: IdentifierTypeProto.CUSIP, value: '037833100' },
27
+ { type: IdentifierTypeProto.EXCH_TICKER, value: 'AAPL' },
28
+ ]);
29
+ const ids = sec.getIdentifiers();
30
+ expect(ids).toHaveLength(3);
31
+ expect(ids[0]).toBeInstanceOf(Identifier);
32
+ expect(ids[0].getIdentifierValue()).toBe('US0378331005');
33
+ expect(ids[0].getIdentifierType()).toBe(IdentifierTypeProto.ISIN);
34
+ expect(ids[2].getIdentifierValue()).toBe('AAPL');
35
+ });
36
+
37
+ test('getIdentifiers returns empty list when none set', () => {
38
+ const sec = buildSecurityWithIds([]);
39
+ expect(sec.getIdentifiers()).toEqual([]);
40
+ });
41
+
42
+ test('getIdentifierByType finds the matching identifier', () => {
43
+ const sec = buildSecurityWithIds([
44
+ { type: IdentifierTypeProto.ISIN, value: 'US0378331005' },
45
+ { type: IdentifierTypeProto.CUSIP, value: '037833100' },
46
+ ]);
47
+ const cusip = sec.getIdentifierByType(IdentifierTypeProto.CUSIP);
48
+ expect(cusip).toBeDefined();
49
+ expect(cusip!.getIdentifierValue()).toBe('037833100');
50
+ });
51
+
52
+ test('getIdentifierByType returns undefined when type is absent', () => {
53
+ const sec = buildSecurityWithIds([
54
+ { type: IdentifierTypeProto.ISIN, value: 'US0378331005' },
55
+ ]);
56
+ expect(sec.getIdentifierByType(IdentifierTypeProto.FIGI)).toBeUndefined();
57
+ });
58
+
59
+ test('identifier accessors throw on a link-mode Security', () => {
60
+ // linkOf builds a link-mode SecurityProto. Reading the identifier list
61
+ // off a link is meaningless, so we explicitly reject it.
62
+ const linkProto = new SecurityProto().setIsLink(true);
63
+ linkProto.setUuid(UUID.random().toUUIDProto());
64
+ const link = Security.create(linkProto);
65
+ expect(() => link.getIdentifiers()).toThrow(/link-mode/);
66
+ expect(() => link.getIdentifierByType(IdentifierTypeProto.ISIN)).toThrow(/link-mode/);
67
+ });
@@ -6,6 +6,8 @@ const datetime_1 = require("../utils/datetime");
6
6
  const uuid_1 = require("../utils/uuid");
7
7
  const date_1 = require("../utils/date");
8
8
  const product_type_pb_1 = require("../../../fintekkers/models/security/product_type_pb");
9
+ const identifier_1 = require("./identifier");
10
+ const product_hierarchy_1 = require("./product_hierarchy");
9
11
  class Security {
10
12
  constructor(proto) {
11
13
  this.proto = proto;
@@ -63,19 +65,38 @@ class Security {
63
65
  }
64
66
  }
65
67
  /**
66
- * Factory method to create the appropriate Security subclass based on security type
68
+ * Factory method to create the appropriate Security subclass based on
69
+ * the proto's product_type. Dispatch rules:
70
+ * - TIPS -> TIPSBond
71
+ * - TREASURY_FRN -> FloatingRateNote
72
+ * - any other descendant of BOND in hierarchy.json -> BondSecurity
73
+ * - any descendant of INDEX in hierarchy.json -> IndexSecurity
74
+ * - everything else (equity, cash, fx, etc.) -> base Security
67
75
  */
68
76
  static create(proto) {
69
- switch (proto.getProductType()) {
70
- case product_type_pb_1.ProductTypeProto.TREASURY_NOTE:
71
- case product_type_pb_1.ProductTypeProto.TIPS:
72
- case product_type_pb_1.ProductTypeProto.TREASURY_FRN:
73
- // Lazy import to avoid circular dependency
74
- const BondSecurity = require('./BondSecurity').default;
75
- return new BondSecurity(proto);
76
- default:
77
- return new Security(proto);
77
+ const productType = proto.getProductType();
78
+ const ptName = Object.keys(product_type_pb_1.ProductTypeProto)
79
+ .find(k => product_type_pb_1.ProductTypeProto[k] === productType);
80
+ // TIPS / FRN have dedicated wrappers with extension-specific accessors.
81
+ if (productType === product_type_pb_1.ProductTypeProto.TIPS) {
82
+ const TIPSBond = require('./TIPSBond').default;
83
+ return new TIPSBond(proto);
84
+ }
85
+ if (productType === product_type_pb_1.ProductTypeProto.TREASURY_FRN) {
86
+ const FloatingRateNote = require('./FloatingRateNote').default;
87
+ return new FloatingRateNote(proto);
88
+ }
89
+ // Any other BOND descendant -> generic BondSecurity wrapper.
90
+ if (ptName && (0, product_hierarchy_1.isDescendantOf)(ptName, 'BOND')) {
91
+ const BondSecurity = require('./BondSecurity').default;
92
+ return new BondSecurity(proto);
78
93
  }
94
+ // INDEX descendants get the IndexSecurity wrapper.
95
+ if (ptName && (0, product_hierarchy_1.isDescendantOf)(ptName, 'INDEX')) {
96
+ const IndexSecurity = require('./IndexSecurity').default;
97
+ return new IndexSecurity(proto);
98
+ }
99
+ return new Security(proto);
79
100
  }
80
101
  /**
81
102
  * Type guard: true iff this Security is a BondSecurity (BOND_SECURITY,
@@ -91,12 +112,19 @@ class Security {
91
112
  */
92
113
  isBond() {
93
114
  const t = this.proto.getProductType();
94
- return t === product_type_pb_1.ProductTypeProto.TREASURY_NOTE
95
- || t === product_type_pb_1.ProductTypeProto.TIPS
96
- || t === product_type_pb_1.ProductTypeProto.TREASURY_FRN;
115
+ const ptName = Object.keys(product_type_pb_1.ProductTypeProto)
116
+ .find(k => product_type_pb_1.ProductTypeProto[k] === t);
117
+ if (!ptName)
118
+ return false;
119
+ return (0, product_hierarchy_1.isDescendantOf)(ptName, 'BOND');
97
120
  }
98
121
  toString() {
99
- return `ID[${this.getID().toString()}], ${this.getSecurityID()}[${this.getIssuerName()}]`;
122
+ const ids = this.proto.getIsLink() ? [] : this.proto.getIdentifiersList();
123
+ const idStr = ids && ids.length > 0
124
+ ? new identifier_1.Identifier(ids[0]).toString()
125
+ : '<no-identifier>';
126
+ const issuer = this.proto.getIsLink() ? '<link>' : this.getIssuerName();
127
+ return `ID[${this.getID().toString()}], ${idStr}[${issuer}]`;
100
128
  }
101
129
  getFields() {
102
130
  return [field_pb_1.FieldProto.ID, field_pb_1.FieldProto.SECURITY_ID, field_pb_1.FieldProto.AS_OF, field_pb_1.FieldProto.ASSET_CLASS, field_pb_1.FieldProto.IDENTIFIER];
@@ -114,8 +142,10 @@ class Security {
114
142
  return this.getProductClass();
115
143
  case field_pb_1.FieldProto.PRODUCT_TYPE:
116
144
  return this.getProductType();
117
- case field_pb_1.FieldProto.IDENTIFIER:
118
- return this.getSecurityID();
145
+ case field_pb_1.FieldProto.IDENTIFIER: {
146
+ const list = this.proto.getIdentifiersList();
147
+ return list && list.length > 0 ? new identifier_1.Identifier(list[0]) : null;
148
+ }
119
149
  case field_pb_1.FieldProto.TENOR:
120
150
  case field_pb_1.FieldProto.ADJUSTED_TENOR:
121
151
  throw new Error('Not implemented yet');
@@ -164,12 +194,28 @@ class Security {
164
194
  const securityTypeString = Object.keys(product_type_pb_1.ProductTypeProto).find(key => product_type_pb_1.ProductTypeProto[key] === securityType);
165
195
  return securityTypeString || 'UNKNOWN_SECURITY_TYPE';
166
196
  }
167
- getSecurityID() {
168
- this.assertNotLink('securityId');
169
- const identifier = this.proto.getIdentifier();
170
- if (!identifier)
171
- throw new Error("Identifier is required");
172
- return identifier;
197
+ /**
198
+ * Returns every Identifier attached to this security as typed wrappers.
199
+ * Empty list if none are set. Throws on a link-mode Security.
200
+ */
201
+ getIdentifiers() {
202
+ this.assertNotLink('identifiers');
203
+ const list = this.proto.getIdentifiersList();
204
+ if (!list)
205
+ return [];
206
+ return list.map(p => new identifier_1.Identifier(p));
207
+ }
208
+ /**
209
+ * Returns the first Identifier matching the given IdentifierTypeProto,
210
+ * or undefined if none is present. Throws on a link-mode Security.
211
+ */
212
+ getIdentifierByType(type) {
213
+ this.assertNotLink('identifierByType');
214
+ const list = this.proto.getIdentifiersList();
215
+ if (!list)
216
+ return undefined;
217
+ const found = list.find(p => p.getIdentifierType() === type);
218
+ return found ? new identifier_1.Identifier(found) : undefined;
173
219
  }
174
220
  /**
175
221
  * Returns the issue date if set, else null. Per-type semantic:
@@ -185,9 +231,8 @@ class Security {
185
231
  */
186
232
  getIssueDate() {
187
233
  this.assertNotLink('issueDate');
188
- // Prefer oneof bond sub-message if available, fall back to flat fields
189
234
  const bond = this.getBondLikeDetails();
190
- const date = bond ? bond.getIssueDate() : this.proto.getIssueDate();
235
+ const date = bond ? bond.getIssueDate() : undefined;
191
236
  if (!date)
192
237
  return null;
193
238
  return new date_1.LocalDate(date);
@@ -204,18 +249,16 @@ class Security {
204
249
  */
205
250
  getMaturityDate() {
206
251
  this.assertNotLink('maturityDate');
207
- // Prefer oneof bond sub-message if available, fall back to flat fields
208
252
  const bond = this.getBondLikeDetails();
209
- const date = bond ? bond.getMaturityDate() : this.proto.getMaturityDate();
253
+ const date = bond ? bond.getMaturityDate() : undefined;
210
254
  if (!date)
211
255
  throw new Error("Maturity date is required");
212
256
  return new date_1.LocalDate(date);
213
257
  }
214
258
  /**
215
259
  * Returns the canonical bond_details sub-message if set, else undefined.
216
- * v0.3.0 collapsed the prior 3-arm bond/tips/frn oneof into a single
217
- * top-level bond_details — TIPS and FRN extras now live in their own
218
- * tips_extension / frn_extension fields.
260
+ * TIPS and FRN extras live in their own tips_extension / frn_extension
261
+ * fields and co-exist with bond_details.
219
262
  */
220
263
  getBondLikeDetails() {
221
264
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"security.js","sourceRoot":"","sources":["security.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["security.ts"],"names":[],"mappings":";;AAAA,2EAA0E;AAC1E,iFAAgF;AAGhF,gDAAkD;AAClD,wCAAqC;AACrC,wCAA0C;AAC1C,yFAAuF;AAEvF,6CAA0C;AAC1C,2DAAqD;AAErD,MAAM,QAAQ;IAGZ,YAAY,KAAoB;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,CAAC,IAAU,EAAE,IAAmB;QAC3C,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;QAC/G,MAAM,KAAK,GAAG,IAAI,2BAAa,EAAE,CAAC;QAClC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,YAAY,CAAC,IAAU;QAC5B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,2BAAa,EAAE,CAAC;QAClC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAU;QACpC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,MAAM,CAAC,qBAAqB,CAAC,IAAmB;QACtD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,aAAa,CAAC,QAAgB;QACpC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,eAAe,QAAQ,2CAA2C;kBAChE,8CAA8C;kBAC9C,kCAAkC,CACrC,CAAC;SACH;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,CAAC,KAAoB;QAChC,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C;aACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kCAAgB,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QAElD,wEAAwE;QACxE,IAAI,WAAW,KAAK,kCAAgB,CAAC,IAAI,EAAE;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;YAC/C,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC5B;QACD,IAAI,WAAW,KAAK,kCAAgB,CAAC,YAAY,EAAE;YACjD,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;YAC/D,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,6DAA6D;QAC7D,IAAI,MAAM,IAAI,IAAA,kCAAc,EAAC,MAAgB,EAAE,MAAM,CAAC,EAAE;YACtD,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;YACvD,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,mDAAmD;QACnD,IAAI,MAAM,IAAI,IAAA,kCAAc,EAAC,MAAgB,EAAE,OAAO,CAAC,EAAE;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;YACzD,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACtC,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C;aACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kCAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,OAAO,IAAA,kCAAc,EAAC,MAAgB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAGD,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YACjC,CAAC,CAAC,IAAI,uBAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACnC,CAAC,CAAC,iBAAiB,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;QACxE,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC;IAC/D,CAAC;IAED,SAAS;QACP,OAAO,CAAC,qBAAU,CAAC,EAAE,EAAE,qBAAU,CAAC,WAAW,EAAE,qBAAU,CAAC,KAAK,EAAE,qBAAU,CAAC,WAAW,EAAE,qBAAU,CAAC,UAAU,CAAC,CAAC;IAClH,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,QAAQ,KAAK,EAAE;YACb,KAAK,qBAAU,CAAC,EAAE,CAAC;YACnB,KAAK,qBAAU,CAAC,WAAW;gBACzB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,qBAAU,CAAC,KAAK;gBACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,KAAK,qBAAU,CAAC,WAAW;gBACzB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,KAAK,qBAAU,CAAC,aAAa;gBAC3B,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC,KAAK,qBAAU,CAAC,YAAY;gBAC1B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,KAAK,qBAAU,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC7C,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,uBAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aACjE;YACD,KAAK,qBAAU,CAAC,KAAK,CAAC;YACtB,KAAK,qBAAU,CAAC,cAAc;gBAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,KAAK,qBAAU,CAAC,aAAa;gBAC3B,+DAA+D;gBAC/D,uDAAuD;gBACvD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACvD,KAAK,qBAAU,CAAC,UAAU;gBACxB,gEAAgE;gBAChE,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B;gBACE,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,EAAE,CAAC,CAAC;SACrE;IACH,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,OAAO,WAAI,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;IAChC,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,OAAO,IAAI,wBAAa,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QACjD,MAAM,kBAAkB,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C,CAAC,IAAI,CACrG,GAAG,CAAC,EAAE,CAAC,kCAAgB,CAAC,GAAG,CAAC,KAAK,YAAY,CAC9C,CAAC;QAEF,OAAO,kBAAkB,IAAI,uBAAuB,CAAC;IACvD,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,mBAAmB,CAAC,IAAyB;QAC3C,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,EAAE,KAAK,IAAI,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,uBAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,YAAY;QACV,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,IAAI,gBAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;;;;;OASG;IACH,eAAe;QACb,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACxD,OAAO,IAAI,gBAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACO,kBAAkB;;QAC1B,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,UAAU;YAAE,OAAO,SAAS,CAAC;QACtE,OAAO,MAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,mCAAI,SAAS,CAAC;IAClD,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAe;QACpB,IAAI,KAAK,YAAY,QAAQ,EAAE;YAC7B,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;SAC3C;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;CACF;AAED,kBAAe,QAAQ,CAAC"}
@@ -64,34 +64,38 @@ test('BondSecurity.getMaturityDate works on bond (inherited from Security)', ()
64
64
  expect(bond.getMaturityDate().toDate().getFullYear()).toBe(2026);
65
65
  });
66
66
  function dummySecurity() {
67
+ const bond = new security_pb_1.BondDetailsProto()
68
+ .setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'))
69
+ .setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
70
+ .setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
71
+ .setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
72
+ .setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
73
+ .setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
67
74
  return security_1.default.create(new security_pb_1.SecurityProto()
68
75
  .setObjectClass('Transaction').setVersion('0.0.1').setUuid(uuid_1.UUID.random().toUUIDProto())
69
- .setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
70
76
  .setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
71
77
  .setAssetClass("Bond")
72
78
  .setIssuerName("Dummy issuer")
73
- .setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'))
74
- .setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
75
- .setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
76
- .setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
77
- .setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1))
79
+ .setBondDetails(bond)
78
80
  .setDescription("Dummy security"));
79
81
  }
80
82
  function dummyBondSecurity() {
81
83
  // Same dummy security but with securityType set so the factory routes
82
84
  // to BondSecurity.
85
+ const bond = new security_pb_1.BondDetailsProto()
86
+ .setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'))
87
+ .setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
88
+ .setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
89
+ .setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
90
+ .setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
91
+ .setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
83
92
  return security_1.default.create(new security_pb_1.SecurityProto()
84
93
  .setObjectClass('Security').setVersion('0.0.1').setUuid(uuid_1.UUID.random().toUUIDProto())
85
94
  .setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE)
86
- .setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
87
95
  .setQuantityType(security_quantity_type_pb_1.SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
88
96
  .setAssetClass("Bond")
89
97
  .setIssuerName("Dummy issuer")
90
- .setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'))
91
- .setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY)
92
- .setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED)
93
- .setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2026).setMonth(1).setDay(1))
94
- .setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1))
98
+ .setBondDetails(bond)
95
99
  .setDescription("Dummy bond"));
96
100
  }
97
101
  function dummyEquity() {
@@ -1 +1 @@
1
- {"version":3,"file":"security.test.js","sourceRoot":"","sources":["security.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"security.test.js","sourceRoot":"","sources":["security.test.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import Security from './security';
6
6
  import BondSecurity from './BondSecurity';
7
7
 
8
8
  import { DecimalValueProto } from '../../../fintekkers/models/util/decimal_value_pb';
9
- import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
9
+ import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/security/security_pb';
10
10
  import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
11
11
  import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
12
12
  import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
@@ -70,19 +70,19 @@ test('BondSecurity.getMaturityDate works on bond (inherited from Security)', ()
70
70
  });
71
71
 
72
72
  function dummySecurity() {
73
+ const bond = new BondDetailsProto()
74
+ .setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
75
+ .setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
76
+ .setCouponType(CouponTypeProto.FIXED)
77
+ .setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
78
+ .setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
79
+ .setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
73
80
  return Security.create(new SecurityProto()
74
81
  .setObjectClass('Transaction').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
75
- .setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
76
82
  .setQuantityType(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
77
83
  .setAssetClass("Bond")
78
84
  .setIssuerName("Dummy issuer")
79
-
80
- .setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
81
- .setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
82
- .setCouponType(CouponTypeProto.FIXED)
83
-
84
- .setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
85
- .setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1))
85
+ .setBondDetails(bond)
86
86
  .setDescription("Dummy security")
87
87
  );
88
88
  }
@@ -90,18 +90,20 @@ function dummySecurity() {
90
90
  function dummyBondSecurity() {
91
91
  // Same dummy security but with securityType set so the factory routes
92
92
  // to BondSecurity.
93
+ const bond = new BondDetailsProto()
94
+ .setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
95
+ .setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
96
+ .setCouponType(CouponTypeProto.FIXED)
97
+ .setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
98
+ .setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
99
+ .setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
93
100
  return Security.create(new SecurityProto()
94
101
  .setObjectClass('Security').setVersion('0.0.1').setUuid(UUID.random().toUUIDProto())
95
102
  .setProductType(ProductTypeProto.TREASURY_NOTE)
96
- .setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'))
97
103
  .setQuantityType(SecurityQuantityTypeProto.ORIGINAL_FACE_VALUE)
98
104
  .setAssetClass("Bond")
99
105
  .setIssuerName("Dummy issuer")
100
- .setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'))
101
- .setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY)
102
- .setCouponType(CouponTypeProto.FIXED)
103
- .setMaturityDate(new LocalDateProto().setYear(2026).setMonth(1).setDay(1))
104
- .setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1))
106
+ .setBondDetails(bond)
105
107
  .setDescription("Dummy bond")
106
108
  );
107
109
  }