@swapkit/wallets 3.0.0-beta.20 → 3.0.0-beta.22

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 (113) hide show
  1. package/dist/chunk-2aa1w78q.js +3 -0
  2. package/dist/chunk-2aa1w78q.js.map +10 -0
  3. package/dist/{chunk-s6xqbsy0.js → chunk-ebfkk1jn.js} +1 -1
  4. package/dist/{chunk-s6xqbsy0.js.map → chunk-ebfkk1jn.js.map} +1 -1
  5. package/dist/{chunk-sygzrjje.js → chunk-k9q04afa.js} +1 -1
  6. package/dist/{chunk-sygzrjje.js.map → chunk-k9q04afa.js.map} +1 -1
  7. package/dist/chunk-x5hgx9x9.js +3 -0
  8. package/dist/chunk-x5hgx9x9.js.map +10 -0
  9. package/dist/src/bitget/index.cjs +2 -2
  10. package/dist/src/bitget/index.cjs.map +3 -3
  11. package/dist/src/bitget/index.js +2 -2
  12. package/dist/src/bitget/index.js.map +3 -3
  13. package/dist/src/coinbase/index.cjs +2 -2
  14. package/dist/src/coinbase/index.cjs.map +3 -3
  15. package/dist/src/coinbase/index.js +2 -2
  16. package/dist/src/coinbase/index.js.map +3 -3
  17. package/dist/src/cosmostation/index.cjs +3 -0
  18. package/dist/src/cosmostation/index.cjs.map +10 -0
  19. package/dist/src/cosmostation/index.js +3 -0
  20. package/dist/src/cosmostation/index.js.map +10 -0
  21. package/dist/src/ctrl/index.js +1 -1
  22. package/dist/src/evm-extensions/index.cjs +2 -2
  23. package/dist/src/evm-extensions/index.cjs.map +3 -3
  24. package/dist/src/evm-extensions/index.js +2 -2
  25. package/dist/src/evm-extensions/index.js.map +3 -3
  26. package/dist/src/exodus/index.cjs +2 -2
  27. package/dist/src/exodus/index.cjs.map +3 -3
  28. package/dist/src/exodus/index.js +2 -2
  29. package/dist/src/exodus/index.js.map +3 -3
  30. package/dist/src/index.js +1 -1
  31. package/dist/src/keepkey/index.cjs +2 -2
  32. package/dist/src/keepkey/index.cjs.map +9 -9
  33. package/dist/src/keepkey/index.js +2 -2
  34. package/dist/src/keepkey/index.js.map +9 -9
  35. package/dist/src/keepkey-bex/index.cjs +2 -2
  36. package/dist/src/keepkey-bex/index.cjs.map +4 -4
  37. package/dist/src/keepkey-bex/index.js +2 -2
  38. package/dist/src/keepkey-bex/index.js.map +4 -4
  39. package/dist/src/keplr/index.cjs +2 -2
  40. package/dist/src/keplr/index.cjs.map +3 -3
  41. package/dist/src/keplr/index.js +2 -2
  42. package/dist/src/keplr/index.js.map +3 -3
  43. package/dist/src/keystore/index.cjs +2 -2
  44. package/dist/src/keystore/index.cjs.map +3 -3
  45. package/dist/src/keystore/index.js +2 -2
  46. package/dist/src/keystore/index.js.map +3 -3
  47. package/dist/src/ledger/index.cjs +3 -3
  48. package/dist/src/ledger/index.cjs.map +13 -13
  49. package/dist/src/ledger/index.js +3 -3
  50. package/dist/src/ledger/index.js.map +13 -13
  51. package/dist/src/okx/index.cjs +2 -2
  52. package/dist/src/okx/index.cjs.map +3 -3
  53. package/dist/src/okx/index.js +2 -2
  54. package/dist/src/okx/index.js.map +3 -3
  55. package/dist/src/onekey/index.cjs +2 -2
  56. package/dist/src/onekey/index.cjs.map +3 -3
  57. package/dist/src/onekey/index.js +2 -2
  58. package/dist/src/onekey/index.js.map +3 -3
  59. package/dist/src/phantom/index.js +1 -1
  60. package/dist/src/polkadotjs/index.js +1 -1
  61. package/dist/src/radix/index.cjs +2 -2
  62. package/dist/src/radix/index.cjs.map +3 -3
  63. package/dist/src/radix/index.js +2 -2
  64. package/dist/src/radix/index.js.map +3 -3
  65. package/dist/src/talisman/index.js +1 -1
  66. package/dist/src/trezor/index.cjs +1 -1
  67. package/dist/src/trezor/index.js +1 -1
  68. package/dist/src/walletconnect/index.cjs +2 -2
  69. package/dist/src/walletconnect/index.cjs.map +4 -4
  70. package/dist/src/walletconnect/index.js +2 -2
  71. package/dist/src/walletconnect/index.js.map +4 -4
  72. package/package.json +13 -8
  73. package/src/bitget/helpers.ts +3 -2
  74. package/src/coinbase/signer.ts +4 -4
  75. package/src/cosmostation/index.ts +8 -7
  76. package/src/evm-extensions/index.ts +4 -3
  77. package/src/exodus/index.ts +7 -7
  78. package/src/keepkey/chains/cosmos.ts +44 -50
  79. package/src/keepkey/chains/evm.ts +16 -8
  80. package/src/keepkey/chains/mayachain.ts +2 -1
  81. package/src/keepkey/chains/thorchain.ts +2 -1
  82. package/src/keepkey/chains/utxo.ts +9 -2
  83. package/src/keepkey/coins.ts +10 -4
  84. package/src/keepkey/index.ts +15 -7
  85. package/src/keepkey-bex/index.ts +9 -14
  86. package/src/keepkey-bex/walletHelpers.ts +1 -1
  87. package/src/keplr/index.ts +4 -3
  88. package/src/keystore/index.ts +1 -0
  89. package/src/ledger/clients/cosmos.ts +3 -2
  90. package/src/ledger/clients/evm.ts +6 -5
  91. package/src/ledger/clients/thorchain/helpers.ts +9 -4
  92. package/src/ledger/clients/thorchain/index.ts +3 -3
  93. package/src/ledger/clients/thorchain/lib.ts +3 -2
  94. package/src/ledger/clients/thorchain/utils.ts +20 -9
  95. package/src/ledger/cosmosTypes.ts +14 -10
  96. package/src/ledger/helpers/getLedgerClient.ts +54 -47
  97. package/src/ledger/helpers/getLedgerTransport.ts +1 -1
  98. package/src/ledger/index.ts +7 -6
  99. package/src/ledger/interfaces/CosmosLedgerInterface.ts +0 -1
  100. package/src/okx/helpers.ts +9 -8
  101. package/src/onekey/index.ts +2 -6
  102. package/src/radix/index.ts +4 -4
  103. package/src/trezor/evmSigner.ts +1 -1
  104. package/src/walletconnect/evmSigner.ts +6 -2
  105. package/src/walletconnect/index.ts +2 -2
  106. package/dist/chunk-4ef2xs46.js +0 -3
  107. package/dist/chunk-4ef2xs46.js.map +0 -10
  108. package/dist/chunk-qgv1myym.js +0 -3
  109. package/dist/chunk-qgv1myym.js.map +0 -10
  110. package/dist/chunk-w07sv0jv.js +0 -3
  111. package/dist/chunk-w07sv0jv.js.map +0 -10
  112. package/dist/chunk-y0g3prs9.js +0 -3
  113. package/dist/chunk-y0g3prs9.js.map +0 -10
