@injectivelabs/wallet-trezor 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +111 -0
  2. package/dist/cjs/index.d.ts +3 -0
  3. package/dist/cjs/index.d.ts.map +1 -0
  4. package/dist/cjs/index.js +21 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/package.json +3 -0
  7. package/dist/cjs/strategy/hw/AccountManager.d.ts +17 -0
  8. package/dist/cjs/strategy/hw/AccountManager.d.ts.map +1 -0
  9. package/dist/cjs/strategy/hw/AccountManager.js +85 -0
  10. package/dist/cjs/strategy/hw/AccountManager.js.map +1 -0
  11. package/dist/cjs/strategy/hw/index.d.ts +11 -0
  12. package/dist/cjs/strategy/hw/index.d.ts.map +1 -0
  13. package/dist/cjs/strategy/hw/index.js +75 -0
  14. package/dist/cjs/strategy/hw/index.js.map +1 -0
  15. package/dist/cjs/strategy/strategy.d.ts +38 -0
  16. package/dist/cjs/strategy/strategy.d.ts.map +1 -0
  17. package/dist/cjs/strategy/strategy.js +315 -0
  18. package/dist/cjs/strategy/strategy.js.map +1 -0
  19. package/dist/cjs/types.d.ts +7 -0
  20. package/dist/cjs/types.d.ts.map +1 -0
  21. package/dist/cjs/types.js +3 -0
  22. package/dist/cjs/types.js.map +1 -0
  23. package/dist/cjs/utils.d.ts +17 -0
  24. package/dist/cjs/utils.d.ts.map +1 -0
  25. package/dist/cjs/utils.js +48 -0
  26. package/dist/cjs/utils.js.map +1 -0
  27. package/dist/esm/index.d.ts +3 -0
  28. package/dist/esm/index.d.ts.map +1 -0
  29. package/dist/esm/index.js +3 -0
  30. package/dist/esm/index.js.map +1 -0
  31. package/dist/esm/package.json +3 -0
  32. package/dist/esm/strategy/hw/AccountManager.d.ts +17 -0
  33. package/dist/esm/strategy/hw/AccountManager.d.ts.map +1 -0
  34. package/dist/esm/strategy/hw/AccountManager.js +68 -0
  35. package/dist/esm/strategy/hw/AccountManager.js.map +1 -0
  36. package/dist/esm/strategy/hw/index.d.ts +11 -0
  37. package/dist/esm/strategy/hw/index.d.ts.map +1 -0
  38. package/dist/esm/strategy/hw/index.js +54 -0
  39. package/dist/esm/strategy/hw/index.js.map +1 -0
  40. package/dist/esm/strategy/strategy.d.ts +38 -0
  41. package/dist/esm/strategy/strategy.d.ts.map +1 -0
  42. package/dist/esm/strategy/strategy.js +272 -0
  43. package/dist/esm/strategy/strategy.js.map +1 -0
  44. package/dist/esm/types.d.ts +7 -0
  45. package/dist/esm/types.d.ts.map +1 -0
  46. package/dist/esm/types.js +2 -0
  47. package/dist/esm/types.js.map +1 -0
  48. package/dist/esm/utils.d.ts +17 -0
  49. package/dist/esm/utils.d.ts.map +1 -0
  50. package/dist/esm/utils.js +48 -0
  51. package/dist/esm/utils.js.map +1 -0
  52. package/package.json +66 -0
