@solana/connector 0.1.7 → 0.1.8

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 (50) hide show
  1. package/README.md +83 -5
  2. package/dist/{chunk-APQGEW7S.mjs → chunk-6F6M6L7R.mjs} +73 -165
  3. package/dist/chunk-6F6M6L7R.mjs.map +1 -0
  4. package/dist/{chunk-VZ5Y6DIM.js → chunk-AOIXHVRH.js} +80 -235
  5. package/dist/chunk-AOIXHVRH.js.map +1 -0
  6. package/dist/chunk-DSUCH44G.js +678 -0
  7. package/dist/chunk-DSUCH44G.js.map +1 -0
  8. package/dist/{chunk-VA6LKXCQ.js → chunk-FTXIXM43.js} +157 -263
  9. package/dist/chunk-FTXIXM43.js.map +1 -0
  10. package/dist/{chunk-TQRJYZNK.mjs → chunk-G575OAT4.mjs} +71 -218
  11. package/dist/chunk-G575OAT4.mjs.map +1 -0
  12. package/dist/chunk-J7DHGLW6.mjs +638 -0
  13. package/dist/chunk-J7DHGLW6.mjs.map +1 -0
  14. package/dist/{chunk-Z22V3D4E.js → chunk-K3BNIGPX.js} +95 -37
  15. package/dist/chunk-K3BNIGPX.js.map +1 -0
  16. package/dist/{chunk-JK47EFJT.mjs → chunk-TTOKQAPX.mjs} +65 -14
  17. package/dist/chunk-TTOKQAPX.mjs.map +1 -0
  18. package/dist/compat.d.mts +1 -1
  19. package/dist/compat.d.ts +1 -1
  20. package/dist/compat.js +40 -39
  21. package/dist/compat.js.map +1 -1
  22. package/dist/compat.mjs +39 -38
  23. package/dist/compat.mjs.map +1 -1
  24. package/dist/headless.d.mts +447 -151
  25. package/dist/headless.d.ts +447 -151
  26. package/dist/headless.js +214 -194
  27. package/dist/headless.mjs +3 -3
  28. package/dist/index.d.mts +7 -6
  29. package/dist/index.d.ts +7 -6
  30. package/dist/index.js +268 -224
  31. package/dist/index.mjs +4 -4
  32. package/dist/react.d.mts +108 -7
  33. package/dist/react.d.ts +108 -7
  34. package/dist/react.js +54 -30
  35. package/dist/react.mjs +2 -2
  36. package/dist/{wallet-standard-shim-DiMvGjOk.d.ts → standard-shim-CT49DM5l.d.mts} +38 -247
  37. package/dist/{wallet-standard-shim-D4CYG5sU.d.mts → standard-shim-D9guL5fz.d.ts} +38 -247
  38. package/dist/{transaction-signer-CpGEvp7S.d.mts → transaction-signer-T-KVQFi8.d.mts} +1 -1
  39. package/dist/{transaction-signer-CpGEvp7S.d.ts → transaction-signer-T-KVQFi8.d.ts} +1 -1
  40. package/package.json +3 -3
  41. package/dist/chunk-APQGEW7S.mjs.map +0 -1
  42. package/dist/chunk-I64FD2EH.js +0 -312
  43. package/dist/chunk-I64FD2EH.js.map +0 -1
  44. package/dist/chunk-JK47EFJT.mjs.map +0 -1
  45. package/dist/chunk-QL3IT3TS.mjs +0 -299
  46. package/dist/chunk-QL3IT3TS.mjs.map +0 -1
  47. package/dist/chunk-TQRJYZNK.mjs.map +0 -1
  48. package/dist/chunk-VA6LKXCQ.js.map +0 -1
  49. package/dist/chunk-VZ5Y6DIM.js.map +0 -1
  50. package/dist/chunk-Z22V3D4E.js.map +0 -1
package/dist/compat.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { S as SolanaTransaction, j as TransactionSigner } from './transaction-signer-CpGEvp7S.mjs';
1
+ import { S as SolanaTransaction, a as TransactionSigner } from './transaction-signer-T-KVQFi8.mjs';
2
2
  import { Connection, SendOptions } from '@solana/web3.js';
3
3
  import '@wallet-standard/base';
4
4
  import '@wallet-ui/core';
