@bitgo-beta/sdk-coin-canton 1.0.1-beta.28 → 1.0.1-beta.281

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 (89) hide show
  1. package/dist/resources/hash/hash.js +2 -1
  2. package/dist/resources/proto/damlTransaction.js +4 -4
  3. package/dist/resources/proto/damlTransactionNode.js +3 -3
  4. package/dist/resources/proto/damlTransactionNodeSeed.js +2 -2
  5. package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +4 -4
  6. package/dist/resources/proto/metadata/metadataInputContract.js +3 -3
  7. package/dist/resources/proto/metadata/metadataSubmitterInfo.js +2 -2
  8. package/dist/resources/proto/metadata.js +5 -5
  9. package/dist/resources/proto/node/empty.js +2 -2
  10. package/dist/resources/proto/node/globalKey.js +4 -4
  11. package/dist/resources/proto/node/identifier.js +2 -2
  12. package/dist/resources/proto/node/node.js +16 -8
  13. package/dist/resources/proto/node/timestamp.js +3 -3
  14. package/dist/resources/proto/node/value.js +28 -14
  15. package/dist/resources/proto/preparedTransaction.js +4 -4
  16. package/dist/src/canton.d.ts +18 -2
  17. package/dist/src/canton.d.ts.map +1 -1
  18. package/dist/src/canton.js +107 -6
  19. package/dist/src/index.d.ts +1 -0
  20. package/dist/src/index.d.ts.map +1 -1
  21. package/dist/src/index.js +2 -1
  22. package/dist/src/lib/constant.d.ts +4 -0
  23. package/dist/src/lib/constant.d.ts.map +1 -1
  24. package/dist/src/lib/constant.js +6 -2
  25. package/dist/src/lib/iface.d.ts +77 -3
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +1 -1
  28. package/dist/src/lib/index.d.ts +7 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +16 -2
  31. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +7 -5
  32. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
  33. package/dist/src/lib/oneStepPreApprovalBuilder.js +17 -3
  34. package/dist/src/lib/transaction/transaction.d.ts +13 -2
  35. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  36. package/dist/src/lib/transaction/transaction.js +178 -9
  37. package/dist/src/lib/transactionBuilder.d.ts +4 -4
  38. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  39. package/dist/src/lib/transactionBuilder.js +1 -5
  40. package/dist/src/lib/transactionBuilderFactory.d.ts +17 -3
  41. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  42. package/dist/src/lib/transactionBuilderFactory.js +63 -6
  43. package/dist/src/lib/transferAcceptanceBuilder.d.ts +59 -0
  44. package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/transferAcceptanceBuilder.js +116 -0
  46. package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
  47. package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
  49. package/dist/src/lib/transferBuilder.d.ts +79 -3
  50. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  51. package/dist/src/lib/transferBuilder.js +153 -1
  52. package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
  53. package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transferRejectionBuilder.js +116 -0
  55. package/dist/src/lib/utils.d.ts +22 -2
  56. package/dist/src/lib/utils.d.ts.map +1 -1
  57. package/dist/src/lib/utils.js +148 -28
  58. package/dist/src/lib/walletInitBuilder.d.ts +5 -1
  59. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
  60. package/dist/src/lib/walletInitBuilder.js +13 -1
  61. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
  62. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
  63. package/dist/src/lib/walletInitialization/walletInitTransaction.js +46 -5
  64. package/dist/test/helper.d.ts +3 -0
  65. package/dist/test/helper.d.ts.map +1 -0
  66. package/dist/test/helper.js +9 -0
  67. package/dist/test/integration/canton.integration.d.ts +2 -0
  68. package/dist/test/integration/canton.integration.d.ts.map +1 -0
  69. package/dist/test/integration/canton.integration.js +157 -0
  70. package/dist/test/resources.d.ts +78 -1
  71. package/dist/test/resources.d.ts.map +1 -1
  72. package/dist/test/resources.js +83 -4
  73. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +8 -8
  74. package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
  75. package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
  76. package/dist/test/unit/builder/transfer/transferBuilder.js +63 -0
  77. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts +2 -0
  78. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts.map +1 -0
  79. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +57 -0
  80. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
  81. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
  82. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
  83. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
  84. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
  85. package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +57 -0
  86. package/dist/test/unit/builder/walletInit/walletInitBuilder.js +9 -10
  87. package/dist/test/unit/utils.js +101 -3
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +24 -7
@@ -0,0 +1,116 @@
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
+ exports.TransferAcceptanceBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const transactionBuilder_1 = require("./transactionBuilder");
9
+ const utils_1 = __importDefault(require("./utils"));
10
+ class TransferAcceptanceBuilder extends transactionBuilder_1.TransactionBuilder {
11
+ constructor(_coinConfig) {
12
+ super(_coinConfig);
13
+ }
14
+ initBuilder(tx) {
15
+ super.initBuilder(tx);
16
+ this.setTransactionType();
17
+ }
18
+ get transactionType() {
19
+ return sdk_core_1.TransactionType.TransferAccept;
20
+ }
21
+ setTransactionType() {
22
+ this.transaction.transactionType = sdk_core_1.TransactionType.TransferAccept;
23
+ }
24
+ setTransaction(transaction) {
25
+ this.transaction.prepareCommand = transaction;
26
+ }
27
+ /** @inheritDoc */
28
+ addSignature(publicKey, signature) {
29
+ if (!this.transaction) {
30
+ throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
31
+ }
32
+ this._signatures.push({ publicKey, signature });
33
+ const pubKeyBase64 = utils_1.default.getBase64FromHex(publicKey.pub);
34
+ this.transaction.signerFingerprint = utils_1.default.getAddressFromPublicKey(pubKeyBase64);
35
+ this.transaction.signatures = signature.toString('base64');
36
+ }
37
+ /**
38
+ * Sets the unique id for the transfer acceptance
39
+ * Also sets the _id of the transaction
40
+ *
41
+ * @param id - A uuid
42
+ * @returns The current builder instance for chaining.
43
+ * @throws Error if id is empty.
44
+ */
45
+ commandId(id) {
46
+ if (!id || !id.trim()) {
47
+ throw new Error('commandId must be a non-empty string');
48
+ }
49
+ this._commandId = id.trim();
50
+ // also set the transaction _id
51
+ this.transaction.id = id.trim();
52
+ return this;
53
+ }
54
+ /**
55
+ * Sets the acceptance contract id the receiver needs to accept
56
+ * @param id - canton acceptance contract id
57
+ * @returns The current builder instance for chaining.
58
+ * @throws Error if id is empty.
59
+ */
60
+ contractId(id) {
61
+ if (!id || !id.trim()) {
62
+ throw new Error('contractId must be a non-empty string');
63
+ }
64
+ this._contractId = id.trim();
65
+ return this;
66
+ }
67
+ /**
68
+ * Sets the receiver of the acceptance
69
+ *
70
+ * @param id - the receiver party id (address)
71
+ * @returns The current builder instance for chaining.
72
+ * @throws Error if id is empty.
73
+ */
74
+ actAs(id) {
75
+ if (!id || !id.trim()) {
76
+ throw new Error('actAsPartyId must be a non-empty string');
77
+ }
78
+ this._actAsPartyId = id.trim();
79
+ return this;
80
+ }
81
+ /**
82
+ * Builds and returns the CantonTransferAcceptRejectRequest object from the builder's internal state.
83
+ *
84
+ * This method performs validation before constructing the object. If required fields are
85
+ * missing or invalid, it throws an error.
86
+ *
87
+ * @returns {CantonTransferAcceptRejectRequest} - A fully constructed and validated request object for transfer acceptance.
88
+ * @throws {Error} If any required field is missing or fails validation.
89
+ */
90
+ toRequestObject() {
91
+ this.validate();
92
+ return {
93
+ commandId: this._commandId,
94
+ contractId: this._contractId,
95
+ verboseHashing: false,
96
+ actAs: [this._actAsPartyId],
97
+ readAs: [],
98
+ };
99
+ }
100
+ /**
101
+ * Validates the internal state of the builder before building the request object.
102
+ *
103
+ * @private
104
+ * @throws {Error} If any required field is missing or invalid.
105
+ */
106
+ validate() {
107
+ if (!this._commandId)
108
+ throw new Error('commandId is missing');
109
+ if (!this._contractId)
110
+ throw new Error('contractId is missing');
111
+ if (!this._actAsPartyId)
112
+ throw new Error('receiver partyId is missing');
113
+ }
114
+ }
115
+ exports.TransferAcceptanceBuilder = TransferAcceptanceBuilder;
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJBY2NlcHRhbmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNmZXJBY2NlcHRhbmNlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBMkY7QUFHM0YsNkRBQTBEO0FBRTFELG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQUkvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxjQUFjLENBQUM7SUFDeEMsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRywwQkFBZSxDQUFDLGNBQWMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXlDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFlBQVksQ0FBQyxTQUFvQixFQUFFLFNBQWlCO1FBQ2xELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxZQUFZLEdBQUcsZUFBSyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLGVBQUssQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLEVBQVU7UUFDbEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDNUIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxFQUFVO1FBQ25CLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxFQUFVO1FBQ2QsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDM0IsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQW5IRCw4REFtSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgUHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlLCBDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3QgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckFjY2VwdGFuY2VCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfY29tbWFuZElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRyYWN0SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYWN0QXNQYXJ0eUlkOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZSgpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQ7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvblR5cGUoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQ7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlcGFyZUNvbW1hbmQgPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICBjb25zdCBwdWJLZXlCYXNlNjQgPSB1dGlscy5nZXRCYXNlNjRGcm9tSGV4KHB1YmxpY0tleS5wdWIpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmVyRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXlCYXNlNjQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlcyA9IHNpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIGlkIGZvciB0aGUgdHJhbnNmZXIgYWNjZXB0YW5jZVxuICAgKiBBbHNvIHNldHMgdGhlIF9pZCBvZiB0aGUgdHJhbnNhY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gQSB1dWlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29tbWFuZElkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29tbWFuZElkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2NvbW1hbmRJZCA9IGlkLnRyaW0oKTtcbiAgICAvLyBhbHNvIHNldCB0aGUgdHJhbnNhY3Rpb24gX2lkXG4gICAgdGhpcy50cmFuc2FjdGlvbi5pZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhY2NlcHRhbmNlIGNvbnRyYWN0IGlkIHRoZSByZWNlaXZlciBuZWVkcyB0byBhY2NlcHRcbiAgICogQHBhcmFtIGlkIC0gY2FudG9uIGFjY2VwdGFuY2UgY29udHJhY3QgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb250cmFjdElkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdElkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2VpdmVyIG9mIHRoZSBhY2NlcHRhbmNlXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIHRoZSByZWNlaXZlciBwYXJ0eSBpZCAoYWRkcmVzcylcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBhY3RBcyhpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FjdEFzUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9hY3RBc1BhcnR5SWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGFuZCByZXR1cm5zIHRoZSBDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3Qgb2JqZWN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcGVyZm9ybXMgdmFsaWRhdGlvbiBiZWZvcmUgY29uc3RydWN0aW5nIHRoZSBvYmplY3QuIElmIHJlcXVpcmVkIGZpZWxkcyBhcmVcbiAgICogbWlzc2luZyBvciBpbnZhbGlkLCBpdCB0aHJvd3MgYW4gZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm5zIHtDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3R9IC0gQSBmdWxseSBjb25zdHJ1Y3RlZCBhbmQgdmFsaWRhdGVkIHJlcXVlc3Qgb2JqZWN0IGZvciB0cmFuc2ZlciBhY2NlcHRhbmNlLlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3Npbmcgb3IgZmFpbHMgdmFsaWRhdGlvbi5cbiAgICovXG4gIHRvUmVxdWVzdE9iamVjdCgpOiBDYW50b25UcmFuc2ZlckFjY2VwdFJlamVjdFJlcXVlc3Qge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kSWQ6IHRoaXMuX2NvbW1hbmRJZCxcbiAgICAgIGNvbnRyYWN0SWQ6IHRoaXMuX2NvbnRyYWN0SWQsXG4gICAgICB2ZXJib3NlSGFzaGluZzogZmFsc2UsXG4gICAgICBhY3RBczogW3RoaXMuX2FjdEFzUGFydHlJZF0sXG4gICAgICByZWFkQXM6IFtdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgYnVpbGRlciBiZWZvcmUgYnVpbGRpbmcgdGhlIHJlcXVlc3Qgb2JqZWN0LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb21tYW5kSWQpIHRocm93IG5ldyBFcnJvcignY29tbWFuZElkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2NvbnRyYWN0SWQpIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9hY3RBc1BhcnR5SWQpIHRocm93IG5ldyBFcnJvcigncmVjZWl2ZXIgcGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { CantonPrepareCommandResponse, TransferAcknowledge } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction/transaction';
6
+ export declare class TransferAcknowledgeBuilder extends TransactionBuilder {
7
+ private _contractId;
8
+ private _senderPartyId;
9
+ private _amount;
10
+ private _updateId;
11
+ private _expiryEpoch;
12
+ constructor(_coinConfig: Readonly<CoinConfig>);
13
+ initBuilder(tx: Transaction): void;
14
+ get transactionType(): TransactionType;
15
+ setTransactionType(): void;
16
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
17
+ /** @inheritDoc */
18
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
19
+ /**
20
+ * Sets the contract id the receiver needs to accept/reject
21
+ * @param id - canton contract id
22
+ * @returns The current builder instance for chaining.
23
+ * @throws Error if id is empty.
24
+ */
25
+ contractId(id: string): this;
26
+ /**
27
+ * Sets the sender party id
28
+ * @param id - sender party id (address)
29
+ * @returns The current builder instance for chaining.
30
+ * @throws Error if id is empty.
31
+ */
32
+ senderPartyId(id: string): this;
33
+ /**
34
+ * Sets the amount to accept or reject
35
+ * @param amount - incoming deposit amount
36
+ * @returns The current builder instance for chaining.
37
+ * @throws Error if amount <= 0
38
+ */
39
+ amount(amount: number): this;
40
+ /**
41
+ * Sets the incoming txn id (updateId of the ledger update)
42
+ * @param id - ledger update id
43
+ * @returns The current builder instance for chaining.
44
+ * @throws Error if id is empty.
45
+ */
46
+ updateId(id: string): this;
47
+ /**
48
+ * Sets the deposit txn expiry
49
+ * @param expiry - expiry epoch
50
+ * @returns The current builder instance for chaining.
51
+ * @throws Error if epoch is invalid
52
+ */
53
+ expiryEpoch(expiry: number): this;
54
+ /**
55
+ * Builds and returns the TransferAcknowledge object from the builder's internal state.
56
+ *
57
+ * This method performs validation before constructing the object. If required fields are
58
+ * missing or invalid, it throws an error.
59
+ *
60
+ * @returns {TransferAcknowledge} - A fully constructed and validated request object for transfer acknowledge.
61
+ * @throws {Error} If any required field is missing or fails validation.
62
+ */
63
+ toRequestObject(): TransferAcknowledge;
64
+ /**
65
+ * Validates the internal state of the builder before building the request object.
66
+ *
67
+ * @private
68
+ * @throws {Error} If any required field is missing or invalid.
69
+ */
70
+ private validate;
71
+ }
72
+ //# sourceMappingURL=transferAcknowledgeBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferAcknowledgeBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferAcknowledgeBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBAAa,0BAA2B,SAAQ,kBAAkB;IAChE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;gBACjB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAI3D;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU1B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;;;;;OAQG;IACH,eAAe,IAAI,mBAAmB;IAYtC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAOjB"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransferAcknowledgeBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
+ const transactionBuilder_1 = require("./transactionBuilder");
6
+ class TransferAcknowledgeBuilder extends transactionBuilder_1.TransactionBuilder {
7
+ constructor(_coinConfig) {
8
+ super(_coinConfig);
9
+ }
10
+ initBuilder(tx) {
11
+ super.initBuilder(tx);
12
+ this.setTransactionType();
13
+ }
14
+ get transactionType() {
15
+ return sdk_core_1.TransactionType.TransferAcknowledge;
16
+ }
17
+ setTransactionType() {
18
+ this.transaction.transactionType = sdk_core_1.TransactionType.TransferAcknowledge;
19
+ }
20
+ setTransaction(transaction) {
21
+ throw new Error('Not implemented!');
22
+ }
23
+ /** @inheritDoc */
24
+ addSignature(publicKey, signature) {
25
+ throw new Error('Not implemented!');
26
+ }
27
+ /**
28
+ * Sets the contract id the receiver needs to accept/reject
29
+ * @param id - canton contract id
30
+ * @returns The current builder instance for chaining.
31
+ * @throws Error if id is empty.
32
+ */
33
+ contractId(id) {
34
+ if (!id || !id.trim()) {
35
+ throw new Error('contractId must be a non-empty string');
36
+ }
37
+ this._contractId = id.trim();
38
+ return this;
39
+ }
40
+ /**
41
+ * Sets the sender party id
42
+ * @param id - sender party id (address)
43
+ * @returns The current builder instance for chaining.
44
+ * @throws Error if id is empty.
45
+ */
46
+ senderPartyId(id) {
47
+ if (!id || !id.trim()) {
48
+ throw new Error('partyId must be a non-empty string');
49
+ }
50
+ this._senderPartyId = id.trim();
51
+ return this;
52
+ }
53
+ /**
54
+ * Sets the amount to accept or reject
55
+ * @param amount - incoming deposit amount
56
+ * @returns The current builder instance for chaining.
57
+ * @throws Error if amount <= 0
58
+ */
59
+ amount(amount) {
60
+ if (isNaN(amount) || amount <= 0) {
61
+ throw new Error('amount must be positive number');
62
+ }
63
+ this._amount = amount;
64
+ return this;
65
+ }
66
+ /**
67
+ * Sets the incoming txn id (updateId of the ledger update)
68
+ * @param id - ledger update id
69
+ * @returns The current builder instance for chaining.
70
+ * @throws Error if id is empty.
71
+ */
72
+ updateId(id) {
73
+ if (!id || !id.trim()) {
74
+ throw new Error('updateId must be a non-empty string');
75
+ }
76
+ this._updateId = id.trim();
77
+ // also set the transaction id
78
+ this.transaction.id = id.trim();
79
+ return this;
80
+ }
81
+ /**
82
+ * Sets the deposit txn expiry
83
+ * @param expiry - expiry epoch
84
+ * @returns The current builder instance for chaining.
85
+ * @throws Error if epoch is invalid
86
+ */
87
+ expiryEpoch(expiry) {
88
+ if (isNaN(expiry)) {
89
+ throw new Error('invalid expiry');
90
+ }
91
+ this._expiryEpoch = expiry;
92
+ return this;
93
+ }
94
+ /**
95
+ * Builds and returns the TransferAcknowledge object from the builder's internal state.
96
+ *
97
+ * This method performs validation before constructing the object. If required fields are
98
+ * missing or invalid, it throws an error.
99
+ *
100
+ * @returns {TransferAcknowledge} - A fully constructed and validated request object for transfer acknowledge.
101
+ * @throws {Error} If any required field is missing or fails validation.
102
+ */
103
+ toRequestObject() {
104
+ this.validate();
105
+ return {
106
+ contractId: this._contractId,
107
+ senderPartyId: this._senderPartyId,
108
+ updateId: this._updateId,
109
+ amount: this._amount,
110
+ expiryEpoch: this._expiryEpoch,
111
+ };
112
+ }
113
+ /**
114
+ * Validates the internal state of the builder before building the request object.
115
+ *
116
+ * @private
117
+ * @throws {Error} If any required field is missing or invalid.
118
+ */
119
+ validate() {
120
+ if (!this._contractId)
121
+ throw new Error('contractId is missing');
122
+ if (!this._updateId)
123
+ throw new Error('updateId is missing');
124
+ if (!this._senderPartyId)
125
+ throw new Error('sender partyId is missing');
126
+ if (!this._amount)
127
+ throw new Error('amount is missing');
128
+ if (!this._expiryEpoch)
129
+ throw new Error('expiry is missing');
130
+ }
131
+ }
132
+ exports.TransferAcknowledgeBuilder = TransferAcknowledgeBuilder;
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zZmVyQWNrbm93bGVkZ2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRTtBQUdsRSw2REFBMEQ7QUFHMUQsTUFBYSwwQkFBMkIsU0FBUSx1Q0FBa0I7SUFNaEUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLDBCQUFlLENBQUMsbUJBQW1CLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRywwQkFBZSxDQUFDLG1CQUFtQixDQUFDO0lBQ3pFLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBeUM7UUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQW9CLEVBQUUsU0FBaUI7UUFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxFQUFVO1FBQ25CLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLEVBQVU7UUFDdEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsTUFBYztRQUNuQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFFBQVEsQ0FBQyxFQUFVO1FBQ2pCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekQsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLDhCQUE4QjtRQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsTUFBYztRQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDNUIsYUFBYSxFQUFFLElBQUksQ0FBQyxjQUFjO1lBQ2xDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN4QixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQy9CLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxRQUFRO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0NBQ0Y7QUExSUQsZ0VBMElDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlLCBUcmFuc2ZlckFja25vd2xlZGdlIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNmZXJBY2tub3dsZWRnZUJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9jb250cmFjdElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NlbmRlclBhcnR5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW1vdW50OiBudW1iZXI7XG4gIHByaXZhdGUgX3VwZGF0ZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4cGlyeUVwb2NoOiBudW1iZXI7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZSgpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2tub3dsZWRnZTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFja25vd2xlZGdlO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCEnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQhJyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29udHJhY3QgaWQgdGhlIHJlY2VpdmVyIG5lZWRzIHRvIGFjY2VwdC9yZWplY3RcbiAgICogQHBhcmFtIGlkIC0gY2FudG9uIGNvbnRyYWN0IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29udHJhY3RJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIgcGFydHkgaWRcbiAgICogQHBhcmFtIGlkIC0gc2VuZGVyIHBhcnR5IGlkIChhZGRyZXNzKVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHNlbmRlclBhcnR5SWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlclBhcnR5SWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYW1vdW50IHRvIGFjY2VwdCBvciByZWplY3RcbiAgICogQHBhcmFtIGFtb3VudCAtIGluY29taW5nIGRlcG9zaXQgYW1vdW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGFtb3VudCA8PSAwXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoaXNOYU4oYW1vdW50KSB8fCBhbW91bnQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgbXVzdCBiZSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGluY29taW5nIHR4biBpZCAodXBkYXRlSWQgb2YgdGhlIGxlZGdlciB1cGRhdGUpXG4gICAqIEBwYXJhbSBpZCAtIGxlZGdlciB1cGRhdGUgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICB1cGRhdGVJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VwZGF0ZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3VwZGF0ZUlkID0gaWQudHJpbSgpO1xuICAgIC8vIGFsc28gc2V0IHRoZSB0cmFuc2FjdGlvbiBpZFxuICAgIHRoaXMudHJhbnNhY3Rpb24uaWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgZGVwb3NpdCB0eG4gZXhwaXJ5XG4gICAqIEBwYXJhbSBleHBpcnkgLSBleHBpcnkgZXBvY2hcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZXBvY2ggaXMgaW52YWxpZFxuICAgKi9cbiAgZXhwaXJ5RXBvY2goZXhwaXJ5OiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoaXNOYU4oZXhwaXJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGV4cGlyeScpO1xuICAgIH1cbiAgICB0aGlzLl9leHBpcnlFcG9jaCA9IGV4cGlyeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW5kIHJldHVybnMgdGhlIFRyYW5zZmVyQWNrbm93bGVkZ2Ugb2JqZWN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcGVyZm9ybXMgdmFsaWRhdGlvbiBiZWZvcmUgY29uc3RydWN0aW5nIHRoZSBvYmplY3QuIElmIHJlcXVpcmVkIGZpZWxkcyBhcmVcbiAgICogbWlzc2luZyBvciBpbnZhbGlkLCBpdCB0aHJvd3MgYW4gZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm5zIHtUcmFuc2ZlckFja25vd2xlZGdlfSAtIEEgZnVsbHkgY29uc3RydWN0ZWQgYW5kIHZhbGlkYXRlZCByZXF1ZXN0IG9iamVjdCBmb3IgdHJhbnNmZXIgYWNrbm93bGVkZ2UuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBmYWlscyB2YWxpZGF0aW9uLlxuICAgKi9cbiAgdG9SZXF1ZXN0T2JqZWN0KCk6IFRyYW5zZmVyQWNrbm93bGVkZ2Uge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb250cmFjdElkOiB0aGlzLl9jb250cmFjdElkLFxuICAgICAgc2VuZGVyUGFydHlJZDogdGhpcy5fc2VuZGVyUGFydHlJZCxcbiAgICAgIHVwZGF0ZUlkOiB0aGlzLl91cGRhdGVJZCxcbiAgICAgIGFtb3VudDogdGhpcy5fYW1vdW50LFxuICAgICAgZXhwaXJ5RXBvY2g6IHRoaXMuX2V4cGlyeUVwb2NoLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgYnVpbGRlciBiZWZvcmUgYnVpbGRpbmcgdGhlIHJlcXVlc3Qgb2JqZWN0LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3Npbmcgb3IgaW52YWxpZC5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb250cmFjdElkKSB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdXBkYXRlSWQpIHRocm93IG5ldyBFcnJvcigndXBkYXRlSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fc2VuZGVyUGFydHlJZCkgdGhyb3cgbmV3IEVycm9yKCdzZW5kZXIgcGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9hbW91bnQpIHRocm93IG5ldyBFcnJvcignYW1vdW50IGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2V4cGlyeUVwb2NoKSB0aHJvdyBuZXcgRXJyb3IoJ2V4cGlyeSBpcyBtaXNzaW5nJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1,10 +1,86 @@
1
- import { TransactionType } from '@bitgo-beta/sdk-core';
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
2
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
3
  import { TransactionBuilder } from './transactionBuilder';
