@solana/react 2.0.0-20241006045741

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","getWalletAccountFeature","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignIn","getWalletFeature","getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","SolanaSignMessage","SolanaSignTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef","transactions","getTransactionCodec","getTransactionEncoder"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -0,0 +1,286 @@
1
+ import { SolanaSignAndSendTransaction, SolanaSignIn, SolanaSignMessage, SolanaSignTransaction } from '@solana/wallet-standard-features';
2
+ import { WalletStandardError, WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED } from '@wallet-standard/errors';
3
+ import { getWalletAccountFeature, getWalletFeature } from '@wallet-standard/ui';
4
+ import { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';
5
+ import { useCallback, useMemo, useRef } from 'react';
6
+ import { address } from '@solana/addresses';
7
+ import { SolanaError, SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED } from '@solana/errors';
8
+ import { getAbortablePromise } from '@solana/promises';
9
+ import { getTransactionCodec, getTransactionEncoder } from '@solana/transactions';
10
+
11
+ // src/useSignAndSendTransaction.ts
12
+ function useSignAndSendTransaction(uiWalletAccount, chain) {
13
+ const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);
14
+ return useCallback(
15
+ async (input) => {
16
+ const [result] = await signAndSendTransactions(input);
17
+ return result;
18
+ },
19
+ [signAndSendTransactions]
20
+ );
21
+ }
22
+ function useSignAndSendTransactions(uiWalletAccount, chain) {
23
+ if (!uiWalletAccount.chains.includes(chain)) {
24
+ throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {
25
+ address: uiWalletAccount.address,
26
+ chain,
27
+ featureName: SolanaSignAndSendTransaction,
28
+ supportedChains: [...uiWalletAccount.chains],
29
+ supportedFeatures: [...uiWalletAccount.features]
30
+ });
31
+ }
32
+ const signAndSendTransactionFeature = getWalletAccountFeature(
33
+ uiWalletAccount,
34
+ SolanaSignAndSendTransaction
35
+ );
36
+ const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);
37
+ return useCallback(
38
+ async (...inputs) => {
39
+ const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {
40
+ const minContextSlot = options?.minContextSlot;
41
+ return {
42
+ ...rest,
43
+ account,
44
+ chain,
45
+ ...minContextSlot != null ? {
46
+ options: {
47
+ minContextSlot: Number(minContextSlot)
48
+ }
49
+ } : null
50
+ };
51
+ });
52
+ const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);
53
+ return results;
54
+ },
55
+ [account, chain, signAndSendTransactionFeature]
56
+ );
57
+ }
58
+ function useSignIn(uiWalletHandle) {
59
+ const signIns = useSignIns(uiWalletHandle);
60
+ return useCallback(
61
+ async (input) => {
62
+ const [result] = await signIns(input);
63
+ return result;
64
+ },
65
+ [signIns]
66
+ );
67
+ }
68
+ function useSignIns(uiWalletHandle) {
69
+ let signMessageFeature;
70
+ if ("address" in uiWalletHandle && typeof uiWalletHandle.address === "string") {
71
+ getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);
72
+ signMessageFeature = getWalletAccountFeature(
73
+ uiWalletHandle,
74
+ SolanaSignIn
75
+ );
76
+ } else {
77
+ signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn);
78
+ }
79
+ const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);
80
+ return useCallback(
81
+ async (...inputs) => {
82
+ const inputsWithAddressAndChainId = inputs.map((input) => ({
83
+ ...input,
84
+ // Prioritize the `UiWalletAccount` address if it exists.
85
+ ..."address" in uiWalletHandle ? { address: uiWalletHandle.address } : null
86
+ }));
87
+ const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);
88
+ const resultsWithoutSignatureType = results.map(
89
+ ({
90
+ account,
91
+ signatureType: _,
92
+ // Solana signatures are always of type `ed25519` so drop this property.
93
+ ...rest
94
+ }) => ({
95
+ ...rest,
96
+ account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(
97
+ wallet,
98
+ account
99
+ )
100
+ })
101
+ );
102
+ return resultsWithoutSignatureType;
103
+ },
104
+ [signMessageFeature, uiWalletHandle, wallet]
105
+ );
106
+ }
107
+ function useSignMessage(...config) {
108
+ const signMessages = useSignMessages(...config);
109
+ return useCallback(
110
+ async (input) => {
111
+ const [result] = await signMessages(input);
112
+ return result;
113
+ },
114
+ [signMessages]
115
+ );
116
+ }
117
+ function useSignMessages(uiWalletAccount) {
118
+ const signMessageFeature = getWalletAccountFeature(
119
+ uiWalletAccount,
120
+ SolanaSignMessage
121
+ );
122
+ const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);
123
+ return useCallback(
124
+ async (...inputs) => {
125
+ const inputsWithAccount = inputs.map((input) => ({ ...input, account }));
126
+ const results = await signMessageFeature.signMessage(...inputsWithAccount);
127
+ const resultsWithoutSignatureType = results.map(
128
+ ({
129
+ signatureType: _,
130
+ // Solana signatures are always of type `ed25519` so drop this property.
131
+ ...rest
132
+ }) => rest
133
+ );
134
+ return resultsWithoutSignatureType;
135
+ },
136
+ [signMessageFeature, account]
137
+ );
138
+ }
139
+ function useSignTransaction(uiWalletAccount, chain) {
140
+ const signTransactions = useSignTransactions(uiWalletAccount, chain);
141
+ return useCallback(
142
+ async (input) => {
143
+ const [result] = await signTransactions(input);
144
+ return result;
145
+ },
146
+ [signTransactions]
147
+ );
148
+ }
149
+ function useSignTransactions(uiWalletAccount, chain) {
150
+ if (!uiWalletAccount.chains.includes(chain)) {
151
+ throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {
152
+ address: uiWalletAccount.address,
153
+ chain,
154
+ featureName: SolanaSignAndSendTransaction,
155
+ supportedChains: [...uiWalletAccount.chains],
156
+ supportedFeatures: [...uiWalletAccount.features]
157
+ });
158
+ }
159
+ const signTransactionFeature = getWalletAccountFeature(
160
+ uiWalletAccount,
161
+ SolanaSignTransaction
162
+ );
163
+ const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);
164
+ return useCallback(
165
+ async (...inputs) => {
166
+ const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {
167
+ const minContextSlot = options?.minContextSlot;
168
+ return {
169
+ ...rest,
170
+ account,
171
+ chain,
172
+ ...minContextSlot != null ? {
173
+ options: {
174
+ minContextSlot: Number(minContextSlot)
175
+ }
176
+ } : null
177
+ };
178
+ });
179
+ const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);
180
+ return results;
181
+ },
182
+ [signTransactionFeature, account, chain]
183
+ );
184
+ }
185
+ function useWalletAccountMessageSigner(uiWalletAccount) {
186
+ const signMessage = useSignMessage(uiWalletAccount);
187
+ return useMemo(
188
+ () => ({
189
+ address: address(uiWalletAccount.address),
190
+ async modifyAndSignMessages(messages, config) {
191
+ config?.abortSignal?.throwIfAborted();
192
+ if (messages.length > 1) {
193
+ throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);
194
+ }
195
+ if (messages.length === 0) {
196
+ return messages;
197
+ }
198
+ const { content: originalMessage, signatures: originalSignatureMap } = messages[0];
199
+ const input = {
200
+ message: originalMessage
201
+ };
202
+ const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);
203
+ const messageWasModified = originalMessage.length !== signedMessage.length || originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);
204
+ const originalSignature = originalSignatureMap[uiWalletAccount.address];
205
+ const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);
206
+ if (!signatureIsNew && !messageWasModified) {
207
+ return messages;
208
+ }
209
+ const nextSignatureMap = messageWasModified ? { [uiWalletAccount.address]: signature } : { ...originalSignatureMap, [uiWalletAccount.address]: signature };
210
+ const outputMessages = Object.freeze([
211
+ Object.freeze({
212
+ content: signedMessage,
213
+ signatures: Object.freeze(nextSignatureMap)
214
+ })
215
+ ]);
216
+ return outputMessages;
217
+ }
218
+ }),
219
+ [uiWalletAccount, signMessage]
220
+ );
221
+ }
222
+ function useWalletAccountTransactionSigner(uiWalletAccount, chain) {
223
+ const encoderRef = useRef();
224
+ const signTransaction = useSignTransaction(uiWalletAccount, chain);
225
+ return useMemo(
226
+ () => ({
227
+ address: address(uiWalletAccount.address),
228
+ async modifyAndSignTransactions(transactions, config = {}) {
229
+ const { abortSignal, ...options } = config;
230
+ abortSignal?.throwIfAborted();
231
+ const transactionCodec = encoderRef.current ||= getTransactionCodec();
232
+ if (transactions.length > 1) {
233
+ throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);
234
+ }
235
+ if (transactions.length === 0) {
236
+ return transactions;
237
+ }
238
+ const [transaction] = transactions;
239
+ const wireTransactionBytes = transactionCodec.encode(transaction);
240
+ const inputWithOptions = {
241
+ ...options,
242
+ transaction: wireTransactionBytes
243
+ };
244
+ const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);
245
+ const decodedSignedTransaction = transactionCodec.decode(
246
+ signedTransaction
247
+ );
248
+ return Object.freeze([decodedSignedTransaction]);
249
+ }
250
+ }),
251
+ [uiWalletAccount.address, signTransaction]
252
+ );
253
+ }
254
+ function useWalletAccountTransactionSendingSigner(uiWalletAccount, chain) {
255
+ const encoderRef = useRef();
256
+ const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);
257
+ return useMemo(
258
+ () => ({
259
+ address: address(uiWalletAccount.address),
260
+ async signAndSendTransactions(transactions, config = {}) {
261
+ const { abortSignal, ...options } = config;
262
+ abortSignal?.throwIfAborted();
263
+ const transactionEncoder = encoderRef.current ||= getTransactionEncoder();
264
+ if (transactions.length > 1) {
265
+ throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);
266
+ }
267
+ if (transactions.length === 0) {
268
+ return [];
269
+ }
270
+ const [transaction] = transactions;
271
+ const wireTransactionBytes = transactionEncoder.encode(transaction);
272
+ const inputWithOptions = {
273
+ ...options,
274
+ transaction: wireTransactionBytes
275
+ };
276
+ const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);
277
+ return Object.freeze([signature]);
278
+ }
279
+ }),
280
+ [signAndSendTransaction, uiWalletAccount.address]
281
+ );
282
+ }
283
+
284
+ export { useSignAndSendTransaction, useSignIn, useSignMessage, useSignTransaction, useWalletAccountMessageSigner, useWalletAccountTransactionSendingSigner, useWalletAccountTransactionSigner };
285
+ //# sourceMappingURL=index.node.mjs.map
286
+ //# sourceMappingURL=index.node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/useSignAndSendTransaction.ts","../src/useSignIn.ts","../src/useSignMessage.ts","../src/useSignTransaction.ts","../src/useWalletAccountMessageSigner.ts","../src/useWalletAccountTransactionSigner.ts","../src/useWalletAccountTransactionSendingSigner.ts"],"names":["useCallback","getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","getWalletAccountFeature","WalletStandardError","WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED","SolanaSignAndSendTransaction","useMemo","address","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","useRef"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import {\n SolanaSignAndSendTransaction,\n SolanaSignAndSendTransactionFeature,\n SolanaSignAndSendTransactionInput,\n SolanaSignAndSendTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, type UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignAndSendTransactionOutput;\n\n/**\n * Returns a function you can call to sign and send a serialized transaction.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signAndSendTransactions(input);\n return result;\n },\n [signAndSendTransactions],\n );\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signAndSendTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignAndSendTransaction,\n ) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n return results;\n },\n [account, chain, signAndSendTransactionFeature],\n );\n}\n","import { Address } from '@solana/addresses';\nimport {\n SolanaSignIn,\n SolanaSignInFeature,\n SolanaSignInInput,\n SolanaSignInOutput,\n} from '@solana/wallet-standard-features';\nimport {\n getWalletAccountFeature,\n getWalletFeature,\n UiWallet,\n UiWalletAccount,\n UiWalletHandle,\n} from '@wallet-standard/ui';\nimport {\n getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = SolanaSignInInput;\ntype Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n Readonly<{\n account: UiWalletAccount;\n }>;\n\n/**\n * Returns a function you can call to sign in to a domain\n */\nexport function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;\nexport function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: Input) => Promise<Output> {\n const signIns = useSignIns(uiWalletHandle);\n return useCallback(\n async input => {\n const [result] = await signIns(input);\n return result;\n },\n [signIns],\n );\n}\n\nfunction useSignIns(\n uiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (Input | undefined)[]) => Promise<readonly Output[]> {\n let signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n if ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n signMessageFeature = getWalletAccountFeature(\n uiWalletHandle as UiWalletAccount,\n SolanaSignIn,\n ) as SolanaSignInFeature[typeof SolanaSignIn];\n } else {\n signMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n }\n const wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n return useCallback(\n async (...inputs) => {\n const inputsWithAddressAndChainId = inputs.map(input => ({\n ...input,\n // Prioritize the `UiWalletAccount` address if it exists.\n ...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n }));\n const results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n const resultsWithoutSignatureType = results.map(\n ({\n account,\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => ({\n ...rest,\n account: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n wallet,\n account,\n ),\n }),\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, uiWalletHandle, wallet],\n );\n}\n","import {\n SolanaSignMessage,\n SolanaSignMessageFeature,\n SolanaSignMessageInput,\n SolanaSignMessageOutput,\n} from '@solana/wallet-standard-features';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\ntype Input = Omit<SolanaSignMessageInput, 'account'>;\ntype Output = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n ...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: Input) => Promise<Output> {\n const signMessages = useSignMessages(...config);\n return useCallback(\n async input => {\n const [result] = await signMessages(input);\n return result;\n },\n [signMessages],\n );\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n const signMessageFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignMessage,\n ) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccount = inputs.map(input => ({ ...input, account }));\n const results = await signMessageFeature.signMessage(...inputsWithAccount);\n const resultsWithoutSignatureType = results.map(\n ({\n signatureType: _, // Solana signatures are always of type `ed25519` so drop this property.\n ...rest\n }) => rest,\n );\n return resultsWithoutSignatureType;\n },\n [signMessageFeature, account],\n );\n}\n","import {\n SolanaSignAndSendTransaction,\n SolanaSignTransaction,\n SolanaSignTransactionFeature,\n SolanaSignTransactionInput,\n SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport {\n WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n WalletStandardError,\n} from '@wallet-standard/errors';\nimport { getWalletAccountFeature, UiWalletAccount } from '@wallet-standard/ui';\nimport { getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED } from '@wallet-standard/ui-registry';\nimport { useCallback } from 'react';\n\nimport { OnlySolanaChains } from './chain';\n\ntype Input = Readonly<\n Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n options?: Readonly<{\n minContextSlot?: bigint;\n }>;\n }\n>;\ntype Output = SolanaSignTransactionOutput;\n\n/**\n * Returns a function you can call to sign a serialized transaction.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (input: Input) => Promise<Output> {\n const signTransactions = useSignTransactions(uiWalletAccount, chain);\n return useCallback(\n async input => {\n const [result] = await signTransactions(input);\n return result;\n },\n [signTransactions],\n );\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): (...inputs: readonly Input[]) => Promise<readonly Output[]> {\n if (!uiWalletAccount.chains.includes(chain)) {\n throw new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n address: uiWalletAccount.address,\n chain,\n featureName: SolanaSignAndSendTransaction,\n supportedChains: [...uiWalletAccount.chains],\n supportedFeatures: [...uiWalletAccount.features],\n });\n }\n const signTransactionFeature = getWalletAccountFeature(\n uiWalletAccount,\n SolanaSignTransaction,\n ) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n const account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n return useCallback(\n async (...inputs) => {\n const inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n const minContextSlot = options?.minContextSlot;\n return {\n ...rest,\n account,\n chain,\n ...(minContextSlot != null\n ? {\n options: {\n minContextSlot: Number(minContextSlot),\n },\n }\n : null),\n };\n });\n const results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n return results;\n },\n [signTransactionFeature, account, chain],\n );\n}\n","import { Address, address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { MessageModifyingSigner, SignableMessage } from '@solana/signers';\nimport type { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo } from 'react';\n\nimport { useSignMessage } from './useSignMessage';\n\n/**\n * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n const signMessage = useSignMessage(uiWalletAccount);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignMessages(messages, config) {\n config?.abortSignal?.throwIfAborted();\n if (messages.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (messages.length === 0) {\n return messages;\n }\n const { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n const input = {\n message: originalMessage,\n };\n const { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n const messageWasModified =\n originalMessage.length !== signedMessage.length ||\n originalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n const originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n | SignatureBytes\n | undefined;\n const signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n if (!signatureIsNew && !messageWasModified) {\n // We already had this exact signature, and the message wasn't modified.\n // Don't replace the existing message object.\n return messages;\n }\n const nextSignatureMap = messageWasModified\n ? { [uiWalletAccount.address]: signature }\n : { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n const outputMessages = Object.freeze([\n Object.freeze({\n content: signedMessage,\n signatures: Object.freeze(nextSignatureMap),\n }) as SignableMessage,\n ]);\n return outputMessages;\n },\n }),\n [uiWalletAccount, signMessage],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionModifyingSigner } from '@solana/signers';\nimport { getTransactionCodec } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignTransaction } from './useSignTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionModifyingSigner` interface of\n * `@solana/signers`.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionCodec>>();\n const signTransaction = useSignTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async modifyAndSignTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionCodec = (encoderRef.current ||= getTransactionCodec());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return transactions;\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionCodec.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n const decodedSignedTransaction = transactionCodec.decode(\n signedTransaction,\n ) as (typeof transactions)[number];\n return Object.freeze([decodedSignedTransaction]);\n },\n }),\n [uiWalletAccount.address, signTransaction],\n );\n}\n","import { address } from '@solana/addresses';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { getTransactionEncoder } from '@solana/transactions';\nimport { UiWalletAccount } from '@wallet-standard/ui';\nimport { useMemo, useRef } from 'react';\n\nimport { OnlySolanaChains } from './chain';\nimport { useSignAndSendTransaction } from './useSignAndSendTransaction';\n\n/**\n * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n uiWalletAccount: TWalletAccount,\n chain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n const encoderRef = useRef<ReturnType<typeof getTransactionEncoder>>();\n const signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n return useMemo(\n () => ({\n address: address(uiWalletAccount.address),\n async signAndSendTransactions(transactions, config = {}) {\n const { abortSignal, ...options } = config;\n abortSignal?.throwIfAborted();\n const transactionEncoder = (encoderRef.current ||= getTransactionEncoder());\n if (transactions.length > 1) {\n throw new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n }\n if (transactions.length === 0) {\n return [];\n }\n const [transaction] = transactions;\n const wireTransactionBytes = transactionEncoder.encode(transaction);\n const inputWithOptions = {\n ...options,\n transaction: wireTransactionBytes as Uint8Array,\n };\n const { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n return Object.freeze([signature as SignatureBytes]);\n },\n }),\n [signAndSendTransaction, uiWalletAccount.address],\n );\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { IdentifierArray } from '@wallet-standard/base';
2
+ type AssertSolanaChain<T> = T extends `solana:${string}` ? T : never;
3
+ export type OnlySolanaChains<T extends IdentifierArray> = T extends IdentifierArray ? AssertSolanaChain<T[number]> : never;
4
+ export {};
5
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,KAAK,iBAAiB,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAErE,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,eAAe,IAAI,CAAC,SAAS,eAAe,GAC7E,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAC5B,KAAK,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './useSignAndSendTransaction';
2
+ export * from './useSignIn';
3
+ export * from './useSignMessage';
4
+ export * from './useSignTransaction';
5
+ export * from './useWalletAccountMessageSigner';
6
+ export * from './useWalletAccountTransactionSigner';
7
+ export * from './useWalletAccountTransactionSendingSigner';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,4CAA4C,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { SolanaSignAndSendTransactionInput, SolanaSignAndSendTransactionOutput } from '@solana/wallet-standard-features';
2
+ import { type UiWalletAccount } from '@wallet-standard/ui';
3
+ import { OnlySolanaChains } from './chain';
4
+ type Input = Readonly<Omit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {
5
+ options?: Readonly<{
6
+ minContextSlot?: bigint;
7
+ }>;
8
+ }>;
9
+ type Output = SolanaSignAndSendTransactionOutput;
10
+ /**
11
+ * Returns a function you can call to sign and send a serialized transaction.
12
+ */
13
+ export declare function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: OnlySolanaChains<TWalletAccount['chains']>): (input: Input) => Promise<Output>;
14
+ export declare function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: `solana:${string}`): (input: Input) => Promise<Output>;
15
+ export {};
16
+ //# sourceMappingURL=useSignAndSendTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignAndSendTransaction.d.ts","sourceRoot":"","sources":["../../src/useSignAndSendTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,iCAAiC,EACjC,kCAAkC,EACrC,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAIpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,KAAK,GAAG,QAAQ,CACjB,IAAI,CAAC,iCAAiC,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG;IACvE,OAAO,CAAC,EAAE,QAAQ,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACN,CACJ,CAAC;AACF,KAAK,MAAM,GAAG,kCAAkC,CAAC;AAEjD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,SAAS,eAAe,EAC5E,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,wBAAgB,yBAAyB,CAAC,cAAc,SAAS,eAAe,EAC5E,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { SolanaSignInInput, SolanaSignInOutput } from '@solana/wallet-standard-features';
2
+ import { UiWallet, UiWalletAccount } from '@wallet-standard/ui';
3
+ type Input = SolanaSignInInput;
4
+ type Output = Omit<SolanaSignInOutput, 'account' | 'signatureType'> & Readonly<{
5
+ account: UiWalletAccount;
6
+ }>;
7
+ /**
8
+ * Returns a function you can call to sign in to a domain
9
+ */
10
+ export declare function useSignIn(uiWalletAccount: UiWalletAccount): (input?: Omit<Input, 'address'>) => Promise<Output>;
11
+ export declare function useSignIn(uiWallet: UiWallet): (input?: Input) => Promise<Output>;
12
+ export {};
13
+ //# sourceMappingURL=useSignIn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignIn.d.ts","sourceRoot":"","sources":["../../src/useSignIn.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,iBAAiB,EACjB,kBAAkB,EACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAGH,QAAQ,EACR,eAAe,EAElB,MAAM,qBAAqB,CAAC;AAQ7B,KAAK,KAAK,GAAG,iBAAiB,CAAC;AAC/B,KAAK,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,eAAe,CAAC,GAC/D,QAAQ,CAAC;IACL,OAAO,EAAE,eAAe,CAAC;CAC5B,CAAC,CAAC;AAEP;;GAEG;AACH,wBAAgB,SAAS,CAAC,eAAe,EAAE,eAAe,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACjH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { SolanaSignMessageInput, SolanaSignMessageOutput } from '@solana/wallet-standard-features';
2
+ import { UiWalletAccount } from '@wallet-standard/ui';
3
+ type Input = Omit<SolanaSignMessageInput, 'account'>;
4
+ type Output = Omit<SolanaSignMessageOutput, 'signatureType'>;
5
+ /**
6
+ * Returns a function you can call to sign a serialized transaction.
7
+ */
8
+ export declare function useSignMessage<TWalletAccount extends UiWalletAccount>(...config: Parameters<typeof useSignMessages<TWalletAccount>>): (input: Input) => Promise<Output>;
9
+ declare function useSignMessages<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount): (...inputs: readonly Input[]) => Promise<readonly Output[]>;
10
+ export {};
11
+ //# sourceMappingURL=useSignMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignMessage.d.ts","sourceRoot":"","sources":["../../src/useSignMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,sBAAsB,EACtB,uBAAuB,EAC1B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAA2B,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI/E,KAAK,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;AACrD,KAAK,MAAM,GAAG,IAAI,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;AAE7D;;GAEG;AACH,wBAAgB,cAAc,CAAC,cAAc,SAAS,eAAe,EACjE,GAAG,MAAM,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,GAC9D,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CASnC;AAED,iBAAS,eAAe,CAAC,cAAc,SAAS,eAAe,EAC3D,eAAe,EAAE,cAAc,GAChC,CAAC,GAAG,MAAM,EAAE,SAAS,KAAK,EAAE,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAoB7D"}
@@ -0,0 +1,16 @@
1
+ import { SolanaSignTransactionInput, SolanaSignTransactionOutput } from '@solana/wallet-standard-features';
2
+ import { UiWalletAccount } from '@wallet-standard/ui';
3
+ import { OnlySolanaChains } from './chain';
4
+ type Input = Readonly<Omit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {
5
+ options?: Readonly<{
6
+ minContextSlot?: bigint;
7
+ }>;
8
+ }>;
9
+ type Output = SolanaSignTransactionOutput;
10
+ /**
11
+ * Returns a function you can call to sign a serialized transaction.
12
+ */
13
+ export declare function useSignTransaction<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: OnlySolanaChains<TWalletAccount['chains']>): (input: Input) => Promise<Output>;
14
+ export declare function useSignTransaction<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: `solana:${string}`): (input: Input) => Promise<Output>;
15
+ export {};
16
+ //# sourceMappingURL=useSignTransaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSignTransaction.d.ts","sourceRoot":"","sources":["../../src/useSignTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,0BAA0B,EAC1B,2BAA2B,EAC9B,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAA2B,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,KAAK,GAAG,QAAQ,CACjB,IAAI,CAAC,0BAA0B,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG;IAChE,OAAO,CAAC,EAAE,QAAQ,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACN,CACJ,CAAC;AACF,KAAK,MAAM,GAAG,2BAA2B,CAAC;AAE1C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,SAAS,eAAe,EACrE,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACrC,wBAAgB,kBAAkB,CAAC,cAAc,SAAS,eAAe,EACrE,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { MessageModifyingSigner } from '@solana/signers';
2
+ import type { UiWalletAccount } from '@wallet-standard/ui';
3
+ /**
4
+ * Returns an object that conforms to the `MessageModifyingSigner` interface of `@solana/signers`.
5
+ */
6
+ export declare function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount): MessageModifyingSigner<TWalletAccount['address']>;
7
+ //# sourceMappingURL=useWalletAccountMessageSigner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletAccountMessageSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountMessageSigner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAmB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAK3D;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,SAAS,eAAe,EAChF,eAAe,EAAE,cAAc,GAChC,sBAAsB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CA4CnD"}
@@ -0,0 +1,9 @@
1
+ import { TransactionSendingSigner } from '@solana/signers';
2
+ import { UiWalletAccount } from '@wallet-standard/ui';
3
+ import { OnlySolanaChains } from './chain';
4
+ /**
5
+ * Returns an object that conforms to the `TransactionSendingSigner` interface of `@solana/signers`.
6
+ */
7
+ export declare function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: OnlySolanaChains<TWalletAccount['chains']>): TransactionSendingSigner<TWalletAccount['address']>;
8
+ export declare function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: `solana:${string}`): TransactionSendingSigner<TWalletAccount['address']>;
9
+ //# sourceMappingURL=useWalletAccountTransactionSendingSigner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletAccountTransactionSendingSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountTransactionSendingSigner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;GAEG;AACH,wBAAgB,wCAAwC,CAAC,cAAc,SAAS,eAAe,EAC3F,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACvD,wBAAgB,wCAAwC,CAAC,cAAc,SAAS,eAAe,EAC3F,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,wBAAwB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { TransactionModifyingSigner } from '@solana/signers';
2
+ import { UiWalletAccount } from '@wallet-standard/ui';
3
+ import { OnlySolanaChains } from './chain';
4
+ /**
5
+ * Returns an object that conforms to the `TransactionModifyingSigner` interface of
6
+ * `@solana/signers`.
7
+ */
8
+ export declare function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: OnlySolanaChains<TWalletAccount['chains']>): TransactionModifyingSigner<TWalletAccount['address']>;
9
+ export declare function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(uiWalletAccount: TWalletAccount, chain: `solana:${string}`): TransactionModifyingSigner<TWalletAccount['address']>;
10
+ //# sourceMappingURL=useWalletAccountTransactionSigner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWalletAccountTransactionSigner.d.ts","sourceRoot":"","sources":["../../src/useWalletAccountTransactionSigner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,eAAe,EACpF,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,gBAAgB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAClD,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,wBAAgB,iCAAiC,CAAC,cAAc,SAAS,eAAe,EACpF,eAAe,EAAE,cAAc,EAC/B,KAAK,EAAE,UAAU,MAAM,EAAE,GAC1B,0BAA0B,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC"}