@shapeshiftoss/hdwallet-keepkey 1.62.41 → 1.62.42
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/LICENSE.md +6 -6
- package/dist/cjs/.tsbuildinfo +1 -0
- package/dist/{adapter.d.ts → cjs/adapter.d.ts} +6 -7
- package/dist/cjs/adapter.js +146 -0
- package/dist/{binance.d.ts → cjs/binance.d.ts} +3 -4
- package/dist/cjs/binance.js +144 -0
- package/dist/{bitcoin.d.ts → cjs/bitcoin.d.ts} +3 -4
- package/dist/cjs/bitcoin.js +549 -0
- package/dist/{bnbencoding.d.ts → cjs/bnbencoding.d.ts} +3 -2
- package/dist/{bnbencoding.js → cjs/bnbencoding.js} +22 -22
- package/dist/{cosmos.d.ts → cjs/cosmos.d.ts} +4 -5
- package/dist/cjs/cosmos.js +219 -0
- package/dist/{eos.d.ts → cjs/eos.d.ts} +3 -4
- package/dist/cjs/eos.js +244 -0
- package/dist/{ethereum.d.ts → cjs/ethereum.d.ts} +4 -5
- package/dist/cjs/ethereum.js +264 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/{index.js → cjs/index.js} +0 -1
- package/dist/{keepkey.d.ts → cjs/keepkey.d.ts} +45 -20
- package/dist/cjs/keepkey.js +959 -0
- package/dist/{mayachain.d.ts → cjs/mayachain.d.ts} +4 -5
- package/dist/cjs/mayachain.js +169 -0
- package/dist/{osmosis.d.ts → cjs/osmosis.d.ts} +4 -5
- package/dist/cjs/osmosis.js +270 -0
- package/dist/cjs/package.json +1 -0
- package/dist/{ripple.d.ts → cjs/ripple.d.ts} +3 -4
- package/dist/cjs/ripple.js +104 -0
- package/dist/{thorchain.d.ts → cjs/thorchain.d.ts} +4 -5
- package/dist/cjs/thorchain.js +169 -0
- package/dist/{transport.d.ts → cjs/transport.d.ts} +2 -3
- package/dist/cjs/transport.js +333 -0
- package/dist/{typeRegistry.d.ts → cjs/typeRegistry.d.ts} +2 -3
- package/dist/{typeRegistry.js → cjs/typeRegistry.js} +26 -13
- package/dist/{utils.d.ts → cjs/utils.d.ts} +1 -2
- package/dist/{utils.js → cjs/utils.js} +7 -8
- package/dist/esm/.tsbuildinfo +1 -0
- package/dist/esm/adapter.d.ts +35 -0
- package/dist/esm/adapter.js +119 -0
- package/dist/esm/binance.d.ts +5 -0
- package/dist/esm/binance.js +112 -0
- package/dist/esm/bitcoin.d.ts +11 -0
- package/dist/esm/bitcoin.js +511 -0
- package/dist/esm/bnbencoding.d.ts +11 -0
- package/dist/esm/bnbencoding.js +103 -0
- package/dist/esm/cosmos.d.ts +6 -0
- package/dist/esm/cosmos.js +187 -0
- package/dist/esm/eos.d.ts +5 -0
- package/dist/esm/eos.js +212 -0
- package/dist/esm/ethereum.d.ts +17 -0
- package/dist/esm/ethereum.js +229 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/keepkey.d.ts +177 -0
- package/dist/esm/keepkey.js +925 -0
- package/dist/esm/mayachain.d.ts +6 -0
- package/dist/esm/mayachain.js +137 -0
- package/dist/esm/osmosis.d.ts +6 -0
- package/dist/esm/osmosis.js +238 -0
- package/dist/esm/ripple.d.ts +5 -0
- package/dist/esm/ripple.js +72 -0
- package/dist/esm/thorchain.d.ts +6 -0
- package/dist/esm/thorchain.js +137 -0
- package/dist/esm/transport.d.ts +55 -0
- package/dist/esm/transport.js +306 -0
- package/dist/esm/typeRegistry.d.ts +4 -0
- package/dist/esm/typeRegistry.js +47 -0
- package/dist/esm/utils.d.ts +6 -0
- package/dist/esm/utils.js +56 -0
- package/package.json +33 -19
- package/dist/adapter.d.ts.map +0 -1
- package/dist/adapter.js +0 -175
- package/dist/adapter.js.map +0 -1
- package/dist/binance.d.ts.map +0 -1
- package/dist/binance.js +0 -146
- package/dist/binance.js.map +0 -1
- package/dist/bitcoin.d.ts.map +0 -1
- package/dist/bitcoin.js +0 -568
- package/dist/bitcoin.js.map +0 -1
- package/dist/bnbencoding.d.ts.map +0 -1
- package/dist/bnbencoding.js.map +0 -1
- package/dist/cosmos.d.ts.map +0 -1
- package/dist/cosmos.js +0 -230
- package/dist/cosmos.js.map +0 -1
- package/dist/eos.d.ts.map +0 -1
- package/dist/eos.js +0 -247
- package/dist/eos.js.map +0 -1
- package/dist/ethereum.d.ts.map +0 -1
- package/dist/ethereum.js +0 -281
- package/dist/ethereum.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/keepkey.d.ts.map +0 -1
- package/dist/keepkey.js +0 -1027
- package/dist/keepkey.js.map +0 -1
- package/dist/mayachain.d.ts.map +0 -1
- package/dist/mayachain.js +0 -180
- package/dist/mayachain.js.map +0 -1
- package/dist/osmosis.d.ts.map +0 -1
- package/dist/osmosis.js +0 -278
- package/dist/osmosis.js.map +0 -1
- package/dist/ripple.d.ts.map +0 -1
- package/dist/ripple.js +0 -111
- package/dist/ripple.js.map +0 -1
- package/dist/thorchain.d.ts.map +0 -1
- package/dist/thorchain.js +0 -180
- package/dist/thorchain.js.map +0 -1
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js +0 -365
- package/dist/transport.js.map +0 -1
- package/dist/typeRegistry.d.ts.map +0 -1
- package/dist/typeRegistry.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as MayachainMessages from
|
|
2
|
-
import * as core from
|
|
3
|
-
import { Transport } from
|
|
4
|
-
export declare function mayachainGetAccountPaths(msg: core.MayachainGetAccountPaths):
|
|
1
|
+
import * as MayachainMessages from '@keepkey/device-protocol/lib/messages-mayachain_pb';
|
|
2
|
+
import * as core from '@shapeshiftoss/hdwallet-core';
|
|
3
|
+
import type { Transport } from './transport';
|
|
4
|
+
export declare function mayachainGetAccountPaths(msg: core.MayachainGetAccountPaths): core.MayachainAccountPath[];
|
|
5
5
|
export declare function mayachainGetAddress(transport: Transport, msg: MayachainMessages.MayachainGetAddress.AsObject): Promise<string>;
|
|
6
6
|
export declare function mayachainSignTx(transport: Transport, msg: core.MayachainSignTx): Promise<core.MayachainSignedTx>;
|
|
7
|
-
//# sourceMappingURL=mayachain.d.ts.map
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.mayachainSignTx = exports.mayachainGetAddress = exports.mayachainGetAccountPaths = void 0;
|
|
30
|
+
const Messages = __importStar(require("@keepkey/device-protocol/lib/messages_pb"));
|
|
31
|
+
const MayachainMessages = __importStar(require("@keepkey/device-protocol/lib/messages-mayachain_pb"));
|
|
32
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
33
|
+
const bs58check_1 = __importDefault(require("bs58check"));
|
|
34
|
+
const p_lazy_1 = __importDefault(require("p-lazy"));
|
|
35
|
+
const protoTxBuilder = p_lazy_1.default.from(() => Promise.resolve().then(() => __importStar(require('@shapeshiftoss/proto-tx-builder'))));
|
|
36
|
+
function mayachainGetAccountPaths(msg) {
|
|
37
|
+
return [
|
|
38
|
+
{
|
|
39
|
+
addressNList: [
|
|
40
|
+
0x80000000 + 44,
|
|
41
|
+
0x80000000 + core.slip44ByCoin('Mayachain'),
|
|
42
|
+
0x80000000 + msg.accountIdx,
|
|
43
|
+
0,
|
|
44
|
+
0,
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
exports.mayachainGetAccountPaths = mayachainGetAccountPaths;
|
|
50
|
+
async function mayachainGetAddress(transport, msg) {
|
|
51
|
+
const getAddr = new MayachainMessages.MayachainGetAddress();
|
|
52
|
+
getAddr.setAddressNList(msg.addressNList);
|
|
53
|
+
getAddr.setShowDisplay(msg.showDisplay !== false);
|
|
54
|
+
if (msg.testnet !== undefined)
|
|
55
|
+
getAddr.setTestnet(msg.testnet);
|
|
56
|
+
const response = await transport.call(Messages.MessageType.MESSAGETYPE_MAYACHAINGETADDRESS, getAddr, {
|
|
57
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
58
|
+
});
|
|
59
|
+
const mayachainAddress = response.proto;
|
|
60
|
+
return core.mustBeDefined(mayachainAddress.getAddress());
|
|
61
|
+
}
|
|
62
|
+
exports.mayachainGetAddress = mayachainGetAddress;
|
|
63
|
+
async function mayachainSignTx(transport, msg) {
|
|
64
|
+
const address = await mayachainGetAddress(transport, { addressNList: msg.addressNList });
|
|
65
|
+
const getPublicKeyMsg = new Messages.GetPublicKey();
|
|
66
|
+
getPublicKeyMsg.setAddressNList(msg.addressNList);
|
|
67
|
+
getPublicKeyMsg.setEcdsaCurveName('secp256k1');
|
|
68
|
+
const response = await transport.call(Messages.MessageType.MESSAGETYPE_GETPUBLICKEY, getPublicKeyMsg, {
|
|
69
|
+
msgTimeout: core.DEFAULT_TIMEOUT,
|
|
70
|
+
});
|
|
71
|
+
const pubkeyMsg = response.proto;
|
|
72
|
+
const pubkey = bs58check_1.default.decode(core.mustBeDefined(pubkeyMsg.getXpub())).subarray(45);
|
|
73
|
+
return transport.lockDuring(async () => {
|
|
74
|
+
const signTx = new MayachainMessages.MayachainSignTx();
|
|
75
|
+
signTx.setAddressNList(msg.addressNList);
|
|
76
|
+
signTx.setAccountNumber(msg.account_number);
|
|
77
|
+
signTx.setChainId(msg.chain_id);
|
|
78
|
+
signTx.setFeeAmount(parseInt(msg.tx.fee.amount[0].amount));
|
|
79
|
+
signTx.setGas(parseInt(msg.tx.fee.gas));
|
|
80
|
+
signTx.setSequence(msg.sequence);
|
|
81
|
+
if (msg.tx.memo !== undefined)
|
|
82
|
+
signTx.setMemo(msg.tx.memo);
|
|
83
|
+
signTx.setMsgCount(1);
|
|
84
|
+
let resp = await transport.call(Messages.MessageType.MESSAGETYPE_MAYACHAINSIGNTX, signTx, {
|
|
85
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
86
|
+
omitLock: true,
|
|
87
|
+
});
|
|
88
|
+
for (const m of msg.tx.msg) {
|
|
89
|
+
if (resp.message_enum !== Messages.MessageType.MESSAGETYPE_MAYACHAINMSGREQUEST) {
|
|
90
|
+
throw new Error(`Unexpected response: ${resp.message_type}`);
|
|
91
|
+
}
|
|
92
|
+
const msgAck = new MayachainMessages.MayachainMsgAck();
|
|
93
|
+
switch (m.type) {
|
|
94
|
+
case 'mayachain/MsgSend': {
|
|
95
|
+
if (m.value.amount.length !== 1) {
|
|
96
|
+
throw new Error('Multiple amounts per MsgSend not supported');
|
|
97
|
+
}
|
|
98
|
+
const denom = m.value.amount[0].denom;
|
|
99
|
+
if (denom !== 'cacao')
|
|
100
|
+
throw new Error(`Unsupported denomination: ${denom}`);
|
|
101
|
+
const send = new MayachainMessages.MayachainMsgSend();
|
|
102
|
+
send.setFromAddress(m.value.from_address);
|
|
103
|
+
send.setToAddress(m.value.to_address);
|
|
104
|
+
send.setAmount(m.value.amount[0].amount);
|
|
105
|
+
send.setDenom(denom);
|
|
106
|
+
msgAck.setSend(send);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
case 'mayachain/MsgDeposit': {
|
|
110
|
+
if (m.value.coins.length !== 1) {
|
|
111
|
+
throw new Error('Multiple amounts per MsgDeposit not supported');
|
|
112
|
+
}
|
|
113
|
+
const coinAsset = m.value.coins[0].asset;
|
|
114
|
+
if (coinAsset !== 'MAYA.CACAO')
|
|
115
|
+
throw new Error(`Unsupported coin asset: ${coinAsset}`);
|
|
116
|
+
const deposit = new MayachainMessages.MayachainMsgDeposit();
|
|
117
|
+
deposit.setAsset(m.value.coins[0].asset);
|
|
118
|
+
deposit.setAmount(m.value.coins[0].amount);
|
|
119
|
+
deposit.setMemo(m.value.memo);
|
|
120
|
+
deposit.setSigner(m.value.signer);
|
|
121
|
+
msgAck.setDeposit(deposit);
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
default:
|
|
125
|
+
throw new Error(`Message ${m.type} is not yet supported`);
|
|
126
|
+
}
|
|
127
|
+
resp = await transport.call(Messages.MessageType.MESSAGETYPE_MAYACHAINMSGACK, msgAck, {
|
|
128
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
129
|
+
omitLock: true,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (resp.message_enum !== Messages.MessageType.MESSAGETYPE_MAYACHAINSIGNEDTX) {
|
|
133
|
+
throw new Error(`Unexpected response: ${resp.message_type}`);
|
|
134
|
+
}
|
|
135
|
+
const signedTx = resp.proto;
|
|
136
|
+
const offlineSigner = {
|
|
137
|
+
async getAccounts() {
|
|
138
|
+
return [
|
|
139
|
+
{
|
|
140
|
+
address,
|
|
141
|
+
algo: 'secp256k1',
|
|
142
|
+
pubkey,
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
},
|
|
146
|
+
async signAmino(signerAddress, signDoc) {
|
|
147
|
+
if (signerAddress !== address)
|
|
148
|
+
throw new Error('expected signerAddress to match address');
|
|
149
|
+
return {
|
|
150
|
+
signed: signDoc,
|
|
151
|
+
signature: {
|
|
152
|
+
pub_key: {
|
|
153
|
+
type: 'tendermint/PubKeySecp256k1',
|
|
154
|
+
value: signedTx.getPublicKey_asB64(),
|
|
155
|
+
},
|
|
156
|
+
signature: signedTx.getSignature_asB64(),
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
const signerData = {
|
|
162
|
+
sequence: Number(msg.sequence),
|
|
163
|
+
accountNumber: Number(msg.account_number),
|
|
164
|
+
chainId: msg.chain_id,
|
|
165
|
+
};
|
|
166
|
+
return (await protoTxBuilder).sign(address, msg.tx, offlineSigner, signerData, 'maya');
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
exports.mayachainSignTx = mayachainSignTx;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as OsmosisMessages from
|
|
2
|
-
import * as core from
|
|
3
|
-
import { Transport } from
|
|
4
|
-
export declare function osmosisGetAccountPaths(msg: core.OsmosisGetAccountPaths):
|
|
1
|
+
import * as OsmosisMessages from '@keepkey/device-protocol/lib/messages-osmosis_pb';
|
|
2
|
+
import * as core from '@shapeshiftoss/hdwallet-core';
|
|
3
|
+
import type { Transport } from './transport';
|
|
4
|
+
export declare function osmosisGetAccountPaths(msg: core.OsmosisGetAccountPaths): core.OsmosisAccountPath[];
|
|
5
5
|
export declare function osmosisGetAddress(transport: Transport, msg: OsmosisMessages.OsmosisGetAddress.AsObject): Promise<string>;
|
|
6
6
|
export declare function osmosisSignTx(transport: Transport, msg: core.OsmosisSignTx): Promise<any>;
|
|
7
|
-
//# sourceMappingURL=osmosis.d.ts.map
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.osmosisSignTx = exports.osmosisGetAddress = exports.osmosisGetAccountPaths = void 0;
|
|
30
|
+
const Messages = __importStar(require("@keepkey/device-protocol/lib/messages_pb"));
|
|
31
|
+
const OsmosisMessages = __importStar(require("@keepkey/device-protocol/lib/messages-osmosis_pb"));
|
|
32
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
33
|
+
const hdwallet_core_1 = require("@shapeshiftoss/hdwallet-core");
|
|
34
|
+
const bs58check_1 = __importDefault(require("bs58check"));
|
|
35
|
+
const p_lazy_1 = __importDefault(require("p-lazy"));
|
|
36
|
+
const protoTxBuilder = p_lazy_1.default.from(() => Promise.resolve().then(() => __importStar(require('@shapeshiftoss/proto-tx-builder'))));
|
|
37
|
+
function osmosisGetAccountPaths(msg) {
|
|
38
|
+
return [
|
|
39
|
+
{
|
|
40
|
+
addressNList: [
|
|
41
|
+
0x80000000 + 44,
|
|
42
|
+
0x80000000 + core.slip44ByCoin('Osmo'),
|
|
43
|
+
0x80000000 + msg.accountIdx,
|
|
44
|
+
0,
|
|
45
|
+
0,
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
exports.osmosisGetAccountPaths = osmosisGetAccountPaths;
|
|
51
|
+
async function osmosisGetAddress(transport, msg) {
|
|
52
|
+
const getAddr = new OsmosisMessages.OsmosisGetAddress();
|
|
53
|
+
getAddr.setAddressNList(msg.addressNList);
|
|
54
|
+
getAddr.setShowDisplay(msg.showDisplay !== false);
|
|
55
|
+
const response = await transport.call(Messages.MessageType.MESSAGETYPE_OSMOSISGETADDRESS, getAddr, {
|
|
56
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
57
|
+
});
|
|
58
|
+
const osmosisAddress = response.proto;
|
|
59
|
+
return core.mustBeDefined(osmosisAddress.getAddress());
|
|
60
|
+
}
|
|
61
|
+
exports.osmosisGetAddress = osmosisGetAddress;
|
|
62
|
+
async function osmosisSignTx(transport, msg) {
|
|
63
|
+
const address = await osmosisGetAddress(transport, {
|
|
64
|
+
addressNList: msg.addressNList,
|
|
65
|
+
showDisplay: false,
|
|
66
|
+
});
|
|
67
|
+
const getPublicKeyMsg = new Messages.GetPublicKey();
|
|
68
|
+
getPublicKeyMsg.setAddressNList(msg.addressNList);
|
|
69
|
+
getPublicKeyMsg.setEcdsaCurveName('secp256k1');
|
|
70
|
+
const pubkeyMsg = (await transport.call(Messages.MessageType.MESSAGETYPE_GETPUBLICKEY, getPublicKeyMsg, {
|
|
71
|
+
msgTimeout: core.DEFAULT_TIMEOUT,
|
|
72
|
+
})).proto;
|
|
73
|
+
const pubkey = bs58check_1.default.decode(core.mustBeDefined(pubkeyMsg.getXpub())).slice(45);
|
|
74
|
+
return transport.lockDuring(async () => {
|
|
75
|
+
const signTx = new OsmosisMessages.OsmosisSignTx();
|
|
76
|
+
signTx.setAddressNList(msg.addressNList);
|
|
77
|
+
signTx.setAccountNumber(msg.account_number);
|
|
78
|
+
signTx.setChainId(msg.chain_id);
|
|
79
|
+
signTx.setFeeAmount(parseInt(msg.tx.fee.amount[0].amount));
|
|
80
|
+
signTx.setGas(parseInt(msg.tx.fee.gas));
|
|
81
|
+
signTx.setSequence(msg.sequence);
|
|
82
|
+
if (msg.tx.memo !== undefined) {
|
|
83
|
+
signTx.setMemo(msg.tx.memo);
|
|
84
|
+
}
|
|
85
|
+
signTx.setMsgCount(1);
|
|
86
|
+
let resp = await transport.call(Messages.MessageType.MESSAGETYPE_OSMOSISSIGNTX, signTx, {
|
|
87
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
88
|
+
omitLock: true,
|
|
89
|
+
});
|
|
90
|
+
for (const m of msg.tx.msg) {
|
|
91
|
+
if (resp.message_enum !== Messages.MessageType.MESSAGETYPE_OSMOSISMSGREQUEST) {
|
|
92
|
+
throw new Error(`osmosis: unexpected response ${resp.message_type}`);
|
|
93
|
+
}
|
|
94
|
+
let ack;
|
|
95
|
+
switch (m.type) {
|
|
96
|
+
case 'cosmos-sdk/MsgSend': {
|
|
97
|
+
// Transfer
|
|
98
|
+
if (m.value.amount.length !== 1) {
|
|
99
|
+
throw new Error('osmosis: Multiple amounts per msg not supported');
|
|
100
|
+
}
|
|
101
|
+
const denom = m.value.amount[0].denom;
|
|
102
|
+
if (denom !== 'uosmo') {
|
|
103
|
+
throw new Error('osmosis: Unsupported denomination: ' + denom);
|
|
104
|
+
}
|
|
105
|
+
const send = new OsmosisMessages.OsmosisMsgSend();
|
|
106
|
+
send.setFromAddress(m.value.from_address);
|
|
107
|
+
send.setToAddress(m.value.to_address);
|
|
108
|
+
send.setDenom(m.value.amount[0].denom);
|
|
109
|
+
send.setAmount(m.value.amount[0].amount);
|
|
110
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
111
|
+
ack.setSend(send);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 'cosmos-sdk/MsgDelegate': {
|
|
115
|
+
// Delegate
|
|
116
|
+
const denom = m.value.amount.denom;
|
|
117
|
+
if (denom !== 'uosmo') {
|
|
118
|
+
throw new Error('osmosis: Unsupported denomination: ' + denom);
|
|
119
|
+
}
|
|
120
|
+
const delegate = new OsmosisMessages.OsmosisMsgDelegate();
|
|
121
|
+
delegate.setDelegatorAddress(m.value.delegator_address);
|
|
122
|
+
delegate.setValidatorAddress(m.value.validator_address);
|
|
123
|
+
delegate.setDenom(m.value.amount.denom);
|
|
124
|
+
delegate.setAmount(m.value.amount.amount);
|
|
125
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
126
|
+
ack.setDelegate(delegate);
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'cosmos-sdk/MsgUndelegate': {
|
|
130
|
+
// Undelegate
|
|
131
|
+
const denom = m.value.amount.denom;
|
|
132
|
+
if (denom !== 'uosmo') {
|
|
133
|
+
throw new Error('osmosis: Unsupported denomination: ' + denom);
|
|
134
|
+
}
|
|
135
|
+
const undelegate = new OsmosisMessages.OsmosisMsgUndelegate();
|
|
136
|
+
undelegate.setDelegatorAddress(m.value.delegator_address);
|
|
137
|
+
undelegate.setValidatorAddress(m.value.validator_address);
|
|
138
|
+
undelegate.setDenom(m.value.amount.denom);
|
|
139
|
+
undelegate.setAmount(m.value.amount.amount);
|
|
140
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
141
|
+
ack.setUndelegate(undelegate);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
case 'cosmos-sdk/MsgBeginRedelegate': {
|
|
145
|
+
// Redelegate
|
|
146
|
+
const denom = m.value.amount.denom;
|
|
147
|
+
if (denom !== 'uosmo') {
|
|
148
|
+
throw new Error('osmosis: Unsupported denomination: ' + denom);
|
|
149
|
+
}
|
|
150
|
+
const redelegate = new OsmosisMessages.OsmosisMsgRedelegate();
|
|
151
|
+
redelegate.setDelegatorAddress(m.value.delegator_address);
|
|
152
|
+
redelegate.setValidatorSrcAddress(m.value.validator_src_address);
|
|
153
|
+
redelegate.setValidatorDstAddress(m.value.validator_dst_address);
|
|
154
|
+
redelegate.setAmount(m.value.amount.amount);
|
|
155
|
+
redelegate.setDenom(m.value.amount.denom);
|
|
156
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
157
|
+
ack.setRedelegate(redelegate);
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
case 'cosmos-sdk/MsgWithdrawDelegationReward': {
|
|
161
|
+
// Rewards
|
|
162
|
+
const rewards = new OsmosisMessages.OsmosisMsgRewards();
|
|
163
|
+
rewards.setDelegatorAddress(m.value.delegator_address);
|
|
164
|
+
rewards.setValidatorAddress(m.value.validator_address);
|
|
165
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
166
|
+
ack.setRewards(rewards);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
case 'osmosis/gamm/join-pool': {
|
|
170
|
+
// LP add
|
|
171
|
+
const lpAdd = new OsmosisMessages.OsmosisMsgLPAdd();
|
|
172
|
+
lpAdd.setSender(m.value.sender);
|
|
173
|
+
lpAdd.setPoolId(m.value.pool_id);
|
|
174
|
+
lpAdd.setShareOutAmount(m.value.share_out_amount);
|
|
175
|
+
lpAdd.setDenomInMaxA(m.value.token_in_maxs[0].denom);
|
|
176
|
+
lpAdd.setAmountInMaxA(m.value.token_in_maxs[0].amount);
|
|
177
|
+
lpAdd.setDenomInMaxB(m.value.token_in_maxs[1].denom);
|
|
178
|
+
lpAdd.setAmountInMaxB(m.value.token_in_maxs[1].amount);
|
|
179
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
180
|
+
ack.setLpAdd(lpAdd);
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
case 'osmosis/gamm/exit-pool': {
|
|
184
|
+
// LP remove
|
|
185
|
+
const lpRemove = new OsmosisMessages.OsmosisMsgLPRemove();
|
|
186
|
+
lpRemove.setSender(m.value.sender);
|
|
187
|
+
lpRemove.setPoolId(m.value.pool_id);
|
|
188
|
+
lpRemove.setShareInAmount(m.value.share_in_amount);
|
|
189
|
+
lpRemove.setDenomOutMinA(m.value.token_out_mins[0].denom);
|
|
190
|
+
lpRemove.setAmountOutMinA(m.value.token_out_mins[0].amount);
|
|
191
|
+
lpRemove.setDenomOutMinB(m.value.token_out_mins[1].denom);
|
|
192
|
+
lpRemove.setAmountOutMinB(m.value.token_out_mins[1].amount);
|
|
193
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
194
|
+
ack.setLpRemove(lpRemove);
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
case 'cosmos-sdk/MsgTransfer': {
|
|
198
|
+
// IBC Transfer
|
|
199
|
+
const ibcTransfer = new OsmosisMessages.OsmosisMsgIBCTransfer();
|
|
200
|
+
ibcTransfer.setReceiver(m.value.receiver);
|
|
201
|
+
ibcTransfer.setSender(m.value.sender);
|
|
202
|
+
ibcTransfer.setSourceChannel(m.value.source_channel);
|
|
203
|
+
ibcTransfer.setSourcePort(m.value.source_port);
|
|
204
|
+
ibcTransfer.setRevisionHeight(m.value.timeout_height.revision_height);
|
|
205
|
+
ibcTransfer.setRevisionNumber(m.value.timeout_height.revision_number);
|
|
206
|
+
ibcTransfer.setAmount(m.value.token.amount);
|
|
207
|
+
ibcTransfer.setDenom(m.value.token.denom);
|
|
208
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
209
|
+
ack.setIbcTransfer(ibcTransfer);
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
case 'osmosis/gamm/swap-exact-amount-in': {
|
|
213
|
+
// Swap
|
|
214
|
+
const swap = new OsmosisMessages.OsmosisMsgSwap();
|
|
215
|
+
swap.setSender(m.value.sender);
|
|
216
|
+
swap.setPoolId(m.value.routes[0].pool_id);
|
|
217
|
+
swap.setTokenOutDenom(m.value.routes[0].token_out_denom);
|
|
218
|
+
swap.setTokenInDenom(m.value.token_in.denom);
|
|
219
|
+
swap.setTokenInAmount(m.value.token_in.amount);
|
|
220
|
+
swap.setTokenOutMinAmount(m.value.token_out_min_amount);
|
|
221
|
+
ack = new OsmosisMessages.OsmosisMsgAck();
|
|
222
|
+
ack.setSwap(swap);
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
default:
|
|
226
|
+
throw new Error(`osmosis: Message ${m.type} is not yet supported`);
|
|
227
|
+
}
|
|
228
|
+
resp = await transport.call(Messages.MessageType.MESSAGETYPE_OSMOSISMSGACK, ack, {
|
|
229
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
230
|
+
omitLock: true,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
if (resp.message_enum !== Messages.MessageType.MESSAGETYPE_OSMOSISSIGNEDTX) {
|
|
234
|
+
throw new Error(`osmosis: unexpected response ${resp.message_type}`);
|
|
235
|
+
}
|
|
236
|
+
const signedTx = resp.proto;
|
|
237
|
+
const offlineSigner = {
|
|
238
|
+
async getAccounts() {
|
|
239
|
+
return [
|
|
240
|
+
{
|
|
241
|
+
address,
|
|
242
|
+
algo: 'secp256k1',
|
|
243
|
+
pubkey,
|
|
244
|
+
},
|
|
245
|
+
];
|
|
246
|
+
},
|
|
247
|
+
async signAmino(signerAddress, signDoc) {
|
|
248
|
+
if (signerAddress !== address)
|
|
249
|
+
throw new Error('expected signerAddress to match address');
|
|
250
|
+
return {
|
|
251
|
+
signed: signDoc,
|
|
252
|
+
signature: {
|
|
253
|
+
pub_key: {
|
|
254
|
+
type: 'tendermint/PubKeySecp256k1',
|
|
255
|
+
value: signedTx.getPublicKey_asB64(),
|
|
256
|
+
},
|
|
257
|
+
signature: signedTx.getSignature_asB64(),
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
},
|
|
261
|
+
};
|
|
262
|
+
const signerData = {
|
|
263
|
+
sequence: Number(msg.sequence),
|
|
264
|
+
accountNumber: Number(msg.account_number),
|
|
265
|
+
chainId: msg.chain_id,
|
|
266
|
+
};
|
|
267
|
+
return (await protoTxBuilder).sign(address, (0, hdwallet_core_1.sortTxFields)(msg.tx), offlineSigner, signerData, 'osmo');
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
exports.osmosisSignTx = osmosisSignTx;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "commonjs"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import * as core from
|
|
2
|
-
import { Transport } from
|
|
3
|
-
export declare function rippleGetAccountPaths(msg: core.RippleGetAccountPaths):
|
|
1
|
+
import * as core from '@shapeshiftoss/hdwallet-core';
|
|
2
|
+
import type { Transport } from './transport';
|
|
3
|
+
export declare function rippleGetAccountPaths(msg: core.RippleGetAccountPaths): core.RippleAccountPath[];
|
|
4
4
|
export declare function rippleSignTx(transport: Transport, msg: core.RippleSignTx): Promise<core.RippleSignedTx>;
|
|
5
5
|
export declare function rippleGetAddress(transport: Transport, msg: core.RippleGetAddress): Promise<string>;
|
|
6
|
-
//# sourceMappingURL=ripple.d.ts.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.rippleGetAddress = exports.rippleSignTx = exports.rippleGetAccountPaths = void 0;
|
|
30
|
+
const Messages = __importStar(require("@keepkey/device-protocol/lib/messages_pb"));
|
|
31
|
+
const RippleMessages = __importStar(require("@keepkey/device-protocol/lib/messages-ripple_pb"));
|
|
32
|
+
const core = __importStar(require("@shapeshiftoss/hdwallet-core"));
|
|
33
|
+
const cloneDeep_1 = __importDefault(require("lodash/cloneDeep"));
|
|
34
|
+
function rippleGetAccountPaths(msg) {
|
|
35
|
+
return [
|
|
36
|
+
{
|
|
37
|
+
addressNList: [
|
|
38
|
+
0x80000000 + 44,
|
|
39
|
+
0x80000000 + core.slip44ByCoin('Ripple'),
|
|
40
|
+
0x80000000 + msg.accountIdx,
|
|
41
|
+
0,
|
|
42
|
+
0,
|
|
43
|
+
],
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
exports.rippleGetAccountPaths = rippleGetAccountPaths;
|
|
48
|
+
async function rippleSignTx(transport, msg) {
|
|
49
|
+
return transport.lockDuring(async () => {
|
|
50
|
+
const signTx = new RippleMessages.RippleSignTx();
|
|
51
|
+
signTx.setAddressNList(msg.addressNList);
|
|
52
|
+
signTx.setFee(parseInt(msg.tx.value.fee.amount[0].amount));
|
|
53
|
+
signTx.setSequence(parseInt(msg.sequence));
|
|
54
|
+
signTx.setLastLedgerSequence(parseInt(msg.lastLedgerSequence));
|
|
55
|
+
const payment = new RippleMessages.RipplePayment();
|
|
56
|
+
payment.setAmount(parseInt(msg.payment.amount));
|
|
57
|
+
payment.setDestination(msg.payment.destination);
|
|
58
|
+
if (msg.payment.destinationTag !== undefined)
|
|
59
|
+
payment.setDestinationTag(parseInt(msg.payment.destinationTag));
|
|
60
|
+
signTx.setPayment(payment);
|
|
61
|
+
const resp = await transport.call(Messages.MessageType.MESSAGETYPE_RIPPLESIGNTX, signTx, {
|
|
62
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
63
|
+
omitLock: true,
|
|
64
|
+
});
|
|
65
|
+
for (const m of msg.tx.value.msg) {
|
|
66
|
+
if (m.type === 'ripple-sdk/MsgSend') {
|
|
67
|
+
if (m.value.amount.length !== 1) {
|
|
68
|
+
throw new Error('ripple: Multiple amounts per msg not supported');
|
|
69
|
+
}
|
|
70
|
+
const denom = m.value.amount[0].denom;
|
|
71
|
+
if (denom !== 'drop') {
|
|
72
|
+
throw new Error('ripple: Unsupported denomination: ' + denom);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
throw new Error(`ripple: Message ${m.type} is not yet supported`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (resp.message_enum !== Messages.MessageType.MESSAGETYPE_RIPPLESIGNEDTX) {
|
|
80
|
+
throw new Error(`ripple: unexpected response ${resp.message_type}`);
|
|
81
|
+
}
|
|
82
|
+
const signedTx = resp.proto;
|
|
83
|
+
const signed = (0, cloneDeep_1.default)(msg.tx);
|
|
84
|
+
signed.value.signatures = [
|
|
85
|
+
{
|
|
86
|
+
serializedTx: signedTx.getSerializedTx_asB64(),
|
|
87
|
+
signature: signedTx.getSignature_asB64(),
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
return signed;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
exports.rippleSignTx = rippleSignTx;
|
|
94
|
+
async function rippleGetAddress(transport, msg) {
|
|
95
|
+
const getAddr = new RippleMessages.RippleGetAddress();
|
|
96
|
+
getAddr.setAddressNList(msg.addressNList);
|
|
97
|
+
getAddr.setShowDisplay(msg.showDisplay !== false);
|
|
98
|
+
const response = await transport.call(Messages.MessageType.MESSAGETYPE_RIPPLEGETADDRESS, getAddr, {
|
|
99
|
+
msgTimeout: core.LONG_TIMEOUT,
|
|
100
|
+
});
|
|
101
|
+
const rippleAddress = response.proto;
|
|
102
|
+
return core.mustBeDefined(rippleAddress.getAddress());
|
|
103
|
+
}
|
|
104
|
+
exports.rippleGetAddress = rippleGetAddress;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import * as ThorchainMessages from
|
|
2
|
-
import * as core from
|
|
3
|
-
import { Transport } from
|
|
4
|
-
export declare function thorchainGetAccountPaths(msg: core.ThorchainGetAccountPaths):
|
|
1
|
+
import * as ThorchainMessages from '@keepkey/device-protocol/lib/messages-thorchain_pb';
|
|
2
|
+
import * as core from '@shapeshiftoss/hdwallet-core';
|
|
3
|
+
import type { Transport } from './transport';
|
|
4
|
+
export declare function thorchainGetAccountPaths(msg: core.ThorchainGetAccountPaths): core.ThorchainAccountPath[];
|
|
5
5
|
export declare function thorchainGetAddress(transport: Transport, msg: ThorchainMessages.ThorchainGetAddress.AsObject): Promise<string>;
|
|
6
6
|
export declare function thorchainSignTx(transport: Transport, msg: core.ThorchainSignTx): Promise<any>;
|
|
7
|
-
//# sourceMappingURL=thorchain.d.ts.map
|