@solana/react-hooks 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context.tsx","../src/querySuspenseContext.ts","../src/useClientStore.ts","../src/query.ts","../src/queryHooks.ts","../src/hooks.ts","../src/QueryProvider.tsx","../src/SolanaProvider.tsx","../src/ui.tsx","../src/walletStandardHooks.ts"],"names":["createContext","client","useMemo","createClient","useEffect","useContext","useStore","useSWR","useState","useCallback","address","toAddress","toAddressString","stableStringify","getBase64EncodedWireTransaction","useRef","createSolTransferController","useSyncExternalStore","createSplTransferController","getWalletStandardConnectors","watchWalletStandardConnectors","createTransactionPoolController","createInitialAsyncState","createAsyncState","normalizeSignature","SIGNATURE_STATUS_TIMEOUT_MS","deriveConfirmationStatus","confirmationMeetsCommitment","next","jsx","SWRConfig","jsxs","Fragment","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","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","transactions","getTransactionCodec","assertIsTransactionWithinSizeLimit","compiledTransactionMessage","getCompiledTransactionMessageDecoder","getTransactionLifetimeConstraintFromCompiledTransactionMessage","getTransactionEncoder"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import { createClient, type SolanaClient, type SolanaClientConfig } from '@solana/client';\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useEffect, useMemo } from 'react';\n\nconst SolanaClientContext = createContext<SolanaClient | null>(null);\n\ntype ProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tclient?: SolanaClient;\n\tconfig?: SolanaClientConfig;\n}>;\n\n/**\n * Provides a {@link SolanaClient} instance to descendant components.\n *\n * Supply either an existing `client` or a configuration object used to lazily\n * construct an instance via {@link createClient}.\n */\nexport function SolanaClientProvider({ children, client: providedClient, config }: ProviderProps) {\n\tconst client = useMemo(() => {\n\t\tif (providedClient) {\n\t\t\treturn providedClient;\n\t\t}\n\t\tif (!config) {\n\t\t\tthrow new Error('SolanaClientProvider requires either a `client` or `config` prop.');\n\t\t}\n\t\treturn createClient(config);\n\t}, [config, providedClient]);\n\n\tuseEffect(() => {\n\t\tif (providedClient) {\n\t\t\treturn;\n\t\t}\n\t\treturn () => {\n\t\t\tclient.destroy();\n\t\t};\n\t}, [client, providedClient]);\n\n\treturn <SolanaClientContext.Provider value={client}>{children}</SolanaClientContext.Provider>;\n}\n\n/**\n * Access the {@link SolanaClient} from the nearest {@link SolanaClientProvider}.\n *\n * @throws If used outside of a provider.\n */\nexport function useSolanaClient(): SolanaClient {\n\tconst client = useContext(SolanaClientContext);\n\tif (!client) {\n\t\tthrow new Error('useSolanaClient must be used within a SolanaClientProvider.');\n\t}\n\treturn client;\n}\n","import { createContext, useContext } from 'react';\n\nconst QuerySuspenseContext = createContext<boolean | undefined>(undefined);\n\nexport function useQuerySuspensePreference(): boolean | undefined {\n\treturn useContext(QuerySuspenseContext);\n}\n\nexport { QuerySuspenseContext };\n","import type { ClientState } from '@solana/client';\nimport { useStore } from 'zustand';\n\nimport { useSolanaClient } from './context';\n\ntype Selector<T> = (state: ClientState) => T;\nconst identitySelector = (state: ClientState): ClientState => state;\n\nexport function useClientStore(): ClientState;\nexport function useClientStore<T>(selector: Selector<T>): T;\n/**\n * Subscribe to the underlying Zustand store exposed by {@link SolanaClient}.\n *\n * @param selector - Derives the slice of state to observe. Defaults to the entire state.\n * @returns Selected state slice that triggers re-render when it changes.\n */\nexport function useClientStore<T>(selector?: Selector<T>): ClientState | T {\n\tconst client = useSolanaClient();\n\tconst appliedSelector = selector ?? (identitySelector as Selector<T>);\n\tconst slice = useStore(client.store, appliedSelector);\n\treturn selector ? slice : (slice as unknown as ClientState);\n}\n","import type { SolanaClient } from '@solana/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR, { type BareFetcher, type SWRConfiguration, type SWRResponse } from 'swr';\n\nimport { useSolanaClient } from './context';\nimport { useQuerySuspensePreference } from './querySuspenseContext';\nimport { useClientStore } from './useClientStore';\n\nconst QUERY_NAMESPACE = '@solana/react-hooks';\n\nexport type QueryStatus = 'error' | 'idle' | 'loading' | 'success';\n\nexport type UseSolanaRpcQueryOptions<Data> = Omit<\n\tSWRConfiguration<Data, unknown, BareFetcher<Data>>,\n\t'fallback' | 'suspense'\n> &\n\tReadonly<{\n\t\tdisabled?: boolean;\n\t}>;\n\nexport type SolanaQueryResult<Data> = Readonly<{\n\tdata: Data | undefined;\n\tdataUpdatedAt?: number;\n\terror: unknown;\n\tisError: boolean;\n\tisLoading: boolean;\n\tisSuccess: boolean;\n\tisValidating: boolean;\n\tmutate: SWRResponse<Data>['mutate'];\n\trefresh(): Promise<Data | undefined>;\n\tstatus: QueryStatus;\n}>;\n\nexport function useSolanaRpcQuery<Data>(\n\tscope: string,\n\targs: readonly unknown[],\n\tfetcher: (client: SolanaClient) => Promise<Data>,\n\toptions: UseSolanaRpcQueryOptions<Data> = {},\n): SolanaQueryResult<Data> {\n\tconst client = useSolanaClient();\n\tconst cluster = useClientStore((state) => state.cluster);\n\tconst { disabled = false, ...restOptions } = options;\n\tconst providerSuspensePreference = useQuerySuspensePreference();\n\tconst suspenseEnabled = !disabled && Boolean(providerSuspensePreference);\n\tconst swrOptions: SWRConfiguration<Data, unknown, BareFetcher<Data>> = {\n\t\t...restOptions,\n\t\tsuspense: suspenseEnabled,\n\t};\n\n\tconst key = useMemo(() => {\n\t\tif (disabled) {\n\t\t\treturn null;\n\t\t}\n\t\treturn [QUERY_NAMESPACE, scope, cluster.endpoint, cluster.commitment, ...args] as const;\n\t}, [cluster.commitment, cluster.endpoint, args, scope, disabled]);\n\n\tconst swr = useSWR<Data>(key, () => fetcher(client), swrOptions);\n\tconst [dataUpdatedAt, setDataUpdatedAt] = useState<number | undefined>(() =>\n\t\tswr.data !== undefined ? Date.now() : undefined,\n\t);\n\n\tuseEffect(() => {\n\t\tif (swr.data !== undefined) {\n\t\t\tsetDataUpdatedAt(Date.now());\n\t\t}\n\t}, [swr.data]);\n\n\tconst status: QueryStatus = swr.error\n\t\t? 'error'\n\t\t: swr.isLoading\n\t\t\t? 'loading'\n\t\t\t: swr.data !== undefined\n\t\t\t\t? 'success'\n\t\t\t\t: 'idle';\n\n\tconst refresh = useCallback(() => swr.mutate(undefined, { revalidate: true }), [swr.mutate]);\n\n\treturn {\n\t\tdata: swr.data,\n\t\tdataUpdatedAt,\n\t\terror: swr.error ?? null,\n\t\tisError: status === 'error',\n\t\tisLoading: swr.isLoading,\n\t\tisSuccess: status === 'success',\n\t\tisValidating: swr.isValidating,\n\t\tmutate: swr.mutate,\n\t\trefresh,\n\t\tstatus,\n\t};\n}\n","import { type AddressLike, type SolanaClient, stableStringify, toAddress, toAddressString } from '@solana/client';\nimport {\n\ttype Base64EncodedWireTransaction,\n\ttype Commitment,\n\tgetBase64EncodedWireTransaction,\n\ttype SendableTransaction,\n\ttype Transaction,\n} from '@solana/kit';\nimport { useCallback, useMemo } from 'react';\n\nimport type { SolanaQueryResult, UseSolanaRpcQueryOptions } from './query';\nimport { useSolanaRpcQuery } from './query';\n\ntype RpcInstance = SolanaClient['runtime']['rpc'];\n\ntype LatestBlockhashPlan = ReturnType<RpcInstance['getLatestBlockhash']>;\ntype LatestBlockhashResponse = Awaited<ReturnType<LatestBlockhashPlan['send']>>;\n\ntype ProgramAccountsPlan = ReturnType<RpcInstance['getProgramAccounts']>;\ntype ProgramAccountsConfig = Parameters<RpcInstance['getProgramAccounts']>[1];\ntype ProgramAccountsResponse = Awaited<ReturnType<ProgramAccountsPlan['send']>>;\n\ntype SimulateTransactionPlan = ReturnType<RpcInstance['simulateTransaction']>;\ntype SimulateTransactionConfig = Parameters<RpcInstance['simulateTransaction']>[1];\ntype SimulateTransactionResponse = Awaited<ReturnType<SimulateTransactionPlan['send']>>;\n\nconst DEFAULT_BLOCKHASH_REFRESH_INTERVAL = 30_000;\n\nexport type UseLatestBlockhashOptions = Omit<UseSolanaRpcQueryOptions<LatestBlockhashResponse>, 'refreshInterval'> &\n\tReadonly<{\n\t\tcommitment?: Commitment;\n\t\tminContextSlot?: bigint | number;\n\t\trefreshInterval?: number;\n\t}>;\n\nexport type LatestBlockhashQueryResult = SolanaQueryResult<LatestBlockhashResponse> &\n\tReadonly<{\n\t\tblockhash: string | null;\n\t\tcontextSlot: bigint | null | undefined;\n\t\tlastValidBlockHeight: bigint | null;\n\t}>;\n\nexport function useLatestBlockhash(options?: UseLatestBlockhashOptions): LatestBlockhashQueryResult {\n\tconst { commitment, minContextSlot, refreshInterval = DEFAULT_BLOCKHASH_REFRESH_INTERVAL, ...rest } = options ?? {};\n\tconst normalizedMinContextSlot = useMemo<bigint | undefined>(() => {\n\t\tif (minContextSlot === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn typeof minContextSlot === 'bigint' ? minContextSlot : BigInt(Math.floor(minContextSlot));\n\t}, [minContextSlot]);\n\tconst keyArgs = useMemo(\n\t\t() => [commitment ?? null, normalizedMinContextSlot ?? null],\n\t\t[commitment, normalizedMinContextSlot],\n\t);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tconst fallbackCommitment = commitment ?? client.store.getState().cluster.commitment;\n\t\t\tconst plan = client.runtime.rpc.getLatestBlockhash({\n\t\t\t\tcommitment: fallbackCommitment,\n\t\t\t\tminContextSlot: normalizedMinContextSlot,\n\t\t\t});\n\t\t\treturn plan.send({ abortSignal: AbortSignal.timeout(15_000) });\n\t\t},\n\t\t[commitment, normalizedMinContextSlot],\n\t);\n\tconst query = useSolanaRpcQuery<LatestBlockhashResponse>('latestBlockhash', keyArgs, fetcher, {\n\t\trefreshInterval,\n\t\t...rest,\n\t});\n\treturn {\n\t\t...query,\n\t\tblockhash: query.data?.value.blockhash ?? null,\n\t\tcontextSlot: query.data?.context.slot,\n\t\tlastValidBlockHeight: query.data?.value.lastValidBlockHeight ?? null,\n\t};\n}\n\nexport type UseProgramAccountsOptions = UseSolanaRpcQueryOptions<ProgramAccountsResponse> &\n\tReadonly<{\n\t\tcommitment?: Commitment;\n\t\tconfig?: ProgramAccountsConfig;\n\t}>;\n\nexport type ProgramAccountsQueryResult = SolanaQueryResult<ProgramAccountsResponse> &\n\tReadonly<{\n\t\taccounts: ProgramAccountsResponse;\n\t}>;\n\nexport function useProgramAccounts(\n\tprogramAddress?: AddressLike,\n\toptions?: UseProgramAccountsOptions,\n): ProgramAccountsQueryResult {\n\tconst { commitment, config, ...queryOptions } = options ?? {};\n\tconst { disabled: disabledOption, ...restQueryOptions } = queryOptions;\n\tconst address = useMemo(() => (programAddress ? toAddress(programAddress) : undefined), [programAddress]);\n\tconst addressKey = useMemo(() => (address ? toAddressString(address) : null), [address]);\n\tconst configKey = useMemo(() => stableStringify(config ?? null), [config]);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tif (!address) {\n\t\t\t\tthrow new Error('Provide a program address before querying program accounts.');\n\t\t\t}\n\t\t\tconst fallbackCommitment = commitment ?? config?.commitment ?? client.store.getState().cluster.commitment;\n\t\t\tconst mergedConfig = {\n\t\t\t\t...(config ?? {}),\n\t\t\t\tcommitment: fallbackCommitment,\n\t\t\t} satisfies ProgramAccountsConfig;\n\t\t\tconst plan = client.runtime.rpc.getProgramAccounts(address, mergedConfig);\n\t\t\treturn plan.send({ abortSignal: AbortSignal.timeout(20_000) });\n\t\t},\n\t\t[address, commitment, config],\n\t);\n\tconst disabled = disabledOption ?? !address;\n\tconst query = useSolanaRpcQuery<ProgramAccountsResponse>('programAccounts', [addressKey, configKey], fetcher, {\n\t\t...restQueryOptions,\n\t\tdisabled,\n\t});\n\treturn {\n\t\t...query,\n\t\taccounts: query.data ?? [],\n\t};\n}\n\nexport type UseSimulateTransactionOptions = Omit<\n\tUseSolanaRpcQueryOptions<SimulateTransactionResponse>,\n\t'refreshInterval'\n> &\n\tReadonly<{\n\t\tcommitment?: Commitment;\n\t\tconfig?: SimulateTransactionConfig;\n\t\trefreshInterval?: number;\n\t}>;\n\nexport type SimulateTransactionQueryResult = SolanaQueryResult<SimulateTransactionResponse> &\n\tReadonly<{\n\t\tlogs: readonly string[];\n\t}>;\n\ntype SimulationInput = (SendableTransaction & Transaction) | Base64EncodedWireTransaction | string;\n\nexport function useSimulateTransaction(\n\ttransaction?: SimulationInput | null,\n\toptions?: UseSimulateTransactionOptions,\n): SimulateTransactionQueryResult {\n\tconst { commitment, config, refreshInterval, ...rest } = options ?? {};\n\tconst { disabled: disabledOption, revalidateIfStale, revalidateOnFocus, ...queryOptions } = rest;\n\tconst wire = useMemo<Base64EncodedWireTransaction | null>(() => {\n\t\tif (!transaction) {\n\t\t\treturn null;\n\t\t}\n\t\tif (typeof transaction === 'string') {\n\t\t\treturn transaction as Base64EncodedWireTransaction;\n\t\t}\n\t\treturn getBase64EncodedWireTransaction(transaction);\n\t}, [transaction]);\n\tconst configKey = useMemo(() => stableStringify(config ?? null), [config]);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tif (!wire) {\n\t\t\t\tthrow new Error('Provide a transaction payload before simulating.');\n\t\t\t}\n\t\t\tconst resolvedConfig = {\n\t\t\t\t...(config ?? {}),\n\t\t\t\tcommitment: commitment ?? config?.commitment ?? client.store.getState().cluster.commitment,\n\t\t\t} as SimulateTransactionConfig;\n\t\t\tconst plan = client.runtime.rpc.simulateTransaction(wire, resolvedConfig);\n\t\t\treturn plan.send({ abortSignal: AbortSignal.timeout(20_000) });\n\t\t},\n\t\t[commitment, config, wire],\n\t);\n\tconst disabled = disabledOption ?? !wire;\n\tconst query = useSolanaRpcQuery<SimulateTransactionResponse>('simulateTransaction', [wire, configKey], fetcher, {\n\t\t...queryOptions,\n\t\trefreshInterval,\n\t\tdisabled,\n\t\trevalidateIfStale: revalidateIfStale ?? false,\n\t\trevalidateOnFocus: revalidateOnFocus ?? false,\n\t});\n\treturn {\n\t\t...query,\n\t\tlogs: query.data?.value.logs ?? [],\n\t};\n}\n","import {\n\ttype AccountCacheEntry,\n\ttype AddressLike,\n\ttype AsyncState,\n\ttype ClientState,\n\ttype ConfirmationCommitment,\n\tconfirmationMeetsCommitment,\n\tcreateAsyncState,\n\tcreateInitialAsyncState,\n\tcreateSolTransferController,\n\tcreateSplTransferController,\n\tcreateTransactionPoolController,\n\tderiveConfirmationStatus,\n\tgetWalletStandardConnectors,\n\ttype LatestBlockhashCache,\n\tnormalizeSignature,\n\tSIGNATURE_STATUS_TIMEOUT_MS,\n\ttype SignatureLike,\n\ttype SolanaClient,\n\ttype SolTransferHelper,\n\ttype SolTransferInput,\n\ttype SolTransferSendOptions,\n\ttype SplTokenBalance,\n\ttype SplTokenHelper,\n\ttype SplTokenHelperConfig,\n\ttype SplTransferController,\n\ttype SplTransferInput,\n\ttype TransactionHelper,\n\ttype TransactionInstructionInput,\n\ttype TransactionInstructionList,\n\ttype TransactionPoolController,\n\ttype TransactionPoolPrepareAndSendOptions,\n\ttype TransactionPoolPrepareOptions,\n\ttype TransactionPoolSendOptions,\n\ttype TransactionPoolSignOptions,\n\ttype TransactionPrepareAndSendRequest,\n\ttype TransactionPrepared,\n\ttype TransactionSendOptions,\n\ttoAddress,\n\ttype WalletConnector,\n\ttype WalletSession,\n\ttype WalletStatus,\n\twatchWalletStandardConnectors,\n} from '@solana/client';\nimport type { Commitment, Lamports, Signature } from '@solana/kit';\nimport { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport useSWR from 'swr';\n\nimport { useSolanaClient } from './context';\nimport { type SolanaQueryResult, type UseSolanaRpcQueryOptions, useSolanaRpcQuery } from './query';\nimport { type LatestBlockhashQueryResult, type UseLatestBlockhashOptions, useLatestBlockhash } from './queryHooks';\nimport { useClientStore } from './useClientStore';\n\ntype ClusterState = ClientState['cluster'];\ntype ClusterStatus = ClientState['cluster']['status'];\nexport type WalletStandardDiscoveryOptions = Parameters<typeof watchWalletStandardConnectors>[1];\n\ntype UnwrapPromise<T> = T extends Promise<infer U> ? U : T;\n\ntype RpcInstance = SolanaClient['runtime']['rpc'];\n\ntype SignatureStatusesPlan = ReturnType<RpcInstance['getSignatureStatuses']>;\n\ntype SignatureStatusesResponse = Awaited<ReturnType<SignatureStatusesPlan['send']>>;\n\ntype SignatureStatusValue = SignatureStatusesResponse['value'][number];\n\ntype SignatureStatusConfig = Parameters<RpcInstance['getSignatureStatuses']>[1];\n\ntype UseAccountOptions = Readonly<{\n\tcommitment?: Commitment;\n\tfetch?: boolean;\n\tskip?: boolean;\n\twatch?: boolean;\n}>;\n\ntype UseBalanceOptions = Readonly<{\n\twatch?: boolean;\n}> &\n\tUseAccountOptions;\n\nfunction createClusterSelector(): (state: ClientState) => ClusterState {\n\treturn (state) => state.cluster;\n}\n\nfunction createClusterStatusSelector(): (state: ClientState) => ClusterStatus {\n\treturn (state) => state.cluster.status;\n}\n\nfunction createWalletSelector(): (state: ClientState) => WalletStatus {\n\treturn (state) => state.wallet;\n}\n\nfunction createAccountSelector(key?: string) {\n\treturn (state: ClientState): AccountCacheEntry | undefined => (key ? state.accounts[key] : undefined);\n}\n\n/**\n * Read the full cluster state managed by the client store.\n */\nexport function useClusterState(): ClusterState {\n\tconst selector = useMemo(createClusterSelector, []);\n\treturn useClientStore(selector);\n}\n\n/**\n * Read the current cluster connection status.\n */\nexport function useClusterStatus(): ClusterStatus {\n\tconst selector = useMemo(createClusterStatusSelector, []);\n\treturn useClientStore(selector);\n}\n\n/**\n * Access the wallet status tracked by the client store.\n */\nexport function useWallet(): WalletStatus {\n\tconst selector = useMemo(createWalletSelector, []);\n\treturn useClientStore(selector);\n}\n\n/**\n * Convenience helper that returns the active wallet session when connected.\n */\nexport function useWalletSession(): WalletSession | undefined {\n\tconst wallet = useWallet();\n\tif (wallet.status === 'connected') {\n\t\treturn wallet.session;\n\t}\n\treturn undefined;\n}\n\n/**\n * Access the headless client actions.\n */\nexport function useWalletActions() {\n\tconst client = useSolanaClient();\n\treturn client.actions;\n}\n\n/**\n * Stable connect helper that resolves to {@link ClientActions.connectWallet}.\n */\nexport function useConnectWallet(): (\n\tconnectorId: string,\n\toptions?: Readonly<{ autoConnect?: boolean }>,\n) => Promise<void> {\n\tconst client = useSolanaClient();\n\treturn useCallback(\n\t\t(connectorId: string, options?: Readonly<{ autoConnect?: boolean }>) =>\n\t\t\tclient.actions.connectWallet(connectorId, options),\n\t\t[client],\n\t);\n}\n\n/**\n * Stable disconnect helper mapping to {@link ClientActions.disconnectWallet}.\n */\nexport function useDisconnectWallet(): () => Promise<void> {\n\tconst client = useSolanaClient();\n\treturn useCallback(() => client.actions.disconnectWallet(), [client]);\n}\n\ntype SolTransferSignature = UnwrapPromise<ReturnType<SolTransferHelper['sendTransfer']>>;\n\n/**\n * Convenience wrapper around the SOL transfer helper that tracks status and signature.\n */\nexport function useSolTransfer(): Readonly<{\n\terror: unknown;\n\thelper: SolTransferHelper;\n\tisSending: boolean;\n\treset(): void;\n\tsend(config: SolTransferInput, options?: SolTransferSendOptions): Promise<SolTransferSignature>;\n\tsignature: SolTransferSignature | null;\n\tstatus: AsyncState<SolTransferSignature>['status'];\n}> {\n\tconst client = useSolanaClient();\n\tconst session = useWalletSession();\n\tconst helper = client.solTransfer;\n\tconst sessionRef = useRef(session);\n\n\tuseEffect(() => {\n\t\tsessionRef.current = session;\n\t}, [session]);\n\n\tconst controller = useMemo(\n\t\t() =>\n\t\t\tcreateSolTransferController({\n\t\t\t\tauthorityProvider: () => sessionRef.current,\n\t\t\t\thelper,\n\t\t\t}),\n\t\t[helper],\n\t);\n\n\tconst state = useSyncExternalStore<AsyncState<SolTransferSignature>>(\n\t\tcontroller.subscribe,\n\t\tcontroller.getState,\n\t\tcontroller.getState,\n\t);\n\n\tconst send = useCallback(\n\t\t(config: SolTransferInput, options?: SolTransferSendOptions) => controller.send(config, options),\n\t\t[controller],\n\t);\n\n\treturn {\n\t\terror: state.error ?? null,\n\t\thelper,\n\t\tisSending: state.status === 'loading',\n\t\treset: controller.reset,\n\t\tsend,\n\t\tsignature: state.data ?? null,\n\t\tstatus: state.status,\n\t};\n}\n\ntype SplTokenBalanceResult = SplTokenBalance;\ntype SplTransferSignature = UnwrapPromise<ReturnType<SplTokenHelper['sendTransfer']>>;\ntype UseSplTokenOptions = Readonly<{\n\tcommitment?: Commitment;\n\tconfig?: Omit<SplTokenHelperConfig, 'commitment' | 'mint'>;\n\towner?: AddressLike;\n\trevalidateOnFocus?: boolean;\n}>;\n\n/**\n * Simplified SPL token hook that scopes helpers by mint and manages balance state.\n */\nexport function useSplToken(\n\tmint: AddressLike,\n\toptions: UseSplTokenOptions = {},\n): Readonly<{\n\tbalance: SplTokenBalanceResult | null;\n\terror: unknown;\n\thelper: SplTokenHelper;\n\tisFetching: boolean;\n\tisSending: boolean;\n\towner: string | null;\n\trefresh(): Promise<SplTokenBalanceResult | undefined>;\n\trefreshing: boolean;\n\tresetSend(): void;\n\tsend(config: SplTransferInput, options?: SolTransferSendOptions): Promise<SplTransferSignature>;\n\tsendError: unknown;\n\tsendSignature: SplTransferSignature | null;\n\tsendStatus: AsyncState<SplTransferSignature>['status'];\n\tstatus: 'disconnected' | 'error' | 'loading' | 'ready';\n}> {\n\tconst client = useSolanaClient();\n\tconst session = useWalletSession();\n\n\tconst normalizedMint = useMemo(() => String(mint), [mint]);\n\n\tconst helperConfig = useMemo<SplTokenHelperConfig>(\n\t\t() => ({\n\t\t\tcommitment: options.commitment,\n\t\t\tmint: normalizedMint,\n\t\t\t...(options.config ?? {}),\n\t\t}),\n\t\t[normalizedMint, options.commitment, options.config],\n\t);\n\n\tconst helper = useMemo(() => client.splToken(helperConfig), [client, helperConfig]);\n\n\tconst ownerRaw = options.owner ?? session?.account.address;\n\tconst owner = useMemo(() => (ownerRaw ? String(ownerRaw) : null), [ownerRaw]);\n\n\tconst balanceKey = owner ? ['spl-balance', normalizedMint, owner, options.commitment ?? null] : null;\n\n\tconst fetchBalance = useCallback(() => {\n\t\tif (!owner) {\n\t\t\tthrow new Error('Unable to fetch SPL balance without an owner.');\n\t\t}\n\t\treturn helper.fetchBalance(owner, options.commitment);\n\t}, [helper, owner, options.commitment]);\n\n\tconst { data, error, isLoading, isValidating, mutate } = useSWR<SplTokenBalanceResult>(balanceKey, fetchBalance, {\n\t\trevalidateOnFocus: options.revalidateOnFocus ?? false,\n\t});\n\n\tconst sessionRef = useRef(session);\n\tuseEffect(() => {\n\t\tsessionRef.current = session;\n\t}, [session]);\n\n\tconst ownerRef = useRef(owner);\n\tuseEffect(() => {\n\t\townerRef.current = owner;\n\t}, [owner]);\n\n\tconst controller = useMemo<SplTransferController>(\n\t\t() =>\n\t\t\tcreateSplTransferController({\n\t\t\t\tauthorityProvider: () => sessionRef.current ?? undefined,\n\t\t\t\thelper,\n\t\t\t\tsourceOwnerProvider: () => ownerRef.current ?? undefined,\n\t\t\t}),\n\t\t[helper],\n\t);\n\n\tconst sendState = useSyncExternalStore<AsyncState<SplTransferSignature>>(\n\t\tcontroller.subscribe,\n\t\tcontroller.getState,\n\t\tcontroller.getState,\n\t);\n\n\tconst refresh = useCallback(() => {\n\t\tif (!owner) {\n\t\t\treturn Promise.resolve(undefined);\n\t\t}\n\t\treturn mutate(() => helper.fetchBalance(owner, options.commitment), { revalidate: false });\n\t}, [helper, mutate, owner, options.commitment]);\n\n\tconst send = useCallback(\n\t\tasync (config: SplTransferInput, sendOptions?: SolTransferSendOptions) => {\n\t\t\tconst signature = await controller.send(config, sendOptions);\n\t\t\tif (owner) {\n\t\t\t\tawait mutate(() => helper.fetchBalance(owner, options.commitment), { revalidate: false });\n\t\t\t}\n\t\t\treturn signature;\n\t\t},\n\t\t[controller, helper, mutate, options.commitment, owner],\n\t);\n\n\tconst resetSend = useCallback(() => {\n\t\tcontroller.reset();\n\t}, [controller]);\n\n\tconst status: 'disconnected' | 'error' | 'loading' | 'ready' =\n\t\towner === null ? 'disconnected' : error ? 'error' : isLoading && !data ? 'loading' : 'ready';\n\n\treturn {\n\t\tbalance: data ?? null,\n\t\terror: error ?? null,\n\t\thelper,\n\t\tisFetching: Boolean(owner) && (isLoading || isValidating),\n\t\tisSending: sendState.status === 'loading',\n\t\towner,\n\t\trefresh,\n\t\trefreshing: Boolean(owner) && isValidating,\n\t\tresetSend,\n\t\tsend,\n\t\tsendError: sendState.error ?? null,\n\t\tsendSignature: sendState.data ?? null,\n\t\tsendStatus: sendState.status,\n\t\tstatus,\n\t};\n}\n\n/**\n * Subscribe to the account cache for a given address, optionally triggering fetch & watch helpers.\n */\nexport function useAccount(addressLike?: AddressLike, options: UseAccountOptions = {}): AccountCacheEntry | undefined {\n\tconst client = useSolanaClient();\n\tconst shouldSkip = options.skip ?? !addressLike;\n\tconst address = useMemo(() => {\n\t\tif (shouldSkip || !addressLike) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn toAddress(addressLike);\n\t}, [addressLike, shouldSkip]);\n\tconst accountKey = useMemo(() => address?.toString(), [address]);\n\tconst selector = useMemo(() => createAccountSelector(accountKey), [accountKey]);\n\tconst account = useClientStore(selector);\n\n\tuseEffect(() => {\n\t\tif (!address) {\n\t\t\treturn;\n\t\t}\n\t\tconst commitment = options.commitment;\n\t\tif (options.fetch !== false) {\n\t\t\tvoid client.actions.fetchAccount(address, commitment).catch(() => undefined);\n\t\t}\n\t\tif (options.watch) {\n\t\t\tconst subscription = client.watchers.watchAccount({ address, commitment }, () => undefined);\n\t\t\treturn () => {\n\t\t\t\tsubscription.abort();\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}, [address, client, options.commitment, options.fetch, options.watch]);\n\n\treturn account;\n}\n\n/**\n * Tracks a lamport balance for the provided address. Fetches immediately and watches by default.\n */\nexport function useBalance(\n\taddressLike?: AddressLike,\n\toptions: UseBalanceOptions = {},\n): Readonly<{\n\taccount?: AccountCacheEntry;\n\terror?: unknown;\n\tfetching: boolean;\n\tlamports: Lamports | null;\n\tslot: bigint | null | undefined;\n}> {\n\tconst mergedOptions = useMemo(\n\t\t() => ({\n\t\t\tcommitment: options.commitment,\n\t\t\tfetch: options.fetch ?? true,\n\t\t\tskip: options.skip,\n\t\t\twatch: options.watch ?? true,\n\t\t}),\n\t\t[options.commitment, options.fetch, options.skip, options.watch],\n\t);\n\tconst client = useSolanaClient();\n\tconst shouldSkip = mergedOptions.skip ?? !addressLike;\n\tconst address = useMemo(() => {\n\t\tif (shouldSkip || !addressLike) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn toAddress(addressLike);\n\t}, [addressLike, shouldSkip]);\n\tconst accountKey = useMemo(() => address?.toString(), [address]);\n\tconst selector = useMemo(() => createAccountSelector(accountKey), [accountKey]);\n\tconst account = useClientStore(selector);\n\n\tuseEffect(() => {\n\t\tif (!address) {\n\t\t\treturn;\n\t\t}\n\t\tconst commitment = mergedOptions.commitment;\n\t\tif (mergedOptions.fetch !== false) {\n\t\t\tvoid client.actions.fetchBalance(address, commitment).catch(() => undefined);\n\t\t}\n\t\tif (mergedOptions.watch) {\n\t\t\tconst watcher = client.watchers.watchBalance({ address, commitment }, () => undefined);\n\t\t\treturn () => {\n\t\t\t\twatcher.abort();\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}, [address, client, mergedOptions.commitment, mergedOptions.fetch, mergedOptions.watch]);\n\n\tconst lamports = account?.lamports ?? null;\n\tconst fetching = account?.fetching ?? false;\n\tconst slot = account?.slot;\n\tconst error = account?.error;\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\taccount,\n\t\t\terror,\n\t\t\tfetching,\n\t\t\tlamports,\n\t\t\tslot,\n\t\t}),\n\t\t[account, error, fetching, lamports, slot],\n\t);\n}\n\n/**\n * Collect Wallet Standard connectors and keep the list in sync with registration changes.\n */\nexport function useWalletStandardConnectors(options?: WalletStandardDiscoveryOptions): readonly WalletConnector[] {\n\tconst overrides = options?.overrides;\n\tconst memoisedOptions = useMemo(() => (overrides ? { overrides } : undefined), [overrides]);\n\tconst [connectors, setConnectors] = useState<readonly WalletConnector[]>(() =>\n\t\tgetWalletStandardConnectors(memoisedOptions ?? {}),\n\t);\n\n\tuseEffect(() => {\n\t\tsetConnectors(getWalletStandardConnectors(memoisedOptions ?? {}));\n\t\tconst unwatch = watchWalletStandardConnectors(setConnectors, memoisedOptions ?? {});\n\t\treturn () => {\n\t\t\tunwatch();\n\t\t};\n\t}, [memoisedOptions]);\n\n\treturn connectors;\n}\n\ntype UseTransactionPoolConfig = Readonly<{\n\tinstructions?: TransactionInstructionList;\n\tlatestBlockhash?: UseLatestBlockhashOptions;\n}>;\n\ntype UseTransactionPoolPrepareOptions = TransactionPoolPrepareOptions;\n\ntype UseTransactionPoolSignOptions = TransactionPoolSignOptions;\n\ntype UseTransactionPoolSendOptions = TransactionPoolSendOptions;\n\ntype UseTransactionPoolPrepareAndSendOptions = TransactionPoolPrepareAndSendOptions;\n\ntype TransactionSignature = Signature;\n\n/**\n * Manage a mutable set of instructions and use the transaction helper to prepare and send transactions.\n */\nexport function useTransactionPool(config: UseTransactionPoolConfig = {}): Readonly<{\n\taddInstruction(instruction: TransactionInstructionInput): void;\n\taddInstructions(instructionSet: TransactionInstructionList): void;\n\tclearInstructions(): void;\n\tinstructions: TransactionInstructionList;\n\tisPreparing: boolean;\n\tisSending: boolean;\n\tprepared: TransactionPrepared | null;\n\tprepare(options?: UseTransactionPoolPrepareOptions): Promise<TransactionPrepared>;\n\tprepareError: unknown;\n\tprepareStatus: AsyncState<TransactionPrepared>['status'];\n\tremoveInstruction(index: number): void;\n\treplaceInstructions(instructionSet: TransactionInstructionList): void;\n\treset(): void;\n\tsend(options?: UseTransactionPoolSendOptions): Promise<TransactionSignature>;\n\tsendError: unknown;\n\tsendSignature: TransactionSignature | null;\n\tsendStatus: AsyncState<TransactionSignature>['status'];\n\tprepareAndSend(\n\t\trequest?: UseTransactionPoolPrepareAndSendOptions,\n\t\tsendOptions?: TransactionSendOptions,\n\t): Promise<TransactionSignature>;\n\tsign(options?: UseTransactionPoolSignOptions): ReturnType<TransactionHelper['sign']>;\n\ttoWire(options?: UseTransactionPoolSignOptions): ReturnType<TransactionHelper['toWire']>;\n\tlatestBlockhash: LatestBlockhashQueryResult;\n}> {\n\tconst initialInstructions = useMemo<TransactionInstructionList>(\n\t\t() => config.instructions ?? [],\n\t\t[config.instructions],\n\t);\n\tconst client = useSolanaClient();\n\tconst helper = client.helpers.transaction;\n\tconst blockhashMaxAgeMs = config.latestBlockhash?.refreshInterval ?? 30_000;\n\tconst controller = useMemo<TransactionPoolController>(\n\t\t() =>\n\t\t\tcreateTransactionPoolController({\n\t\t\t\tblockhashMaxAgeMs,\n\t\t\t\thelper,\n\t\t\t\tinitialInstructions,\n\t\t\t}),\n\t\t[blockhashMaxAgeMs, helper, initialInstructions],\n\t);\n\tconst latestBlockhash = useLatestBlockhash(config.latestBlockhash);\n\n\tuseEffect(() => {\n\t\tconst value = latestBlockhash.data?.value;\n\t\tif (!value) {\n\t\t\tcontroller.setLatestBlockhashCache(undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst cache: LatestBlockhashCache = {\n\t\t\tupdatedAt: latestBlockhash.dataUpdatedAt ?? Date.now(),\n\t\t\tvalue,\n\t\t};\n\t\tcontroller.setLatestBlockhashCache(cache);\n\t}, [controller, latestBlockhash.data, latestBlockhash.dataUpdatedAt]);\n\n\tconst instructions = useSyncExternalStore<TransactionInstructionList>(\n\t\tcontroller.subscribeInstructions,\n\t\tcontroller.getInstructions,\n\t\tcontroller.getInstructions,\n\t);\n\tconst prepared = useSyncExternalStore<TransactionPrepared | null>(\n\t\tcontroller.subscribePrepared,\n\t\tcontroller.getPrepared,\n\t\tcontroller.getPrepared,\n\t);\n\tconst prepareState = useSyncExternalStore<AsyncState<TransactionPrepared>>(\n\t\tcontroller.subscribePrepareState,\n\t\tcontroller.getPrepareState,\n\t\tcontroller.getPrepareState,\n\t);\n\tconst sendState = useSyncExternalStore<AsyncState<TransactionSignature>>(\n\t\tcontroller.subscribeSendState,\n\t\tcontroller.getSendState,\n\t\tcontroller.getSendState,\n\t);\n\n\treturn {\n\t\taddInstruction: controller.addInstruction,\n\t\taddInstructions: controller.addInstructions,\n\t\tclearInstructions: controller.clearInstructions,\n\t\tinstructions,\n\t\tisPreparing: prepareState.status === 'loading',\n\t\tisSending: sendState.status === 'loading',\n\t\tprepared,\n\t\tprepare: controller.prepare,\n\t\tprepareError: prepareState.error ?? null,\n\t\tprepareStatus: prepareState.status,\n\t\tremoveInstruction: controller.removeInstruction,\n\t\treplaceInstructions: controller.replaceInstructions,\n\t\treset: controller.reset,\n\t\tsend: controller.send,\n\t\tsendError: sendState.error ?? null,\n\t\tsendSignature: sendState.data ?? null,\n\t\tsendStatus: sendState.status,\n\t\tprepareAndSend: controller.prepareAndSend,\n\t\tsign: controller.sign,\n\t\ttoWire: controller.toWire,\n\t\tlatestBlockhash,\n\t};\n}\n\ntype SendTransactionSignature = Signature;\n\ntype UseSendTransactionResult = Readonly<{\n\terror: unknown;\n\tisSending: boolean;\n\treset(): void;\n\tsend(\n\t\trequest: TransactionPrepareAndSendRequest,\n\t\toptions?: TransactionSendOptions,\n\t): Promise<SendTransactionSignature>;\n\tsendPrepared(prepared: TransactionPrepared, options?: TransactionSendOptions): Promise<SendTransactionSignature>;\n\tsignature: SendTransactionSignature | null;\n\tstatus: AsyncState<SendTransactionSignature>['status'];\n}>;\n\n/**\n * General-purpose helper that prepares and sends arbitrary transactions through {@link TransactionHelper}.\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n\tconst client = useSolanaClient();\n\tconst helper = client.transaction;\n\tconst session = useWalletSession();\n\tconst [state, setState] = useState<AsyncState<SendTransactionSignature>>(() =>\n\t\tcreateInitialAsyncState<SendTransactionSignature>(),\n\t);\n\n\tconst execute = useCallback(\n\t\tasync (operation: () => Promise<SendTransactionSignature>): Promise<SendTransactionSignature> => {\n\t\t\tsetState(createAsyncState<SendTransactionSignature>('loading'));\n\t\t\ttry {\n\t\t\t\tconst signature = await operation();\n\t\t\t\tsetState(createAsyncState<SendTransactionSignature>('success', { data: signature }));\n\t\t\t\treturn signature;\n\t\t\t} catch (error) {\n\t\t\t\tsetState(createAsyncState<SendTransactionSignature>('error', { error }));\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\tconst ensureAuthority = useCallback(\n\t\t(request: TransactionPrepareAndSendRequest): TransactionPrepareAndSendRequest => {\n\t\t\tif (request.authority) {\n\t\t\t\treturn request;\n\t\t\t}\n\t\t\tif (!session) {\n\t\t\t\tthrow new Error('Connect a wallet or supply an `authority` before sending transactions.');\n\t\t\t}\n\t\t\treturn { ...request, authority: session };\n\t\t},\n\t\t[session],\n\t);\n\n\tconst send = useCallback(\n\t\tasync (request: TransactionPrepareAndSendRequest, options?: TransactionSendOptions) => {\n\t\t\tconst normalizedRequest = ensureAuthority(request);\n\t\t\treturn execute(() => helper.prepareAndSend(normalizedRequest, options));\n\t\t},\n\t\t[ensureAuthority, execute, helper],\n\t);\n\n\tconst sendPrepared = useCallback(\n\t\tasync (prepared: TransactionPrepared, options?: TransactionSendOptions) =>\n\t\t\texecute(() => helper.send(prepared, options)),\n\t\t[execute, helper],\n\t);\n\n\tconst reset = useCallback(() => {\n\t\tsetState(createInitialAsyncState<SendTransactionSignature>());\n\t}, []);\n\n\treturn {\n\t\terror: state.error ?? null,\n\t\tisSending: state.status === 'loading',\n\t\treset,\n\t\tsend,\n\t\tsendPrepared,\n\t\tsignature: state.data ?? null,\n\t\tstatus: state.status,\n\t};\n}\n\nexport type UseSignatureStatusOptions = UseSolanaRpcQueryOptions<SignatureStatusValue | null> &\n\tReadonly<{\n\t\tconfig?: SignatureStatusConfig;\n\t}>;\n\nexport type SignatureStatusResult = SolanaQueryResult<SignatureStatusValue | null> &\n\tReadonly<{\n\t\tconfirmationStatus: ConfirmationCommitment | null;\n\t\tsignatureStatus: SignatureStatusValue | null;\n\t}>;\n\n/**\n * Fetch the RPC status for a transaction signature.\n */\nexport function useSignatureStatus(\n\tsignatureInput?: SignatureLike,\n\toptions: UseSignatureStatusOptions = {},\n): SignatureStatusResult {\n\tconst { config, ...queryOptions } = options;\n\tconst signature = useMemo(() => normalizeSignature(signatureInput), [signatureInput]);\n\tconst signatureKey = signature?.toString() ?? null;\n\tconst configKey = useMemo(() => JSON.stringify(config ?? null), [config]);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tif (!signatureKey) {\n\t\t\t\tthrow new Error('Provide a signature before querying its status.');\n\t\t\t}\n\t\t\tif (!signature) {\n\t\t\t\tthrow new Error('Provide a signature before querying its status.');\n\t\t\t}\n\t\t\tconst plan = client.runtime.rpc.getSignatureStatuses([signature], config);\n\t\t\tconst response = await plan.send({ abortSignal: AbortSignal.timeout(SIGNATURE_STATUS_TIMEOUT_MS) });\n\t\t\treturn response.value[0] ?? null;\n\t\t},\n\t\t[config, signature, signatureKey],\n\t);\n\tconst disabled = queryOptions.disabled ?? !signatureKey;\n\tconst query = useSolanaRpcQuery<SignatureStatusValue | null>(\n\t\t'signatureStatus',\n\t\t[signatureKey, configKey],\n\t\tfetcher,\n\t\t{\n\t\t\t...queryOptions,\n\t\t\tdisabled,\n\t\t},\n\t);\n\tconst confirmationStatus = deriveConfirmationStatus(query.data ?? null);\n\treturn {\n\t\t...query,\n\t\tconfirmationStatus,\n\t\tsignatureStatus: query.data ?? null,\n\t};\n}\n\nexport type SignatureWaitStatus = 'error' | 'idle' | 'success' | 'waiting';\n\nexport type UseWaitForSignatureOptions = Omit<UseSignatureStatusOptions, 'disabled'> &\n\tReadonly<{\n\t\tcommitment?: ConfirmationCommitment;\n\t\tdisabled?: boolean;\n\t\tsubscribe?: boolean;\n\t\twatchCommitment?: ConfirmationCommitment;\n\t}>;\n\nexport type WaitForSignatureResult = SignatureStatusResult &\n\tReadonly<{\n\t\tisError: boolean;\n\t\tisSuccess: boolean;\n\t\tisWaiting: boolean;\n\t\twaitError: unknown;\n\t\twaitStatus: SignatureWaitStatus;\n\t}>;\n\n/**\n * Polls signature status data until the desired commitment (or subscription notification) is reached.\n */\nexport function useWaitForSignature(\n\tsignatureInput?: SignatureLike,\n\toptions: UseWaitForSignatureOptions = {},\n): WaitForSignatureResult {\n\tconst {\n\t\tcommitment = 'confirmed',\n\t\tdisabled: disabledOption,\n\t\tsubscribe = true,\n\t\twatchCommitment,\n\t\t...signatureStatusOptions\n\t} = options;\n\tconst { refreshInterval, ...restStatusOptions } = signatureStatusOptions;\n\tconst subscribeCommitment = watchCommitment ?? commitment;\n\tconst client = useSolanaClient();\n\tconst normalizedSignature = useMemo(() => normalizeSignature(signatureInput), [signatureInput]);\n\tconst disabled = disabledOption ?? !normalizedSignature;\n\tconst statusQuery = useSignatureStatus(signatureInput, {\n\t\t...restStatusOptions,\n\t\trefreshInterval: refreshInterval ?? 2_000,\n\t\tdisabled,\n\t});\n\tconst [subscriptionSettled, setSubscriptionSettled] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (normalizedSignature === undefined) {\n\t\t\tsetSubscriptionSettled(false);\n\t\t\treturn;\n\t\t}\n\t\tsetSubscriptionSettled(false);\n\t}, [normalizedSignature]);\n\n\tuseEffect(() => {\n\t\tif (!normalizedSignature || disabled || !subscribe) {\n\t\t\treturn;\n\t\t}\n\t\tconst subscription = client.watchers.watchSignature(\n\t\t\t{\n\t\t\t\tcommitment: subscribeCommitment,\n\t\t\t\tenableReceivedNotification: true,\n\t\t\t\tsignature: normalizedSignature,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tsetSubscriptionSettled(true);\n\t\t\t},\n\t\t);\n\t\treturn () => {\n\t\t\tsubscription.abort();\n\t\t};\n\t}, [client, disabled, normalizedSignature, subscribe, subscribeCommitment]);\n\n\tconst hasSignature = Boolean(normalizedSignature) && !disabled;\n\tconst signatureError = statusQuery.signatureStatus?.err ?? null;\n\tconst waitError = statusQuery.error ?? signatureError ?? null;\n\tconst meetsCommitment = confirmationMeetsCommitment(statusQuery.confirmationStatus, commitment);\n\tconst settled = subscriptionSettled || meetsCommitment;\n\n\tlet waitStatus: SignatureWaitStatus = 'idle';\n\tif (!hasSignature) {\n\t\twaitStatus = 'idle';\n\t} else if (waitError) {\n\t\twaitStatus = 'error';\n\t} else if (settled) {\n\t\twaitStatus = 'success';\n\t} else {\n\t\twaitStatus = 'waiting';\n\t}\n\n\treturn {\n\t\t...statusQuery,\n\t\tisError: waitStatus === 'error',\n\t\tisSuccess: waitStatus === 'success',\n\t\tisWaiting: waitStatus === 'waiting',\n\t\twaitError,\n\t\twaitStatus,\n\t};\n}\n","'use client';\n\nimport type { JSX, ReactNode } from 'react';\nimport { useMemo, useRef } from 'react';\nimport { type Cache, SWRConfig, type SWRConfiguration } from 'swr';\n\nimport { QuerySuspenseContext } from './querySuspenseContext';\nimport { useClientStore } from './useClientStore';\n\nconst createCache = (): Cache => new Map<string, unknown>() as Cache;\n\nconst DEFAULT_QUERY_CONFIG: SWRConfiguration = Object.freeze({\n\tdedupingInterval: 1_000,\n\tfocusThrottleInterval: 1_000,\n\tprovider: () => createCache(),\n\trevalidateOnFocus: false,\n\trevalidateOnReconnect: true,\n});\n\ntype SolanaQueryProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tconfig?: SWRConfiguration;\n\tresetOnClusterChange?: boolean;\n\tsuspense?: boolean;\n}>;\n\nexport function SolanaQueryProvider({\n\tchildren,\n\tconfig,\n\tresetOnClusterChange = true,\n\tsuspense,\n}: SolanaQueryProviderProps): JSX.Element {\n\tconst cluster = useClientStore((state) => state.cluster);\n\tconst cacheRegistryRef = useRef<Map<string, Cache>>(new Map());\n\tconst cacheKey = resetOnClusterChange ? `${cluster.endpoint}|${cluster.commitment}` : 'global';\n\tconst cache = useMemo<Cache>(() => {\n\t\tconst registry = cacheRegistryRef.current;\n\t\tif (!resetOnClusterChange) {\n\t\t\tconst existing = registry.get('global');\n\t\t\tif (existing) {\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t\tconst next = createCache();\n\t\t\tregistry.set('global', next);\n\t\t\treturn next;\n\t\t}\n\t\tconst next = createCache();\n\t\tregistry.set(cacheKey, next);\n\t\treturn next;\n\t}, [cacheKey, resetOnClusterChange]);\n\n\tconst value = useMemo<SWRConfiguration>(() => {\n\t\tconst base = {\n\t\t\t...DEFAULT_QUERY_CONFIG,\n\t\t\t...config,\n\t\t};\n\t\tif (!config?.provider) {\n\t\t\tbase.provider = () => cache;\n\t\t}\n\t\tif (base.suspense === undefined && suspense !== undefined) {\n\t\t\tbase.suspense = suspense;\n\t\t}\n\t\treturn base;\n\t}, [cache, config, suspense]);\n\n\treturn (\n\t\t<QuerySuspenseContext.Provider value={suspense}>\n\t\t\t<SWRConfig value={value}>{children}</SWRConfig>\n\t\t</QuerySuspenseContext.Provider>\n\t);\n}\n","'use client';\n\nimport type { SolanaClient, SolanaClientConfig } from '@solana/client';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { SWRConfiguration } from 'swr';\n\nimport { SolanaClientProvider, useSolanaClient } from './context';\nimport { useConnectWallet, useWallet } from './hooks';\nimport { SolanaQueryProvider } from './QueryProvider';\n\ntype QueryLayerConfig = Readonly<{\n\tconfig?: SWRConfiguration;\n\tresetOnClusterChange?: boolean;\n\tsuspense?: boolean;\n\tdisabled?: boolean;\n}>;\n\ntype StorageAdapter = Readonly<{\n\tgetItem(key: string): string | null;\n\tremoveItem(key: string): void;\n\tsetItem(key: string, value: string): void;\n}>;\n\ntype WalletPersistenceConfig = Readonly<{\n\tautoConnect?: boolean;\n\tstorage?: StorageAdapter | null;\n\tstorageKey?: string;\n}>;\n\ntype SolanaProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tclient?: SolanaClient;\n\tconfig?: SolanaClientConfig;\n\tquery?: QueryLayerConfig | false;\n\twalletPersistence?: WalletPersistenceConfig | false;\n}>;\n\n/**\n * Convenience provider that composes {@link SolanaClientProvider} with {@link SolanaQueryProvider}.\n *\n * Useful when you want one drop-in wrapper that handles client setup plus SWR configuration without\n * introducing any additional contexts.\n */\nexport function SolanaProvider({ children, client, config, query, walletPersistence }: SolanaProviderProps) {\n\tconst shouldIncludeQueryLayer = query !== false && query?.disabled !== true;\n\tconst queryProps: QueryLayerConfig = shouldIncludeQueryLayer && query ? query : {};\n\tconst persistenceConfig = walletPersistence === false ? undefined : (walletPersistence ?? {});\n\n\tconst content = shouldIncludeQueryLayer ? (\n\t\t<SolanaQueryProvider\n\t\t\tconfig={queryProps.config}\n\t\t\tresetOnClusterChange={queryProps.resetOnClusterChange}\n\t\t\tsuspense={queryProps.suspense}\n\t\t>\n\t\t\t{children}\n\t\t</SolanaQueryProvider>\n\t) : (\n\t\tchildren\n\t);\n\n\treturn (\n\t\t<SolanaClientProvider client={client} config={config}>\n\t\t\t{persistenceConfig ? <WalletPersistence {...persistenceConfig} /> : null}\n\t\t\t{content}\n\t\t</SolanaClientProvider>\n\t);\n}\n\nconst DEFAULT_STORAGE_KEY = 'solana:last-connector';\n\nfunction WalletPersistence({ autoConnect = true, storage, storageKey = DEFAULT_STORAGE_KEY }: WalletPersistenceConfig) {\n\tconst wallet = useWallet();\n\tconst connectWallet = useConnectWallet();\n\tconst client = useSolanaClient();\n\tconst storageRef = useRef<StorageAdapter | null>(storage ?? getDefaultStorage());\n\tconst [hasAttemptedAutoConnect, setHasAttemptedAutoConnect] = useState(false);\n\tconst hasPersistedConnectorRef = useRef(false);\n\tconst clientRef = useRef<SolanaClient | null>(null);\n\n\tuseEffect(() => {\n\t\tstorageRef.current = storage ?? getDefaultStorage();\n\t}, [storage]);\n\n\tuseEffect(() => {\n\t\tif (clientRef.current !== client) {\n\t\t\tclientRef.current = client;\n\t\t\tsetHasAttemptedAutoConnect(false);\n\t\t}\n\t}, [client]);\n\n\tuseEffect(() => {\n\t\tconst activeStorage = storageRef.current;\n\t\tif (!activeStorage) return;\n\t\tif ('connectorId' in wallet && wallet.connectorId) {\n\t\t\tconst connectorId = wallet.connectorId;\n\t\t\tif (connectorId) {\n\t\t\t\tsafelyWrite(() => activeStorage.setItem(storageKey, connectorId));\n\t\t\t\thasPersistedConnectorRef.current = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (wallet.status === 'disconnected' && hasPersistedConnectorRef.current) {\n\t\t\tsafelyWrite(() => activeStorage.removeItem(storageKey));\n\t\t\thasPersistedConnectorRef.current = false;\n\t\t}\n\t}, [storageKey, wallet]);\n\n\tuseEffect(() => {\n\t\tif (!autoConnect || hasAttemptedAutoConnect) {\n\t\t\treturn;\n\t\t}\n\t\tif (wallet.status === 'connected' || wallet.status === 'connecting') {\n\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\treturn;\n\t\t}\n\t\tconst activeStorage = storageRef.current;\n\t\tif (!activeStorage) {\n\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\t\tconst connectorId = safelyRead(() => activeStorage.getItem(storageKey));\n\t\tif (!connectorId) {\n\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\treturn;\n\t\t}\n\n\t\tconst connector = client.connectors.get(connectorId);\n\t\tif (!connector) {\n\t\t\t// Connector not yet registered; wait for the client to refresh.\n\t\t\treturn;\n\t\t}\n\n\t\tvoid (async () => {\n\t\t\ttry {\n\t\t\t\tawait connectWallet(connectorId, { autoConnect: true });\n\t\t\t} catch {\n\t\t\t\t// Ignore auto-connect failures; consumers can handle manual retries via hooks.\n\t\t\t} finally {\n\t\t\t\tif (!cancelled) {\n\t\t\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [autoConnect, client, connectWallet, hasAttemptedAutoConnect, storageKey, wallet.status]);\n\n\treturn null;\n}\n\nfunction safelyRead(reader: () => string | null): string | null {\n\ttry {\n\t\treturn reader();\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction safelyWrite(writer: () => void) {\n\ttry {\n\t\twriter();\n\t} catch {\n\t\t// Ignore write failures (private browsing, SSR, etc.).\n\t}\n}\n\nfunction getDefaultStorage(): StorageAdapter | null {\n\tif (typeof globalThis !== 'object' || globalThis === null) {\n\t\treturn null;\n\t}\n\tconst candidate = (globalThis as Record<string, unknown>).localStorage as StorageAdapter | undefined;\n\tif (!candidate) {\n\t\treturn null;\n\t}\n\treturn candidate;\n}\n","import type { WalletConnector, WalletSession, WalletStatus } from '@solana/client';\nimport type { ReactNode } from 'react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport {\n\tuseConnectWallet,\n\tuseDisconnectWallet,\n\tuseWallet,\n\tuseWalletStandardConnectors,\n\ttype WalletStandardDiscoveryOptions,\n} from './hooks';\n\ntype WalletConnectionState = Readonly<{\n\tconnect(connectorId: string, options?: Readonly<{ autoConnect?: boolean }>): Promise<void>;\n\tconnected: boolean;\n\tconnecting: boolean;\n\tconnectors: readonly WalletConnector[];\n\tconnectorId?: string;\n\tdisconnect(): Promise<void>;\n\terror: unknown;\n\tstatus: WalletStatus['status'];\n\twallet: WalletSession | undefined;\n}>;\n\ntype UseWalletConnectionOptions = Readonly<{\n\tconnectors?: readonly WalletConnector[];\n\tdiscoveryOptions?: WalletStandardDiscoveryOptions;\n}>;\n\n/**\n * Collects everything needed to build wallet connection UIs into a single hook.\n */\nexport function useWalletConnection(options: UseWalletConnectionOptions = {}): WalletConnectionState {\n\tconst wallet = useWallet();\n\tconst connectWallet = useConnectWallet();\n\tconst disconnectWallet = useDisconnectWallet();\n\tconst discovered = useWalletStandardConnectors(options.discoveryOptions);\n\n\tconst connectors = options.connectors ?? discovered;\n\tconst connect = useCallback(\n\t\t(connectorId: string, connectOptions?: Readonly<{ autoConnect?: boolean }>) =>\n\t\t\tconnectWallet(connectorId, connectOptions),\n\t\t[connectWallet],\n\t);\n\tconst disconnect = useCallback(() => disconnectWallet(), [disconnectWallet]);\n\n\tconst state = useMemo<WalletConnectionState>(() => {\n\t\tconst connectorId = 'connectorId' in wallet ? wallet.connectorId : undefined;\n\t\tconst session: WalletSession | undefined = wallet.status === 'connected' ? wallet.session : undefined;\n\t\tconst error = wallet.status === 'error' ? (wallet.error ?? null) : null;\n\n\t\treturn {\n\t\t\tconnect,\n\t\t\tconnected: wallet.status === 'connected',\n\t\t\tconnecting: wallet.status === 'connecting',\n\t\t\tconnectors,\n\t\t\tconnectorId,\n\t\t\tdisconnect,\n\t\t\terror,\n\t\t\tstatus: wallet.status,\n\t\t\twallet: session,\n\t\t};\n\t}, [connect, connectors, disconnect, wallet]);\n\n\treturn state;\n}\n\ntype WalletConnectionManagerProps = Readonly<{\n\tchildren: (state: WalletConnectionState) => ReactNode;\n\tconnectors?: readonly WalletConnector[];\n\tdiscoveryOptions?: WalletStandardDiscoveryOptions;\n}>;\n\n/**\n * Render-prop helper that lets you easily wire wallet status into custom UIs.\n */\nexport function WalletConnectionManager({ children, connectors, discoveryOptions }: WalletConnectionManagerProps) {\n\tconst state = useWalletConnection({ connectors, discoveryOptions });\n\treturn <>{children(state)}</>;\n}\n\ntype UseWalletModalStateOptions = UseWalletConnectionOptions &\n\tReadonly<{\n\t\tcloseOnConnect?: boolean;\n\t\tinitialOpen?: boolean;\n\t}>;\n\nexport type WalletModalState = WalletConnectionState &\n\tReadonly<{\n\t\tclose(): void;\n\t\tisOpen: boolean;\n\t\topen(): void;\n\t\tselectedConnector: string | null;\n\t\tselect(connectorId: string | null): void;\n\t\ttoggle(): void;\n\t}>;\n\n/**\n * Small state machine for wallet selection modals – keeps track of modal visibility and the currently\n * highlighted connector while reusing the connection state returned by {@link useWalletConnection}.\n */\nexport function useWalletModalState(options: UseWalletModalStateOptions = {}): WalletModalState {\n\tconst connection = useWalletConnection(options);\n\tconst [isOpen, setIsOpen] = useState(options.initialOpen ?? false);\n\tconst [selectedConnector, setSelectedConnector] = useState<string | null>(null);\n\tconst closeOnConnect = options.closeOnConnect ?? true;\n\n\tconst open = useCallback(() => setIsOpen(true), []);\n\tconst close = useCallback(() => setIsOpen(false), []);\n\tconst toggle = useCallback(() => setIsOpen((value) => !value), []);\n\tconst select = useCallback((connectorId: string | null) => setSelectedConnector(connectorId), []);\n\n\tconst connect = useCallback(\n\t\tasync (connectorId: string, connectOptions?: Readonly<{ autoConnect?: boolean }>) => {\n\t\t\tawait connection.connect(connectorId, connectOptions);\n\t\t\tsetSelectedConnector(connectorId);\n\t\t\tif (closeOnConnect) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t},\n\t\t[closeOnConnect, connection],\n\t);\n\n\treturn {\n\t\t...connection,\n\t\tclose,\n\t\tconnect,\n\t\tisOpen,\n\t\topen,\n\t\tselectedConnector,\n\t\tselect,\n\t\ttoggle,\n\t};\n}\n","import { type Address, address } from '@solana/addresses';\nimport type { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport type { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport type {\n\tMessageModifyingSigner,\n\tSignableMessage,\n\tTransactionModifyingSigner,\n\tTransactionSendingSigner,\n} from '@solana/signers';\nimport { getCompiledTransactionMessageDecoder } from '@solana/transaction-messages';\nimport type { Transaction, TransactionWithinSizeLimit, TransactionWithLifetime } from '@solana/transactions';\nimport {\n\tassertIsTransactionWithinSizeLimit,\n\tgetTransactionCodec,\n\tgetTransactionEncoder,\n\tgetTransactionLifetimeConstraintFromCompiledTransactionMessage,\n} from '@solana/transactions';\nimport {\n\tSolanaSignAndSendTransaction,\n\ttype SolanaSignAndSendTransactionFeature,\n\ttype SolanaSignAndSendTransactionInput,\n\ttype SolanaSignAndSendTransactionOutput,\n\tSolanaSignIn,\n\ttype SolanaSignInFeature,\n\ttype SolanaSignInInput,\n\ttype SolanaSignInOutput,\n\tSolanaSignMessage,\n\ttype SolanaSignMessageFeature,\n\ttype SolanaSignMessageInput,\n\ttype SolanaSignMessageOutput,\n\tSolanaSignTransaction,\n\ttype SolanaSignTransactionFeature,\n\ttype SolanaSignTransactionInput,\n\ttype SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport type { IdentifierArray } from '@wallet-standard/base';\nimport {\n\tWALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n\tWalletStandardError,\n} from '@wallet-standard/errors';\nimport type { UiWallet, UiWalletAccount, UiWalletHandle } from '@wallet-standard/ui';\nimport { getWalletAccountFeature, getWalletFeature } from '@wallet-standard/ui';\nimport {\n\tgetOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n\tgetWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n\tgetWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback, useMemo, useRef } from 'react';\n\ntype AssertSolanaChain<T> = T extends `solana:${string}` ? T : never;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport type OnlySolanaChains<T extends IdentifierArray> = T extends IdentifierArray\n\t? AssertSolanaChain<T[number]>\n\t: never;\n\ntype SignAndSendInput = Readonly<\n\tOmit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n\t\toptions?: Readonly<{\n\t\t\tminContextSlot?: bigint;\n\t\t}>;\n\t}\n>;\ntype SignAndSendOutput = SolanaSignAndSendTransactionOutput;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: SignAndSendInput) => Promise<SignAndSendOutput>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignAndSendInput) => Promise<SignAndSendOutput>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignAndSendInput) => Promise<SignAndSendOutput> {\n\tconst signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signAndSendTransactions(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signAndSendTransactions],\n\t);\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (...inputs: readonly SignAndSendInput[]) => Promise<readonly SignAndSendOutput[]> {\n\tif (!uiWalletAccount.chains.includes(chain)) {\n\t\tthrow new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n\t\t\taddress: uiWalletAccount.address,\n\t\t\tchain,\n\t\t\tfeatureName: SolanaSignAndSendTransaction,\n\t\t\tsupportedChains: [...uiWalletAccount.chains],\n\t\t\tsupportedFeatures: [...uiWalletAccount.features],\n\t\t});\n\t}\n\tconst signAndSendTransactionFeature = getWalletAccountFeature(\n\t\tuiWalletAccount,\n\t\tSolanaSignAndSendTransaction,\n\t) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n\tconst account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n\t\t\t\tconst minContextSlot = options?.minContextSlot;\n\t\t\t\treturn {\n\t\t\t\t\t...rest,\n\t\t\t\t\taccount,\n\t\t\t\t\tchain,\n\t\t\t\t\t...(minContextSlot != null\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tminContextSlot: Number(minContextSlot),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null),\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n\t\t\treturn results;\n\t\t},\n\t\t[account, chain, signAndSendTransactionFeature],\n\t);\n}\n\ntype SignInInput = SolanaSignInInput;\ntype SignInOutput = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n\tReadonly<{\n\t\taccount: UiWalletAccount;\n\t}>;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignIn(\n\tuiWalletAccount: UiWalletAccount,\n): (input?: Omit<SignInInput, 'address'>) => Promise<SignInOutput>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignIn(uiWallet: UiWallet): (input?: SignInInput) => Promise<SignInOutput>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: SignInInput) => Promise<SignInOutput> {\n\tconst signIns = useSignIns(uiWalletHandle);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signIns(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signIns],\n\t);\n}\n\nfunction useSignIns(\n\tuiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (SignInInput | undefined)[]) => Promise<readonly SignInOutput[]> {\n\tlet signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n\tif ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n\t\tgetWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n\t\tsignMessageFeature = getWalletAccountFeature(\n\t\t\tuiWalletHandle as UiWalletAccount,\n\t\t\tSolanaSignIn,\n\t\t) as SolanaSignInFeature[typeof SolanaSignIn];\n\t} else {\n\t\tsignMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n\t}\n\tconst wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithAddressAndChainId = inputs.map((input) => ({\n\t\t\t\t...input,\n\t\t\t\t// Prioritize the `UiWalletAccount` address if it exists.\n\t\t\t\t...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n\t\t\t}));\n\t\t\tconst results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n\t\t\tconst resultsWithoutSignatureType = results.map(\n\t\t\t\t({\n\t\t\t\t\taccount,\n\t\t\t\t\tsignatureType: _signatureType, // Solana signatures are always of type `ed25519` so drop this property.\n\t\t\t\t\t...rest\n\t\t\t\t}) => ({\n\t\t\t\t\t...rest,\n\t\t\t\t\taccount: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n\t\t\t\t\t\twallet,\n\t\t\t\t\t\taccount,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn resultsWithoutSignatureType;\n\t\t},\n\t\t[signMessageFeature, uiWalletHandle, wallet],\n\t);\n}\n\ntype SignMessageInput = Omit<SolanaSignMessageInput, 'account'>;\ntype SignMessageOutput = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n\t...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: SignMessageInput) => Promise<SignMessageOutput> {\n\tconst signMessages = useSignMessages(...config);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signMessages(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signMessages],\n\t);\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n): (...inputs: readonly SignMessageInput[]) => Promise<readonly SignMessageOutput[]> {\n\tconst signMessageFeature = getWalletAccountFeature(\n\t\tuiWalletAccount,\n\t\tSolanaSignMessage,\n\t) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n\tconst account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithAccount = inputs.map((input) => ({ ...input, account }));\n\t\t\tconst results = await signMessageFeature.signMessage(...inputsWithAccount);\n\t\t\tconst resultsWithoutSignatureType = results.map(\n\t\t\t\t({\n\t\t\t\t\tsignatureType: _signatureType, // Solana signatures are always of type `ed25519` so drop this property.\n\t\t\t\t\t...rest\n\t\t\t\t}) => rest,\n\t\t\t);\n\t\t\treturn resultsWithoutSignatureType;\n\t\t},\n\t\t[signMessageFeature, account],\n\t);\n}\n\ntype SignTransactionInput = Readonly<\n\tOmit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n\t\toptions?: Readonly<{\n\t\t\tminContextSlot?: bigint;\n\t\t}>;\n\t}\n>;\ntype SignTransactionOutput = SolanaSignTransactionOutput;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: SignTransactionInput) => Promise<SignTransactionOutput>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignTransactionInput) => Promise<SignTransactionOutput>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignTransactionInput) => Promise<SignTransactionOutput> {\n\tconst signTransactions = useSignTransactions(uiWalletAccount, chain);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signTransactions(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signTransactions],\n\t);\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (...inputs: readonly SignTransactionInput[]) => Promise<readonly SignTransactionOutput[]> {\n\tif (!uiWalletAccount.chains.includes(chain)) {\n\t\tthrow new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n\t\t\taddress: uiWalletAccount.address,\n\t\t\tchain,\n\t\t\tfeatureName: SolanaSignAndSendTransaction,\n\t\t\tsupportedChains: [...uiWalletAccount.chains],\n\t\t\tsupportedFeatures: [...uiWalletAccount.features],\n\t\t});\n\t}\n\tconst signTransactionFeature = getWalletAccountFeature(\n\t\tuiWalletAccount,\n\t\tSolanaSignTransaction,\n\t) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n\tconst account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n\t\t\t\tconst minContextSlot = options?.minContextSlot;\n\t\t\t\treturn {\n\t\t\t\t\t...rest,\n\t\t\t\t\taccount,\n\t\t\t\t\tchain,\n\t\t\t\t\t...(minContextSlot != null\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tminContextSlot: Number(minContextSlot),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null),\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n\t\t\treturn results;\n\t\t},\n\t\t[signTransactionFeature, account, chain],\n\t);\n}\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n\tconst signMessage = useSignMessage(uiWalletAccount);\n\treturn useMemo(\n\t\t() => ({\n\t\t\taddress: address(uiWalletAccount.address),\n\t\t\tasync modifyAndSignMessages(messages, config) {\n\t\t\t\tconfig?.abortSignal?.throwIfAborted();\n\t\t\t\tif (messages.length > 1) {\n\t\t\t\t\tthrow new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n\t\t\t\t}\n\t\t\t\tif (messages.length === 0) {\n\t\t\t\t\treturn messages;\n\t\t\t\t}\n\t\t\t\tconst { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n\t\t\t\tconst input = {\n\t\t\t\t\tmessage: originalMessage,\n\t\t\t\t};\n\t\t\t\tconst { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n\t\t\t\tconst messageWasModified =\n\t\t\t\t\toriginalMessage.length !== signedMessage.length ||\n\t\t\t\t\toriginalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n\t\t\t\tconst originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n\t\t\t\t\t| SignatureBytes\n\t\t\t\t\t| undefined;\n\t\t\t\tconst signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n\t\t\t\tif (!signatureIsNew && !messageWasModified) {\n\t\t\t\t\treturn messages;\n\t\t\t\t}\n\t\t\t\tconst nextSignatureMap = messageWasModified\n\t\t\t\t\t? { [uiWalletAccount.address]: signature }\n\t\t\t\t\t: { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n\t\t\t\tconst outputMessages = Object.freeze([\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tcontent: signedMessage,\n\t\t\t\t\t\tsignatures: Object.freeze(nextSignatureMap),\n\t\t\t\t\t}) as SignableMessage,\n\t\t\t\t]);\n\t\t\t\treturn outputMessages;\n\t\t\t},\n\t\t}),\n\t\t[uiWalletAccount, signMessage],\n\t);\n}\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n\tconst encoderRef = useRef<ReturnType<typeof getTransactionCodec> | null>(null);\n\tconst signTransaction = useSignTransaction(uiWalletAccount, chain);\n\treturn useMemo(\n\t\t() => ({\n\t\t\taddress: address(uiWalletAccount.address),\n\t\t\tasync modifyAndSignTransactions(transactions, config = {}) {\n\t\t\t\tconst { abortSignal, ...options } = config;\n\t\t\t\tabortSignal?.throwIfAborted();\n\t\t\t\tlet transactionCodec = encoderRef.current;\n\t\t\t\tif (!transactionCodec) {\n\t\t\t\t\ttransactionCodec = getTransactionCodec();\n\t\t\t\t\tencoderRef.current = transactionCodec;\n\t\t\t\t}\n\t\t\t\tif (transactions.length > 1) {\n\t\t\t\t\tthrow new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n\t\t\t\t}\n\t\t\t\tif (transactions.length === 0) {\n\t\t\t\t\treturn transactions as readonly (Transaction &\n\t\t\t\t\t\tTransactionWithinSizeLimit &\n\t\t\t\t\t\tTransactionWithLifetime)[];\n\t\t\t\t}\n\t\t\t\tconst [transaction] = transactions;\n\t\t\t\tconst wireTransactionBytes = transactionCodec.encode(transaction);\n\t\t\t\tconst inputWithOptions = {\n\t\t\t\t\t...options,\n\t\t\t\t\ttransaction: wireTransactionBytes as Uint8Array,\n\t\t\t\t};\n\t\t\t\tconst { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n\t\t\t\tconst decodedSignedTransaction = transactionCodec.decode(\n\t\t\t\t\tsignedTransaction,\n\t\t\t\t) as (typeof transactions)[number];\n\n\t\t\t\tassertIsTransactionWithinSizeLimit(decodedSignedTransaction);\n\n\t\t\t\tconst existingLifetime =\n\t\t\t\t\t'lifetimeConstraint' in transaction\n\t\t\t\t\t\t? (transaction as TransactionWithLifetime).lifetimeConstraint\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tif (existingLifetime) {\n\t\t\t\t\tif (uint8ArraysEqual(decodedSignedTransaction.messageBytes, transaction.messageBytes)) {\n\t\t\t\t\t\treturn Object.freeze([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...decodedSignedTransaction,\n\t\t\t\t\t\t\t\tlifetimeConstraint: existingLifetime,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst compiledTransactionMessage = getCompiledTransactionMessageDecoder().decode(\n\t\t\t\t\t\tdecodedSignedTransaction.messageBytes,\n\t\t\t\t\t);\n\t\t\t\t\tconst currentToken =\n\t\t\t\t\t\t'blockhash' in existingLifetime ? existingLifetime.blockhash : existingLifetime.nonce;\n\n\t\t\t\t\tif (compiledTransactionMessage.lifetimeToken === currentToken) {\n\t\t\t\t\t\treturn Object.freeze([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...decodedSignedTransaction,\n\t\t\t\t\t\t\t\tlifetimeConstraint: existingLifetime,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst compiledTransactionMessage = getCompiledTransactionMessageDecoder().decode(\n\t\t\t\t\tdecodedSignedTransaction.messageBytes,\n\t\t\t\t);\n\t\t\t\tconst lifetimeConstraint =\n\t\t\t\t\tawait getTransactionLifetimeConstraintFromCompiledTransactionMessage(compiledTransactionMessage);\n\t\t\t\treturn Object.freeze([\n\t\t\t\t\t{\n\t\t\t\t\t\t...decodedSignedTransaction,\n\t\t\t\t\t\tlifetimeConstraint,\n\t\t\t\t\t},\n\t\t\t\t]);\n\t\t\t},\n\t\t}),\n\t\t[uiWalletAccount.address, signTransaction],\n\t);\n}\n\nfunction uint8ArraysEqual(arr1: ReadonlyUint8Array, arr2: ReadonlyUint8Array) {\n\treturn arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);\n}\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n\tconst encoderRef = useRef<ReturnType<typeof getTransactionEncoder> | null>(null);\n\tconst signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n\treturn useMemo(\n\t\t() => ({\n\t\t\taddress: address(uiWalletAccount.address),\n\t\t\tasync signAndSendTransactions(transactions, config = {}) {\n\t\t\t\tconst { abortSignal, ...options } = config;\n\t\t\t\tabortSignal?.throwIfAborted();\n\t\t\t\tlet transactionEncoder = encoderRef.current;\n\t\t\t\tif (!transactionEncoder) {\n\t\t\t\t\ttransactionEncoder = getTransactionEncoder();\n\t\t\t\t\tencoderRef.current = transactionEncoder;\n\t\t\t\t}\n\t\t\t\tif (transactions.length > 1) {\n\t\t\t\t\tthrow new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n\t\t\t\t}\n\t\t\t\tif (transactions.length === 0) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tconst [transaction] = transactions;\n\t\t\t\tconst wireTransactionBytes = transactionEncoder.encode(transaction);\n\t\t\t\tconst inputWithOptions = {\n\t\t\t\t\t...options,\n\t\t\t\t\ttransaction: wireTransactionBytes as Uint8Array,\n\t\t\t\t};\n\t\t\t\tconst { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n\t\t\t\treturn Object.freeze([signature as SignatureBytes]);\n\t\t\t},\n\t\t}),\n\t\t[signAndSendTransaction, uiWalletAccount.address],\n\t);\n}\n"]}
1
+ {"version":3,"sources":["../src/context.tsx","../src/querySuspenseContext.ts","../src/useClientStore.ts","../src/query.ts","../src/queryHooks.ts","../src/hooks.ts","../src/QueryProvider.tsx","../src/SolanaProvider.tsx","../src/ui.tsx","../src/walletStandardHooks.ts"],"names":["createContext","client","useMemo","createClient","useEffect","useContext","useStore","useSWR","useState","useCallback","address","toAddress","toAddressString","stableStringify","getBase64EncodedWireTransaction","useRef","createSolTransferController","useSyncExternalStore","createSplTransferController","getWalletStandardConnectors","watchWalletStandardConnectors","createTransactionPoolController","createInitialAsyncState","createAsyncState","normalizeSignature","SIGNATURE_STATUS_TIMEOUT_MS","deriveConfirmationStatus","confirmationMeetsCommitment","next","jsx","SWRConfig","jsxs","Fragment","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","SolanaError","SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED","getAbortablePromise","transactions","getTransactionCodec","assertIsTransactionWithinSizeLimit","compiledTransactionMessage","getCompiledTransactionMessageDecoder","getTransactionLifetimeConstraintFromCompiledTransactionMessage","getTransactionEncoder"],"mappings":"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","file":"index.node.cjs","sourcesContent":["import { createClient, type SolanaClient, type SolanaClientConfig } from '@solana/client';\nimport type { ReactNode } from 'react';\nimport { createContext, useContext, useEffect, useMemo } from 'react';\n\nconst SolanaClientContext = createContext<SolanaClient | null>(null);\n\ntype ProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tclient?: SolanaClient;\n\tconfig?: SolanaClientConfig;\n}>;\n\n/**\n * Provides a {@link SolanaClient} instance to descendant components.\n *\n * Supply either an existing `client` or a configuration object used to lazily\n * construct an instance via {@link createClient}.\n */\nexport function SolanaClientProvider({ children, client: providedClient, config }: ProviderProps) {\n\tconst client = useMemo(() => {\n\t\tif (providedClient) {\n\t\t\treturn providedClient;\n\t\t}\n\t\tif (!config) {\n\t\t\tthrow new Error('SolanaClientProvider requires either a `client` or `config` prop.');\n\t\t}\n\t\treturn createClient(config);\n\t}, [config, providedClient]);\n\n\tuseEffect(() => {\n\t\tif (providedClient) {\n\t\t\treturn;\n\t\t}\n\t\treturn () => {\n\t\t\tclient.destroy();\n\t\t};\n\t}, [client, providedClient]);\n\n\treturn <SolanaClientContext.Provider value={client}>{children}</SolanaClientContext.Provider>;\n}\n\n/**\n * Access the {@link SolanaClient} from the nearest {@link SolanaClientProvider}.\n *\n * @throws If used outside of a provider.\n */\nexport function useSolanaClient(): SolanaClient {\n\tconst client = useContext(SolanaClientContext);\n\tif (!client) {\n\t\tthrow new Error('useSolanaClient must be used within a SolanaClientProvider.');\n\t}\n\treturn client;\n}\n","import { createContext, useContext } from 'react';\n\nconst QuerySuspenseContext = createContext<boolean | undefined>(undefined);\n\nexport function useQuerySuspensePreference(): boolean | undefined {\n\treturn useContext(QuerySuspenseContext);\n}\n\nexport { QuerySuspenseContext };\n","import type { ClientState } from '@solana/client';\nimport { useStore } from 'zustand';\n\nimport { useSolanaClient } from './context';\n\ntype Selector<T> = (state: ClientState) => T;\nconst identitySelector = (state: ClientState): ClientState => state;\n\nexport function useClientStore(): ClientState;\nexport function useClientStore<T>(selector: Selector<T>): T;\n/**\n * Subscribe to the underlying Zustand store exposed by {@link SolanaClient}.\n *\n * @param selector - Derives the slice of state to observe. Defaults to the entire state.\n * @returns Selected state slice that triggers re-render when it changes.\n */\nexport function useClientStore<T>(selector?: Selector<T>): ClientState | T {\n\tconst client = useSolanaClient();\n\tconst appliedSelector = selector ?? (identitySelector as Selector<T>);\n\tconst slice = useStore(client.store, appliedSelector);\n\treturn selector ? slice : (slice as unknown as ClientState);\n}\n","import type { SolanaClient } from '@solana/client';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport useSWR, { type BareFetcher, type SWRConfiguration, type SWRResponse } from 'swr';\n\nimport { useSolanaClient } from './context';\nimport { useQuerySuspensePreference } from './querySuspenseContext';\nimport { useClientStore } from './useClientStore';\n\nconst QUERY_NAMESPACE = '@solana/react-hooks';\n\nexport type QueryStatus = 'error' | 'idle' | 'loading' | 'success';\n\nexport type UseSolanaRpcQueryOptions<Data> = Omit<\n\tSWRConfiguration<Data, unknown, BareFetcher<Data>>,\n\t'fallback' | 'suspense'\n> &\n\tReadonly<{\n\t\tdisabled?: boolean;\n\t}>;\n\nexport type SolanaQueryResult<Data> = Readonly<{\n\tdata: Data | undefined;\n\tdataUpdatedAt?: number;\n\terror: unknown;\n\tisError: boolean;\n\tisLoading: boolean;\n\tisSuccess: boolean;\n\tisValidating: boolean;\n\tmutate: SWRResponse<Data>['mutate'];\n\trefresh(): Promise<Data | undefined>;\n\tstatus: QueryStatus;\n}>;\n\nexport function useSolanaRpcQuery<Data>(\n\tscope: string,\n\targs: readonly unknown[],\n\tfetcher: (client: SolanaClient) => Promise<Data>,\n\toptions: UseSolanaRpcQueryOptions<Data> = {},\n): SolanaQueryResult<Data> {\n\tconst client = useSolanaClient();\n\tconst cluster = useClientStore((state) => state.cluster);\n\tconst { disabled = false, ...restOptions } = options;\n\tconst providerSuspensePreference = useQuerySuspensePreference();\n\tconst suspenseEnabled = !disabled && Boolean(providerSuspensePreference);\n\tconst swrOptions: SWRConfiguration<Data, unknown, BareFetcher<Data>> = {\n\t\t...restOptions,\n\t\tsuspense: suspenseEnabled,\n\t};\n\n\tconst key = useMemo(() => {\n\t\tif (disabled) {\n\t\t\treturn null;\n\t\t}\n\t\treturn [QUERY_NAMESPACE, scope, cluster.endpoint, cluster.commitment, ...args] as const;\n\t}, [cluster.commitment, cluster.endpoint, args, scope, disabled]);\n\n\tconst swr = useSWR<Data>(key, () => fetcher(client), swrOptions);\n\tconst [dataUpdatedAt, setDataUpdatedAt] = useState<number | undefined>(() =>\n\t\tswr.data !== undefined ? Date.now() : undefined,\n\t);\n\n\tuseEffect(() => {\n\t\tif (swr.data !== undefined) {\n\t\t\tsetDataUpdatedAt(Date.now());\n\t\t}\n\t}, [swr.data]);\n\n\tconst status: QueryStatus = swr.error\n\t\t? 'error'\n\t\t: swr.isLoading\n\t\t\t? 'loading'\n\t\t\t: swr.data !== undefined\n\t\t\t\t? 'success'\n\t\t\t\t: 'idle';\n\n\tconst refresh = useCallback(() => swr.mutate(undefined, { revalidate: true }), [swr.mutate]);\n\n\treturn {\n\t\tdata: swr.data,\n\t\tdataUpdatedAt,\n\t\terror: swr.error ?? null,\n\t\tisError: status === 'error',\n\t\tisLoading: swr.isLoading,\n\t\tisSuccess: status === 'success',\n\t\tisValidating: swr.isValidating,\n\t\tmutate: swr.mutate,\n\t\trefresh,\n\t\tstatus,\n\t};\n}\n","import { type AddressLike, type SolanaClient, stableStringify, toAddress, toAddressString } from '@solana/client';\nimport {\n\ttype Base64EncodedWireTransaction,\n\ttype Commitment,\n\tgetBase64EncodedWireTransaction,\n\ttype SendableTransaction,\n\ttype Transaction,\n} from '@solana/kit';\nimport { useCallback, useMemo } from 'react';\n\nimport type { SolanaQueryResult, UseSolanaRpcQueryOptions } from './query';\nimport { useSolanaRpcQuery } from './query';\n\ntype RpcInstance = SolanaClient['runtime']['rpc'];\n\ntype LatestBlockhashPlan = ReturnType<RpcInstance['getLatestBlockhash']>;\ntype LatestBlockhashResponse = Awaited<ReturnType<LatestBlockhashPlan['send']>>;\n\ntype ProgramAccountsPlan = ReturnType<RpcInstance['getProgramAccounts']>;\ntype ProgramAccountsConfig = Parameters<RpcInstance['getProgramAccounts']>[1];\ntype ProgramAccountsResponse = Awaited<ReturnType<ProgramAccountsPlan['send']>>;\n\ntype SimulateTransactionPlan = ReturnType<RpcInstance['simulateTransaction']>;\ntype SimulateTransactionConfig = Parameters<RpcInstance['simulateTransaction']>[1];\ntype SimulateTransactionResponse = Awaited<ReturnType<SimulateTransactionPlan['send']>>;\n\nconst DEFAULT_BLOCKHASH_REFRESH_INTERVAL = 30_000;\n\nexport type UseLatestBlockhashOptions = Omit<UseSolanaRpcQueryOptions<LatestBlockhashResponse>, 'refreshInterval'> &\n\tReadonly<{\n\t\tcommitment?: Commitment;\n\t\tminContextSlot?: bigint | number;\n\t\trefreshInterval?: number;\n\t}>;\n\nexport type LatestBlockhashQueryResult = SolanaQueryResult<LatestBlockhashResponse> &\n\tReadonly<{\n\t\tblockhash: string | null;\n\t\tcontextSlot: bigint | null | undefined;\n\t\tlastValidBlockHeight: bigint | null;\n\t}>;\n\nexport function useLatestBlockhash(options?: UseLatestBlockhashOptions): LatestBlockhashQueryResult {\n\tconst { commitment, minContextSlot, refreshInterval = DEFAULT_BLOCKHASH_REFRESH_INTERVAL, ...rest } = options ?? {};\n\tconst normalizedMinContextSlot = useMemo<bigint | undefined>(() => {\n\t\tif (minContextSlot === undefined) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn typeof minContextSlot === 'bigint' ? minContextSlot : BigInt(Math.floor(minContextSlot));\n\t}, [minContextSlot]);\n\tconst keyArgs = useMemo(\n\t\t() => [commitment ?? null, normalizedMinContextSlot ?? null],\n\t\t[commitment, normalizedMinContextSlot],\n\t);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tconst fallbackCommitment = commitment ?? client.store.getState().cluster.commitment;\n\t\t\tconst plan = client.runtime.rpc.getLatestBlockhash({\n\t\t\t\tcommitment: fallbackCommitment,\n\t\t\t\tminContextSlot: normalizedMinContextSlot,\n\t\t\t});\n\t\t\treturn plan.send({ abortSignal: AbortSignal.timeout(15_000) });\n\t\t},\n\t\t[commitment, normalizedMinContextSlot],\n\t);\n\tconst query = useSolanaRpcQuery<LatestBlockhashResponse>('latestBlockhash', keyArgs, fetcher, {\n\t\trefreshInterval,\n\t\t...rest,\n\t});\n\treturn {\n\t\t...query,\n\t\tblockhash: query.data?.value.blockhash ?? null,\n\t\tcontextSlot: query.data?.context.slot,\n\t\tlastValidBlockHeight: query.data?.value.lastValidBlockHeight ?? null,\n\t};\n}\n\nexport type UseProgramAccountsOptions = UseSolanaRpcQueryOptions<ProgramAccountsResponse> &\n\tReadonly<{\n\t\tcommitment?: Commitment;\n\t\tconfig?: ProgramAccountsConfig;\n\t}>;\n\nexport type ProgramAccountsQueryResult = SolanaQueryResult<ProgramAccountsResponse> &\n\tReadonly<{\n\t\taccounts: ProgramAccountsResponse;\n\t}>;\n\nexport function useProgramAccounts(\n\tprogramAddress?: AddressLike,\n\toptions?: UseProgramAccountsOptions,\n): ProgramAccountsQueryResult {\n\tconst { commitment, config, ...queryOptions } = options ?? {};\n\tconst { disabled: disabledOption, ...restQueryOptions } = queryOptions;\n\tconst address = useMemo(() => (programAddress ? toAddress(programAddress) : undefined), [programAddress]);\n\tconst addressKey = useMemo(() => (address ? toAddressString(address) : null), [address]);\n\tconst configKey = useMemo(() => stableStringify(config ?? null), [config]);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tif (!address) {\n\t\t\t\tthrow new Error('Provide a program address before querying program accounts.');\n\t\t\t}\n\t\t\tconst fallbackCommitment = commitment ?? config?.commitment ?? client.store.getState().cluster.commitment;\n\t\t\tconst mergedConfig = {\n\t\t\t\t...(config ?? {}),\n\t\t\t\tcommitment: fallbackCommitment,\n\t\t\t} satisfies ProgramAccountsConfig;\n\t\t\tconst plan = client.runtime.rpc.getProgramAccounts(address, mergedConfig);\n\t\t\treturn plan.send({ abortSignal: AbortSignal.timeout(20_000) });\n\t\t},\n\t\t[address, commitment, config],\n\t);\n\tconst disabled = disabledOption ?? !address;\n\tconst query = useSolanaRpcQuery<ProgramAccountsResponse>('programAccounts', [addressKey, configKey], fetcher, {\n\t\t...restQueryOptions,\n\t\tdisabled,\n\t});\n\treturn {\n\t\t...query,\n\t\taccounts: query.data ?? [],\n\t};\n}\n\nexport type UseSimulateTransactionOptions = Omit<\n\tUseSolanaRpcQueryOptions<SimulateTransactionResponse>,\n\t'refreshInterval'\n> &\n\tReadonly<{\n\t\tcommitment?: Commitment;\n\t\tconfig?: SimulateTransactionConfig;\n\t\trefreshInterval?: number;\n\t}>;\n\nexport type SimulateTransactionQueryResult = SolanaQueryResult<SimulateTransactionResponse> &\n\tReadonly<{\n\t\tlogs: readonly string[];\n\t}>;\n\ntype SimulationInput = (SendableTransaction & Transaction) | Base64EncodedWireTransaction | string;\n\nexport function useSimulateTransaction(\n\ttransaction?: SimulationInput | null,\n\toptions?: UseSimulateTransactionOptions,\n): SimulateTransactionQueryResult {\n\tconst { commitment, config, refreshInterval, ...rest } = options ?? {};\n\tconst { disabled: disabledOption, revalidateIfStale, revalidateOnFocus, ...queryOptions } = rest;\n\tconst wire = useMemo<Base64EncodedWireTransaction | null>(() => {\n\t\tif (!transaction) {\n\t\t\treturn null;\n\t\t}\n\t\tif (typeof transaction === 'string') {\n\t\t\treturn transaction as Base64EncodedWireTransaction;\n\t\t}\n\t\treturn getBase64EncodedWireTransaction(transaction);\n\t}, [transaction]);\n\tconst configKey = useMemo(() => stableStringify(config ?? null), [config]);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tif (!wire) {\n\t\t\t\tthrow new Error('Provide a transaction payload before simulating.');\n\t\t\t}\n\t\t\tconst resolvedConfig = {\n\t\t\t\t...(config ?? {}),\n\t\t\t\tcommitment: commitment ?? config?.commitment ?? client.store.getState().cluster.commitment,\n\t\t\t} as SimulateTransactionConfig;\n\t\t\tconst plan = client.runtime.rpc.simulateTransaction(wire, resolvedConfig);\n\t\t\treturn plan.send({ abortSignal: AbortSignal.timeout(20_000) });\n\t\t},\n\t\t[commitment, config, wire],\n\t);\n\tconst disabled = disabledOption ?? !wire;\n\tconst query = useSolanaRpcQuery<SimulateTransactionResponse>('simulateTransaction', [wire, configKey], fetcher, {\n\t\t...queryOptions,\n\t\trefreshInterval,\n\t\tdisabled,\n\t\trevalidateIfStale: revalidateIfStale ?? false,\n\t\trevalidateOnFocus: revalidateOnFocus ?? false,\n\t});\n\treturn {\n\t\t...query,\n\t\tlogs: query.data?.value.logs ?? [],\n\t};\n}\n","import {\n\ttype AccountCacheEntry,\n\ttype AddressLike,\n\ttype AsyncState,\n\ttype ClientState,\n\ttype ConfirmationCommitment,\n\tconfirmationMeetsCommitment,\n\tcreateAsyncState,\n\tcreateInitialAsyncState,\n\tcreateSolTransferController,\n\tcreateSplTransferController,\n\tcreateTransactionPoolController,\n\tderiveConfirmationStatus,\n\tgetWalletStandardConnectors,\n\ttype LatestBlockhashCache,\n\tnormalizeSignature,\n\tSIGNATURE_STATUS_TIMEOUT_MS,\n\ttype SignatureLike,\n\ttype SolanaClient,\n\ttype SolTransferHelper,\n\ttype SolTransferInput,\n\ttype SolTransferSendOptions,\n\ttype SplTokenBalance,\n\ttype SplTokenHelper,\n\ttype SplTokenHelperConfig,\n\ttype SplTransferController,\n\ttype SplTransferInput,\n\ttype TransactionHelper,\n\ttype TransactionInstructionInput,\n\ttype TransactionInstructionList,\n\ttype TransactionPoolController,\n\ttype TransactionPoolPrepareAndSendOptions,\n\ttype TransactionPoolPrepareOptions,\n\ttype TransactionPoolSendOptions,\n\ttype TransactionPoolSignOptions,\n\ttype TransactionPrepareAndSendRequest,\n\ttype TransactionPrepared,\n\ttype TransactionSendOptions,\n\ttoAddress,\n\ttype WalletConnector,\n\ttype WalletSession,\n\ttype WalletStatus,\n\twatchWalletStandardConnectors,\n} from '@solana/client';\nimport type { Commitment, Lamports, Signature } from '@solana/kit';\nimport { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from 'react';\nimport useSWR from 'swr';\n\nimport { useSolanaClient } from './context';\nimport { type SolanaQueryResult, type UseSolanaRpcQueryOptions, useSolanaRpcQuery } from './query';\nimport { type LatestBlockhashQueryResult, type UseLatestBlockhashOptions, useLatestBlockhash } from './queryHooks';\nimport { useQuerySuspensePreference } from './querySuspenseContext';\nimport { useClientStore } from './useClientStore';\n\ntype ClusterState = ClientState['cluster'];\ntype ClusterStatus = ClientState['cluster']['status'];\nexport type WalletStandardDiscoveryOptions = Parameters<typeof watchWalletStandardConnectors>[1];\n\ntype UnwrapPromise<T> = T extends Promise<infer U> ? U : T;\n\ntype RpcInstance = SolanaClient['runtime']['rpc'];\n\ntype SignatureStatusesPlan = ReturnType<RpcInstance['getSignatureStatuses']>;\n\ntype SignatureStatusesResponse = Awaited<ReturnType<SignatureStatusesPlan['send']>>;\n\ntype SignatureStatusValue = SignatureStatusesResponse['value'][number];\n\ntype SignatureStatusConfig = Parameters<RpcInstance['getSignatureStatuses']>[1];\n\ntype UseAccountOptions = Readonly<{\n\tcommitment?: Commitment;\n\tfetch?: boolean;\n\tskip?: boolean;\n\twatch?: boolean;\n}>;\n\ntype UseBalanceOptions = Readonly<{\n\twatch?: boolean;\n}> &\n\tUseAccountOptions;\n\nfunction createClusterSelector(): (state: ClientState) => ClusterState {\n\treturn (state) => state.cluster;\n}\n\nfunction createClusterStatusSelector(): (state: ClientState) => ClusterStatus {\n\treturn (state) => state.cluster.status;\n}\n\nfunction createWalletSelector(): (state: ClientState) => WalletStatus {\n\treturn (state) => state.wallet;\n}\n\nfunction createAccountSelector(key?: string) {\n\treturn (state: ClientState): AccountCacheEntry | undefined => (key ? state.accounts[key] : undefined);\n}\n\ntype SuspensePromiseRef = {\n\tkey: string | null;\n\tpromise: Promise<unknown>;\n};\n\nfunction useSuspenseFetcher(\n\tconfig: Readonly<{\n\t\tenabled: boolean;\n\t\tfetcher: () => Promise<unknown>;\n\t\tkey: string | null;\n\t\tready: boolean;\n\t}>,\n) {\n\tconst preference = useQuerySuspensePreference();\n\tconst suspenseEnabled = Boolean(preference) && config.enabled;\n\tconst pendingRef = useRef<SuspensePromiseRef | null>(null);\n\n\tuseEffect(() => {\n\t\tif (!suspenseEnabled) {\n\t\t\tpendingRef.current = null;\n\t\t\treturn;\n\t\t}\n\t\tif (pendingRef.current && pendingRef.current.key !== config.key) {\n\t\t\tpendingRef.current = null;\n\t\t}\n\t}, [config.key, suspenseEnabled]);\n\n\tif (pendingRef.current && pendingRef.current.key !== config.key) {\n\t\tpendingRef.current = null;\n\t}\n\n\tif (suspenseEnabled && config.key && !config.ready) {\n\t\tif (!pendingRef.current) {\n\t\t\tconst promise = config.fetcher();\n\t\t\tpendingRef.current = {\n\t\t\t\tkey: config.key,\n\t\t\t\tpromise: promise.finally(() => {\n\t\t\t\t\tif (pendingRef.current?.promise === promise) {\n\t\t\t\t\t\tpendingRef.current = null;\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t};\n\t\t}\n\t\tthrow pendingRef.current.promise;\n\t}\n}\n\n/**\n * Read the full cluster state managed by the client store.\n */\nexport function useClusterState(): ClusterState {\n\tconst selector = useMemo(createClusterSelector, []);\n\treturn useClientStore(selector);\n}\n\n/**\n * Read the current cluster connection status.\n */\nexport function useClusterStatus(): ClusterStatus {\n\tconst selector = useMemo(createClusterStatusSelector, []);\n\treturn useClientStore(selector);\n}\n\n/**\n * Access the wallet status tracked by the client store.\n */\nexport function useWallet(): WalletStatus {\n\tconst selector = useMemo(createWalletSelector, []);\n\treturn useClientStore(selector);\n}\n\n/**\n * Convenience helper that returns the active wallet session when connected.\n */\nexport function useWalletSession(): WalletSession | undefined {\n\tconst wallet = useWallet();\n\tif (wallet.status === 'connected') {\n\t\treturn wallet.session;\n\t}\n\treturn undefined;\n}\n\n/**\n * Access the headless client actions.\n */\nexport function useWalletActions() {\n\tconst client = useSolanaClient();\n\treturn client.actions;\n}\n\n/**\n * Stable connect helper that resolves to {@link ClientActions.connectWallet}.\n */\nexport function useConnectWallet(): (\n\tconnectorId: string,\n\toptions?: Readonly<{ autoConnect?: boolean }>,\n) => Promise<void> {\n\tconst client = useSolanaClient();\n\treturn useCallback(\n\t\t(connectorId: string, options?: Readonly<{ autoConnect?: boolean }>) =>\n\t\t\tclient.actions.connectWallet(connectorId, options),\n\t\t[client],\n\t);\n}\n\n/**\n * Stable disconnect helper mapping to {@link ClientActions.disconnectWallet}.\n */\nexport function useDisconnectWallet(): () => Promise<void> {\n\tconst client = useSolanaClient();\n\treturn useCallback(() => client.actions.disconnectWallet(), [client]);\n}\n\ntype SolTransferSignature = UnwrapPromise<ReturnType<SolTransferHelper['sendTransfer']>>;\n\n/**\n * Convenience wrapper around the SOL transfer helper that tracks status and signature.\n */\nexport function useSolTransfer(): Readonly<{\n\terror: unknown;\n\thelper: SolTransferHelper;\n\tisSending: boolean;\n\treset(): void;\n\tsend(config: SolTransferInput, options?: SolTransferSendOptions): Promise<SolTransferSignature>;\n\tsignature: SolTransferSignature | null;\n\tstatus: AsyncState<SolTransferSignature>['status'];\n}> {\n\tconst client = useSolanaClient();\n\tconst session = useWalletSession();\n\tconst helper = client.solTransfer;\n\tconst sessionRef = useRef(session);\n\n\tuseEffect(() => {\n\t\tsessionRef.current = session;\n\t}, [session]);\n\n\tconst controller = useMemo(\n\t\t() =>\n\t\t\tcreateSolTransferController({\n\t\t\t\tauthorityProvider: () => sessionRef.current,\n\t\t\t\thelper,\n\t\t\t}),\n\t\t[helper],\n\t);\n\n\tconst state = useSyncExternalStore<AsyncState<SolTransferSignature>>(\n\t\tcontroller.subscribe,\n\t\tcontroller.getState,\n\t\tcontroller.getState,\n\t);\n\n\tconst send = useCallback(\n\t\t(config: SolTransferInput, options?: SolTransferSendOptions) => controller.send(config, options),\n\t\t[controller],\n\t);\n\n\treturn {\n\t\terror: state.error ?? null,\n\t\thelper,\n\t\tisSending: state.status === 'loading',\n\t\treset: controller.reset,\n\t\tsend,\n\t\tsignature: state.data ?? null,\n\t\tstatus: state.status,\n\t};\n}\n\ntype SplTokenBalanceResult = SplTokenBalance;\ntype SplTransferSignature = UnwrapPromise<ReturnType<SplTokenHelper['sendTransfer']>>;\ntype UseSplTokenOptions = Readonly<{\n\tcommitment?: Commitment;\n\tconfig?: Omit<SplTokenHelperConfig, 'commitment' | 'mint'>;\n\towner?: AddressLike;\n\trevalidateOnFocus?: boolean;\n}>;\n\n/**\n * Simplified SPL token hook that scopes helpers by mint and manages balance state.\n */\nexport function useSplToken(\n\tmint: AddressLike,\n\toptions: UseSplTokenOptions = {},\n): Readonly<{\n\tbalance: SplTokenBalanceResult | null;\n\terror: unknown;\n\thelper: SplTokenHelper;\n\tisFetching: boolean;\n\tisSending: boolean;\n\towner: string | null;\n\trefresh(): Promise<SplTokenBalanceResult | undefined>;\n\trefreshing: boolean;\n\tresetSend(): void;\n\tsend(config: SplTransferInput, options?: SolTransferSendOptions): Promise<SplTransferSignature>;\n\tsendError: unknown;\n\tsendSignature: SplTransferSignature | null;\n\tsendStatus: AsyncState<SplTransferSignature>['status'];\n\tstatus: 'disconnected' | 'error' | 'loading' | 'ready';\n}> {\n\tconst client = useSolanaClient();\n\tconst session = useWalletSession();\n\tconst suspense = Boolean(useQuerySuspensePreference());\n\n\tconst normalizedMint = useMemo(() => String(mint), [mint]);\n\n\tconst helperConfig = useMemo<SplTokenHelperConfig>(\n\t\t() => ({\n\t\t\tcommitment: options.commitment,\n\t\t\tmint: normalizedMint,\n\t\t\t...(options.config ?? {}),\n\t\t}),\n\t\t[normalizedMint, options.commitment, options.config],\n\t);\n\n\tconst helper = useMemo(() => client.splToken(helperConfig), [client, helperConfig]);\n\n\tconst ownerRaw = options.owner ?? session?.account.address;\n\tconst owner = useMemo(() => (ownerRaw ? String(ownerRaw) : null), [ownerRaw]);\n\n\tconst balanceKey = owner ? ['spl-balance', normalizedMint, owner, options.commitment ?? null] : null;\n\n\tconst fetchBalance = useCallback(() => {\n\t\tif (!owner) {\n\t\t\tthrow new Error('Unable to fetch SPL balance without an owner.');\n\t\t}\n\t\treturn helper.fetchBalance(owner, options.commitment);\n\t}, [helper, owner, options.commitment]);\n\n\tconst { data, error, isLoading, isValidating, mutate } = useSWR<SplTokenBalanceResult>(balanceKey, fetchBalance, {\n\t\trevalidateOnFocus: options.revalidateOnFocus ?? false,\n\t\tsuspense,\n\t});\n\n\tconst sessionRef = useRef(session);\n\tuseEffect(() => {\n\t\tsessionRef.current = session;\n\t}, [session]);\n\n\tconst ownerRef = useRef(owner);\n\tuseEffect(() => {\n\t\townerRef.current = owner;\n\t}, [owner]);\n\n\tconst controller = useMemo<SplTransferController>(\n\t\t() =>\n\t\t\tcreateSplTransferController({\n\t\t\t\tauthorityProvider: () => sessionRef.current ?? undefined,\n\t\t\t\thelper,\n\t\t\t\tsourceOwnerProvider: () => ownerRef.current ?? undefined,\n\t\t\t}),\n\t\t[helper],\n\t);\n\n\tconst sendState = useSyncExternalStore<AsyncState<SplTransferSignature>>(\n\t\tcontroller.subscribe,\n\t\tcontroller.getState,\n\t\tcontroller.getState,\n\t);\n\n\tconst refresh = useCallback(() => {\n\t\tif (!owner) {\n\t\t\treturn Promise.resolve(undefined);\n\t\t}\n\t\treturn mutate(() => helper.fetchBalance(owner, options.commitment), { revalidate: false });\n\t}, [helper, mutate, owner, options.commitment]);\n\n\tconst send = useCallback(\n\t\tasync (config: SplTransferInput, sendOptions?: SolTransferSendOptions) => {\n\t\t\tconst signature = await controller.send(config, sendOptions);\n\t\t\tif (owner) {\n\t\t\t\tawait mutate(() => helper.fetchBalance(owner, options.commitment), { revalidate: false });\n\t\t\t}\n\t\t\treturn signature;\n\t\t},\n\t\t[controller, helper, mutate, options.commitment, owner],\n\t);\n\n\tconst resetSend = useCallback(() => {\n\t\tcontroller.reset();\n\t}, [controller]);\n\n\tconst status: 'disconnected' | 'error' | 'loading' | 'ready' =\n\t\towner === null ? 'disconnected' : error ? 'error' : isLoading && !data ? 'loading' : 'ready';\n\n\treturn {\n\t\tbalance: data ?? null,\n\t\terror: error ?? null,\n\t\thelper,\n\t\tisFetching: Boolean(owner) && (isLoading || isValidating),\n\t\tisSending: sendState.status === 'loading',\n\t\towner,\n\t\trefresh,\n\t\trefreshing: Boolean(owner) && isValidating,\n\t\tresetSend,\n\t\tsend,\n\t\tsendError: sendState.error ?? null,\n\t\tsendSignature: sendState.data ?? null,\n\t\tsendStatus: sendState.status,\n\t\tstatus,\n\t};\n}\n\n/**\n * Subscribe to the account cache for a given address, optionally triggering fetch & watch helpers.\n */\nexport function useAccount(addressLike?: AddressLike, options: UseAccountOptions = {}): AccountCacheEntry | undefined {\n\tconst client = useSolanaClient();\n\tconst shouldSkip = options.skip ?? !addressLike;\n\tconst address = useMemo(() => {\n\t\tif (shouldSkip || !addressLike) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn toAddress(addressLike);\n\t}, [addressLike, shouldSkip]);\n\tconst accountKey = useMemo(() => address?.toString(), [address]);\n\tconst selector = useMemo(() => createAccountSelector(accountKey), [accountKey]);\n\tconst account = useClientStore(selector);\n\n\tuseSuspenseFetcher({\n\t\tenabled: options.fetch !== false && !shouldSkip && Boolean(address),\n\t\tfetcher: () => {\n\t\t\tif (!address) {\n\t\t\t\tthrow new Error('Provide an address before fetching account data.');\n\t\t\t}\n\t\t\treturn client.actions.fetchAccount(address, options.commitment);\n\t\t},\n\t\tkey: accountKey ?? null,\n\t\tready: account !== undefined,\n\t});\n\n\tuseEffect(() => {\n\t\tif (!address) {\n\t\t\treturn;\n\t\t}\n\t\tconst commitment = options.commitment;\n\t\tif (options.fetch !== false && account === undefined) {\n\t\t\tvoid client.actions.fetchAccount(address, commitment).catch(() => undefined);\n\t\t}\n\t\tif (options.watch) {\n\t\t\tconst subscription = client.watchers.watchAccount({ address, commitment }, () => undefined);\n\t\t\treturn () => {\n\t\t\t\tsubscription.abort();\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}, [account, address, client, options.commitment, options.fetch, options.watch]);\n\n\treturn account;\n}\n\n/**\n * Tracks a lamport balance for the provided address. Fetches immediately and watches by default.\n */\nexport function useBalance(\n\taddressLike?: AddressLike,\n\toptions: UseBalanceOptions = {},\n): Readonly<{\n\taccount?: AccountCacheEntry;\n\terror?: unknown;\n\tfetching: boolean;\n\tlamports: Lamports | null;\n\tslot: bigint | null | undefined;\n}> {\n\tconst mergedOptions = useMemo(\n\t\t() => ({\n\t\t\tcommitment: options.commitment,\n\t\t\tfetch: options.fetch ?? true,\n\t\t\tskip: options.skip,\n\t\t\twatch: options.watch ?? true,\n\t\t}),\n\t\t[options.commitment, options.fetch, options.skip, options.watch],\n\t);\n\tconst client = useSolanaClient();\n\tconst shouldSkip = mergedOptions.skip ?? !addressLike;\n\tconst address = useMemo(() => {\n\t\tif (shouldSkip || !addressLike) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn toAddress(addressLike);\n\t}, [addressLike, shouldSkip]);\n\tconst accountKey = useMemo(() => address?.toString(), [address]);\n\tconst selector = useMemo(() => createAccountSelector(accountKey), [accountKey]);\n\tconst account = useClientStore(selector);\n\n\tuseSuspenseFetcher({\n\t\tenabled: mergedOptions.fetch !== false && !shouldSkip && Boolean(address),\n\t\tfetcher: () => {\n\t\t\tif (!address) {\n\t\t\t\tthrow new Error('Provide an address before fetching balance.');\n\t\t\t}\n\t\t\treturn client.actions.fetchBalance(address, mergedOptions.commitment);\n\t\t},\n\t\tkey: accountKey ?? null,\n\t\tready: account !== undefined,\n\t});\n\n\tuseEffect(() => {\n\t\tif (!address) {\n\t\t\treturn;\n\t\t}\n\t\tconst commitment = mergedOptions.commitment;\n\t\tif (mergedOptions.fetch !== false && account === undefined) {\n\t\t\tvoid client.actions.fetchBalance(address, commitment).catch(() => undefined);\n\t\t}\n\t\tif (mergedOptions.watch) {\n\t\t\tconst watcher = client.watchers.watchBalance({ address, commitment }, () => undefined);\n\t\t\treturn () => {\n\t\t\t\twatcher.abort();\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}, [account, address, client, mergedOptions.commitment, mergedOptions.fetch, mergedOptions.watch]);\n\n\tconst lamports = account?.lamports ?? null;\n\tconst fetching = account?.fetching ?? false;\n\tconst slot = account?.slot;\n\tconst error = account?.error;\n\n\treturn useMemo(\n\t\t() => ({\n\t\t\taccount,\n\t\t\terror,\n\t\t\tfetching,\n\t\t\tlamports,\n\t\t\tslot,\n\t\t}),\n\t\t[account, error, fetching, lamports, slot],\n\t);\n}\n\n/**\n * Collect Wallet Standard connectors and keep the list in sync with registration changes.\n */\nexport function useWalletStandardConnectors(options?: WalletStandardDiscoveryOptions): readonly WalletConnector[] {\n\tconst overrides = options?.overrides;\n\tconst memoisedOptions = useMemo(() => (overrides ? { overrides } : undefined), [overrides]);\n\tconst [connectors, setConnectors] = useState<readonly WalletConnector[]>(() =>\n\t\tgetWalletStandardConnectors(memoisedOptions ?? {}),\n\t);\n\n\tuseEffect(() => {\n\t\tsetConnectors(getWalletStandardConnectors(memoisedOptions ?? {}));\n\t\tconst unwatch = watchWalletStandardConnectors(setConnectors, memoisedOptions ?? {});\n\t\treturn () => {\n\t\t\tunwatch();\n\t\t};\n\t}, [memoisedOptions]);\n\n\treturn connectors;\n}\n\ntype UseTransactionPoolConfig = Readonly<{\n\tinstructions?: TransactionInstructionList;\n\tlatestBlockhash?: UseLatestBlockhashOptions;\n}>;\n\ntype UseTransactionPoolPrepareOptions = TransactionPoolPrepareOptions;\n\ntype UseTransactionPoolSignOptions = TransactionPoolSignOptions;\n\ntype UseTransactionPoolSendOptions = TransactionPoolSendOptions;\n\ntype UseTransactionPoolPrepareAndSendOptions = TransactionPoolPrepareAndSendOptions;\n\ntype TransactionSignature = Signature;\n\n/**\n * Manage a mutable set of instructions and use the transaction helper to prepare and send transactions.\n */\nexport function useTransactionPool(config: UseTransactionPoolConfig = {}): Readonly<{\n\taddInstruction(instruction: TransactionInstructionInput): void;\n\taddInstructions(instructionSet: TransactionInstructionList): void;\n\tclearInstructions(): void;\n\tinstructions: TransactionInstructionList;\n\tisPreparing: boolean;\n\tisSending: boolean;\n\tprepared: TransactionPrepared | null;\n\tprepare(options?: UseTransactionPoolPrepareOptions): Promise<TransactionPrepared>;\n\tprepareError: unknown;\n\tprepareStatus: AsyncState<TransactionPrepared>['status'];\n\tremoveInstruction(index: number): void;\n\treplaceInstructions(instructionSet: TransactionInstructionList): void;\n\treset(): void;\n\tsend(options?: UseTransactionPoolSendOptions): Promise<TransactionSignature>;\n\tsendError: unknown;\n\tsendSignature: TransactionSignature | null;\n\tsendStatus: AsyncState<TransactionSignature>['status'];\n\tprepareAndSend(\n\t\trequest?: UseTransactionPoolPrepareAndSendOptions,\n\t\tsendOptions?: TransactionSendOptions,\n\t): Promise<TransactionSignature>;\n\tsign(options?: UseTransactionPoolSignOptions): ReturnType<TransactionHelper['sign']>;\n\ttoWire(options?: UseTransactionPoolSignOptions): ReturnType<TransactionHelper['toWire']>;\n\tlatestBlockhash: LatestBlockhashQueryResult;\n}> {\n\tconst initialInstructions = useMemo<TransactionInstructionList>(\n\t\t() => config.instructions ?? [],\n\t\t[config.instructions],\n\t);\n\tconst client = useSolanaClient();\n\tconst helper = client.helpers.transaction;\n\tconst blockhashMaxAgeMs = config.latestBlockhash?.refreshInterval ?? 30_000;\n\tconst controller = useMemo<TransactionPoolController>(\n\t\t() =>\n\t\t\tcreateTransactionPoolController({\n\t\t\t\tblockhashMaxAgeMs,\n\t\t\t\thelper,\n\t\t\t\tinitialInstructions,\n\t\t\t}),\n\t\t[blockhashMaxAgeMs, helper, initialInstructions],\n\t);\n\tconst latestBlockhash = useLatestBlockhash(config.latestBlockhash);\n\n\tuseEffect(() => {\n\t\tconst value = latestBlockhash.data?.value;\n\t\tif (!value) {\n\t\t\tcontroller.setLatestBlockhashCache(undefined);\n\t\t\treturn;\n\t\t}\n\t\tconst cache: LatestBlockhashCache = {\n\t\t\tupdatedAt: latestBlockhash.dataUpdatedAt ?? Date.now(),\n\t\t\tvalue,\n\t\t};\n\t\tcontroller.setLatestBlockhashCache(cache);\n\t}, [controller, latestBlockhash.data, latestBlockhash.dataUpdatedAt]);\n\n\tconst instructions = useSyncExternalStore<TransactionInstructionList>(\n\t\tcontroller.subscribeInstructions,\n\t\tcontroller.getInstructions,\n\t\tcontroller.getInstructions,\n\t);\n\tconst prepared = useSyncExternalStore<TransactionPrepared | null>(\n\t\tcontroller.subscribePrepared,\n\t\tcontroller.getPrepared,\n\t\tcontroller.getPrepared,\n\t);\n\tconst prepareState = useSyncExternalStore<AsyncState<TransactionPrepared>>(\n\t\tcontroller.subscribePrepareState,\n\t\tcontroller.getPrepareState,\n\t\tcontroller.getPrepareState,\n\t);\n\tconst sendState = useSyncExternalStore<AsyncState<TransactionSignature>>(\n\t\tcontroller.subscribeSendState,\n\t\tcontroller.getSendState,\n\t\tcontroller.getSendState,\n\t);\n\n\treturn {\n\t\taddInstruction: controller.addInstruction,\n\t\taddInstructions: controller.addInstructions,\n\t\tclearInstructions: controller.clearInstructions,\n\t\tinstructions,\n\t\tisPreparing: prepareState.status === 'loading',\n\t\tisSending: sendState.status === 'loading',\n\t\tprepared,\n\t\tprepare: controller.prepare,\n\t\tprepareError: prepareState.error ?? null,\n\t\tprepareStatus: prepareState.status,\n\t\tremoveInstruction: controller.removeInstruction,\n\t\treplaceInstructions: controller.replaceInstructions,\n\t\treset: controller.reset,\n\t\tsend: controller.send,\n\t\tsendError: sendState.error ?? null,\n\t\tsendSignature: sendState.data ?? null,\n\t\tsendStatus: sendState.status,\n\t\tprepareAndSend: controller.prepareAndSend,\n\t\tsign: controller.sign,\n\t\ttoWire: controller.toWire,\n\t\tlatestBlockhash,\n\t};\n}\n\ntype SendTransactionSignature = Signature;\n\ntype UseSendTransactionResult = Readonly<{\n\terror: unknown;\n\tisSending: boolean;\n\treset(): void;\n\tsend(\n\t\trequest: TransactionPrepareAndSendRequest,\n\t\toptions?: TransactionSendOptions,\n\t): Promise<SendTransactionSignature>;\n\tsendPrepared(prepared: TransactionPrepared, options?: TransactionSendOptions): Promise<SendTransactionSignature>;\n\tsignature: SendTransactionSignature | null;\n\tstatus: AsyncState<SendTransactionSignature>['status'];\n}>;\n\n/**\n * General-purpose helper that prepares and sends arbitrary transactions through {@link TransactionHelper}.\n */\nexport function useSendTransaction(): UseSendTransactionResult {\n\tconst client = useSolanaClient();\n\tconst helper = client.transaction;\n\tconst session = useWalletSession();\n\tconst [state, setState] = useState<AsyncState<SendTransactionSignature>>(() =>\n\t\tcreateInitialAsyncState<SendTransactionSignature>(),\n\t);\n\n\tconst execute = useCallback(\n\t\tasync (operation: () => Promise<SendTransactionSignature>): Promise<SendTransactionSignature> => {\n\t\t\tsetState(createAsyncState<SendTransactionSignature>('loading'));\n\t\t\ttry {\n\t\t\t\tconst signature = await operation();\n\t\t\t\tsetState(createAsyncState<SendTransactionSignature>('success', { data: signature }));\n\t\t\t\treturn signature;\n\t\t\t} catch (error) {\n\t\t\t\tsetState(createAsyncState<SendTransactionSignature>('error', { error }));\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\t[],\n\t);\n\n\tconst ensureAuthority = useCallback(\n\t\t(request: TransactionPrepareAndSendRequest): TransactionPrepareAndSendRequest => {\n\t\t\tif (request.authority) {\n\t\t\t\treturn request;\n\t\t\t}\n\t\t\tif (!session) {\n\t\t\t\tthrow new Error('Connect a wallet or supply an `authority` before sending transactions.');\n\t\t\t}\n\t\t\treturn { ...request, authority: session };\n\t\t},\n\t\t[session],\n\t);\n\n\tconst send = useCallback(\n\t\tasync (request: TransactionPrepareAndSendRequest, options?: TransactionSendOptions) => {\n\t\t\tconst normalizedRequest = ensureAuthority(request);\n\t\t\treturn execute(() => helper.prepareAndSend(normalizedRequest, options));\n\t\t},\n\t\t[ensureAuthority, execute, helper],\n\t);\n\n\tconst sendPrepared = useCallback(\n\t\tasync (prepared: TransactionPrepared, options?: TransactionSendOptions) =>\n\t\t\texecute(() => helper.send(prepared, options)),\n\t\t[execute, helper],\n\t);\n\n\tconst reset = useCallback(() => {\n\t\tsetState(createInitialAsyncState<SendTransactionSignature>());\n\t}, []);\n\n\treturn {\n\t\terror: state.error ?? null,\n\t\tisSending: state.status === 'loading',\n\t\treset,\n\t\tsend,\n\t\tsendPrepared,\n\t\tsignature: state.data ?? null,\n\t\tstatus: state.status,\n\t};\n}\n\nexport type UseSignatureStatusOptions = UseSolanaRpcQueryOptions<SignatureStatusValue | null> &\n\tReadonly<{\n\t\tconfig?: SignatureStatusConfig;\n\t}>;\n\nexport type SignatureStatusResult = SolanaQueryResult<SignatureStatusValue | null> &\n\tReadonly<{\n\t\tconfirmationStatus: ConfirmationCommitment | null;\n\t\tsignatureStatus: SignatureStatusValue | null;\n\t}>;\n\n/**\n * Fetch the RPC status for a transaction signature.\n */\nexport function useSignatureStatus(\n\tsignatureInput?: SignatureLike,\n\toptions: UseSignatureStatusOptions = {},\n): SignatureStatusResult {\n\tconst { config, ...queryOptions } = options;\n\tconst signature = useMemo(() => normalizeSignature(signatureInput), [signatureInput]);\n\tconst signatureKey = signature?.toString() ?? null;\n\tconst configKey = useMemo(() => JSON.stringify(config ?? null), [config]);\n\tconst fetcher = useCallback(\n\t\tasync (client: SolanaClient) => {\n\t\t\tif (!signatureKey) {\n\t\t\t\tthrow new Error('Provide a signature before querying its status.');\n\t\t\t}\n\t\t\tif (!signature) {\n\t\t\t\tthrow new Error('Provide a signature before querying its status.');\n\t\t\t}\n\t\t\tconst plan = client.runtime.rpc.getSignatureStatuses([signature], config);\n\t\t\tconst response = await plan.send({ abortSignal: AbortSignal.timeout(SIGNATURE_STATUS_TIMEOUT_MS) });\n\t\t\treturn response.value[0] ?? null;\n\t\t},\n\t\t[config, signature, signatureKey],\n\t);\n\tconst disabled = queryOptions.disabled ?? !signatureKey;\n\tconst query = useSolanaRpcQuery<SignatureStatusValue | null>(\n\t\t'signatureStatus',\n\t\t[signatureKey, configKey],\n\t\tfetcher,\n\t\t{\n\t\t\t...queryOptions,\n\t\t\tdisabled,\n\t\t},\n\t);\n\tconst confirmationStatus = deriveConfirmationStatus(query.data ?? null);\n\treturn {\n\t\t...query,\n\t\tconfirmationStatus,\n\t\tsignatureStatus: query.data ?? null,\n\t};\n}\n\nexport type SignatureWaitStatus = 'error' | 'idle' | 'success' | 'waiting';\n\nexport type UseWaitForSignatureOptions = Omit<UseSignatureStatusOptions, 'disabled'> &\n\tReadonly<{\n\t\tcommitment?: ConfirmationCommitment;\n\t\tdisabled?: boolean;\n\t\tsubscribe?: boolean;\n\t\twatchCommitment?: ConfirmationCommitment;\n\t}>;\n\nexport type WaitForSignatureResult = SignatureStatusResult &\n\tReadonly<{\n\t\tisError: boolean;\n\t\tisSuccess: boolean;\n\t\tisWaiting: boolean;\n\t\twaitError: unknown;\n\t\twaitStatus: SignatureWaitStatus;\n\t}>;\n\n/**\n * Polls signature status data until the desired commitment (or subscription notification) is reached.\n */\nexport function useWaitForSignature(\n\tsignatureInput?: SignatureLike,\n\toptions: UseWaitForSignatureOptions = {},\n): WaitForSignatureResult {\n\tconst {\n\t\tcommitment = 'confirmed',\n\t\tdisabled: disabledOption,\n\t\tsubscribe = true,\n\t\twatchCommitment,\n\t\t...signatureStatusOptions\n\t} = options;\n\tconst { refreshInterval, ...restStatusOptions } = signatureStatusOptions;\n\tconst subscribeCommitment = watchCommitment ?? commitment;\n\tconst client = useSolanaClient();\n\tconst normalizedSignature = useMemo(() => normalizeSignature(signatureInput), [signatureInput]);\n\tconst disabled = disabledOption ?? !normalizedSignature;\n\tconst statusQuery = useSignatureStatus(signatureInput, {\n\t\t...restStatusOptions,\n\t\trefreshInterval: refreshInterval ?? 2_000,\n\t\tdisabled,\n\t});\n\tconst [subscriptionSettled, setSubscriptionSettled] = useState(false);\n\n\tuseEffect(() => {\n\t\tif (normalizedSignature === undefined) {\n\t\t\tsetSubscriptionSettled(false);\n\t\t\treturn;\n\t\t}\n\t\tsetSubscriptionSettled(false);\n\t}, [normalizedSignature]);\n\n\tuseEffect(() => {\n\t\tif (!normalizedSignature || disabled || !subscribe) {\n\t\t\treturn;\n\t\t}\n\t\tconst subscription = client.watchers.watchSignature(\n\t\t\t{\n\t\t\t\tcommitment: subscribeCommitment,\n\t\t\t\tenableReceivedNotification: true,\n\t\t\t\tsignature: normalizedSignature,\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tsetSubscriptionSettled(true);\n\t\t\t},\n\t\t);\n\t\treturn () => {\n\t\t\tsubscription.abort();\n\t\t};\n\t}, [client, disabled, normalizedSignature, subscribe, subscribeCommitment]);\n\n\tconst hasSignature = Boolean(normalizedSignature) && !disabled;\n\tconst signatureError = statusQuery.signatureStatus?.err ?? null;\n\tconst waitError = statusQuery.error ?? signatureError ?? null;\n\tconst meetsCommitment = confirmationMeetsCommitment(statusQuery.confirmationStatus, commitment);\n\tconst settled = subscriptionSettled || meetsCommitment;\n\n\tlet waitStatus: SignatureWaitStatus = 'idle';\n\tif (!hasSignature) {\n\t\twaitStatus = 'idle';\n\t} else if (waitError) {\n\t\twaitStatus = 'error';\n\t} else if (settled) {\n\t\twaitStatus = 'success';\n\t} else {\n\t\twaitStatus = 'waiting';\n\t}\n\n\treturn {\n\t\t...statusQuery,\n\t\tisError: waitStatus === 'error',\n\t\tisSuccess: waitStatus === 'success',\n\t\tisWaiting: waitStatus === 'waiting',\n\t\twaitError,\n\t\twaitStatus,\n\t};\n}\n","'use client';\n\nimport type { JSX, ReactNode } from 'react';\nimport { useMemo, useRef } from 'react';\nimport { type Cache, SWRConfig, type SWRConfiguration } from 'swr';\n\nimport { QuerySuspenseContext } from './querySuspenseContext';\nimport { useClientStore } from './useClientStore';\n\nconst createCache = (): Cache => new Map<string, unknown>() as Cache;\n\nconst DEFAULT_QUERY_CONFIG: SWRConfiguration = Object.freeze({\n\tdedupingInterval: 1_000,\n\tfocusThrottleInterval: 1_000,\n\tprovider: () => createCache(),\n\trevalidateOnFocus: false,\n\trevalidateOnReconnect: true,\n});\n\ntype SolanaQueryProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tconfig?: SWRConfiguration;\n\tresetOnClusterChange?: boolean;\n\tsuspense?: boolean;\n}>;\n\nexport function SolanaQueryProvider({\n\tchildren,\n\tconfig,\n\tresetOnClusterChange = true,\n\tsuspense,\n}: SolanaQueryProviderProps): JSX.Element {\n\tconst cluster = useClientStore((state) => state.cluster);\n\tconst cacheRegistryRef = useRef<Map<string, Cache>>(new Map());\n\tconst cacheKey = resetOnClusterChange ? `${cluster.endpoint}|${cluster.commitment}` : 'global';\n\tconst cache = useMemo<Cache>(() => {\n\t\tconst registry = cacheRegistryRef.current;\n\t\tif (!resetOnClusterChange) {\n\t\t\tconst existing = registry.get('global');\n\t\t\tif (existing) {\n\t\t\t\treturn existing;\n\t\t\t}\n\t\t\tconst next = createCache();\n\t\t\tregistry.set('global', next);\n\t\t\treturn next;\n\t\t}\n\t\tconst next = createCache();\n\t\tregistry.set(cacheKey, next);\n\t\treturn next;\n\t}, [cacheKey, resetOnClusterChange]);\n\n\tconst value = useMemo<SWRConfiguration>(() => {\n\t\tconst base = {\n\t\t\t...DEFAULT_QUERY_CONFIG,\n\t\t\t...config,\n\t\t};\n\t\tif (!config?.provider) {\n\t\t\tbase.provider = () => cache;\n\t\t}\n\t\tif (base.suspense === undefined && suspense !== undefined) {\n\t\t\tbase.suspense = suspense;\n\t\t}\n\t\treturn base;\n\t}, [cache, config, suspense]);\n\n\treturn (\n\t\t<QuerySuspenseContext.Provider value={suspense}>\n\t\t\t<SWRConfig value={value}>{children}</SWRConfig>\n\t\t</QuerySuspenseContext.Provider>\n\t);\n}\n","'use client';\n\nimport type { SolanaClient, SolanaClientConfig } from '@solana/client';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport type { SWRConfiguration } from 'swr';\n\nimport { SolanaClientProvider, useSolanaClient } from './context';\nimport { useConnectWallet, useWallet } from './hooks';\nimport { SolanaQueryProvider } from './QueryProvider';\n\ntype QueryLayerConfig = Readonly<{\n\tconfig?: SWRConfiguration;\n\tresetOnClusterChange?: boolean;\n\tsuspense?: boolean;\n\tdisabled?: boolean;\n}>;\n\ntype StorageAdapter = Readonly<{\n\tgetItem(key: string): string | null;\n\tremoveItem(key: string): void;\n\tsetItem(key: string, value: string): void;\n}>;\n\ntype WalletPersistenceConfig = Readonly<{\n\tautoConnect?: boolean;\n\tstorage?: StorageAdapter | null;\n\tstorageKey?: string;\n}>;\n\ntype SolanaProviderProps = Readonly<{\n\tchildren: ReactNode;\n\tclient?: SolanaClient;\n\tconfig?: SolanaClientConfig;\n\tquery?: QueryLayerConfig | false;\n\twalletPersistence?: WalletPersistenceConfig | false;\n}>;\n\n/**\n * Convenience provider that composes {@link SolanaClientProvider} with {@link SolanaQueryProvider}.\n *\n * Useful when you want one drop-in wrapper that handles client setup plus SWR configuration without\n * introducing any additional contexts.\n */\nexport function SolanaProvider({ children, client, config, query, walletPersistence }: SolanaProviderProps) {\n\tconst shouldIncludeQueryLayer = query !== false && query?.disabled !== true;\n\tconst queryProps: QueryLayerConfig = shouldIncludeQueryLayer && query ? query : {};\n\tconst persistenceConfig = walletPersistence === false ? undefined : (walletPersistence ?? {});\n\n\tconst content = shouldIncludeQueryLayer ? (\n\t\t<SolanaQueryProvider\n\t\t\tconfig={queryProps.config}\n\t\t\tresetOnClusterChange={queryProps.resetOnClusterChange}\n\t\t\tsuspense={queryProps.suspense}\n\t\t>\n\t\t\t{children}\n\t\t</SolanaQueryProvider>\n\t) : (\n\t\tchildren\n\t);\n\n\treturn (\n\t\t<SolanaClientProvider client={client} config={config}>\n\t\t\t{persistenceConfig ? <WalletPersistence {...persistenceConfig} /> : null}\n\t\t\t{content}\n\t\t</SolanaClientProvider>\n\t);\n}\n\nconst DEFAULT_STORAGE_KEY = 'solana:last-connector';\n\nfunction WalletPersistence({ autoConnect = true, storage, storageKey = DEFAULT_STORAGE_KEY }: WalletPersistenceConfig) {\n\tconst wallet = useWallet();\n\tconst connectWallet = useConnectWallet();\n\tconst client = useSolanaClient();\n\tconst storageRef = useRef<StorageAdapter | null>(storage ?? getDefaultStorage());\n\tconst [hasAttemptedAutoConnect, setHasAttemptedAutoConnect] = useState(false);\n\tconst hasPersistedConnectorRef = useRef(false);\n\tconst clientRef = useRef<SolanaClient | null>(null);\n\n\tuseEffect(() => {\n\t\tstorageRef.current = storage ?? getDefaultStorage();\n\t}, [storage]);\n\n\tuseEffect(() => {\n\t\tif (clientRef.current !== client) {\n\t\t\tclientRef.current = client;\n\t\t\tsetHasAttemptedAutoConnect(false);\n\t\t}\n\t}, [client]);\n\n\tuseEffect(() => {\n\t\tconst activeStorage = storageRef.current;\n\t\tif (!activeStorage) return;\n\t\tif ('connectorId' in wallet && wallet.connectorId) {\n\t\t\tconst connectorId = wallet.connectorId;\n\t\t\tif (connectorId) {\n\t\t\t\tsafelyWrite(() => activeStorage.setItem(storageKey, connectorId));\n\t\t\t\thasPersistedConnectorRef.current = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (wallet.status === 'disconnected' && hasPersistedConnectorRef.current) {\n\t\t\tsafelyWrite(() => activeStorage.removeItem(storageKey));\n\t\t\thasPersistedConnectorRef.current = false;\n\t\t}\n\t}, [storageKey, wallet]);\n\n\tuseEffect(() => {\n\t\tif (!autoConnect || hasAttemptedAutoConnect) {\n\t\t\treturn;\n\t\t}\n\t\tif (wallet.status === 'connected' || wallet.status === 'connecting') {\n\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\treturn;\n\t\t}\n\t\tconst activeStorage = storageRef.current;\n\t\tif (!activeStorage) {\n\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\treturn;\n\t\t}\n\n\t\tlet cancelled = false;\n\t\tconst connectorId = safelyRead(() => activeStorage.getItem(storageKey));\n\t\tif (!connectorId) {\n\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\treturn;\n\t\t}\n\n\t\tconst connector = client.connectors.get(connectorId);\n\t\tif (!connector) {\n\t\t\t// Connector not yet registered; wait for the client to refresh.\n\t\t\treturn;\n\t\t}\n\n\t\tvoid (async () => {\n\t\t\ttry {\n\t\t\t\tawait connectWallet(connectorId, { autoConnect: true });\n\t\t\t} catch {\n\t\t\t\t// Ignore auto-connect failures; consumers can handle manual retries via hooks.\n\t\t\t} finally {\n\t\t\t\tif (!cancelled) {\n\t\t\t\t\tsetHasAttemptedAutoConnect(true);\n\t\t\t\t}\n\t\t\t}\n\t\t})();\n\n\t\treturn () => {\n\t\t\tcancelled = true;\n\t\t};\n\t}, [autoConnect, client, connectWallet, hasAttemptedAutoConnect, storageKey, wallet.status]);\n\n\treturn null;\n}\n\nfunction safelyRead(reader: () => string | null): string | null {\n\ttry {\n\t\treturn reader();\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nfunction safelyWrite(writer: () => void) {\n\ttry {\n\t\twriter();\n\t} catch {\n\t\t// Ignore write failures (private browsing, SSR, etc.).\n\t}\n}\n\nfunction getDefaultStorage(): StorageAdapter | null {\n\tif (typeof globalThis !== 'object' || globalThis === null) {\n\t\treturn null;\n\t}\n\tconst candidate = (globalThis as Record<string, unknown>).localStorage as StorageAdapter | undefined;\n\tif (!candidate) {\n\t\treturn null;\n\t}\n\treturn candidate;\n}\n","import type { WalletConnector, WalletSession, WalletStatus } from '@solana/client';\nimport type { ReactNode } from 'react';\nimport { useCallback, useMemo, useState } from 'react';\n\nimport {\n\tuseConnectWallet,\n\tuseDisconnectWallet,\n\tuseWallet,\n\tuseWalletStandardConnectors,\n\ttype WalletStandardDiscoveryOptions,\n} from './hooks';\n\ntype WalletConnectionState = Readonly<{\n\tconnect(connectorId: string, options?: Readonly<{ autoConnect?: boolean }>): Promise<void>;\n\tconnected: boolean;\n\tconnecting: boolean;\n\tconnectors: readonly WalletConnector[];\n\tconnectorId?: string;\n\tdisconnect(): Promise<void>;\n\terror: unknown;\n\tstatus: WalletStatus['status'];\n\twallet: WalletSession | undefined;\n}>;\n\ntype UseWalletConnectionOptions = Readonly<{\n\tconnectors?: readonly WalletConnector[];\n\tdiscoveryOptions?: WalletStandardDiscoveryOptions;\n}>;\n\n/**\n * Collects everything needed to build wallet connection UIs into a single hook.\n */\nexport function useWalletConnection(options: UseWalletConnectionOptions = {}): WalletConnectionState {\n\tconst wallet = useWallet();\n\tconst connectWallet = useConnectWallet();\n\tconst disconnectWallet = useDisconnectWallet();\n\tconst discovered = useWalletStandardConnectors(options.discoveryOptions);\n\n\tconst connectors = options.connectors ?? discovered;\n\tconst connect = useCallback(\n\t\t(connectorId: string, connectOptions?: Readonly<{ autoConnect?: boolean }>) =>\n\t\t\tconnectWallet(connectorId, connectOptions),\n\t\t[connectWallet],\n\t);\n\tconst disconnect = useCallback(() => disconnectWallet(), [disconnectWallet]);\n\n\tconst state = useMemo<WalletConnectionState>(() => {\n\t\tconst connectorId = 'connectorId' in wallet ? wallet.connectorId : undefined;\n\t\tconst session: WalletSession | undefined = wallet.status === 'connected' ? wallet.session : undefined;\n\t\tconst error = wallet.status === 'error' ? (wallet.error ?? null) : null;\n\n\t\treturn {\n\t\t\tconnect,\n\t\t\tconnected: wallet.status === 'connected',\n\t\t\tconnecting: wallet.status === 'connecting',\n\t\t\tconnectors,\n\t\t\tconnectorId,\n\t\t\tdisconnect,\n\t\t\terror,\n\t\t\tstatus: wallet.status,\n\t\t\twallet: session,\n\t\t};\n\t}, [connect, connectors, disconnect, wallet]);\n\n\treturn state;\n}\n\ntype WalletConnectionManagerProps = Readonly<{\n\tchildren: (state: WalletConnectionState) => ReactNode;\n\tconnectors?: readonly WalletConnector[];\n\tdiscoveryOptions?: WalletStandardDiscoveryOptions;\n}>;\n\n/**\n * Render-prop helper that lets you easily wire wallet status into custom UIs.\n */\nexport function WalletConnectionManager({ children, connectors, discoveryOptions }: WalletConnectionManagerProps) {\n\tconst state = useWalletConnection({ connectors, discoveryOptions });\n\treturn <>{children(state)}</>;\n}\n\ntype UseWalletModalStateOptions = UseWalletConnectionOptions &\n\tReadonly<{\n\t\tcloseOnConnect?: boolean;\n\t\tinitialOpen?: boolean;\n\t}>;\n\nexport type WalletModalState = WalletConnectionState &\n\tReadonly<{\n\t\tclose(): void;\n\t\tisOpen: boolean;\n\t\topen(): void;\n\t\tselectedConnector: string | null;\n\t\tselect(connectorId: string | null): void;\n\t\ttoggle(): void;\n\t}>;\n\n/**\n * Small state machine for wallet selection modals – keeps track of modal visibility and the currently\n * highlighted connector while reusing the connection state returned by {@link useWalletConnection}.\n */\nexport function useWalletModalState(options: UseWalletModalStateOptions = {}): WalletModalState {\n\tconst connection = useWalletConnection(options);\n\tconst [isOpen, setIsOpen] = useState(options.initialOpen ?? false);\n\tconst [selectedConnector, setSelectedConnector] = useState<string | null>(null);\n\tconst closeOnConnect = options.closeOnConnect ?? true;\n\n\tconst open = useCallback(() => setIsOpen(true), []);\n\tconst close = useCallback(() => setIsOpen(false), []);\n\tconst toggle = useCallback(() => setIsOpen((value) => !value), []);\n\tconst select = useCallback((connectorId: string | null) => setSelectedConnector(connectorId), []);\n\n\tconst connect = useCallback(\n\t\tasync (connectorId: string, connectOptions?: Readonly<{ autoConnect?: boolean }>) => {\n\t\t\tawait connection.connect(connectorId, connectOptions);\n\t\t\tsetSelectedConnector(connectorId);\n\t\t\tif (closeOnConnect) {\n\t\t\t\tsetIsOpen(false);\n\t\t\t}\n\t\t},\n\t\t[closeOnConnect, connection],\n\t);\n\n\treturn {\n\t\t...connection,\n\t\tclose,\n\t\tconnect,\n\t\tisOpen,\n\t\topen,\n\t\tselectedConnector,\n\t\tselect,\n\t\ttoggle,\n\t};\n}\n","import { type Address, address } from '@solana/addresses';\nimport type { ReadonlyUint8Array } from '@solana/codecs-core';\nimport { SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED, SolanaError } from '@solana/errors';\nimport type { SignatureBytes } from '@solana/keys';\nimport { getAbortablePromise } from '@solana/promises';\nimport type {\n\tMessageModifyingSigner,\n\tSignableMessage,\n\tTransactionModifyingSigner,\n\tTransactionSendingSigner,\n} from '@solana/signers';\nimport { getCompiledTransactionMessageDecoder } from '@solana/transaction-messages';\nimport type { Transaction, TransactionWithinSizeLimit, TransactionWithLifetime } from '@solana/transactions';\nimport {\n\tassertIsTransactionWithinSizeLimit,\n\tgetTransactionCodec,\n\tgetTransactionEncoder,\n\tgetTransactionLifetimeConstraintFromCompiledTransactionMessage,\n} from '@solana/transactions';\nimport {\n\tSolanaSignAndSendTransaction,\n\ttype SolanaSignAndSendTransactionFeature,\n\ttype SolanaSignAndSendTransactionInput,\n\ttype SolanaSignAndSendTransactionOutput,\n\tSolanaSignIn,\n\ttype SolanaSignInFeature,\n\ttype SolanaSignInInput,\n\ttype SolanaSignInOutput,\n\tSolanaSignMessage,\n\ttype SolanaSignMessageFeature,\n\ttype SolanaSignMessageInput,\n\ttype SolanaSignMessageOutput,\n\tSolanaSignTransaction,\n\ttype SolanaSignTransactionFeature,\n\ttype SolanaSignTransactionInput,\n\ttype SolanaSignTransactionOutput,\n} from '@solana/wallet-standard-features';\nimport type { IdentifierArray } from '@wallet-standard/base';\nimport {\n\tWALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED,\n\tWalletStandardError,\n} from '@wallet-standard/errors';\nimport type { UiWallet, UiWalletAccount, UiWalletHandle } from '@wallet-standard/ui';\nimport { getWalletAccountFeature, getWalletFeature } from '@wallet-standard/ui';\nimport {\n\tgetOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n\tgetWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n\tgetWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,\n} from '@wallet-standard/ui-registry';\nimport { useCallback, useMemo, useRef } from 'react';\n\ntype AssertSolanaChain<T> = T extends `solana:${string}` ? T : never;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport type OnlySolanaChains<T extends IdentifierArray> = T extends IdentifierArray\n\t? AssertSolanaChain<T[number]>\n\t: never;\n\ntype SignAndSendInput = Readonly<\n\tOmit<SolanaSignAndSendTransactionInput, 'account' | 'chain' | 'options'> & {\n\t\toptions?: Readonly<{\n\t\t\tminContextSlot?: bigint;\n\t\t}>;\n\t}\n>;\ntype SignAndSendOutput = SolanaSignAndSendTransactionOutput;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: SignAndSendInput) => Promise<SignAndSendOutput>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignAndSendInput) => Promise<SignAndSendOutput>;\nexport function useSignAndSendTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignAndSendInput) => Promise<SignAndSendOutput> {\n\tconst signAndSendTransactions = useSignAndSendTransactions(uiWalletAccount, chain);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signAndSendTransactions(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signAndSendTransactions],\n\t);\n}\n\nfunction useSignAndSendTransactions<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (...inputs: readonly SignAndSendInput[]) => Promise<readonly SignAndSendOutput[]> {\n\tif (!uiWalletAccount.chains.includes(chain)) {\n\t\tthrow new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n\t\t\taddress: uiWalletAccount.address,\n\t\t\tchain,\n\t\t\tfeatureName: SolanaSignAndSendTransaction,\n\t\t\tsupportedChains: [...uiWalletAccount.chains],\n\t\t\tsupportedFeatures: [...uiWalletAccount.features],\n\t\t});\n\t}\n\tconst signAndSendTransactionFeature = getWalletAccountFeature(\n\t\tuiWalletAccount,\n\t\tSolanaSignAndSendTransaction,\n\t) as SolanaSignAndSendTransactionFeature[typeof SolanaSignAndSendTransaction];\n\tconst account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithChainAndAccount = inputs.map(({ options, ...rest }) => {\n\t\t\t\tconst minContextSlot = options?.minContextSlot;\n\t\t\t\treturn {\n\t\t\t\t\t...rest,\n\t\t\t\t\taccount,\n\t\t\t\t\tchain,\n\t\t\t\t\t...(minContextSlot != null\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tminContextSlot: Number(minContextSlot),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null),\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst results = await signAndSendTransactionFeature.signAndSendTransaction(...inputsWithChainAndAccount);\n\t\t\treturn results;\n\t\t},\n\t\t[account, chain, signAndSendTransactionFeature],\n\t);\n}\n\ntype SignInInput = SolanaSignInInput;\ntype SignInOutput = Omit<SolanaSignInOutput, 'account' | 'signatureType'> &\n\tReadonly<{\n\t\taccount: UiWalletAccount;\n\t}>;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignIn(\n\tuiWalletAccount: UiWalletAccount,\n): (input?: Omit<SignInInput, 'address'>) => Promise<SignInOutput>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignIn(uiWallet: UiWallet): (input?: SignInInput) => Promise<SignInOutput>;\nexport function useSignIn(uiWalletHandle: UiWalletHandle): (input?: SignInInput) => Promise<SignInOutput> {\n\tconst signIns = useSignIns(uiWalletHandle);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signIns(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signIns],\n\t);\n}\n\nfunction useSignIns(\n\tuiWalletHandle: UiWalletHandle,\n): (...inputs: readonly (SignInInput | undefined)[]) => Promise<readonly SignInOutput[]> {\n\tlet signMessageFeature: SolanaSignInFeature[typeof SolanaSignIn];\n\tif ('address' in uiWalletHandle && typeof uiWalletHandle.address === 'string') {\n\t\tgetWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle as UiWalletAccount);\n\t\tsignMessageFeature = getWalletAccountFeature(\n\t\t\tuiWalletHandle as UiWalletAccount,\n\t\t\tSolanaSignIn,\n\t\t) as SolanaSignInFeature[typeof SolanaSignIn];\n\t} else {\n\t\tsignMessageFeature = getWalletFeature(uiWalletHandle, SolanaSignIn) as SolanaSignInFeature[typeof SolanaSignIn];\n\t}\n\tconst wallet = getWalletForHandle_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletHandle);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithAddressAndChainId = inputs.map((input) => ({\n\t\t\t\t...input,\n\t\t\t\t// Prioritize the `UiWalletAccount` address if it exists.\n\t\t\t\t...('address' in uiWalletHandle ? { address: uiWalletHandle.address as Address } : null),\n\t\t\t}));\n\t\t\tconst results = await signMessageFeature.signIn(...inputsWithAddressAndChainId);\n\t\t\tconst resultsWithoutSignatureType = results.map(\n\t\t\t\t({\n\t\t\t\t\taccount,\n\t\t\t\t\tsignatureType: _signatureType, // Solana signatures are always of type `ed25519` so drop this property.\n\t\t\t\t\t...rest\n\t\t\t\t}) => ({\n\t\t\t\t\t...rest,\n\t\t\t\t\taccount: getOrCreateUiWalletAccountForStandardWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(\n\t\t\t\t\t\twallet,\n\t\t\t\t\t\taccount,\n\t\t\t\t\t),\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn resultsWithoutSignatureType;\n\t\t},\n\t\t[signMessageFeature, uiWalletHandle, wallet],\n\t);\n}\n\ntype SignMessageInput = Omit<SolanaSignMessageInput, 'account'>;\ntype SignMessageOutput = Omit<SolanaSignMessageOutput, 'signatureType'>;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignMessage<TWalletAccount extends UiWalletAccount>(\n\t...config: Parameters<typeof useSignMessages<TWalletAccount>>\n): (input: SignMessageInput) => Promise<SignMessageOutput> {\n\tconst signMessages = useSignMessages(...config);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signMessages(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signMessages],\n\t);\n}\n\nfunction useSignMessages<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n): (...inputs: readonly SignMessageInput[]) => Promise<readonly SignMessageOutput[]> {\n\tconst signMessageFeature = getWalletAccountFeature(\n\t\tuiWalletAccount,\n\t\tSolanaSignMessage,\n\t) as SolanaSignMessageFeature[typeof SolanaSignMessage];\n\tconst account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithAccount = inputs.map((input) => ({ ...input, account }));\n\t\t\tconst results = await signMessageFeature.signMessage(...inputsWithAccount);\n\t\t\tconst resultsWithoutSignatureType = results.map(\n\t\t\t\t({\n\t\t\t\t\tsignatureType: _signatureType, // Solana signatures are always of type `ed25519` so drop this property.\n\t\t\t\t\t...rest\n\t\t\t\t}) => rest,\n\t\t\t);\n\t\t\treturn resultsWithoutSignatureType;\n\t\t},\n\t\t[signMessageFeature, account],\n\t);\n}\n\ntype SignTransactionInput = Readonly<\n\tOmit<SolanaSignTransactionInput, 'account' | 'chain' | 'options'> & {\n\t\toptions?: Readonly<{\n\t\t\tminContextSlot?: bigint;\n\t\t}>;\n\t}\n>;\ntype SignTransactionOutput = SolanaSignTransactionOutput;\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): (input: SignTransactionInput) => Promise<SignTransactionOutput>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignTransactionInput) => Promise<SignTransactionOutput>;\nexport function useSignTransaction<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (input: SignTransactionInput) => Promise<SignTransactionOutput> {\n\tconst signTransactions = useSignTransactions(uiWalletAccount, chain);\n\treturn useCallback(\n\t\tasync (input) => {\n\t\t\tconst [result] = await signTransactions(input);\n\t\t\treturn result;\n\t\t},\n\t\t[signTransactions],\n\t);\n}\n\nfunction useSignTransactions<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): (...inputs: readonly SignTransactionInput[]) => Promise<readonly SignTransactionOutput[]> {\n\tif (!uiWalletAccount.chains.includes(chain)) {\n\t\tthrow new WalletStandardError(WALLET_STANDARD_ERROR__FEATURES__WALLET_ACCOUNT_CHAIN_UNSUPPORTED, {\n\t\t\taddress: uiWalletAccount.address,\n\t\t\tchain,\n\t\t\tfeatureName: SolanaSignAndSendTransaction,\n\t\t\tsupportedChains: [...uiWalletAccount.chains],\n\t\t\tsupportedFeatures: [...uiWalletAccount.features],\n\t\t});\n\t}\n\tconst signTransactionFeature = getWalletAccountFeature(\n\t\tuiWalletAccount,\n\t\tSolanaSignTransaction,\n\t) as SolanaSignTransactionFeature[typeof SolanaSignTransaction];\n\tconst account = getWalletAccountForUiWalletAccount_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(uiWalletAccount);\n\treturn useCallback(\n\t\tasync (...inputs) => {\n\t\t\tconst inputsWithAccountAndChain = inputs.map(({ options, ...rest }) => {\n\t\t\t\tconst minContextSlot = options?.minContextSlot;\n\t\t\t\treturn {\n\t\t\t\t\t...rest,\n\t\t\t\t\taccount,\n\t\t\t\t\tchain,\n\t\t\t\t\t...(minContextSlot != null\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t\t\tminContextSlot: Number(minContextSlot),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: null),\n\t\t\t\t};\n\t\t\t});\n\t\t\tconst results = await signTransactionFeature.signTransaction(...inputsWithAccountAndChain);\n\t\t\treturn results;\n\t\t},\n\t\t[signTransactionFeature, account, chain],\n\t);\n}\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountMessageSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n): MessageModifyingSigner<TWalletAccount['address']> {\n\tconst signMessage = useSignMessage(uiWalletAccount);\n\treturn useMemo(\n\t\t() => ({\n\t\t\taddress: address(uiWalletAccount.address),\n\t\t\tasync modifyAndSignMessages(messages, config) {\n\t\t\t\tconfig?.abortSignal?.throwIfAborted();\n\t\t\t\tif (messages.length > 1) {\n\t\t\t\t\tthrow new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n\t\t\t\t}\n\t\t\t\tif (messages.length === 0) {\n\t\t\t\t\treturn messages;\n\t\t\t\t}\n\t\t\t\tconst { content: originalMessage, signatures: originalSignatureMap } = messages[0];\n\t\t\t\tconst input = {\n\t\t\t\t\tmessage: originalMessage,\n\t\t\t\t};\n\t\t\t\tconst { signedMessage, signature } = await getAbortablePromise(signMessage(input), config?.abortSignal);\n\t\t\t\tconst messageWasModified =\n\t\t\t\t\toriginalMessage.length !== signedMessage.length ||\n\t\t\t\t\toriginalMessage.some((originalByte, ii) => originalByte !== signedMessage[ii]);\n\t\t\t\tconst originalSignature = originalSignatureMap[uiWalletAccount.address as Address<string>] as\n\t\t\t\t\t| SignatureBytes\n\t\t\t\t\t| undefined;\n\t\t\t\tconst signatureIsNew = !originalSignature?.every((originalByte, ii) => originalByte === signature[ii]);\n\t\t\t\tif (!signatureIsNew && !messageWasModified) {\n\t\t\t\t\treturn messages;\n\t\t\t\t}\n\t\t\t\tconst nextSignatureMap = messageWasModified\n\t\t\t\t\t? { [uiWalletAccount.address]: signature }\n\t\t\t\t\t: { ...originalSignatureMap, [uiWalletAccount.address]: signature };\n\t\t\t\tconst outputMessages = Object.freeze([\n\t\t\t\t\tObject.freeze({\n\t\t\t\t\t\tcontent: signedMessage,\n\t\t\t\t\t\tsignatures: Object.freeze(nextSignatureMap),\n\t\t\t\t\t}) as SignableMessage,\n\t\t\t\t]);\n\t\t\t\treturn outputMessages;\n\t\t\t},\n\t\t}),\n\t\t[uiWalletAccount, signMessage],\n\t);\n}\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionModifyingSigner<TWalletAccount['address']>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionModifyingSigner<TWalletAccount['address']> {\n\tconst encoderRef = useRef<ReturnType<typeof getTransactionCodec> | null>(null);\n\tconst signTransaction = useSignTransaction(uiWalletAccount, chain);\n\treturn useMemo(\n\t\t() => ({\n\t\t\taddress: address(uiWalletAccount.address),\n\t\t\tasync modifyAndSignTransactions(transactions, config = {}) {\n\t\t\t\tconst { abortSignal, ...options } = config;\n\t\t\t\tabortSignal?.throwIfAborted();\n\t\t\t\tlet transactionCodec = encoderRef.current;\n\t\t\t\tif (!transactionCodec) {\n\t\t\t\t\ttransactionCodec = getTransactionCodec();\n\t\t\t\t\tencoderRef.current = transactionCodec;\n\t\t\t\t}\n\t\t\t\tif (transactions.length > 1) {\n\t\t\t\t\tthrow new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n\t\t\t\t}\n\t\t\t\tif (transactions.length === 0) {\n\t\t\t\t\treturn transactions as readonly (Transaction &\n\t\t\t\t\t\tTransactionWithinSizeLimit &\n\t\t\t\t\t\tTransactionWithLifetime)[];\n\t\t\t\t}\n\t\t\t\tconst [transaction] = transactions;\n\t\t\t\tconst wireTransactionBytes = transactionCodec.encode(transaction);\n\t\t\t\tconst inputWithOptions = {\n\t\t\t\t\t...options,\n\t\t\t\t\ttransaction: wireTransactionBytes as Uint8Array,\n\t\t\t\t};\n\t\t\t\tconst { signedTransaction } = await getAbortablePromise(signTransaction(inputWithOptions), abortSignal);\n\t\t\t\tconst decodedSignedTransaction = transactionCodec.decode(\n\t\t\t\t\tsignedTransaction,\n\t\t\t\t) as (typeof transactions)[number];\n\n\t\t\t\tassertIsTransactionWithinSizeLimit(decodedSignedTransaction);\n\n\t\t\t\tconst existingLifetime =\n\t\t\t\t\t'lifetimeConstraint' in transaction\n\t\t\t\t\t\t? (transaction as TransactionWithLifetime).lifetimeConstraint\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\tif (existingLifetime) {\n\t\t\t\t\tif (uint8ArraysEqual(decodedSignedTransaction.messageBytes, transaction.messageBytes)) {\n\t\t\t\t\t\treturn Object.freeze([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...decodedSignedTransaction,\n\t\t\t\t\t\t\t\tlifetimeConstraint: existingLifetime,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst compiledTransactionMessage = getCompiledTransactionMessageDecoder().decode(\n\t\t\t\t\t\tdecodedSignedTransaction.messageBytes,\n\t\t\t\t\t);\n\t\t\t\t\tconst currentToken =\n\t\t\t\t\t\t'blockhash' in existingLifetime ? existingLifetime.blockhash : existingLifetime.nonce;\n\n\t\t\t\t\tif (compiledTransactionMessage.lifetimeToken === currentToken) {\n\t\t\t\t\t\treturn Object.freeze([\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t...decodedSignedTransaction,\n\t\t\t\t\t\t\t\tlifetimeConstraint: existingLifetime,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst compiledTransactionMessage = getCompiledTransactionMessageDecoder().decode(\n\t\t\t\t\tdecodedSignedTransaction.messageBytes,\n\t\t\t\t);\n\t\t\t\tconst lifetimeConstraint =\n\t\t\t\t\tawait getTransactionLifetimeConstraintFromCompiledTransactionMessage(compiledTransactionMessage);\n\t\t\t\treturn Object.freeze([\n\t\t\t\t\t{\n\t\t\t\t\t\t...decodedSignedTransaction,\n\t\t\t\t\t\tlifetimeConstraint,\n\t\t\t\t\t},\n\t\t\t\t]);\n\t\t\t},\n\t\t}),\n\t\t[uiWalletAccount.address, signTransaction],\n\t);\n}\n\nfunction uint8ArraysEqual(arr1: ReadonlyUint8Array, arr2: ReadonlyUint8Array) {\n\treturn arr1.length === arr2.length && arr1.every((value, index) => value === arr2[index]);\n}\n\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: OnlySolanaChains<TWalletAccount['chains']>,\n): TransactionSendingSigner<TWalletAccount['address']>;\n/**\n * @deprecated Use `@solana/react` for Wallet Standard hooks; this shim will be removed in a future release.\n */\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']>;\nexport function useWalletAccountTransactionSendingSigner<TWalletAccount extends UiWalletAccount>(\n\tuiWalletAccount: TWalletAccount,\n\tchain: `solana:${string}`,\n): TransactionSendingSigner<TWalletAccount['address']> {\n\tconst encoderRef = useRef<ReturnType<typeof getTransactionEncoder> | null>(null);\n\tconst signAndSendTransaction = useSignAndSendTransaction(uiWalletAccount, chain);\n\treturn useMemo(\n\t\t() => ({\n\t\t\taddress: address(uiWalletAccount.address),\n\t\t\tasync signAndSendTransactions(transactions, config = {}) {\n\t\t\t\tconst { abortSignal, ...options } = config;\n\t\t\t\tabortSignal?.throwIfAborted();\n\t\t\t\tlet transactionEncoder = encoderRef.current;\n\t\t\t\tif (!transactionEncoder) {\n\t\t\t\t\ttransactionEncoder = getTransactionEncoder();\n\t\t\t\t\tencoderRef.current = transactionEncoder;\n\t\t\t\t}\n\t\t\t\tif (transactions.length > 1) {\n\t\t\t\t\tthrow new SolanaError(SOLANA_ERROR__SIGNER__WALLET_MULTISIGN_UNIMPLEMENTED);\n\t\t\t\t}\n\t\t\t\tif (transactions.length === 0) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\tconst [transaction] = transactions;\n\t\t\t\tconst wireTransactionBytes = transactionEncoder.encode(transaction);\n\t\t\t\tconst inputWithOptions = {\n\t\t\t\t\t...options,\n\t\t\t\t\ttransaction: wireTransactionBytes as Uint8Array,\n\t\t\t\t};\n\t\t\t\tconst { signature } = await getAbortablePromise(signAndSendTransaction(inputWithOptions), abortSignal);\n\t\t\t\treturn Object.freeze([signature as SignatureBytes]);\n\t\t\t},\n\t\t}),\n\t\t[signAndSendTransaction, uiWalletAccount.address],\n\t);\n}\n"]}