@swapkit/wallet-hardware 4.8.0 → 4.8.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 (38) hide show
  1. package/dist/keepkey/index.cjs.map +2 -2
  2. package/dist/keepkey/index.js.map +2 -2
  3. package/dist/types/keepkey/chains/utxo.d.ts +5 -379
  4. package/dist/types/keepkey/chains/utxo.d.ts.map +1 -1
  5. package/package.json +5 -7
  6. package/src/index.ts +1 -0
  7. package/src/keepkey/chains/cosmos.ts +69 -0
  8. package/src/keepkey/chains/evm.ts +141 -0
  9. package/src/keepkey/chains/mayachain.ts +98 -0
  10. package/src/keepkey/chains/ripple.ts +88 -0
  11. package/src/keepkey/chains/thorchain.ts +93 -0
  12. package/src/keepkey/chains/utxo.ts +364 -0
  13. package/src/keepkey/coins.ts +67 -0
  14. package/src/keepkey/index.ts +174 -0
  15. package/src/ledger/clients/cosmos.ts +84 -0
  16. package/src/ledger/clients/evm.ts +186 -0
  17. package/src/ledger/clients/near.ts +63 -0
  18. package/src/ledger/clients/sui.ts +130 -0
  19. package/src/ledger/clients/thorchain/common.ts +93 -0
  20. package/src/ledger/clients/thorchain/helpers.ts +120 -0
  21. package/src/ledger/clients/thorchain/index.ts +87 -0
  22. package/src/ledger/clients/thorchain/lib.ts +258 -0
  23. package/src/ledger/clients/thorchain/utils.ts +69 -0
  24. package/src/ledger/clients/tron.ts +85 -0
  25. package/src/ledger/clients/utxo-legacy-adapter.ts +71 -0
  26. package/src/ledger/clients/utxo-psbt.ts +145 -0
  27. package/src/ledger/clients/utxo.ts +359 -0
  28. package/src/ledger/clients/xrp.ts +50 -0
  29. package/src/ledger/cosmosTypes.ts +98 -0
  30. package/src/ledger/helpers/getLedgerAddress.ts +76 -0
  31. package/src/ledger/helpers/getLedgerClient.ts +124 -0
  32. package/src/ledger/helpers/getLedgerTransport.ts +102 -0
  33. package/src/ledger/helpers/index.ts +3 -0
  34. package/src/ledger/index.ts +546 -0
  35. package/src/ledger/interfaces/CosmosLedgerInterface.ts +54 -0
  36. package/src/ledger/types.ts +42 -0
  37. package/src/trezor/evmSigner.ts +210 -0
  38. package/src/trezor/index.ts +847 -0
@@ -1,386 +1,12 @@
1
1
  import type { KeepKeySdk } from "@keepkey/keepkey-sdk";
