@bitgo-beta/sdk-coin-canton 1.0.1-beta.6 → 1.0.1-beta.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/resources/hash/hash.d.ts +5 -0
  2. package/dist/resources/hash/hash.js +298 -0
  3. package/dist/resources/proto/damlTransaction.js +100 -0
  4. package/dist/resources/proto/damlTransactionNode.js +71 -0
  5. package/dist/resources/proto/damlTransactionNodeSeed.js +56 -0
  6. package/dist/resources/proto/metadata/metadataGlobalKeyMappingEntry.js +53 -0
  7. package/dist/resources/proto/metadata/metadataInputContract.js +80 -0
  8. package/dist/resources/proto/metadata/metadataSubmitterInfo.js +62 -0
  9. package/dist/resources/proto/metadata.js +189 -0
  10. package/dist/resources/proto/node/empty.js +36 -0
  11. package/dist/resources/proto/node/globalKey.js +81 -0
  12. package/dist/resources/proto/node/identifier.js +73 -0
  13. package/dist/resources/proto/node/node.js +664 -0
  14. package/dist/resources/proto/node/timestamp.js +145 -0
  15. package/dist/resources/proto/node/value.js +838 -0
  16. package/dist/resources/proto/preparedTransaction.d.ts +8 -0
  17. package/dist/resources/proto/preparedTransaction.js +66 -0
  18. package/dist/src/canton.d.ts +39 -0
  19. package/dist/src/canton.d.ts.map +1 -0
  20. package/dist/src/canton.js +119 -0
  21. package/dist/src/index.d.ts +5 -0
  22. package/dist/src/index.d.ts.map +1 -0
  23. package/dist/src/index.js +21 -0
  24. package/dist/src/lib/constant.d.ts +14 -0
  25. package/dist/src/lib/constant.d.ts.map +1 -0
  26. package/dist/src/lib/constant.js +17 -0
  27. package/dist/src/lib/iface.d.ts +77 -0
  28. package/dist/src/lib/iface.d.ts.map +1 -0
  29. package/dist/src/lib/iface.js +3 -0
  30. package/dist/src/lib/index.d.ts +12 -0
  31. package/dist/src/lib/index.d.ts.map +1 -0
  32. package/dist/src/lib/index.js +57 -0
  33. package/dist/src/lib/keyPair.d.ts +18 -0
  34. package/dist/src/lib/keyPair.d.ts.map +1 -0
  35. package/dist/src/lib/keyPair.js +44 -0
  36. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +49 -0
  37. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -0
  38. package/dist/src/lib/oneStepPreApprovalBuilder.js +87 -0
  39. package/dist/src/lib/resourcesInterface.d.ts +214 -0
  40. package/dist/src/lib/resourcesInterface.d.ts.map +1 -0
  41. package/dist/src/lib/resourcesInterface.js +3 -0
  42. package/dist/src/lib/transaction/transaction.d.ts +18 -0
  43. package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
  44. package/dist/src/lib/transaction/transaction.js +79 -0
  45. package/dist/src/lib/transactionBuilder.d.ts +36 -0
  46. package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
  47. package/dist/src/lib/transactionBuilder.js +86 -0
  48. package/dist/src/lib/transactionBuilderFactory.d.ts +21 -0
  49. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  50. package/dist/src/lib/transactionBuilderFactory.js +57 -0
  51. package/dist/src/lib/transferAcceptanceBuilder.d.ts +57 -0
  52. package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/transferAcceptanceBuilder.js +102 -0
  54. package/dist/src/lib/transferBuilder.d.ts +10 -0
  55. package/dist/src/lib/transferBuilder.d.ts.map +1 -0
  56. package/dist/src/lib/transferBuilder.js +18 -0
  57. package/dist/src/lib/utils.d.ts +113 -0
  58. package/dist/src/lib/utils.d.ts.map +1 -0
  59. package/dist/src/lib/utils.js +257 -0
  60. package/dist/src/lib/walletInitBuilder.d.ts +101 -0
  61. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -0
  62. package/dist/src/lib/walletInitBuilder.js +232 -0
  63. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +16 -0
  64. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -0
  65. package/dist/src/lib/walletInitialization/walletInitTransaction.js +87 -0
  66. package/dist/src/register.d.ts +3 -0
  67. package/dist/src/register.d.ts.map +1 -0
  68. package/dist/src/register.js +11 -0
  69. package/dist/src/tcanton.d.ts +17 -0
  70. package/dist/src/tcanton.d.ts.map +1 -0
  71. package/dist/src/tcanton.js +30 -0
  72. package/dist/test/integration/index.d.ts +1 -0
  73. package/dist/test/integration/index.d.ts.map +1 -0
  74. package/dist/test/integration/index.js +1 -0
  75. package/dist/test/resources.d.ts +58 -0
  76. package/dist/test/resources.d.ts.map +1 -0
  77. package/dist/test/resources.js +73 -0
  78. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts +2 -0
  79. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.d.ts.map +1 -0
  80. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +67 -0
  81. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts +2 -0
  82. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts.map +1 -0
  83. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +70 -0
  84. package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts +2 -0
  85. package/dist/test/unit/builder/walletInit/walletInitBuilder.d.ts.map +1 -0
  86. package/dist/test/unit/builder/walletInit/walletInitBuilder.js +65 -0
  87. package/dist/test/unit/index.d.ts +2 -0
  88. package/dist/test/unit/index.d.ts.map +1 -0
  89. package/dist/test/unit/index.js +16 -0
  90. package/dist/test/unit/keyPair.d.ts +2 -0
  91. package/dist/test/unit/keyPair.d.ts.map +1 -0
  92. package/dist/test/unit/keyPair.js +72 -0
  93. package/dist/test/unit/utils.d.ts +2 -0
  94. package/dist/test/unit/utils.d.ts.map +1 -0
  95. package/dist/test/unit/utils.js +62 -0
  96. package/dist/tsconfig.tsbuildinfo +1 -0
  97. package/package.json +32 -10
  98. package/.eslintignore +0 -5
  99. package/.mocharc.yml +0 -8
