@bitgo-beta/sdk-coin-canton 1.0.1-beta.62 → 1.0.1-beta.621

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 (178) hide show
  1. package/dist/src/canton.d.ts +22 -1
  2. package/dist/src/canton.d.ts.map +1 -1
  3. package/dist/src/canton.js +267 -10
  4. package/dist/src/cantonToken.d.ts +19 -0
  5. package/dist/src/cantonToken.d.ts.map +1 -0
  6. package/dist/src/cantonToken.js +52 -0
  7. package/dist/src/index.d.ts +1 -0
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +2 -1
  10. package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
  11. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/allocationAllocateBuilder.js +250 -0
  13. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
  14. package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
  16. package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
  17. package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/allocationRejectBuilder.js +107 -0
  19. package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
  20. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/allocationRequestBuilder.js +248 -0
  22. package/dist/src/lib/cantonCommandBuilder.d.ts +72 -0
  23. package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/cantonCommandBuilder.js +173 -0
  25. package/dist/src/lib/clearSigning.d.ts +58 -0
  26. package/dist/src/lib/clearSigning.d.ts.map +1 -0
  27. package/dist/src/lib/clearSigning.js +66 -0
  28. package/dist/src/lib/constant.d.ts +2 -0
  29. package/dist/src/lib/constant.d.ts.map +1 -1
  30. package/dist/src/lib/constant.js +4 -2
  31. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
  32. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
  34. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
  35. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
  37. package/dist/src/lib/iface.d.ts +143 -2
  38. package/dist/src/lib/iface.d.ts.map +1 -1
  39. package/dist/src/lib/iface.js +3 -1
  40. package/dist/src/lib/index.d.ts +13 -0
  41. package/dist/src/lib/index.d.ts.map +1 -1
  42. package/dist/src/lib/index.js +29 -2
  43. package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
  44. package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
  45. package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
  46. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
  47. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
  48. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
  49. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
  50. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
  52. package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
  53. package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
  54. package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
  55. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
  56. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
  57. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
  58. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
  59. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
  61. package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
  62. package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
  63. package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
  64. package/dist/src/lib/messages/index.d.ts +5 -0
  65. package/dist/src/lib/messages/index.d.ts.map +1 -0
  66. package/dist/src/lib/messages/index.js +21 -0
  67. package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
  68. package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  69. package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
  70. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +11 -1
  71. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
  72. package/dist/src/lib/oneStepPreApprovalBuilder.js +29 -1
  73. package/dist/src/lib/resourcesInterface.d.ts +1 -1
  74. package/dist/src/lib/resourcesInterface.d.ts.map +1 -1
  75. package/dist/src/lib/resourcesInterface.js +1 -1
  76. package/dist/src/lib/transaction/transaction.d.ts +21 -2
  77. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  78. package/dist/src/lib/transaction/transaction.js +330 -9
  79. package/dist/src/lib/transactionBuilder.d.ts +3 -3
  80. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  81. package/dist/src/lib/transactionBuilder.js +1 -5
  82. package/dist/src/lib/transactionBuilderFactory.d.ts +22 -1
  83. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  84. package/dist/src/lib/transactionBuilderFactory.js +78 -2
  85. package/dist/src/lib/transferAcceptanceBuilder.d.ts +7 -5
  86. package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -1
  87. package/dist/src/lib/transferAcceptanceBuilder.js +20 -6
  88. package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
  89. package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
  91. package/dist/src/lib/transferBuilder.d.ts +87 -3
  92. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  93. package/dist/src/lib/transferBuilder.js +169 -1
  94. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
  95. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
  97. package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
  98. package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
  99. package/dist/src/lib/transferRejectionBuilder.js +116 -0
  100. package/dist/src/lib/utils.d.ts +51 -3
  101. package/dist/src/lib/utils.d.ts.map +1 -1
  102. package/dist/src/lib/utils.js +751 -44
  103. package/dist/src/lib/walletInitBuilder.d.ts +2 -1
  104. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
  105. package/dist/src/lib/walletInitBuilder.js +4 -1
  106. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
  107. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
  108. package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
  109. package/dist/src/register.d.ts.map +1 -1
  110. package/dist/src/register.js +5 -1
  111. package/dist/test/helper.d.ts +3 -0
  112. package/dist/test/helper.d.ts.map +1 -0
  113. package/dist/test/helper.js +9 -0
  114. package/dist/test/integration/canton.integration.d.ts +2 -0
  115. package/dist/test/integration/canton.integration.d.ts.map +1 -0
  116. package/dist/test/integration/canton.integration.js +157 -0
  117. package/dist/test/integration/canton.token.integration.d.ts +2 -0
  118. package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
  119. package/dist/test/integration/canton.token.integration.js +51 -0
  120. package/dist/test/resources.d.ts +233 -2
  121. package/dist/test/resources.d.ts.map +1 -1
  122. package/dist/test/resources.js +238 -7
  123. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
  124. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
  125. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +360 -0
  126. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
  127. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
  128. package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
  129. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
  130. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
  131. package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
  132. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
  133. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
  134. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +407 -0
  135. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts +2 -0
  136. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts.map +1 -0
  137. package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +340 -0
  138. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
  139. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  140. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +104 -0
  141. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
  142. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
  143. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
  144. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +25 -7
  145. package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
  146. package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
  147. package/dist/test/unit/builder/transfer/transferBuilder.js +84 -0
  148. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +65 -15
  149. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
  150. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
  151. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
  152. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
  153. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  154. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
  155. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
  156. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
  157. package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +96 -0
  158. package/dist/test/unit/canton.d.ts +2 -0
  159. package/dist/test/unit/canton.d.ts.map +1 -0
  160. package/dist/test/unit/canton.js +705 -0
  161. package/dist/test/unit/index.d.ts +5 -0
  162. package/dist/test/unit/index.d.ts.map +1 -1
  163. package/dist/test/unit/index.js +6 -1
  164. package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
  165. package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
  166. package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
  167. package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
  168. package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
  169. package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
  170. package/dist/test/unit/messages/clearSigning.d.ts +2 -0
  171. package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
  172. package/dist/test/unit/messages/clearSigning.js +72 -0
  173. package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
  174. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  175. package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
  176. package/dist/test/unit/utils.js +376 -5
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +8 -8
@@ -0,0 +1,126 @@
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction/transaction';
5
+ import { CantonAllocationAllocateRequest, CantonPrepareCommandResponse } from './iface';
6
+ export declare class AllocationAllocateBuilder extends TransactionBuilder {
7
+ private _commandId;
8
+ private _amount;
9
+ private _token;
10
+ private _operatorId;
11
+ private _contractId;
12
+ private _tradeId;
13
+ private _transferLegId;
14
+ private _allocateBefore;
15
+ private _settleBefore;
16
+ private _receiverPartyId;
17
+ private _senderPartyId;
18
+ private _comment?;
19
+ constructor(_coinConfig: Readonly<CoinConfig>);
20
+ initBuilder(tx: Transaction): void;
21
+ get transactionType(): TransactionType;
22
+ setTransactionType(): void;
23
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
24
+ /** @inheritDoc */
25
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
26
+ /**
27
+ * Sets the unique command id for the allocation
28
+ * Also sets the _id of the transaction
29
+ *
30
+ * @param id - A uuid
31
+ * @returns The current builder instance for chaining.
32
+ * @throws Error if id is empty.
33
+ */
34
+ commandId(id: string): this;
35
+ /**
36
+ * Sets the allocation amount
37
+ * @param amount - allocation amount
38
+ * @returns The current builder instance for chaining.
39
+ * @throws Error if amount is not positive
40
+ */
41
+ amount(amount: number): this;
42
+ /**
43
+ * Sets the token for the allocation
44
+ * @param token - token identifier
45
+ * @returns The current builder instance for chaining.
46
+ * @throws Error if token is empty.
47
+ */
48
+ token(token: string): this;
49
+ /**
50
+ * Sets the operator party id
51
+ * @param id - operator party id
52
+ * @returns The current builder instance for chaining.
53
+ * @throws Error if id is empty.
54
+ */
55
+ operatorId(id: string): this;
56
+ /**
57
+ * Sets the contract id
58
+ * @param id - canton contract id
59
+ * @returns The current builder instance for chaining.
60
+ * @throws Error if id is empty.
61
+ */
62
+ contractId(id: string | null): this;
63
+ /**
64
+ * Sets the trade id
65
+ * @param id - trade id
66
+ * @returns The current builder instance for chaining.
67
+ * @throws Error if id is empty.
68
+ */
69
+ tradeId(id: string): this;
70
+ /**
71
+ * Sets the transfer leg id (e.g. `${tradeId}-security-leg` or `${tradeId}-cash-leg`)
72
+ * @param id - transfer leg id
73
+ * @returns The current builder instance for chaining.
74
+ * @throws Error if id is empty.
75
+ */
76
+ transferLegId(id: string): this;
77
+ /**
78
+ * Sets the allocate-before deadline (ISO 8601)
79
+ * @param deadline - allocation deadline
80
+ * @returns The current builder instance for chaining.
81
+ * @throws Error if deadline is empty.
82
+ */
83
+ allocateBefore(deadline: string): this;
84
+ /**
85
+ * Sets the settle-before deadline (ISO 8601)
86
+ * @param deadline - settlement deadline
87
+ * @returns The current builder instance for chaining.
88
+ * @throws Error if deadline is empty.
89
+ */
90
+ settleBefore(deadline: string): this;
91
+ /**
92
+ * Sets the sender party id
93
+ * @param id - sender party id
94
+ * @returns The current builder instance for chaining.
95
+ * @throws Error if id is empty.
96
+ */
97
+ senderPartyId(id: string): this;
98
+ /**
99
+ * Sets the receiver party id
100
+ * @param id - receiver party id
101
+ * @returns The current builder instance for chaining.
102
+ * @throws Error if id is empty.
103
+ */
104
+ receiverPartyId(id: string): this;
105
+ /**
106
+ * Sets the optional comment
107
+ * @param comment - free-form comment
108
+ * @returns The current builder instance for chaining.
109
+ */
110
+ comment(comment: string): this;
111
+ /**
112
+ * Builds and returns the CantonAllocationAllocateRequest object from the builder's internal state.
113
+ *
114
+ * @returns {CantonAllocationAllocateRequest} - A fully constructed and validated request object.
115
+ * @throws {Error} If any required field is missing or fails validation.
116
+ */
117
+ toRequestObject(): CantonAllocationAllocateRequest;
118
+ /**
119
+ * Validates the internal state of the builder before building the request object.
120
+ *
121
+ * @private
122
+ * @throws {Error} If any required field is missing.
123
+ */
124
+ private validate;
125
+ }
126
+ //# sourceMappingURL=allocationAllocateBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationAllocateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationAllocateBuilder.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,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAGxF,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,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;IAS3B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQnC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,eAAe,IAAI,+BAA+B;IAqBlD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAajB"}
@@ -0,0 +1,250 @@
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.AllocationAllocateBuilder = 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 AllocationAllocateBuilder 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.AllocationAllocate;
20
+ }
21
+ setTransactionType() {
22
+ this.transaction.transactionType = sdk_core_1.TransactionType.AllocationAllocate;
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 command id for the allocation
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
+ this.transaction.id = id.trim();
51
+ return this;
52
+ }
53
+ /**
54
+ * Sets the allocation amount
55
+ * @param amount - allocation amount
56
+ * @returns The current builder instance for chaining.
57
+ * @throws Error if amount is not positive
58
+ */
59
+ amount(amount) {
60
+ if (!amount || amount < 0) {
61
+ throw new Error('amount must be a positive number');
62
+ }
63
+ this._amount = amount;
64
+ return this;
65
+ }
66
+ /**
67
+ * Sets the token for the allocation
68
+ * @param token - token identifier
69
+ * @returns The current builder instance for chaining.
70
+ * @throws Error if token is empty.
71
+ */
72
+ token(token) {
73
+ if (!token || !token.trim()) {
74
+ throw new Error('token must be a non-empty string');
75
+ }
76
+ this._token = token.trim();
77
+ return this;
78
+ }
79
+ /**
80
+ * Sets the operator party id
81
+ * @param id - operator party id
82
+ * @returns The current builder instance for chaining.
83
+ * @throws Error if id is empty.
84
+ */
85
+ operatorId(id) {
86
+ if (!id || !id.trim()) {
87
+ throw new Error('operatorId must be a non-empty string');
88
+ }
89
+ this._operatorId = id.trim();
90
+ return this;
91
+ }
92
+ /**
93
+ * Sets the contract id
94
+ * @param id - canton contract id
95
+ * @returns The current builder instance for chaining.
96
+ * @throws Error if id is empty.
97
+ */
98
+ contractId(id) {
99
+ if (id !== null && (!id || !id.trim())) {
100
+ throw new Error('contractId must be a non-empty string');
101
+ }
102
+ this._contractId = id === null ? null : id.trim();
103
+ return this;
104
+ }
105
+ /**
106
+ * Sets the trade id
107
+ * @param id - trade id
108
+ * @returns The current builder instance for chaining.
109
+ * @throws Error if id is empty.
110
+ */
111
+ tradeId(id) {
112
+ if (!id || !id.trim()) {
113
+ throw new Error('tradeId must be a non-empty string');
114
+ }
115
+ this._tradeId = id.trim();
116
+ return this;
117
+ }
118
+ /**
119
+ * Sets the transfer leg id (e.g. `${tradeId}-security-leg` or `${tradeId}-cash-leg`)
120
+ * @param id - transfer leg id
121
+ * @returns The current builder instance for chaining.
122
+ * @throws Error if id is empty.
123
+ */
124
+ transferLegId(id) {
125
+ if (!id || !id.trim()) {
126
+ throw new Error('transferLegId must be a non-empty string');
127
+ }
128
+ this._transferLegId = id.trim();
129
+ return this;
130
+ }
131
+ /**
132
+ * Sets the allocate-before deadline (ISO 8601)
133
+ * @param deadline - allocation deadline
134
+ * @returns The current builder instance for chaining.
135
+ * @throws Error if deadline is empty.
136
+ */
137
+ allocateBefore(deadline) {
138
+ if (!deadline || !deadline.trim()) {
139
+ throw new Error('allocateBefore must be a non-empty string');
140
+ }
141
+ this._allocateBefore = deadline.trim();
142
+ return this;
143
+ }
144
+ /**
145
+ * Sets the settle-before deadline (ISO 8601)
146
+ * @param deadline - settlement deadline
147
+ * @returns The current builder instance for chaining.
148
+ * @throws Error if deadline is empty.
149
+ */
150
+ settleBefore(deadline) {
151
+ if (!deadline || !deadline.trim()) {
152
+ throw new Error('settleBefore must be a non-empty string');
153
+ }
154
+ this._settleBefore = deadline.trim();
155
+ return this;
156
+ }
157
+ /**
158
+ * Sets the sender party id
159
+ * @param id - sender party id
160
+ * @returns The current builder instance for chaining.
161
+ * @throws Error if id is empty.
162
+ */
163
+ senderPartyId(id) {
164
+ if (!id || !id.trim()) {
165
+ throw new Error('senderPartyId must be a non-empty string');
166
+ }
167
+ this._senderPartyId = id.trim();
168
+ return this;
169
+ }
170
+ /**
171
+ * Sets the receiver party id
172
+ * @param id - receiver party id
173
+ * @returns The current builder instance for chaining.
174
+ * @throws Error if id is empty.
175
+ */
176
+ receiverPartyId(id) {
177
+ if (!id || !id.trim()) {
178
+ throw new Error('receiverPartyId must be a non-empty string');
179
+ }
180
+ this._receiverPartyId = id.trim();
181
+ return this;
182
+ }
183
+ /**
184
+ * Sets the optional comment
185
+ * @param comment - free-form comment
186
+ * @returns The current builder instance for chaining.
187
+ */
188
+ comment(comment) {
189
+ this._comment = comment;
190
+ return this;
191
+ }
192
+ /**
193
+ * Builds and returns the CantonAllocationAllocateRequest object from the builder's internal state.
194
+ *
195
+ * @returns {CantonAllocationAllocateRequest} - A fully constructed and validated request object.
196
+ * @throws {Error} If any required field is missing or fails validation.
197
+ */
198
+ toRequestObject() {
199
+ this.validate();
200
+ const result = {
201
+ commandId: this._commandId,
202
+ amount: this._amount,
203
+ token: this._token,
204
+ operatorId: this._operatorId,
205
+ ...(this._contractId !== null && this._contractId !== undefined && { contractId: this._contractId }),
206
+ tradeId: this._tradeId,
207
+ transferLegId: this._transferLegId,
208
+ allocateBefore: this._allocateBefore,
209
+ settleBefore: this._settleBefore,
210
+ receiverPartyId: this._receiverPartyId,
211
+ senderPartyId: this._senderPartyId,
212
+ };
213
+ if (this._comment !== undefined) {
214
+ result.comment = this._comment;
215
+ }
216
+ return result;
217
+ }
218
+ /**
219
+ * Validates the internal state of the builder before building the request object.
220
+ *
221
+ * @private
222
+ * @throws {Error} If any required field is missing.
223
+ */
224
+ validate() {
225
+ if (!this._commandId)
226
+ throw new Error('commandId is missing');
227
+ if (!this._amount)
228
+ throw new Error('amount is missing');
229
+ if (!this._token)
230
+ throw new Error('token is missing');
231
+ if (!this._operatorId)
232
+ throw new Error('operatorId is missing');
233
+ if (this._contractId === undefined)
234
+ throw new Error('contractId is missing');
235
+ if (!this._tradeId)
236
+ throw new Error('tradeId is missing');
237
+ if (!this._transferLegId)
238
+ throw new Error('transferLegId is missing');
239
+ if (!this._allocateBefore)
240
+ throw new Error('allocateBefore is missing');
241
+ if (!this._settleBefore)
242
+ throw new Error('settleBefore is missing');
243
+ if (!this._receiverPartyId)
244
+ throw new Error('receiverPartyId is missing');
245
+ if (!this._senderPartyId)
246
+ throw new Error('senderPartyId is missing');
247
+ }
248
+ }
249
+ exports.AllocationAllocateBuilder = AllocationAllocateBuilder;
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBMkY7QUFFM0YsNkRBQTBEO0FBRzFELG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQWMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxFQUFVO1FBQ2xCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxNQUFjO1FBQ25CLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsS0FBYTtRQUNqQixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFVBQVUsQ0FBQyxFQUFVO1FBQ25CLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLEVBQWlCO1FBQzFCLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsRUFBVTtRQUNoQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWEsQ0FBQyxFQUFVO1FBQ3RCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsY0FBYyxDQUFDLFFBQWdCO1FBQzdCLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsWUFBWSxDQUFDLFFBQWdCO1FBQzNCLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsYUFBYSxDQUFDLEVBQVU7UUFDdEIsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxlQUFlLENBQUMsRUFBVTtRQUN4QixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsT0FBZTtRQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsTUFBTSxNQUFNLEdBQW9DO1lBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM1QixHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BHLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QixhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbEMsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3BDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN0QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDbkMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDakMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFuUUQsOERBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QsIENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9jb21tYW5kSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW1vdW50OiBudW1iZXI7XG4gIHByaXZhdGUgX3Rva2VuOiBzdHJpbmc7XG4gIHByaXZhdGUgX29wZXJhdG9ySWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udHJhY3RJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdHJhZGVJZDogc3RyaW5nO1xuICBwcml2YXRlIF90cmFuc2ZlckxlZ0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FsbG9jYXRlQmVmb3JlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NldHRsZUJlZm9yZTogc3RyaW5nO1xuICBwcml2YXRlIF9yZWNlaXZlclBhcnR5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyUGFydHlJZDogc3RyaW5nO1xuICBwcml2YXRlIF9jb21tZW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZSgpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5wcmVwYXJlQ29tbWFuZCA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb24gaXMgZW1wdHkhJyk7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH0pO1xuICAgIGNvbnN0IHB1YktleUJhc2U2NCA9IHV0aWxzLmdldEJhc2U2NEZyb21IZXgocHVibGljS2V5LnB1Yik7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduZXJGaW5nZXJwcmludCA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YktleUJhc2U2NCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmVzID0gc2lnbmF0dXJlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB1bmlxdWUgY29tbWFuZCBpZCBmb3IgdGhlIGFsbG9jYXRpb25cbiAgICogQWxzbyBzZXRzIHRoZSBfaWQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIEEgdXVpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGNvbW1hbmRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb21tYW5kSWQgPSBpZC50cmltKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5pZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbGxvY2F0aW9uIGFtb3VudFxuICAgKiBAcGFyYW0gYW1vdW50IC0gYWxsb2NhdGlvbiBhbW91bnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgYW1vdW50IGlzIG5vdCBwb3NpdGl2ZVxuICAgKi9cbiAgYW1vdW50KGFtb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKCFhbW91bnQgfHwgYW1vdW50IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gZm9yIHRoZSBhbGxvY2F0aW9uXG4gICAqIEBwYXJhbSB0b2tlbiAtIHRva2VuIGlkZW50aWZpZXJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdG9rZW4gaXMgZW1wdHkuXG4gICAqL1xuICB0b2tlbih0b2tlbjogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCF0b2tlbiB8fCAhdG9rZW4udHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuID0gdG9rZW4udHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wZXJhdG9yIHBhcnR5IGlkXG4gICAqIEBwYXJhbSBpZCAtIG9wZXJhdG9yIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgb3BlcmF0b3JJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdG9ySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fb3BlcmF0b3JJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb250cmFjdCBpZFxuICAgKiBAcGFyYW0gaWQgLSBjYW50b24gY29udHJhY3QgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb250cmFjdElkKGlkOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgaWYgKGlkICE9PSBudWxsICYmICghaWQgfHwgIWlkLnRyaW0oKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdElkID0gaWQgPT09IG51bGwgPyBudWxsIDogaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYWRlIGlkXG4gICAqIEBwYXJhbSBpZCAtIHRyYWRlIGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgdHJhZGVJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYWRlSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhZGVJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2ZlciBsZWcgaWQgKGUuZy4gYCR7dHJhZGVJZH0tc2VjdXJpdHktbGVnYCBvciBgJHt0cmFkZUlkfS1jYXNoLWxlZ2ApXG4gICAqIEBwYXJhbSBpZCAtIHRyYW5zZmVyIGxlZyBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHRyYW5zZmVyTGVnSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2ZlckxlZ0lkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3RyYW5zZmVyTGVnSWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWxsb2NhdGUtYmVmb3JlIGRlYWRsaW5lIChJU08gODYwMSlcbiAgICogQHBhcmFtIGRlYWRsaW5lIC0gYWxsb2NhdGlvbiBkZWFkbGluZVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBkZWFkbGluZSBpcyBlbXB0eS5cbiAgICovXG4gIGFsbG9jYXRlQmVmb3JlKGRlYWRsaW5lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWRlYWRsaW5lIHx8ICFkZWFkbGluZS50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYWxsb2NhdGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fYWxsb2NhdGVCZWZvcmUgPSBkZWFkbGluZS50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2V0dGxlLWJlZm9yZSBkZWFkbGluZSAoSVNPIDg2MDEpXG4gICAqIEBwYXJhbSBkZWFkbGluZSAtIHNldHRsZW1lbnQgZGVhZGxpbmVcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZGVhZGxpbmUgaXMgZW1wdHkuXG4gICAqL1xuICBzZXR0bGVCZWZvcmUoZGVhZGxpbmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghZGVhZGxpbmUgfHwgIWRlYWRsaW5lLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXR0bGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGxlQmVmb3JlID0gZGVhZGxpbmUudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBwYXJ0eSBpZFxuICAgKiBAcGFyYW0gaWQgLSBzZW5kZXIgcGFydHkgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBzZW5kZXJQYXJ0eUlkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2VuZGVyUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zZW5kZXJQYXJ0eUlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2VpdmVyIHBhcnR5IGlkXG4gICAqIEBwYXJhbSBpZCAtIHJlY2VpdmVyIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgcmVjZWl2ZXJQYXJ0eUlkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVjZWl2ZXJQYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3JlY2VpdmVyUGFydHlJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcHRpb25hbCBjb21tZW50XG4gICAqIEBwYXJhbSBjb21tZW50IC0gZnJlZS1mb3JtIGNvbW1lbnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBjb21tZW50KGNvbW1lbnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2NvbW1lbnQgPSBjb21tZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbmQgcmV0dXJucyB0aGUgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCBvYmplY3QgZnJvbSB0aGUgYnVpbGRlcidzIGludGVybmFsIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdH0gLSBBIGZ1bGx5IGNvbnN0cnVjdGVkIGFuZCB2YWxpZGF0ZWQgcmVxdWVzdCBvYmplY3QuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBmYWlscyB2YWxpZGF0aW9uLlxuICAgKi9cbiAgdG9SZXF1ZXN0T2JqZWN0KCk6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3Qge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICBjb25zdCByZXN1bHQ6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kSWQ6IHRoaXMuX2NvbW1hbmRJZCxcbiAgICAgIGFtb3VudDogdGhpcy5fYW1vdW50LFxuICAgICAgdG9rZW46IHRoaXMuX3Rva2VuLFxuICAgICAgb3BlcmF0b3JJZDogdGhpcy5fb3BlcmF0b3JJZCxcbiAgICAgIC4uLih0aGlzLl9jb250cmFjdElkICE9PSBudWxsICYmIHRoaXMuX2NvbnRyYWN0SWQgIT09IHVuZGVmaW5lZCAmJiB7IGNvbnRyYWN0SWQ6IHRoaXMuX2NvbnRyYWN0SWQgfSksXG4gICAgICB0cmFkZUlkOiB0aGlzLl90cmFkZUlkLFxuICAgICAgdHJhbnNmZXJMZWdJZDogdGhpcy5fdHJhbnNmZXJMZWdJZCxcbiAgICAgIGFsbG9jYXRlQmVmb3JlOiB0aGlzLl9hbGxvY2F0ZUJlZm9yZSxcbiAgICAgIHNldHRsZUJlZm9yZTogdGhpcy5fc2V0dGxlQmVmb3JlLFxuICAgICAgcmVjZWl2ZXJQYXJ0eUlkOiB0aGlzLl9yZWNlaXZlclBhcnR5SWQsXG4gICAgICBzZW5kZXJQYXJ0eUlkOiB0aGlzLl9zZW5kZXJQYXJ0eUlkLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2NvbW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0LmNvbW1lbnQgPSB0aGlzLl9jb21tZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGJ1aWxkZXIgYmVmb3JlIGJ1aWxkaW5nIHRoZSByZXF1ZXN0IG9iamVjdC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRJZCkgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fYW1vdW50KSB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90b2tlbikgdGhyb3cgbmV3IEVycm9yKCd0b2tlbiBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9vcGVyYXRvcklkKSB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdG9ySWQgaXMgbWlzc2luZycpO1xuICAgIGlmICh0aGlzLl9jb250cmFjdElkID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90cmFkZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3RyYWRlSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdHJhbnNmZXJMZWdJZCkgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2ZlckxlZ0lkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2FsbG9jYXRlQmVmb3JlKSB0aHJvdyBuZXcgRXJyb3IoJ2FsbG9jYXRlQmVmb3JlIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3NldHRsZUJlZm9yZSkgdGhyb3cgbmV3IEVycm9yKCdzZXR0bGVCZWZvcmUgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZycpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { CantonAllocationAllocateWithdrawnRequest, CantonPrepareCommandResponse } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction/transaction';
6
+ export declare class AllocationAllocateWithdrawnBuilder extends TransactionBuilder {
7
+ private _commandId;
8
+ private _contractId;
9
+ private _actAsPartyId;
10
+ private _tokenName;
11
+ constructor(_coinConfig: Readonly<CoinConfig>);
12
+ initBuilder(tx: Transaction): void;
13
+ get transactionType(): TransactionType;
14
+ setTransactionType(): void;
15
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
16
+ /** @inheritDoc */
17
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
18
+ /**
19
+ * Sets the unique id for the allocation allocate withdrawn
20
+ * Also sets the _id of the transaction
21
+ *
22
+ * @param id - A uuid
23
+ * @returns The current builder instance for chaining.
24
+ * @throws Error if id is empty.
25
+ */
26
+ commandId(id: string): this;
27
+ /**
28
+ * Sets the contract id of the allocation to withdraw
29
+ * @param id - canton allocation contract id
30
+ * @returns The current builder instance for chaining.
31
+ * @throws Error if id is empty.
32
+ */
33
+ contractId(id: string): this;
34
+ /**
35
+ * The party withdrawing the allocation
36
+ *
37
+ * @param id - the sender party id
38
+ * @returns The current builder instance for chaining.
39
+ * @throws Error if id is empty.
40
+ */
41
+ actAs(id: string): this;
42
+ /**
43
+ * The token name for the allocation withdrawal
44
+ * @param name - the bitgo name of the asset
45
+ * @returns The current builder instance for chaining.
46
+ * @throws Error if name is empty.
47
+ */
48
+ tokenName(name: string): this;
49
+ /**
50
+ * Builds and returns the CantonAllocationAllocateWithdrawnRequest object from the builder's internal state.
51
+ *
52
+ * This method performs validation before constructing the object. If required fields are
53
+ * missing or invalid, it throws an error.
54
+ *
55
+ * @returns {CantonAllocationAllocateWithdrawnRequest} - A fully constructed and validated request object for allocation allocate withdrawal.
56
+ * @throws {Error} If any required field is missing or fails validation.
57
+ */
58
+ toRequestObject(): CantonAllocationAllocateWithdrawnRequest;
59
+ /**
60
+ * Validates the internal state of the builder before building the request object.
61
+ *
62
+ * @private
63
+ * @throws {Error} If any required field is missing or invalid.
64
+ */
65
+ private validate;
66
+ }
67
+ //# sourceMappingURL=allocationAllocateWithdrawnBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationAllocateWithdrawnBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationAllocateWithdrawnBuilder.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,wCAAwC,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGxD,qBAAa,kCAAmC,SAAQ,kBAAkB;IACxE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;gBAEf,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,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQvB;;;;;OAKG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ7B;;;;;;;;OAQG;IACH,eAAe,IAAI,wCAAwC;IAa3D;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAKjB"}
@@ -0,0 +1,130 @@
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.AllocationAllocateWithdrawnBuilder = 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 AllocationAllocateWithdrawnBuilder 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.AllocationAllocateWithdrawn;
20
+ }
21
+ setTransactionType() {
22
+ this.transaction.transactionType = sdk_core_1.TransactionType.AllocationAllocateWithdrawn;
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 allocation allocate withdrawn
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 contract id of the allocation to withdraw
56
+ * @param id - canton allocation 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
+ * The party withdrawing the allocation
69
+ *
70
+ * @param id - the sender party id
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
+ * The token name for the allocation withdrawal
83
+ * @param name - the bitgo name of the asset
84
+ * @returns The current builder instance for chaining.
85
+ * @throws Error if name is empty.
86
+ */
87
+ tokenName(name) {
88
+ if (!name || !name.trim()) {
89
+ throw new Error('tokenName must be a non-empty string');
90
+ }
91
+ this._tokenName = name.trim();
92
+ return this;
93
+ }
94
+ /**
95
+ * Builds and returns the CantonAllocationAllocateWithdrawnRequest 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 {CantonAllocationAllocateWithdrawnRequest} - A fully constructed and validated request object for allocation allocate withdrawal.
101
+ * @throws {Error} If any required field is missing or fails validation.
102
+ */
103
+ toRequestObject() {
104
+ this.validate();
105
+ return {
106
+ commandId: this._commandId,
107
+ contractId: this._contractId,
108
+ verboseHashing: false,
109
+ actAs: [this._actAsPartyId],
110
+ readAs: [],
111
+ tokenName: this._tokenName,
112
+ };
113
+ }
114
+ /**
115
+ * Validates the internal state of the builder before building the request object.
116
+ *
117
+ * @private
118
+ * @throws {Error} If any required field is missing or invalid.
119
+ */
120
+ validate() {
121
+ if (!this._commandId)
122
+ throw new Error('commandId is missing');
123
+ if (!this._contractId)
124
+ throw new Error('contractId is missing');
125
+ if (!this._actAsPartyId)
126
+ throw new Error('actAs partyId is missing');
127
+ }
128
+ }
129
+ exports.AllocationAllocateWithdrawnBuilder = AllocationAllocateWithdrawnBuilder;
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBMkY7QUFHM0YsNkRBQTBEO0FBRTFELG9EQUE0QjtBQUU1QixNQUFhLGtDQUFtQyxTQUFRLHVDQUFrQjtJQU14RSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQywyQkFBMkIsQ0FBQztJQUNyRCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsMkJBQTJCLENBQUM7SUFDakYsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsR0FBRyxlQUFLLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxFQUFVO1FBQ2xCLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVCLCtCQUErQjtRQUMvQixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxVQUFVLENBQUMsRUFBVTtRQUNuQixJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsRUFBVTtRQUNkLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7UUFDN0QsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBUyxDQUFDLElBQVk7UUFDcEIsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLE9BQU87WUFDTCxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDMUIsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDM0IsTUFBTSxFQUFFLEVBQUU7WUFDVixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDM0IsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLFFBQVE7UUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN2RSxDQUFDO0NBQ0Y7QUFwSUQsZ0ZBb0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduUmVxdWVzdCwgQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3bkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9jb21tYW5kSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udHJhY3RJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hY3RBc1BhcnR5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdG9rZW5OYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuICAgIHRoaXMuc2V0VHJhbnNhY3Rpb25UeXBlKCk7XG4gIH1cblxuICBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGVXaXRoZHJhd247XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvblR5cGUoKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnByZXBhcmVDb21tYW5kID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBlbXB0eSEnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgY29uc3QgcHViS2V5QmFzZTY0ID0gdXRpbHMuZ2V0QmFzZTY0RnJvbUhleChwdWJsaWNLZXkucHViKTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25lckZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHViS2V5QmFzZTY0KTtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnNpZ25hdHVyZXMgPSBzaWduYXR1cmUudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIGFsbG9jYXRpb24gYWxsb2NhdGUgd2l0aGRyYXduXG4gICAqIEFsc28gc2V0cyB0aGUgX2lkIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBBIHV1aWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb21tYW5kSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29tbWFuZElkID0gaWQudHJpbSgpO1xuICAgIC8vIGFsc28gc2V0IHRoZSB0cmFuc2FjdGlvbiBfaWRcbiAgICB0aGlzLnRyYW5zYWN0aW9uLmlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGNvbnRyYWN0IGlkIG9mIHRoZSBhbGxvY2F0aW9uIHRvIHdpdGhkcmF3XG4gICAqIEBwYXJhbSBpZCAtIGNhbnRvbiBhbGxvY2F0aW9uIGNvbnRyYWN0IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29udHJhY3RJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcGFydHkgd2l0aGRyYXdpbmcgdGhlIGFsbG9jYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGlkIC0gdGhlIHNlbmRlciBwYXJ0eSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGFjdEFzKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYWN0QXNQYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2FjdEFzUGFydHlJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG9rZW4gbmFtZSBmb3IgdGhlIGFsbG9jYXRpb24gd2l0aGRyYXdhbFxuICAgKiBAcGFyYW0gbmFtZSAtIHRoZSBiaXRnbyBuYW1lIG9mIHRoZSBhc3NldFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBuYW1lIGlzIGVtcHR5LlxuICAgKi9cbiAgdG9rZW5OYW1lKG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghbmFtZSB8fCAhbmFtZS50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndG9rZW5OYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuTmFtZSA9IG5hbWUudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbmQgcmV0dXJucyB0aGUgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlV2l0aGRyYXduUmVxdWVzdCBvYmplY3QgZnJvbSB0aGUgYnVpbGRlcidzIGludGVybmFsIHN0YXRlLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBwZXJmb3JtcyB2YWxpZGF0aW9uIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIG9iamVjdC4gSWYgcmVxdWlyZWQgZmllbGRzIGFyZVxuICAgKiBtaXNzaW5nIG9yIGludmFsaWQsIGl0IHRocm93cyBhbiBlcnJvci5cbiAgICpcbiAgICogQHJldHVybnMge0NhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3blJlcXVlc3R9IC0gQSBmdWxseSBjb25zdHJ1Y3RlZCBhbmQgdmFsaWRhdGVkIHJlcXVlc3Qgb2JqZWN0IGZvciBhbGxvY2F0aW9uIGFsbG9jYXRlIHdpdGhkcmF3YWwuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBmYWlscyB2YWxpZGF0aW9uLlxuICAgKi9cbiAgdG9SZXF1ZXN0T2JqZWN0KCk6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVdpdGhkcmF3blJlcXVlc3Qge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjb21tYW5kSWQ6IHRoaXMuX2NvbW1hbmRJZCxcbiAgICAgIGNvbnRyYWN0SWQ6IHRoaXMuX2NvbnRyYWN0SWQsXG4gICAgICB2ZXJib3NlSGFzaGluZzogZmFsc2UsXG4gICAgICBhY3RBczogW3RoaXMuX2FjdEFzUGFydHlJZF0sXG4gICAgICByZWFkQXM6IFtdLFxuICAgICAgdG9rZW5OYW1lOiB0aGlzLl90b2tlbk5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBidWlsZGVyIGJlZm9yZSBidWlsZGluZyB0aGUgcmVxdWVzdCBvYmplY3QuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBpbnZhbGlkLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRJZCkgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fY29udHJhY3RJZCkgdGhyb3cgbmV3IEVycm9yKCdjb250cmFjdElkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2FjdEFzUGFydHlJZCkgdGhyb3cgbmV3IEVycm9yKCdhY3RBcyBwYXJ0eUlkIGlzIG1pc3NpbmcnKTtcbiAgfVxufVxuIl19