2
- import { Chain, type DerivationPathArray, FeeOption, type GenericTransferParams, type UTXOChain } from "@swapkit/helpers";
3
- import { stripToCashAddress } from "@swapkit/toolboxes/utxo";
4
- import type { Transaction } from "@swapkit/utxo-signer";
5
- interface KeepKeyInputObject {
6
- addressNList: number[];
7
- scriptType: string;
8
- amount: string;
9
- vout: number;
10
- txid: string;
11
- hex: string;
12
- }
2
+ import { Chain, type DerivationPathArray, type UTXOChain } from "@swapkit/helpers";
3
+ type KeepKeyUTXOWalletMethods = Record<string, unknown> & {
4
+ address: string;
5
+ };
13
6
  export declare function utxoWalletMethods({ sdk, chain, derivationPath, }: {
14
7
  sdk: KeepKeySdk;
15
8
  chain: Exclude<UTXOChain, typeof Chain.Zcash>;
16
9
  derivationPath?: DerivationPathArray;
17
- }): Promise<{
18
- address: string;
19
- deriveAddressAtIndex: ({ accountIndex, index, change, }: {
20
- accountIndex?: number;
21
- index: number;
22
- change?: boolean;
23
- }) => Promise<{
24
- accountIndex: number;
25
- address: any;
26
- change: boolean;
27
- index: number;
28
- path: string;
29
- pubkey: string;
30
- } | undefined>;
31
- deriveAddresses: ({ accountIndex, count, startIndex, change, }: {
32
- accountIndex?: number;
33
- count: number;
34
- startIndex?: number;
35
- change?: boolean;
36
- }) => Promise<{
37
- accountIndex: number;
38
- address: any;
39
- change: boolean;
40
- index: number;
41
- path: string;
42
- pubkey: string;
43
- }[]>;
44
- getExtendedPublicKey: () => Promise<{
45
- accountIndex: number;
46
- path: string;
47
- xpub: string;
48
- }>;
49
- getExtendedPublicKeyInfo: ({ accountIndex }?: {
50
- accountIndex?: number;
51
- }) => Promise<{
52
- accountIndex: number;
53
- path: string;
54
- xpub: string;
55
- }>;
56
- signTransaction: (tx: Transaction, inputs: KeepKeyInputObject[], memo?: string) => Promise<string>;
57
- signTransactionWithMultipleInputs: (tx: Transaction, inputs: Array<{
58
- hash: string;
59
- index: number;
60
- value: number;
61
- txHex?: string;
62
- derivationIndex: number;
63
- isChange: boolean;
64
- }>, memo?: string) => Promise<string>;
65
- transfer: ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => Promise<string>;
66
- transferFromMultipleAddresses: ({ utxos, recipient, assetValue, memo, feeRate, feeOptionKey, }: {
67
- utxos: Array<{
68
- hash: string;
69
- index: number;
70
- value: number;
71
- txHex?: string;
72
- derivationIndex: number;
73
- isChange: boolean;
74
- address: string;
75
- }>;
76
- recipient: string;
77
- assetValue: {
78
- getBaseValue: (unit: string) => number;
79
- chain: string;
80
- };
81
- memo?: string;
82
- feeRate?: number;
83
- feeOptionKey?: (typeof FeeOption)[keyof typeof FeeOption];
84
- }) => Promise<string>;
85
- getAggregatedBalance: (gapLimit?: number) => Promise<import("@swapkit/toolboxes/utxo").AggregatedBalanceResult>;
86
- getAggregatedUtxos: (gapLimit?: number) => Promise<import("@swapkit/toolboxes/utxo").UTXOForMultiAddressTransfer[]>;
87
- scanForAddresses: (params?: {
88
- gapLimit?: number;
89
- change?: boolean;
90
- }) => Promise<import("@swapkit/toolboxes/utxo").DerivedAddress[]>;
91
- accumulative: typeof import("@swapkit/toolboxes/utxo").accumulative;
92
- broadcastTx: (txHash: string) => Promise<string>;
93
- bumpFee: ({ txid, newFeeRate, recipient, memo }: import("@swapkit/toolboxes/utxo").RBFTransactionParams) => Promise<{
94
- newFee: number;
95
- originalFee: number;
96
- txid: string;
97
- }>;
98
- calculateTxSize: ({ inputs, outputs, feeRate }: import("@swapkit/toolboxes/utxo").UTXOCalculateTxSizeParams) => number;
99
- createKeysForPath: (params: {
100
- wif?: string;
101
- phrase?: string;
102
- derivationPath?: string;
103
- }) => {
104
- privateKey: import("@swapkit/utxo-signer/utils").Bytes;
105
- publicKey: Uint8Array<ArrayBufferLike>;
106
- };
107
- createReplacementTransaction: ({ txid, newFeeRate, recipient, memo, }: import("@swapkit/toolboxes/utxo").RBFTransactionParams) => Promise<import("node_modules/@swapkit/toolboxes/dist/types/utxo/toolbox/utxo").ReplacementTransactionResult>;
108
- createTransaction: ({ assetValue, recipient, memo, feeRate, sender, fetchTxHex, enableRBF, }: import("@swapkit/toolboxes/utxo").UTXOBuildTxParams) => Promise<{
109
- inputs: import("@swapkit/toolboxes/utxo").UTXOType[];
110
- tx: Transaction;
111
- utxos: {
112
- address: string;
113
- hash: string;
114
- index: number;
115
- txHex: string | undefined;
116
- value: number;
117
- witnessUtxo: {
118
- script: Buffer<ArrayBuffer>;
119
- value: number;
120
- };
121
- }[];
122
- }>;
123
- derivePrivateKeyAtIndex: ({ accountIndex, index, change }: import("@swapkit/toolboxes/utxo").DeriveAddressParams) => Uint8Array<ArrayBufferLike> | undefined;
124
- estimateMaxSendableAmount: ({ from, memo, feeRate, feeOptionKey, recipients, }: {
125
- from: string;
126
- memo?: string;
127
- feeRate?: number;
128
- feeOptionKey?: FeeOption;
129
- recipients?: number | import("@swapkit/toolboxes/utxo").TargetOutput[];
130
- }) => Promise<import("@swapkit/helpers").AssetValue>;
131
- estimateTransactionFee: (params: {
132
- assetValue: import("@swapkit/helpers").AssetValue;
133
- recipient: string;
134
- sender: string;
135
- memo?: string;
136
- feeOptionKey?: FeeOption;
137
- feeRate?: number;
138
- fetchTxHex?: boolean;
139
- }) => Promise<import("@swapkit/helpers").AssetValue>;
140
- getAddress: () => string | Promise<string> | Promise<undefined>;
141
- getAddressFromKeys: (keys: {
142
- publicKey: Uint8Array;
143
- }) => string;
144
- getBalance: (address: string, scamFilter?: boolean) => Promise<import("@swapkit/helpers").AssetValue[]>;
145
- getFeeRates: () => Promise<{
146
- average: number;
147
- fast: number;
148
- fastest: number;
149
- }>;
150
- getInputsOutputsFee: ({ assetValue, feeOptionKey, feeRate, memo, sender, recipient, }: Omit<import("@swapkit/toolboxes/utxo").UTXOBuildTxParams, "feeRate"> & {
151
- feeOptionKey?: FeeOption;
152
- feeRate?: number;
153
- }) => Promise<{
154
- fee: number;
155
- inputs: {
156
- address: string;
157
- hash: string;
158
- index: number;
159
- txHex: string | undefined;
160
- value: number;
161
- witnessUtxo: {
162
- script: Buffer<ArrayBuffer>;
163
- value: number;
164
- };
165
- }[];
166
- outputs: import("@swapkit/toolboxes/utxo").TargetOutput[];
167
- } | {
168
- fee: number;
169
- inputs?: undefined;
170
- outputs?: undefined;
171
- }>;
172
- getNetworkForChain: () => import("@swapkit/utxo-signer").BTCNetwork;
173
- getPrivateKeyFromMnemonic: (params: {
174
- phrase: string;
175
- derivationPath: string;
176
- }) => string;
177
- isRBFEnabled: (txid: string) => Promise<import("node_modules/@swapkit/toolboxes/dist/types/utxo/toolbox/utxo").RBFStatusResult>;
178
- keys: {
179
- privateKey: import("@swapkit/utxo-signer/utils").Bytes;
180
- publicKey: Uint8Array<ArrayBufferLike>;
181
- } | undefined;
182
- resolveDerivationIndex: ({ address, gapLimit }: import("@swapkit/toolboxes/utxo").ResolveDerivationParams) => {
183
- change: boolean;
184
- index: number;
185
- } | undefined;
186
- signAndBroadcastTransaction: (tx: InstanceType<typeof Transaction>) => Promise<string>;
187
- signTransactionWithMultipleKeys: ({ tx, inputDerivations, }: {
188
- tx: InstanceType<typeof Transaction>;
189
- inputDerivations: import("@swapkit/toolboxes/utxo").InputDerivation[];
190
- }) => Transaction;
191
- validateAddress: (address: string) => boolean;
192
- } | {
193
- address: string;
194
- deriveAddressAtIndex: ({ accountIndex, index, change, }: {
195
- accountIndex?: number;
196
- index: number;
197
- change?: boolean;
198
- }) => Promise<{
199
- accountIndex: number;
200
- address: any;
201
- change: boolean;
202
- index: number;
203
- path: string;
204
- pubkey: string;
205
- } | undefined>;
206
- deriveAddresses: ({ accountIndex, count, startIndex, change, }: {
207
- accountIndex?: number;
208
- count: number;
209
- startIndex?: number;
210
- change?: boolean;
211
- }) => Promise<{
212
- accountIndex: number;
213
- address: any;
214
- change: boolean;
215
- index: number;
216
- path: string;
217
- pubkey: string;
218
- }[]>;
219
- getExtendedPublicKey: () => Promise<{
220
- accountIndex: number;
221
- path: string;
222
- xpub: string;
223
- }>;
224
- getExtendedPublicKeyInfo: ({ accountIndex }?: {
225
- accountIndex?: number;
226
- }) => Promise<{
227
- accountIndex: number;
228
- path: string;
229
- xpub: string;
230
- }>;
231
- signTransaction: (tx: Transaction, inputs: KeepKeyInputObject[], memo?: string) => Promise<string>;
232
- signTransactionWithMultipleInputs: (tx: Transaction, inputs: Array<{
233
- hash: string;
234
- index: number;
235
- value: number;
236
- txHex?: string;
237
- derivationIndex: number;
238
- isChange: boolean;
239
- }>, memo?: string) => Promise<string>;
240
- transfer: ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => Promise<string>;
241
- transferFromMultipleAddresses: ({ utxos, recipient, assetValue, memo, feeRate, feeOptionKey, }: {
242
- utxos: Array<{
243
- hash: string;
244
- index: number;
245
- value: number;
246
- txHex?: string;
247
- derivationIndex: number;
248
- isChange: boolean;
249
- address: string;
250
- }>;
251
- recipient: string;
252
- assetValue: {
253
- getBaseValue: (unit: string) => number;
254
- chain: string;
255
- };
256
- memo?: string;
257
- feeRate?: number;
258
- feeOptionKey?: (typeof FeeOption)[keyof typeof FeeOption];
259
- }) => Promise<string>;
260
- getAggregatedBalance: (gapLimit?: number) => Promise<import("@swapkit/toolboxes/utxo").AggregatedBalanceResult>;
261
- getAggregatedUtxos: (gapLimit?: number) => Promise<import("@swapkit/toolboxes/utxo").UTXOForMultiAddressTransfer[]>;
262
- scanForAddresses: (params?: {
263
- gapLimit?: number;
264
- change?: boolean;
265
- }) => Promise<import("@swapkit/toolboxes/utxo").DerivedAddress[]>;
266
- broadcastTx: (txHash: string) => Promise<string>;
267
- buildTx: ({ assetValue, recipient, memo, feeRate, sender }: import("@swapkit/toolboxes/utxo").UTXOBuildTxParams) => Promise<{
268
- inputs: import("@swapkit/toolboxes/utxo").UTXOType[];
269
- tx: Transaction;
270
- utxos: {
271
- address: string;
272
- hash: string;
273
- index: number;
274
- txHex: string | undefined;
275
- value: number;
276
- witnessUtxo: {
277
- script: Buffer<ArrayBuffer>;
278
- value: number;
279
- };
280
- }[];
281
- }>;
282
- createTransaction: ({ assetValue, recipient, memo, feeRate, sender }: import("@swapkit/toolboxes/utxo").UTXOBuildTxParams) => Promise<{
283
- inputs: import("@swapkit/toolboxes/utxo").UTXOType[];
284
- tx: Transaction;
285
- utxos: {
286
- address: string;
287
- hash: string;
288
- index: number;
289
- txHex: string | undefined;
290
- value: number;
291
- witnessUtxo: {
292
- script: Buffer<ArrayBuffer>;
293
- value: number;
294
- };
295
- }[];
296
- }>;
297
- getAddress: () => Promise<string | undefined>;
298
- getAddressFromKeys: (keys: {
299
- publicKey: Uint8Array;
300
- }) => string;
301
- getBalance: (address: string, _scamFilter?: boolean) => Promise<import("@swapkit/helpers").AssetValue[]>;
302
- getFeeRates: () => Promise<{
303
- average: number;
304
- fast: number;
305
- fastest: number;
306
- }>;
307
- stripPrefix: typeof import("@swapkit/toolboxes/utxo").stripPrefix;
308
- stripToCashAddress: typeof stripToCashAddress;
309
- validateAddress: typeof import("@swapkit/toolboxes/utxo").validateBchAddress;
310
- accumulative: typeof import("@swapkit/toolboxes/utxo").accumulative;
311
- bumpFee: ({ txid, newFeeRate, recipient, memo }: import("@swapkit/toolboxes/utxo").RBFTransactionParams) => Promise<{
312
- newFee: number;
313
- originalFee: number;
314
- txid: string;
315
- }>;
316
- calculateTxSize: ({ inputs, outputs, feeRate }: import("@swapkit/toolboxes/utxo").UTXOCalculateTxSizeParams) => number;
317
- createKeysForPath: (params: {
318
- wif?: string;
319
- phrase?: string;
320
- derivationPath?: string;
321
- }) => {
322
- privateKey: import("@swapkit/utxo-signer/utils").Bytes;
323
- publicKey: Uint8Array<ArrayBufferLike>;
324
- };
325
- createReplacementTransaction: ({ txid, newFeeRate, recipient, memo, }: import("@swapkit/toolboxes/utxo").RBFTransactionParams) => Promise<import("node_modules/@swapkit/toolboxes/dist/types/utxo/toolbox/utxo").ReplacementTransactionResult>;
326
- derivePrivateKeyAtIndex: ({ accountIndex, index, change }: import("@swapkit/toolboxes/utxo").DeriveAddressParams) => Uint8Array<ArrayBufferLike> | undefined;
327
- estimateMaxSendableAmount: ({ from, memo, feeRate, feeOptionKey, recipients, }: {
328
- from: string;
329
- memo?: string;
330
- feeRate?: number;
331
- feeOptionKey?: FeeOption;
332
- recipients?: number | import("@swapkit/toolboxes/utxo").TargetOutput[];
333
- }) => Promise<import("@swapkit/helpers").AssetValue>;
334
- estimateTransactionFee: (params: {
335
- assetValue: import("@swapkit/helpers").AssetValue;
336
- recipient: string;
337
- sender: string;
338
- memo?: string;
339
- feeOptionKey?: FeeOption;
340
- feeRate?: number;
341
- fetchTxHex?: boolean;
342
- }) => Promise<import("@swapkit/helpers").AssetValue>;
343
- getInputsOutputsFee: ({ assetValue, feeOptionKey, feeRate, memo, sender, recipient, }: Omit<import("@swapkit/toolboxes/utxo").UTXOBuildTxParams, "feeRate"> & {
344
- feeOptionKey?: FeeOption;
345
- feeRate?: number;
346
- }) => Promise<{
347
- fee: number;
348
- inputs: {
349
- address: string;
350
- hash: string;
351
- index: number;
352
- txHex: string | undefined;
353
- value: number;
354
- witnessUtxo: {
355
- script: Buffer<ArrayBuffer>;
356
- value: number;
357
- };
358
- }[];
359
- outputs: import("@swapkit/toolboxes/utxo").TargetOutput[];
360
- } | {
361
- fee: number;
362
- inputs?: undefined;
363
- outputs?: undefined;
364
- }>;
365
- getNetworkForChain: () => import("@swapkit/utxo-signer").BTCNetwork;
366
- getPrivateKeyFromMnemonic: (params: {
367
- phrase: string;
368
- derivationPath: string;
369
- }) => string;
370
- isRBFEnabled: (txid: string) => Promise<import("node_modules/@swapkit/toolboxes/dist/types/utxo/toolbox/utxo").RBFStatusResult>;
371
- keys: {
372
- privateKey: import("@swapkit/utxo-signer/utils").Bytes;
373
- publicKey: Uint8Array<ArrayBufferLike>;
374
- } | undefined;
375
- resolveDerivationIndex: ({ address, gapLimit }: import("@swapkit/toolboxes/utxo").ResolveDerivationParams) => {
376
- change: boolean;
377
- index: number;
378
- } | undefined;
379
- signAndBroadcastTransaction: (tx: InstanceType<typeof Transaction>) => Promise<string>;
380
- signTransactionWithMultipleKeys: ({ tx, inputDerivations, }: {
381
- tx: InstanceType<typeof Transaction>;
382
- inputDerivations: import("@swapkit/toolboxes/utxo").InputDerivation[];
383
- }) => Transaction;
384
- }>;
10
+ }): Promise<KeepKeyUTXOWalletMethods>;
385
11
  export {};
