@bitgo-beta/sdk-coin-atom 1.1.2-alpha.1 → 1.1.2-alpha.3
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/CHANGELOG.md +36 -0
- package/dist/src/atom.d.ts.map +1 -1
- package/dist/src/atom.js +6 -2
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/lib/constants.d.ts +5 -0
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +8 -2
- package/dist/src/lib/iface.d.ts +31 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +3 -0
- 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 +25 -5
- package/dist/src/lib/keyPair.js +2 -2
- package/dist/src/lib/transaction.d.ts +46 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +161 -0
- package/dist/src/lib/transactionBuilder.d.ts +76 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +211 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +29 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +59 -0
- package/dist/src/lib/transferBuilder.d.ts +8 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +15 -0
- package/dist/src/lib/utils.d.ts +92 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +213 -0
- package/package.json +12 -8
|
@@ -0,0 +1,213 @@
|
|
|
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.Utils = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const encoding_1 = require("@cosmjs/encoding");
|
|
10
|
+
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
11
|
+
const stargate_1 = require("@cosmjs/stargate");
|
|
12
|
+
const amino_1 = require("@cosmjs/amino");
|
|
13
|
+
const tx_1 = require("cosmjs-types/cosmos/tx/v1beta1/tx");
|
|
14
|
+
class Utils {
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
isValidBlockId(hash) {
|
|
17
|
+
return this.validateBlake2b(hash);
|
|
18
|
+
}
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
isValidPrivateKey(key) {
|
|
21
|
+
throw new Error('Method not implemented.');
|
|
22
|
+
}
|
|
23
|
+
/** @inheritdoc */
|
|
24
|
+
isValidPublicKey(key) {
|
|
25
|
+
throw new Error('Method not implemented.');
|
|
26
|
+
}
|
|
27
|
+
/** @inheritdoc */
|
|
28
|
+
isValidSignature(signature) {
|
|
29
|
+
throw new Error('Method not implemented.');
|
|
30
|
+
}
|
|
31
|
+
/** @inheritdoc */
|
|
32
|
+
isValidTransactionId(txId) {
|
|
33
|
+
return this.validateBlake2b(txId);
|
|
34
|
+
}
|
|
35
|
+
validateBlake2b(hash) {
|
|
36
|
+
if ((hash === null || hash === void 0 ? void 0 : hash.length) !== 64) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
return hash.match(/^[a-zA-Z0-9]+$/) !== null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Checks if raw transaction can be deserialized
|
|
43
|
+
*
|
|
44
|
+
* @param {string} rawTransaction - transaction in base64 string format
|
|
45
|
+
* @returns {boolean} - the validation result
|
|
46
|
+
*/
|
|
47
|
+
isValidRawTransaction(rawTransaction) {
|
|
48
|
+
throw new Error('Method not implemented.');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Check the raw transaction has a valid format in the blockchain context, throw otherwise.
|
|
52
|
+
*
|
|
53
|
+
* @param {string} rawTransaction - Transaction in base64 string format
|
|
54
|
+
*/
|
|
55
|
+
validateRawTransaction(rawTransaction) {
|
|
56
|
+
if (!rawTransaction) {
|
|
57
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction: Undefined');
|
|
58
|
+
}
|
|
59
|
+
if (!this.isValidRawTransaction(rawTransaction)) {
|
|
60
|
+
throw new sdk_core_1.ParseTransactionError('Invalid raw transaction');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
isValidAddress(address) {
|
|
64
|
+
const allowed_chars = 'qpzry9x8gf2tvdw0s3jn54khce6mua7l';
|
|
65
|
+
const atomRegex = '^(cosmos)1([' + allowed_chars + ']+)$';
|
|
66
|
+
const re = new RegExp(atomRegex);
|
|
67
|
+
return re.test(address);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Returns whether or not the string is a valid amount
|
|
71
|
+
*
|
|
72
|
+
* @param {number[]} amounts - the amounts to validate
|
|
73
|
+
* @returns {boolean} - the validation result
|
|
74
|
+
*/
|
|
75
|
+
isValidAmounts(amounts) {
|
|
76
|
+
for (const amount of amounts) {
|
|
77
|
+
if (!this.isValidAmount(amount)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
isValidAmount(amount) {
|
|
84
|
+
const bigNumberAmount = new bignumber_js_1.default(amount);
|
|
85
|
+
if (!bigNumberAmount.isInteger() || bigNumberAmount.isLessThanOrEqualTo(0)) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Decodes raw tx data into messages, signing info, and fee data
|
|
92
|
+
* @param txHex - raw base64 tx
|
|
93
|
+
*/
|
|
94
|
+
getDecodedTxFromRawBase64(txRaw) {
|
|
95
|
+
return proto_signing_1.decodeTxRaw(encoding_1.fromBase64(txRaw));
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Returns the array of messages in the body of the decoded transaction
|
|
99
|
+
* @param decodedTx
|
|
100
|
+
*/
|
|
101
|
+
getEncodedMessagesFromDecodedTx(decodedTx) {
|
|
102
|
+
return decodedTx.body.messages;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Arranges a decoded message into our MessageData value interface
|
|
106
|
+
* @param decodedMessage
|
|
107
|
+
* @private
|
|
108
|
+
*/
|
|
109
|
+
getMessageValueDataFromDecodedMessage(decodedMessage) {
|
|
110
|
+
return {
|
|
111
|
+
fromAddress: decodedMessage.fromAddress,
|
|
112
|
+
toAddress: decodedMessage.toAddress,
|
|
113
|
+
amount: decodedMessage.amount,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Returns an array of MessageData[] from an encoded messages array
|
|
118
|
+
* @param encodedMessages
|
|
119
|
+
* @private
|
|
120
|
+
*/
|
|
121
|
+
getMessageDataFromEncodedMessages(encodedMessages) {
|
|
122
|
+
const registry = new proto_signing_1.Registry(stargate_1.defaultRegistryTypes);
|
|
123
|
+
const messageData = [];
|
|
124
|
+
for (const message of encodedMessages) {
|
|
125
|
+
messageData.push({
|
|
126
|
+
value: this.getMessageValueDataFromDecodedMessage(registry.decode(message)),
|
|
127
|
+
typeUrl: message.typeUrl,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return messageData;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Pulls the sequence number from a DecodedTxRaw AuthInfo property
|
|
134
|
+
* @param decodedTx
|
|
135
|
+
* @private
|
|
136
|
+
*/
|
|
137
|
+
getSequenceFromDecodedTx(decodedTx) {
|
|
138
|
+
return Number(decodedTx.authInfo.signerInfos[0].sequence);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Pulls the typeUrl from the encoded message of a DecodedTxRaw
|
|
142
|
+
* @param decodedTx
|
|
143
|
+
*/
|
|
144
|
+
getTypeUrlFromDecodedTx(decodedTx) {
|
|
145
|
+
const encodedMessage = this.getEncodedMessagesFromDecodedTx(decodedTx)[0];
|
|
146
|
+
return encodedMessage.typeUrl;
|
|
147
|
+
}
|
|
148
|
+
getGasBudgetFromDecodedTx(decodedTx) {
|
|
149
|
+
var _a, _b;
|
|
150
|
+
return {
|
|
151
|
+
amount: (_a = decodedTx.authInfo.fee) === null || _a === void 0 ? void 0 : _a.amount,
|
|
152
|
+
gas: Number((_b = decodedTx.authInfo.fee) === null || _b === void 0 ? void 0 : _b.gasLimit),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
157
|
+
* @param decodedTx
|
|
158
|
+
*/
|
|
159
|
+
getMessageDataFromDecodedTx(decodedTx) {
|
|
160
|
+
const encodedMessages = this.getEncodedMessagesFromDecodedTx(decodedTx);
|
|
161
|
+
return this.getMessageDataFromEncodedMessages(encodedMessages);
|
|
162
|
+
}
|
|
163
|
+
createSignDocFromAtomTransaction(pubkey, atomTransaction) {
|
|
164
|
+
const register = new proto_signing_1.Registry(stargate_1.defaultRegistryTypes);
|
|
165
|
+
const txBodyValue = {
|
|
166
|
+
messages: atomTransaction.sendMessages,
|
|
167
|
+
};
|
|
168
|
+
const txBodyBytes = register.encodeTxBody(txBodyValue);
|
|
169
|
+
const sequence = atomTransaction.sequence;
|
|
170
|
+
const authInfoBytes = proto_signing_1.makeAuthInfoBytes([{ pubkey, sequence }], atomTransaction.gasBudget.amount, atomTransaction.gasBudget.gas, undefined, undefined, undefined);
|
|
171
|
+
// Ignoring linting because makeSignDoc expects string/number inputs but are null for our purposes
|
|
172
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
173
|
+
// @ts-ignore
|
|
174
|
+
return proto_signing_1.makeSignDoc(txBodyBytes, authInfoBytes, null, null);
|
|
175
|
+
}
|
|
176
|
+
createSignedTxRaw(atomSignature, signDoc) {
|
|
177
|
+
const stdSignature = amino_1.encodeSecp256k1Signature(encoding_1.fromHex(atomSignature.publicKey.pub), atomSignature.signature);
|
|
178
|
+
return tx_1.TxRaw.fromPartial({
|
|
179
|
+
bodyBytes: signDoc.bodyBytes,
|
|
180
|
+
authInfoBytes: signDoc.authInfoBytes,
|
|
181
|
+
signatures: [encoding_1.fromBase64(stdSignature.signature)],
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
createBase64SignedTxBytesFromSignedTxRaw(signedTxRaw) {
|
|
185
|
+
const signedTxBytes = tx_1.TxRaw.encode(signedTxRaw).finish();
|
|
186
|
+
return encoding_1.toBase64(signedTxBytes);
|
|
187
|
+
}
|
|
188
|
+
isSignedRawTx(rawTransaction) {
|
|
189
|
+
const decodedTx = this.getDecodedTxFromRawBase64(rawTransaction);
|
|
190
|
+
if (decodedTx.authInfo.signerInfos.length > 0) {
|
|
191
|
+
return true;
|
|
192
|
+
}
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
getSignerInfoFromRawSignedTx(rawTransaction) {
|
|
196
|
+
var _a;
|
|
197
|
+
if (!this.isSignedRawTx(rawTransaction)) {
|
|
198
|
+
throw new Error('getSignerInfoFromRawTx failed, raw tx is not signed');
|
|
199
|
+
}
|
|
200
|
+
const decodedTx = this.getDecodedTxFromRawBase64(rawTransaction);
|
|
201
|
+
const aminoPubKey = decodedTx.authInfo.signerInfos[0].publicKey;
|
|
202
|
+
const decodedPubKeyHex = encoding_1.toHex(encoding_1.fromBase64((_a = proto_signing_1.decodePubkey(aminoPubKey)) === null || _a === void 0 ? void 0 : _a.value));
|
|
203
|
+
const pubKey = {
|
|
204
|
+
pub: decodedPubKeyHex,
|
|
205
|
+
};
|
|
206
|
+
const signature = Buffer.from(decodedTx.signatures[0]);
|
|
207
|
+
return { pubKey, signature };
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.Utils = Utils;
|
|
211
|
+
const utils = new Utils();
|
|
212
|
+
exports.default = utils;
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFtRjtBQUNuRixnRUFBcUM7QUFDckMsK0NBQXdFO0FBQ3hFLHlEQVErQjtBQUUvQiwrQ0FBOEQ7QUFDOUQseUNBQXlEO0FBQ3pELDBEQUFtRTtBQUduRSxNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVk7UUFDMUIsSUFBSSxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLE1BQUssRUFBRSxFQUFFO1lBQ3ZCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDL0MsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUMsY0FBc0I7UUFDMUMsTUFB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Q0FBQyxTQUFnQixDQUFDO1FBQ3ZFLE1BQU0sZ0JBQWdCLEdBQUcsZ0JBQUssQ0FBQyxxQkFBVSxDQUFDLE1BQUEsNEJBQVksQ0FBQyxXQUFXLENBQUMsMENBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUM3RSxNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsRUFBRSxnQkFBZ0I7U0FDdEIsQ0FBQztRQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBOU5ELHNCQThOQztBQUVELE1BQU0sS0FBSyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7QUFFMUIsa0JBQWUsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZVV0aWxzLCBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsIFNpZ25hdHVyZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IGZyb21CYXNlNjQsIGZyb21IZXgsIHRvQmFzZTY0LCB0b0hleCB9IGZyb20gJ0Bjb3NtanMvZW5jb2RpbmcnO1xuaW1wb3J0IHtcbiAgRGVjb2RlZFR4UmF3LFxuICBkZWNvZGVQdWJrZXksXG4gIGRlY29kZVR4UmF3LFxuICBFbmNvZGVPYmplY3QsXG4gIG1ha2VBdXRoSW5mb0J5dGVzLFxuICBtYWtlU2lnbkRvYyxcbiAgUmVnaXN0cnksXG59IGZyb20gJ0Bjb3NtanMvcHJvdG8tc2lnbmluZyc7XG5pbXBvcnQgeyBBdG9tVHJhbnNhY3Rpb24sIEdhc0ZlZUxpbWl0RGF0YSwgTWVzc2FnZURhdGEgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IENvaW4sIGRlZmF1bHRSZWdpc3RyeVR5cGVzIH0gZnJvbSAnQGNvc21qcy9zdGFyZ2F0ZSc7XG5pbXBvcnQgeyBlbmNvZGVTZWNwMjU2azFTaWduYXR1cmUgfSBmcm9tICdAY29zbWpzL2FtaW5vJztcbmltcG9ydCB7IFR4UmF3LCBTaWduRG9jIH0gZnJvbSAnY29zbWpzLXR5cGVzL2Nvc21vcy90eC92MWJldGExL3R4JztcbmltcG9ydCB7IEFueSB9IGZyb20gJ2Nvc21qcy10eXBlcy9nb29nbGUvcHJvdG9idWYvYW55JztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRCbG9ja0lkKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlQmxha2UyYihoYXNoKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHVibGljS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFRyYW5zYWN0aW9uSWQodHhJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVCbGFrZTJiKHR4SWQpO1xuICB9XG5cbiAgdmFsaWRhdGVCbGFrZTJiKGhhc2g6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmIChoYXNoPy5sZW5ndGggIT09IDY0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBoYXNoLm1hdGNoKC9eW2EtekEtWjAtOV0rJC8pICE9PSBudWxsO1xuICB9XG4gIC8qKlxuICAgKiBDaGVja3MgaWYgcmF3IHRyYW5zYWN0aW9uIGNhbiBiZSBkZXNlcmlhbGl6ZWRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJhd1RyYW5zYWN0aW9uIC0gdHJhbnNhY3Rpb24gaW4gYmFzZTY0IHN0cmluZyBmb3JtYXRcbiAgICogQHJldHVybnMge2Jvb2xlYW59IC0gdGhlIHZhbGlkYXRpb24gcmVzdWx0XG4gICAqL1xuICBpc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgcmF3IHRyYW5zYWN0aW9uIGhhcyBhIHZhbGlkIGZvcm1hdCBpbiB0aGUgYmxvY2tjaGFpbiBjb250ZXh0LCB0aHJvdyBvdGhlcndpc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByYXdUcmFuc2FjdGlvbiAtIFRyYW5zYWN0aW9uIGluIGJhc2U2NCBzdHJpbmcgIGZvcm1hdFxuICAgKi9cbiAgdmFsaWRhdGVSYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFyYXdUcmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb246IFVuZGVmaW5lZCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBhbGxvd2VkX2NoYXJzID0gJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsJztcbiAgICBjb25zdCBhdG9tUmVnZXggPSAnXihjb3Ntb3MpMShbJyArIGFsbG93ZWRfY2hhcnMgKyAnXSspJCc7XG4gICAgY29uc3QgcmUgPSBuZXcgUmVnRXhwKGF0b21SZWdleCk7XG4gICAgcmV0dXJuIHJlLnRlc3QoYWRkcmVzcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgYW1vdW50XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IGFtb3VudHMgLSB0aGUgYW1vdW50cyB0byB2YWxpZGF0ZVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSB0aGUgdmFsaWRhdGlvbiByZXN1bHRcbiAgICovXG4gIGlzVmFsaWRBbW91bnRzKGFtb3VudHM6IG51bWJlcltdKTogYm9vbGVhbiB7XG4gICAgZm9yIChjb25zdCBhbW91bnQgb2YgYW1vdW50cykge1xuICAgICAgaWYgKCF0aGlzLmlzVmFsaWRBbW91bnQoYW1vdW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNWYWxpZEFtb3VudChhbW91bnQ6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGJpZ051bWJlckFtb3VudCA9IG5ldyBCaWdOdW1iZXIoYW1vdW50KTtcbiAgICBpZiAoIWJpZ051bWJlckFtb3VudC5pc0ludGVnZXIoKSB8fCBiaWdOdW1iZXJBbW91bnQuaXNMZXNzVGhhbk9yRXF1YWxUbygwKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHJhdyB0eCBkYXRhIGludG8gbWVzc2FnZXMsIHNpZ25pbmcgaW5mbywgYW5kIGZlZSBkYXRhXG4gICAqIEBwYXJhbSB0eEhleCAtIHJhdyBiYXNlNjQgdHhcbiAgICovXG4gIGdldERlY29kZWRUeEZyb21SYXdCYXNlNjQodHhSYXc6IHN0cmluZyk6IERlY29kZWRUeFJhdyB7XG4gICAgcmV0dXJuIGRlY29kZVR4UmF3KGZyb21CYXNlNjQodHhSYXcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcnJheSBvZiBtZXNzYWdlcyBpbiB0aGUgYm9keSBvZiB0aGUgZGVjb2RlZCB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gZGVjb2RlZFR4XG4gICAqL1xuICBwcml2YXRlIGdldEVuY29kZWRNZXNzYWdlc0Zyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBFbmNvZGVPYmplY3RbXSB7XG4gICAgcmV0dXJuIGRlY29kZWRUeC5ib2R5Lm1lc3NhZ2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFycmFuZ2VzIGEgZGVjb2RlZCBtZXNzYWdlIGludG8gb3VyIE1lc3NhZ2VEYXRhIHZhbHVlIGludGVyZmFjZVxuICAgKiBAcGFyYW0gZGVjb2RlZE1lc3NhZ2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0TWVzc2FnZVZhbHVlRGF0YUZyb21EZWNvZGVkTWVzc2FnZShkZWNvZGVkTWVzc2FnZTogYW55KTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgZnJvbUFkZHJlc3M6IGRlY29kZWRNZXNzYWdlLmZyb21BZGRyZXNzLFxuICAgICAgdG9BZGRyZXNzOiBkZWNvZGVkTWVzc2FnZS50b0FkZHJlc3MsXG4gICAgICBhbW91bnQ6IGRlY29kZWRNZXNzYWdlLmFtb3VudCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYXJyYXkgb2YgTWVzc2FnZURhdGFbXSBmcm9tIGFuIGVuY29kZWQgbWVzc2FnZXMgYXJyYXlcbiAgICogQHBhcmFtIGVuY29kZWRNZXNzYWdlc1xuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRNZXNzYWdlRGF0YUZyb21FbmNvZGVkTWVzc2FnZXMoZW5jb2RlZE1lc3NhZ2VzOiBFbmNvZGVPYmplY3RbXSk6IE1lc3NhZ2VEYXRhW10ge1xuICAgIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KGRlZmF1bHRSZWdpc3RyeVR5cGVzKTtcbiAgICBjb25zdCBtZXNzYWdlRGF0YTogTWVzc2FnZURhdGFbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBlbmNvZGVkTWVzc2FnZXMpIHtcbiAgICAgIG1lc3NhZ2VEYXRhLnB1c2goe1xuICAgICAgICB2YWx1ZTogdGhpcy5nZXRNZXNzYWdlVmFsdWVEYXRhRnJvbURlY29kZWRNZXNzYWdlKHJlZ2lzdHJ5LmRlY29kZShtZXNzYWdlKSksXG4gICAgICAgIHR5cGVVcmw6IG1lc3NhZ2UudHlwZVVybCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZURhdGE7XG4gIH1cblxuICAvKipcbiAgICogUHVsbHMgdGhlIHNlcXVlbmNlIG51bWJlciBmcm9tIGEgRGVjb2RlZFR4UmF3IEF1dGhJbmZvIHByb3BlcnR5XG4gICAqIEBwYXJhbSBkZWNvZGVkVHhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGdldFNlcXVlbmNlRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IG51bWJlciB7XG4gICAgcmV0dXJuIE51bWJlcihkZWNvZGVkVHguYXV0aEluZm8uc2lnbmVySW5mb3NbMF0uc2VxdWVuY2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1bGxzIHRoZSB0eXBlVXJsIGZyb20gdGhlIGVuY29kZWQgbWVzc2FnZSBvZiBhIERlY29kZWRUeFJhd1xuICAgKiBAcGFyYW0gZGVjb2RlZFR4XG4gICAqL1xuICBnZXRUeXBlVXJsRnJvbURlY29kZWRUeChkZWNvZGVkVHg6IERlY29kZWRUeFJhdyk6IHN0cmluZyB7XG4gICAgY29uc3QgZW5jb2RlZE1lc3NhZ2UgPSB0aGlzLmdldEVuY29kZWRNZXNzYWdlc0Zyb21EZWNvZGVkVHgoZGVjb2RlZFR4KVswXTtcbiAgICByZXR1cm4gZW5jb2RlZE1lc3NhZ2UudHlwZVVybDtcbiAgfVxuXG4gIGdldEdhc0J1ZGdldEZyb21EZWNvZGVkVHgoZGVjb2RlZFR4OiBEZWNvZGVkVHhSYXcpOiBHYXNGZWVMaW1pdERhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBhbW91bnQ6IGRlY29kZWRUeC5hdXRoSW5mby5mZWU/LmFtb3VudCBhcyBDb2luW10sXG4gICAgICBnYXM6IE51bWJlcihkZWNvZGVkVHguYXV0aEluZm8uZmVlPy5nYXNMaW1pdCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhcnJheSBvZiBNZXNzYWdlRGF0YVtdIGZyb20gdGhlIGRlY29kZWQgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGRlY29kZWRUeFxuICAgKi9cbiAgZ2V0TWVzc2FnZURhdGFGcm9tRGVjb2RlZFR4KGRlY29kZWRUeDogRGVjb2RlZFR4UmF3KTogTWVzc2FnZURhdGFbXSB7XG4gICAgY29uc3QgZW5jb2RlZE1lc3NhZ2VzID0gdGhpcy5nZXRFbmNvZGVkTWVzc2FnZXNGcm9tRGVjb2RlZFR4KGRlY29kZWRUeCk7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TWVzc2FnZURhdGFGcm9tRW5jb2RlZE1lc3NhZ2VzKGVuY29kZWRNZXNzYWdlcyk7XG4gIH1cblxuICBjcmVhdGVTaWduRG9jRnJvbUF0b21UcmFuc2FjdGlvbihwdWJrZXk6IGFueSwgYXRvbVRyYW5zYWN0aW9uOiBBdG9tVHJhbnNhY3Rpb24pIHtcbiAgICBjb25zdCByZWdpc3RlciA9IG5ldyBSZWdpc3RyeShkZWZhdWx0UmVnaXN0cnlUeXBlcyk7XG4gICAgY29uc3QgdHhCb2R5VmFsdWUgPSB7XG4gICAgICBtZXNzYWdlczogYXRvbVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlcyBhcyB1bmtub3duIGFzIEFueVtdLFxuICAgIH07XG4gICAgY29uc3QgdHhCb2R5Qnl0ZXMgPSByZWdpc3Rlci5lbmNvZGVUeEJvZHkodHhCb2R5VmFsdWUpO1xuICAgIGNvbnN0IHNlcXVlbmNlID0gYXRvbVRyYW5zYWN0aW9uLnNlcXVlbmNlO1xuICAgIGNvbnN0IGF1dGhJbmZvQnl0ZXMgPSBtYWtlQXV0aEluZm9CeXRlcyhcbiAgICAgIFt7IHB1YmtleSwgc2VxdWVuY2UgfV0sXG4gICAgICBhdG9tVHJhbnNhY3Rpb24uZ2FzQnVkZ2V0LmFtb3VudCxcbiAgICAgIGF0b21UcmFuc2FjdGlvbi5nYXNCdWRnZXQuZ2FzLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkXG4gICAgKTtcbiAgICAvLyBJZ25vcmluZyBsaW50aW5nIGJlY2F1c2UgbWFrZVNpZ25Eb2MgZXhwZWN0cyBzdHJpbmcvbnVtYmVyIGlucHV0cyBidXQgYXJlIG51bGwgZm9yIG91ciBwdXJwb3Nlc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG1ha2VTaWduRG9jKHR4Qm9keUJ5dGVzLCBhdXRoSW5mb0J5dGVzLCBudWxsLCBudWxsKTtcbiAgfVxuXG4gIGNyZWF0ZVNpZ25lZFR4UmF3KGF0b21TaWduYXR1cmU6IFNpZ25hdHVyZSwgc2lnbkRvYzogU2lnbkRvYyk6IFR4UmF3IHtcbiAgICBjb25zdCBzdGRTaWduYXR1cmUgPSBlbmNvZGVTZWNwMjU2azFTaWduYXR1cmUoZnJvbUhleChhdG9tU2lnbmF0dXJlLnB1YmxpY0tleS5wdWIpLCBhdG9tU2lnbmF0dXJlLnNpZ25hdHVyZSk7XG4gICAgcmV0dXJuIFR4UmF3LmZyb21QYXJ0aWFsKHtcbiAgICAgIGJvZHlCeXRlczogc2lnbkRvYy5ib2R5Qnl0ZXMsXG4gICAgICBhdXRoSW5mb0J5dGVzOiBzaWduRG9jLmF1dGhJbmZvQnl0ZXMsXG4gICAgICBzaWduYXR1cmVzOiBbZnJvbUJhc2U2NChzdGRTaWduYXR1cmUuc2lnbmF0dXJlKV0sXG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVCYXNlNjRTaWduZWRUeEJ5dGVzRnJvbVNpZ25lZFR4UmF3KHNpZ25lZFR4UmF3OiBUeFJhdyk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2lnbmVkVHhCeXRlcyA9IFR4UmF3LmVuY29kZShzaWduZWRUeFJhdykuZmluaXNoKCk7XG4gICAgcmV0dXJuIHRvQmFzZTY0KHNpZ25lZFR4Qnl0ZXMpO1xuICB9XG5cbiAgaXNTaWduZWRSYXdUeChyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZGVjb2RlZFR4ID0gdGhpcy5nZXREZWNvZGVkVHhGcm9tUmF3QmFzZTY0KHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAoZGVjb2RlZFR4LmF1dGhJbmZvLnNpZ25lckluZm9zLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBnZXRTaWduZXJJbmZvRnJvbVJhd1NpZ25lZFR4KHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaXNTaWduZWRSYXdUeChyYXdUcmFuc2FjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZ2V0U2lnbmVySW5mb0Zyb21SYXdUeCBmYWlsZWQsIHJhdyB0eCBpcyBub3Qgc2lnbmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IGRlY29kZWRUeCA9IHRoaXMuZ2V0RGVjb2RlZFR4RnJvbVJhd0Jhc2U2NChyYXdUcmFuc2FjdGlvbik7XG4gICAgY29uc3QgYW1pbm9QdWJLZXkgPSBkZWNvZGVkVHguYXV0aEluZm8uc2lnbmVySW5mb3NbMF0ucHVibGljS2V5IGFzIEFueTtcbiAgICBjb25zdCBkZWNvZGVkUHViS2V5SGV4ID0gdG9IZXgoZnJvbUJhc2U2NChkZWNvZGVQdWJrZXkoYW1pbm9QdWJLZXkpPy52YWx1ZSkpO1xuICAgIGNvbnN0IHB1YktleSA9IHtcbiAgICAgIHB1YjogZGVjb2RlZFB1YktleUhleCxcbiAgICB9O1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKGRlY29kZWRUeC5zaWduYXR1cmVzWzBdKTtcbiAgICByZXR1cm4geyBwdWJLZXksIHNpZ25hdHVyZSB9O1xuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitgo-beta/sdk-coin-atom",
|
|
3
|
-
"version": "1.1.2-alpha.
|
|
3
|
+
"version": "1.1.2-alpha.3",
|
|
4
4
|
"description": "BitGo SDK coin library for Cosmos",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -40,15 +40,19 @@
|
|
|
40
40
|
]
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@bitgo-beta/sdk-core": "2.4.1-alpha.
|
|
44
|
-
"@bitgo-beta/statics": "10.0.1-alpha.
|
|
45
|
-
"@bitgo-beta/utxo-lib": "4.0.1-alpha.
|
|
43
|
+
"@bitgo-beta/sdk-core": "2.4.1-alpha.23",
|
|
44
|
+
"@bitgo-beta/statics": "10.0.1-alpha.23",
|
|
45
|
+
"@bitgo-beta/utxo-lib": "4.0.1-alpha.23",
|
|
46
46
|
"@cosmjs/amino": "^0.29.5",
|
|
47
|
-
"@cosmjs/encoding": "^0.29.5"
|
|
47
|
+
"@cosmjs/encoding": "^0.29.5",
|
|
48
|
+
"@cosmjs/proto-signing": "^0.29.5",
|
|
49
|
+
"@cosmjs/stargate": "^0.29.5",
|
|
50
|
+
"bignumber.js": "^9.1.1",
|
|
51
|
+
"cosmjs-types": "^0.6.1"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
|
-
"@bitgo-beta/sdk-api": "1.6.1-alpha.
|
|
51
|
-
"@bitgo-beta/sdk-test": "^1.2.
|
|
54
|
+
"@bitgo-beta/sdk-api": "1.6.1-alpha.23",
|
|
55
|
+
"@bitgo-beta/sdk-test": "^1.2.15"
|
|
52
56
|
},
|
|
53
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "3483ab8d4de1ddedcc921b8293391ca810e40099"
|
|
54
58
|
}
|