@bitgo/sdk-coin-canton 1.20.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
  2. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
  3. package/dist/src/lib/allocationAllocateBuilder.js +250 -0
  4. package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
  5. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/allocationRequestBuilder.js +246 -0
  7. package/dist/src/lib/iface.d.ts +37 -0
  8. package/dist/src/lib/iface.d.ts.map +1 -1
  9. package/dist/src/lib/iface.js +1 -1
  10. package/dist/src/lib/index.d.ts +2 -0
  11. package/dist/src/lib/index.d.ts.map +1 -1
  12. package/dist/src/lib/index.js +6 -2
  13. package/dist/src/lib/transaction/transaction.d.ts +3 -1
  14. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  15. package/dist/src/lib/transaction/transaction.js +30 -2
  16. package/dist/src/lib/transactionBuilderFactory.d.ts +4 -0
  17. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  18. package/dist/src/lib/transactionBuilderFactory.js +15 -1
  19. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
  20. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
  21. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +309 -0
  22. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
  23. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
  24. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +386 -0
  25. package/dist/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +7 -7
@@ -0,0 +1,126 @@
1
+ import { PublicKey, TransactionType } from '@bitgo/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/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): 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,iBAAiB,CAAC;AACtF,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,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,CAAS;IAC5B,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;IAQ5B;;;;;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/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 || !id.trim()) {
100
+ throw new Error('contractId must be a non-empty string');
101
+ }
102
+ this._contractId = 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
+ 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)
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw4Q0FBc0Y7QUFFdEYsNkRBQTBEO0FBRzFELG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQWMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxD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Q0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFuUUQsOERBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCwgQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2NvbW1hbmRJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbW91bnQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdG9rZW46IHN0cmluZztcbiAgcHJpdmF0ZSBfb3BlcmF0b3JJZDogc3RyaW5nO1xuICBwcml2YXRlIF9jb250cmFjdElkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3RyYWRlSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfdHJhbnNmZXJMZWdJZDogc3RyaW5nO1xuICBwcml2YXRlIF9hbGxvY2F0ZUJlZm9yZTogc3RyaW5nO1xuICBwcml2YXRlIF9zZXR0bGVCZWZvcmU6IHN0cmluZztcbiAgcHJpdmF0ZSBfcmVjZWl2ZXJQYXJ0eUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NlbmRlclBhcnR5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29tbWVudD86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5zZXRUcmFuc2FjdGlvblR5cGUoKTtcbiAgfVxuXG4gIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5BbGxvY2F0aW9uQWxsb2NhdGU7XG4gIH1cblxuICBzZXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ2FudG9uUHJlcGFyZUNvbW1hbmRSZXNwb25zZSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24ucHJlcGFyZUNvbW1hbmQgPSB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhZGRTaWduYXR1cmUocHVibGljS2V5OiBQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ3RyYW5zYWN0aW9uIGlzIGVtcHR5IScpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goeyBwdWJsaWNLZXksIHNpZ25hdHVyZSB9KTtcbiAgICBjb25zdCBwdWJLZXlCYXNlNjQgPSB1dGlscy5nZXRCYXNlNjRGcm9tSGV4KHB1YmxpY0tleS5wdWIpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmVyRmluZ2VycHJpbnQgPSB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJLZXlCYXNlNjQpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2lnbmF0dXJlcyA9IHNpZ25hdHVyZS50b1N0cmluZygnYmFzZTY0Jyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdW5pcXVlIGNvbW1hbmQgaWQgZm9yIHRoZSBhbGxvY2F0aW9uXG4gICAqIEFsc28gc2V0cyB0aGUgX2lkIG9mIHRoZSB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBBIHV1aWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb21tYW5kSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29tbWFuZElkID0gaWQudHJpbSgpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uaWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWxsb2NhdGlvbiBhbW91bnRcbiAgICogQHBhcmFtIGFtb3VudCAtIGFsbG9jYXRpb24gYW1vdW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGFtb3VudCBpcyBub3QgcG9zaXRpdmVcbiAgICovXG4gIGFtb3VudChhbW91bnQ6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghYW1vdW50IHx8IGFtb3VudCA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYW1vdW50IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgICB9XG4gICAgdGhpcy5fYW1vdW50ID0gYW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRva2VuIGZvciB0aGUgYWxsb2NhdGlvblxuICAgKiBAcGFyYW0gdG9rZW4gLSB0b2tlbiBpZGVudGlmaWVyXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRva2VuIGlzIGVtcHR5LlxuICAgKi9cbiAgdG9rZW4odG9rZW46IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghdG9rZW4gfHwgIXRva2VuLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0b2tlbiBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl90b2tlbiA9IHRva2VuLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcGVyYXRvciBwYXJ0eSBpZFxuICAgKiBAcGFyYW0gaWQgLSBvcGVyYXRvciBwYXJ0eSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIG9wZXJhdG9ySWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRvcklkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX29wZXJhdG9ySWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgY29udHJhY3QgaWRcbiAgICogQHBhcmFtIGlkIC0gY2FudG9uIGNvbnRyYWN0IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgY29udHJhY3RJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRyYWN0SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fY29udHJhY3RJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFkZSBpZFxuICAgKiBAcGFyYW0gaWQgLSB0cmFkZSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHRyYWRlSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFkZUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3RyYWRlSWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdHJhbnNmZXIgbGVnIGlkIChlLmcuIGAke3RyYWRlSWR9LXNlY3VyaXR5LWxlZ2Agb3IgYCR7dHJhZGVJZH0tY2FzaC1sZWdgKVxuICAgKiBAcGFyYW0gaWQgLSB0cmFuc2ZlciBsZWcgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICB0cmFuc2ZlckxlZ0lkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndHJhbnNmZXJMZWdJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl90cmFuc2ZlckxlZ0lkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIGFsbG9jYXRlLWJlZm9yZSBkZWFkbGluZSAoSVNPIDg2MDEpXG4gICAqIEBwYXJhbSBkZWFkbGluZSAtIGFsbG9jYXRpb24gZGVhZGxpbmVcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZGVhZGxpbmUgaXMgZW1wdHkuXG4gICAqL1xuICBhbGxvY2F0ZUJlZm9yZShkZWFkbGluZTogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFkZWFkbGluZSB8fCAhZGVhZGxpbmUudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FsbG9jYXRlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX2FsbG9jYXRlQmVmb3JlID0gZGVhZGxpbmUudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNldHRsZS1iZWZvcmUgZGVhZGxpbmUgKElTTyA4NjAxKVxuICAgKiBAcGFyYW0gZGVhZGxpbmUgLSBzZXR0bGVtZW50IGRlYWRsaW5lXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGRlYWRsaW5lIGlzIGVtcHR5LlxuICAgKi9cbiAgc2V0dGxlQmVmb3JlKGRlYWRsaW5lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWRlYWRsaW5lIHx8ICFkZWFkbGluZS50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2V0dGxlQmVmb3JlIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3NldHRsZUJlZm9yZSA9IGRlYWRsaW5lLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBzZW5kZXIgcGFydHkgaWRcbiAgICogQHBhcmFtIGlkIC0gc2VuZGVyIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgc2VuZGVyUGFydHlJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlclBhcnR5SWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fc2VuZGVyUGFydHlJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSByZWNlaXZlciBwYXJ0eSBpZFxuICAgKiBAcGFyYW0gaWQgLSByZWNlaXZlciBwYXJ0eSBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHJlY2VpdmVyUGFydHlJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVyUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9yZWNlaXZlclBhcnR5SWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgb3B0aW9uYWwgY29tbWVudFxuICAgKiBAcGFyYW0gY29tbWVudCAtIGZyZWUtZm9ybSBjb21tZW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgY29tbWVudChjb21tZW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLl9jb21tZW50ID0gY29tbWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYW5kIHJldHVybnMgdGhlIENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3Qgb2JqZWN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogQHJldHVybnMge0NhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3R9IC0gQSBmdWxseSBjb25zdHJ1Y3RlZCBhbmQgdmFsaWRhdGVkIHJlcXVlc3Qgb2JqZWN0LlxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW55IHJlcXVpcmVkIGZpZWxkIGlzIG1pc3Npbmcgb3IgZmFpbHMgdmFsaWRhdGlvbi5cbiAgICovXG4gIHRvUmVxdWVzdE9iamVjdCgpOiBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0IHtcbiAgICB0aGlzLnZhbGlkYXRlKCk7XG4gICAgY29uc3QgcmVzdWx0OiBDYW50b25BbGxvY2F0aW9uQWxsb2NhdGVSZXF1ZXN0ID0ge1xuICAgICAgY29tbWFuZElkOiB0aGlzLl9jb21tYW5kSWQsXG4gICAgICBhbW91bnQ6IHRoaXMuX2Ftb3VudCxcbiAgICAgIHRva2VuOiB0aGlzLl90b2tlbixcbiAgICAgIG9wZXJhdG9ySWQ6IHRoaXMuX29wZXJhdG9ySWQsXG4gICAgICBjb250cmFjdElkOiB0aGlzLl9jb250cmFjdElkLFxuICAgICAgdHJhZGVJZDogdGhpcy5fdHJhZGVJZCxcbiAgICAgIHRyYW5zZmVyTGVnSWQ6IHRoaXMuX3RyYW5zZmVyTGVnSWQsXG4gICAgICBhbGxvY2F0ZUJlZm9yZTogdGhpcy5fYWxsb2NhdGVCZWZvcmUsXG4gICAgICBzZXR0bGVCZWZvcmU6IHRoaXMuX3NldHRsZUJlZm9yZSxcbiAgICAgIHJlY2VpdmVyUGFydHlJZDogdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkLFxuICAgICAgc2VuZGVyUGFydHlJZDogdGhpcy5fc2VuZGVyUGFydHlJZCxcbiAgICB9O1xuICAgIGlmICh0aGlzLl9jb21tZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdC5jb21tZW50ID0gdGhpcy5fY29tbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBidWlsZGVyIGJlZm9yZSBidWlsZGluZyB0aGUgcmVxdWVzdCBvYmplY3QuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZy5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9jb21tYW5kSWQpIHRocm93IG5ldyBFcnJvcignY29tbWFuZElkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2Ftb3VudCkgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdG9rZW4pIHRocm93IG5ldyBFcnJvcigndG9rZW4gaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fb3BlcmF0b3JJZCkgdGhyb3cgbmV3IEVycm9yKCdvcGVyYXRvcklkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2NvbnRyYWN0SWQpIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90cmFkZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3RyYWRlSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdHJhbnNmZXJMZWdJZCkgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2ZlckxlZ0lkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2FsbG9jYXRlQmVmb3JlKSB0aHJvdyBuZXcgRXJyb3IoJ2FsbG9jYXRlQmVmb3JlIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3NldHRsZUJlZm9yZSkgdGhyb3cgbmV3IEVycm9yKCdzZXR0bGVCZWZvcmUgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZycpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,116 @@
1
+ import { PublicKey, TransactionType } from '@bitgo/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
+ import { AllocationRequest, CantonPrepareCommandResponse } from './iface';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { Transaction } from './transaction/transaction';
6
+ /**
7
+ * Builder for an AllocationRequest txRequest — an internal, non-signable transaction
8
+ * that surfaces the DvP trade leg details to the allocating party. The party reviews
9
+ * this request and then submits a separate AllocationAllocate to lock their asset.
10
+ *
11
+ * setTransaction and addSignature are intentionally not implemented because this
12
+ * transaction type is never signed or broadcast directly.
13
+ */
14
+ export declare class AllocationRequestBuilder extends TransactionBuilder {
15
+ private _updateId;
16
+ private _operatorId;
17
+ private _contractId;
18
+ private _tradeId;
19
+ private _transferLegId;
20
+ private _senderPartyId;
21
+ private _receiverPartyId;
22
+ private _amount;
23
+ private _token;
24
+ private _receiveToken;
25
+ private _receiveAmount;
26
+ private _allocateBefore;
27
+ private _settleBefore;
28
+ private _comment?;
29
+ constructor(_coinConfig: Readonly<CoinConfig>);
30
+ initBuilder(tx: Transaction): void;
31
+ get transactionType(): TransactionType;
32
+ setTransactionType(): void;
33
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
34
+ /** @inheritDoc */
35
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
36
+ /**
37
+ * Sets the ledger update id of the AllocationRequest event.
38
+ * Also sets the transaction id.
39
+ * @param id - ledger update id (txHash)
40
+ */
41
+ updateId(id: string): this;
42
+ /**
43
+ * Sets the operator party id (settlement executor).
44
+ * @param id - operator party id
45
+ */
46
+ operatorId(id: string): this;
47
+ /**
48
+ * Sets the settlement batch contract id.
49
+ * @param id - settlement batch contract id
50
+ */
51
+ contractId(id: string): this;
52
+ /**
53
+ * Sets the trade identifier.
54
+ * @param id - trade id
55
+ */
56
+ tradeId(id: string): this;
57
+ /**
58
+ * Sets the specific leg id being allocated (e.g. `${tradeId}-security-leg`).
59
+ * @param id - transfer leg id
60
+ */
61
+ transferLegId(id: string): this;
62
+ /**
63
+ * Sets the party performing this allocation (sender of this leg).
64
+ * @param id - sender party id
65
+ */
66
+ senderPartyId(id: string): this;
67
+ /**
68
+ * Sets the counterparty receiving the allocated asset.
69
+ * @param id - receiver party id
70
+ */
71
+ receiverPartyId(id: string): this;
72
+ /**
73
+ * Sets the quantity to allocate.
74
+ * @param amount - allocation amount
75
+ */
76
+ amount(amount: number): this;
77
+ /**
78
+ * Sets the BitGo token identifier for the asset being allocated.
79
+ * @param token - token identifier
80
+ */
81
+ token(token: string): this;
82
+ /**
83
+ * Sets the BitGo token identifier the allocating party will receive on settlement.
84
+ * @param token - receive token identifier
85
+ */
86
+ receiveToken(token: string): this;
87
+ /**
88
+ * Sets the quantity the allocating party will receive on settlement.
89
+ * @param amount - receive amount
90
+ */
91
+ receiveAmount(amount: number): this;
92
+ /**
93
+ * Sets the ISO 8601 deadline by which allocation must be submitted.
94
+ * @param deadline - allocate-before timestamp
95
+ */
96
+ allocateBefore(deadline: string): this;
97
+ /**
98
+ * Sets the ISO 8601 deadline by which settlement must complete.
99
+ * @param deadline - settle-before timestamp
100
+ */
101
+ settleBefore(deadline: string): this;
102
+ /**
103
+ * Sets an optional free-form comment.
104
+ * @param comment - comment string
105
+ */
106
+ comment(comment: string): this;
107
+ /**
108
+ * Builds and returns the AllocationRequest object from the builder's internal state.
109
+ *
110
+ * @returns {AllocationRequest} - A fully constructed and validated request object.
111
+ * @throws {Error} If any required field is missing or fails validation.
112
+ */
113
+ toRequestObject(): AllocationRequest;
114
+ private validate;
115
+ }
116
+ //# sourceMappingURL=allocationRequestBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationRequestBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationRequestBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;;;;;GAOG;AACH,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,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;IAI3D;;;;OAIG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS1B;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;OAGG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB;;;OAGG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;OAGG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQjC;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQjC;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQnC;;;OAGG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQtC;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC;;;OAGG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,eAAe,IAAI,iBAAiB;IAuBpC,OAAO,CAAC,QAAQ;CAejB"}