@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.
- package/dist/src/canton.d.ts +22 -1
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +267 -10
- package/dist/src/cantonToken.d.ts +19 -0
- package/dist/src/cantonToken.d.ts.map +1 -0
- package/dist/src/cantonToken.js +52 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
- package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationAllocateBuilder.js +250 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts +67 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationAllocateWithdrawnBuilder.js +130 -0
- package/dist/src/lib/allocationRejectBuilder.d.ts +51 -0
- package/dist/src/lib/allocationRejectBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationRejectBuilder.js +107 -0
- package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
- package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
- package/dist/src/lib/allocationRequestBuilder.js +248 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts +72 -0
- package/dist/src/lib/cantonCommandBuilder.d.ts.map +1 -0
- package/dist/src/lib/cantonCommandBuilder.js +173 -0
- package/dist/src/lib/clearSigning.d.ts +58 -0
- package/dist/src/lib/clearSigning.d.ts.map +1 -0
- package/dist/src/lib/clearSigning.js +66 -0
- package/dist/src/lib/constant.d.ts +2 -0
- package/dist/src/lib/constant.d.ts.map +1 -1
- package/dist/src/lib/constant.js +4 -2
- package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
- package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
- package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
- package/dist/src/lib/iface.d.ts +143 -2
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +3 -1
- package/dist/src/lib/index.d.ts +13 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +29 -2
- package/dist/src/lib/messages/cantonBaseMessage.d.ts +16 -0
- package/dist/src/lib/messages/cantonBaseMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonBaseMessage.js +28 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessage.js +23 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts +17 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/cantonSignTopologyMessageBuilder.js +25 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTopology/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTopology/index.js +19 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts +13 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessage.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts +14 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/cantonSignTransactionMessageBuilder.js +22 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts +3 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.d.ts.map +1 -0
- package/dist/src/lib/messages/cantonSignTransaction/index.js +19 -0
- package/dist/src/lib/messages/index.d.ts +5 -0
- package/dist/src/lib/messages/index.d.ts.map +1 -0
- package/dist/src/lib/messages/index.js +21 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts +7 -0
- package/dist/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/messages/messageBuilderFactory.js +23 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +11 -1
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
- package/dist/src/lib/oneStepPreApprovalBuilder.js +29 -1
- package/dist/src/lib/resourcesInterface.d.ts +1 -1
- package/dist/src/lib/resourcesInterface.d.ts.map +1 -1
- package/dist/src/lib/resourcesInterface.js +1 -1
- package/dist/src/lib/transaction/transaction.d.ts +21 -2
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction/transaction.js +330 -9
- package/dist/src/lib/transactionBuilder.d.ts +3 -3
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +1 -5
- package/dist/src/lib/transactionBuilderFactory.d.ts +22 -1
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +78 -2
- package/dist/src/lib/transferAcceptanceBuilder.d.ts +7 -5
- package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferAcceptanceBuilder.js +20 -6
- package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
- package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
- package/dist/src/lib/transferBuilder.d.ts +87 -3
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +169 -1
- package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
- package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
- package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
- package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferRejectionBuilder.js +116 -0
- package/dist/src/lib/utils.d.ts +51 -3
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +751 -44
- package/dist/src/lib/walletInitBuilder.d.ts +2 -1
- package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
- package/dist/src/lib/walletInitBuilder.js +4 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
- package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
- package/dist/src/register.d.ts.map +1 -1
- package/dist/src/register.js +5 -1
- package/dist/test/helper.d.ts +3 -0
- package/dist/test/helper.d.ts.map +1 -0
- package/dist/test/helper.js +9 -0
- package/dist/test/integration/canton.integration.d.ts +2 -0
- package/dist/test/integration/canton.integration.d.ts.map +1 -0
- package/dist/test/integration/canton.integration.js +157 -0
- package/dist/test/integration/canton.token.integration.d.ts +2 -0
- package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
- package/dist/test/integration/canton.token.integration.js +51 -0
- package/dist/test/resources.d.ts +233 -2
- package/dist/test/resources.d.ts.map +1 -1
- package/dist/test/resources.js +238 -7
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +360 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationAllocateWithdrawn/allocationAllocateWithdrawnBuilder.js +133 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationReject/allocationRejectBuilder.js +121 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +407 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cantonCommand/cantonCommandBuilder.js +340 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +104 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +25 -7
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transfer/transferBuilder.js +84 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +65 -15
- package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +96 -0
- package/dist/test/unit/canton.d.ts +2 -0
- package/dist/test/unit/canton.d.ts.map +1 -0
- package/dist/test/unit/canton.js +705 -0
- package/dist/test/unit/index.d.ts +5 -0
- package/dist/test/unit/index.d.ts.map +1 -1
- package/dist/test/unit/index.js +6 -1
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTopologyMessage.js +46 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts +2 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.d.ts.map +1 -0
- package/dist/test/unit/messages/cantonSignTransactionMessage.js +48 -0
- package/dist/test/unit/messages/clearSigning.d.ts +2 -0
- package/dist/test/unit/messages/clearSigning.d.ts.map +1 -0
- package/dist/test/unit/messages/clearSigning.js +72 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +52 -0
- package/dist/test/unit/utils.js +376 -5
- package/dist/tsconfig.tsbuildinfo +1 -1
- 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvYWxsb2NhdGlvbkFsbG9jYXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBMkY7QUFFM0YsNkRBQTBEO0FBRzFELG9EQUE0QjtBQUU1QixNQUFhLHlCQUEwQixTQUFRLHVDQUFrQjtJQWMvRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sMEJBQWUsQ0FBQyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxHQUFHLDBCQUFlLENBQUMsa0JBQWtCLENBQUM7SUFDeEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxXQUF5QztRQUN0RCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxXQUFXLENBQUM7SUFDaEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixZQUFZLENBQUMsU0FBb0IsRUFBRSxTQUFpQjtRQUNsRCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sWUFBWSxHQUFHLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0QsSUFBSSxD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WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0NBQ0Y7QUFuUUQsOERBbVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFB1YmxpY0tleSwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QsIENhbnRvblByZXBhcmVDb21tYW5kUmVzcG9uc2UgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFsbG9jYXRpb25BbGxvY2F0ZUJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9jb21tYW5kSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfYW1vdW50OiBudW1iZXI7XG4gIHByaXZhdGUgX3Rva2VuOiBzdHJpbmc7XG4gIHByaXZhdGUgX29wZXJhdG9ySWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udHJhY3RJZDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfdHJhZGVJZDogc3RyaW5nO1xuICBwcml2YXRlIF90cmFuc2ZlckxlZ0lkOiBzdHJpbmc7XG4gIHByaXZhdGUgX2FsbG9jYXRlQmVmb3JlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3NldHRsZUJlZm9yZTogc3RyaW5nO1xuICBwcml2YXRlIF9yZWNlaXZlclBhcnR5SWQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfc2VuZGVyUGFydHlJZDogc3RyaW5nO1xuICBwcml2YXRlIF9jb21tZW50Pzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB0aGlzLnNldFRyYW5zYWN0aW9uVHlwZSgpO1xuICB9XG5cbiAgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQWxsb2NhdGlvbkFsbG9jYXRlO1xuICB9XG5cbiAgc2V0VHJhbnNhY3Rpb25UeXBlKCk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLkFsbG9jYXRpb25BbGxvY2F0ZTtcbiAgfVxuXG4gIHNldFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uOiBDYW50b25QcmVwYXJlQ29tbWFuZFJlc3BvbnNlKTogdm9pZCB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5wcmVwYXJlQ29tbWFuZCA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IFB1YmxpY0tleSwgc2lnbmF0dXJlOiBCdWZmZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigndHJhbnNhY3Rpb24gaXMgZW1wdHkhJyk7XG4gICAgfVxuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaCh7IHB1YmxpY0tleSwgc2lnbmF0dXJlIH0pO1xuICAgIGNvbnN0IHB1YktleUJhc2U2NCA9IHV0aWxzLmdldEJhc2U2NEZyb21IZXgocHVibGljS2V5LnB1Yik7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduZXJGaW5nZXJwcmludCA9IHV0aWxzLmdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YktleUJhc2U2NCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmVzID0gc2lnbmF0dXJlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB1bmlxdWUgY29tbWFuZCBpZCBmb3IgdGhlIGFsbG9jYXRpb25cbiAgICogQWxzbyBzZXRzIHRoZSBfaWQgb2YgdGhlIHRyYW5zYWN0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIEEgdXVpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIGNvbW1hbmRJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbW1hbmRJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb21tYW5kSWQgPSBpZC50cmltKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5pZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBhbGxvY2F0aW9uIGFtb3VudFxuICAgKiBAcGFyYW0gYW1vdW50IC0gYWxsb2NhdGlvbiBhbW91bnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgYW1vdW50IGlzIG5vdCBwb3NpdGl2ZVxuICAgKi9cbiAgYW1vdW50KGFtb3VudDogbnVtYmVyKTogdGhpcyB7XG4gICAgaWYgKCFhbW91bnQgfHwgYW1vdW50IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbW91bnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICAgIH1cbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gZm9yIHRoZSBhbGxvY2F0aW9uXG4gICAqIEBwYXJhbSB0b2tlbiAtIHRva2VuIGlkZW50aWZpZXJcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdG9rZW4gaXMgZW1wdHkuXG4gICAqL1xuICB0b2tlbih0b2tlbjogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCF0b2tlbiB8fCAhdG9rZW4udHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rva2VuIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3Rva2VuID0gdG9rZW4udHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG9wZXJhdG9yIHBhcnR5IGlkXG4gICAqIEBwYXJhbSBpZCAtIG9wZXJhdG9yIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgb3BlcmF0b3JJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdG9ySWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fb3BlcmF0b3JJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb250cmFjdCBpZFxuICAgKiBAcGFyYW0gaWQgLSBjYW50b24gY29udHJhY3QgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBjb250cmFjdElkKGlkOiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgaWYgKGlkICE9PSBudWxsICYmICghaWQgfHwgIWlkLnRyaW0oKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9jb250cmFjdElkID0gaWQgPT09IG51bGwgPyBudWxsIDogaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRyYWRlIGlkXG4gICAqIEBwYXJhbSBpZCAtIHRyYWRlIGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgdHJhZGVJZChpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgaWYgKCFpZCB8fCAhaWQudHJpbSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RyYWRlSWQgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fdHJhZGVJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB0cmFuc2ZlciBsZWcgaWQgKGUuZy4gYCR7dHJhZGVJZH0tc2VjdXJpdHktbGVnYCBvciBgJHt0cmFkZUlkfS1jYXNoLWxlZ2ApXG4gICAqIEBwYXJhbSBpZCAtIHRyYW5zZmVyIGxlZyBpZFxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBpZCBpcyBlbXB0eS5cbiAgICovXG4gIHRyYW5zZmVyTGVnSWQoaWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghaWQgfHwgIWlkLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2ZlckxlZ0lkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3RyYW5zZmVyTGVnSWQgPSBpZC50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWxsb2NhdGUtYmVmb3JlIGRlYWRsaW5lIChJU08gODYwMSlcbiAgICogQHBhcmFtIGRlYWRsaW5lIC0gYWxsb2NhdGlvbiBkZWFkbGluZVxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBkZWFkbGluZSBpcyBlbXB0eS5cbiAgICovXG4gIGFsbG9jYXRlQmVmb3JlKGRlYWRsaW5lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWRlYWRsaW5lIHx8ICFkZWFkbGluZS50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYWxsb2NhdGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fYWxsb2NhdGVCZWZvcmUgPSBkZWFkbGluZS50cmltKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc2V0dGxlLWJlZm9yZSBkZWFkbGluZSAoSVNPIDg2MDEpXG4gICAqIEBwYXJhbSBkZWFkbGluZSAtIHNldHRsZW1lbnQgZGVhZGxpbmVcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgZGVhZGxpbmUgaXMgZW1wdHkuXG4gICAqL1xuICBzZXR0bGVCZWZvcmUoZGVhZGxpbmU6IHN0cmluZyk6IHRoaXMge1xuICAgIGlmICghZGVhZGxpbmUgfHwgIWRlYWRsaW5lLnRyaW0oKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdzZXR0bGVCZWZvcmUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcbiAgICB9XG4gICAgdGhpcy5fc2V0dGxlQmVmb3JlID0gZGVhZGxpbmUudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHNlbmRlciBwYXJ0eSBpZFxuICAgKiBAcGFyYW0gaWQgLSBzZW5kZXIgcGFydHkgaWRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgaWQgaXMgZW1wdHkuXG4gICAqL1xuICBzZW5kZXJQYXJ0eUlkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc2VuZGVyUGFydHlJZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zZW5kZXJQYXJ0eUlkID0gaWQudHJpbSgpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHJlY2VpdmVyIHBhcnR5IGlkXG4gICAqIEBwYXJhbSBpZCAtIHJlY2VpdmVyIHBhcnR5IGlkXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIGlkIGlzIGVtcHR5LlxuICAgKi9cbiAgcmVjZWl2ZXJQYXJ0eUlkKGlkOiBzdHJpbmcpOiB0aGlzIHtcbiAgICBpZiAoIWlkIHx8ICFpZC50cmltKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigncmVjZWl2ZXJQYXJ0eUlkIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG4gICAgfVxuICAgIHRoaXMuX3JlY2VpdmVyUGFydHlJZCA9IGlkLnRyaW0oKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBvcHRpb25hbCBjb21tZW50XG4gICAqIEBwYXJhbSBjb21tZW50IC0gZnJlZS1mb3JtIGNvbW1lbnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqL1xuICBjb21tZW50KGNvbW1lbnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuX2NvbW1lbnQgPSBjb21tZW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbmQgcmV0dXJucyB0aGUgQ2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdCBvYmplY3QgZnJvbSB0aGUgYnVpbGRlcidzIGludGVybmFsIHN0YXRlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Q2FudG9uQWxsb2NhdGlvbkFsbG9jYXRlUmVxdWVzdH0gLSBBIGZ1bGx5IGNvbnN0cnVjdGVkIGFuZCB2YWxpZGF0ZWQgcmVxdWVzdCBvYmplY3QuXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhbnkgcmVxdWlyZWQgZmllbGQgaXMgbWlzc2luZyBvciBmYWlscyB2YWxpZGF0aW9uLlxuICAgKi9cbiAgdG9SZXF1ZXN0T2JqZWN0KCk6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3Qge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICBjb25zdCByZXN1bHQ6IENhbnRvbkFsbG9jYXRpb25BbGxvY2F0ZVJlcXVlc3QgPSB7XG4gICAgICBjb21tYW5kSWQ6IHRoaXMuX2NvbW1hbmRJZCxcbiAgICAgIGFtb3VudDogdGhpcy5fYW1vdW50LFxuICAgICAgdG9rZW46IHRoaXMuX3Rva2VuLFxuICAgICAgb3BlcmF0b3JJZDogdGhpcy5fb3BlcmF0b3JJZCxcbiAgICAgIC4uLih0aGlzLl9jb250cmFjdElkICE9PSBudWxsICYmIHRoaXMuX2NvbnRyYWN0SWQgIT09IHVuZGVmaW5lZCAmJiB7IGNvbnRyYWN0SWQ6IHRoaXMuX2NvbnRyYWN0SWQgfSksXG4gICAgICB0cmFkZUlkOiB0aGlzLl90cmFkZUlkLFxuICAgICAgdHJhbnNmZXJMZWdJZDogdGhpcy5fdHJhbnNmZXJMZWdJZCxcbiAgICAgIGFsbG9jYXRlQmVmb3JlOiB0aGlzLl9hbGxvY2F0ZUJlZm9yZSxcbiAgICAgIHNldHRsZUJlZm9yZTogdGhpcy5fc2V0dGxlQmVmb3JlLFxuICAgICAgcmVjZWl2ZXJQYXJ0eUlkOiB0aGlzLl9yZWNlaXZlclBhcnR5SWQsXG4gICAgICBzZW5kZXJQYXJ0eUlkOiB0aGlzLl9zZW5kZXJQYXJ0eUlkLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2NvbW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0LmNvbW1lbnQgPSB0aGlzLl9jb21tZW50O1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGJ1aWxkZXIgYmVmb3JlIGJ1aWxkaW5nIHRoZSByZXF1ZXN0IG9iamVjdC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2NvbW1hbmRJZCkgdGhyb3cgbmV3IEVycm9yKCdjb21tYW5kSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fYW1vdW50KSB0aHJvdyBuZXcgRXJyb3IoJ2Ftb3VudCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90b2tlbikgdGhyb3cgbmV3IEVycm9yKCd0b2tlbiBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9vcGVyYXRvcklkKSB0aHJvdyBuZXcgRXJyb3IoJ29wZXJhdG9ySWQgaXMgbWlzc2luZycpO1xuICAgIGlmICh0aGlzLl9jb250cmFjdElkID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcignY29udHJhY3RJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl90cmFkZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3RyYWRlSWQgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fdHJhbnNmZXJMZWdJZCkgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2ZlckxlZ0lkIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX2FsbG9jYXRlQmVmb3JlKSB0aHJvdyBuZXcgRXJyb3IoJ2FsbG9jYXRlQmVmb3JlIGlzIG1pc3NpbmcnKTtcbiAgICBpZiAoIXRoaXMuX3NldHRsZUJlZm9yZSkgdGhyb3cgbmV3IEVycm9yKCdzZXR0bGVCZWZvcmUgaXMgbWlzc2luZycpO1xuICAgIGlmICghdGhpcy5fcmVjZWl2ZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3JlY2VpdmVyUGFydHlJZCBpcyBtaXNzaW5nJyk7XG4gICAgaWYgKCF0aGlzLl9zZW5kZXJQYXJ0eUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3NlbmRlclBhcnR5SWQgaXMgbWlzc2luZycpO1xuICB9XG59XG4iXX0=
|
|
@@ -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
|