4
- import { CantonPrepareCommandResponse } from './iface';
4
+ import { Transaction } from './transaction/transaction';
5
+ import { CantonPrepareCommandResponse, CantonTransferRequest } from './iface';
5
6
  export declare class TransferBuilder extends TransactionBuilder {
7
+ private _commandId;
8
+ private _senderId;
9
+ private _receiverId;
10
+ private _amount;
11
+ private _sendOneStep;
12
+ private _expiryEpoch;
13
+ private _memoId;
6
14
  constructor(_coinConfig: Readonly<CoinConfig>);
7
- protected get transactionType(): TransactionType;
15
+ initBuilder(tx: Transaction): void;
16
+ get transactionType(): TransactionType;
17
+ setTransactionType(): void;
8
18
  setTransaction(transaction: CantonPrepareCommandResponse): void;
19
+ /** @inheritDoc */
20
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
21
+ /**
22
+ * Sets the unique id for the transfer
23
+ * Also sets the _id of the transaction
24
+ *
25
+ * @param id - A uuid
26
+ * @returns The current builder instance for chaining.
27
+ * @throws Error if id is empty.
28
+ */
29
+ commandId(id: string): this;
30
+ /**
31
+ * Sets the sender party id for the transfer
32
+ * @param id - sender address (party id)
33
+ * @returns The current builder instance for chaining.
34
+ * @throws Error if id is empty.
35
+ */
36
+ senderId(id: string): this;
37
+ /**
38
+ * Sets the receiver party id for the transfer
39
+ * @param id - receiver address (party id)
40
+ * @returns The current builder instance for chaining.
41
+ * @throws Error if id is empty.
42
+ */
43
+ receiverId(id: string): this;
44
+ /**
45
+ * Sets the transfer amount
46
+ * @param amount - transfer amount
47
+ * @returns The current builder instance for chaining.
48
+ * @throws Error if amount not present or negative
49
+ */
50
+ amount(amount: number): this;
51
+ /**
52
+ * Sets the 1-step enablement flag to send via 1-step, works only if recipient
53
+ * enabled the 1-step, defaults to `false`
54
+ * @param flag boolean value
55
+ * @returns The current builder for chaining
56
+ */
57
+ sendOneStep(flag: boolean): this;
58
+ /**
59
+ * Sets the transfer expiry
60
+ * @param epoch - the expiry for 2-step transfer, defaults to 90 days and
61
+ * not applicable if sending via 1-step
62
+ * @returns The current builder for chaining
63
+ * @throws Error if the expiry value is invalid
64
+ */
65
+ expiryEpoch(epoch: number): this;
66
+ /**
67
+ * Sets the optional memoId if present
68
+ * @param id - memoId of the recipient
69
+ * @returns The current builder for chaining
70
+ * @throws Error if the memoId value is invalid
71
+ */
72
+ memoId(id: string): this;
73
+ /**
74
+ * Get the canton transfer request object
75
+ * @returns CantonTransferRequest
76
+ * @throws Error if any required params are missing
77
+ */
78
+ toRequestObject(): CantonTransferRequest;
79
+ /**
80
+ * Method to validate the required fields
81
+ * @throws Error if required fields are not set
82
+ * @private
83
+ */
84
+ private validate;
9
85
  }