386
12
  //# sourceMappingURL=utxo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../../../src/keepkey/chains/utxo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utxo.d.ts","sourceRoot":"","sources":["../../../../src/keepkey/chains/utxo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,KAAK,EAEL,KAAK,mBAAmB,EAKxB,KAAK,SAAS,EACf,MAAM,kBAAkB,CAAC;AAwB1B,KAAK,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9E,wBAAsB,iBAAiB,CAAC,EACtC,GAAG,EACH,KAAK,EACL,cAAc,GACf,EAAE;IACD,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,cAAc,CAAC,EAAE,mBAAmB,CAAC;CACtC,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA+TpC"}
package/package.json CHANGED
@@ -28,6 +28,7 @@
28
28
  "@trezor/connect-web": "~9.6.4",
29
29
  "cosmjs-types": "~0.10.1",
30
30
  "ethers": "^6.14.0",
31
+ "ledger-bitcoin": "~0.3.0",
31
32
  "ripple-binary-codec": "2.5.1",
32
33
  "ts-pattern": "^5.9.0",
33
34
  "xrpl": "~4.4.2"
@@ -57,6 +58,7 @@
57
58
  "@trezor/connect-web": "9.6.4",
58
59
  "cosmjs-types": "0.10.1",
59
60
  "ethers": "6.16.0",
