@fintekkers/ledger-models 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node/fintekkers/models/security/security_pb.d.ts +0 -80
- package/node/fintekkers/models/security/security_pb.js +1 -723
- package/node/fintekkers/models/security/security_pb.test.js +15 -15
- package/node/fintekkers/models/security/security_pb.test.js.map +1 -1
- package/node/fintekkers/models/security/security_pb.test.ts +17 -18
- package/node/wrappers/models/price/Price.cash.test.js +1 -1
- package/node/wrappers/models/price/Price.cash.test.js.map +1 -1
- package/node/wrappers/models/price/Price.cash.test.ts +2 -2
- package/node/wrappers/models/security/BondSecurity.js +8 -8
- package/node/wrappers/models/security/BondSecurity.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js +5 -3
- package/node/wrappers/models/security/BondSecurity.priceScale.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.priceScale.test.ts +7 -5
- package/node/wrappers/models/security/BondSecurity.test.js +28 -20
- package/node/wrappers/models/security/BondSecurity.test.js.map +1 -1
- package/node/wrappers/models/security/BondSecurity.test.ts +29 -21
- package/node/wrappers/models/security/BondSecurity.ts +8 -8
- package/node/wrappers/models/security/security-roundtrip.test.js +77 -61
- package/node/wrappers/models/security/security-roundtrip.test.js.map +1 -1
- package/node/wrappers/models/security/security-roundtrip.test.ts +78 -62
- package/node/wrappers/models/security/security.d.ts +2 -3
- package/node/wrappers/models/security/security.js +8 -10
- package/node/wrappers/models/security/security.js.map +1 -1
- package/node/wrappers/models/security/security.test.js +16 -12
- package/node/wrappers/models/security/security.test.js.map +1 -1
- package/node/wrappers/models/security/security.test.ts +17 -15
- package/node/wrappers/models/security/security.ts +8 -10
- package/node/wrappers/models/transaction/transaction.derived.test.js +8 -6
- package/node/wrappers/models/transaction/transaction.derived.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction.derived.test.ts +9 -7
- package/node/wrappers/models/transaction/transaction_constructor.test.js +8 -6
- package/node/wrappers/models/transaction/transaction_constructor.test.js.map +1 -1
- package/node/wrappers/models/transaction/transaction_constructor.test.ts +9 -7
- package/node/wrappers/services/searchWithSecurities.test.js +2 -2
- package/node/wrappers/services/searchWithSecurities.test.js.map +1 -1
- package/node/wrappers/services/searchWithSecurities.test.ts +2 -2
- package/node/wrappers/services/security-service/security.maturityLadder.test.js +2 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.maturityLadder.test.ts +2 -1
- package/node/wrappers/services/security-service/security.test.js +10 -8
- package/node/wrappers/services/security-service/security.test.js.map +1 -1
- package/node/wrappers/services/security-service/security.test.ts +12 -9
- package/node/wrappers/util/link-resolver.test.js +1 -1
- package/node/wrappers/util/link-resolver.test.js.map +1 -1
- package/node/wrappers/util/link-resolver.test.ts +1 -1
- package/package.json +1 -1
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//
|
|
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
|
|
11
|
-
|
|
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.
|
|
24
|
-
// Serialize the object to a binary representation
|
|
25
|
+
security.setBondDetails(bond);
|
|
25
26
|
const binaryData = security.serializeBinary();
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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,
|
|
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
|
-
//
|
|
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
|
|
10
|
-
|
|
11
|
-
|
|
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.
|
|
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
|
-
|
|
29
|
-
|
|
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,
|
|
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
|
}
|
|
@@ -68,40 +68,40 @@ class BondSecurity extends security_1.default {
|
|
|
68
68
|
}
|
|
69
69
|
getCouponRate() {
|
|
70
70
|
const bond = this.getBondLikeDetails();
|
|
71
|
-
const rate = bond ? bond.getCouponRate() :
|
|
71
|
+
const rate = bond ? bond.getCouponRate() : undefined;
|
|
72
72
|
if (!rate)
|
|
73
73
|
throw new Error("Coupon rate is required for bonds");
|
|
74
74
|
return rate;
|
|
75
75
|
}
|
|
76
76
|
getFaceValue() {
|
|
77
77
|
const bond = this.getBondLikeDetails();
|
|
78
|
-
const faceValue = bond ? bond.getFaceValue() :
|
|
78
|
+
const faceValue = bond ? bond.getFaceValue() : undefined;
|
|
79
79
|
if (!faceValue)
|
|
80
80
|
throw new Error("Face value is required for bonds");
|
|
81
81
|
return faceValue;
|
|
82
82
|
}
|
|
83
83
|
getCouponType() {
|
|
84
84
|
const bond = this.getBondLikeDetails();
|
|
85
|
-
const couponType = bond ? bond.getCouponType() :
|
|
86
|
-
if (
|
|
85
|
+
const couponType = bond ? bond.getCouponType() : undefined;
|
|
86
|
+
if (couponType === undefined)
|
|
87
87
|
throw new Error("Coupon Type is required for bonds");
|
|
88
88
|
return new coupon_type_1.CouponType(couponType);
|
|
89
89
|
}
|
|
90
90
|
getCouponFrequency() {
|
|
91
91
|
const bond = this.getBondLikeDetails();
|
|
92
|
-
const couponFrequency = bond ? bond.getCouponFrequency() :
|
|
93
|
-
if (
|
|
92
|
+
const couponFrequency = bond ? bond.getCouponFrequency() : undefined;
|
|
93
|
+
if (couponFrequency === undefined)
|
|
94
94
|
throw new Error("Coupon Frequency is required for bonds");
|
|
95
95
|
return new coupon_frequency_1.CouponFrequency(couponFrequency);
|
|
96
96
|
}
|
|
97
97
|
getDatedDate() {
|
|
98
98
|
const bond = this.getBondLikeDetails();
|
|
99
|
-
const datedDate = bond ? bond.getDatedDate() :
|
|
99
|
+
const datedDate = bond ? bond.getDatedDate() : undefined;
|
|
100
100
|
return datedDate ? new date_1.LocalDate(datedDate) : undefined;
|
|
101
101
|
}
|
|
102
102
|
getIssuanceInfo() {
|
|
103
103
|
const bond = this.getBondLikeDetails();
|
|
104
|
-
return bond ? bond.getIssuanceInfoList() :
|
|
104
|
+
return bond ? bond.getIssuanceInfoList() : [];
|
|
105
105
|
}
|
|
106
106
|
/**
|
|
107
107
|
* Returns the price scale factor for bonds.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondSecurity.js","sourceRoot":"","sources":["BondSecurity.ts"],"names":[],"mappings":";;;;;AAAA,0DAAkC;AAElC,yFAAuF;AAEvF,wCAA0C;AAE1C,yDAAqD;AACrD,+CAA2C;AAC3C,iCAAuC;AACvC,qFAAmF;AACnF,2CAAqC;AACrC,2DAAqD;AAErD,MAAM,YAAa,SAAQ,kBAAQ;IACjC,YAAY,KAAoB;QAC9B,KAAK,CAAC,KAAK,CAAC,CAAC;QACb,oEAAoE;QACpE,kEAAkE;QAClE,6DAA6D;QAC7D,yDAAyD;QACzD,8CAA8C;QAC9C,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,kCAAgB,CAA0C;aACnF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kCAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,IAAI,CAAC,IAAA,kCAAc,EAAC,MAAgB,EAAE,MAAM,CAAC,EAAE;YACxD,MAAM,IAAI,KAAK,CACb,+FAA+F,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,SAAS,EAAE,CACrH,CAAC;SACH;IACH,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,QAAe;QACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,CAAC;QACrE,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC;QAErD,4DAA4D;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAE7D,OAAO,IAAI,YAAK,CAAC,8BAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,SAAe,EAAE,OAAa;QACpD,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;QAC5D,IAAI,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvD,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;QAEnD,kEAAkE;QAClE,IAAI,IAAI,GAAG,CAAC,EAAE;YACZ,MAAM,EAAE,CAAC;YACT,+CAA+C;YAC/C,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5F,IAAI,IAAI,kBAAkB,CAAC;SAC5B;QAED,6BAA6B;QAC7B,IAAI,MAAM,GAAG,CAAC,EAAE;YACd,KAAK,EAAE,CAAC;YACR,MAAM,IAAI,EAAE,CAAC;SACd;QAED,OAAO;YACL,KAAK;YACL,MAAM;YACN,IAAI;SACL,CAAC;IACJ,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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,
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
}
|
|
@@ -32,12 +32,14 @@ function testBondSecurityCreation() {
|
|
|
32
32
|
securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
33
33
|
securityProto.setAssetClass('FixedIncome');
|
|
34
34
|
securityProto.setIssuerName('Test Issuer');
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
const bond = new security_pb_1.BondDetailsProto();
|
|
36
|
+
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
37
|
+
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
38
|
+
bond.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'));
|
|
39
|
+
bond.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
|
|
40
|
+
bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
41
|
+
bond.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
42
|
+
securityProto.setBondDetails(bond);
|
|
41
43
|
securityProto.setDescription('Test Bond Security');
|
|
42
44
|
// Call Security.create and validate it returns a BondSecurity
|
|
43
45
|
const security = security_1.default.create(securityProto);
|
|
@@ -60,14 +62,16 @@ function testBondSecurityTenor() {
|
|
|
60
62
|
securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
61
63
|
securityProto.setAssetClass('FixedIncome');
|
|
62
64
|
securityProto.setIssuerName('Test Issuer');
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
const bond = new security_pb_1.BondDetailsProto();
|
|
66
|
+
bond.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
67
|
+
bond.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
68
|
+
bond.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'));
|
|
69
|
+
bond.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
|
|
67
70
|
// Set issue date: January 1, 2021
|
|
68
|
-
|
|
71
|
+
bond.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
69
72
|
// Set maturity date: January 1, 2031 (exactly 10 years later)
|
|
70
|
-
|
|
73
|
+
bond.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
74
|
+
securityProto.setBondDetails(bond);
|
|
71
75
|
securityProto.setDescription('Test 10-Year Bond Security');
|
|
72
76
|
// Create BondSecurity
|
|
73
77
|
const security = security_1.default.create(securityProto);
|
|
@@ -98,14 +102,16 @@ function testBondSecurityTenor() {
|
|
|
98
102
|
securityProto2.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
99
103
|
securityProto2.setAssetClass('FixedIncome');
|
|
100
104
|
securityProto2.setIssuerName('Test Issuer');
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
const bond2 = new security_pb_1.BondDetailsProto();
|
|
106
|
+
bond2.setCouponType(coupon_type_pb_1.CouponTypeProto.FIXED);
|
|
107
|
+
bond2.setCouponFrequency(coupon_frequency_pb_1.CouponFrequencyProto.SEMIANNUALLY);
|
|
108
|
+
bond2.setCouponRate(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('0.05'));
|
|
109
|
+
bond2.setFaceValue(new decimal_value_pb_1.DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
|
|
105
110
|
// Set issue date: January 15, 2021
|
|
106
|
-
|
|
111
|
+
bond2.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(15));
|
|
107
112
|
// Set maturity date: July 20, 2023 (2 years, 6 months, 5 days)
|
|
108
|
-
|
|
113
|
+
bond2.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2023).setMonth(7).setDay(20));
|
|
114
|
+
securityProto2.setBondDetails(bond2);
|
|
109
115
|
securityProto2.setDescription('Test Bond with Months and Days');
|
|
110
116
|
const bondSecurity2 = security_1.default.create(securityProto2);
|
|
111
117
|
const tenor2 = bondSecurity2.getTenor();
|
|
@@ -123,9 +129,11 @@ function testBondSecurityTenorWithAsOfDate() {
|
|
|
123
129
|
// Create a SecurityProto with BOND_SECURITY type and dates for a 10-year bond
|
|
124
130
|
const securityProto = new security_pb_1.SecurityProto();
|
|
125
131
|
securityProto.setProductType(product_type_pb_1.ProductTypeProto.TREASURY_NOTE);
|
|
126
|
-
|
|
132
|
+
const bond3 = new security_pb_1.BondDetailsProto();
|
|
133
|
+
bond3.setIssueDate(new local_date_pb_1.LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
127
134
|
// Set maturity date: January 1, 2031 (exactly 10 years later)
|
|
128
|
-
|
|
135
|
+
bond3.setMaturityDate(new local_date_pb_1.LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
136
|
+
securityProto.setBondDetails(bond3);
|
|
129
137
|
// Create BondSecurity
|
|
130
138
|
const security = security_1.default.create(securityProto);
|
|
131
139
|
const bondSecurity = security;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondSecurity.test.js","sourceRoot":"","sources":["BondSecurity.test.ts"],"names":[],"mappings":";;;;;AAAA,iCAAkC;AAClC,0DAAkC;AAClC,kEAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"BondSecurity.test.js","sourceRoot":"","sources":["BondSecurity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import assert = require('assert');
|
|
2
2
|
import Security from './security';
|
|
3
3
|
import BondSecurity from './BondSecurity';
|
|
4
|
-
import { SecurityProto } from '../../../fintekkers/models/security/security_pb';
|
|
4
|
+
import { SecurityProto, BondDetailsProto } from '../../../fintekkers/models/security/security_pb';
|
|
5
5
|
import { ProductTypeProto } from "../../../fintekkers/models/security/product_type_pb";
|
|
6
6
|
import { CouponTypeProto } from '../../../fintekkers/models/security/coupon_type_pb';
|
|
7
7
|
import { CouponFrequencyProto } from '../../../fintekkers/models/security/coupon_frequency_pb';
|
|
@@ -32,12 +32,14 @@ function testBondSecurityCreation(): void {
|
|
|
32
32
|
securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
33
33
|
securityProto.setAssetClass('FixedIncome');
|
|
34
34
|
securityProto.setIssuerName('Test Issuer');
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
const bond = new BondDetailsProto();
|
|
36
|
+
bond.setCouponType(CouponTypeProto.FIXED);
|
|
37
|
+
bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
38
|
+
bond.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'));
|
|
39
|
+
bond.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
|
|
40
|
+
bond.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
41
|
+
bond.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
42
|
+
securityProto.setBondDetails(bond);
|
|
41
43
|
securityProto.setDescription('Test Bond Security');
|
|
42
44
|
|
|
43
45
|
// Call Security.create and validate it returns a BondSecurity
|
|
@@ -65,15 +67,17 @@ function testBondSecurityTenor(): void {
|
|
|
65
67
|
securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
66
68
|
securityProto.setAssetClass('FixedIncome');
|
|
67
69
|
securityProto.setIssuerName('Test Issuer');
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
const bond = new BondDetailsProto();
|
|
71
|
+
bond.setCouponType(CouponTypeProto.FIXED);
|
|
72
|
+
bond.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
73
|
+
bond.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'));
|
|
74
|
+
bond.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
|
|
72
75
|
|
|
73
76
|
// Set issue date: January 1, 2021
|
|
74
|
-
|
|
77
|
+
bond.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
75
78
|
// Set maturity date: January 1, 2031 (exactly 10 years later)
|
|
76
|
-
|
|
79
|
+
bond.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
80
|
+
securityProto.setBondDetails(bond);
|
|
77
81
|
securityProto.setDescription('Test 10-Year Bond Security');
|
|
78
82
|
|
|
79
83
|
// Create BondSecurity
|
|
@@ -110,15 +114,17 @@ function testBondSecurityTenor(): void {
|
|
|
110
114
|
securityProto2.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
111
115
|
securityProto2.setAssetClass('FixedIncome');
|
|
112
116
|
securityProto2.setIssuerName('Test Issuer');
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
const bond2 = new BondDetailsProto();
|
|
118
|
+
bond2.setCouponType(CouponTypeProto.FIXED);
|
|
119
|
+
bond2.setCouponFrequency(CouponFrequencyProto.SEMIANNUALLY);
|
|
120
|
+
bond2.setCouponRate(new DecimalValueProto().setArbitraryPrecisionValue('0.05'));
|
|
121
|
+
bond2.setFaceValue(new DecimalValueProto().setArbitraryPrecisionValue('1000.00'));
|
|
117
122
|
|
|
118
123
|
// Set issue date: January 15, 2021
|
|
119
|
-
|
|
124
|
+
bond2.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(15));
|
|
120
125
|
// Set maturity date: July 20, 2023 (2 years, 6 months, 5 days)
|
|
121
|
-
|
|
126
|
+
bond2.setMaturityDate(new LocalDateProto().setYear(2023).setMonth(7).setDay(20));
|
|
127
|
+
securityProto2.setBondDetails(bond2);
|
|
122
128
|
securityProto2.setDescription('Test Bond with Months and Days');
|
|
123
129
|
|
|
124
130
|
const bondSecurity2 = Security.create(securityProto2) as BondSecurity;
|
|
@@ -141,9 +147,11 @@ function testBondSecurityTenorWithAsOfDate(): void {
|
|
|
141
147
|
const securityProto = new SecurityProto();
|
|
142
148
|
|
|
143
149
|
securityProto.setProductType(ProductTypeProto.TREASURY_NOTE);
|
|
144
|
-
|
|
150
|
+
const bond3 = new BondDetailsProto();
|
|
151
|
+
bond3.setIssueDate(new LocalDateProto().setYear(2021).setMonth(1).setDay(1));
|
|
145
152
|
// Set maturity date: January 1, 2031 (exactly 10 years later)
|
|
146
|
-
|
|
153
|
+
bond3.setMaturityDate(new LocalDateProto().setYear(2031).setMonth(1).setDay(1));
|
|
154
|
+
securityProto.setBondDetails(bond3);
|
|
147
155
|
|
|
148
156
|
// Create BondSecurity
|
|
149
157
|
const security = Security.create(securityProto);
|
|
@@ -77,41 +77,41 @@ class BondSecurity extends Security {
|
|
|
77
77
|
|
|
78
78
|
getCouponRate(): DecimalValueProto {
|
|
79
79
|
const bond = this.getBondLikeDetails();
|
|
80
|
-
const rate = bond ? bond.getCouponRate() :
|
|
80
|
+
const rate = bond ? bond.getCouponRate() : undefined;
|
|
81
81
|
if (!rate) throw new Error("Coupon rate is required for bonds");
|
|
82
82
|
return rate;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
getFaceValue(): DecimalValueProto {
|
|
86
86
|
const bond = this.getBondLikeDetails();
|
|
87
|
-
const faceValue = bond ? bond.getFaceValue() :
|
|
87
|
+
const faceValue = bond ? bond.getFaceValue() : undefined;
|
|
88
88
|
if (!faceValue) throw new Error("Face value is required for bonds");
|
|
89
89
|
return faceValue;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
getCouponType(): CouponType {
|
|
93
93
|
const bond = this.getBondLikeDetails();
|
|
94
|
-
const couponType = bond ? bond.getCouponType() :
|
|
95
|
-
if (
|
|
94
|
+
const couponType = bond ? bond.getCouponType() : undefined;
|
|
95
|
+
if (couponType === undefined) throw new Error("Coupon Type is required for bonds");
|
|
96
96
|
return new CouponType(couponType);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
getCouponFrequency(): CouponFrequency {
|
|
100
100
|
const bond = this.getBondLikeDetails();
|
|
101
|
-
const couponFrequency = bond ? bond.getCouponFrequency() :
|
|
102
|
-
if (
|
|
101
|
+
const couponFrequency = bond ? bond.getCouponFrequency() : undefined;
|
|
102
|
+
if (couponFrequency === undefined) throw new Error("Coupon Frequency is required for bonds");
|
|
103
103
|
return new CouponFrequency(couponFrequency);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
getDatedDate(): LocalDate | undefined {
|
|
107
107
|
const bond = this.getBondLikeDetails();
|
|
108
|
-
const datedDate = bond ? bond.getDatedDate() :
|
|
108
|
+
const datedDate = bond ? bond.getDatedDate() : undefined;
|
|
109
109
|
return datedDate ? new LocalDate(datedDate) : undefined;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
getIssuanceInfo(): IssuanceProto[] {
|
|
113
113
|
const bond = this.getBondLikeDetails();
|
|
114
|
-
return bond ? bond.getIssuanceInfoList() :
|
|
114
|
+
return bond ? bond.getIssuanceInfoList() : [];
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
/**
|