10
86
  //# sourceMappingURL=transferBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAEvD,qBAAa,eAAgB,SAAQ,kBAAkB;gBACzC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;CAGhE"}
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAG9E,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAS;gBACZ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAKhC;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQxB;;;;OAIG;IACH,eAAe,IAAI,qBAAqB;IAgBxC;;;;OAIG;IACH,OAAO,CAAC,QAAQ;CAOjB"}
@@ -1,18 +1,170 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.TransferBuilder = void 0;
4
7
  const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
8
  const transactionBuilder_1 = require("./transactionBuilder");
9
+ const utils_1 = __importDefault(require("./utils"));
6
10
  class TransferBuilder extends transactionBuilder_1.TransactionBuilder {
7
11
  constructor(_coinConfig) {
8
12
  super(_coinConfig);
13
+ this._sendOneStep = false;
14
+ }
15
+ initBuilder(tx) {
16
+ super.initBuilder(tx);
17
+ this.setTransactionType();
9
18
  }
10
19
  get transactionType() {
11
20
  return sdk_core_1.TransactionType.Send;
12
21
  }
22
+ setTransactionType() {
23
+ this.transaction.transactionType = sdk_core_1.TransactionType.Send;
24
+ }
13
25
  setTransaction(transaction) {
14
26
  this.transaction.prepareCommand = transaction;
15
27
  }
28
+ /** @inheritDoc */
29
+ addSignature(publicKey, signature) {
30
+ if (!this.transaction) {
31
+ throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
32
+ }
33
+ this._signatures.push({ publicKey, signature });
34
+ const pubKeyBase64 = utils_1.default.getBase64FromHex(publicKey.pub);
35
+ this.transaction.signerFingerprint = utils_1.default.getAddressFromPublicKey(pubKeyBase64);
36
+ this.transaction.signatures = signature.toString('base64');
37
+ }
38
+ /**
39
+ * Sets the unique id for the transfer
40
+ * Also sets the _id of the transaction
41
+ *
42
+ * @param id - A uuid
43
+ * @returns The current builder instance for chaining.
44
+ * @throws Error if id is empty.
45
+ */
46
+ commandId(id) {
47
+ if (!id || !id.trim()) {
48
+ throw new Error('commandId must be a non-empty string');
49
+ }
50
+ this._commandId = id.trim();
51
+ // also set the transaction _id
52
+ this.transaction.id = id.trim();
53
+ return this;
54
+ }
55
+ /**
56
+ * Sets the sender party id for the transfer
57
+ * @param id - sender address (party id)
58
+ * @returns The current builder instance for chaining.
59
+ * @throws Error if id is empty.
60
+ */
61
+ senderId(id) {
62
+ if (!id || !id.trim()) {
63
+ throw new Error('senderId must be a non-empty string');
64
+ }
65
+ this._senderId = id.trim();
66
+ return this;
67
+ }
68
+ /**
69
+ * Sets the receiver party id for the transfer
70
+ * @param id - receiver address (party id)
71
+ * @returns The current builder instance for chaining.
72
+ * @throws Error if id is empty.
73
+ */
74
+ receiverId(id) {
75
+ if (!id || !id.trim()) {
76
+ throw new Error('receiverId must be a non-empty string');
77
+ }
78
+ this._receiverId = id.trim();
79
+ return this;
80
+ }
81
+ /**
82
+ * Sets the transfer amount
83
+ * @param amount - transfer amount
84
+ * @returns The current builder instance for chaining.
85
+ * @throws Error if amount not present or negative
86
+ */
87
+ amount(amount) {
88
+ if (!amount || amount < 0) {
89
+ throw new Error('amount must be a positive number');
90
+ }
91
+ this._amount = amount;
92
+ return this;
93
+ }
94
+ /**
95
+ * Sets the 1-step enablement flag to send via 1-step, works only if recipient
96
+ * enabled the 1-step, defaults to `false`
97
+ * @param flag boolean value
98
+ * @returns The current builder for chaining
99
+ */
100
+ sendOneStep(flag) {
101
+ this._sendOneStep = flag;
102
+ return this;
103
+ }
104
+ /**
105
+ * Sets the transfer expiry
106
+ * @param epoch - the expiry for 2-step transfer, defaults to 90 days and
107
+ * not applicable if sending via 1-step
108
+ * @returns The current builder for chaining
109
+ * @throws Error if the expiry value is invalid
110
+ */
111
+ expiryEpoch(epoch) {
112
+ if (!epoch || epoch < 0) {
113
+ throw new Error('epoch must be a positive number');
114
+ }
115
+ this._expiryEpoch = epoch;
116
+ return this;
117
+ }
118
+ /**
119
+ * Sets the optional memoId if present
120
+ * @param id - memoId of the recipient
121
+ * @returns The current builder for chaining
122
+ * @throws Error if the memoId value is invalid
123
+ */
124
+ memoId(id) {
125
+ if (!id || !id.trim()) {
126
+ throw new Error('memoId must be a non-empty string');
127
+ }
128
+ this._memoId = id.trim();
129
+ return this;
130
+ }
131
+ /**
132
+ * Get the canton transfer request object
133
+ * @returns CantonTransferRequest
134
+ * @throws Error if any required params are missing
135
+ */
136
+ toRequestObject() {
137
+ this.validate();
138
+ const data = {
139
+ commandId: this._commandId,
140
+ senderPartyId: this._senderId,
141
+ receiverPartyId: this._receiverId,
142
+ amount: this._amount,
143
+ expiryEpoch: this._expiryEpoch,
144
+ sendViaOneStep: this._sendOneStep,
145
+ };
146
+ if (this._memoId) {
147
+ data.memoId = this._memoId;
148
+ }
149
+ return data;
150
+ }
151
+ /**
152
+ * Method to validate the required fields
153
+ * @throws Error if required fields are not set
154
+ * @private
155
+ */
156
+ validate() {
157
+ if (!this._commandId)
158
+ throw new Error('commandId is missing');
159
+ if (!this._senderId)
160
+ throw new Error('senderId is missing');
161
+ if (!this._receiverId)
162
+ throw new Error('receiverId is missing');
163
+ if (!this._amount)
164
+ throw new Error('amount is missing');
165
+ if (!this._expiryEpoch)
166
+ throw new Error('expiryEpoch is missing');
167
+ }
16
168
  }