@@ -1,19 +1,26 @@
1
1
  import { base64 } from "@scure/base";
2
+ import { SwapKitError } from "@swapkit/helpers";
2
3
 
3
4
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor
4
5
  export const getSignature = (signatureArray: any) => {
5
6
  // Check Type Length Value encoding
6
7
  if (signatureArray.length < 64) {
7
- throw new Error("Invalid Signature: Too short");
8
+ throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "Too short" });
8
9
  }
9
10
  if (signatureArray[0] !== 0x30) {
10
- throw new Error("Invalid Ledger Signature TLV encoding: expected first byte 0x30");
11
+ throw new SwapKitError("wallet_ledger_invalid_signature", {
12
+ reason: "TLV encoding: expected first byte 0x30",
13
+ });
11
14
  }
12
15
  if (signatureArray[1] + 2 !== signatureArray.length) {
13
- throw new Error("Invalid Signature: signature length does not match TLV");
16
+ throw new SwapKitError("wallet_ledger_invalid_signature", {
17
+ reason: "signature length does not match TLV",
18
+ });
14
19
  }
15
20
  if (signatureArray[2] !== 0x02) {
16
- throw new Error("Invalid Ledger Signature TLV encoding: expected length type 0x02");
21
+ throw new SwapKitError("wallet_ledger_invalid_signature", {
22
+ reason: "TLV encoding: expected length type 0x02",
23
+ });
17
24
  }
18
25
 
19
26
  // r signature
@@ -24,7 +31,7 @@ export const getSignature = (signatureArray: any) => {
24
31
  if (rSignature.length === 33 && rSignature[0] === 0) {
25
32
  rSignature = rSignature.slice(1, 33);
26
33
  } else if (rSignature.length === 33) {
27
- throw new Error('Invalid signature: "r" too long');
34
+ throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "r too long" });
28
35
  }
29
36
 
30
37
  // add leading zero's to pad to 32 bytes
@@ -34,13 +41,17 @@ export const getSignature = (signatureArray: any) => {
34
41
 
35
42
  // s signature
36
43
  if (signatureArray[rLength + 4] !== 0x02) {
37
- throw new Error("Invalid Ledger Signature TLV encoding: expected length type 0x02");
44
+ throw new SwapKitError("wallet_ledger_invalid_signature", {
45
+ reason: "TLV encoding: expected length type 0x02 for s",
46
+ });
38
47
  }
39
48
 
40
49
  const sLength = signatureArray[rLength + 5];
41
50
 
42
51
  if (4 + rLength + 2 + sLength !== signatureArray.length) {
43
- throw new Error("Invalid Ledger Signature: TLV byte lengths do not match message length");
52
+ throw new SwapKitError("wallet_ledger_invalid_signature", {
53
+ reason: "TLV byte lengths do not match message length",
54
+ });
44
55
  }
45
56
 
46
57
  let sSignature = signatureArray.slice(rLength + 6, signatureArray.length);
@@ -49,7 +60,7 @@ export const getSignature = (signatureArray: any) => {
49
60
  if (sSignature.length === 33 && sSignature[0] === 0) {
50
61
  sSignature = sSignature.slice(1, 33);
51
62
  } else if (sSignature.length === 33) {
52
- throw new Error('Invalid signature: "s" too long');
63
+ throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "s too long" });
53
64
  }
54
65
 
55
66
  // add leading zero's to pad to 32 bytes
@@ -58,7 +69,7 @@ export const getSignature = (signatureArray: any) => {
58
69
  }
59
70
 
60
71
  if (rSignature.length !== 32 || sSignature.length !== 32) {
61
- throw new Error("Invalid signatures: must be 32 bytes each");
72
+ throw new SwapKitError("wallet_ledger_invalid_signature", { reason: "must be 32 bytes each" });
62
73
  }
63
74
 
64
75
  return base64.encode(Buffer.concat([rSignature, sSignature]));