61
+ "ledger-bitcoin": "0.3.0",
60
62
  "ripple-binary-codec": "2.5.1",
61
63
  "ts-pattern": "^5.9.0",
62
64
  "xrpl": "4.4.2"
@@ -87,15 +89,11 @@
87
89
  "types": "./dist/types/trezor/index.d.ts"
88
90
  }
89
91
  },
90
- "files": [
91
- "dist/"
92
- ],
92
+ "files": ["dist/", "src/"],
93
93
  "homepage": "https://github.com/swapkit/wallets",
94
94
  "license": "SEE LICENSE IN LICENSE",
95
95
  "name": "@swapkit/wallet-hardware",
96
- "publishConfig": {
97
- "access": "public"
98
- },
96
+ "publishConfig": { "access": "public" },
99
97
  "repository": {
100
98
  "directory": "packages/wallet-hardware",
101
99
  "type": "git",
@@ -109,5 +107,5 @@
109
107
  "type-check:go": "tsgo"
110
108
  },
111
109
  "type": "module",
112
- "version": "4.8.0"
110
+ "version": "4.8.2"
113
111
  }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,69 @@
1
+ import type { KeepKeySdk } from "@keepkey/keepkey-sdk";
2
+ import type { GenericTransferParams } from "@swapkit/helpers";
3
+ import {
4
+ Chain,
5
+ DerivationPath,
6
+ type DerivationPathArray,
7
+ derivationPathToString,
8
+ GAIAConfig,
9
+ getRPCUrl,
10
+ } from "@swapkit/helpers";
11
+
12
+ import { bip32ToAddressNList } from "../coins";
13
+
14
+ export async function cosmosWalletMethods({
15
+ sdk,
16
+ derivationPath,
17
+ }: {
18
+ sdk: KeepKeySdk;
19
+ derivationPath?: DerivationPathArray;
20
+ }): Promise<any> {
21
+ const { DEFAULT_COSMOS_FEE_MAINNET, getCosmosToolbox, getFeeRateFromSwapKit, createStargateClient } = await import(
22
+ "@swapkit/toolboxes/cosmos"
23
+ );
24
+ const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.GAIA}/0`;
25
+
26
+ const { address: fromAddress } = (await sdk.address.cosmosGetAddress({
27
+ address_n: bip32ToAddressNList(derivationPathString),
28
+ })) as { address: string };
29
+
30
+ const toolbox = await getCosmosToolbox(Chain.Cosmos);
31
+
32
+ if (DEFAULT_COSMOS_FEE_MAINNET.amount[0]) {
33
+ DEFAULT_COSMOS_FEE_MAINNET.amount[0].amount = String(await getFeeRateFromSwapKit(GAIAConfig.chainId, 500));
34
+ }
35
+
36
+ // TODO support other cosmos assets
37
+ const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {
38
+ const amount = assetValue.getBaseValue("string");
39
+ const accountInfo = await toolbox.getAccount(fromAddress);
40
+
41
+ const keepKeySignedTx = await sdk.cosmos.cosmosSignAmino({
42
+ signDoc: {
43
+ account_number: accountInfo?.accountNumber.toString() ?? "",
44
+ chain_id: GAIAConfig.chainId,
45
+ fee: DEFAULT_COSMOS_FEE_MAINNET,
46
+ memo: memo || "",
47
+ msgs: [
48
+ {
49
+ type: "cosmos-sdk/MsgSend",
50
+ value: { amount: [{ amount, denom: "uatom" }], from_address: fromAddress, to_address: recipient },
51
+ },
52
+ ],
53
+ sequence: accountInfo?.sequence.toString() ?? "",
54
+ },
55
+ signerAddress: fromAddress,
56
+ });
57
+
58
+ const decodedBytes = atob(keepKeySignedTx.serialized);
59
+ const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));
60
+
61
+ const rpcUrl = await getRPCUrl(Chain.Cosmos);
62
+ const client = await createStargateClient(rpcUrl);
63
+ const response = await client.broadcastTx(uint8Array);
64
+
65
+ return response.transactionHash;
66
+ };
67
+
68
+ return { ...toolbox, address: fromAddress, transfer };
69
+ }
@@ -0,0 +1,141 @@
1
+ import type { KeepKeySdk } from "@keepkey/keepkey-sdk";
2
+ import {
3
+ type Chain,
4
+ ChainToChainId,
5
+ type DerivationPathArray,
6
+ derivationPathToString,
7
+ NetworkDerivationPath,
8
+ SwapKitError,
9
+ } from "@swapkit/helpers";
10
+ import type { JsonRpcProvider, Provider, TransactionRequest, TypedDataDomain, TypedDataField } from "ethers";
11
+ import { AbstractSigner } from "ethers";
12
+
13
+ import { bip32ToAddressNList } from "../coins";
14
+
15
+ interface KeepKeyEVMSignerParams {
16
+ sdk: KeepKeySdk;
17
+ chain: Chain;
18
+ derivationPath?: DerivationPathArray;
19
+ provider: Provider | JsonRpcProvider;
20
+ }
21
+
22
+ export class KeepKeySigner extends AbstractSigner {
23
+ private sdk: KeepKeySdk;
24
+ private chain: Chain;
25
+ private derivationPath: DerivationPathArray;
26
+ private address: string;
27
+ readonly provider: Provider | JsonRpcProvider;
28
+
29
+ constructor({ sdk, chain, derivationPath, provider }: KeepKeyEVMSignerParams) {
30
+ super();
31
+ this.sdk = sdk;
32
+ this.chain = chain;
33
+ this.derivationPath = derivationPath || NetworkDerivationPath.ETH;
34
+ this.address = "";
35
+ this.provider = provider;
36
+ }
37
+
38
+ signTypedData = async (
39
+ domain: TypedDataDomain,
40
+ types: Record<string, TypedDataField[]>,
41
+ value: Record<string, unknown>,
42
+ explicitPrimaryType?: string,
43
+ ) => {
44
+ const { buildEIP712DomainType } = await import("@swapkit/toolboxes/evm");
45
+ const { TypedDataEncoder } = await import("ethers");
46
+
47
+ const { EIP712Domain: _, ...filteredTypes } = types;
48
+ const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;
49
+ const domainTypes = buildEIP712DomainType(domain);
50
+
51
+ const address = await this.getAddress();
52
+ const result = await this.sdk.eth.ethSignTypedData({
53
+ address,
54
+ typedData: {
55
+ domain: domain as Record<string, unknown>,
56
+ message: value,
57
+ primaryType,
58
+ types: { EIP712Domain: domainTypes, ...filteredTypes },
59
+ },
60
+ });
61
+
62
+ if (typeof result !== "string") {
63
+ throw new SwapKitError("wallet_keepkey_method_not_supported", { method: "signTypedData" });
64
+ }
65
+
66
+ return result.startsWith("0x") ? result : `0x${result}`;
67
+ };
68
+
69
+ getAddress = async () => {
70
+ if (this.address) return this.address;
71
+ const { address } = await this.sdk.address.ethereumGetAddress({
72
+ address_n: bip32ToAddressNList(derivationPathToString(this.derivationPath)),
73
+ });
74
+
75
+ this.address = address;
76
+ return address;
77
+ };
78
+
79
+ signMessage = (message: string) => this.sdk.eth.ethSign({ address: this.address, message }) as Promise<string>;
80
+
81
+ signTransaction = async ({
82
+ to,
83
+ value,
84
+ gasLimit,
85
+ nonce,
86
+ data,
87
+ maxFeePerGas,
88
+ maxPriorityFeePerGas,
89
+ gasPrice,
90
+ }: TransactionRequest) => {
91
+ if (!to) throw new SwapKitError("wallet_keepkey_invalid_params", { reason: "Missing to address" });
92
+ if (!gasLimit) throw new SwapKitError("wallet_keepkey_invalid_params", { reason: "Missing gasLimit" });
93
+ if (!data) throw new SwapKitError("wallet_keepkey_invalid_params", { reason: "Missing data" });
94
+
95
+ const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);
96
+ if (isEIP1559 && !maxFeePerGas)
97
+ throw new SwapKitError("wallet_keepkey_invalid_params", { reason: "Missing maxFeePerGas" });
98
+ if (isEIP1559 && !maxPriorityFeePerGas)
99
+ throw new SwapKitError("wallet_keepkey_invalid_params", { reason: "Missing maxPriorityFeePerGas" });
100
+ if (!(isEIP1559 || gasPrice))
101
+ throw new SwapKitError("wallet_keepkey_invalid_params", { reason: "Missing gasPrice" });
102
+
103
+ const { toHexString } = await import("@swapkit/toolboxes/evm");
104
+
105
+ const nonceValue = nonce
106
+ ? BigInt(nonce)
107
+ : BigInt(await this.provider.getTransactionCount(await this.getAddress(), "pending"));
108
+
109
+ const input = {
110
+ addressNList: [2147483692, 2147483708, 2147483648, 0, 0],
111
+ chainId: toHexString(BigInt(ChainToChainId[this.chain])),
112
+ data,
113
+ from: this.address,
114
+ gas: toHexString(BigInt(gasLimit)),
115
+ nonce: toHexString(nonceValue),
116
+ to: to.toString(),
117
+ value: toHexString(BigInt(value || 0)),
118
+ ...(isEIP1559 && {
119
+ maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || "0")),
120
+ maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || "0")),
121
+ }),
122
+ ...(!isEIP1559 && {
123
+ // Fixed syntax error and structure here
124
+ gasPrice: toHexString(BigInt(gasPrice?.toString() || "0")),
125
+ }),
126
+ };
127
+ const responseSign = await this.sdk.eth.ethSignTransaction(input);
128
+ return responseSign.serialized;
129
+ };
130
+
131
+ sendTransaction = async (tx: TransactionRequest): Promise<any> => {
132
+ if (!this.provider) throw new SwapKitError("wallet_keepkey_no_provider");
133
+
134
+ const signedTxHex = await this.signTransaction(tx);
135
+
136
+ return await this.provider.broadcastTransaction(signedTxHex);
137
+ };
138
+
139
+ connect = (provider: Provider) =>
140
+ new KeepKeySigner({ chain: this.chain, derivationPath: this.derivationPath, provider, sdk: this.sdk });
141
+ }