17
169
  exports.TransferBuilder = TransferBuilder;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQXVEO0FBRXZELDZEQUEwRDtBQUcxRCxNQUFhLGVBQWdCLFNBQVEsdUNBQWtCO0lBQ3JELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQXlDO1FBQ3RELElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFaRCwwQ0FZQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zZmVyQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==
170
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTJGO0FBRTNGLDZEQUEwRDtBQUcxRCxvREFBNEI7QUFFNUIsTUFBYSxlQUFnQixTQUFRLHVDQUFrQjtJQVFyRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUpiLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSzdCLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTywwQkFBZSxDQUFDLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsSUFBSSxDQUFDO0lBQzFELENBQUM7SUFFRCxjQUFjLENBQUMsV0FBeUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO0lBQ2hELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQW9CLEVBQUUsU0FBaUI7UUFDbEQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksa0NBQXVCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNoRCxNQUFNLFlBQVksR0FBRyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEdBQUcsZUFBSyxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxTQUFTLENBQUMsRUFBVTtRQUNsQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QiwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsUUFBUSxDQUFDLEVBQVU7UUFDakIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsRUFBVTtRQUNuQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsSUFBYTtRQUN2QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxXQUFXLENBQUMsS0FBYTtRQUN2QixJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEVBQVU7UUFDZixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksR0FBMEI7WUFDbEMsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzFCLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUztZQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3BCLFdBQVcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUM5QixjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7U0FDbEMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Q0FDRjtBQTdLRCwwQ0E2S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgUHVibGljS2V5LCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSwgQ2FudG9uVHJhbnNmZXJSZXF1ZXN0IH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9jb21tYW5kSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVySWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVjZWl2ZXJJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc2VuZE9uZVN0ZXAgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfZXhwaXJ5RXBvY2g6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWVtb0lkOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZSgpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBlbXB0eSEnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgY29uc3QgcHViS2V5QmFzZTY0ID0gdXRpbHMuZ2V0QmFzZTY0RnJvbUhleChwdWJsaWNLZXkucHViKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25lckZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5QmFzZTY0KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZXMgPSBzaWduYXR1cmUudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHRyYW5zZmVyXG4gICAqIEFsc28gc2V0cyB0aGUgX2lkIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBBIHV1aWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb21tYW5kSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29tbWFuZElkID0gaWQudHJpbSgpO1xuICAgIC8vIGFsc28gc2V0IHRoZSB0cmFuc2FjdGlvbiBfaWRcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBwYXJ0eSBpZCBmb3IgdGhlIHRyYW5zZmVyXG4gICAqIEBwYXJhbSBpZCAtIHNlbmRlciBhZGRyZXNzIChwYXJ0eSBpZClcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBzZW5kZXJJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlcklkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NlbmRlcklkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2VpdmVyIHBhcnR5IGlkIGZvciB0aGUgdHJhbnNmZXJcbiAgICogQHBhcmFtIGlkIC0gcmVjZWl2ZXIgYWRkcmVzcyAocGFydHkgaWQpXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgcmVjZWl2ZXJJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fcmVjZWl2ZXJJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2ZlciBhbW91bnRcbiAgICogQHBhcmFtIGFtb3VudCAtIHRyYW5zZmVyIGFtb3VudFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBhbW91bnQgbm90IHByZXNlbnQgb3IgbmVnYXRpdmVcbiAgICovXG4gIGFtb3VudChhbW91bnQ6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghYW1vdW50IHx8IGFtb3VudCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIDEtc3RlcCBlbmFibGVtZW50IGZsYWcgdG8gc2VuZCB2aWEgMS1zdGVwLCB3b3JrcyBvbmx5IGlmIHJlY2lwaWVudFxuICAgKiBlbmFibGVkIHRoZSAxLXN0ZXAsIGRlZmF1bHRzIHRvIGBmYWxzZWBcbiAgICogQHBhcmFtIGZsYWcgYm9vbGVhbiB2YWx1ZVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGZvciBjaGFpbmluZ1xuICAgKi9cbiAgc2VuZE9uZVN0ZXAoZmxhZzogYm9vbGVhbik6IHRoaXMge1xuICAgIHRoaXMuX3NlbmRPbmVTdGVwID0gZmxhZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2ZlciBleHBpcnlcbiAgICogQHBhcmFtIGVwb2NoIC0gdGhlIGV4cGlyeSBmb3IgMi1zdGVwIHRyYW5zZmVyLCBkZWZhdWx0cyB0byA5MCBkYXlzIGFuZFxuICAgKiBub3QgYXBwbGljYWJsZSBpZiBzZW5kaW5nIHZpYSAxLXN0ZXBcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgZXhwaXJ5IHZhbHVlIGlzIGludmFsaWRcbiAgICovXG4gIGV4cGlyeUVwb2NoKGVwb2NoOiBudW1iZXIpOiB0aGlzIHtcbiAgICBpZiAoIWVwb2NoIHx8IGVwb2NoIDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdlcG9jaCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gICAgfVxuICAgIHRoaXMuX2V4cGlyeUVwb2NoID0gZXBvY2g7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3B0aW9uYWwgbWVtb0lkIGlmIHByZXNlbnRcbiAgICogQHBhcmFtIGlkIC0gbWVtb0lkIG9mIHRoZSByZWNpcGllbnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBmb3IgY2hhaW5pbmdcbiAgICogQHRocm93cyBFcnJvciBpZiB0aGUgbWVtb0lkIHZhbHVlIGlzIGludmFsaWRcbiAgICovXG4gIG1lbW9JZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21lbW9JZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9tZW1vSWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjYW50b24gdHJhbnNmZXIgcmVxdWVzdCBvYmplY3RcbiAgICogQHJldHVybnMgQ2FudG9uVHJhbnNmZXJSZXF1ZXN0XG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgYW55IHJlcXVpcmVkIHBhcmFtcyBhcmUgbWlzc2luZ1xuICAgKi9cbiAgdG9SZXF1ZXN0T2JqZWN0KCk6IENhbnRvblRyYW5zZmVyUmVxdWVzdCB7XG4gICAgdGhpcy52YWxpZGF0ZSgpO1xuICAgIGNvbnN0IGRhdGE6IENhbnRvblRyYW5zZmVyUmVxdWVzdCA9IHtcbiAgICAgIGNvbW1hbmRJZDogdGhpcy5fY29tbWFuZElkLFxuICAgICAgc2VuZGVyUGFydHlJZDogdGhpcy5fc2VuZGVySWQsXG4gICAgICByZWNlaXZlclBhcnR5SWQ6IHRoaXMuX3JlY2VpdmVySWQsXG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIGV4cGlyeUVwb2NoOiB0aGlzLl9leHBpcnlFcG9jaCxcbiAgICAgIHNlbmRWaWFPbmVTdGVwOiB0aGlzLl9zZW5kT25lU3RlcCxcbiAgICB9O1xuICAgIGlmICh0aGlzLl9tZW1vSWQpIHtcbiAgICAgIGRhdGEubWVtb0lkID0gdGhpcy5fbWVtb0lkO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZXRob2QgdG8gdmFsaWRhdGUgdGhlIHJlcXVpcmVkIGZpZWxkc1xuICAgKiBAdGhyb3dzIEVycm9yIGlmIHJlcXVpcmVkIGZpZWxkcyBhcmUgbm90IHNldFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRJZCkgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fc2VuZGVySWQpIHRocm93IG5ldyBFcnJvcignc2VuZGVySWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fcmVjZWl2ZXJJZCkgdGhyb3cgbmV3IEVycm9yKCdyZWNlaXZlcklkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2Ftb3VudCkgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fZXhwaXJ5RXBvY2gpIHRocm93IG5ldyBFcnJvcignZXhwaXJ5RXBvY2ggaXMgbWlzc2luZycpO1xuICB9XG59XG4iXX0=