@bitgo-beta/sdk-coin-canton 1.0.1-beta.9 → 1.0.1-beta.90
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/resources/hash/hash.d.ts +5 -0
- package/dist/resources/hash/hash.js +298 -0
- package/dist/resources/proto/damlTransaction.js +100 -0
- package/dist/resources/proto/damlTransactionNode.js +71 -0
- package/dist/resources/proto/damlTransactionNodeSeed.js +56 -0
- package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +53 -0
- package/dist/resources/proto/metadata/metadataInputContract.js +80 -0
- package/dist/resources/proto/metadata/metadataSubmitterInfo.js +62 -0
- package/dist/resources/proto/metadata.js +189 -0
- package/dist/resources/proto/node/empty.js +36 -0
- package/dist/resources/proto/node/globalKey.js +81 -0
- package/dist/resources/proto/node/identifier.js +73 -0
- package/dist/resources/proto/node/node.js +664 -0
- package/dist/resources/proto/node/timestamp.js +145 -0
- package/dist/resources/proto/node/value.js +838 -0
- package/dist/resources/proto/preparedTransaction.d.ts +8 -0
- package/dist/resources/proto/preparedTransaction.js +66 -0
- package/dist/src/canton.d.ts +15 -2
- package/dist/src/canton.d.ts.map +1 -1
- package/dist/src/canton.js +67 -6
- 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/constant.d.ts +16 -0
- package/dist/src/lib/constant.d.ts.map +1 -0
- package/dist/src/lib/constant.js +19 -0
- package/dist/src/lib/iface.d.ts +107 -0
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +7 -1
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +15 -3
- package/dist/src/lib/keyPair.d.ts +7 -1
- package/dist/src/lib/keyPair.d.ts.map +1 -1
- package/dist/src/lib/keyPair.js +24 -4
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +51 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -0
- package/dist/src/lib/oneStepPreApprovalBuilder.js +101 -0
- package/dist/src/lib/resourcesInterface.d.ts +214 -0
- package/dist/src/lib/resourcesInterface.d.ts.map +1 -0
- package/dist/src/lib/resourcesInterface.js +3 -0
- package/dist/src/lib/transaction/transaction.d.ts +24 -0
- package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction/transaction.js +206 -0
- package/dist/src/lib/transactionBuilder.d.ts +10 -17
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +31 -27
- package/dist/src/lib/transactionBuilderFactory.d.ts +15 -3
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +56 -6
- package/dist/src/lib/transferAcceptanceBuilder.d.ts +59 -0
- package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferAcceptanceBuilder.js +116 -0
- 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 +5 -1
- package/dist/src/lib/transferBuilder.d.ts.map +1 -1
- package/dist/src/lib/transferBuilder.js +8 -1
- 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 +101 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +258 -3
- package/dist/src/lib/walletInitBuilder.d.ts +101 -0
- package/dist/src/lib/walletInitBuilder.d.ts.map +1 -0
- package/dist/src/lib/walletInitBuilder.js +232 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +17 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -0
- package/dist/src/lib/walletInitialization/walletInitTransaction.js +100 -0
- 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 +40 -0
- package/dist/test/resources.d.ts +79 -0
- package/dist/test/resources.d.ts.map +1 -0
- package/dist/test/resources.js +94 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts +2 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +66 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts +2 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +57 -0
- 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/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 +57 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts +2 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/builder/walletInit/walletInitBuilder.js +65 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +72 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +76 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -10
- package/dist/src/lib/transaction.d.ts +0 -8
- package/dist/src/lib/transaction.d.ts.map +0 -1
- package/dist/src/lib/transaction.js +0 -17
|
@@ -0,0 +1,232 @@
|
|
|
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.WalletInitBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const keyPair_1 = require("./keyPair");
|
|
9
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
10
|
+
const walletInitTransaction_1 = require("./walletInitialization/walletInitTransaction");
|
|
11
|
+
const constant_1 = require("./constant");
|
|
12
|
+
class WalletInitBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
13
|
+
constructor(_coinConfig) {
|
|
14
|
+
super(_coinConfig);
|
|
15
|
+
this._signatures = [];
|
|
16
|
+
this._localParticipantObservationOnly = false;
|
|
17
|
+
this._otherConfirmingParticipantUids = [];
|
|
18
|
+
this._confirmationThreshold = 1;
|
|
19
|
+
this._observingParticipantUids = [];
|
|
20
|
+
this._transaction = new walletInitTransaction_1.WalletInitTransaction(_coinConfig);
|
|
21
|
+
}
|
|
22
|
+
initBuilder(tx) {
|
|
23
|
+
this._transaction = tx;
|
|
24
|
+
}
|
|
25
|
+
buildImplementation() {
|
|
26
|
+
throw new Error('Not implemented');
|
|
27
|
+
}
|
|
28
|
+
fromImplementation(rawTransaction, isFirstSigner) {
|
|
29
|
+
throw new Error('Not implemented');
|
|
30
|
+
}
|
|
31
|
+
signImplementation(key) {
|
|
32
|
+
throw new Error('Not implemented');
|
|
33
|
+
}
|
|
34
|
+
get transaction() {
|
|
35
|
+
return this._transaction;
|
|
36
|
+
}
|
|
37
|
+
set transaction(transaction) {
|
|
38
|
+
this._transaction.preparedParty = transaction;
|
|
39
|
+
}
|
|
40
|
+
validateAddress(address, addressFormat) {
|
|
41
|
+
if (!utils_1.default.isValidAddress(address.address)) {
|
|
42
|
+
throw new sdk_core_1.BuildTransactionError('Invalid address ' + address.address);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
validateKey(key) {
|
|
46
|
+
let keyPair;
|
|
47
|
+
try {
|
|
48
|
+
keyPair = new keyPair_1.KeyPair({ prv: key.key });
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
52
|
+
}
|
|
53
|
+
if (!keyPair.getKeys().prv) {
|
|
54
|
+
throw new sdk_core_1.BuildTransactionError('Invalid key');
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
validateRawTransaction(rawTransaction) {
|
|
58
|
+
if (!rawTransaction || !this._transaction.preparedParty) {
|
|
59
|
+
throw new sdk_core_1.BuildTransactionError('invalid raw transaction');
|
|
60
|
+
}
|
|
61
|
+
const localHash = utils_1.default.computeHashFromCreatePartyResponse(rawTransaction);
|
|
62
|
+
if (localHash !== this._transaction.preparedParty.multiHash) {
|
|
63
|
+
throw new sdk_core_1.BuildTransactionError('invalid raw transaction, hash not matching');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
validateTransaction(transaction) {
|
|
67
|
+
if (!transaction?.preparedParty) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const localHash = utils_1.default.computeHashFromCreatePartyResponse(transaction.preparedParty.topologyTransactions);
|
|
71
|
+
if (localHash !== this._transaction.preparedParty.multiHash) {
|
|
72
|
+
throw new sdk_core_1.BuildTransactionError('invalid transaction');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// not implemented because wallet initialization doesn't require any value
|
|
76
|
+
validateValue(value) {
|
|
77
|
+
throw new Error('Not implemented');
|
|
78
|
+
}
|
|
79
|
+
/** @inheritDoc */
|
|
80
|
+
addSignature(publicKey, signature) {
|
|
81
|
+
if (!this.transaction) {
|
|
82
|
+
throw new sdk_core_1.InvalidTransactionError('transaction is empty!');
|
|
83
|
+
}
|
|
84
|
+
this._signatures.push({ publicKey, signature });
|
|
85
|
+
this.transaction.signatures = signature.toString('base64');
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Sets the public key used for signing.
|
|
89
|
+
*
|
|
90
|
+
* @param key - The public key of the wallet.
|
|
91
|
+
* @returns The current builder instance for chaining.
|
|
92
|
+
* @throws Error if key is not a valid public key
|
|
93
|
+
*/
|
|
94
|
+
publicKey(key) {
|
|
95
|
+
utils_1.default.isValidPublicKey(key);
|
|
96
|
+
this._publicKey = {
|
|
97
|
+
format: constant_1.PUBLIC_KEY_FORMAT,
|
|
98
|
+
keyData: key,
|
|
99
|
+
keySpec: constant_1.PUBLIC_KEY_SPEC,
|
|
100
|
+
};
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Sets the party hint (alias or name) used during wallet initialization.
|
|
105
|
+
*
|
|
106
|
+
* @param hint - A 5-character non-empty string representing the party hint.
|
|
107
|
+
* @returns The current builder instance for chaining.
|
|
108
|
+
* @throws Error if the hint is empty or more than 5 characters long.
|
|
109
|
+
*/
|
|
110
|
+
partyHint(hint) {
|
|
111
|
+
const trimmedHint = hint.trim();
|
|
112
|
+
if (!trimmedHint) {
|
|
113
|
+
throw new Error('partyHint cannot be empty');
|
|
114
|
+
}
|
|
115
|
+
if (trimmedHint.length > 5) {
|
|
116
|
+
throw new Error('partyHint must be less than 6 characters long');
|
|
117
|
+
}
|
|
118
|
+
this._partyHint = trimmedHint;
|
|
119
|
+
return this;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Sets whether the local participant should be added in observation-only mode.
|
|
123
|
+
*
|
|
124
|
+
* @param flag - Boolean flag indicating observation-only status.
|
|
125
|
+
* @returns The current builder instance for chaining.
|
|
126
|
+
*/
|
|
127
|
+
localParticipantObservationOnly(flag) {
|
|
128
|
+
this._localParticipantObservationOnly = flag;
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Adds a confirming participant UID to the list of other confirming participants.
|
|
133
|
+
*
|
|
134
|
+
* @param uid - A non-empty string UID of another confirming participant.
|
|
135
|
+
* @returns The current builder instance for chaining.
|
|
136
|
+
* @throws Error if the UID is empty.
|
|
137
|
+
*/
|
|
138
|
+
otherConfirmingParticipantUid(uid) {
|
|
139
|
+
const trimmedUid = uid.trim();
|
|
140
|
+
if (!trimmedUid) {
|
|
141
|
+
throw new Error('otherConfirmingParticipantUid cannot be empty');
|
|
142
|
+
}
|
|
143
|
+
if (!this._otherConfirmingParticipantUids) {
|
|
144
|
+
this._otherConfirmingParticipantUids = [];
|
|
145
|
+
}
|
|
146
|
+
this._otherConfirmingParticipantUids.push(trimmedUid);
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Sets the confirmation threshold for the wallet initialization.
|
|
151
|
+
*
|
|
152
|
+
* @param threshold - A positive integer indicating how many confirmations are required.
|
|
153
|
+
* @returns The current builder instance for chaining.
|
|
154
|
+
* @throws Error if the threshold is not a positive integer.
|
|
155
|
+
*/
|
|
156
|
+
confirmationThreshold(threshold) {
|
|
157
|
+
if (!Number.isInteger(threshold) || threshold <= 0) {
|
|
158
|
+
throw new Error('confirmationThreshold must be a positive integer');
|
|
159
|
+
}
|
|
160
|
+
this._confirmationThreshold = threshold;
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Adds an observing participant UID to the list of observers.
|
|
165
|
+
*
|
|
166
|
+
* @param uid - A non-empty string UID of the observing participant.
|
|
167
|
+
* @returns The current builder instance for chaining.
|
|
168
|
+
* @throws Error if the UID is empty.
|
|
169
|
+
*/
|
|
170
|
+
observingParticipantUid(uid) {
|
|
171
|
+
const trimmedUid = uid.trim();
|
|
172
|
+
if (!trimmedUid) {
|
|
173
|
+
throw new Error('observingParticipantUid cannot be empty');
|
|
174
|
+
}
|
|
175
|
+
if (!this._observingParticipantUids) {
|
|
176
|
+
this._observingParticipantUids = [];
|
|
177
|
+
}
|
|
178
|
+
this._observingParticipantUids.push(trimmedUid);
|
|
179
|
+
return this;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Builds and returns the WalletInitRequest object from the builder's internal state.
|
|
183
|
+
*
|
|
184
|
+
* This method performs validation before constructing the object. If required fields are
|
|
185
|
+
* missing or invalid, it throws an error.
|
|
186
|
+
*
|
|
187
|
+
* @returns {WalletInitRequest} - A fully constructed and validated request object for wallet initialization.
|
|
188
|
+
* @throws {Error} If any required field is missing or fails validation.
|
|
189
|
+
*/
|
|
190
|
+
toRequestObject() {
|
|
191
|
+
this.validate();
|
|
192
|
+
return {
|
|
193
|
+
publicKey: this._publicKey,
|
|
194
|
+
partyHint: this._partyHint,
|
|
195
|
+
localParticipantObservationOnly: this._localParticipantObservationOnly,
|
|
196
|
+
otherConfirmingParticipantUids: this._otherConfirmingParticipantUids,
|
|
197
|
+
confirmationThreshold: this._confirmationThreshold,
|
|
198
|
+
observingParticipantUids: this._observingParticipantUids,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Validates the internal state of the builder before building the request object.
|
|
203
|
+
*
|
|
204
|
+
* Checks for:
|
|
205
|
+
* - Presence of a synchronizer ID.
|
|
206
|
+
* - `partyHint` must not be empty and must be at most 5 characters long.
|
|
207
|
+
* - Public key must include `keyData`, `format`, and `keySpec`.
|
|
208
|
+
* - Confirmation threshold must be a positive integer.
|
|
209
|
+
* - Confirming and observing participant UID lists must be arrays.
|
|
210
|
+
*
|
|
211
|
+
* @private
|
|
212
|
+
* @throws {Error} If any required field is missing or invalid.
|
|
213
|
+
*/
|
|
214
|
+
validate() {
|
|
215
|
+
if (!this._partyHint || this._partyHint.length > 5)
|
|
216
|
+
throw new Error('Invalid partyHint');
|
|
217
|
+
if (!this._publicKey || !this._publicKey.keyData || !this._publicKey.format || !this._publicKey.keySpec) {
|
|
218
|
+
throw new Error('Invalid publicKey');
|
|
219
|
+
}
|
|
220
|
+
if (!Number.isInteger(this._confirmationThreshold) || this._confirmationThreshold <= 0) {
|
|
221
|
+
throw new Error('Invalid confirmationThreshold');
|
|
222
|
+
}
|
|
223
|
+
if (!Array.isArray(this._otherConfirmingParticipantUids)) {
|
|
224
|
+
throw new Error('otherConfirmingParticipantUids must be an array');
|
|
225
|
+
}
|
|
226
|
+
if (!Array.isArray(this._observingParticipantUids)) {
|
|
227
|
+
throw new Error('observingParticipantUids must be an array');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
exports.WalletInitBuilder = WalletInitBuilder;
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3dhbGxldEluaXRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLG1EQVE4QjtBQUc5Qix1Q0FBb0M7QUFFcEMsb0RBQTRCO0FBQzVCLHdGQUFxRjtBQUNyRix5Q0FBZ0U7QUFFaEUsTUFBYSxpQkFBa0IsU0FBUSxpQ0FBc0I7SUFXM0QsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFWYixnQkFBVyxHQUFnQixFQUFFLENBQUM7UUFJOUIscUNBQWdDLEdBQUcsS0FBSyxDQUFDO1FBQ3pDLG9DQUErQixHQUFhLEVBQUUsQ0FBQztRQUMvQywyQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFDM0IsOEJBQXlCLEdBQWEsRUFBRSxDQUFDO1FBSS9DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw2Q0FBcUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQXlCO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFUyxtQkFBbUI7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxjQUFtQixFQUFFLGFBQXVCO1FBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRVMsa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxXQUFXLENBQUMsV0FBMEI7UUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFh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Q0FBQyxVQUFVLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hHLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksSUFBSSxDQUFDLHNCQUFzQixJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZGLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLCtCQUErQixDQUFDLEVBQUUsQ0FBQztZQUN6RCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFqUEQsOENBaVBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5pbXBvcnQge1xuICBCYXNlQWRkcmVzcyxcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgQnVpbGRUcmFuc2FjdGlvbkVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUHVibGljS2V5LFxuICBTaWduYXR1cmUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcblxuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBJUHVibGljS2V5LCBQcmVwYXJlZFBhcnR5LCBXYWxsZXRJbml0UmVxdWVzdCB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgV2FsbGV0SW5pdFRyYW5zYWN0aW9uIH0gZnJvbSAnLi93YWxsZXRJbml0aWFsaXphdGlvbi93YWxsZXRJbml0VHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgUFVCTElDX0tFWV9GT1JNQVQsIFBVQkxJQ19LRVlfU1BFQyB9IGZyb20gJy4vY29uc3RhbnQnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfdHJhbnNhY3Rpb246IFdhbGxldEluaXRUcmFuc2FjdGlvbjtcbiAgcHJpdmF0ZSBfc2lnbmF0dXJlczogU2lnbmF0dXJlW10gPSBbXTtcblxuICBwcml2YXRlIF9wdWJsaWNLZXk6IElQdWJsaWNLZXk7XG4gIHByaXZhdGUgX3BhcnR5SGludDogc3RyaW5nO1xuICBwcml2YXRlIF9sb2NhbFBhcnRpY2lwYW50T2JzZXJ2YXRpb25Pbmx5ID0gZmFsc2U7XG4gIHByaXZhdGUgX290aGVyQ29uZmlybWluZ1BhcnRpY2lwYW50VWlkczogc3RyaW5nW10gPSBbXTtcbiAgcHJpdmF0ZSBfY29uZmlybWF0aW9uVGhyZXNob2xkID0gMTtcbiAgcHJpdmF0ZSBfb2JzZXJ2aW5nUGFydGljaXBhbnRVaWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBXYWxsZXRJbml0VHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFdhbGxldEluaXRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICBwcm90ZWN0ZWQgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFdhbGxldEluaXRUcmFuc2FjdGlvbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uOiBhbnksIGlzRmlyc3RTaWduZXI/OiBib29sZWFuKTogV2FsbGV0SW5pdFRyYW5zYWN0aW9uIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBXYWxsZXRJbml0VHJhbnNhY3Rpb24ge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXQgdHJhbnNhY3Rpb24oKTogV2FsbGV0SW5pdFRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgdHJhbnNhY3Rpb24odHJhbnNhY3Rpb246IFByZXBhcmVkUGFydHkpIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbi5wcmVwYXJlZFBhcnR5ID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICB2YWxpZGF0ZUFkZHJlc3MoYWRkcmVzczogQmFzZUFkZHJlc3MsIGFkZHJlc3NGb3JtYXQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MuYWRkcmVzcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyAnICsgYWRkcmVzcy5hZGRyZXNzKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZUtleShrZXk6IEJhc2VLZXkpOiB2b2lkIHtcbiAgICBsZXQga2V5UGFpcjogS2V5UGFpcjtcbiAgICB0cnkge1xuICAgICAga2V5UGFpciA9IG5ldyBLZXlQYWlyKHsgcHJ2OiBrZXkua2V5IH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBrZXknKTtcbiAgICB9XG4gICAgaWYgKCFrZXlQYWlyLmdldEtleXMoKS5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQga2V5Jyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBpZiAoIXJhd1RyYW5zYWN0aW9uIHx8ICF0aGlzLl90cmFuc2FjdGlvbi5wcmVwYXJlZFBhcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdpbnZhbGlkIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBsb2NhbEhhc2ggPSB1dGlscy5jb21wdXRlSGFzaEZyb21DcmVhdGVQYXJ0eVJlc3BvbnNlKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAobG9jYWxIYXNoICE9PSB0aGlzLl90cmFuc2FjdGlvbi5wcmVwYXJlZFBhcnR5Lm11bHRpSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24sIGhhc2ggbm90IG1hdGNoaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbj86IFdhbGxldEluaXRUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIGlmICghdHJhbnNhY3Rpb24/LnByZXBhcmVkUGFydHkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbG9jYWxIYXNoID0gdXRpbHMuY29tcHV0ZUhhc2hGcm9tQ3JlYXRlUGFydHlSZXNwb25zZSh0cmFuc2FjdGlvbi5wcmVwYXJlZFBhcnR5LnRvcG9sb2d5VHJhbnNhY3Rpb25zKTtcbiAgICBpZiAobG9jYWxIYXNoICE9PSB0aGlzLl90cmFuc2FjdGlvbi5wcmVwYXJlZFBhcnR5Lm11bHRpSGFzaCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignaW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgfVxuXG4gIC8vIG5vdCBpbXBsZW1lbnRlZCBiZWNhdXNlIHdhbGxldCBpbml0aWFsaXphdGlvbiBkb2Vzbid0IHJlcXVpcmUgYW55IHZhbHVlXG4gIHZhbGlkYXRlVmFsdWUodmFsdWU6IEJpZ051bWJlcik6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYWRkU2lnbmF0dXJlKHB1YmxpY0tleTogUHVibGljS2V5LCBzaWduYXR1cmU6IEJ1ZmZlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd0cmFuc2FjdGlvbiBpcyBlbXB0eSEnKTtcbiAgICB9XG4gICAgdGhpcy5fc2lnbmF0dXJlcy5wdXNoKHsgcHVibGljS2V5LCBzaWduYXR1cmUgfSk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zaWduYXR1cmVzID0gc2lnbmF0dXJlLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwdWJsaWMga2V5IHVzZWQgZm9yIHNpZ25pbmcuXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgLSBUaGUgcHVibGljIGtleSBvZiB0aGUgd2FsbGV0LlxuICAgKiBAcmV0dXJucyBUaGUgY3VycmVudCBidWlsZGVyIGluc3RhbmNlIGZvciBjaGFpbmluZy5cbiAgICogQHRocm93cyBFcnJvciBpZiBrZXkgaXMgbm90IGEgdmFsaWQgcHVibGljIGtleVxuICAgKi9cbiAgcHVibGljS2V5KGtleTogc3RyaW5nKTogdGhpcyB7XG4gICAgdXRpbHMuaXNWYWxpZFB1YmxpY0tleShrZXkpO1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHtcbiAgICAgIGZvcm1hdDogUFVCTElDX0tFWV9GT1JNQVQsXG4gICAgICBrZXlEYXRhOiBrZXksXG4gICAgICBrZXlTcGVjOiBQVUJMSUNfS0VZX1NQRUMsXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXJ0eSBoaW50IChhbGlhcyBvciBuYW1lKSB1c2VkIGR1cmluZyB3YWxsZXQgaW5pdGlhbGl6YXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBoaW50IC0gQSA1LWNoYXJhY3RlciBub24tZW1wdHkgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFydHkgaGludC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIGhpbnQgaXMgZW1wdHkgb3IgbW9yZSB0aGFuIDUgY2hhcmFjdGVycyBsb25nLlxuICAgKi9cbiAgcGFydHlIaW50KGhpbnQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHRyaW1tZWRIaW50ID0gaGludC50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkSGludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdwYXJ0eUhpbnQgY2Fubm90IGJlIGVtcHR5Jyk7XG4gICAgfVxuICAgIGlmICh0cmltbWVkSGludC5sZW5ndGggPiA1KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhcnR5SGludCBtdXN0IGJlIGxlc3MgdGhhbiA2IGNoYXJhY3RlcnMgbG9uZycpO1xuICAgIH1cbiAgICB0aGlzLl9wYXJ0eUhpbnQgPSB0cmltbWVkSGludDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHdoZXRoZXIgdGhlIGxvY2FsIHBhcnRpY2lwYW50IHNob3VsZCBiZSBhZGRlZCBpbiBvYnNlcnZhdGlvbi1vbmx5IG1vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBmbGFnIC0gQm9vbGVhbiBmbGFnIGluZGljYXRpbmcgb2JzZXJ2YXRpb24tb25seSBzdGF0dXMuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKi9cbiAgbG9jYWxQYXJ0aWNpcGFudE9ic2VydmF0aW9uT25seShmbGFnOiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fbG9jYWxQYXJ0aWNpcGFudE9ic2VydmF0aW9uT25seSA9IGZsYWc7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNvbmZpcm1pbmcgcGFydGljaXBhbnQgVUlEIHRvIHRoZSBsaXN0IG9mIG90aGVyIGNvbmZpcm1pbmcgcGFydGljaXBhbnRzLlxuICAgKlxuICAgKiBAcGFyYW0gdWlkIC0gQSBub24tZW1wdHkgc3RyaW5nIFVJRCBvZiBhbm90aGVyIGNvbmZpcm1pbmcgcGFydGljaXBhbnQuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBVSUQgaXMgZW1wdHkuXG4gICAqL1xuICBvdGhlckNvbmZpcm1pbmdQYXJ0aWNpcGFudFVpZCh1aWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIGNvbnN0IHRyaW1tZWRVaWQgPSB1aWQudHJpbSgpO1xuICAgIGlmICghdHJpbW1lZFVpZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdGhlckNvbmZpcm1pbmdQYXJ0aWNpcGFudFVpZCBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLl9vdGhlckNvbmZpcm1pbmdQYXJ0aWNpcGFudFVpZHMpIHtcbiAgICAgIHRoaXMuX290aGVyQ29uZmlybWluZ1BhcnRpY2lwYW50VWlkcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLl9vdGhlckNvbmZpcm1pbmdQYXJ0aWNpcGFudFVpZHMucHVzaCh0cmltbWVkVWlkKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBjb25maXJtYXRpb24gdGhyZXNob2xkIGZvciB0aGUgd2FsbGV0IGluaXRpYWxpemF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gdGhyZXNob2xkIC0gQSBwb3NpdGl2ZSBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgY29uZmlybWF0aW9ucyBhcmUgcmVxdWlyZWQuXG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nLlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSB0aHJlc2hvbGQgaXMgbm90IGEgcG9zaXRpdmUgaW50ZWdlci5cbiAgICovXG4gIGNvbmZpcm1hdGlvblRocmVzaG9sZCh0aHJlc2hvbGQ6IG51bWJlcik6IHRoaXMge1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcih0aHJlc2hvbGQpIHx8IHRocmVzaG9sZCA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbmZpcm1hdGlvblRocmVzaG9sZCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgIH1cbiAgICB0aGlzLl9jb25maXJtYXRpb25UaHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBvYnNlcnZpbmcgcGFydGljaXBhbnQgVUlEIHRvIHRoZSBsaXN0IG9mIG9ic2VydmVycy5cbiAgICpcbiAgICogQHBhcmFtIHVpZCAtIEEgbm9uLWVtcHR5IHN0cmluZyBVSUQgb2YgdGhlIG9ic2VydmluZyBwYXJ0aWNpcGFudC5cbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgYnVpbGRlciBpbnN0YW5jZSBmb3IgY2hhaW5pbmcuXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIFVJRCBpcyBlbXB0eS5cbiAgICovXG4gIG9ic2VydmluZ1BhcnRpY2lwYW50VWlkKHVpZDogc3RyaW5nKTogdGhpcyB7XG4gICAgY29uc3QgdHJpbW1lZFVpZCA9IHVpZC50cmltKCk7XG4gICAgaWYgKCF0cmltbWVkVWlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ29ic2VydmluZ1BhcnRpY2lwYW50VWlkIGNhbm5vdCBiZSBlbXB0eScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuX29ic2VydmluZ1BhcnRpY2lwYW50VWlkcykge1xuICAgICAgdGhpcy5fb2JzZXJ2aW5nUGFydGljaXBhbnRVaWRzID0gW107XG4gICAgfVxuICAgIHRoaXMuX29ic2VydmluZ1BhcnRpY2lwYW50VWlkcy5wdXNoKHRyaW1tZWRVaWQpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhbmQgcmV0dXJucyB0aGUgV2FsbGV0SW5pdFJlcXVlc3Qgb2JqZWN0IGZyb20gdGhlIGJ1aWxkZXIncyBpbnRlcm5hbCBzdGF0ZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgcGVyZm9ybXMgdmFsaWRhdGlvbiBiZWZvcmUgY29uc3RydWN0aW5nIHRoZSBvYmplY3QuIElmIHJlcXVpcmVkIGZpZWxkcyBhcmVcbiAgICogbWlzc2luZyBvciBpbnZhbGlkLCBpdCB0aHJvd3MgYW4gZXJyb3IuXG4gICAqXG4gICAqIEByZXR1cm5zIHtXYWxsZXRJbml0UmVxdWVzdH0gLSBBIGZ1bGx5IGNvbnN0cnVjdGVkIGFuZCB2YWxpZGF0ZWQgcmVxdWVzdCBvYmplY3QgZm9yIHdhbGxldCBpbml0aWFsaXphdGlvbi5cbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nIG9yIGZhaWxzIHZhbGlkYXRpb24uXG4gICAqL1xuICB0b1JlcXVlc3RPYmplY3QoKTogV2FsbGV0SW5pdFJlcXVlc3Qge1xuICAgIHRoaXMudmFsaWRhdGUoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcHVibGljS2V5OiB0aGlzLl9wdWJsaWNLZXksXG4gICAgICBwYXJ0eUhpbnQ6IHRoaXMuX3BhcnR5SGludCxcbiAgICAgIGxvY2FsUGFydGljaXBhbnRPYnNlcnZhdGlvbk9ubHk6IHRoaXMuX2xvY2FsUGFydGljaXBhbnRPYnNlcnZhdGlvbk9ubHksXG4gICAgICBvdGhlckNvbmZpcm1pbmdQYXJ0aWNpcGFudFVpZHM6IHRoaXMuX290aGVyQ29uZmlybWluZ1BhcnRpY2lwYW50VWlkcyxcbiAgICAgIGNvbmZpcm1hdGlvblRocmVzaG9sZDogdGhpcy5fY29uZmlybWF0aW9uVGhyZXNob2xkLFxuICAgICAgb2JzZXJ2aW5nUGFydGljaXBhbnRVaWRzOiB0aGlzLl9vYnNlcnZpbmdQYXJ0aWNpcGFudFVpZHMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBidWlsZGVyIGJlZm9yZSBidWlsZGluZyB0aGUgcmVxdWVzdCBvYmplY3QuXG4gICAqXG4gICAqIENoZWNrcyBmb3I6XG4gICAqIC0gUHJlc2VuY2Ugb2YgYSBzeW5jaHJvbml6ZXIgSUQuXG4gICAqIC0gYHBhcnR5SGludGAgbXVzdCBub3QgYmUgZW1wdHkgYW5kIG11c3QgYmUgYXQgbW9zdCA1IGNoYXJhY3RlcnMgbG9uZy5cbiAgICogLSBQdWJsaWMga2V5IG11c3QgaW5jbHVkZSBga2V5RGF0YWAsIGBmb3JtYXRgLCBhbmQgYGtleVNwZWNgLlxuICAgKiAtIENvbmZpcm1hdGlvbiB0aHJlc2hvbGQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuXG4gICAqIC0gQ29uZmlybWluZyBhbmQgb2JzZXJ2aW5nIHBhcnRpY2lwYW50IFVJRCBsaXN0cyBtdXN0IGJlIGFycmF5cy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHRocm93cyB7RXJyb3J9IElmIGFueSByZXF1aXJlZCBmaWVsZCBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGFydHlIaW50IHx8IHRoaXMuX3BhcnR5SGludC5sZW5ndGggPiA1KSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcGFydHlIaW50Jyk7XG4gICAgaWYgKCF0aGlzLl9wdWJsaWNLZXkgfHwgIXRoaXMuX3B1YmxpY0tleS5rZXlEYXRhIHx8ICF0aGlzLl9wdWJsaWNLZXkuZm9ybWF0IHx8ICF0aGlzLl9wdWJsaWNLZXkua2V5U3BlYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHB1YmxpY0tleScpO1xuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIodGhpcy5fY29uZmlybWF0aW9uVGhyZXNob2xkKSB8fCB0aGlzLl9jb25maXJtYXRpb25UaHJlc2hvbGQgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbmZpcm1hdGlvblRocmVzaG9sZCcpO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5fb3RoZXJDb25maXJtaW5nUGFydGljaXBhbnRVaWRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvdGhlckNvbmZpcm1pbmdQYXJ0aWNpcGFudFVpZHMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5fb2JzZXJ2aW5nUGFydGljaXBhbnRVaWRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdvYnNlcnZpbmdQYXJ0aWNpcGFudFVpZHMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseKey, BaseTransaction } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { PreparedParty, TransactionExplanation, WalletInitTxData } from '../iface';
|
|
4
|
+
export declare class WalletInitTransaction extends BaseTransaction {
|
|
5
|
+
private _preparedParty;
|
|
6
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
7
|
+
get preparedParty(): PreparedParty;
|
|
8
|
+
set preparedParty(transaction: PreparedParty);
|
|
9
|
+
canSign(key: BaseKey): boolean;
|
|
10
|
+
set signatures(signature: string);
|
|
11
|
+
toBroadcastFormat(): string;
|
|
12
|
+
toJson(): WalletInitTxData;
|
|
13
|
+
get signablePayload(): Buffer;
|
|
14
|
+
fromRawTransaction(rawTx: string): void;
|
|
15
|
+
explainTransaction(): TransactionExplanation;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=walletInitTransaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walletInitTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/walletInitialization/walletInitTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,eAAe,EAA4C,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAGL,aAAa,EACb,sBAAsB,EAEtB,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAGlB,qBAAa,qBAAsB,SAAQ,eAAe;IACxD,OAAO,CAAC,cAAc,CAAgB;gBAE1B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,IAAI,aAAa,CAAC,WAAW,EAAE,aAAa,EAI3C;IAED,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAE/B;IAED,iBAAiB,IAAI,MAAM;IA6B3B,MAAM,IAAI,gBAAgB;IAY1B,IAAI,eAAe,IAAI,MAAM,CAK5B;IAED,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAgBvC,kBAAkB,IAAI,sBAAsB;CAa7C"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WalletInitTransaction = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const constant_1 = require("../constant");
|
|
6
|
+
class WalletInitTransaction extends sdk_core_1.BaseTransaction {
|
|
7
|
+
constructor(coinConfig) {
|
|
8
|
+
super(coinConfig);
|
|
9
|
+
}
|
|
10
|
+
get preparedParty() {
|
|
11
|
+
return this._preparedParty;
|
|
12
|
+
}
|
|
13
|
+
set preparedParty(transaction) {
|
|
14
|
+
this._preparedParty = transaction;
|
|
15
|
+
this._id = transaction.multiHash;
|
|
16
|
+
this._type = sdk_core_1.TransactionType.WalletInitialization;
|
|
17
|
+
}
|
|
18
|
+
canSign(key) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
set signatures(signature) {
|
|
22
|
+
this._signatures.push(signature);
|
|
23
|
+
}
|
|
24
|
+
toBroadcastFormat() {
|
|
25
|
+
if (!this._preparedParty) {
|
|
26
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
27
|
+
}
|
|
28
|
+
const multiHashSignatures = [];
|
|
29
|
+
if (this.signature.length > 0) {
|
|
30
|
+
this.signature.map((signature) => {
|
|
31
|
+
const multiHashSignature = {
|
|
32
|
+
format: constant_1.SIGNATURE_FORMAT,
|
|
33
|
+
signature: signature,
|
|
34
|
+
signedBy: this._preparedParty.publicKeyFingerprint,
|
|
35
|
+
signingAlgorithmSpec: constant_1.SIGNATURE_ALGORITHM_SPEC,
|
|
36
|
+
};
|
|
37
|
+
multiHashSignatures.push(multiHashSignature);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const walletInitBroadcastData = {
|
|
41
|
+
preparedParty: this._preparedParty,
|
|
42
|
+
onboardingTransactions: this._preparedParty.topologyTransactions.map((txn) => {
|
|
43
|
+
const onboardingTransaction = {
|
|
44
|
+
transaction: txn,
|
|
45
|
+
};
|
|
46
|
+
return onboardingTransaction;
|
|
47
|
+
}),
|
|
48
|
+
multiHashSignatures: multiHashSignatures,
|
|
49
|
+
};
|
|
50
|
+
return Buffer.from(JSON.stringify(walletInitBroadcastData)).toString('base64');
|
|
51
|
+
}
|
|
52
|
+
toJson() {
|
|
53
|
+
if (!this._preparedParty) {
|
|
54
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
55
|
+
}
|
|
56
|
+
const result = {
|
|
57
|
+
id: this.id,
|
|
58
|
+
type: this._type,
|
|
59
|
+
preparedParty: this._preparedParty,
|
|
60
|
+
};
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
get signablePayload() {
|
|
64
|
+
if (!this._preparedParty) {
|
|
65
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction data');
|
|
66
|
+
}
|
|
67
|
+
return Buffer.from(this._preparedParty.multiHash, 'base64');
|
|
68
|
+
}
|
|
69
|
+
fromRawTransaction(rawTx) {
|
|
70
|
+
try {
|
|
71
|
+
const decoded = JSON.parse(Buffer.from(rawTx, 'base64').toString('utf8'));
|
|
72
|
+
this._preparedParty = decoded.preparedParty;
|
|
73
|
+
this._type = sdk_core_1.TransactionType.WalletInitialization;
|
|
74
|
+
this._id = decoded.preparedParty.multiHash;
|
|
75
|
+
if (decoded.multiHashSignatures.length > 0) {
|
|
76
|
+
decoded.multiHashSignatures.map((multiHashSignature) => {
|
|
77
|
+
this.signatures = multiHashSignature.signature;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
throw new sdk_core_1.InvalidTransactionError('Unable to parse raw transaction data');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
explainTransaction() {
|
|
86
|
+
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
|
|
87
|
+
return {
|
|
88
|
+
id: this.id,
|
|
89
|
+
displayOrder,
|
|
90
|
+
outputs: [],
|
|
91
|
+
outputAmount: '0',
|
|
92
|
+
changeOutputs: [],
|
|
93
|
+
changeAmount: '0',
|
|
94
|
+
fee: { fee: '0' },
|
|
95
|
+
type: this.type,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.WalletInitTransaction = WalletInitTransaction;
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbi93YWxsZXRJbml0VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTBHO0FBVTFHLDBDQUF5RTtBQUV6RSxNQUFhLHFCQUFzQixTQUFRLDBCQUFlO0lBR3hELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLFdBQTBCO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUF5QixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dC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LEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxZQUFZO1lBQ1osT0FBTyxFQUFFLEVBQUU7WUFDWCxZQUFZLEVBQUUsR0FBRztZQUNqQixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdEdELHNEQXNHQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIE11bHRpSGFzaFNpZ25hdHVyZSxcbiAgT25ib2FyZGluZ1RyYW5zYWN0aW9uLFxuICBQcmVwYXJlZFBhcnR5LFxuICBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBXYWxsZXRJbml0QnJvYWRjYXN0RGF0YSxcbiAgV2FsbGV0SW5pdFR4RGF0YSxcbn0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHsgU0lHTkFUVVJFX0FMR09SSVRITV9TUEVDLCBTSUdOQVRVUkVfRk9STUFUIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfcHJlcGFyZWRQYXJ0eTogUHJlcGFyZWRQYXJ0eTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHByZXBhcmVkUGFydHkoKTogUHJlcGFyZWRQYXJ0eSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVkUGFydHk7XG4gIH1cblxuICBzZXQgcHJlcGFyZWRQYXJ0eSh0cmFuc2FjdGlvbjogUHJlcGFyZWRQYXJ0eSkge1xuICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSB0cmFuc2FjdGlvbjtcbiAgICB0aGlzLl9pZCA9IHRyYW5zYWN0aW9uLm11bHRpSGFzaDtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXQgc2lnbmF0dXJlcyhzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aUhhc2hTaWduYXR1cmVzOiBNdWx0aUhhc2hTaWduYXR1cmVbXSA9IFtdO1xuICAgIGlmICh0aGlzLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNpZ25hdHVyZS5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBtdWx0aUhhc2hTaWduYXR1cmU6IE11bHRpSGFzaFNpZ25hdHVyZSA9IHtcbiAgICAgICAgICBmb3JtYXQ6IFNJR05BVFVSRV9GT1JNQVQsXG4gICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsXG4gICAgICAgICAgc2lnbmVkQnk6IHRoaXMuX3ByZXBhcmVkUGFydHkucHVibGljS2V5RmluZ2VycHJpbnQsXG4gICAgICAgICAgc2lnbmluZ0FsZ29yaXRobVNwZWM6IFNJR05BVFVSRV9BTEdPUklUSE1fU1BFQyxcbiAgICAgICAgfTtcbiAgICAgICAgbXVsdGlIYXNoU2lnbmF0dXJlcy5wdXNoKG11bHRpSGFzaFNpZ25hdHVyZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd2FsbGV0SW5pdEJyb2FkY2FzdERhdGE6IFdhbGxldEluaXRCcm9hZGNhc3REYXRhID0ge1xuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICAgIG9uYm9hcmRpbmdUcmFuc2FjdGlvbnM6IHRoaXMuX3ByZXBhcmVkUGFydHkudG9wb2xvZ3lUcmFuc2FjdGlvbnMubWFwKCh0eG4pID0+IHtcbiAgICAgICAgY29uc3Qgb25ib2FyZGluZ1RyYW5zYWN0aW9uOiBPbmJvYXJkaW5nVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb246IHR4bixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9uYm9hcmRpbmdUcmFuc2FjdGlvbjtcbiAgICAgIH0pLFxuICAgICAgbXVsdGlIYXNoU2lnbmF0dXJlczogbXVsdGlIYXNoU2lnbmF0dXJlcyxcbiAgICB9O1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh3YWxsZXRJbml0QnJvYWRjYXN0RGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBXYWxsZXRJbml0VHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFdhbGxldEluaXRUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlLFxuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLl9wcmVwYXJlZFBhcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ByZXBhcmVkUGFydHkubXVsdGlIYXNoLCAnYmFzZTY0Jyk7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkOiBXYWxsZXRJbml0QnJvYWRjYXN0RGF0YSA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpKTtcbiAgICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSBkZWNvZGVkLnByZXBhcmVkUGFydHk7XG4gICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICAgICAgdGhpcy5faWQgPSBkZWNvZGVkLnByZXBhcmVkUGFydHkubXVsdGlIYXNoO1xuICAgICAgaWYgKGRlY29kZWQubXVsdGlIYXNoU2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlY29kZWQubXVsdGlIYXNoU2lnbmF0dXJlcy5tYXAoKG11bHRpSGFzaFNpZ25hdHVyZTogTXVsdGlIYXNoU2lnbmF0dXJlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gbXVsdGlIYXNoU2lnbmF0dXJlLnNpZ25hdHVyZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdVbmFibGUgdG8gcGFyc2UgcmF3IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gIH1cblxuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgZGlzcGxheU9yZGVyID0gWydpZCcsICdvdXRwdXRzJywgJ291dHB1dEFtb3VudCcsICdjaGFuZ2VPdXRwdXRzJywgJ2NoYW5nZUFtb3VudCcsICdmZWUnLCAndHlwZSddO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIGRpc3BsYXlPcmRlcixcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../test/helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,QAAQ,CAAC;AAEnD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CAEnF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getCantonBuilderFactory = getCantonBuilderFactory;
|
|
4
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
5
|
+
const src_1 = require("../src");
|
|
6
|
+
function getCantonBuilderFactory(coinName) {
|
|
7
|
+
return new src_1.TransactionBuilderFactory(statics_1.coins.get(coinName));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSwwREFFQztBQUxELGlEQUE0QztBQUM1QyxnQ0FBbUQ7QUFFbkQsU0FBZ0IsdUJBQXVCLENBQUMsUUFBZ0I7SUFDdEQsT0FBTyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9zcmMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FudG9uQnVpbGRlckZhY3RvcnkoY29pbk5hbWU6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KGNvaW5OYW1lKSk7XG59XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canton.integration.d.ts","sourceRoot":"","sources":["../../../test/integration/canton.integration.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const helper_1 = require("../helper");
|
|
9
|
+
const resources_1 = require("../resources");
|
|
10
|
+
describe('Canton integration tests', function () {
|
|
11
|
+
describe('Explain raw transaction', function () {
|
|
12
|
+
const factory = (0, helper_1.getCantonBuilderFactory)('tcanton');
|
|
13
|
+
it('should explain raw wallet init transaction', function () {
|
|
14
|
+
const builder = factory.from(resources_1.WalletInitRawTransaction);
|
|
15
|
+
const txn = builder.transaction;
|
|
16
|
+
const explainTxData = txn.explainTransaction();
|
|
17
|
+
(0, assert_1.default)(explainTxData);
|
|
18
|
+
assert_1.default.equal(explainTxData.id, resources_1.GenerateTopologyResponse.multiHash);
|
|
19
|
+
assert_1.default.equal(explainTxData.type, sdk_core_1.TransactionType.WalletInitialization);
|
|
20
|
+
});
|
|
21
|
+
it('should explain raw transfer acceptance transaction', function () {
|
|
22
|
+
const builder = factory.from(resources_1.TransferAcceptRawTransaction);
|
|
23
|
+
const txn = builder.transaction;
|
|
24
|
+
const explainTxData = txn.explainTransaction();
|
|
25
|
+
(0, assert_1.default)(explainTxData);
|
|
26
|
+
(0, assert_1.default)(explainTxData.id);
|
|
27
|
+
assert_1.default.equal(explainTxData.type, sdk_core_1.TransactionType.TransferAccept);
|
|
28
|
+
assert_1.default.equal(explainTxData.inputAmount, '5.0000000000');
|
|
29
|
+
});
|
|
30
|
+
it('should explain raw transfer rejection transaction', function () {
|
|
31
|
+
const builder = factory.from(resources_1.TransferRejectRawTransaction);
|
|
32
|
+
const txn = builder.transaction;
|
|
33
|
+
const explainTxData = txn.explainTransaction();
|
|
34
|
+
(0, assert_1.default)(explainTxData);
|
|
35
|
+
assert_1.default.equal(explainTxData.type, sdk_core_1.TransactionType.TransferReject);
|
|
36
|
+
assert_1.default.equal(explainTxData.inputAmount, '5.0000000000');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmludGVncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC9pbnRlZ3JhdGlvbi9jYW50b24uaW50ZWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsbURBQXVEO0FBRXZELHNDQUFvRDtBQUNwRCw0Q0FLc0I7QUFFdEIsUUFBUSxDQUFDLDBCQUEwQixFQUFFO0lBQ25DLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRTtRQUNsQyxNQUFNLE9BQU8sR0FBRyxJQUFBLGdDQUF1QixFQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRTtZQUMvQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLG9DQUF3QixDQUFDLENBQUM7WUFDdkQsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxJQUFBLGdCQUFNLEVBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxvQ0FBd0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNuRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxvREFBb0QsRUFBRTtZQUN2RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUE0QixDQUFDLENBQUM7WUFDM0QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxJQUFBLGdCQUFNLEVBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEIsSUFBQSxnQkFBTSxFQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLDBCQUFlLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDakUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxtREFBbUQsRUFBRTtZQUN0RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUE0QixDQUFDLENBQUM7WUFDM0QsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvQyxJQUFBLGdCQUFNLEVBQUMsYUFBYSxDQUFDLENBQUM7WUFDdEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSwwQkFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ2pFLGdCQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IGdldENhbnRvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vaGVscGVyJztcbmltcG9ydCB7XG4gIEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZSxcbiAgVHJhbnNmZXJBY2NlcHRSYXdUcmFuc2FjdGlvbixcbiAgVHJhbnNmZXJSZWplY3RSYXdUcmFuc2FjdGlvbixcbiAgV2FsbGV0SW5pdFJhd1RyYW5zYWN0aW9uLFxufSBmcm9tICcuLi9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnQ2FudG9uIGludGVncmF0aW9uIHRlc3RzJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnRXhwbGFpbiByYXcgdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZmFjdG9yeSA9IGdldENhbnRvbkJ1aWxkZXJGYWN0b3J5KCd0Y2FudG9uJyk7XG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIHJhdyB3YWxsZXQgaW5pdCB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20oV2FsbGV0SW5pdFJhd1RyYW5zYWN0aW9uKTtcbiAgICAgIGNvbnN0IHR4biA9IGJ1aWxkZXIudHJhbnNhY3Rpb247XG4gICAgICBjb25zdCBleHBsYWluVHhEYXRhID0gdHhuLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgYXNzZXJ0KGV4cGxhaW5UeERhdGEpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGV4cGxhaW5UeERhdGEuaWQsIEdlbmVyYXRlVG9wb2xvZ3lSZXNwb25zZS5tdWx0aUhhc2gpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGV4cGxhaW5UeERhdGEudHlwZSwgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXhwbGFpbiByYXcgdHJhbnNmZXIgYWNjZXB0YW5jZSB0cmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmZyb20oVHJhbnNmZXJBY2NlcHRSYXdUcmFuc2FjdGlvbik7XG4gICAgICBjb25zdCB0eG4gPSBidWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgZXhwbGFpblR4RGF0YSA9IHR4bi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICAgIGFzc2VydChleHBsYWluVHhEYXRhKTtcbiAgICAgIGFzc2VydChleHBsYWluVHhEYXRhLmlkKTtcbiAgICAgIGFzc2VydC5lcXVhbChleHBsYWluVHhEYXRhLnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlckFjY2VwdCk7XG4gICAgICBhc3NlcnQuZXF1YWwoZXhwbGFpblR4RGF0YS5pbnB1dEFtb3VudCwgJzUuMDAwMDAwMDAwMCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBleHBsYWluIHJhdyB0cmFuc2ZlciByZWplY3Rpb24gdHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKFRyYW5zZmVyUmVqZWN0UmF3VHJhbnNhY3Rpb24pO1xuICAgICAgY29uc3QgdHhuID0gYnVpbGRlci50cmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IGV4cGxhaW5UeERhdGEgPSB0eG4uZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBhc3NlcnQoZXhwbGFpblR4RGF0YSk7XG4gICAgICBhc3NlcnQuZXF1YWwoZXhwbGFpblR4RGF0YS50eXBlLCBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJSZWplY3QpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGV4cGxhaW5UeERhdGEuaW5wdXRBbW91bnQsICc1LjAwMDAwMDAwMDAnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|