@injectivelabs/wallet-trezor 1.15.0 → 1.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/strategy/Base.d.ts +42 -0
- package/dist/cjs/strategy/Base.js +281 -0
- package/dist/cjs/strategy/Base.js.map +1 -0
- package/dist/cjs/strategy/TrezorBip32.d.ts +5 -0
- package/dist/cjs/strategy/TrezorBip32.js +18 -0
- package/dist/cjs/strategy/TrezorBip32.js.map +1 -0
- package/dist/cjs/strategy/TrezorBip44.d.ts +5 -0
- package/dist/cjs/strategy/TrezorBip44.js +18 -0
- package/dist/cjs/strategy/TrezorBip44.js.map +1 -0
- package/dist/cjs/strategy/hw/AccountManager.d.ts +19 -0
- package/dist/cjs/strategy/hw/AccountManager.js +107 -0
- package/dist/cjs/strategy/hw/AccountManager.js.map +1 -0
- package/dist/cjs/strategy/hw/index.d.ts +4 -0
- package/dist/cjs/strategy/hw/index.js +13 -0
- package/dist/cjs/strategy/hw/index.js.map +1 -0
- package/dist/cjs/strategy/hw/transport/base.d.ts +6 -0
- package/dist/cjs/strategy/hw/transport/base.js +20 -0
- package/dist/cjs/strategy/hw/transport/base.js.map +1 -0
- package/dist/cjs/strategy/hw/transport/transport-init.d.ts +4 -0
- package/dist/cjs/strategy/hw/transport/transport-init.js +28 -0
- package/dist/cjs/strategy/hw/transport/transport-init.js.map +1 -0
- package/dist/cjs/strategy/hw/transport/transport-no-init.d.ts +4 -0
- package/dist/cjs/strategy/hw/transport/transport-no-init.js +13 -0
- package/dist/cjs/strategy/hw/transport/transport-no-init.js.map +1 -0
- package/dist/cjs/types.d.ts +11 -0
- package/dist/cjs/types.js +10 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +16 -0
- package/dist/cjs/utils.js +35 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/strategy/Base.d.ts +42 -0
- package/dist/esm/strategy/Base.js +278 -0
- package/dist/esm/strategy/Base.js.map +1 -0
- package/dist/esm/strategy/TrezorBip32.d.ts +5 -0
- package/dist/esm/strategy/TrezorBip32.js +11 -0
- package/dist/esm/strategy/TrezorBip32.js.map +1 -0
- package/dist/esm/strategy/TrezorBip44.d.ts +5 -0
- package/dist/esm/strategy/TrezorBip44.js +11 -0
- package/dist/esm/strategy/TrezorBip44.js.map +1 -0
- package/dist/esm/strategy/hw/AccountManager.d.ts +19 -0
- package/dist/esm/strategy/hw/AccountManager.js +101 -0
- package/dist/esm/strategy/hw/AccountManager.js.map +1 -0
- package/dist/esm/strategy/hw/index.d.ts +4 -0
- package/dist/esm/strategy/hw/index.js +5 -0
- package/dist/esm/strategy/hw/index.js.map +1 -0
- package/dist/esm/strategy/hw/transport/base.d.ts +6 -0
- package/dist/esm/strategy/hw/transport/base.js +14 -0
- package/dist/esm/strategy/hw/transport/base.js.map +1 -0
- package/dist/esm/strategy/hw/transport/transport-init.d.ts +4 -0
- package/dist/esm/strategy/hw/transport/transport-init.js +22 -0
- package/dist/esm/strategy/hw/transport/transport-init.js.map +1 -0
- package/dist/esm/strategy/hw/transport/transport-no-init.d.ts +4 -0
- package/dist/esm/strategy/hw/transport/transport-no-init.js +7 -0
- package/dist/esm/strategy/hw/transport/transport-no-init.js.map +1 -0
- package/dist/esm/types.d.ts +11 -0
- package/dist/esm/types.js +7 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +16 -0
- package/dist/esm/utils.js +31 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,23 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.TrezorBip44Strategy = exports.TrezorBip32Strategy = void 0;
|
|
18
|
+
var TrezorBip32_js_1 = require("./strategy/TrezorBip32.js");
|
|
19
|
+
Object.defineProperty(exports, "TrezorBip32Strategy", { enumerable: true, get: function () { return TrezorBip32_js_1.TrezorBip32; } });
|
|
20
|
+
var TrezorBip44_js_1 = require("./strategy/TrezorBip44.js");
|
|
21
|
+
Object.defineProperty(exports, "TrezorBip44Strategy", { enumerable: true, get: function () { return TrezorBip44_js_1.TrezorBip44; } });
|
|
22
|
+
__exportStar(require("./types.js"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4DAA8E;AAArE,qHAAA,WAAW,OAAuB;AAC3C,4DAA8E;AAArE,qHAAA,WAAW,OAAuB;AAE3C,6CAA0B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AccountAddress, EthereumChainId } from '@injectivelabs/ts-types';
|
|
2
|
+
import { TxRaw, TxResponse, DirectSignResponse, AminoSignResponse } from '@injectivelabs/sdk-ts';
|
|
3
|
+
import { StdSignDoc, WalletDeviceType, BaseConcreteStrategy, ConcreteWalletStrategy, SendTransactionOptions, ConcreteEthereumWalletStrategyArgs } from '@injectivelabs/wallet-base';
|
|
4
|
+
import { TrezorDerivationPathType } from '../types.js';
|
|
5
|
+
export default class TrezorBase extends BaseConcreteStrategy implements ConcreteWalletStrategy {
|
|
6
|
+
private baseDerivationPath;
|
|
7
|
+
private trezor;
|
|
8
|
+
private ethereumOptions;
|
|
9
|
+
private alchemy;
|
|
10
|
+
private derivationPathType;
|
|
11
|
+
constructor(args: ConcreteEthereumWalletStrategyArgs & {
|
|
12
|
+
derivationPathType: TrezorDerivationPathType;
|
|
13
|
+
});
|
|
14
|
+
getWalletDeviceType(): Promise<WalletDeviceType>;
|
|
15
|
+
enable(): Promise<boolean>;
|
|
16
|
+
disconnect(): Promise<void>;
|
|
17
|
+
getAddresses(): Promise<string[]>;
|
|
18
|
+
getSessionOrConfirm(address: AccountAddress): Promise<string>;
|
|
19
|
+
sendEthereumTransaction(txData: any, options: {
|
|
20
|
+
address: string;
|
|
21
|
+
ethereumChainId: EthereumChainId;
|
|
22
|
+
}): Promise<string>;
|
|
23
|
+
sendTransaction(transaction: TxRaw, options: SendTransactionOptions): Promise<TxResponse>;
|
|
24
|
+
signEip712TypedData(eip712json: string, address: AccountAddress): Promise<string>;
|
|
25
|
+
signAminoCosmosTransaction(_transaction: {
|
|
26
|
+
address: string;
|
|
27
|
+
signDoc: StdSignDoc;
|
|
28
|
+
}): Promise<AminoSignResponse>;
|
|
29
|
+
signCosmosTransaction(_transaction: {
|
|
30
|
+
txRaw: TxRaw;
|
|
31
|
+
accountNumber: number;
|
|
32
|
+
chainId: string;
|
|
33
|
+
address: string;
|
|
34
|
+
}): Promise<DirectSignResponse>;
|
|
35
|
+
signArbitrary(signer: AccountAddress, data: string | Uint8Array): Promise<string>;
|
|
36
|
+
getEthereumChainId(): Promise<string>;
|
|
37
|
+
getEthereumTransactionReceipt(txHash: string): Promise<string>;
|
|
38
|
+
getPubKey(): Promise<string>;
|
|
39
|
+
private signEthereumTransaction;
|
|
40
|
+
private getWalletForAddress;
|
|
41
|
+
private getAlchemy;
|
|
42
|
+
}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable camelcase */
|
|
4
|
+
/* eslint-disable class-methods-use-this */
|
|
5
|
+
const ts_types_1 = require("@injectivelabs/ts-types");
|
|
6
|
+
const alchemy_sdk_1 = require("alchemy-sdk");
|
|
7
|
+
const ethereumjs_util_1 = require("ethereumjs-util");
|
|
8
|
+
const tx_1 = require("@ethereumjs/tx");
|
|
9
|
+
const common_1 = require("@ethereumjs/common");
|
|
10
|
+
const trezor_connect_web_1 = require("@bangjelkoski/trezor-connect-web");
|
|
11
|
+
const exceptions_1 = require("@injectivelabs/exceptions");
|
|
12
|
+
const sdk_ts_1 = require("@injectivelabs/sdk-ts");
|
|
13
|
+
const wallet_base_1 = require("@injectivelabs/wallet-base");
|
|
14
|
+
const index_js_1 = require("./hw/index.js");
|
|
15
|
+
const utils_js_1 = require("../utils.js");
|
|
16
|
+
const getNetworkFromChainId = (chainId) => {
|
|
17
|
+
if (chainId === ts_types_1.EthereumChainId.Goerli) {
|
|
18
|
+
return common_1.Chain.Goerli;
|
|
19
|
+
}
|
|
20
|
+
if (chainId === ts_types_1.EthereumChainId.Sepolia) {
|
|
21
|
+
return common_1.Chain.Sepolia;
|
|
22
|
+
}
|
|
23
|
+
if (chainId === ts_types_1.EthereumChainId.Kovan) {
|
|
24
|
+
return common_1.Chain.Goerli;
|
|
25
|
+
}
|
|
26
|
+
return common_1.Chain.Mainnet;
|
|
27
|
+
};
|
|
28
|
+
class TrezorBase extends wallet_base_1.BaseConcreteStrategy {
|
|
29
|
+
baseDerivationPath;
|
|
30
|
+
trezor;
|
|
31
|
+
ethereumOptions;
|
|
32
|
+
alchemy;
|
|
33
|
+
derivationPathType;
|
|
34
|
+
constructor(args) {
|
|
35
|
+
super(args);
|
|
36
|
+
this.baseDerivationPath = wallet_base_1.DEFAULT_BASE_DERIVATION_PATH;
|
|
37
|
+
this.derivationPathType = args.derivationPathType;
|
|
38
|
+
this.trezor = new index_js_1.TrezorTransportInit();
|
|
39
|
+
this.ethereumOptions = args.ethereumOptions;
|
|
40
|
+
}
|
|
41
|
+
async getWalletDeviceType() {
|
|
42
|
+
return Promise.resolve(wallet_base_1.WalletDeviceType.Hardware);
|
|
43
|
+
}
|
|
44
|
+
async enable() {
|
|
45
|
+
return Promise.resolve(true);
|
|
46
|
+
}
|
|
47
|
+
async disconnect() {
|
|
48
|
+
return Promise.resolve();
|
|
49
|
+
}
|
|
50
|
+
async getAddresses() {
|
|
51
|
+
const { baseDerivationPath, derivationPathType } = this;
|
|
52
|
+
try {
|
|
53
|
+
await this.trezor.connect();
|
|
54
|
+
const accountManager = await this.trezor.getAccountManager();
|
|
55
|
+
const wallets = await accountManager.getWallets(baseDerivationPath, derivationPathType);
|
|
56
|
+
return wallets.map((k) => k.address);
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
throw new exceptions_1.TrezorException(new Error(e.message), {
|
|
60
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
61
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
62
|
+
contextModule: wallet_base_1.WalletAction.GetAccounts,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async getSessionOrConfirm(address) {
|
|
67
|
+
return Promise.resolve(`0x${Buffer.from(`Confirmation for ${address} at time: ${Date.now()}`).toString('hex')}`);
|
|
68
|
+
}
|
|
69
|
+
async sendEthereumTransaction(txData, options) {
|
|
70
|
+
const signedTransaction = await this.signEthereumTransaction(txData, options);
|
|
71
|
+
try {
|
|
72
|
+
const alchemy = await this.getAlchemy();
|
|
73
|
+
const txReceipt = await alchemy.core.sendTransaction((0, ethereumjs_util_1.addHexPrefix)(signedTransaction.serialize().toString('hex')));
|
|
74
|
+
return txReceipt.hash;
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
throw new exceptions_1.TrezorException(new Error(e.message), {
|
|
78
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
79
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
80
|
+
contextModule: wallet_base_1.WalletAction.SendEthereumTransaction,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async sendTransaction(transaction, options) {
|
|
85
|
+
const { endpoints, txTimeout } = options;
|
|
86
|
+
if (!endpoints) {
|
|
87
|
+
throw new exceptions_1.WalletException(new Error('You have to pass endpoints.grpc within the options for using Ethereum native wallets'));
|
|
88
|
+
}
|
|
89
|
+
const txApi = new sdk_ts_1.TxGrpcApi(endpoints.grpc);
|
|
90
|
+
const response = await txApi.broadcast(transaction, { txTimeout });
|
|
91
|
+
if (response.code !== 0) {
|
|
92
|
+
throw new exceptions_1.TransactionException(new Error(response.rawLog), {
|
|
93
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
94
|
+
contextCode: response.code,
|
|
95
|
+
contextModule: response.codespace,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return response;
|
|
99
|
+
}
|
|
100
|
+
async signEip712TypedData(eip712json, address) {
|
|
101
|
+
const object = JSON.parse(eip712json);
|
|
102
|
+
const compatibleObject = {
|
|
103
|
+
...object,
|
|
104
|
+
domain: {
|
|
105
|
+
...object.domain,
|
|
106
|
+
chainId: object.domain.chainId,
|
|
107
|
+
salt: '0',
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
const dataWithHashes = (0, utils_js_1.transformTypedData)(compatibleObject);
|
|
111
|
+
const { types: { EIP712Domain = [], ...otherTypes } = {}, message = {}, domain = {}, primaryType, domain_separator_hash, message_hash, } = dataWithHashes;
|
|
112
|
+
try {
|
|
113
|
+
await this.trezor.connect();
|
|
114
|
+
const { derivationPath } = await this.getWalletForAddress(address);
|
|
115
|
+
const response = await trezor_connect_web_1.TrezorConnect.ethereumSignTypedData({
|
|
116
|
+
path: derivationPath,
|
|
117
|
+
data: {
|
|
118
|
+
types: { EIP712Domain, ...otherTypes },
|
|
119
|
+
message,
|
|
120
|
+
domain,
|
|
121
|
+
primaryType,
|
|
122
|
+
},
|
|
123
|
+
message_hash,
|
|
124
|
+
domain_separator_hash,
|
|
125
|
+
metamask_v4_compat: true,
|
|
126
|
+
});
|
|
127
|
+
if (!response.success) {
|
|
128
|
+
// noinspection ExceptionCaughtLocallyJS
|
|
129
|
+
throw new Error((response.payload && response.payload.error) || 'Unknown error');
|
|
130
|
+
}
|
|
131
|
+
return response.payload.signature;
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
throw new exceptions_1.TrezorException(new Error(e.message), {
|
|
135
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
136
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
137
|
+
contextModule: wallet_base_1.WalletAction.SignTransaction,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async signAminoCosmosTransaction(_transaction) {
|
|
142
|
+
throw new exceptions_1.WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
|
|
143
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
144
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
145
|
+
contextModule: wallet_base_1.WalletAction.SendTransaction,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// eslint-disable-next-line class-methods-use-this
|
|
149
|
+
async signCosmosTransaction(_transaction) {
|
|
150
|
+
throw new exceptions_1.WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
|
|
151
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
152
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
153
|
+
contextModule: wallet_base_1.WalletAction.SendTransaction,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
async signArbitrary(signer, data) {
|
|
157
|
+
try {
|
|
158
|
+
await this.trezor.connect();
|
|
159
|
+
const { derivationPath } = await this.getWalletForAddress(signer);
|
|
160
|
+
const response = await trezor_connect_web_1.TrezorConnect.ethereumSignMessage({
|
|
161
|
+
path: derivationPath,
|
|
162
|
+
message: (0, sdk_ts_1.toUtf8)(data),
|
|
163
|
+
});
|
|
164
|
+
if (!response.success) {
|
|
165
|
+
throw new Error((response.payload && response.payload.error) || 'Unknown error');
|
|
166
|
+
}
|
|
167
|
+
return response.payload.signature;
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
throw new exceptions_1.TrezorException(new Error(e.message), {
|
|
171
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
172
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
173
|
+
contextModule: wallet_base_1.WalletAction.SignTransaction,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async getEthereumChainId() {
|
|
178
|
+
const alchemy = await this.getAlchemy();
|
|
179
|
+
const alchemyProvider = await alchemy.config.getProvider();
|
|
180
|
+
return alchemyProvider.network.chainId.toString();
|
|
181
|
+
}
|
|
182
|
+
async getEthereumTransactionReceipt(txHash) {
|
|
183
|
+
return Promise.resolve(txHash);
|
|
184
|
+
}
|
|
185
|
+
// eslint-disable-next-line class-methods-use-this
|
|
186
|
+
async getPubKey() {
|
|
187
|
+
throw new exceptions_1.WalletException(new Error('You can only fetch PubKey from Cosmos native wallets'));
|
|
188
|
+
}
|
|
189
|
+
async signEthereumTransaction(txData, options) {
|
|
190
|
+
const chainId = parseInt(options.ethereumChainId.toString(), 10);
|
|
191
|
+
const alchemy = await this.getAlchemy();
|
|
192
|
+
const nonce = await alchemy.core.getTransactionCount(options.address);
|
|
193
|
+
const common = new common_1.Common({
|
|
194
|
+
chain: getNetworkFromChainId(chainId),
|
|
195
|
+
hardfork: common_1.Hardfork.London,
|
|
196
|
+
});
|
|
197
|
+
const eip1559TxData = {
|
|
198
|
+
from: txData.from,
|
|
199
|
+
data: txData.data,
|
|
200
|
+
to: txData.to,
|
|
201
|
+
nonce: (0, ethereumjs_util_1.addHexPrefix)(nonce.toString(16)),
|
|
202
|
+
gas: (0, ethereumjs_util_1.addHexPrefix)(txData.gas),
|
|
203
|
+
gasLimit: (0, ethereumjs_util_1.addHexPrefix)(txData.gas),
|
|
204
|
+
maxFeePerGas: (0, ethereumjs_util_1.addHexPrefix)(txData.gasPrice || txData.maxFeePerGas),
|
|
205
|
+
maxPriorityFeePerGas: (0, ethereumjs_util_1.addHexPrefix)(txData.maxPriorityFeePerGas || wallet_base_1.TIP_IN_GWEI.toString(16)),
|
|
206
|
+
};
|
|
207
|
+
const tx = tx_1.FeeMarketEIP1559Transaction.fromTxData(eip1559TxData, {
|
|
208
|
+
common,
|
|
209
|
+
});
|
|
210
|
+
const transaction = {
|
|
211
|
+
...tx.toJSON(),
|
|
212
|
+
chainId,
|
|
213
|
+
};
|
|
214
|
+
try {
|
|
215
|
+
await this.trezor.connect();
|
|
216
|
+
const { derivationPath } = await this.getWalletForAddress(options.address);
|
|
217
|
+
const response = await trezor_connect_web_1.TrezorConnect.ethereumSignTransaction({
|
|
218
|
+
path: derivationPath,
|
|
219
|
+
transaction,
|
|
220
|
+
});
|
|
221
|
+
if (!response.success) {
|
|
222
|
+
throw new exceptions_1.TrezorException(new Error((response.payload && response.payload.error) ||
|
|
223
|
+
'Something happened while signing with Trezor'), {
|
|
224
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
225
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
226
|
+
contextModule: wallet_base_1.WalletAction.SignEthereumTransaction,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
const signedTxData = {
|
|
230
|
+
...eip1559TxData,
|
|
231
|
+
v: `${response.payload.v}`,
|
|
232
|
+
r: `${response.payload.r}`,
|
|
233
|
+
s: `${response.payload.s}`,
|
|
234
|
+
};
|
|
235
|
+
return tx_1.FeeMarketEIP1559Transaction.fromTxData(signedTxData, {
|
|
236
|
+
common,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
if (e instanceof exceptions_1.TrezorException) {
|
|
241
|
+
throw e;
|
|
242
|
+
}
|
|
243
|
+
throw new exceptions_1.TrezorException(new Error(e.message), {
|
|
244
|
+
code: exceptions_1.UnspecifiedErrorCode,
|
|
245
|
+
type: exceptions_1.ErrorType.WalletError,
|
|
246
|
+
contextModule: wallet_base_1.WalletAction.SignEthereumTransaction,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
async getWalletForAddress(address) {
|
|
251
|
+
const { baseDerivationPath, derivationPathType } = this;
|
|
252
|
+
const accountManager = await this.trezor.getAccountManager();
|
|
253
|
+
if (!accountManager.hasWalletForAddress(address)) {
|
|
254
|
+
for (let i = 0; i < wallet_base_1.DEFAULT_ADDRESS_SEARCH_LIMIT / wallet_base_1.DEFAULT_NUM_ADDRESSES_TO_FETCH; i += 1) {
|
|
255
|
+
await accountManager.getWallets(baseDerivationPath, derivationPathType);
|
|
256
|
+
if (accountManager.hasWalletForAddress(address)) {
|
|
257
|
+
return (await accountManager.getWalletForAddress(address));
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return (await accountManager.getWalletForAddress(address));
|
|
262
|
+
}
|
|
263
|
+
async getAlchemy() {
|
|
264
|
+
if (this.alchemy) {
|
|
265
|
+
return this.alchemy;
|
|
266
|
+
}
|
|
267
|
+
const { rpcUrl, ethereumChainId } = this.ethereumOptions;
|
|
268
|
+
if (!rpcUrl) {
|
|
269
|
+
throw new exceptions_1.GeneralException(new Error('Please pass rpcUrl within the ethereumOptions'));
|
|
270
|
+
}
|
|
271
|
+
this.alchemy = new alchemy_sdk_1.Alchemy({
|
|
272
|
+
apiKey: (0, wallet_base_1.getKeyFromRpcUrl)(rpcUrl),
|
|
273
|
+
network: ethereumChainId === ts_types_1.EthereumChainId.Mainnet
|
|
274
|
+
? alchemy_sdk_1.Network.ETH_MAINNET
|
|
275
|
+
: alchemy_sdk_1.Network.ETH_SEPOLIA,
|
|
276
|
+
});
|
|
277
|
+
return this.alchemy;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
exports.default = TrezorBase;
|
|
281
|
+
//# sourceMappingURL=Base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Base.js","sourceRoot":"","sources":["../../../src/strategy/Base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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.TrezorBip32 = void 0;
|
|
7
|
+
const types_js_1 = require("../types.js");
|
|
8
|
+
const Base_js_1 = __importDefault(require("./Base.js"));
|
|
9
|
+
class TrezorBip32 extends Base_js_1.default {
|
|
10
|
+
constructor(args) {
|
|
11
|
+
super({
|
|
12
|
+
...args,
|
|
13
|
+
derivationPathType: types_js_1.TrezorDerivationPathType.Bip32,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.TrezorBip32 = TrezorBip32;
|
|
18
|
+
//# sourceMappingURL=TrezorBip32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrezorBip32.js","sourceRoot":"","sources":["../../../src/strategy/TrezorBip32.ts"],"names":[],"mappings":";;;;;;AAEA,0CAAsD;AACtD,wDAAkC;AAElC,MAAa,WAAY,SAAQ,iBAAU;IACzC,YAAY,IAAwC;QAClD,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,kBAAkB,EAAE,mCAAwB,CAAC,KAAK;SACnD,CAAC,CAAA;IACJ,CAAC;CACF;AAPD,kCAOC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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.TrezorBip44 = void 0;
|
|
7
|
+
const types_js_1 = require("../types.js");
|
|
8
|
+
const Base_js_1 = __importDefault(require("./Base.js"));
|
|
9
|
+
class TrezorBip44 extends Base_js_1.default {
|
|
10
|
+
constructor(args) {
|
|
11
|
+
super({
|
|
12
|
+
...args,
|
|
13
|
+
derivationPathType: types_js_1.TrezorDerivationPathType.Bip44,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.TrezorBip44 = TrezorBip44;
|
|
18
|
+
//# sourceMappingURL=TrezorBip44.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrezorBip44.js","sourceRoot":"","sources":["../../../src/strategy/TrezorBip44.ts"],"names":[],"mappings":";;;;;;AAEA,0CAAsD;AACtD,wDAAkC;AAElC,MAAa,WAAY,SAAQ,iBAAU;IACzC,YAAY,IAAwC;QAClD,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,kBAAkB,EAAE,mCAAwB,CAAC,KAAK;SACnD,CAAC,CAAA;IACJ,CAAC;CACF;AAPD,kCAOC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AccountAddress } from '@injectivelabs/ts-types';
|
|
2
|
+
import { TrezorWalletInfo, TrezorDerivationPathType } from '../../types.js';
|
|
3
|
+
export default class AccountManager {
|
|
4
|
+
private wallets;
|
|
5
|
+
constructor();
|
|
6
|
+
getWallets(baseDerivationPath: string, derivationPathType: TrezorDerivationPathType): Promise<TrezorWalletInfo[]>;
|
|
7
|
+
getTrezorDerivationPathBasedOnType: ({ fullBaseDerivationPath, derivationPathType, index, }: {
|
|
8
|
+
fullBaseDerivationPath: string;
|
|
9
|
+
derivationPathType: TrezorDerivationPathType;
|
|
10
|
+
index: number;
|
|
11
|
+
}) => string;
|
|
12
|
+
private getWalletsBasedOnIndex;
|
|
13
|
+
private hasWallets;
|
|
14
|
+
private hasWalletsInOffset;
|
|
15
|
+
private getOffset;
|
|
16
|
+
hasWalletForAddress(address: AccountAddress): boolean;
|
|
17
|
+
getWalletForAddress(address: AccountAddress): Promise<TrezorWalletInfo | undefined>;
|
|
18
|
+
reset(): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const hdkey_1 = __importDefault(require("hdkey"));
|
|
7
|
+
const exceptions_1 = require("@injectivelabs/exceptions");
|
|
8
|
+
const types_js_1 = require("../../types.js");
|
|
9
|
+
const sdk_ts_1 = require("@injectivelabs/sdk-ts");
|
|
10
|
+
const wallet_base_1 = require("@injectivelabs/wallet-base");
|
|
11
|
+
const trezor_connect_web_1 = require("@bangjelkoski/trezor-connect-web");
|
|
12
|
+
const addressOfHDKey = (hdKey) => {
|
|
13
|
+
const shouldSanitizePublicKey = true;
|
|
14
|
+
const derivedPublicKey = hdKey.publicKey;
|
|
15
|
+
const ethereumAddressWithoutPrefix = Buffer.from((0, sdk_ts_1.publicKeyToAddress)(derivedPublicKey, shouldSanitizePublicKey)).toString('hex');
|
|
16
|
+
const address = (0, sdk_ts_1.addHexPrefix)(ethereumAddressWithoutPrefix);
|
|
17
|
+
return address;
|
|
18
|
+
};
|
|
19
|
+
class AccountManager {
|
|
20
|
+
wallets = [];
|
|
21
|
+
constructor() {
|
|
22
|
+
this.wallets = [];
|
|
23
|
+
}
|
|
24
|
+
async getWallets(baseDerivationPath, derivationPathType) {
|
|
25
|
+
const { start, end } = this.getOffset();
|
|
26
|
+
/**
|
|
27
|
+
* 1. Wallets are not yet fetched at all,
|
|
28
|
+
* 2. Wallets are not yet fetched for that offset
|
|
29
|
+
*/
|
|
30
|
+
if (!this.hasWallets() || !this.hasWalletsInOffset(start)) {
|
|
31
|
+
await this.getWalletsBasedOnIndex({
|
|
32
|
+
start,
|
|
33
|
+
end,
|
|
34
|
+
baseDerivationPath,
|
|
35
|
+
derivationPathType,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return this.wallets.slice(start, end);
|
|
39
|
+
}
|
|
40
|
+
getTrezorDerivationPathBasedOnType = ({ fullBaseDerivationPath, derivationPathType, index, }) => {
|
|
41
|
+
if (derivationPathType === types_js_1.TrezorDerivationPathType.Bip44) {
|
|
42
|
+
return `${fullBaseDerivationPath}/${index}'/0/0`;
|
|
43
|
+
}
|
|
44
|
+
if (derivationPathType === types_js_1.TrezorDerivationPathType.Legacy) {
|
|
45
|
+
return `m/${index}`;
|
|
46
|
+
}
|
|
47
|
+
return `${fullBaseDerivationPath}/0'/0/${index}`;
|
|
48
|
+
};
|
|
49
|
+
async getWalletsBasedOnIndex({ start, end, baseDerivationPath, derivationPathType, }) {
|
|
50
|
+
const pathsToFetch = [];
|
|
51
|
+
for (let index = start; index < end; index += 1) {
|
|
52
|
+
const path = this.getTrezorDerivationPathBasedOnType({
|
|
53
|
+
fullBaseDerivationPath: baseDerivationPath,
|
|
54
|
+
derivationPathType,
|
|
55
|
+
index,
|
|
56
|
+
});
|
|
57
|
+
pathsToFetch.push({
|
|
58
|
+
path,
|
|
59
|
+
showOnTrezor: false,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const result = await trezor_connect_web_1.TrezorConnect.ethereumGetPublicKey({
|
|
63
|
+
bundle: pathsToFetch,
|
|
64
|
+
});
|
|
65
|
+
if (!result.success) {
|
|
66
|
+
throw new exceptions_1.TrezorException(new Error((result.payload && result.payload.error) ||
|
|
67
|
+
'Please make sure your Trezor is connected and unlocked'));
|
|
68
|
+
}
|
|
69
|
+
for (const item of result.payload) {
|
|
70
|
+
const hdKey = new hdkey_1.default();
|
|
71
|
+
hdKey.publicKey = Buffer.from(item.publicKey, 'hex');
|
|
72
|
+
hdKey.chainCode = Buffer.from(item.chainCode, 'hex');
|
|
73
|
+
const address = addressOfHDKey(hdKey);
|
|
74
|
+
this.wallets.push({
|
|
75
|
+
hdKey,
|
|
76
|
+
derivationPath: item.serializedPath,
|
|
77
|
+
address: address.toLowerCase(),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
hasWallets() {
|
|
82
|
+
return this.wallets.length > 0;
|
|
83
|
+
}
|
|
84
|
+
hasWalletsInOffset(offset) {
|
|
85
|
+
return this.wallets.length > offset;
|
|
86
|
+
}
|
|
87
|
+
getOffset() {
|
|
88
|
+
const totalWallets = this.wallets.length;
|
|
89
|
+
const nextBatchStart = totalWallets;
|
|
90
|
+
const nextBatchEnd = totalWallets + wallet_base_1.DEFAULT_NUM_ADDRESSES_TO_FETCH;
|
|
91
|
+
return {
|
|
92
|
+
start: nextBatchStart,
|
|
93
|
+
end: nextBatchEnd,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
hasWalletForAddress(address) {
|
|
97
|
+
return (this.wallets.find((wallet) => wallet.address.toLowerCase() === address.toLowerCase()) !== undefined);
|
|
98
|
+
}
|
|
99
|
+
async getWalletForAddress(address) {
|
|
100
|
+
return this.wallets.find((wallet) => wallet.address.toLowerCase() === address.toLowerCase());
|
|
101
|
+
}
|
|
102
|
+
reset() {
|
|
103
|
+
this.wallets = [];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.default = AccountManager;
|
|
107
|
+
//# sourceMappingURL=AccountManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AccountManager.js","sourceRoot":"","sources":["../../../../src/strategy/hw/AccountManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
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.BaseTrezorTransport = exports.TrezorTransportNoInit = exports.TrezorTransportInit = void 0;
|
|
7
|
+
const transport_init_js_1 = __importDefault(require("./transport/transport-init.js"));
|
|
8
|
+
exports.TrezorTransportInit = transport_init_js_1.default;
|
|
9
|
+
const transport_no_init_js_1 = __importDefault(require("./transport/transport-no-init.js"));
|
|
10
|
+
exports.TrezorTransportNoInit = transport_no_init_js_1.default;
|
|
11
|
+
const base_js_1 = __importDefault(require("./transport/base.js"));
|
|
12
|
+
exports.BaseTrezorTransport = base_js_1.default;
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/strategy/hw/index.ts"],"names":[],"mappings":";;;;;;AAAA,sFAA+D;AAItD,8BAJF,2BAAmB,CAIE;AAH5B,4FAAoE;AAGtC,gCAHvB,8BAAqB,CAGuB;AAFnD,kEAAqD;AAEA,8BAF9C,iBAAmB,CAE8C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const AccountManager_js_1 = __importDefault(require("./../AccountManager.js"));
|
|
7
|
+
class BaseTrezorTransport {
|
|
8
|
+
accountManager = null;
|
|
9
|
+
async connect() {
|
|
10
|
+
return Promise.resolve();
|
|
11
|
+
}
|
|
12
|
+
async getAccountManager() {
|
|
13
|
+
if (!this.accountManager) {
|
|
14
|
+
this.accountManager = new AccountManager_js_1.default();
|
|
15
|
+
}
|
|
16
|
+
return this.accountManager;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.default = BaseTrezorTransport;
|
|
20
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/strategy/hw/transport/base.ts"],"names":[],"mappings":";;;;;AAAA,+EAAmD;AAEnD,MAAqB,mBAAmB;IAC9B,cAAc,GAA0B,IAAI,CAAA;IAEpD,KAAK,CAAC,OAAO;QACX,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,2BAAc,EAAE,CAAA;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAA;IAC5B,CAAC;CACF;AAdD,sCAcC"}
|