@@ -1,3 +1,5 @@
1
+ import { SwapKitError } from "@swapkit/helpers";
2
+
1
3
  export interface Coin {
2
4
  readonly denom: string;
3
5
  readonly amount: string;
@@ -57,12 +59,14 @@ export class AminoTypes {
57
59
  toAmino({ typeUrl, value }: EncodeObject): AminoMsg {
58
60
  const converter = this.register[typeUrl];
59
61
  if (converter === "not_supported_by_chain") {
60
- throw new Error(
61
- `The message type '${typeUrl}' cannot be signed using the Amino JSON sign mode because this is not supported by chain.`,
62
- );
62
+ throw new SwapKitError("wallet_ledger_chain_not_supported", {
63
+ reason: `The message type '${typeUrl}' cannot be signed using the Amino JSON sign mode because this is not supported by chain.`,
64
+ });
63
65
  }
64
66
  if (!converter) {
65
- throw new Error(`Type URL '${typeUrl}' does not exist in the Amino message type register. `);
67
+ throw new SwapKitError("wallet_ledger_invalid_params", {
68
+ reason: `Type URL '${typeUrl}' does not exist in the Amino message type register.`,
69
+ });
66
70
  }
67
71
  return {
68
72
  type: converter.aminoType,
@@ -76,18 +80,18 @@ export class AminoTypes {
76
80
  .filter(([_typeUrl, { aminoType }]) => aminoType === type);
77
81
 
78
82
  if (matches.length === 0) {
79
- throw new Error(
80
- `Amino type identifier '${type}' does not exist in the Amino message type register.`,
81
- );
83
+ throw new SwapKitError("wallet_ledger_invalid_params", {
84
+ reason: `Amino type identifier '${type}' does not exist in the Amino message type register.`,
85
+ });
82
86
  }
83
87
 
84
88
  if (matches.length > 1) {
85
- throw new Error(
86
- `Multiple types are registered with Amino type identifier '${type}': '${matches
89
+ throw new SwapKitError("wallet_ledger_invalid_params", {
90
+ reason: `Multiple types are registered with Amino type identifier '${type}': '${matches
87
91
  .map(([key, _value]) => key)
88
92
  .sort()
89
93
  .join("', '")}'. Thus fromAmino cannot be performed.`,
90
- );
94
+ });
91
95
  }
92
96
 
93
97
  const [typeUrl, converter] = matches[0] as [string, AminoConverter];
@@ -1,4 +1,10 @@
1
- import { Chain, type DerivationPathArray, SwapKitError, WalletOption } from "@swapkit/helpers";
1
+ import {
2
+ Chain,
3
+ type DerivationPathArray,
4
+ type EVMChain,
5
+ SwapKitError,
6
+ WalletOption,
7
+ } from "@swapkit/helpers";
2
8
 
3
9
  import { CosmosLedger } from "../clients/cosmos";
4
10
  import {
@@ -47,53 +53,54 @@ export const getLedgerClient = async <T extends LedgerSupportedChain>({
47
53
  chain: T;
48
54
  derivationPath?: DerivationPathArray;
49
55
  }): Promise<LedgerSignerMap[T]> => {
50
- switch (chain) {
51
- case Chain.THORChain:
52
- return new THORChainLedger(derivationPath) as LedgerSignerMap[T];
53
- case Chain.Cosmos:
54
- return new CosmosLedger(derivationPath) as LedgerSignerMap[T];
55
- case Chain.Bitcoin:
56
- return BitcoinLedger(derivationPath) as LedgerSignerMap[T];
57
- case Chain.BitcoinCash:
58
- return BitcoinCashLedger(derivationPath) as LedgerSignerMap[T];
59
- case Chain.Dash:
60
- return DashLedger(derivationPath) as LedgerSignerMap[T];
61
- case Chain.Dogecoin:
62
- return DogecoinLedger(derivationPath) as LedgerSignerMap[T];
63
- case Chain.Litecoin:
64
- return LitecoinLedger(derivationPath) as LedgerSignerMap[T];
65
- case Chain.Ripple:
66
- return XRPLedger(derivationPath) as LedgerSignerMap[T];
67
-
68
- case Chain.Arbitrum:
69
- case Chain.Avalanche:
70
- case Chain.BinanceSmartChain:
71
- case Chain.Ethereum:
72
- case Chain.Optimism:
73
- case Chain.Polygon:
74
- case Chain.Base: {
75
- const { getProvider } = await import("@swapkit/toolboxes/evm");
76
- const params = { provider: await getProvider(chain), derivationPath };
56
+ const { match } = await import("ts-pattern");
77
57
 
78
- switch (chain) {
79
- case Chain.BinanceSmartChain:
80
- return BinanceSmartChainLedger(params) as LedgerSignerMap[T];
81
- case Chain.Avalanche:
82
- return AvalancheLedger(params) as LedgerSignerMap[T];
83
- case Chain.Arbitrum:
84
- return ArbitrumLedger(params) as LedgerSignerMap[T];
85
- case Chain.Optimism:
86
- return OptimismLedger(params) as LedgerSignerMap[T];
87
- case Chain.Polygon:
88
- return PolygonLedger(params) as LedgerSignerMap[T];
89
- case Chain.Base:
90
- return BaseLedger(params) as LedgerSignerMap[T];
91
- default:
92
- return EthereumLedger(params) as LedgerSignerMap[T];
93
- }
94
- }
58
+ return match(chain as LedgerSupportedChain)
59
+ .returnType<Promise<LedgerSignerMap[T]>>()
60
+ .with(Chain.THORChain, () =>
61
+ Promise.resolve(new THORChainLedger(derivationPath) as LedgerSignerMap[T]),
62
+ )
63
+ .with(Chain.Cosmos, () =>
64
+ Promise.resolve(new CosmosLedger(derivationPath) as LedgerSignerMap[T]),
65
+ )
66
+ .with(Chain.Bitcoin, () => Promise.resolve(BitcoinLedger(derivationPath) as LedgerSignerMap[T]))
67
+ .with(Chain.BitcoinCash, () =>
68
+ Promise.resolve(BitcoinCashLedger(derivationPath) as LedgerSignerMap[T]),
69
+ )
70
+ .with(Chain.Dash, () => Promise.resolve(DashLedger(derivationPath) as LedgerSignerMap[T]))
71
+ .with(Chain.Dogecoin, () =>
72
+ Promise.resolve(DogecoinLedger(derivationPath) as LedgerSignerMap[T]),
73
+ )
74
+ .with(Chain.Litecoin, () =>
75
+ Promise.resolve(LitecoinLedger(derivationPath) as LedgerSignerMap[T]),
76
+ )
77
+ .with(Chain.Ripple, () => Promise.resolve(XRPLedger(derivationPath) as LedgerSignerMap[T]))
78
+ .with(
79
+ Chain.Arbitrum,
80
+ Chain.Avalanche,
81
+ Chain.BinanceSmartChain,
82
+ Chain.Ethereum,
83
+ Chain.Optimism,
84
+ Chain.Polygon,
85
+ Chain.Base,
86
+ async () => {
87
+ const { getProvider } = await import("@swapkit/toolboxes/evm");
88
+ const params = { provider: await getProvider(chain as EVMChain), derivationPath };
95
89
 
96
- default:
90
+ return match(chain as Chain)
91
+ .with(
92
+ Chain.BinanceSmartChain,
93
+ () => BinanceSmartChainLedger(params) as LedgerSignerMap[T],
94
+ )
95
+ .with(Chain.Avalanche, () => AvalancheLedger(params) as LedgerSignerMap[T])
96
+ .with(Chain.Arbitrum, () => ArbitrumLedger(params) as LedgerSignerMap[T])
97
+ .with(Chain.Optimism, () => OptimismLedger(params) as LedgerSignerMap[T])
98
+ .with(Chain.Polygon, () => PolygonLedger(params) as LedgerSignerMap[T])
99
+ .with(Chain.Base, () => BaseLedger(params) as LedgerSignerMap[T])
100
+ .otherwise(() => EthereumLedger(params) as LedgerSignerMap[T]);
101
+ },
102
+ )
103
+ .otherwise(() => {
97
104
  throw new SwapKitError("wallet_chain_not_supported", { wallet: WalletOption.LEDGER, chain });
98
- }
105
+ });
99
106
  };
@@ -61,7 +61,7 @@ export const getLedgerTransport = async () => {
61
61
 
62
62
  const Transport = (await import("@ledgerhq/hw-transport-webusb")).default;
63
63
  const isSupported = await Transport.isSupported();
64
- if (!isSupported) throw new Error("WebUSB not supported");
64
+ if (!isSupported) throw new SwapKitError("wallet_ledger_webusb_not_supported");
65
65
 
66
66
  const { DisconnectedDevice } = await import("@ledgerhq/errors");
67
67
 
@@ -6,6 +6,7 @@ import {
6
6
  type GenericTransferParams,
7
7
  SKConfig,
8
8
  StagenetChain,
9
+ SwapKitError,
9
10
  WalletOption,
10
11
  createWallet,
11
12
  filterSupportedChains,
@@ -149,7 +150,7 @@ async function getWalletMethods({
149
150
  const address = await getLedgerAddress({ chain, ledgerClient: signer });
150
151
 
151
152
  const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {
152
- if (!assetValue) throw new Error("invalid asset");
153
+ if (!assetValue) throw new SwapKitError("wallet_ledger_invalid_asset");
153
154
 
154
155
  const sendCoinsMessage = {
155
156
  amount: [
@@ -209,9 +210,9 @@ async function getWalletMethods({
209
210
  // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: Refactor to reduce complexity
210
211
  }: GenericTransferParams | ThorchainDepositParams) => {
211
212
  const account = await toolbox.getAccount(address);
212
- if (!account) throw new Error("invalid account");
213
- if (!assetValue) throw new Error("invalid asset");
214
- if (!value) throw new Error("Account pubkey not found");
213
+ if (!account) throw new SwapKitError("wallet_ledger_invalid_account");
214
+ if (!assetValue) throw new SwapKitError("wallet_ledger_invalid_asset");
215
+ if (!value) throw new SwapKitError("wallet_ledger_pubkey_not_found");
215
216
 
216
217
  const { accountNumber, sequence: sequenceNumber } = account;
217
218
  const sequence = (sequenceNumber || 0).toString();
@@ -231,7 +232,7 @@ async function getWalletMethods({
231
232
  });
232
233
 
233
234
  const signatures = await signTransaction(rawSendTx, sequence);
234
- if (!signatures) throw new Error("tx signing failed");
235
+ if (!signatures) throw new SwapKitError("wallet_ledger_signing_error");
235
236
 
236
237
  const pubkey = encodePubkey({ type: "tendermint/PubKeySecp256k1", value });
237
238
  const msgs = orderedMessages.map(parseAminoMessageForDirectSigning);
@@ -278,6 +279,6 @@ async function getWalletMethods({
278
279
  }
279
280
 
280
281
  default:
281
- throw new Error("Unsupported chain");
282
+ throw new SwapKitError("wallet_ledger_chain_not_supported", { chain });
282
283
  }
283
284
  }
@@ -58,7 +58,6 @@ export abstract class CosmosLedgerInterface {
58
58
  throw new SwapKitError("wallet_ledger_device_not_found");
59
59
 
60
60
  default: {
61
- console.error(`Ledger error: ${errorCode} ${message}`);
62
61
  break;
63
62
  }
64
63
  }
@@ -3,6 +3,7 @@ import {
3
3
  ChainId,
4
4
  type EVMChain,
5
5
  SKConfig,
6
+ SwapKitError,
6
7
  prepareNetworkSwitch,
7
8
  switchEVMWalletNetwork,
8
9
  } from "@swapkit/helpers";
@@ -13,7 +14,7 @@ const cosmosTransfer =
13
14
  () =>
14
15
  async ({ from, recipient, amount, asset, memo }: any) => {
15
16
  if (!(window.okxwallet && "keplr" in window.okxwallet)) {
16
- throw new Error("No cosmos okxwallet found");
17
+ throw new SwapKitError("wallet_okx_not_found", { chain: Chain.Cosmos });
17
18
  }
18
19
  const { createSigningStargateClient } = await import("@swapkit/toolboxes/cosmos");
19
20
 
@@ -39,7 +40,7 @@ async function getWeb3WalletMethods({
39
40
  }: { walletProvider: Eip1193Provider | undefined; chain: EVMChain }) {
40
41
  const { getEvmToolbox } = await import("@swapkit/toolboxes/evm");
41
42
  const { BrowserProvider } = await import("ethers");
42
- if (!walletProvider) throw new Error("Requested web3 wallet is not installed");
43
+ if (!walletProvider) throw new SwapKitError("wallet_okx_not_found");
43
44
 
44
45
  const provider = new BrowserProvider(walletProvider, "any");
45
46
  const signer = await provider.getSigner();
@@ -50,7 +51,7 @@ async function getWeb3WalletMethods({
50
51
  await switchEVMWalletNetwork(provider, chain, toolbox.getNetworkParams());
51
52
  }
52
53
  } catch (_error) {
53
- throw new Error(`Failed to add/switch ${chain} network: ${chain}`);
54
+ throw new SwapKitError("wallet_okx_failed_to_switch_network", { chain });
54
55
  }
55
56
 
56
57
  return prepareNetworkSwitch({ toolbox, provider, chain });
@@ -66,7 +67,7 @@ export async function getWalletMethods(chain: Chain) {
66
67
  case Chain.Polygon:
67
68
  case Chain.BinanceSmartChain: {
68
69
  if (!(window.okxwallet && "send" in window.okxwallet)) {
69
- throw new Error("No okxwallet found");
70
+ throw new SwapKitError("wallet_okx_not_found", { chain });
70
71
  }
71
72
 
72
73
  const evmWallet = await getWeb3WalletMethods({
@@ -80,7 +81,7 @@ export async function getWalletMethods(chain: Chain) {
80
81
 
81
82
  case Chain.Bitcoin: {
82
83
  if (!(window.okxwallet && "bitcoin" in window.okxwallet)) {
83
- throw new Error("No bitcoin okxwallet found");
84
+ throw new SwapKitError("wallet_okx_not_found", { chain: Chain.Bitcoin });
84
85
  }
85
86
 
86
87
  const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
@@ -107,13 +108,13 @@ export async function getWalletMethods(chain: Chain) {
107
108
 
108
109
  case Chain.Cosmos: {
109
110
  if (!(window.okxwallet && "keplr" in window.okxwallet)) {
110
- throw new Error("No bitcoin okxwallet found");
111
+ throw new SwapKitError("wallet_okx_not_found", { chain: Chain.Cosmos });
111
112
  }
112
113
  const { keplr: wallet } = window.okxwallet;
113
114
 
114
115
  await wallet.enable(ChainId.Cosmos);
115
116
  const accounts = await wallet.getOfflineSignerOnlyAmino(ChainId.Cosmos).getAccounts();
116
- if (!accounts?.[0]) throw new Error("No cosmos account found");
117
+ if (!accounts?.[0]) throw new SwapKitError("wallet_okx_no_accounts", { chain: Chain.Cosmos });
117
118
 
118
119
  const { getCosmosToolbox } = await import("@swapkit/toolboxes/cosmos");
119
120
  const [{ address }] = accounts;
@@ -123,6 +124,6 @@ export async function getWalletMethods(chain: Chain) {
123
124
  }
124
125
 
125
126
  default:
126
- throw new Error(`No wallet for chain ${chain}`);
127
+ throw new SwapKitError("wallet_okx_chain_not_supported", { chain });
127
128
  }
128
129
  }
@@ -22,10 +22,7 @@ async function getWalletMethodsForExtension(chain: Chain) {
22
22
  switch (chain) {
23
23
  case Chain.Bitcoin: {
24
24
  if (!window.$onekey?.btc) {
25
- throw new SwapKitError({
26
- errorKey: "wallet_onekey_not_found",
27
- info: { chain },
28
- });
25
+ throw new SwapKitError({ errorKey: "wallet_onekey_not_found", info: { chain } });
29
26
  }
30
27
 
31
28
  const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
@@ -38,8 +35,7 @@ async function getWalletMethodsForExtension(chain: Chain) {
38
35
 
39
36
  let address = "";
40
37
 
41
- const getProvider: () => Promise<BitcoinProvider | undefined> = () =>
42
- new Promise((res) => res(window.$onekey?.btc as BitcoinProvider));
38
+ const getProvider = () => new Promise<BitcoinProvider>((res) => res(window.$onekey?.btc));
43
39
 
44
40
  const getAddressOptions: GetAddressOptions = {
45
41
  getProvider,
@@ -162,13 +162,13 @@ async function getWalletMethods() {
162
162
  const res = await rdt.walletApi.sendRequest();
163
163
 
164
164
  if (!res) {
165
- throw new Error("wallet_radix_no_account");
165
+ throw new SwapKitError("wallet_radix_no_account");
166
166
  }
167
167
 
168
168
  const newAddress = res.unwrapOr(null)?.accounts[0]?.address;
169
169
 
170
170
  if (!newAddress) {
171
- throw new Error("wallet_radix_no_account");
171
+ throw new SwapKitError("wallet_radix_no_account");
172
172
  }
173
173
 
174
174
  return newAddress;
@@ -182,7 +182,7 @@ async function getWalletMethods() {
182
182
  getAddress,
183
183
  getBalance: () => getBalance(address),
184
184
  transfer: (_params: { assetValue: AssetValue; recipient: string; from: string }) => {
185
- throw new Error("Not implemented");
185
+ throw new SwapKitError("wallet_radix_method_not_supported", { method: "transfer" });
186
186
  },
187
187
  signAndBroadcast: async ({ manifest, message }: { manifest: string; message: string }) => {
188
188
  const tx = await rdt.walletApi.sendTransaction({
@@ -193,7 +193,7 @@ async function getWalletMethods() {
193
193
  const txResult = tx.unwrapOr(null)?.transactionIntentHash;
194
194
 
195
195
  if (!txResult) {
196
- throw new Error("wallet_radix_transaction_failed");
196
+ throw new SwapKitError("wallet_radix_transaction_failed");
197
197
  }
198
198
 
199
199
  return txResult;
@@ -74,7 +74,7 @@ export async function getEVMSigner({ chain, derivationPath, provider }: TrezorEV
74
74
  };
75
75
 
76
76
  signTypedData(): Promise<string> {
77
- throw new Error("Not implemented");
77
+ throw new SwapKitError("wallet_trezor_method_not_supported", { method: "signTypedData" });
78
78
  }
79
79
 
80
80
  signTransaction = async ({
@@ -54,7 +54,9 @@ class WalletconnectSigner extends AbstractSigner {
54
54
  };
55
55
 
56
56
  signTransaction = () => {
57
- throw new Error("Not implemented: signTransaction");
57
+ throw new SwapKitError("wallet_walletconnect_method_not_supported", {
58
+ method: "signTransaction",
59
+ });
58
60
 
59
61
  // const baseTx = {
60
62
  // from,
@@ -77,7 +79,9 @@ class WalletconnectSigner extends AbstractSigner {
77
79
 
78
80
  // ANCHOR (@Towan) - Implement in future
79
81
  signTypedData = () => {
80
- throw new Error("Not implemented: signTypedData");
82
+ throw new SwapKitError("wallet_walletconnect_method_not_supported", {
83
+ method: "signTypedData",
84
+ });
81
85
 
82
86
  // const { toHexString } = await import('@swapkit/toolboxes/evm');
83
87
 
@@ -296,8 +296,8 @@ async function getWalletconnect(
296
296
  };
297
297
 
298
298
  return { session, accounts, client, disconnect };
299
- } catch (e) {
300
- console.error(e);
299
+ } catch (_e) {
300
+ // Errors are handled by returning undefined
301
301
  } finally {
302
302
  if (modal) {
303
303
  // @ts-expect-error wrong typing
@@ -1,3 +0,0 @@
1
- import{c as h,d}from"./chunk-38ztynv0.js";import{Chain as o,ChainId as l,ChainToChainId as p,WalletOption as m,createWallet as C,filterSupportedChains as f}from"@swapkit/helpers";var y=[l.Cosmos,l.Kujira,l.THORChain],O=[o.Ethereum,o.BinanceSmartChain,o.Avalanche,o.Polygon,o.Arbitrum,o.Optimism,o.Base];async function E(r,c,a){await Promise.all(r.map(async(t)=>{let e=p[t];await a.enable(e);let s=a.getOfflineSignerOnlyAmino(e);if(!s)throw new Error("Could not load signer");let{getCosmosToolbox:i}=await import("@swapkit/toolboxes/cosmos"),n=await s.getAccounts();if(!n?.[0]?.address)throw new Error("No accounts found");let[{address:u}]=n,w=i(t,{signer:s});c({...w,chain:t,address:u,walletType:m.COSMOSTATION})}))}async function g(r,c){let a=window.ethereum;if(!a)throw new Error("No Ethereum provider found for Cosmostation");let t=await a.request({method:"eth_requestAccounts"});if(!t||t.length===0)throw new Error("No EVM accounts found");let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm");for(let s of r){let i=e(s,{provider:a}),[n]=t;if(!n)throw new Error("No address found for EVM chain");c({...i,chain:s,address:n,walletType:m.COSMOSTATION})}}var S=C({name:"connectCosmostation",supportedChains:[o.Cosmos,o.Kujira,o.THORChain,o.Ethereum,o.BinanceSmartChain,o.Avalanche,o.Polygon,o.Arbitrum,o.Optimism,o.Base],connect:({addChain:r,supportedChains:c})=>async function a(t){let e=f({chains:t,supportedChains:c,walletType:m.COSMOSTATION});if(!window.cosmostation)throw new Error("Cosmostation wallet not found");let s=e.filter((n)=>y.includes(p[n])),i=e.filter((n)=>O.includes(n));if(s.length>0){let n=window.cosmostation.providers?.keplr;if(!n)throw new Error("Cosmostation Keplr provider not found");await E(s,r,n)}if(i.length>0)await g(i,r);return!0}});export{S as cosmostationWallet};
2
-
3
- //# debugId=9485AA1287D2F65D64756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/cosmostation/index.ts"],
4
- "sourcesContent": [
5
- "import type { Keplr } from \"@keplr-wallet/types\";\nimport {\n Chain,\n ChainId,\n ChainToChainId,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\n\nconst cosmostationSupportedChainIds = [ChainId.Cosmos, ChainId.Kujira, ChainId.THORChain] as const;\nconst cosmostationSupportedEVMChains = [\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n] as const;\n\ndeclare global {\n interface Window {\n cosmostation?: {\n providers?: {\n keplr?: Keplr;\n };\n };\n }\n}\n\nasync function connectCosmosChains(chains: Chain[], addChain: any, keplrProvider: Keplr) {\n await Promise.all(\n chains.map(async (chain) => {\n const chainId = ChainToChainId[chain] as (typeof cosmostationSupportedChainIds)[number];\n\n await keplrProvider.enable(chainId);\n const signer = keplrProvider.getOfflineSignerOnlyAmino(chainId);\n if (!signer) throw new Error(\"Could not load signer\");\n\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const accounts = await signer.getAccounts();\n if (!accounts?.[0]?.address) throw new Error(\"No accounts found\");\n\n const [{ address }] = accounts;\n const toolbox = getCosmosToolbox(chain as any, { signer });\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }),\n );\n}\n\nasync function connectEvmChains(chains: Chain[], addChain: any) {\n const provider = window.ethereum;\n\n if (!provider) {\n throw new Error(\"No Ethereum provider found for Cosmostation\");\n }\n\n const accounts = (await provider.request({\n method: \"eth_requestAccounts\",\n })) as string[];\n\n if (!accounts || accounts.length === 0) {\n throw new Error(\"No EVM accounts found\");\n }\n\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n for (const chain of chains) {\n const toolbox = getEvmToolbox(chain as any, { provider });\n const [address] = accounts;\n\n if (!address) {\n throw new Error(\"No address found for EVM chain\");\n }\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }\n}\n\nexport const cosmostationWallet = createWallet({\n name: \"connectCosmostation\",\n supportedChains: [\n Chain.Cosmos,\n Chain.Kujira,\n Chain.THORChain,\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n ],\n connect: ({ addChain, supportedChains }) =>\n async function connectCosmostation(chains: Chain[]) {\n const filteredChains = filterSupportedChains({\n chains,\n supportedChains,\n walletType: WalletOption.COSMOSTATION,\n });\n\n if (!window.cosmostation) {\n throw new Error(\"Cosmostation wallet not found\");\n }\n\n const cosmosChains = filteredChains.filter((chain) =>\n cosmostationSupportedChainIds.includes(ChainToChainId[chain] as any),\n );\n const evmChains = filteredChains.filter((chain) =>\n cosmostationSupportedEVMChains.includes(chain as any),\n );\n\n if (cosmosChains.length > 0) {\n const keplrProvider = window.cosmostation.providers?.keplr;\n if (!keplrProvider) {\n throw new Error(\"Cosmostation Keplr provider not found\");\n }\n\n await connectCosmosChains(cosmosChains, addChain, keplrProvider);\n }\n\n if (evmChains.length > 0) {\n await connectEvmChains(evmChains, addChain);\n }\n\n return true;\n },\n});\n"
6
- ],
7
- "mappings": "0CACA,gBACE,aACA,oBACA,kBACA,kBACA,2BACA,yBAGF,IAAM,EAAgC,CAAC,EAAQ,OAAQ,EAAQ,OAAQ,EAAQ,SAAS,EAClF,EAAiC,CACrC,EAAM,SACN,EAAM,kBACN,EAAM,UACN,EAAM,QACN,EAAM,SACN,EAAM,SACN,EAAM,IACR,EAYA,eAAe,CAAmB,CAAC,EAAiB,EAAe,EAAsB,CACvF,MAAM,QAAQ,IACZ,EAAO,IAAI,MAAO,IAAU,CAC1B,IAAM,EAAU,EAAe,GAE/B,MAAM,EAAc,OAAO,CAAO,EAClC,IAAM,EAAS,EAAc,0BAA0B,CAAO,EAC9D,IAAK,EAAQ,MAAM,IAAI,MAAM,uBAAuB,EAEpD,IAAQ,oBAAqB,KAAa,qCAEpC,EAAW,MAAM,EAAO,YAAY,EAC1C,IAAK,IAAW,IAAI,QAAS,MAAM,IAAI,MAAM,mBAAmB,EAEhE,KAAS,YAAa,EAChB,EAAU,EAAiB,EAAc,CAAE,QAAO,CAAC,EAEzD,EAAS,IACJ,EACH,QACA,UACA,WAAY,EAAa,YAC3B,CAAC,EACF,CACH,EAGF,eAAe,CAAgB,CAAC,EAAiB,EAAe,CAC9D,IAAM,EAAW,OAAO,SAExB,IAAK,EACH,MAAM,IAAI,MAAM,6CAA6C,EAG/D,IAAM,EAAY,MAAM,EAAS,QAAQ,CACvC,OAAQ,qBACV,CAAC,EAED,IAAK,GAAY,EAAS,SAAW,EACnC,MAAM,IAAI,MAAM,uBAAuB,EAGzC,IAAQ,iBAAkB,KAAa,kCAEvC,QAAW,KAAS,EAAQ,CAC1B,IAAM,EAAU,EAAc,EAAc,CAAE,UAAS,CAAC,GACjD,GAAW,EAElB,IAAK,EACH,MAAM,IAAI,MAAM,gCAAgC,EAGlD,EAAS,IACJ,EACH,QACA,UACA,WAAY,EAAa,YAC3B,CAAC,GAIE,IAAM,EAAqB,EAAa,CAC7C,KAAM,sBACN,gBAAiB,CACf,EAAM,OACN,EAAM,OACN,EAAM,UACN,EAAM,SACN,EAAM,kBACN,EAAM,UACN,EAAM,QACN,EAAM,SACN,EAAM,SACN,EAAM,IACR,EACA,QAAS,EAAG,WAAU,qBACpB,eAAe,CAAmB,CAAC,EAAiB,CAClD,IAAM,EAAiB,EAAsB,CAC3C,SACA,kBACA,WAAY,EAAa,YAC3B,CAAC,EAED,IAAK,OAAO,aACV,MAAM,IAAI,MAAM,+BAA+B,EAGjD,IAAM,EAAe,EAAe,OAAO,CAAC,IAC1C,EAA8B,SAAS,EAAe,EAAa,CACrE,EACM,EAAY,EAAe,OAAO,CAAC,IACvC,EAA+B,SAAS,CAAY,CACtD,EAEA,GAAI,EAAa,OAAS,EAAG,CAC3B,IAAM,EAAgB,OAAO,aAAa,WAAW,MACrD,IAAK,EACH,MAAM,IAAI,MAAM,uCAAuC,EAGzD,MAAM,EAAoB,EAAc,EAAU,CAAa,EAGjE,GAAI,EAAU,OAAS,EACrB,MAAM,EAAiB,EAAW,CAAQ,EAG5C,MAAO,GAEb,CAAC",
8
- "debugId": "9485AA1287D2F65D64756E2164756E21",
9
- "names": []
10
- }
@@ -1,3 +0,0 @@
1
- import{c as M,d as Q}from"./chunk-38ztynv0.js";import{ChainToChainId as E,SwapKitError as B,SwapKitNumber as G,WalletOption as h,derivationPathToString as $}from"@swapkit/helpers";async function l({chain:W,derivationPath:k,provider:N}){let{AbstractSigner:f,Signature:C}=await import("ethers");class Y extends f{address;chain;derivationPath;provider;constructor({chain:j,derivationPath:q,provider:D}){super(D);this.address="",this.chain=j,this.derivationPath=q,this.provider=D}getAddress=async()=>{if(!this.address){let q=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:$(this.derivationPath),showOnTrezor:!0});if(!q.success)throw new B({errorKey:"wallet_trezor_failed_to_get_address",info:{...q,chain:this.chain,derivationPath:this.derivationPath}});this.address=q.payload.address}return this.address};signMessage=async(j)=>{let D=await(await import("@trezor/connect-web")).default.ethereumSignMessage({path:$(this.derivationPath),message:j});if(!D.success)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...D,message:j,chain:this.chain,derivationPath:this.derivationPath}});return D.payload.signature};signTypedData(){throw new Error("Not implemented")}signTransaction=async({to:j,gasLimit:q,value:D,data:_,nonce:H,maxFeePerGas:U,maxPriorityFeePerGas:V,gasPrice:X})=>{if(!j)throw new B({errorKey:"wallet_missing_params",info:{to:j}});if(!q)throw new B({errorKey:"wallet_missing_params",info:{gasLimit:q}});let R=U&&V;if(R&&!U)throw new B({errorKey:"wallet_missing_params",info:{maxFeePerGas:U}});if(R&&!V)throw new B({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:V}});if(!(R||X))throw new B({errorKey:"wallet_missing_params",info:{gasPrice:X}});let I=(await import("@trezor/connect-web")).default,{toHexString:J}=await import("@swapkit/toolboxes/evm"),{Transaction:L}=await import("ethers"),b=R?{maxFeePerGas:J(BigInt(U?.toString()||0)),maxPriorityFeePerGas:J(BigInt(V?.toString()||0))}:X&&{gasPrice:J(BigInt(X?.toString()||0))}||{gasPrice:"0x0"},z=J(BigInt(H||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),Z={chainId:Number.parseInt(E[this.chain]),to:j.toString(),value:J(BigInt(D?.toString()||0)),gasLimit:J(BigInt(q?.toString()||0)),nonce:z,data:_?.toString()||"0x",...b},{success:K,payload:A}=await I.ethereumSignTransaction({path:$(this.derivationPath),transaction:Z});if(!K)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...A,chain:this.chain,derivationPath:this.derivationPath}});let{r:u,s:y,v:T}=A,w=C.from({r:u,s:y,v:new G(BigInt(T)).getBaseValue("number")}),O=L.from({...Z,nonce:Number.parseInt(Z.nonce,16),type:R?2:0,signature:w}).serialized;if(!O)throw new B({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return O};connect=(j)=>{if(!j)throw new B({errorKey:"wallet_provider_not_found",info:{wallet:h.TREZOR,chain:this.chain,derivationPath:this.derivationPath}});return new Y({chain:this.chain,derivationPath:this.derivationPath,provider:j})}}return new Y({chain:W,derivationPath:k,provider:N})}export{l as getEVMSigner};
2
-
3
- //# debugId=CB5F21DB09AC943A64756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/trezor/evmSigner.ts"],
4
- "sourcesContent": [
5
- "import {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n SwapKitError,\n SwapKitNumber,\n WalletOption,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n path: derivationPathToString(this.derivationPath),\n message,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, message, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData(): Promise<string> {\n throw new Error(\"Not implemented\");\n }\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit)\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { maxPriorityFeePerGas },\n });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || {\n gasPrice: \"0x0\",\n };\n\n const hexifiedNonce = toHexString(\n BigInt(\n nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\")),\n ),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain]),\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n data: data?.toString() || \"0x\",\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({\n r,\n s,\n v: new SwapKitNumber(BigInt(v)).getBaseValue(\"number\"),\n });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n type: isEIP1559 ? 2 : 0,\n signature,\n }).serialized;\n\n if (!serializedTx) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: {\n wallet: WalletOption.TREZOR,\n chain: this.chain,\n derivationPath: this.derivationPath,\n },\n });\n }\n\n return new TrezorSigner({\n chain: this.chain,\n derivationPath: this.derivationPath,\n provider,\n });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "CB5F21DB09AC943A64756E2164756E21",
9
- "names": []
10
- }
@@ -1,3 +0,0 @@
1
- var j=require("@swapkit/helpers");async function T({chain:A,derivationPath:O,provider:W}){let{AbstractSigner:k,Signature:N}=await import("ethers");class X extends k{address;chain;derivationPath;provider;constructor({chain:q,derivationPath:B,provider:D}){super(D);this.address="",this.chain=q,this.derivationPath=B,this.provider=D}getAddress=async()=>{if(!this.address){let B=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:j.derivationPathToString(this.derivationPath),showOnTrezor:!0});if(!B.success)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_get_address",info:{...B,chain:this.chain,derivationPath:this.derivationPath}});this.address=B.payload.address}return this.address};signMessage=async(q)=>{let D=await(await import("@trezor/connect-web")).default.ethereumSignMessage({path:j.derivationPathToString(this.derivationPath),message:q});if(!D.success)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...D,message:q,chain:this.chain,derivationPath:this.derivationPath}});return D.payload.signature};signTypedData(){throw new Error("Not implemented")}signTransaction=async({to:q,gasLimit:B,value:D,data:f,nonce:C,maxFeePerGas:R,maxPriorityFeePerGas:U,gasPrice:V})=>{if(!q)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{to:q}});if(!B)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{gasLimit:B}});let Q=R&&U;if(Q&&!R)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{maxFeePerGas:R}});if(Q&&!U)throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:U}});if(!(Q||V))throw new j.SwapKitError({errorKey:"wallet_missing_params",info:{gasPrice:V}});let _=(await import("@trezor/connect-web")).default,{toHexString:J}=await import("@swapkit/toolboxes/evm"),{Transaction:H}=await import("ethers"),I=Q?{maxFeePerGas:J(BigInt(R?.toString()||0)),maxPriorityFeePerGas:J(BigInt(U?.toString()||0))}:V&&{gasPrice:J(BigInt(V?.toString()||0))}||{gasPrice:"0x0"},L=J(BigInt(C||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),Y={chainId:Number.parseInt(j.ChainToChainId[this.chain]),to:q.toString(),value:J(BigInt(D?.toString()||0)),gasLimit:J(BigInt(B?.toString()||0)),nonce:L,data:f?.toString()||"0x",...I},{success:b,payload:Z}=await _.ethereumSignTransaction({path:j.derivationPathToString(this.derivationPath),transaction:Y});if(!b)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...Z,chain:this.chain,derivationPath:this.derivationPath}});let{r:z,s:K,v:u}=Z,y=N.from({r:z,s:K,v:new j.SwapKitNumber(BigInt(u)).getBaseValue("number")}),$=H.from({...Y,nonce:Number.parseInt(Y.nonce,16),type:Q?2:0,signature:y}).serialized;if(!$)throw new j.SwapKitError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return $};connect=(q)=>{if(!q)throw new j.SwapKitError({errorKey:"wallet_provider_not_found",info:{wallet:j.WalletOption.TREZOR,chain:this.chain,derivationPath:this.derivationPath}});return new X({chain:this.chain,derivationPath:this.derivationPath,provider:q})}}return new X({chain:A,derivationPath:O,provider:W})}
2
-
3
- //# debugId=6FCFD995EF3A4A1864756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/trezor/evmSigner.ts"],
4
- "sourcesContent": [
5
- "import {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n SwapKitError,\n SwapKitNumber,\n WalletOption,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n path: derivationPathToString(this.derivationPath),\n message,\n });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, message, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData(): Promise<string> {\n throw new Error(\"Not implemented\");\n }\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit)\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new SwapKitError({\n errorKey: \"wallet_missing_params\",\n info: { maxPriorityFeePerGas },\n });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new SwapKitError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@swapkit/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || {\n gasPrice: \"0x0\",\n };\n\n const hexifiedNonce = toHexString(\n BigInt(\n nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\")),\n ),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain]),\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n data: data?.toString() || \"0x\",\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({\n r,\n s,\n v: new SwapKitNumber(BigInt(v)).getBaseValue(\"number\"),\n });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n type: isEIP1559 ? 2 : 0,\n signature,\n }).serialized;\n\n if (!serializedTx) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new SwapKitError({\n errorKey: \"wallet_provider_not_found\",\n info: {\n wallet: WalletOption.TREZOR,\n chain: this.chain,\n derivationPath: this.derivationPath,\n },\n });\n }\n\n return new TrezorSigner({\n chain: this.chain,\n derivationPath: this.derivationPath,\n provider,\n });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
6
- ],
7
- "mappings": "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",
8
- "debugId": "6FCFD995EF3A4A1864756E2164756E21",
9
- "names": []
10
- }
@@ -1,3 +0,0 @@
1
- var o=require("@swapkit/helpers"),d=[o.ChainId.Cosmos,o.ChainId.Kujira,o.ChainId.THORChain],p=[o.Chain.Ethereum,o.Chain.BinanceSmartChain,o.Chain.Avalanche,o.Chain.Polygon,o.Chain.Arbitrum,o.Chain.Optimism,o.Chain.Base];async function u(r,c,a){await Promise.all(r.map(async(t)=>{let e=o.ChainToChainId[t];await a.enable(e);let s=a.getOfflineSignerOnlyAmino(e);if(!s)throw new Error("Could not load signer");let{getCosmosToolbox:i}=await import("@swapkit/toolboxes/cosmos"),n=await s.getAccounts();if(!n?.[0]?.address)throw new Error("No accounts found");let[{address:m}]=n,h=i(t,{signer:s});c({...h,chain:t,address:m,walletType:o.WalletOption.COSMOSTATION})}))}async function w(r,c){let a=window.ethereum;if(!a)throw new Error("No Ethereum provider found for Cosmostation");let t=await a.request({method:"eth_requestAccounts"});if(!t||t.length===0)throw new Error("No EVM accounts found");let{getEvmToolbox:e}=await import("@swapkit/toolboxes/evm");for(let s of r){let i=e(s,{provider:a}),[n]=t;if(!n)throw new Error("No address found for EVM chain");c({...i,chain:s,address:n,walletType:o.WalletOption.COSMOSTATION})}}var C=o.createWallet({name:"connectCosmostation",supportedChains:[o.Chain.Cosmos,o.Chain.Kujira,o.Chain.THORChain,o.Chain.Ethereum,o.Chain.BinanceSmartChain,o.Chain.Avalanche,o.Chain.Polygon,o.Chain.Arbitrum,o.Chain.Optimism,o.Chain.Base],connect:({addChain:r,supportedChains:c})=>async function a(t){let e=o.filterSupportedChains({chains:t,supportedChains:c,walletType:o.WalletOption.COSMOSTATION});if(!window.cosmostation)throw new Error("Cosmostation wallet not found");let s=e.filter((n)=>d.includes(o.ChainToChainId[n])),i=e.filter((n)=>p.includes(n));if(s.length>0){let n=window.cosmostation.providers?.keplr;if(!n)throw new Error("Cosmostation Keplr provider not found");await u(s,r,n)}if(i.length>0)await w(i,r);return!0}});
2
-
3
- //# debugId=F805093C0EE69DC864756E2164756E21
@@ -1,10 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/cosmostation/index.ts"],
4
- "sourcesContent": [
5
- "import type { Keplr } from \"@keplr-wallet/types\";\nimport {\n Chain,\n ChainId,\n ChainToChainId,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\n\nconst cosmostationSupportedChainIds = [ChainId.Cosmos, ChainId.Kujira, ChainId.THORChain] as const;\nconst cosmostationSupportedEVMChains = [\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n] as const;\n\ndeclare global {\n interface Window {\n cosmostation?: {\n providers?: {\n keplr?: Keplr;\n };\n };\n }\n}\n\nasync function connectCosmosChains(chains: Chain[], addChain: any, keplrProvider: Keplr) {\n await Promise.all(\n chains.map(async (chain) => {\n const chainId = ChainToChainId[chain] as (typeof cosmostationSupportedChainIds)[number];\n\n await keplrProvider.enable(chainId);\n const signer = keplrProvider.getOfflineSignerOnlyAmino(chainId);\n if (!signer) throw new Error(\"Could not load signer\");\n\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const accounts = await signer.getAccounts();\n if (!accounts?.[0]?.address) throw new Error(\"No accounts found\");\n\n const [{ address }] = accounts;\n const toolbox = getCosmosToolbox(chain as any, { signer });\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }),\n );\n}\n\nasync function connectEvmChains(chains: Chain[], addChain: any) {\n const provider = window.ethereum;\n\n if (!provider) {\n throw new Error(\"No Ethereum provider found for Cosmostation\");\n }\n\n const accounts = (await provider.request({\n method: \"eth_requestAccounts\",\n })) as string[];\n\n if (!accounts || accounts.length === 0) {\n throw new Error(\"No EVM accounts found\");\n }\n\n const { getEvmToolbox } = await import(\"@swapkit/toolboxes/evm\");\n\n for (const chain of chains) {\n const toolbox = getEvmToolbox(chain as any, { provider });\n const [address] = accounts;\n\n if (!address) {\n throw new Error(\"No address found for EVM chain\");\n }\n\n addChain({\n ...toolbox,\n chain,\n address,\n walletType: WalletOption.COSMOSTATION,\n });\n }\n}\n\nexport const cosmostationWallet = createWallet({\n name: \"connectCosmostation\",\n supportedChains: [\n Chain.Cosmos,\n Chain.Kujira,\n Chain.THORChain,\n Chain.Ethereum,\n Chain.BinanceSmartChain,\n Chain.Avalanche,\n Chain.Polygon,\n Chain.Arbitrum,\n Chain.Optimism,\n Chain.Base,\n ],\n connect: ({ addChain, supportedChains }) =>\n async function connectCosmostation(chains: Chain[]) {\n const filteredChains = filterSupportedChains({\n chains,\n supportedChains,\n walletType: WalletOption.COSMOSTATION,\n });\n\n if (!window.cosmostation) {\n throw new Error(\"Cosmostation wallet not found\");\n }\n\n const cosmosChains = filteredChains.filter((chain) =>\n cosmostationSupportedChainIds.includes(ChainToChainId[chain] as any),\n );\n const evmChains = filteredChains.filter((chain) =>\n cosmostationSupportedEVMChains.includes(chain as any),\n );\n\n if (cosmosChains.length > 0) {\n const keplrProvider = window.cosmostation.providers?.keplr;\n if (!keplrProvider) {\n throw new Error(\"Cosmostation Keplr provider not found\");\n }\n\n await connectCosmosChains(cosmosChains, addChain, keplrProvider);\n }\n\n if (evmChains.length > 0) {\n await connectEvmChains(evmChains, addChain);\n }\n\n return true;\n },\n});\n"
6
- ],
7
- "mappings": "AAQO,IAPP,8BASM,EAAgC,CAAC,UAAQ,OAAQ,UAAQ,OAAQ,UAAQ,SAAS,EAClF,EAAiC,CACrC,QAAM,SACN,QAAM,kBACN,QAAM,UACN,QAAM,QACN,QAAM,SACN,QAAM,SACN,QAAM,IACR,EAYA,eAAe,CAAmB,CAAC,EAAiB,EAAe,EAAsB,CACvF,MAAM,QAAQ,IACZ,EAAO,IAAI,MAAO,IAAU,CAC1B,IAAM,EAAU,iBAAe,GAE/B,MAAM,EAAc,OAAO,CAAO,EAClC,IAAM,EAAS,EAAc,0BAA0B,CAAO,EAC9D,IAAK,EAAQ,MAAM,IAAI,MAAM,uBAAuB,EAEpD,IAAQ,oBAAqB,KAAa,qCAEpC,EAAW,MAAM,EAAO,YAAY,EAC1C,IAAK,IAAW,IAAI,QAAS,MAAM,IAAI,MAAM,mBAAmB,EAEhE,KAAS,YAAa,EAChB,EAAU,EAAiB,EAAc,CAAE,QAAO,CAAC,EAEzD,EAAS,IACJ,EACH,QACA,UACA,WAAY,eAAa,YAC3B,CAAC,EACF,CACH,EAGF,eAAe,CAAgB,CAAC,EAAiB,EAAe,CAC9D,IAAM,EAAW,OAAO,SAExB,IAAK,EACH,MAAM,IAAI,MAAM,6CAA6C,EAG/D,IAAM,EAAY,MAAM,EAAS,QAAQ,CACvC,OAAQ,qBACV,CAAC,EAED,IAAK,GAAY,EAAS,SAAW,EACnC,MAAM,IAAI,MAAM,uBAAuB,EAGzC,IAAQ,iBAAkB,KAAa,kCAEvC,QAAW,KAAS,EAAQ,CAC1B,IAAM,EAAU,EAAc,EAAc,CAAE,UAAS,CAAC,GACjD,GAAW,EAElB,IAAK,EACH,MAAM,IAAI,MAAM,gCAAgC,EAGlD,EAAS,IACJ,EACH,QACA,UACA,WAAY,eAAa,YAC3B,CAAC,GAIE,IAAM,EAAqB,eAAa,CAC7C,KAAM,sBACN,gBAAiB,CACf,QAAM,OACN,QAAM,OACN,QAAM,UACN,QAAM,SACN,QAAM,kBACN,QAAM,UACN,QAAM,QACN,QAAM,SACN,QAAM,SACN,QAAM,IACR,EACA,QAAS,EAAG,WAAU,qBACpB,eAAe,CAAmB,CAAC,EAAiB,CAClD,IAAM,EAAiB,wBAAsB,CAC3C,SACA,kBACA,WAAY,eAAa,YAC3B,CAAC,EAED,IAAK,OAAO,aACV,MAAM,IAAI,MAAM,+BAA+B,EAGjD,IAAM,EAAe,EAAe,OAAO,CAAC,IAC1C,EAA8B,SAAS,iBAAe,EAAa,CACrE,EACM,EAAY,EAAe,OAAO,CAAC,IACvC,EAA+B,SAAS,CAAY,CACtD,EAEA,GAAI,EAAa,OAAS,EAAG,CAC3B,IAAM,EAAgB,OAAO,aAAa,WAAW,MACrD,IAAK,EACH,MAAM,IAAI,MAAM,uCAAuC,EAGzD,MAAM,EAAoB,EAAc,EAAU,CAAa,EAGjE,GAAI,EAAU,OAAS,EACrB,MAAM,EAAiB,EAAW,CAAQ,EAG5C,MAAO,GAEb,CAAC",
8
- "debugId": "F805093C0EE69DC864756E2164756E21",
9
- "names": []
10
- }