package/dist/compat.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { S as SolanaTransaction, j as TransactionSigner } from './transaction-signer-CpGEvp7S.js';
1
+ import { S as SolanaTransaction, a as TransactionSigner } from './transaction-signer-T-KVQFi8.js';
2
2
  import { Connection, SendOptions } from '@solana/web3.js';
3
3
  import '@wallet-standard/base';
4
4
  import '@wallet-ui/core';
package/dist/compat.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var chunkI64FD2EH_js = require('./chunk-I64FD2EH.js');
3
+ var chunkDSUCH44G_js = require('./chunk-DSUCH44G.js');
4
4
  var react = require('react');
5
5
 
6
- var logger = chunkI64FD2EH_js.createLogger("WalletAdapterCompat");
6
+ var logger = chunkDSUCH44G_js.createLogger("WalletAdapterCompat");
7
7
  function createWalletAdapterCompat(signer, options) {
8
8
  let { disconnect, transformTransaction, onError } = options, handleError = (error, operation) => {
9
9
  onError ? onError(error, operation) : logger.error("Wallet adapter compat error", { operation, error });
@@ -15,67 +15,68 @@ function createWalletAdapterCompat(signer, options) {
15
15
  disconnecting: false,
16
16
  signTransaction: async (transaction) => {
17
17
  if (!signer) {
18
- let error = new Error("Wallet not connected");
19
- throw handleError(error, "signTransaction"), error;
18
+ let error2 = new Error("Wallet not connected");
19
+ throw handleError(error2, "signTransaction"), error2;
20
20
  }
21
- try {
22
- let tx = transformTransaction ? transformTransaction(transaction) : transaction;
23
- return await signer.signTransaction(tx);
24
- } catch (error) {
21
+ let tx = transformTransaction ? transformTransaction(transaction) : transaction, { data: signed, error } = await chunkDSUCH44G_js.tryCatch(signer.signTransaction(tx));
22
+ if (error)
25
23
  throw handleError(error, "signTransaction"), error;
26
- }
24
+ return signed;
27
25
  },
28
26
  signAllTransactions: async (transactions) => {
29
27
  if (!signer) {
30
- let error = new Error("Wallet not connected");
31
- throw handleError(error, "signAllTransactions"), error;
28
+ let error2 = new Error("Wallet not connected");
29
+ throw handleError(error2, "signAllTransactions"), error2;
32
30
  }
33
- try {
34
- let txs = transformTransaction ? transactions.map((tx) => transformTransaction(tx)) : transactions;
35
- return await Promise.all(txs.map((tx) => signer.signTransaction(tx)));
36
- } catch (error) {
31
+ let txs = transformTransaction ? transactions.map((tx) => transformTransaction(tx)) : transactions, { data: signedTxs, error } = await chunkDSUCH44G_js.tryCatch(Promise.all(txs.map((tx) => signer.signTransaction(tx))));
32
+ if (error)
37
33
  throw handleError(error, "signAllTransactions"), error;
38
- }
34
+ return signedTxs;
39
35
  },
40
36
  sendTransaction: async (transaction, connection, sendOptions) => {
41
37
  if (!signer) {
42
38
  let error = new Error("Wallet not connected");
43
39
  throw handleError(error, "sendTransaction"), error;
44
40
  }
45
- try {
46
- let tx = transformTransaction ? transformTransaction(transaction) : transaction;
47
- if (!signer.getCapabilities().canSign)
48
- throw new Error("Wallet does not support transaction signing");
49
- let signedTx = await signer.signTransaction(tx), rawTransaction;
50
- if (chunkI64FD2EH_js.isWeb3jsTransaction(signedTx))
51
- rawTransaction = signedTx.serialize();
52
- else if (signedTx instanceof Uint8Array)
53
- rawTransaction = signedTx;
54
- else
55
- throw new Error("Unexpected signed transaction format");
56
- return await connection.sendRawTransaction(rawTransaction, sendOptions);
57
- } catch (error) {
41
+ let tx = transformTransaction ? transformTransaction(transaction) : transaction;
42
+ if (!signer.getCapabilities().canSign) {
43
+ let error = new Error("Wallet does not support transaction signing");
58
44
  throw handleError(error, "sendTransaction"), error;
59
45
  }
46
+ let { data: signedTx, error: signError } = await chunkDSUCH44G_js.tryCatch(signer.signTransaction(tx));
47
+ if (signError)
48
+ throw handleError(signError, "sendTransaction"), signError;
49
+ let rawTransaction;
50
+ if (chunkDSUCH44G_js.isWeb3jsTransaction(signedTx))
51
+ rawTransaction = signedTx.serialize();
52
+ else if (signedTx instanceof Uint8Array)
53
+ rawTransaction = signedTx;
54
+ else {
55
+ let error = new Error("Unexpected signed transaction format");
56
+ throw handleError(error, "sendTransaction"), error;
57
+ }
58
+ let { data: signature, error: sendError } = await chunkDSUCH44G_js.tryCatch(
59
+ connection.sendRawTransaction(rawTransaction, sendOptions)
60
+ );
61
+ if (sendError)
62
+ throw handleError(sendError, "sendTransaction"), sendError;
63
+ return signature;
60
64
  },
61
65
  connect: async () => Promise.resolve(),
62
66
  disconnect: async () => {
63
- try {
64
- await disconnect();
65
- } catch (error) {
67
+ let { error } = await chunkDSUCH44G_js.tryCatch(disconnect());
68
+ if (error)
66
69
  throw handleError(error, "disconnect"), error;
67
- }
68
70
  },
69
71
  signMessage: signer?.signMessage ? async (message) => {
70
72
  if (!signer?.signMessage) {
71
- let error = new Error("Message signing not supported");
72
- throw handleError(error, "signMessage"), error;
73
+ let error2 = new Error("Message signing not supported");
74
+ throw handleError(error2, "signMessage"), error2;
73
75
  }
74
- try {
75
- return await signer.signMessage(message);
76
- } catch (error) {
76
+ let { data, error } = await chunkDSUCH44G_js.tryCatch(signer.signMessage(message));
77
+ if (error)
77
78
  throw handleError(error, "signMessage"), error;
78
- }
79
+ return data;
79
80
  } : void 0
80
81
  };
81
82
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/compat.ts"],"names":["createLogger","isWeb3jsTransaction","useMemo"],"mappings":"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","file":"compat.js","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Use the signer's sign method\n const signed = await signer.signTransaction(tx);\n return signed;\n } catch (error) {\n handleError(error as Error, 'signTransaction');\n throw error;\n }\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n try {\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n\n // Sign each transaction\n const signedTxs = await Promise.all(txs.map(tx => signer.signTransaction(tx)));\n\n return signedTxs;\n } catch (error) {\n handleError(error as Error, 'signAllTransactions');\n throw error;\n }\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n const capabilities = signer.getCapabilities();\n\n if (!capabilities.canSign) {\n throw new Error('Wallet does not support transaction signing');\n }\n\n const signedTx = await signer.signTransaction(tx);\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n throw new Error('Unexpected signed transaction format');\n }\n\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n\n return signature;\n } catch (error) {\n handleError(error as Error, 'sendTransaction');\n throw error;\n }\n },\n\n connect: async () => {\n return Promise.resolve();\n },\n\n disconnect: async () => {\n try {\n await disconnect();\n } catch (error) {\n handleError(error as Error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n try {\n return await signer.signMessage(message);\n } catch (error) {\n handleError(error as Error, 'signMessage');\n throw error;\n }\n }\n : undefined,\n };\n}\n\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/compat.ts"],"names":["createLogger","error","tryCatch","isWeb3jsTransaction","useMemo"],"mappings":"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","file":"compat.js","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\nimport { tryCatch } from './lib/core/try-catch';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n const { data: signed, error } = await tryCatch(signer.signTransaction(tx));\n\n if (error) {\n handleError(error, 'signTransaction');\n throw error;\n }\n\n return signed;\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n const { data: signedTxs, error } = await tryCatch(Promise.all(txs.map(tx => signer.signTransaction(tx))));\n\n if (error) {\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n return signedTxs;\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n const capabilities = signer.getCapabilities();\n if (!capabilities.canSign) {\n const error = new Error('Wallet does not support transaction signing');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n const { data: signedTx, error: signError } = await tryCatch(signer.signTransaction(tx));\n if (signError) {\n handleError(signError, 'sendTransaction');\n throw signError;\n }\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n const error = new Error('Unexpected signed transaction format');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n const { data: signature, error: sendError } = await tryCatch(\n connection.sendRawTransaction(rawTransaction, sendOptions),\n );\n\n if (sendError) {\n handleError(sendError, 'sendTransaction');\n throw sendError;\n }\n\n return signature;\n },\n\n connect: async () => {\n return Promise.resolve();\n },\n\n disconnect: async () => {\n const { error } = await tryCatch(disconnect());\n if (error) {\n handleError(error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n const { data, error } = await tryCatch(signer.signMessage(message));\n if (error) {\n handleError(error, 'signMessage');\n throw error;\n }\n\n return data;\n }\n : undefined,\n };\n}\n\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}
package/dist/compat.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { createLogger, isWeb3jsTransaction } from './chunk-QL3IT3TS.mjs';
1
+ import { createLogger, tryCatch, isWeb3jsTransaction } from './chunk-J7DHGLW6.mjs';
2
2
  import { useMemo } from 'react';
3
3
 
4
4
  var logger = createLogger("WalletAdapterCompat");
@@ -13,67 +13,68 @@ function createWalletAdapterCompat(signer, options) {
13
13
  disconnecting: false,
14
14
  signTransaction: async (transaction) => {
15
15
  if (!signer) {
16
- let error = new Error("Wallet not connected");
17
- throw handleError(error, "signTransaction"), error;
16
+ let error2 = new Error("Wallet not connected");
17
+ throw handleError(error2, "signTransaction"), error2;
18
18
  }
19
- try {
20
- let tx = transformTransaction ? transformTransaction(transaction) : transaction;
21
- return await signer.signTransaction(tx);
22
- } catch (error) {
19
+ let tx = transformTransaction ? transformTransaction(transaction) : transaction, { data: signed, error } = await tryCatch(signer.signTransaction(tx));
20
+ if (error)
23
21
  throw handleError(error, "signTransaction"), error;
24
- }
22
+ return signed;
25
23
  },
26
24
  signAllTransactions: async (transactions) => {
27
25
  if (!signer) {
28
- let error = new Error("Wallet not connected");
29
- throw handleError(error, "signAllTransactions"), error;
26
+ let error2 = new Error("Wallet not connected");
27
+ throw handleError(error2, "signAllTransactions"), error2;
30
28
  }
31
- try {
32
- let txs = transformTransaction ? transactions.map((tx) => transformTransaction(tx)) : transactions;
33
- return await Promise.all(txs.map((tx) => signer.signTransaction(tx)));
34
- } catch (error) {
29
+ let txs = transformTransaction ? transactions.map((tx) => transformTransaction(tx)) : transactions, { data: signedTxs, error } = await tryCatch(Promise.all(txs.map((tx) => signer.signTransaction(tx))));
30
+ if (error)
35
31
  throw handleError(error, "signAllTransactions"), error;
36
- }
32
+ return signedTxs;
37
33
  },
38
34
  sendTransaction: async (transaction, connection, sendOptions) => {
39
35
  if (!signer) {
40
36
  let error = new Error("Wallet not connected");
41
37
  throw handleError(error, "sendTransaction"), error;
42
38
  }
43
- try {
44
- let tx = transformTransaction ? transformTransaction(transaction) : transaction;
45
- if (!signer.getCapabilities().canSign)
46
- throw new Error("Wallet does not support transaction signing");
47
- let signedTx = await signer.signTransaction(tx), rawTransaction;
48
- if (isWeb3jsTransaction(signedTx))
49
- rawTransaction = signedTx.serialize();
50
- else if (signedTx instanceof Uint8Array)
51
- rawTransaction = signedTx;
52
- else
53
- throw new Error("Unexpected signed transaction format");
54
- return await connection.sendRawTransaction(rawTransaction, sendOptions);
55
- } catch (error) {
39
+ let tx = transformTransaction ? transformTransaction(transaction) : transaction;
40
+ if (!signer.getCapabilities().canSign) {
41
+ let error = new Error("Wallet does not support transaction signing");
56
42
  throw handleError(error, "sendTransaction"), error;
57
43
  }
44
+ let { data: signedTx, error: signError } = await tryCatch(signer.signTransaction(tx));
45
+ if (signError)
46
+ throw handleError(signError, "sendTransaction"), signError;
47
+ let rawTransaction;
48
+ if (isWeb3jsTransaction(signedTx))
49
+ rawTransaction = signedTx.serialize();
50
+ else if (signedTx instanceof Uint8Array)
51
+ rawTransaction = signedTx;
52
+ else {
53
+ let error = new Error("Unexpected signed transaction format");
54
+ throw handleError(error, "sendTransaction"), error;
55
+ }
56
+ let { data: signature, error: sendError } = await tryCatch(
57
+ connection.sendRawTransaction(rawTransaction, sendOptions)
58
+ );
59
+ if (sendError)
60
+ throw handleError(sendError, "sendTransaction"), sendError;
61
+ return signature;
58
62
  },
59
63
  connect: async () => Promise.resolve(),
60
64
  disconnect: async () => {
61
- try {
62
- await disconnect();
63
- } catch (error) {
65
+ let { error } = await tryCatch(disconnect());
66
+ if (error)
64
67
  throw handleError(error, "disconnect"), error;
65
- }
66
68
  },
67
69
  signMessage: signer?.signMessage ? async (message) => {
68
70
  if (!signer?.signMessage) {
69
- let error = new Error("Message signing not supported");
70
- throw handleError(error, "signMessage"), error;
71
+ let error2 = new Error("Message signing not supported");
72
+ throw handleError(error2, "signMessage"), error2;
71
73
  }
72
- try {
73
- return await signer.signMessage(message);
74
- } catch (error) {
74
+ let { data, error } = await tryCatch(signer.signMessage(message));
75
+ if (error)
75
76
  throw handleError(error, "signMessage"), error;
76
- }
77
+ return data;
77
78
  } : void 0
78
79
  };
79
80
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/compat.ts"],"names":[],"mappings":"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","file":"compat.mjs","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n // Use the signer's sign method\n const signed = await signer.signTransaction(tx);\n return signed;\n } catch (error) {\n handleError(error as Error, 'signTransaction');\n throw error;\n }\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n try {\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n\n // Sign each transaction\n const signedTxs = await Promise.all(txs.map(tx => signer.signTransaction(tx)));\n\n return signedTxs;\n } catch (error) {\n handleError(error as Error, 'signAllTransactions');\n throw error;\n }\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n try {\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n const capabilities = signer.getCapabilities();\n\n if (!capabilities.canSign) {\n throw new Error('Wallet does not support transaction signing');\n }\n\n const signedTx = await signer.signTransaction(tx);\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n throw new Error('Unexpected signed transaction format');\n }\n\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n\n return signature;\n } catch (error) {\n handleError(error as Error, 'sendTransaction');\n throw error;\n }\n },\n\n connect: async () => {\n return Promise.resolve();\n },\n\n disconnect: async () => {\n try {\n await disconnect();\n } catch (error) {\n handleError(error as Error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n try {\n return await signer.signMessage(message);\n } catch (error) {\n handleError(error as Error, 'signMessage');\n throw error;\n }\n }\n : undefined,\n };\n}\n\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/compat.ts"],"names":["error"],"mappings":";;;AAYA,IAAM,MAAA,GAAS,aAAa,qBAAqB,CAAA;AAmC1C,SAAS,yBAAA,CACZ,QACA,OAAA,EACuB;AACvB,EAAA,IAAM,EAAE,YAAY,oBAAA,EAAsB,OAAA,KAAY,OAAA,EAEhD,WAAA,GAAc,CAAC,KAAA,EAAc,SAAA,KAAsB;AACrD,IAAI,OAAA,GACA,OAAA,CAAQ,KAAA,EAAO,SAAS,CAAA,GAExB,MAAA,CAAO,KAAA,CAAM,6BAAA,EAA+B,EAAE,SAAA,EAAW,KAAA,EAAO,CAAA;AAAA,EAExE,CAAA;AAEA,EAAA,OAAO;AAAA,IACH,SAAA,EAAW,QAAQ,OAAA,IAAW,IAAA;AAAA,IAC9B,SAAA,EAAW,CAAC,CAAC,MAAA;AAAA,IACb,UAAA,EAAY,KAAA;AAAA,IACZ,aAAA,EAAe,KAAA;AAAA,IAEf,eAAA,EAAiB,OAAO,WAAA,KAAmC;AACvD,MAAA,IAAI,CAAC,MAAA,EAAQ;AACT,QAAA,IAAMA,MAAAA,GAAQ,IAAI,KAAA,CAAM,sBAAsB,CAAA;AAC9C,QAAA,MAAA,WAAA,CAAYA,MAAAA,EAAO,iBAAiB,CAAA,EAC9BA,MAAAA;AAAA,MACV;AAEA,MAAA,IAAM,KAAK,oBAAA,GAAuB,oBAAA,CAAqB,WAAW,CAAA,GAAI,aAChE,EAAE,IAAA,EAAM,MAAA,EAAQ,KAAA,KAAU,MAAM,QAAA,CAAS,MAAA,CAAO,eAAA,CAAgB,EAAE,CAAC,CAAA;AAEzE,MAAA,IAAI,KAAA;AACA,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,iBAAiB,CAAA,EAC9B,KAAA;AAGV,MAAA,OAAO,MAAA;AAAA,IACX,CAAA;AAAA,IAEA,mBAAA,EAAqB,OAAO,YAAA,KAAsC;AAC9D,MAAA,IAAI,CAAC,MAAA,EAAQ;AACT,QAAA,IAAMA,MAAAA,GAAQ,IAAI,KAAA,CAAM,sBAAsB,CAAA;AAC9C,QAAA,MAAA,WAAA,CAAYA,MAAAA,EAAO,qBAAqB,CAAA,EAClCA,MAAAA;AAAA,MACV;AAEA,MAAA,IAAM,GAAA,GAAM,oBAAA,GAAuB,YAAA,CAAa,GAAA,CAAI,CAAA,EAAA,KAAM,oBAAA,CAAqB,EAAE,CAAC,CAAA,GAAI,YAAA,EAChF,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAM,GAAI,MAAM,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,GAAA,CAAI,GAAA,CAAI,CAAA,EAAA,KAAM,MAAA,CAAO,eAAA,CAAgB,EAAE,CAAC,CAAC,CAAC,CAAA;AAExG,MAAA,IAAI,KAAA;AACA,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,qBAAqB,CAAA,EAClC,KAAA;AAGV,MAAA,OAAO,SAAA;AAAA,IACX,CAAA;AAAA,IAEA,eAAA,EAAiB,OAAO,WAAA,EAAgC,UAAA,EAAwB,WAAA,KAA8B;AAC1G,MAAA,IAAI,CAAC,MAAA,EAAQ;AACT,QAAA,IAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,sBAAsB,CAAA;AAC9C,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,iBAAiB,CAAA,EAC9B,KAAA;AAAA,MACV;AAEA,MAAA,IAAM,EAAA,GAAK,oBAAA,GAAuB,oBAAA,CAAqB,WAAW,CAAA,GAAI,WAAA;AAGtE,MAAA,IAAI,CADiB,MAAA,CAAO,eAAA,EAAgB,CAC1B,OAAA,EAAS;AACvB,QAAA,IAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,6CAA6C,CAAA;AACrE,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,iBAAiB,CAAA,EAC9B,KAAA;AAAA,MACV;AAEA,MAAA,IAAM,EAAE,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,SAAA,EAAU,GAAI,MAAM,QAAA,CAAS,MAAA,CAAO,eAAA,CAAgB,EAAE,CAAC,CAAA;AACtF,MAAA,IAAI,SAAA;AACA,QAAA,MAAA,WAAA,CAAY,SAAA,EAAW,iBAAiB,CAAA,EAClC,SAAA;AAIV,MAAA,IAAI,cAAA;AACJ,MAAA,IAAI,oBAAoB,QAAQ,CAAA;AAC5B,QAAA,cAAA,GAAiB,SAAS,SAAA,EAAU;AAAA,WAAA,IAC7B,QAAA,YAAoB,UAAA;AAC3B,QAAA,cAAA,GAAiB,QAAA;AAAA,WACd;AACH,QAAA,IAAM,KAAA,GAAQ,IAAI,KAAA,CAAM,sCAAsC,CAAA;AAC9D,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,iBAAiB,CAAA,EAC9B,KAAA;AAAA,MACV;AAEA,MAAA,IAAM,EAAE,IAAA,EAAM,SAAA,EAAW,KAAA,EAAO,SAAA,KAAc,MAAM,QAAA;AAAA,QAChD,UAAA,CAAW,kBAAA,CAAmB,cAAA,EAAgB,WAAW;AAAA,OAC7D;AAEA,MAAA,IAAI,SAAA;AACA,QAAA,MAAA,WAAA,CAAY,SAAA,EAAW,iBAAiB,CAAA,EAClC,SAAA;AAGV,MAAA,OAAO,SAAA;AAAA,IACX,CAAA;AAAA,IAEA,OAAA,EAAS,YACE,OAAA,CAAQ,OAAA,EAAQ;AAAA,IAG3B,YAAY,YAAY;AACpB,MAAA,IAAM,EAAE,KAAA,EAAM,GAAI,MAAM,QAAA,CAAS,YAAY,CAAA;AAC7C,MAAA,IAAI,KAAA;AACA,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,YAAY,CAAA,EACzB,KAAA;AAAA,IAEd,CAAA;AAAA,IAEA,WAAA,EAAa,MAAA,EAAQ,WAAA,GACf,OAAO,OAAA,KAAwB;AAC3B,MAAA,IAAI,CAAC,QAAQ,WAAA,EAAa;AACtB,QAAA,IAAMA,MAAAA,GAAQ,IAAI,KAAA,CAAM,+BAA+B,CAAA;AACvD,QAAA,MAAA,WAAA,CAAYA,MAAAA,EAAO,aAAa,CAAA,EAC1BA,MAAAA;AAAA,MACV;AAEA,MAAA,IAAM,EAAE,MAAM,KAAA,EAAM,GAAI,MAAM,QAAA,CAAS,MAAA,CAAO,WAAA,CAAY,OAAO,CAAC,CAAA;AAClE,MAAA,IAAI,KAAA;AACA,QAAA,MAAA,WAAA,CAAY,KAAA,EAAO,aAAa,CAAA,EAC1B,KAAA;AAGV,MAAA,OAAO,IAAA;AAAA,IACX,CAAA,GACA;AAAA,GACV;AACJ;AAEO,SAAS,sBAAA,CACZ,MAAA,EACA,UAAA,EACA,OAAA,EACuB;AACvB,EAAA,OAAO,OAAA,CAAQ,MACJ,yBAAA,CAA0B,MAAA,EAAQ;AAAA,IACrC,UAAA;AAAA,IACA,GAAG;AAAA,GACN,GACF,CAAC,MAAA,EAAQ,YAAY,OAAA,EAAS,oBAAA,EAAsB,OAAA,EAAS,OAAO,CAAC,CAAA;AAC5E;AAQO,SAAS,0BAA0B,GAAA,EAA8C;AACpF,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,IAAQ,UAAU,OAAO,KAAA;AAE5C,EAAA,IAAM,MAAA,GAAS,GAAA;AAEf,EAAA,OACI,WAAA,IAAe,MAAA,IACf,WAAA,IAAe,MAAA,IACf,YAAA,IAAgB,MAAA,IAChB,eAAA,IAAmB,MAAA,IACnB,OAAO,MAAA,CAAO,eAAA,IAAoB,UAAA,IAClC,OAAO,OAAO,mBAAA,IAAwB,UAAA,IACtC,OAAO,MAAA,CAAO,eAAA,IAAoB,UAAA,IAClC,OAAO,MAAA,CAAO,OAAA,IAAY,UAAA,IAC1B,OAAO,MAAA,CAAO,UAAA,IAAe,UAAA;AAErC","file":"compat.mjs","sourcesContent":["/**\n * Wallet Adapter Compatibility Bridge\n */\n\nimport { useMemo } from 'react';\nimport type { TransactionSigner } from './lib/transaction/transaction-signer';\nimport type { SolanaTransaction } from './types/transactions';\nimport type { Connection, SendOptions } from '@solana/web3.js';\nimport { isWeb3jsTransaction } from './utils/transaction-format';\nimport { createLogger } from './lib/utils/secure-logger';\nimport { tryCatch } from './lib/core/try-catch';\n\nconst logger = createLogger('WalletAdapterCompat');\n\n/**\n * Wallet adapter compatible interface that libraries expect\n */\nexport interface WalletAdapterCompatible {\n publicKey: string | null;\n connected: boolean;\n connecting: boolean;\n disconnecting: boolean;\n\n signTransaction: (transaction: SolanaTransaction) => Promise<SolanaTransaction>;\n signAllTransactions: (transactions: SolanaTransaction[]) => Promise<SolanaTransaction[]>;\n sendTransaction: (transaction: SolanaTransaction, connection: Connection, options?: SendOptions) => Promise<string>;\n\n connect: () => Promise<void>;\n disconnect: () => Promise<void>;\n\n signMessage?: (message: Uint8Array) => Promise<Uint8Array>;\n}\n\n/**\n * Options for creating wallet adapter compatibility\n */\nexport interface WalletAdapterCompatOptions {\n /** Function to handle disconnect */\n disconnect: () => Promise<void>;\n\n /** Optional function to transform transactions before signing */\n transformTransaction?: (tx: SolanaTransaction) => SolanaTransaction;\n\n /** Optional error handler */\n onError?: (error: Error, operation: string) => void;\n}\n\nexport function createWalletAdapterCompat(\n signer: TransactionSigner | null,\n options: WalletAdapterCompatOptions,\n): WalletAdapterCompatible {\n const { disconnect, transformTransaction, onError } = options;\n\n const handleError = (error: Error, operation: string) => {\n if (onError) {\n onError(error, operation);\n } else {\n logger.error('Wallet adapter compat error', { operation, error });\n }\n };\n\n return {\n publicKey: signer?.address || null,\n connected: !!signer,\n connecting: false,\n disconnecting: false,\n\n signTransaction: async (transaction: SolanaTransaction) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signTransaction');\n throw error;\n }\n\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n const { data: signed, error } = await tryCatch(signer.signTransaction(tx));\n\n if (error) {\n handleError(error, 'signTransaction');\n throw error;\n }\n\n return signed;\n },\n\n signAllTransactions: async (transactions: SolanaTransaction[]) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n const txs = transformTransaction ? transactions.map(tx => transformTransaction(tx)) : transactions;\n const { data: signedTxs, error } = await tryCatch(Promise.all(txs.map(tx => signer.signTransaction(tx))));\n\n if (error) {\n handleError(error, 'signAllTransactions');\n throw error;\n }\n\n return signedTxs;\n },\n\n sendTransaction: async (transaction: SolanaTransaction, connection: Connection, sendOptions?: SendOptions) => {\n if (!signer) {\n const error = new Error('Wallet not connected');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n const tx = transformTransaction ? transformTransaction(transaction) : transaction;\n\n const capabilities = signer.getCapabilities();\n if (!capabilities.canSign) {\n const error = new Error('Wallet does not support transaction signing');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n const { data: signedTx, error: signError } = await tryCatch(signer.signTransaction(tx));\n if (signError) {\n handleError(signError, 'sendTransaction');\n throw signError;\n }\n\n // Serialize the signed transaction\n let rawTransaction: Uint8Array;\n if (isWeb3jsTransaction(signedTx)) {\n rawTransaction = signedTx.serialize();\n } else if (signedTx instanceof Uint8Array) {\n rawTransaction = signedTx;\n } else {\n const error = new Error('Unexpected signed transaction format');\n handleError(error, 'sendTransaction');\n throw error;\n }\n\n const { data: signature, error: sendError } = await tryCatch(\n connection.sendRawTransaction(rawTransaction, sendOptions),\n );\n\n if (sendError) {\n handleError(sendError, 'sendTransaction');\n throw sendError;\n }\n\n return signature;\n },\n\n connect: async () => {\n return Promise.resolve();\n },\n\n disconnect: async () => {\n const { error } = await tryCatch(disconnect());\n if (error) {\n handleError(error, 'disconnect');\n throw error;\n }\n },\n\n signMessage: signer?.signMessage\n ? async (message: Uint8Array) => {\n if (!signer?.signMessage) {\n const error = new Error('Message signing not supported');\n handleError(error, 'signMessage');\n throw error;\n }\n\n const { data, error } = await tryCatch(signer.signMessage(message));\n if (error) {\n handleError(error, 'signMessage');\n throw error;\n }\n\n return data;\n }\n : undefined,\n };\n}\n\nexport function useWalletAdapterCompat(\n signer: TransactionSigner | null,\n disconnect: () => Promise<void>,\n options?: Omit<WalletAdapterCompatOptions, 'disconnect'>,\n): WalletAdapterCompatible {\n return useMemo(() => {\n return createWalletAdapterCompat(signer, {\n disconnect,\n ...options,\n });\n }, [signer, disconnect, options?.transformTransaction, options?.onError]);\n}\n\n/**\n * Type guard to check if an object implements WalletAdapterCompatible interface\n *\n * @param obj - Object to check\n * @returns True if object implements WalletAdapterCompatible\n */\nexport function isWalletAdapterCompatible(obj: unknown): obj is WalletAdapterCompatible {\n if (!obj || typeof obj !== 'object') return false;\n\n const wallet = obj as Record<string, unknown>;\n\n return (\n 'publicKey' in wallet &&\n 'connected' in wallet &&\n 'connecting' in wallet &&\n 'disconnecting' in wallet &&\n typeof wallet.signTransaction === 'function' &&\n typeof wallet.signAllTransactions === 'function' &&\n typeof wallet.sendTransaction === 'function' &&\n typeof wallet.connect === 'function' &&\n typeof wallet.disconnect === 'function'\n );\n}\n"]}