@@ -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,16 @@
1
+ import { BaseKey, BaseTransaction } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { PreparedParty, 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
+ }
16
+ //# 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,EAEb,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;CAexC"}
@@ -0,0 +1,87 @@
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
+ }
86
+ exports.WalletInitTransaction = WalletInitTransaction;
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0SW5pdFRyYW5zYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi93YWxsZXRJbml0aWFsaXphdGlvbi93YWxsZXRJbml0VHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTBHO0FBUzFHLDBDQUF5RTtBQUV6RSxNQUFhLHFCQUFzQixTQUFRLDBCQUFlO0lBR3hELFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLFdBQTBCO1FBQzFDLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLFNBQVMsQ0FBQztRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsb0JBQW9CLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFNBQWlCO1FBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUF5QixFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUMvQixNQUFNLGtCQUFrQixHQUF1QjtvQkFDN0MsTUFBTSxFQUFFLDJCQUFnQjtvQkFDeEIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQjtvQkFDbEQsb0JBQW9CLEVBQUUsbUNBQXdCO2lCQUMvQyxDQUFDO2dCQUNGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE1BQU0sdUJBQXVCLEdBQTRCO1lBQ3ZELGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNsQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMzRSxNQUFNLHFCQUFxQixHQUEwQjtvQkFDbkQsV0FBVyxFQUFFLEdBQUc7aUJBQ2pCLENBQUM7Z0JBQ0YsT0FBTyxxQkFBcUIsQ0FBQztZQUMvQixDQUFDLENBQUM7WUFDRixtQkFBbUIsRUFBRSxtQkFBbUI7U0FDekMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBcUI7WUFDL0IsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUF3QjtZQUNuQyxhQUFhLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDbkMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksa0NBQXVCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUE0QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ25HLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUM1QyxJQUFJLENBQUMsS0FBSyxHQUFHLDBCQUFlLENBQUMsb0JBQW9CLENBQUM7WUFDbEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztZQUMzQyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxrQkFBc0MsRUFBRSxFQUFFO29CQUN6RSxJQUFJLENBQUMsVUFBVSxHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksa0NBQXVCLENBQUMsc0NBQXNDLENBQUMsQ0FBQztRQUM1RSxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBeEZELHNEQXdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIE11bHRpSGFzaFNpZ25hdHVyZSxcbiAgT25ib2FyZGluZ1RyYW5zYWN0aW9uLFxuICBQcmVwYXJlZFBhcnR5LFxuICBXYWxsZXRJbml0QnJvYWRjYXN0RGF0YSxcbiAgV2FsbGV0SW5pdFR4RGF0YSxcbn0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHsgU0lHTkFUVVJFX0FMR09SSVRITV9TUEVDLCBTSUdOQVRVUkVfRk9STUFUIH0gZnJvbSAnLi4vY29uc3RhbnQnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0SW5pdFRyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJpdmF0ZSBfcHJlcGFyZWRQYXJ0eTogUHJlcGFyZWRQYXJ0eTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0IHByZXBhcmVkUGFydHkoKTogUHJlcGFyZWRQYXJ0eSB7XG4gICAgcmV0dXJuIHRoaXMuX3ByZXBhcmVkUGFydHk7XG4gIH1cblxuICBzZXQgcHJlcGFyZWRQYXJ0eSh0cmFuc2FjdGlvbjogUHJlcGFyZWRQYXJ0eSkge1xuICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSB0cmFuc2FjdGlvbjtcbiAgICB0aGlzLl9pZCA9IHRyYW5zYWN0aW9uLm11bHRpSGFzaDtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICB9XG5cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzZXQgc2lnbmF0dXJlcyhzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCBtdWx0aUhhc2hTaWduYXR1cmVzOiBNdWx0aUhhc2hTaWduYXR1cmVbXSA9IFtdO1xuICAgIGlmICh0aGlzLnNpZ25hdHVyZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNpZ25hdHVyZS5tYXAoKHNpZ25hdHVyZSkgPT4ge1xuICAgICAgICBjb25zdCBtdWx0aUhhc2hTaWduYXR1cmU6IE11bHRpSGFzaFNpZ25hdHVyZSA9IHtcbiAgICAgICAgICBmb3JtYXQ6IFNJR05BVFVSRV9GT1JNQVQsXG4gICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsXG4gICAgICAgICAgc2lnbmVkQnk6IHRoaXMuX3ByZXBhcmVkUGFydHkucHVibGljS2V5RmluZ2VycHJpbnQsXG4gICAgICAgICAgc2lnbmluZ0FsZ29yaXRobVNwZWM6IFNJR05BVFVSRV9BTEdPUklUSE1fU1BFQyxcbiAgICAgICAgfTtcbiAgICAgICAgbXVsdGlIYXNoU2lnbmF0dXJlcy5wdXNoKG11bHRpSGFzaFNpZ25hdHVyZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3Qgd2FsbGV0SW5pdEJyb2FkY2FzdERhdGE6IFdhbGxldEluaXRCcm9hZGNhc3REYXRhID0ge1xuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICAgIG9uYm9hcmRpbmdUcmFuc2FjdGlvbnM6IHRoaXMuX3ByZXBhcmVkUGFydHkudG9wb2xvZ3lUcmFuc2FjdGlvbnMubWFwKCh0eG4pID0+IHtcbiAgICAgICAgY29uc3Qgb25ib2FyZGluZ1RyYW5zYWN0aW9uOiBPbmJvYXJkaW5nVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgdHJhbnNhY3Rpb246IHR4bixcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIG9uYm9hcmRpbmdUcmFuc2FjdGlvbjtcbiAgICAgIH0pLFxuICAgICAgbXVsdGlIYXNoU2lnbmF0dXJlczogbXVsdGlIYXNoU2lnbmF0dXJlcyxcbiAgICB9O1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeSh3YWxsZXRJbml0QnJvYWRjYXN0RGF0YSkpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgfVxuXG4gIHRvSnNvbigpOiBXYWxsZXRJbml0VHhEYXRhIHtcbiAgICBpZiAoIXRoaXMuX3ByZXBhcmVkUGFydHkpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignRW1wdHkgdHJhbnNhY3Rpb24gZGF0YScpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQ6IFdhbGxldEluaXRUeERhdGEgPSB7XG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIHR5cGU6IHRoaXMuX3R5cGUgYXMgVHJhbnNhY3Rpb25UeXBlLFxuICAgICAgcHJlcGFyZWRQYXJ0eTogdGhpcy5fcHJlcGFyZWRQYXJ0eSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBnZXQgc2lnbmFibGVQYXlsb2FkKCk6IEJ1ZmZlciB7XG4gICAgaWYgKCF0aGlzLl9wcmVwYXJlZFBhcnR5KSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaXMuX3ByZXBhcmVkUGFydHkubXVsdGlIYXNoLCAnYmFzZTY0Jyk7XG4gIH1cblxuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHg6IHN0cmluZyk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZWNvZGVkOiBXYWxsZXRJbml0QnJvYWRjYXN0RGF0YSA9IEpTT04ucGFyc2UoQnVmZmVyLmZyb20ocmF3VHgsICdiYXNlNjQnKS50b1N0cmluZygndXRmOCcpKTtcbiAgICAgIHRoaXMuX3ByZXBhcmVkUGFydHkgPSBkZWNvZGVkLnByZXBhcmVkUGFydHk7XG4gICAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uO1xuICAgICAgdGhpcy5faWQgPSBkZWNvZGVkLnByZXBhcmVkUGFydHkubXVsdGlIYXNoO1xuICAgICAgaWYgKGRlY29kZWQubXVsdGlIYXNoU2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRlY29kZWQubXVsdGlIYXNoU2lnbmF0dXJlcy5tYXAoKG11bHRpSGFzaFNpZ25hdHVyZTogTXVsdGlIYXNoU2lnbmF0dXJlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gbXVsdGlIYXNoU2lnbmF0dXJlLnNpZ25hdHVyZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdVbmFibGUgdG8gcGFyc2UgcmF3IHRyYW5zYWN0aW9uIGRhdGEnKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { BitGoBase } from '@bitgo-beta/sdk-core';
2
+ export declare const register: (sdk: BitGoBase) => void;
3
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAIjD,eAAO,MAAM,QAAQ,QAAS,SAAS,KAAG,IAGzC,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.register = void 0;
4
+ const canton_1 = require("./canton");
5
+ const tcanton_1 = require("./tcanton");
6
+ const register = (sdk) => {
7
+ sdk.register('canton', canton_1.Canton.createInstance);
8
+ sdk.register('tcanton', tcanton_1.Tcanton.createInstance);
9
+ };
10
+ exports.register = register;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVnaXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscUNBQWtDO0FBQ2xDLHVDQUFvQztBQUU3QixNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWMsRUFBUSxFQUFFO0lBQy9DLEdBQUcsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGVBQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM5QyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxpQkFBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ2xELENBQUMsQ0FBQztBQUhXLFFBQUEsUUFBUSxZQUduQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENhbnRvbiB9IGZyb20gJy4vY2FudG9uJztcbmltcG9ydCB7IFRjYW50b24gfSBmcm9tICcuL3RjYW50b24nO1xuXG5leHBvcnQgY29uc3QgcmVnaXN0ZXIgPSAoc2RrOiBCaXRHb0Jhc2UpOiB2b2lkID0+IHtcbiAgc2RrLnJlZ2lzdGVyKCdjYW50b24nLCBDYW50b24uY3JlYXRlSW5zdGFuY2UpO1xuICBzZGsucmVnaXN0ZXIoJ3RjYW50b24nLCBUY2FudG9uLmNyZWF0ZUluc3RhbmNlKTtcbn07XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { BaseCoin, BitGoBase } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
3
+ import { Canton } from './canton';
4
+ export declare class Tcanton extends Canton {
5
+ protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
6
+ protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
7
+ static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
8
+ /**
9
+ * Identifier for the blockchain which supports this coin
10
+ */
11
+ getChain(): string;
12
+ /**
13
+ * Complete human-readable name of this coin
14
+ */
15
+ getFullName(): string;
16
+ }
17
+ //# sourceMappingURL=tcanton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tcanton.d.ts","sourceRoot":"","sources":["../../src/tcanton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,OAAQ,SAAQ,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F;;OAEG;IACI,QAAQ,IAAI,MAAM;IAIzB;;OAEG;IACI,WAAW,IAAI,MAAM;CAG7B"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Tcanton = void 0;
4
+ const canton_1 = require("./canton");
5
+ class Tcanton extends canton_1.Canton {
6
+ constructor(bitgo, staticsCoin) {
7
+ super(bitgo, staticsCoin);
8
+ if (!staticsCoin) {
9
+ throw new Error('missing required constructor parameter staticsCoin');
10
+ }
11
+ this._staticsCoin = staticsCoin;
12
+ }
13
+ static createInstance(bitgo, staticsCoin) {
14
+ return new Tcanton(bitgo, staticsCoin);
15
+ }
16
+ /**
17
+ * Identifier for the blockchain which supports this coin
18
+ */
19
+ getChain() {
20
+ return 'tcanton';
21
+ }
22
+ /**
23
+ * Complete human-readable name of this coin
24
+ */
25
+ getFullName() {
26
+ return 'Testnet Canton';
27
+ }
28
+ }
29
+ exports.Tcanton = Tcanton;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGNhbnRvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90Y2FudG9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHFDQUFrQztBQUVsQyxNQUFhLE9BQVEsU0FBUSxlQUFNO0lBRWpDLFlBQXNCLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUUxQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVE7UUFDYixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxXQUFXO1FBQ2hCLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBN0JELDBCQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luLCBCaXRHb0Jhc2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IENhbnRvbiB9IGZyb20gJy4vY2FudG9uJztcblxuZXhwb3J0IGNsYXNzIFRjYW50b24gZXh0ZW5kcyBDYW50b24ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgc3RhdGljc0NvaW4/OiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+KSB7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IFRjYW50b24oYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgYmxvY2tjaGFpbiB3aGljaCBzdXBwb3J0cyB0aGlzIGNvaW5cbiAgICovXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAndGNhbnRvbic7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGxldGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGlzIGNvaW5cbiAgICovXG4gIHB1YmxpYyBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnVGVzdG5ldCBDYW50b24nO1xuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../test/integration/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L2ludGVncmF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIiXX0=