@bitgo-beta/abstract-cosmos 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -0
- package/.mocharc.yml +8 -0
- package/LICENSE +191 -0
- package/README.md +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +14 -0
- package/dist/src/lib/constants.d.ts +7 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +10 -0
- package/dist/src/lib/iface.d.ts +46 -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 +8 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +25 -0
- package/dist/src/lib/keyPair.d.ts +18 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +52 -0
- package/dist/src/lib/transaction.d.ts +53 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +254 -0
- package/dist/src/lib/transactionBuilder.d.ts +57 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +87 -0
- package/dist/src/lib/utils.d.ts +144 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +345 -0
- package/dist/tsconfig.tsbuildinfo +10779 -0
- package/package.json +54 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CosmosTransaction = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const encoding_1 = require("@cosmjs/encoding");
|
|
6
|
+
const proto_signing_1 = require("@cosmjs/proto-signing");
|
|
7
|
+
const tx_1 = require("cosmjs-types/cosmos/tx/v1beta1/tx");
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
class CosmosTransaction extends sdk_core_1.BaseTransaction {
|
|
11
|
+
constructor(_coinConfig) {
|
|
12
|
+
super(_coinConfig);
|
|
13
|
+
this._cosmosLikeTransaction = {
|
|
14
|
+
sequence: 0,
|
|
15
|
+
sendMessages: [],
|
|
16
|
+
gasBudget: { gasLimit: 0, amount: [] },
|
|
17
|
+
};
|
|
18
|
+
this._accountNumber = 0;
|
|
19
|
+
this._chainId = '';
|
|
20
|
+
}
|
|
21
|
+
get cosmosLikeTransaction() {
|
|
22
|
+
return this._cosmosLikeTransaction;
|
|
23
|
+
}
|
|
24
|
+
set cosmosLikeTransaction(cosmosLikeTransaction) {
|
|
25
|
+
this._cosmosLikeTransaction = cosmosLikeTransaction;
|
|
26
|
+
}
|
|
27
|
+
get chainId() {
|
|
28
|
+
return this._chainId;
|
|
29
|
+
}
|
|
30
|
+
set chainId(chainId) {
|
|
31
|
+
this._chainId = chainId;
|
|
32
|
+
}
|
|
33
|
+
get accountNumber() {
|
|
34
|
+
return this._accountNumber;
|
|
35
|
+
}
|
|
36
|
+
set accountNumber(accountNumber) {
|
|
37
|
+
this._accountNumber = accountNumber;
|
|
38
|
+
}
|
|
39
|
+
/** @inheritDoc **/
|
|
40
|
+
get id() {
|
|
41
|
+
var _a;
|
|
42
|
+
if (this._id) {
|
|
43
|
+
return this._id;
|
|
44
|
+
}
|
|
45
|
+
else if (((_a = this._cosmosLikeTransaction) === null || _a === void 0 ? void 0 : _a.hash) !== undefined) {
|
|
46
|
+
return this._cosmosLikeTransaction.hash;
|
|
47
|
+
}
|
|
48
|
+
return constants_1.UNAVAILABLE_TEXT;
|
|
49
|
+
}
|
|
50
|
+
/** @inheritdoc */
|
|
51
|
+
canSign(key) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
toBroadcastFormat() {
|
|
56
|
+
if (!this._cosmosLikeTransaction) {
|
|
57
|
+
throw new sdk_core_1.InvalidTransactionError('Empty transaction');
|
|
58
|
+
}
|
|
59
|
+
return this.serialize();
|
|
60
|
+
}
|
|
61
|
+
/** @inheritdoc */
|
|
62
|
+
toJson() {
|
|
63
|
+
if (!this._cosmosLikeTransaction) {
|
|
64
|
+
throw new sdk_core_1.ParseTransactionError('Empty transaction');
|
|
65
|
+
}
|
|
66
|
+
const tx = this._cosmosLikeTransaction;
|
|
67
|
+
return {
|
|
68
|
+
id: this.id,
|
|
69
|
+
type: this._type,
|
|
70
|
+
sequence: tx.sequence,
|
|
71
|
+
sendMessages: tx.sendMessages,
|
|
72
|
+
gasBudget: tx.gasBudget,
|
|
73
|
+
publicKey: tx.publicKey,
|
|
74
|
+
signature: tx.signature,
|
|
75
|
+
accountNumber: this._accountNumber,
|
|
76
|
+
chainId: this._chainId,
|
|
77
|
+
hash: tx.hash,
|
|
78
|
+
memo: tx.memo,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Add a signature to the transaction
|
|
83
|
+
* @param {string} signature in hex format
|
|
84
|
+
*/
|
|
85
|
+
addSignature(signature) {
|
|
86
|
+
this._signatures = [];
|
|
87
|
+
this._signatures.push(signature);
|
|
88
|
+
}
|
|
89
|
+
/** @inheritDoc */
|
|
90
|
+
explainTransaction() {
|
|
91
|
+
const result = this.toJson();
|
|
92
|
+
const displayOrder = ['id', 'outputs', 'outputAmount', 'changeOutputs', 'changeAmount', 'fee', 'type'];
|
|
93
|
+
const outputs = [];
|
|
94
|
+
const explanationResult = {
|
|
95
|
+
displayOrder,
|
|
96
|
+
id: this.id,
|
|
97
|
+
outputs,
|
|
98
|
+
outputAmount: '0',
|
|
99
|
+
changeOutputs: [],
|
|
100
|
+
changeAmount: '0',
|
|
101
|
+
fee: { fee: this.cosmosLikeTransaction.gasBudget.amount[0].amount },
|
|
102
|
+
type: this.type,
|
|
103
|
+
};
|
|
104
|
+
return this.explainTransactionInternal(result, explanationResult);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Set the transaction type.
|
|
108
|
+
* @param {TransactionType} transactionType The transaction type to be set.
|
|
109
|
+
*/
|
|
110
|
+
set transactionType(transactionType) {
|
|
111
|
+
this._type = transactionType;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Serialize the transaction to a JSON string
|
|
115
|
+
* @returns {string} serialized base64 encoded transaction
|
|
116
|
+
*/
|
|
117
|
+
serialize() {
|
|
118
|
+
var _a;
|
|
119
|
+
const txRaw = utils_1.default.createTxRawFromCosmosLikeTransaction(this.cosmosLikeTransaction);
|
|
120
|
+
if (((_a = this.cosmosLikeTransaction) === null || _a === void 0 ? void 0 : _a.publicKey) !== undefined && this._signatures.length > 0) {
|
|
121
|
+
const signedRawTx = utils_1.default.createSignedTxRaw(this.cosmosLikeTransaction.publicKey, this._signatures[0], txRaw);
|
|
122
|
+
return encoding_1.toBase64(tx_1.TxRaw.encode(signedRawTx).finish());
|
|
123
|
+
}
|
|
124
|
+
return encoding_1.toBase64(tx_1.TxRaw.encode(txRaw).finish());
|
|
125
|
+
}
|
|
126
|
+
/** @inheritdoc **/
|
|
127
|
+
get signablePayload() {
|
|
128
|
+
return Buffer.from(proto_signing_1.makeSignBytes(utils_1.default.createSignDoc(this.cosmosLikeTransaction, this._accountNumber, this._chainId)));
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Returns a complete explanation for a transfer transaction
|
|
132
|
+
* Currently only supports one message per transfer.
|
|
133
|
+
* @param {TxData} json The transaction data in json format
|
|
134
|
+
* @param {TransactionExplanation} explanationResult The transaction explanation to be completed
|
|
135
|
+
* @returns {TransactionExplanation}
|
|
136
|
+
*/
|
|
137
|
+
explainTransactionInternal(json, explanationResult) {
|
|
138
|
+
let outputs;
|
|
139
|
+
let message;
|
|
140
|
+
let outputAmount;
|
|
141
|
+
switch (json.type) {
|
|
142
|
+
case sdk_core_1.TransactionType.Send:
|
|
143
|
+
explanationResult.type = sdk_core_1.TransactionType.Send;
|
|
144
|
+
message = json.sendMessages[0].value;
|
|
145
|
+
outputAmount = message.amount[0].amount;
|
|
146
|
+
outputs = [
|
|
147
|
+
{
|
|
148
|
+
address: message.toAddress,
|
|
149
|
+
amount: outputAmount,
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
break;
|
|
153
|
+
case sdk_core_1.TransactionType.StakingActivate:
|
|
154
|
+
explanationResult.type = sdk_core_1.TransactionType.StakingActivate;
|
|
155
|
+
message = json.sendMessages[0].value;
|
|
156
|
+
outputAmount = message.amount.amount;
|
|
157
|
+
outputs = [
|
|
158
|
+
{
|
|
159
|
+
address: message.validatorAddress,
|
|
160
|
+
amount: outputAmount,
|
|
161
|
+
},
|
|
162
|
+
];
|
|
163
|
+
break;
|
|
164
|
+
case sdk_core_1.TransactionType.StakingDeactivate:
|
|
165
|
+
explanationResult.type = sdk_core_1.TransactionType.StakingDeactivate;
|
|
166
|
+
message = json.sendMessages[0].value;
|
|
167
|
+
outputAmount = message.amount.amount;
|
|
168
|
+
outputs = [
|
|
169
|
+
{
|
|
170
|
+
address: message.validatorAddress,
|
|
171
|
+
amount: outputAmount,
|
|
172
|
+
},
|
|
173
|
+
];
|
|
174
|
+
break;
|
|
175
|
+
case sdk_core_1.TransactionType.StakingWithdraw:
|
|
176
|
+
explanationResult.type = sdk_core_1.TransactionType.StakingWithdraw;
|
|
177
|
+
message = json.sendMessages[0].value;
|
|
178
|
+
outputs = [
|
|
179
|
+
{
|
|
180
|
+
address: message.validatorAddress,
|
|
181
|
+
amount: constants_1.UNAVAILABLE_TEXT,
|
|
182
|
+
},
|
|
183
|
+
];
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
186
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
|
|
187
|
+
}
|
|
188
|
+
if (json.memo) {
|
|
189
|
+
outputs.forEach((output) => {
|
|
190
|
+
output.memo = json.memo;
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
...explanationResult,
|
|
195
|
+
outputAmount,
|
|
196
|
+
outputs,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
loadInputsAndOutputs() {
|
|
200
|
+
if (this.type === undefined || !this.cosmosLikeTransaction) {
|
|
201
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction type or cosmosLikeTransaction is not set');
|
|
202
|
+
}
|
|
203
|
+
const outputs = [];
|
|
204
|
+
const inputs = [];
|
|
205
|
+
switch (this.type) {
|
|
206
|
+
case sdk_core_1.TransactionType.Send:
|
|
207
|
+
const message = this.cosmosLikeTransaction.sendMessages[0].value;
|
|
208
|
+
inputs.push({
|
|
209
|
+
address: message.fromAddress,
|
|
210
|
+
value: message.amount[0].amount,
|
|
211
|
+
coin: this._coinConfig.name,
|
|
212
|
+
});
|
|
213
|
+
outputs.push({
|
|
214
|
+
address: message.toAddress,
|
|
215
|
+
value: message.amount[0].amount,
|
|
216
|
+
coin: this._coinConfig.name,
|
|
217
|
+
});
|
|
218
|
+
break;
|
|
219
|
+
case sdk_core_1.TransactionType.StakingActivate:
|
|
220
|
+
case sdk_core_1.TransactionType.StakingDeactivate:
|
|
221
|
+
const delegateMessage = this.cosmosLikeTransaction.sendMessages[0].value;
|
|
222
|
+
inputs.push({
|
|
223
|
+
address: delegateMessage.delegatorAddress,
|
|
224
|
+
value: delegateMessage.amount.amount,
|
|
225
|
+
coin: this._coinConfig.name,
|
|
226
|
+
});
|
|
227
|
+
outputs.push({
|
|
228
|
+
address: delegateMessage.validatorAddress,
|
|
229
|
+
value: delegateMessage.amount.amount,
|
|
230
|
+
coin: this._coinConfig.name,
|
|
231
|
+
});
|
|
232
|
+
break;
|
|
233
|
+
case sdk_core_1.TransactionType.StakingWithdraw:
|
|
234
|
+
const withdrawMessage = this.cosmosLikeTransaction.sendMessages[0].value;
|
|
235
|
+
inputs.push({
|
|
236
|
+
address: withdrawMessage.delegatorAddress,
|
|
237
|
+
value: constants_1.UNAVAILABLE_TEXT,
|
|
238
|
+
coin: this._coinConfig.name,
|
|
239
|
+
});
|
|
240
|
+
outputs.push({
|
|
241
|
+
address: withdrawMessage.validatorAddress,
|
|
242
|
+
value: constants_1.UNAVAILABLE_TEXT,
|
|
243
|
+
coin: this._coinConfig.name,
|
|
244
|
+
});
|
|
245
|
+
break;
|
|
246
|
+
default:
|
|
247
|
+
throw new sdk_core_1.InvalidTransactionError('Transaction type not supported');
|
|
248
|
+
}
|
|
249
|
+
this._inputs = inputs;
|
|
250
|
+
this._outputs = outputs;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
exports.CosmosTransaction = CosmosTransaction;
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQVE4QjtBQUU5QiwrQ0FBNEM7QUFDNUMseURBQXNEO0FBQ3RELDBEQUEwRDtBQUUxRCwyQ0FBK0M7QUFVL0MsbUNBQTRCO0FBRTVCLE1BQWEsaUJBQWtCLFNBQVEsMEJBQWU7SUFLcEQsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLHNCQUFzQixHQUFHO1lBQzVCLFFBQVEsRUFBRSxDQUFDO1lBQ1gsWUFBWSxFQUFFLEVBQUU7WUFDaEIsU0FBUyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO1NBQ3ZDLENBQUM7UUFDRixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUkscUJBQXFCLENBQUMscUJBQXNEO1FBQzlFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxxQkFBcUIsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFlO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksYUFBYSxDQUFDLGFBQXFCO1FBQ3JDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO0lBQ3RDLENBQUM7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TyxDQUFDLElBQUksQ0FBQztvQkFDWCxPQUFPLEVBQUUsZUFBZSxDQUFDLGdCQUFnQjtvQkFDekMsS0FBSyxFQUFFLDRCQUFnQjtvQkFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtpQkFDNUIsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUjtnQkFDRSxNQUFNLElBQUksa0NBQXVCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUN2RTtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQXhRRCw4Q0F3UUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb24sXG4gIEVudHJ5LFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgUGFyc2VUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyB0b0Jhc2U2NCB9IGZyb20gJ0Bjb3NtanMvZW5jb2RpbmcnO1xuaW1wb3J0IHsgbWFrZVNpZ25CeXRlcyB9IGZyb20gJ0Bjb3NtanMvcHJvdG8tc2lnbmluZyc7XG5pbXBvcnQgeyBUeFJhdyB9IGZyb20gJ2Nvc21qcy10eXBlcy9jb3Ntb3MvdHgvdjFiZXRhMS90eCc7XG5cbmltcG9ydCB7IFVOQVZBSUxBQkxFX1RFWFQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmltcG9ydCB7XG4gIENvc21vc0xpa2VUcmFuc2FjdGlvbixcbiAgRGVsZWdhdGVPclVuZGVsZWdldGVNZXNzYWdlLFxuICBTZW5kTWVzc2FnZSxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgVHhEYXRhLFxuICBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlLFxufSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIENvc21vc1RyYW5zYWN0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uIHtcbiAgcHJvdGVjdGVkIF9jb3Ntb3NMaWtlVHJhbnNhY3Rpb246IENvc21vc0xpa2VUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9hY2NvdW50TnVtYmVyOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfY2hhaW5JZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24gPSB7XG4gICAgICBzZXF1ZW5jZTogMCxcbiAgICAgIHNlbmRNZXNzYWdlczogW10sXG4gICAgICBnYXNCdWRnZXQ6IHsgZ2FzTGltaXQ6IDAsIGFtb3VudDogW10gfSxcbiAgICB9O1xuICAgIHRoaXMuX2FjY291bnROdW1iZXIgPSAwO1xuICAgIHRoaXMuX2NoYWluSWQgPSAnJztcbiAgfVxuXG4gIGdldCBjb3Ntb3NMaWtlVHJhbnNhY3Rpb24oKTogQ29zbW9zTGlrZVRyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fY29zbW9zTGlrZVRyYW5zYWN0aW9uO1xuICB9XG5cbiAgc2V0IGNvc21vc0xpa2VUcmFuc2FjdGlvbihjb3Ntb3NMaWtlVHJhbnNhY3Rpb246IFJlYWRvbmx5PENvc21vc0xpa2VUcmFuc2FjdGlvbj4pIHtcbiAgICB0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24gPSBjb3Ntb3NMaWtlVHJhbnNhY3Rpb247XG4gIH1cblxuICBnZXQgY2hhaW5JZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFpbklkO1xuICB9XG5cbiAgc2V0IGNoYWluSWQoY2hhaW5JZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2hhaW5JZCA9IGNoYWluSWQ7XG4gIH1cblxuICBnZXQgYWNjb3VudE51bWJlcigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9hY2NvdW50TnVtYmVyO1xuICB9XG5cbiAgc2V0IGFjY291bnROdW1iZXIoYWNjb3VudE51bWJlcjogbnVtYmVyKSB7XG4gICAgdGhpcy5fYWNjb3VudE51bWJlciA9IGFjY291bnROdW1iZXI7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKiovXG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2lkO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fY29zbW9zTGlrZVRyYW5zYWN0aW9uPy5oYXNoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uaGFzaDtcbiAgICB9XG4gICAgcmV0dXJuIFVOQVZBSUxBQkxFX1RFWFQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgY2FuU2lnbihrZXk6IEJhc2VLZXkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB0b0Jyb2FkY2FzdEZvcm1hdCgpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY29zbW9zTGlrZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZSgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fY29zbW9zTGlrZVRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCB0eCA9IHRoaXMuX2Nvc21vc0xpa2VUcmFuc2FjdGlvbjtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICB0eXBlOiB0aGlzLl90eXBlLFxuICAgICAgc2VxdWVuY2U6IHR4LnNlcXVlbmNlLFxuICAgICAgc2VuZE1lc3NhZ2VzOiB0eC5zZW5kTWVzc2FnZXMsXG4gICAgICBnYXNCdWRnZXQ6IHR4Lmdhc0J1ZGdldCxcbiAgICAgIHB1YmxpY0tleTogdHgucHVibGljS2V5LFxuICAgICAgc2lnbmF0dXJlOiB0eC5zaWduYXR1cmUsXG4gICAgICBhY2NvdW50TnVtYmVyOiB0aGlzLl9hY2NvdW50TnVtYmVyLFxuICAgICAgY2hhaW5JZDogdGhpcy5fY2hhaW5JZCxcbiAgICAgIGhhc2g6IHR4Lmhhc2gsXG4gICAgICBtZW1vOiB0eC5tZW1vLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgc2lnbmF0dXJlIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlIGluIGhleCBmb3JtYXRcbiAgICovXG4gIGFkZFNpZ25hdHVyZShzaWduYXR1cmU6IHN0cmluZykge1xuICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXTtcbiAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy50b0pzb24oKTtcbiAgICBjb25zdCBkaXNwbGF5T3JkZXIgPSBbJ2lkJywgJ291dHB1dHMnLCAnb3V0cHV0QW1vdW50JywgJ2NoYW5nZU91dHB1dHMnLCAnY2hhbmdlQW1vdW50JywgJ2ZlZScsICd0eXBlJ107XG4gICAgY29uc3Qgb3V0cHV0czogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSA9IFtdO1xuXG4gICAgY29uc3QgZXhwbGFuYXRpb25SZXN1bHQ6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gPSB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgY2hhbmdlQW1vdW50OiAnMCcsXG4gICAgICBmZWU6IHsgZmVlOiB0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbi5nYXNCdWRnZXQuYW1vdW50WzBdLmFtb3VudCB9LFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuZXhwbGFpblRyYW5zYWN0aW9uSW50ZXJuYWwocmVzdWx0LCBleHBsYW5hdGlvblJlc3VsdCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVHlwZX0gdHJhbnNhY3Rpb25UeXBlIFRoZSB0cmFuc2FjdGlvbiB0eXBlIHRvIGJlIHNldC5cbiAgICovXG4gIHNldCB0cmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gdG8gYSBKU09OIHN0cmluZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBzZXJpYWxpemVkIGJhc2U2NCBlbmNvZGVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICBzZXJpYWxpemUoKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eFJhdyA9IHV0aWxzLmNyZWF0ZVR4UmF3RnJvbUNvc21vc0xpa2VUcmFuc2FjdGlvbih0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbik7XG4gICAgaWYgKHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uPy5wdWJsaWNLZXkgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNpZ25lZFJhd1R4ID0gdXRpbHMuY3JlYXRlU2lnbmVkVHhSYXcodGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24ucHVibGljS2V5LCB0aGlzLl9zaWduYXR1cmVzWzBdLCB0eFJhdyk7XG4gICAgICByZXR1cm4gdG9CYXNlNjQoVHhSYXcuZW5jb2RlKHNpZ25lZFJhd1R4KS5maW5pc2goKSk7XG4gICAgfVxuICAgIHJldHVybiB0b0Jhc2U2NChUeFJhdy5lbmNvZGUodHhSYXcpLmZpbmlzaCgpKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqKi9cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShcbiAgICAgIG1ha2VTaWduQnl0ZXModXRpbHMuY3JlYXRlU2lnbkRvYyh0aGlzLmNvc21vc0xpa2VUcmFuc2FjdGlvbiwgdGhpcy5fYWNjb3VudE51bWJlciwgdGhpcy5fY2hhaW5JZCkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY29tcGxldGUgZXhwbGFuYXRpb24gZm9yIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb25cbiAgICogQ3VycmVudGx5IG9ubHkgc3VwcG9ydHMgb25lIG1lc3NhZ2UgcGVyIHRyYW5zZmVyLlxuICAgKiBAcGFyYW0ge1R4RGF0YX0ganNvbiBUaGUgdHJhbnNhY3Rpb24gZGF0YSBpbiBqc29uIGZvcm1hdFxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259IGV4cGxhbmF0aW9uUmVzdWx0IFRoZSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbiB0byBiZSBjb21wbGV0ZWRcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uRXhwbGFuYXRpb259XG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb25JbnRlcm5hbChqc29uOiBUeERhdGEsIGV4cGxhbmF0aW9uUmVzdWx0OiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgbGV0IG91dHB1dHM6IFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgbGV0IG91dHB1dEFtb3VudDtcbiAgICBzd2l0Y2ggKGpzb24udHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgZXhwbGFuYXRpb25SZXN1bHQudHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgICAgICBtZXNzYWdlID0ganNvbi5zZW5kTWVzc2FnZXNbMF0udmFsdWUgYXMgU2VuZE1lc3NhZ2U7XG4gICAgICAgIG91dHB1dEFtb3VudCA9IG1lc3NhZ2UuYW1vdW50WzBdLmFtb3VudDtcbiAgICAgICAgb3V0cHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiBtZXNzYWdlLnRvQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgICBleHBsYW5hdGlvblJlc3VsdC50eXBlID0gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdBY3RpdmF0ZTtcbiAgICAgICAgbWVzc2FnZSA9IGpzb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZTtcbiAgICAgICAgb3V0cHV0QW1vdW50ID0gbWVzc2FnZS5hbW91bnQuYW1vdW50O1xuICAgICAgICBvdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IG1lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogb3V0cHV0QW1vdW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICAgIGV4cGxhbmF0aW9uUmVzdWx0LnR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGU7XG4gICAgICAgIG1lc3NhZ2UgPSBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2U7XG4gICAgICAgIG91dHB1dEFtb3VudCA9IG1lc3NhZ2UuYW1vdW50LmFtb3VudDtcbiAgICAgICAgb3V0cHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiBtZXNzYWdlLnZhbGlkYXRvckFkZHJlc3MsXG4gICAgICAgICAgICBhbW91bnQ6IG91dHB1dEFtb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgZXhwbGFuYXRpb25SZXN1bHQudHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXc7XG4gICAgICAgIG1lc3NhZ2UgPSBqc29uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlO1xuICAgICAgICBvdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IG1lc3NhZ2UudmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgICAgICAgIGFtb3VudDogVU5BVkFJTEFCTEVfVEVYVCxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuICAgIGlmIChqc29uLm1lbW8pIHtcbiAgICAgIG91dHB1dHMuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgICAgIG91dHB1dC5tZW1vID0ganNvbi5tZW1vO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAuLi5leHBsYW5hdGlvblJlc3VsdCxcbiAgICAgIG91dHB1dEFtb3VudCxcbiAgICAgIG91dHB1dHMsXG4gICAgfTtcbiAgfVxuXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnR5cGUgPT09IHVuZGVmaW5lZCB8fCAhdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gdHlwZSBvciBjb3Ntb3NMaWtlVHJhbnNhY3Rpb24gaXMgbm90IHNldCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZDpcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuY29zbW9zTGlrZVRyYW5zYWN0aW9uLnNlbmRNZXNzYWdlc1swXS52YWx1ZSBhcyBTZW5kTWVzc2FnZTtcbiAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IG1lc3NhZ2UuZnJvbUFkZHJlc3MsXG4gICAgICAgICAgdmFsdWU6IG1lc3NhZ2UuYW1vdW50WzBdLmFtb3VudCxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IG1lc3NhZ2UudG9BZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiBtZXNzYWdlLmFtb3VudFswXS5hbW91bnQsXG4gICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQWN0aXZhdGU6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nRGVhY3RpdmF0ZTpcbiAgICAgICAgY29uc3QgZGVsZWdhdGVNZXNzYWdlID0gdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZTtcbiAgICAgICAgaW5wdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IGRlbGVnYXRlTWVzc2FnZS5kZWxlZ2F0b3JBZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiBkZWxlZ2F0ZU1lc3NhZ2UuYW1vdW50LmFtb3VudCxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IGRlbGVnYXRlTWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiBkZWxlZ2F0ZU1lc3NhZ2UuYW1vdW50LmFtb3VudCxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgICAgY29uc3Qgd2l0aGRyYXdNZXNzYWdlID0gdGhpcy5jb3Ntb3NMaWtlVHJhbnNhY3Rpb24uc2VuZE1lc3NhZ2VzWzBdLnZhbHVlIGFzIFdpdGhkcmF3RGVsZWdhdG9yUmV3YXJkc01lc3NhZ2U7XG4gICAgICAgIGlucHV0cy5wdXNoKHtcbiAgICAgICAgICBhZGRyZXNzOiB3aXRoZHJhd01lc3NhZ2UuZGVsZWdhdG9yQWRkcmVzcyxcbiAgICAgICAgICB2YWx1ZTogVU5BVkFJTEFCTEVfVEVYVCxcbiAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgIH0pO1xuICAgICAgICBvdXRwdXRzLnB1c2goe1xuICAgICAgICAgIGFkZHJlc3M6IHdpdGhkcmF3TWVzc2FnZS52YWxpZGF0b3JBZGRyZXNzLFxuICAgICAgICAgIHZhbHVlOiBVTkFWQUlMQUJMRV9URVhULFxuICAgICAgICAgIGNvaW46IHRoaXMuX2NvaW5Db25maWcubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdUcmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gICAgdGhpcy5faW5wdXRzID0gaW5wdXRzO1xuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { BaseKey, BaseTransactionBuilder, PublicKey as BasePublicKey, TransactionType } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
4
|
+
import BigNumber from 'bignumber.js';
|
|
5
|
+
import { DelegateOrUndelegeteMessage, FeeData, MessageData, SendMessage, WithdrawDelegatorRewardsMessage } from './iface';
|
|
6
|
+
import { CosmosKeyPair as KeyPair } from './keyPair';
|
|
7
|
+
import { CosmosTransaction } from './transaction';
|
|
8
|
+
export declare abstract class CosmosTransactionBuilder extends BaseTransactionBuilder {
|
|
9
|
+
protected _transaction: CosmosTransaction;
|
|
10
|
+
protected _sequence: number;
|
|
11
|
+
protected _messages: MessageData[];
|
|
12
|
+
protected _gasBudget: FeeData;
|
|
13
|
+
protected _accountNumber?: number;
|
|
14
|
+
protected _signature: Buffer;
|
|
15
|
+
protected _chainId?: string;
|
|
16
|
+
protected _publicKey?: string;
|
|
17
|
+
protected _signer: KeyPair;
|
|
18
|
+
protected _memo?: string;
|
|
19
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
20
|
+
/**
|
|
21
|
+
* The transaction type.
|
|
22
|
+
*/
|
|
23
|
+
protected abstract get transactionType(): TransactionType;
|
|
24
|
+
/** @inheritdoc */
|
|
25
|
+
protected get transaction(): CosmosTransaction;
|
|
26
|
+
/** @inheritdoc */
|
|
27
|
+
protected set transaction(transaction: CosmosTransaction);
|
|
28
|
+
/** @inheritDoc */
|
|
29
|
+
addSignature(publicKey: BasePublicKey, signature: Buffer): void;
|
|
30
|
+
/**
|
|
31
|
+
* Sets sequence of this transaction.
|
|
32
|
+
* @param {number} sequence - sequence data for tx signer
|
|
33
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
34
|
+
*/
|
|
35
|
+
sequence(sequence: number): this;
|
|
36
|
+
/**
|
|
37
|
+
* Sets messages to the transaction body. Message type will be different based on the transaction type
|
|
38
|
+
* - For @see TransactionType.StakingActivate required type is @see DelegateOrUndelegeteMessage
|
|
39
|
+
* - For @see TransactionType.StakingDeactivate required type is @see DelegateOrUndelegeteMessage
|
|
40
|
+
* - For @see TransactionType.Send required type is @see SendMessage
|
|
41
|
+
* - For @see TransactionType.StakingWithdraw required type is @see WithdrawDelegatorRewardsMessage
|
|
42
|
+
* @param {(SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]} messages
|
|
43
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
44
|
+
*/
|
|
45
|
+
abstract messages(messages: (SendMessage | DelegateOrUndelegeteMessage | WithdrawDelegatorRewardsMessage)[]): this;
|
|
46
|
+
publicKey(publicKey: string | undefined): this;
|
|
47
|
+
accountNumber(accountNumber: number | undefined): this;
|
|
48
|
+
chainId(chainId: string | undefined): this;
|
|
49
|
+
memo(memo: string | undefined): this;
|
|
50
|
+
/** @inheritdoc */
|
|
51
|
+
protected signImplementation(key: BaseKey): CosmosTransaction;
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
validateValue(value: BigNumber): void;
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
validateKey(key: BaseKey): void;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=transactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilder.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,OAAO,EACP,sBAAsB,EAEtB,SAAS,IAAI,aAAa,EAE1B,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,OAAO,EACL,2BAA2B,EAC3B,OAAO,EACP,WAAW,EACX,WAAW,EACX,+BAA+B,EAChC,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGlD,8BAAsB,wBAAyB,SAAQ,sBAAsB;IAC3E,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC;IACnC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAU7C;;OAEG;IACH,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,kBAAkB;IAClB,SAAS,KAAK,WAAW,IAAI,iBAAiB,CAE7C;IAED,kBAAkB;IAClB,SAAS,KAAK,WAAW,CAAC,WAAW,EAAE,iBAAiB,EAEvD;IAED,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAK/D;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMhC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,GAAG,2BAA2B,GAAG,+BAA+B,CAAC,EAAE,GAAG,IAAI;IAElH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK9C,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKtD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK1C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAKpC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB;IAa7D,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAMrC,kBAAkB;IAClB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;CAOhC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CosmosTransactionBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const keyPair_1 = require("./keyPair");
|
|
6
|
+
const transaction_1 = require("./transaction");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
class CosmosTransactionBuilder extends sdk_core_1.BaseTransactionBuilder {
|
|
9
|
+
constructor(_coinConfig) {
|
|
10
|
+
super(_coinConfig);
|
|
11
|
+
this._transaction = new transaction_1.CosmosTransaction(_coinConfig);
|
|
12
|
+
this._sequence = 0;
|
|
13
|
+
this._messages = [];
|
|
14
|
+
this._gasBudget = { gasLimit: 0, amount: [] };
|
|
15
|
+
this._signature = Buffer.alloc(0);
|
|
16
|
+
this._signer = new keyPair_1.CosmosKeyPair();
|
|
17
|
+
}
|
|
18
|
+
/** @inheritdoc */
|
|
19
|
+
get transaction() {
|
|
20
|
+
return this._transaction;
|
|
21
|
+
}
|
|
22
|
+
/** @inheritdoc */
|
|
23
|
+
set transaction(transaction) {
|
|
24
|
+
this._transaction = transaction;
|
|
25
|
+
}
|
|
26
|
+
/** @inheritDoc */
|
|
27
|
+
addSignature(publicKey, signature) {
|
|
28
|
+
this._signature = signature;
|
|
29
|
+
this._publicKey = publicKey.pub;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sets sequence of this transaction.
|
|
33
|
+
* @param {number} sequence - sequence data for tx signer
|
|
34
|
+
* @returns {TransactionBuilder} This transaction builder
|
|
35
|
+
*/
|
|
36
|
+
sequence(sequence) {
|
|
37
|
+
utils_1.default.validateSequence(sequence);
|
|
38
|
+
this._sequence = sequence;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
publicKey(publicKey) {
|
|
42
|
+
this._publicKey = publicKey;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
accountNumber(accountNumber) {
|
|
46
|
+
this._accountNumber = accountNumber;
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
chainId(chainId) {
|
|
50
|
+
this._chainId = chainId;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
memo(memo) {
|
|
54
|
+
this._memo = memo;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
/** @inheritdoc */
|
|
58
|
+
signImplementation(key) {
|
|
59
|
+
this.validateKey(key);
|
|
60
|
+
if (this._accountNumber === undefined) {
|
|
61
|
+
throw new sdk_core_1.SigningError('accountNumber is required before signing');
|
|
62
|
+
}
|
|
63
|
+
if (this._chainId === undefined) {
|
|
64
|
+
throw new sdk_core_1.SigningError('chainId is required before signing');
|
|
65
|
+
}
|
|
66
|
+
this._signer = new keyPair_1.CosmosKeyPair({ prv: key.key });
|
|
67
|
+
this._publicKey = this._signer.getKeys().pub;
|
|
68
|
+
return this.transaction;
|
|
69
|
+
}
|
|
70
|
+
/** @inheritdoc */
|
|
71
|
+
validateValue(value) {
|
|
72
|
+
if (value.isLessThan(0)) {
|
|
73
|
+
throw new sdk_core_1.BuildTransactionError('Value cannot be less than zero');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** @inheritdoc */
|
|
77
|
+
validateKey(key) {
|
|
78
|
+
try {
|
|
79
|
+
new keyPair_1.CosmosKeyPair({ prv: key.key });
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
throw new sdk_core_1.BuildTransactionError(`Key validation failed`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.CosmosTransactionBuilder = CosmosTransactionBuilder;
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBTzhCO0FBVzlCLHVDQUFxRDtBQUNyRCwrQ0FBa0Q7QUFDbEQsbUNBQTRCO0FBRTVCLE1BQXNCLHdCQUF5QixTQUFRLGlDQUFzQjtJQVkzRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksK0JBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksdUJBQU8sRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFPRCxrQkFBa0I7SUFDbEIsSUFBYyxXQUFXO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLElBQWMsV0FBVyxDQUFDLFdBQThCO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsWUFBWSxDQUFDLFNBQXdCLEVBQUUsU0FBaUI7UUFDdEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsUUFBUSxDQUFDLFFBQWdCO1FBQ3ZCLGVBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFhRCxTQUFTLENBQUMsU0FBNkI7UUFDckMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsYUFBYSxDQUFDLGFBQWlDO1FBQzdDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUEyQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBd0I7UUFDM0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1Isa0JBQWtCLENBQUMsR0FBWTtRQUN2QyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUU7WUFDckMsTUFBTSxJQUFJLHVCQUFZLENBQUMsMENBQTBDLENBQUMsQ0FBQztTQUNwRTtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxJQUFJLHVCQUFZLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUM5RDtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDN0MsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsYUFBYSxDQUFDLEtBQWdCO1FBQzVCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN2QixNQUFNLElBQUksZ0NBQXFCLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztTQUNuRTtJQUNILENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsV0FBVyxDQUFDLEdBQVk7UUFDdEIsSUFBSTtZQUNGLElBQUksdUJBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUMvQjtRQUFDLE1BQU07WUFDTixNQUFNLElBQUksZ0NBQXFCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztTQUMxRDtJQUNILENBQUM7Q0FDRjtBQWxIRCw0REFrSEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCYXNlS2V5LFxuICBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyLFxuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIFB1YmxpY0tleSBhcyBCYXNlUHVibGljS2V5LFxuICBTaWduaW5nRXJyb3IsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuXG5pbXBvcnQge1xuICBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2UsXG4gIEZlZURhdGEsXG4gIE1lc3NhZ2VEYXRhLFxuICBTZW5kTWVzc2FnZSxcbiAgV2l0aGRyYXdEZWxlZ2F0b3JSZXdhcmRzTWVzc2FnZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBDb3Ntb3NLZXlQYWlyIGFzIEtleVBhaXIgfSBmcm9tICcuL2tleVBhaXInO1xuaW1wb3J0IHsgQ29zbW9zVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB1dGlscyBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvc21vc1RyYW5zYWN0aW9uQnVpbGRlciBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uOiBDb3Ntb3NUcmFuc2FjdGlvbjtcbiAgcHJvdGVjdGVkIF9zZXF1ZW5jZTogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX21lc3NhZ2VzOiBNZXNzYWdlRGF0YVtdO1xuICBwcm90ZWN0ZWQgX2dhc0J1ZGdldDogRmVlRGF0YTtcbiAgcHJvdGVjdGVkIF9hY2NvdW50TnVtYmVyPzogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3NpZ25hdHVyZTogQnVmZmVyO1xuICBwcm90ZWN0ZWQgX2NoYWluSWQ/OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfcHVibGljS2V5Pzogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3NpZ25lcjogS2V5UGFpcjtcbiAgcHJvdGVjdGVkIF9tZW1vPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBDb3Ntb3NUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fc2VxdWVuY2UgPSAwO1xuICAgIHRoaXMuX21lc3NhZ2VzID0gW107XG4gICAgdGhpcy5fZ2FzQnVkZ2V0ID0geyBnYXNMaW1pdDogMCwgYW1vdW50OiBbXSB9O1xuICAgIHRoaXMuX3NpZ25hdHVyZSA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICB0aGlzLl9zaWduZXIgPSBuZXcgS2V5UGFpcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0cmFuc2FjdGlvbiB0eXBlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlO1xuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uKCk6IENvc21vc1RyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNldCB0cmFuc2FjdGlvbih0cmFuc2FjdGlvbjogQ29zbW9zVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGFkZFNpZ25hdHVyZShwdWJsaWNLZXk6IEJhc2VQdWJsaWNLZXksIHNpZ25hdHVyZTogQnVmZmVyKTogdm9pZCB7XG4gICAgdGhpcy5fc2lnbmF0dXJlID0gc2lnbmF0dXJlO1xuICAgIHRoaXMuX3B1YmxpY0tleSA9IHB1YmxpY0tleS5wdWI7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBzZXF1ZW5jZSBvZiB0aGlzIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gc2VxdWVuY2UgLSBzZXF1ZW5jZSBkYXRhIGZvciB0eCBzaWduZXJcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZXF1ZW5jZShzZXF1ZW5jZTogbnVtYmVyKTogdGhpcyB7XG4gICAgdXRpbHMudmFsaWRhdGVTZXF1ZW5jZShzZXF1ZW5jZSk7XG4gICAgdGhpcy5fc2VxdWVuY2UgPSBzZXF1ZW5jZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIG1lc3NhZ2VzIHRvIHRoZSB0cmFuc2FjdGlvbiBib2R5LiBNZXNzYWdlIHR5cGUgd2lsbCBiZSBkaWZmZXJlbnQgYmFzZWQgb24gdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAgICogLSBGb3IgQHNlZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0FjdGl2YXRlIHJlcXVpcmVkIHR5cGUgaXMgQHNlZSBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2VcbiAgICogLSBGb3IgQHNlZSBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGUgcmVxdWlyZWQgdHlwZSBpcyBAc2VlIERlbGVnYXRlT3JVbmRlbGVnZXRlTWVzc2FnZVxuICAgKiAtIEZvciBAc2VlIFRyYW5zYWN0aW9uVHlwZS5TZW5kIHJlcXVpcmVkIHR5cGUgaXMgQHNlZSBTZW5kTWVzc2FnZVxuICAgKiAtIEZvciBAc2VlIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nV2l0aGRyYXcgcmVxdWlyZWQgdHlwZSBpcyBAc2VlIFdpdGhkcmF3RGVsZWdhdG9yUmV3YXJkc01lc3NhZ2VcbiAgICogQHBhcmFtIHsoU2VuZE1lc3NhZ2UgfCBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2UgfCBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlKVtdfSBtZXNzYWdlc1xuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25CdWlsZGVyfSBUaGlzIHRyYW5zYWN0aW9uIGJ1aWxkZXJcbiAgICovXG4gIGFic3RyYWN0IG1lc3NhZ2VzKG1lc3NhZ2VzOiAoU2VuZE1lc3NhZ2UgfCBEZWxlZ2F0ZU9yVW5kZWxlZ2V0ZU1lc3NhZ2UgfCBXaXRoZHJhd0RlbGVnYXRvclJld2FyZHNNZXNzYWdlKVtdKTogdGhpcztcblxuICBwdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICB0aGlzLl9wdWJsaWNLZXkgPSBwdWJsaWNLZXk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhY2NvdW50TnVtYmVyKGFjY291bnROdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZCk6IHRoaXMge1xuICAgIHRoaXMuX2FjY291bnROdW1iZXIgPSBhY2NvdW50TnVtYmVyO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgY2hhaW5JZChjaGFpbklkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB0aGlzIHtcbiAgICB0aGlzLl9jaGFpbklkID0gY2hhaW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG1lbW8obWVtbzogc3RyaW5nIHwgdW5kZWZpbmVkKTogdGhpcyB7XG4gICAgdGhpcy5fbWVtbyA9IG1lbW87XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIHNpZ25JbXBsZW1lbnRhdGlvbihrZXk6IEJhc2VLZXkpOiBDb3Ntb3NUcmFuc2FjdGlvbiB7XG4gICAgdGhpcy52YWxpZGF0ZUtleShrZXkpO1xuICAgIGlmICh0aGlzLl9hY2NvdW50TnVtYmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ2FjY291bnROdW1iZXIgaXMgcmVxdWlyZWQgYmVmb3JlIHNpZ25pbmcnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX2NoYWluSWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignY2hhaW5JZCBpcyByZXF1aXJlZCBiZWZvcmUgc2lnbmluZycpO1xuICAgIH1cbiAgICB0aGlzLl9zaWduZXIgPSBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB0aGlzLl9wdWJsaWNLZXkgPSB0aGlzLl9zaWduZXIuZ2V0S2V5cygpLnB1YjtcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBCaWdOdW1iZXIpOiB2b2lkIHtcbiAgICBpZiAodmFsdWUuaXNMZXNzVGhhbigwKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlS2V5KGtleTogQmFzZUtleSk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBuZXcgS2V5UGFpcih7IHBydjoga2V5LmtleSB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEtleSB2YWxpZGF0aW9uIGZhaWxlZGApO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { BaseUtils, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { DecodedTxRaw } from '@cosmjs/proto-signing';
|
|
3
|
+
import { SignDoc, TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
|
|
4
|
+
import { CosmosLikeTransaction, FeeData, MessageData } from './iface';
|
|
5
|
+
export declare class CosmosLikeUtils implements BaseUtils {
|
|
6
|
+
private registry;
|
|
7
|
+
/** @inheritdoc */
|
|
8
|
+
isValidBlockId(hash: string): boolean;
|
|
9
|
+
/** @inheritdoc */
|
|
10
|
+
isValidPrivateKey(key: string): boolean;
|
|
11
|
+
/** @inheritdoc */
|
|
12
|
+
isValidPublicKey(key: string): boolean;
|
|
13
|
+
/** @inheritdoc */
|
|
14
|
+
isValidSignature(signature: string): boolean;
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
isValidTransactionId(txId: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if transaction hash is in valid black2b format
|
|
19
|
+
*/
|
|
20
|
+
validateBlake2b(hash: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Validates whether amounts are in range
|
|
23
|
+
*
|
|
24
|
+
* @param {number[]} amounts - the amounts to validate
|
|
25
|
+
* @returns {boolean} - the validation result
|
|
26
|
+
*/
|
|
27
|
+
isValidAmounts(amounts: number[]): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Validates whether amount is in range
|
|
30
|
+
* @param {number} amount
|
|
31
|
+
* @returns {boolean} the validation result
|
|
32
|
+
*/
|
|
33
|
+
isValidAmount(amount: number): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Decodes raw tx data into messages, signing info, and fee data
|
|
36
|
+
* @param {string} txHex - raw base64 tx
|
|
37
|
+
* @returns {DecodedTxRaw} Decoded transaction
|
|
38
|
+
*/
|
|
39
|
+
getDecodedTxFromRawBase64(txRaw: string): DecodedTxRaw;
|
|
40
|
+
/**
|
|
41
|
+
* Returns the array of messages in the body of the decoded transaction
|
|
42
|
+
* @param {DecodedTxRaw} decodedTx
|
|
43
|
+
* @returns {EncodeObject[]} messages along with type url
|
|
44
|
+
*/
|
|
45
|
+
private getEncodedMessagesFromDecodedTx;
|
|
46
|
+
validateSequence(sequence: number): void;
|
|
47
|
+
/**
|
|
48
|
+
* Pulls the sequence number from a DecodedTxRaw AuthInfo property
|
|
49
|
+
* @param {DecodedTxRaw} decodedTx
|
|
50
|
+
* @returns {number} sequence
|
|
51
|
+
*/
|
|
52
|
+
getSequenceFromDecodedTx(decodedTx: DecodedTxRaw): number;
|
|
53
|
+
/**
|
|
54
|
+
* Pulls the typeUrl from the encoded message of a DecodedTxRaw
|
|
55
|
+
* @param {DecodedTxRaw} decodedTx
|
|
56
|
+
* @returns {string} osmosis proto type url
|
|
57
|
+
*/
|
|
58
|
+
getTypeUrlFromDecodedTx(decodedTx: DecodedTxRaw): string;
|
|
59
|
+
/**
|
|
60
|
+
* Returns the fee data from the decoded transaction
|
|
61
|
+
* @param {DecodedTxRaw} decodedTx
|
|
62
|
+
* @returns {FeeData} fee data
|
|
63
|
+
*/
|
|
64
|
+
getGasBudgetFromDecodedTx(decodedTx: DecodedTxRaw): FeeData;
|
|
65
|
+
/**
|
|
66
|
+
* Returns the publicKey from the decoded transaction
|
|
67
|
+
* @param {DecodedTxRaw} decodedTx
|
|
68
|
+
* @returns {string | undefined} publicKey in hex format if it exists, undefined otherwise
|
|
69
|
+
*/
|
|
70
|
+
getPublicKeyFromDecodedTx(decodedTx: DecodedTxRaw): string | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
73
|
+
* @param {DecodedTxRaw} decodedTx
|
|
74
|
+
* @returns {MessageData[]} Send transaction message data
|
|
75
|
+
*/
|
|
76
|
+
protected getSendMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData[];
|
|
77
|
+
/**
|
|
78
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
79
|
+
* @param {DecodedTxRaw} decodedTx
|
|
80
|
+
* @returns {MessageData[]} Delegate of undelegate transaction message data
|
|
81
|
+
*/
|
|
82
|
+
getDelegateOrUndelegateMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData[];
|
|
83
|
+
/**
|
|
84
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
85
|
+
* @param {DecodedTxRaw} decodedTx
|
|
86
|
+
* @returns {MessageData[]} WithdrawDelegatorRewards transaction message data
|
|
87
|
+
*/
|
|
88
|
+
getWithdrawRewardsMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData[];
|
|
89
|
+
/**
|
|
90
|
+
* Returns the array of MessageData[] from the decoded transaction
|
|
91
|
+
* @param {DecodedTxRaw} decodedTx
|
|
92
|
+
* @returns {MessageData[]} Delegate of undelegate transaction message data
|
|
93
|
+
*/
|
|
94
|
+
getWithdrawDelegatorRewardsMessageDataFromDecodedTx(decodedTx: DecodedTxRaw): MessageData[];
|
|
95
|
+
/**
|
|
96
|
+
* Determines bitgo transaction type based on osmosis proto type url
|
|
97
|
+
* @param {string} typeUrl
|
|
98
|
+
* @returns {TransactionType | undefined} TransactionType if url is supported else undefined
|
|
99
|
+
*/
|
|
100
|
+
getTransactionTypeFromTypeUrl(typeUrl: string): TransactionType | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Creates a txRaw from an cosmos like transaction @see CosmosLikeTransaction
|
|
103
|
+
* @Precondition cosmosLikeTransaction.publicKey must be defined
|
|
104
|
+
* @param {CosmosLikeTransaction} cosmosLikeTransaction
|
|
105
|
+
* @returns {TxRaw} Unsigned raw transaction
|
|
106
|
+
*/
|
|
107
|
+
createTxRawFromCosmosLikeTransaction(cosmosLikeTransaction: CosmosLikeTransaction): TxRaw;
|
|
108
|
+
/**
|
|
109
|
+
* Encodes a signature into a txRaw
|
|
110
|
+
* @param {string} publicKeyHex publicKey in hex encoded string format
|
|
111
|
+
* @param {string} signatureHex signature in hex encoded string format
|
|
112
|
+
* @param {TxRaw} unsignedTx raw transaction
|
|
113
|
+
* @returns {TxRaw} Signed raw transaction
|
|
114
|
+
*/
|
|
115
|
+
createSignedTxRaw(publicKeyHex: string, signatureHex: string, unsignedTx: {
|
|
116
|
+
bodyBytes: Uint8Array;
|
|
117
|
+
authInfoBytes: Uint8Array;
|
|
118
|
+
}): TxRaw;
|
|
119
|
+
/**
|
|
120
|
+
* Decodes a raw transaction into a DecodedTxRaw and checks if it has non empty signatures
|
|
121
|
+
* @param {string} rawTransaction
|
|
122
|
+
* @returns {boolean} true if transaction is signed else false
|
|
123
|
+
*/
|
|
124
|
+
isSignedRawTx(rawTransaction: string): boolean;
|
|
125
|
+
validatePublicKey(publicKey: string | undefined): void;
|
|
126
|
+
/**
|
|
127
|
+
* Validates if the address matches with regex @see accountAddressRegex
|
|
128
|
+
*
|
|
129
|
+
* @param {string} address
|
|
130
|
+
* @returns {boolean} - the validation result
|
|
131
|
+
*/
|
|
132
|
+
isValidAddress(address: string): boolean;
|
|
133
|
+
/**
|
|
134
|
+
* Creates a sign doc from an cosmos like transaction @see CosmosLikeTransaction
|
|
135
|
+
* @Precondition cosmosLikeTransaction.accountNumber and cosmosLikeTransaction.chainId must be defined
|
|
136
|
+
* @param {CosmosLikeTransaction} cosmosLikeTransaction
|
|
137
|
+
* @returns {SignDoc} sign doc
|
|
138
|
+
*/
|
|
139
|
+
createSignDoc(cosmosLikeTransaction: CosmosLikeTransaction, accountNumber: number | undefined, chainId: string | undefined): SignDoc;
|
|
140
|
+
isValidHexString(hexString: string): boolean;
|
|
141
|
+
}
|
|
142
|
+
declare const utils: CosmosLikeUtils;
|
|
143
|
+
export default utils;
|
|
144
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAIT,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,YAAY,EAQb,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAInE,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtE,qBAAa,eAAgB,YAAW,SAAS;IAC/C,OAAO,CAAC,QAAQ,CAA2C;IAE3D,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAStC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAOtC;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO;IAS1C;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQtC;;;;OAIG;IACH,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAQtD;;;;OAIG;IACH,OAAO,CAAC,+BAA+B;IAIvC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;IAMjC;;;;OAIG;IACH,wBAAwB,CAAC,SAAS,EAAE,YAAY,GAAG,MAAM;IAIzD;;;;OAIG;IACH,uBAAuB,CAAC,SAAS,EAAE,YAAY,GAAG,MAAM;IAKxD;;;;OAIG;IACH,yBAAyB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO;IAO3D;;;;OAIG;IACH,yBAAyB,CAAC,SAAS,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS;IAQtE;;;;OAIG;IACH,SAAS,CAAC,+BAA+B,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAcjF;;;;OAIG;IACH,+CAA+C,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAcvF;;;;OAIG;IACH,0CAA0C,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAalF;;;;OAIG;IACH,mDAAmD,CAAC,SAAS,EAAE,YAAY,GAAG,WAAW,EAAE;IAa3F;;;;OAIG;IACH,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAe3E;;;;;OAKG;IACH,oCAAoC,CAAC,qBAAqB,EAAE,qBAAqB,GAAG,KAAK;IAkCzF;;;;;;OAMG;IACH,iBAAiB,CACf,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,aAAa,EAAE,UAAU,CAAA;KAAE,GAC/D,KAAK;IASR;;;;OAIG;IACH,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAQ9C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;IAU/C;;;;;OAKG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC;;;;;OAKG;IACH,aAAa,CACX,qBAAqB,EAAE,qBAAqB,EAC5C,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,OAAO;IAcV,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAG7C;AAED,QAAA,MAAM,KAAK,iBAAwB,CAAC;AAEpC,eAAe,KAAK,CAAC"}
|