@@ -0,0 +1,38 @@
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
+ export declare class TrezorWallet extends BaseConcreteStrategy implements ConcreteWalletStrategy {
5
+ private trezor;
6
+ private ethereumOptions;
7
+ private alchemy;
8
+ constructor(args: ConcreteEthereumWalletStrategyArgs);
9
+ getWalletDeviceType(): Promise<WalletDeviceType>;
10
+ enable(): Promise<boolean>;
11
+ disconnect(): Promise<void>;
12
+ getAddresses(): Promise<string[]>;
13
+ getSessionOrConfirm(address: AccountAddress): Promise<string>;
14
+ sendEthereumTransaction(txData: any, options: {
15
+ address: string;
16
+ ethereumChainId: EthereumChainId;
17
+ }): Promise<string>;
18
+ sendTransaction(transaction: TxRaw, options: SendTransactionOptions): Promise<TxResponse>;
19
+ signEip712TypedData(eip712json: string, address: AccountAddress): Promise<string>;
20
+ signAminoCosmosTransaction(_transaction: {
21
+ address: string;
22
+ signDoc: StdSignDoc;
23
+ }): Promise<AminoSignResponse>;
24
+ signCosmosTransaction(_transaction: {
25
+ txRaw: TxRaw;
26
+ accountNumber: number;
27
+ chainId: string;
28
+ address: string;
29
+ }): Promise<DirectSignResponse>;
30
+ signArbitrary(signer: AccountAddress, data: string | Uint8Array): Promise<string>;
31
+ getEthereumChainId(): Promise<string>;
32
+ getEthereumTransactionReceipt(txHash: string): Promise<string>;
33
+ getPubKey(): Promise<string>;
34
+ private signEthereumTransaction;
35
+ private getWalletForAddress;
36
+ private getAlchemy;
37
+ }
38
+ //# sourceMappingURL=strategy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../../src/strategy/strategy.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAczE,OAAO,EACL,KAAK,EAGL,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,UAAU,EAIV,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EAItB,kCAAkC,EACnC,MAAM,4BAA4B,CAAA;AAiCnC,qBAAa,YACX,SAAQ,oBACR,YAAW,sBAAsB;IAEjC,OAAO,CAAC,MAAM,CAAU;IAExB,OAAO,CAAC,eAAe,CAA+B;IAEtD,OAAO,CAAC,OAAO,CAAqB;gBAExB,IAAI,EAAE,kCAAkC;IAM9C,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAIhD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAInB,UAAU;IAIV,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAgBxC,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ7D,uBAAuB,CAC3B,MAAM,EAAE,GAAG,EACX,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,eAAe,CAAA;KAAE,GAC7D,OAAO,CAAC,MAAM,CAAC;IAsBZ,eAAe,CACnB,WAAW,EAAE,KAAK,EAClB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAyBhB,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,MAAM,CAAC;IAqDZ,0BAA0B,CAAC,YAAY,EAAE;QAC7C,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,UAAU,CAAA;KACpB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYxB,qBAAqB,CAAC,YAAY,EAAE;QACxC,KAAK,EAAE,KAAK,CAAA;QACZ,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,CAAA;KAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAWzB,aAAa,CACjB,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,MAAM,GAAG,UAAU,GACxB,OAAO,CAAC,MAAM,CAAC;IA0BZ,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAOrC,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK9D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAMpB,uBAAuB;YA+EvB,mBAAmB;YA0BnB,UAAU;CAuBzB"}
@@ -0,0 +1,272 @@
1
+ /* eslint-disable camelcase */
2
+ /* eslint-disable class-methods-use-this */
3
+ import { EthereumChainId } from '@injectivelabs/ts-types';
4
+ import { Alchemy, Network as AlchemyNetwork } from 'alchemy-sdk';
5
+ import { addHexPrefix } from 'ethereumjs-util';
6
+ import { FeeMarketEIP1559Transaction } from '@ethereumjs/tx';
7
+ import { Common, Chain, Hardfork } from '@ethereumjs/common';
8
+ import TrezorConnect from '@trezor/connect-web';
9
+ import { ErrorType, WalletException, TrezorException, GeneralException, TransactionException, UnspecifiedErrorCode, } from '@injectivelabs/exceptions';
10
+ import { toUtf8, TxGrpcApi, } from '@injectivelabs/sdk-ts';
11
+ import { TIP_IN_GWEI, WalletAction, getKeyFromRpcUrl, WalletDeviceType, BaseConcreteStrategy, DEFAULT_ADDRESS_SEARCH_LIMIT, DEFAULT_NUM_ADDRESSES_TO_FETCH, } from '@injectivelabs/wallet-base';
12
+ import TrezorHW from './hw';
13
+ import { transformTypedData } from '../utils';
14
+ const getNetworkFromChainId = (chainId) => {
15
+ if (chainId === EthereumChainId.Goerli) {
16
+ return Chain.Goerli;
17
+ }
18
+ if (chainId === EthereumChainId.Sepolia) {
19
+ return Chain.Sepolia;
20
+ }
21
+ if (chainId === EthereumChainId.Kovan) {
22
+ return Chain.Goerli;
23
+ }
24
+ return Chain.Mainnet;
25
+ };
26
+ export class TrezorWallet extends BaseConcreteStrategy {
27
+ trezor;
28
+ ethereumOptions;
29
+ alchemy;
30
+ constructor(args) {
31
+ super(args);
32
+ this.trezor = new TrezorHW();
33
+ this.ethereumOptions = args.ethereumOptions;
34
+ }
35
+ async getWalletDeviceType() {
36
+ return Promise.resolve(WalletDeviceType.Hardware);
37
+ }
38
+ async enable() {
39
+ return Promise.resolve(true);
40
+ }
41
+ async disconnect() {
42
+ this.trezor = new TrezorHW();
43
+ }
44
+ async getAddresses() {
45
+ try {
46
+ await this.trezor.connect();
47
+ const accountManager = await this.trezor.getAccountManager();
48
+ const wallets = await accountManager.getWallets();
49
+ return wallets.map((k) => k.address);
50
+ }
51
+ catch (e) {
52
+ throw new TrezorException(new Error(e.message), {
53
+ code: UnspecifiedErrorCode,
54
+ type: ErrorType.WalletError,
55
+ contextModule: WalletAction.GetAccounts,
56
+ });
57
+ }
58
+ }
59
+ async getSessionOrConfirm(address) {
60
+ return Promise.resolve(`0x${Buffer.from(`Confirmation for ${address} at time: ${Date.now()}`).toString('hex')}`);
61
+ }
62
+ async sendEthereumTransaction(txData, options) {
63
+ const signedTransaction = await this.signEthereumTransaction(txData, options);
64
+ try {
65
+ const alchemy = await this.getAlchemy();
66
+ const txReceipt = await alchemy.core.sendTransaction(addHexPrefix(signedTransaction.serialize().toString('hex')));
67
+ return txReceipt.hash;
68
+ }
69
+ catch (e) {
70
+ throw new TrezorException(new Error(e.message), {
71
+ code: UnspecifiedErrorCode,
72
+ type: ErrorType.WalletError,
73
+ contextModule: WalletAction.SendEthereumTransaction,
74
+ });
75
+ }
76
+ }
77
+ async sendTransaction(transaction, options) {
78
+ const { endpoints, txTimeout } = options;
79
+ if (!endpoints) {
80
+ throw new WalletException(new Error('You have to pass endpoints.grpc within the options for using Ethereum native wallets'));
81
+ }
82
+ const txApi = new TxGrpcApi(endpoints.grpc);
83
+ const response = await txApi.broadcast(transaction, { txTimeout });
84
+ if (response.code !== 0) {
85
+ throw new TransactionException(new Error(response.rawLog), {
86
+ code: UnspecifiedErrorCode,
87
+ contextCode: response.code,
88
+ contextModule: response.codespace,
89
+ });
90
+ }
91
+ return response;
92
+ }
93
+ async signEip712TypedData(eip712json, address) {
94
+ const object = JSON.parse(eip712json);
95
+ const compatibleObject = {
96
+ ...object,
97
+ domain: {
98
+ ...object.domain,
99
+ chainId: object.domain.chainId,
100
+ salt: '0',
101
+ },
102
+ };
103
+ const dataWithHashes = transformTypedData(compatibleObject);
104
+ const { types: { EIP712Domain = [], ...otherTypes } = {}, message = {}, domain = {}, primaryType, domain_separator_hash, message_hash, } = dataWithHashes;
105
+ try {
106
+ await this.trezor.connect();
107
+ const { derivationPath } = await this.getWalletForAddress(address);
108
+ const response = await TrezorConnect.ethereumSignTypedData({
109
+ path: derivationPath,
110
+ data: {
111
+ types: { EIP712Domain, ...otherTypes },
112
+ message,
113
+ domain,
114
+ primaryType,
115
+ },
116
+ message_hash,
117
+ domain_separator_hash,
118
+ metamask_v4_compat: true,
119
+ });
120
+ if (!response.success) {
121
+ // noinspection ExceptionCaughtLocallyJS
122
+ throw new Error((response.payload && response.payload.error) || 'Unknown error');
123
+ }
124
+ return response.payload.signature;
125
+ }
126
+ catch (e) {
127
+ throw new TrezorException(new Error(e.message), {
128
+ code: UnspecifiedErrorCode,
129
+ type: ErrorType.WalletError,
130
+ contextModule: WalletAction.SignTransaction,
131
+ });
132
+ }
133
+ }
134
+ async signAminoCosmosTransaction(_transaction) {
135
+ throw new WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
136
+ code: UnspecifiedErrorCode,
137
+ type: ErrorType.WalletError,
138
+ contextModule: WalletAction.SendTransaction,
139
+ });
140
+ }
141
+ // eslint-disable-next-line class-methods-use-this
142
+ async signCosmosTransaction(_transaction) {
143
+ throw new WalletException(new Error('This wallet does not support signing Cosmos transactions'), {
144
+ code: UnspecifiedErrorCode,
145
+ type: ErrorType.WalletError,
146
+ contextModule: WalletAction.SendTransaction,
147
+ });
148
+ }
149
+ async signArbitrary(signer, data) {
150
+ try {
151
+ await this.trezor.connect();
152
+ const { derivationPath } = await this.getWalletForAddress(signer);
153
+ const response = await TrezorConnect.ethereumSignMessage({
154
+ path: derivationPath,
155
+ message: toUtf8(data),
156
+ });
157
+ if (!response.success) {
158
+ throw new Error((response.payload && response.payload.error) || 'Unknown error');
159
+ }
160
+ return response.payload.signature;
161
+ }
162
+ catch (e) {
163
+ throw new TrezorException(new Error(e.message), {
164
+ code: UnspecifiedErrorCode,
165
+ type: ErrorType.WalletError,
166
+ contextModule: WalletAction.SignTransaction,
167
+ });
168
+ }
169
+ }
170
+ async getEthereumChainId() {
171
+ const alchemy = await this.getAlchemy();
172
+ const alchemyProvider = await alchemy.config.getProvider();
173
+ return alchemyProvider.network.chainId.toString();
174
+ }
175
+ async getEthereumTransactionReceipt(txHash) {
176
+ return Promise.resolve(txHash);
177
+ }
178
+ // eslint-disable-next-line class-methods-use-this
179
+ async getPubKey() {
180
+ throw new WalletException(new Error('You can only fetch PubKey from Cosmos native wallets'));
181
+ }
182
+ async signEthereumTransaction(txData, options) {
183
+ const chainId = parseInt(options.ethereumChainId.toString(), 10);
184
+ const alchemy = await this.getAlchemy();
185
+ const nonce = await alchemy.core.getTransactionCount(options.address);
186
+ const common = new Common({
187
+ chain: getNetworkFromChainId(chainId),
188
+ hardfork: Hardfork.London,
189
+ });
190
+ const eip1559TxData = {
191
+ from: txData.from,
192
+ data: txData.data,
193
+ to: txData.to,
194
+ nonce: addHexPrefix(nonce.toString(16)),
195
+ gas: addHexPrefix(txData.gas),
196
+ gasLimit: addHexPrefix(txData.gas),
197
+ maxFeePerGas: addHexPrefix(txData.gasPrice || txData.maxFeePerGas),
198
+ maxPriorityFeePerGas: addHexPrefix(txData.maxPriorityFeePerGas || TIP_IN_GWEI.toString(16)),
199
+ };
200
+ const tx = FeeMarketEIP1559Transaction.fromTxData(eip1559TxData, {
201
+ common,
202
+ });
203
+ const transaction = {
204
+ ...tx.toJSON(),
205
+ chainId,
206
+ };
207
+ try {
208
+ await this.trezor.connect();
209
+ const { derivationPath } = await this.getWalletForAddress(options.address);
210
+ const response = await TrezorConnect.ethereumSignTransaction({
211
+ path: derivationPath,
212
+ transaction,
213
+ });
214
+ if (!response.success) {
215
+ throw new TrezorException(new Error((response.payload && response.payload.error) ||
216
+ 'Something happened while signing with Trezor'), {
217
+ code: UnspecifiedErrorCode,
218
+ type: ErrorType.WalletError,
219
+ contextModule: WalletAction.SignEthereumTransaction,
220
+ });
221
+ }
222
+ const signedTxData = {
223
+ ...eip1559TxData,
224
+ v: `${response.payload.v}`,
225
+ r: `${response.payload.r}`,
226
+ s: `${response.payload.s}`,
227
+ };
228
+ return FeeMarketEIP1559Transaction.fromTxData(signedTxData, {
229
+ common,
230
+ });
231
+ }
232
+ catch (e) {
233
+ if (e instanceof TrezorException) {
234
+ throw e;
235
+ }
236
+ throw new TrezorException(new Error(e.message), {
237
+ code: UnspecifiedErrorCode,
238
+ type: ErrorType.WalletError,
239
+ contextModule: WalletAction.SignEthereumTransaction,
240
+ });
241
+ }
242
+ }
243
+ async getWalletForAddress(address) {
244
+ const accountManager = await this.trezor.getAccountManager();
245
+ if (!accountManager.hasWalletForAddress(address)) {
246
+ for (let i = 0; i < DEFAULT_ADDRESS_SEARCH_LIMIT / DEFAULT_NUM_ADDRESSES_TO_FETCH; i += 1) {
247
+ await accountManager.getWallets();
248
+ if (accountManager.hasWalletForAddress(address)) {
249
+ return (await accountManager.getWalletForAddress(address));
250
+ }
251
+ }
252
+ }
253
+ return (await accountManager.getWalletForAddress(address));
254
+ }
255
+ async getAlchemy() {
256
+ if (this.alchemy) {
257
+ return this.alchemy;
258
+ }
259
+ const { rpcUrl, ethereumChainId } = this.ethereumOptions;
260
+ if (!rpcUrl) {
261
+ throw new GeneralException(new Error('Please pass rpcUrl within the ethereumOptions'));
262
+ }
263
+ this.alchemy = new Alchemy({
264
+ apiKey: getKeyFromRpcUrl(rpcUrl),
265
+ network: ethereumChainId === EthereumChainId.Mainnet
266
+ ? AlchemyNetwork.ETH_MAINNET
267
+ : AlchemyNetwork.ETH_SEPOLIA,
268
+ });
269
+ return this.alchemy;
270
+ }
271
+ }
272
+ //# sourceMappingURL=strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategy.js","sourceRoot":"","sources":["../../../src/strategy/strategy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type HDNode from 'hdkey';
2
+ export interface TrezorWalletInfo {
3
+ address: string;
4
+ hdKey: HDNode;
5
+ derivationPath: string;
6
+ }
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,OAAO,CAAA;AAG/B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,CAAA;CACvB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { TypedMessage, MessageTypes } from '@metamask/eth-sig-util';
2
+ /**
3
+ * Calculates the domain_separator_hash and message_hash from an EIP-712 Typed Data object.
4
+ *
5
+ * The Trezor Model 1 does not currently support constructing the hash on the device,
6
+ * so this function pre-computes them.
7
+ *
8
+ * @template {TypedMessage} T
9
+ * @param {T} data - The EIP-712 Typed Data object.
10
+ * @param {boolean} metamask_v4_compat - Set to `true` for compatibility with Metamask's signTypedData_v4 function.
11
+ * @returns {{domain_separator_hash: string, message_hash?: string} & T} The hashes.
12
+ */
13
+ export declare const transformTypedData: <T extends TypedMessage<MessageTypes>>(data: T, metamask_v4_compat?: boolean) => {
14
+ domain_separator_hash: string;
15
+ message_hash?: string;
16
+ } & T;
17
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,YAAY,EAGb,MAAM,wBAAwB,CAAA;AAyB/B;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,+CACvB,CAAC,uBACa,OAAO,KAC1B;IAAE,qBAAqB,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,CAmC7D,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { TrezorException } from '@injectivelabs/exceptions';
2
+ import { TypedDataUtils, SignTypedDataVersion, } from '@metamask/eth-sig-util';
3
+ // Sanitization is used for T1 as eth-sig-util does not support BigInt
4
+ // @ts-ignore
5
+ function sanitizeData(data) {
6
+ switch (Object.prototype.toString.call(data)) {
7
+ case '[object Object]': {
8
+ // @ts-ignore
9
+ const entries = Object.keys(data).map((k) => [k, sanitizeData(data[k])]);
10
+ return Object.fromEntries(entries);
11
+ }
12
+ case '[object Array]':
13
+ return data.map((v) => sanitizeData(v));
14
+ case '[object BigInt]':
15
+ return data.toString();
16
+ default:
17
+ return data;
18
+ }
19
+ }
20
+ /**
21
+ * Calculates the domain_separator_hash and message_hash from an EIP-712 Typed Data object.
22
+ *
23
+ * The Trezor Model 1 does not currently support constructing the hash on the device,
24
+ * so this function pre-computes them.
25
+ *
26
+ * @template {TypedMessage} T
27
+ * @param {T} data - The EIP-712 Typed Data object.
28
+ * @param {boolean} metamask_v4_compat - Set to `true` for compatibility with Metamask's signTypedData_v4 function.
29
+ * @returns {{domain_separator_hash: string, message_hash?: string} & T} The hashes.
30
+ */
31
+ export const transformTypedData = (data, metamask_v4_compat = true) => {
32
+ if (!metamask_v4_compat) {
33
+ throw new TrezorException(new Error('Trezor: Only version 4 of typed data signing is supported'));
34
+ }
35
+ const version = SignTypedDataVersion.V4;
36
+ const { types, primaryType, domain, message } = TypedDataUtils.sanitizeData(data);
37
+ const domainSeparatorHash = TypedDataUtils.hashStruct('EIP712Domain', sanitizeData(domain), types, version).toString('hex');
38
+ let messageHash = null;
39
+ if (primaryType !== 'EIP712Domain') {
40
+ messageHash = TypedDataUtils.hashStruct(primaryType, sanitizeData(message), types, version).toString('hex');
41
+ }
42
+ return {
43
+ domain_separator_hash: domainSeparatorHash,
44
+ message_hash: messageHash,
45
+ ...data,
46
+ };
47
+ };
48
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAGL,cAAc,EACd,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAE/B,sEAAsE;AACtE,aAAa;AACb,SAAS,YAAY,CAAC,IAAI;IACxB,QAAQ,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,aAAa;YACb,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACxE,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC;QAED,KAAK,gBAAgB;YACnB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9C,KAAK,iBAAiB;YACpB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;QAExB;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAID;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,IAAO,EACP,qBAA8B,IAAI,EAC4B,EAAE;IAChE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CACvB,IAAI,KAAK,CAAC,2DAA2D,CAAC,CACvE,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAA;IAEvC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAC3C,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAEnC,MAAM,mBAAmB,GAAG,cAAc,CAAC,UAAU,CACnD,cAAc,EACd,YAAY,CAAC,MAAM,CAAC,EACpB,KAAK,EACL,OAAO,CACR,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEjB,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;QACnC,WAAW,GAAG,cAAc,CAAC,UAAU,CACrC,WAAqB,EACrB,YAAY,CAAC,OAAO,CAAC,EACrB,KAAK,EACL,OAAO,CACR,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnB,CAAC;IAED,OAAO;QACL,qBAAqB,EAAE,mBAAmB;QAC1C,YAAY,EAAE,WAAqB;QACnC,GAAG,IAAI;KACR,CAAA;AACH,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@injectivelabs/wallet-trezor",
3
+ "description": "Trezor wallet strategy for use with @injectivelabs/wallet-core.",
4
+ "version": "0.0.2",
5
+ "sideEffects": false,
6
+ "author": {
7
+ "name": "InjectiveLabs",
8
+ "email": "admin@injectivelabs.org"
9
+ },
10
+ "license": "Apache-2.0",
11
+ "types": "dist/cjs/index.d.ts",
12
+ "main": "dist/cjs/index.js",
13
+ "module": "dist/esm/index.js",
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "_moduleAliases": {
18
+ "~wallet-trezor": "dist"
19
+ },
20
+ "scripts": {
21
+ "postinstall": "link-module-alias",
22
+ "build:cjs": "BUILD_MODE=cjs tsc --build tsconfig.build.json",
23
+ "build:esm": "BUILD_MODE=esm tsc --build tsconfig.build.esm.json",
24
+ "build": "yarn build:esm && yarn build:cjs && yarn build:post && link-module-alias",
25
+ "build:watch": "tsc --build -w tsconfig.build.json && tsc -w --build tsconfig.build.esm.json && yarn build:post && link-module-alias",
26
+ "build:post": "shx cp ../../../etc/stub/package.json.stub dist/cjs/package.json && shx cp ../../../etc/stub/package.esm.json.stub dist/esm/package.json",
27
+ "clean": "tsc --build tsconfig.build.json --clean && tsc --build tsconfig.build.esm.json --clean && shx rm -rf coverage *.log junit.xml dist && jest --clearCache && shx mkdir -p dist",
28
+ "test": "jest",
29
+ "test:watch": "jest --watch",
30
+ "test:ci": "jest --coverage --ci --reporters='jest-junit'",
31
+ "coverage": "jest --coverage",
32
+ "coverage:show": "live-server coverage",
33
+ "dev": "ts-node -r tsconfig-paths/register src/index.ts",
34
+ "start": "node dist/index.js"
35
+ },
36
+ "dependencies": {
37
+ "@ethereumjs/common": "^3.1.1",
38
+ "@ethereumjs/tx": "^4.1.1",
39
+ "@injectivelabs/exceptions": "^1.14.14",
40
+ "@injectivelabs/networks": "^1.14.15",
41
+ "@injectivelabs/sdk-ts": "^1.14.15",
42
+ "@injectivelabs/ts-types": "^1.14.14",
43
+ "@injectivelabs/utils": "^1.14.14",
44
+ "@injectivelabs/wallet-base": "^0.0.2",
45
+ "@trezor/connect-web": "9.2.1",
46
+ "alchemy-sdk": "^2.6.3",
47
+ "eip1193-provider": "^1.0.1",
48
+ "eth-sig-util": "^3.0.1",
49
+ "ethereumjs-util": "^7.1.0",
50
+ "ethers": "^6.5.1",
51
+ "hdkey": "^2.0.1",
52
+ "link-module-alias": "^1.2.0",
53
+ "long": "^5.2.1",
54
+ "shx": "^0.3.3"
55
+ },
56
+ "devDependencies": {
57
+ "@types/eth-sig-util": "^2.1.1",
58
+ "@types/ethereumjs-util": "^6.1.0",
59
+ "@types/hdkey": "^2.0.1"
60
+ },
61
+ "resolutions": {
62
+ "**/libsodium": "npm:@bangjelkoski/noop",
63
+ "**/libsodium-wrappers": "npm:@bangjelkoski/noop"
64
+ },
65
+ "gitHead": "6442ae377bbfb3459d2fb3a44c650630a5b7f445"
66
+ }