@dynamic-labs-sdk/react-hooks 1.20.0 → 1.21.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.
- package/dist/exports/index.d.ts +9 -0
- package/dist/exports/index.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useAddBusinessAccountMember/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountMember/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountMember/useAddBusinessAccountMember.d.ts +49 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountMember/useAddBusinessAccountMember.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountSigner/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountSigner/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountSigner/useAddBusinessAccountSigner.d.ts +52 -0
- package/dist/hooks/wrappers/functions/useAddBusinessAccountSigner/useAddBusinessAccountSigner.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useAddWalletToBusinessAccount/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useAddWalletToBusinessAccount/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useAddWalletToBusinessAccount/useAddWalletToBusinessAccount.d.ts +50 -0
- package/dist/hooks/wrappers/functions/useAddWalletToBusinessAccount/useAddWalletToBusinessAccount.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useCreateBusinessAccount/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useCreateBusinessAccount/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useCreateBusinessAccount/useCreateBusinessAccount.d.ts +45 -0
- package/dist/hooks/wrappers/functions/useCreateBusinessAccount/useCreateBusinessAccount.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useCreateWalletForBusinessAccount/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useCreateWalletForBusinessAccount/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useCreateWalletForBusinessAccount/useCreateWalletForBusinessAccount.d.ts +55 -0
- package/dist/hooks/wrappers/functions/useCreateWalletForBusinessAccount/useCreateWalletForBusinessAccount.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useGetBusinessAccount/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useGetBusinessAccount/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useGetBusinessAccount/useGetBusinessAccount.d.ts +42 -0
- package/dist/hooks/wrappers/functions/useGetBusinessAccount/useGetBusinessAccount.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useListBusinessAccounts/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useListBusinessAccounts/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useListBusinessAccounts/useListBusinessAccounts.d.ts +37 -0
- package/dist/hooks/wrappers/functions/useListBusinessAccounts/useListBusinessAccounts.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountMember/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountMember/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountMember/useRemoveBusinessAccountMember.d.ts +46 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountMember/useRemoveBusinessAccountMember.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountSigner/index.d.ts +2 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountSigner/index.d.ts.map +1 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountSigner/useRemoveBusinessAccountSigner.d.ts +47 -0
- package/dist/hooks/wrappers/functions/useRemoveBusinessAccountSigner/useRemoveBusinessAccountSigner.d.ts.map +1 -0
- package/dist/index.cjs +216 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +209 -3
- package/dist/index.esm.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -4
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","names":["EMPTY_MIDDLEWARES: ReadonlyArray<MutationMiddleware>","EMPTY_MIDDLEWARES","EMPTY_MIDDLEWARES: ReadonlyArray<QueryMiddleware>","map: UseBaseStateEventsMap","packageName","packageVersion"],"sources":["../package.json","../src/modules/DynamicContext/DynamicContext.ts","../src/modules/DynamicContext/DynamicProvider.tsx","../src/errors/MissingProviderError/MissingProviderError.ts","../src/modules/DynamicContext/useDynamicClient.ts","../src/foundation/useBaseMutation/useBaseMutation.ts","../src/hooks/wrappers/functions/useAcknowledgeRecoveryCodes/useAcknowledgeRecoveryCodes.ts","../src/foundation/hookKeyNamespace/hookKeyNamespace.ts","../src/foundation/useBaseQuery/queryKeyPrefix.ts","../src/foundation/useBaseQuery/useBaseQuery.ts","../src/hooks/wrappers/functions/useOnWalletProviderEvent/useOnWalletProviderEvent.ts","../src/middlewares/invalidateOnWalletProviderEvent/invalidateOnWalletProviderEvent.ts","../src/hooks/wrappers/functions/useGetActiveNetworkData/useGetActiveNetworkData.ts","../src/hooks/wrappers/functions/useGetActiveNetworkId/useGetActiveNetworkId.ts","../src/hooks/wrappers/functions/useAddNetwork/useAddNetwork.ts","../src/hooks/wrappers/functions/useAssertWalletAccountSigningAvailability/useAssertWalletAccountSigningAvailability.ts","../src/hooks/wrappers/functions/useAttachFlowSource/useAttachFlowSource.ts","../src/hooks/wrappers/functions/useAuthenticateMfaRecoveryCode/useAuthenticateMfaRecoveryCode.ts","../src/hooks/wrappers/functions/useAuthenticatePasskeyMFA/useAuthenticatePasskeyMFA.ts","../src/middlewares/invalidatesQueries/invalidatesQueries.ts","../src/hooks/wrappers/functions/useAuthenticateTotpMfaDevice/useAuthenticateTotpMfaDevice.ts","../src/foundation/useBaseState/useBaseState.ts","../src/hooks/wrappers/functions/useGetAvailableWalletProvidersData/useGetAvailableWalletProvidersData.ts","../src/hooks/wrappers/functions/useGetBalanceForAddress/useGetBalanceForAddress.ts","../src/hooks/wrappers/functions/useBroadcastFlow/useBroadcastFlow.ts","../src/hooks/wrappers/functions/useCancelFlow/useCancelFlow.ts","../src/hooks/wrappers/functions/useCheckStepUpAuth/useCheckStepUpAuth.ts","../src/hooks/wrappers/functions/useGetCoinbaseBuyUrl/useGetCoinbaseBuyUrl.ts","../src/hooks/wrappers/functions/useAddCoinbaseOnrampOrderEventListener/useAddCoinbaseOnrampOrderEventListener.ts","../src/hooks/wrappers/functions/useCompleteDeviceRegistration/useCompleteDeviceRegistration.ts","../src/hooks/wrappers/functions/useCompleteSocialRedirect/useCompleteSocialRedirect.ts","../src/hooks/wrappers/functions/useDetectSocialRedirectUrl/useDetectSocialRedirectUrl.ts","../src/hooks/wrappers/functions/useConfirmTransaction/useConfirmTransaction.ts","../src/hooks/wrappers/functions/useConnectAndVerifyWithWalletProvider/useConnectAndVerifyWithWalletProvider.ts","../src/hooks/wrappers/functions/useOnEvent/useOnEvent.ts","../src/middlewares/invalidateOnEvent/invalidateOnEvent.ts","../src/hooks/wrappers/functions/useGetConnectedAddresses/useGetConnectedAddresses.ts","../src/hooks/wrappers/functions/useConnectWithWalletProvider/useConnectWithWalletProvider.ts","../src/hooks/wrappers/functions/useCreateCoinbaseOnrampOrder/useCreateCoinbaseOnrampOrder.ts","../src/hooks/wrappers/functions/useCreateCryptoDotComPayment/useCreateCryptoDotComPayment.ts","../src/hooks/wrappers/functions/useCreateNewMfaRecoveryCodes/useCreateNewMfaRecoveryCodes.ts","../src/hooks/wrappers/functions/useDeleteMfaDevice/useDeleteMfaDevice.ts","../src/hooks/wrappers/functions/useDeletePasskey/useDeletePasskey.ts","../src/hooks/wrappers/functions/useDeleteUser/useDeleteUser.ts","../src/hooks/wrappers/functions/useExecuteSwapTransaction/useExecuteSwapTransaction.ts","../src/hooks/wrappers/functions/useGetFlow/useGetFlow.ts","../src/hooks/wrappers/functions/useGetFlowQuote/useGetFlowQuote.ts","../src/hooks/wrappers/functions/usePrepareFlowSigning/usePrepareFlowSigning.ts","../src/middlewares/invalidateOnUserSwitch/invalidateOnUserSwitch.ts","../src/hooks/wrappers/functions/useGetGoogleDriveBackupReadiness/useGetGoogleDriveBackupReadiness.ts","../src/hooks/wrappers/functions/useIsMfaRequiredForAction/useIsMfaRequiredForAction.ts","../src/hooks/wrappers/functions/useGetKrakenAccounts/useGetKrakenAccounts.ts","../src/hooks/wrappers/functions/useCreateKrakenExchangeTransfer/useCreateKrakenExchangeTransfer.ts","../src/hooks/wrappers/functions/useGetKrakenWhitelistedAddresses/useGetKrakenWhitelistedAddresses.ts","../src/hooks/wrappers/functions/useLogout/useLogout.ts","../src/hooks/wrappers/functions/useMergeUserAccounts/useMergeUserAccounts.ts","../src/hooks/wrappers/functions/useGetMfaDevices/useGetMfaDevices.ts","../src/hooks/wrappers/functions/useGetMfaMethods/useGetMfaMethods.ts","../src/hooks/wrappers/functions/useGetMfaRecoveryCodes/useGetMfaRecoveryCodes.ts","../src/hooks/wrappers/functions/useGetMoonPayCurrencies/useGetMoonPayCurrencies.ts","../src/hooks/wrappers/functions/useGetMoonPayUrl/useGetMoonPayUrl.ts","../src/hooks/wrappers/functions/useGetMultichainTokenBalances/useGetMultichainTokenBalances.ts","../src/hooks/wrappers/functions/useGetNativeBalance/useGetNativeBalance.ts","../src/hooks/wrappers/functions/useOnceEvent/useOnceEvent.ts","../src/hooks/wrappers/functions/useGetPasskeys/useGetPasskeys.ts","../src/hooks/wrappers/functions/useProveWalletAccountOwnership/useProveWalletAccountOwnership.ts","../src/hooks/wrappers/functions/useRefreshAuth/useRefreshAuth.ts","../src/hooks/wrappers/functions/useGetRegisteredDevices/useGetRegisteredDevices.ts","../src/hooks/wrappers/functions/useRegisterPasskey/useRegisterPasskey.ts","../src/hooks/wrappers/functions/useRegisterTotpMfaDevice/useRegisterTotpMfaDevice.ts","../src/hooks/wrappers/functions/useRemoveWalletAccount/useRemoveWalletAccount.ts","../src/hooks/wrappers/functions/useRequestExternalAuthElevatedToken/useRequestExternalAuthElevatedToken.ts","../src/hooks/wrappers/functions/useRevokeAllRegisteredDevices/useRevokeAllRegisteredDevices.ts","../src/hooks/wrappers/functions/useRevokeRegisteredDevice/useRevokeRegisteredDevice.ts","../src/hooks/wrappers/functions/useSendEmailOTP/useSendEmailOTP.ts","../src/hooks/wrappers/functions/useSendSmsOTP/useSendSmsOTP.ts","../src/hooks/wrappers/functions/useSetDefaultMfaDevice/useSetDefaultMfaDevice.ts","../src/hooks/wrappers/functions/useSignInWithExternalJwt/useSignInWithExternalJwt.ts","../src/hooks/wrappers/functions/useSignInWithPasskey/useSignInWithPasskey.ts","../src/hooks/wrappers/functions/useSignInWithSocialPopUp/useSignInWithSocialPopUp.ts","../src/hooks/wrappers/functions/useSignInWithSocialRedirect/useSignInWithSocialRedirect.ts","../src/hooks/wrappers/functions/useSignMessage/useSignMessage.ts","../src/hooks/wrappers/functions/useSubmitFlowTransaction/useSubmitFlowTransaction.ts","../src/hooks/wrappers/functions/useGetSwapQuote/useGetSwapQuote.ts","../src/hooks/wrappers/functions/useGetSwapStatus/useGetSwapStatus.ts","../src/hooks/wrappers/functions/useSwitchActiveNetwork/useSwitchActiveNetwork.ts","../src/hooks/wrappers/functions/useGetTokenBalances/useGetTokenBalances.ts","../src/hooks/wrappers/functions/useGetTransactionHistory/useGetTransactionHistory.ts","../src/hooks/wrappers/functions/useTransferAmount/useTransferAmount.ts","../src/hooks/wrappers/functions/useTransferWalletAccount/useTransferWalletAccount.ts","../src/hooks/wrappers/functions/useUnlinkSocialAccount/useUnlinkSocialAccount.ts","../src/hooks/wrappers/functions/useUpdateUser/useUpdateUser.ts","../src/hooks/wrappers/functions/useGetUserSocialAccounts/useGetUserSocialAccounts.ts","../src/hooks/wrappers/functions/useVerifyOTP/useVerifyOTP.ts","../src/hooks/wrappers/functions/useVerifyWalletAccount/useVerifyWalletAccount.ts","../src/hooks/wrappers/functions/useGetWalletAccounts/useGetWalletAccounts.ts","../src/hooks/wrappers/functions/useGetWalletConnectCatalog/useGetWalletConnectCatalog.ts","../src/hooks/wrappers/functions/useGetWalletConnectCatalogWalletByWalletProviderKey/useGetWalletConnectCatalogWalletByWalletProviderKey.ts","../src/hooks/wrappers/functions/useGetWalletOptionsCatalogue/useGetWalletOptionsCatalogue.ts","../src/hooks/wrappers/functions/useGetWalletProviderDataByKey/useGetWalletProviderDataByKey.ts","../src/hooks/wrappers/functions/useIsDeviceRegistrationRequired/useIsDeviceRegistrationRequired.ts","../src/hooks/wrappers/functions/useIsUserMissingMfaAuth/useIsUserMissingMfaAuth.ts","../src/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/useIsPendingRecoveryCodesAcknowledgment.ts","../src/hooks/wrappers/functions/useIsUserOnboardingComplete/useIsUserOnboardingComplete.ts","../src/hooks/wrappers/functions/useBackupWaasKeySharesToGoogleDrive/useBackupWaasKeySharesToGoogleDrive.ts","../src/hooks/wrappers/functions/useCreateWaasWalletAccounts/useCreateWaasWalletAccounts.ts","../src/hooks/wrappers/functions/useDelegateWaasKeyShares/useDelegateWaasKeyShares.ts","../src/hooks/wrappers/functions/useExportWaasClientKeyshares/useExportWaasClientKeyshares.ts","../src/hooks/wrappers/functions/useExportWaasPrivateKey/useExportWaasPrivateKey.ts","../src/hooks/wrappers/functions/useGetWalletRecoveryState/useGetWalletRecoveryState.ts","../src/hooks/wrappers/functions/useImportWaasPrivateKey/useImportWaasPrivateKey.ts","../src/hooks/wrappers/functions/useMigrateFromFireblocks/useMigrateFromFireblocks.ts","../src/hooks/wrappers/functions/useRefreshWaasWalletAccountShares/useRefreshWaasWalletAccountShares.ts","../src/hooks/wrappers/functions/useRevokeWaasDelegation/useRevokeWaasDelegation.ts","../src/hooks/wrappers/functions/useSetWaasWalletAccountPassword/useSetWaasWalletAccountPassword.ts","../src/hooks/wrappers/functions/useUnlockWallet/useUnlockWallet.ts","../src/hooks/wrappers/functions/useUpdateWaasPassword/useUpdateWaasPassword.ts","../src/hooks/wrappers/state/useInitStatus/useInitStatus.ts","../src/hooks/wrappers/state/useSessionExpiresAt/useSessionExpiresAt.ts","../src/hooks/wrappers/state/useUser/useUser.ts","../src/exports/index.ts"],"sourcesContent":["","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { createContext } from 'react';\n\n/**\n * Internal React context for providing the DynamicClient instance to hooks.\n */\nexport const DynamicContext = createContext<DynamicClient | null>(null);\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport type { PropsWithChildren } from 'react';\n\nimport { DynamicContext } from './DynamicContext';\n\ntype DynamicProviderProps = PropsWithChildren<{\n client: DynamicClient;\n}>;\n\n/**\n * Provides the DynamicClient instance to all child hooks.\n *\n * Wrap your application with this provider and pass your client instance\n * so that hooks like useUser, useGetWalletAccounts, etc. can access it.\n */\nexport const DynamicProvider = ({ children, client }: DynamicProviderProps) => (\n <DynamicContext.Provider value={client}>{children}</DynamicContext.Provider>\n);\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class MissingProviderError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'MISSING_PROVIDER',\n docsUrl: null,\n name: 'MissingProviderError',\n shortMessage:\n 'Hook must be used within a <DynamicProvider>.\\nWrap your component tree with <DynamicProvider client={client}>.',\n });\n }\n}\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { useContext } from 'react';\n\nimport { MissingProviderError } from '../../errors/MissingProviderError/MissingProviderError';\nimport { DynamicContext } from './DynamicContext';\n\n/**\n * Internal hook to access the DynamicClient from context.\n * Throws if used outside of DynamicProvider.\n */\nexport const useDynamicClient = (): DynamicClient => {\n const client = useContext(DynamicContext);\n\n if (!client) {\n throw new MissingProviderError();\n }\n\n return client;\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { waitForClientInitialized } from '@dynamic-labs-sdk/client';\nimport type {\n UseMutationOptions,\n UseMutationResult,\n} from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\n/**\n * A mutation middleware is a named hook that contributes mutation lifecycle\n * behavior — currently an `onSuccess` handler merged into the react-query\n * options.\n *\n * It owns its own reactive subscriptions (e.g. `invalidatesQueries` reads\n * `useQueryClient()`) and the behavior lives in the middleware itself.\n * `useBaseMutation` chains the `onSuccess` of every middleware it receives\n * and has zero knowledge of what any individual middleware does — to add a\n * success side effect you write a new `MutationMiddleware`, never edit this\n * file.\n */\nexport type MutationMiddleware<TData = unknown, TVariables = unknown> = () => Pick<\n UseMutationOptions<TData, Error, TVariables>,\n 'onSuccess'\n>;\n\nconst EMPTY_MIDDLEWARES: ReadonlyArray<MutationMiddleware> = [];\n\nexport type UseBaseMutationParams<TData, TVariables, TError = Error> = {\n /**\n * Named middlewares the mutation runs on success. Each is invoked on every\n * render and the `onSuccess` it contributes is chained (in order) ahead of\n * the consumer's own `onSuccess`. The behavior lives in the middleware\n * itself (see `MutationMiddleware`).\n */\n middlewares?: ReadonlyArray<MutationMiddleware>;\n /**\n * Override-only react-query mutation options. Anything set here wins\n * over the defaults (mutationFn). Customers use this to attach\n * `onSuccess` / `onError` callbacks, retry policies, etc.\n */\n mutateParams?: Omit<\n UseMutationOptions<TData, TError, TVariables>,\n 'mutationFn'\n >;\n /**\n * The action. Receives the live `DynamicClient` from context plus the\n * variables passed when the caller invokes `mutate(variables)`.\n */\n mutationFn: (params: {\n client: DynamicClient;\n variables: TVariables;\n }) => Promise<TData>;\n};\n\n/**\n * Internal hook that wraps a react-query `useMutation` with the conventions\n * used by every async-write hook in this package:\n *\n * - `mutationFn` receives the resolved `DynamicClient` from context plus\n * the caller-supplied `variables`, and is gated behind\n * `waitForClientInitialized`.\n * - Callers pass `mutateParams` to override any default\n * `UseMutationOptions`, so consumers can wire `onSuccess` / `onError` /\n * etc.\n * - Callers pass `middlewares` (named hooks like `invalidatesQueries`) and\n * each contributed `onSuccess` runs, in order, ahead of the consumer's own.\n *\n * Returns the full `useMutation` result — `mutate`, `mutateAsync`, `data`,\n * `error`, `isPending`, `isSuccess`, `reset`, `status`, etc.\n */\nexport const useBaseMutation = <TData, TVariables = void, TError = Error>({\n middlewares = EMPTY_MIDDLEWARES,\n mutationFn,\n mutateParams,\n}: UseBaseMutationParams<\n TData,\n TVariables,\n TError\n>): UseMutationResult<TData, TError, TVariables> => {\n const client = useDynamicClient();\n\n // Each middleware is a hook. The `middlewares` array a hook passes is a\n // stable module-level constant, so call order is constant across renders.\n const contributions = middlewares.map((useMiddleware) => useMiddleware());\n\n return useMutation<TData, TError, TVariables>({\n mutationFn: async (variables: TVariables) => {\n await waitForClientInitialized(client);\n return mutationFn({ client, variables });\n },\n ...mutateParams,\n onSuccess: async (...args) => {\n // Await each contribution so async middlewares (e.g. `invalidatesQueries`,\n // whose `onSuccess` returns the `invalidateQueries` promise) run to\n // completion in order before the consumer's own `onSuccess`, and so their\n // rejections surface instead of becoming unhandled promise rejections.\n for (const contribution of contributions) {\n await contribution.onSuccess?.(...args);\n }\n\n return mutateParams?.onSuccess?.(...args);\n },\n });\n};\n","import { acknowledgeRecoveryCodes } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AcknowledgeRecoveryCodesResult = Awaited<\n ReturnType<typeof acknowledgeRecoveryCodes>\n>;\n\nexport type UseAcknowledgeRecoveryCodesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AcknowledgeRecoveryCodesResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Marks the current user's MFA recovery codes as acknowledged. Takes no arguments — call `mutate()` after the user confirms they have stored the codes shown by {@link useGetMfaRecoveryCodes}.\n *\n * @example\n * ```tsx\n * const { mutate: acknowledge, isPending } = useAcknowledgeRecoveryCodes();\n * <button onClick={() => acknowledge()} disabled={isPending}>\n * I've saved my recovery codes\n * </button>\n * ```\n */\nexport const useAcknowledgeRecoveryCodes = ({\n mutateParams,\n}: UseAcknowledgeRecoveryCodesParams = {}) =>\n useBaseMutation<AcknowledgeRecoveryCodesResult, void>({\n mutateParams,\n mutationFn: ({ client }) => acknowledgeRecoveryCodes(client),\n });\n","/**\n * Root namespace shared by every react-query key this package creates.\n * Both `QUERY_KEY_PREFIX` (async-read hooks) and the state-hook key\n * prefix derive from this constant so the namespace is defined exactly\n * once.\n */\nexport const HOOK_KEY_NAMESPACE = '@dynamic-labs-sdk/react-hooks' as const;\n","import { HOOK_KEY_NAMESPACE } from '../hookKeyNamespace/hookKeyNamespace';\n\n/**\n * Shared prefix for all query keys created by `useBaseQuery`. Mutation hooks\n * reference this when invalidating related queries on success.\n */\nexport const QUERY_KEY_PREFIX = [HOOK_KEY_NAMESPACE, 'query'] as const;\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { waitForClientInitialized } from '@dynamic-labs-sdk/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\n\nimport { useDynamicClient } from '../../modules/DynamicContext';\nimport { QUERY_KEY_PREFIX } from './queryKeyPrefix';\n\n/**\n * Context `useBaseQuery` hands to every middleware on each render.\n *\n * `queryKey` is the fully namespaced cache key of the query the middleware is\n * attached to, so side-effecting middlewares (such as the one that invalidates\n * a query on a wallet provider event) can invalidate exactly that query\n * without the hook having to thread its key through by hand.\n */\nexport type QueryMiddlewareContext = {\n queryKey: ReadonlyArray<unknown>;\n};\n\n/**\n * A query middleware is a named hook that plugs reactive behavior into a query.\n *\n * It owns its own subscriptions (e.g. `invalidateOnWalletProviderEvent` listens\n * to a wallet provider event) and invalidates the query's cache key when\n * something it cares about changes. Middlewares are purely side-effecting:\n * `useBaseQuery` runs every one it receives on each render and has zero\n * knowledge of what any individual middleware does — to add behavior you write\n * a new `QueryMiddleware`, never edit this file.\n *\n * The context is optional so a middleware that ignores it (and tests that\n * invoke a middleware directly) can be called with no arguments; `useBaseQuery`\n * always supplies it at runtime.\n */\nexport type QueryMiddleware = (context?: QueryMiddlewareContext) => void;\n\n/**\n * Stable empty default for the `middlewares` param so the common case never\n * allocates a fresh array per render.\n */\nconst EMPTY_MIDDLEWARES: ReadonlyArray<QueryMiddleware> = [];\n\nexport type UseBaseQueryParams<TData, TError = Error> = {\n /**\n * When false, the query is disabled (react-query returns the\n * placeholder/empty result instead of calling `queryFn`). Hooks set this\n * to false when their pseudo-required arguments are missing — see hook\n * JSDocs for what those are.\n */\n enabled?: boolean;\n /**\n * Named middleware hooks that plug behavior into the query. Each is invoked\n * on every render with the query's context to run its reactive subscription\n * (e.g. invalidating the query on an event). The behavior lives in the\n * middleware itself (see `QueryMiddleware`).\n */\n middlewares?: ReadonlyArray<QueryMiddleware>;\n /**\n * The fetcher. Receives the live `DynamicClient` from context so callers\n * don't have to pull it themselves.\n */\n queryFn: (client: DynamicClient) => Promise<TData>;\n /**\n * Unique key for this hook's queries. The dynamic-labs-sdk prefix + the\n * supplied `keyExtension` (often the hook's argument shape) namespace the\n * react-query cache entry.\n */\n queryKey: ReadonlyArray<unknown>;\n /**\n * Override-only react-query options. Anything set here wins over the\n * defaults (queryFn, queryKey, enabled). Customers use this to tune\n * behavior such as `retry`, `staleTime`, `placeholderData`, etc.\n */\n queryParams?: Omit<UseQueryOptions<TData, TError>, 'queryFn' | 'queryKey'>;\n};\n\n/**\n * Internal hook that wraps a react-query `useQuery` with the conventions used\n * by every async-read hook in this package:\n *\n * - `queryFn` receives the resolved `DynamicClient` from context, and is\n * gated behind `waitForClientInitialized` so customers never see \"client\n * not ready\" errors on first render.\n * - Callers pass `queryParams` to override any default `UseQueryOptions`,\n * so consumers can opt into retries / custom staleTime / etc.\n * - Callers pass `enabled: false` (typically derived from whether their\n * pseudo-required arguments are present) to short-circuit fetches.\n * - Callers pass `middlewares` (named hooks that run reactive subscriptions\n * such as cache invalidation); each runs on every render.\n *\n * Returns the full `useQuery` result — `data`, `error`, `isLoading`,\n * `isFetching`, `isSuccess`, `refetch`, `status`, etc.\n */\nexport const useBaseQuery = <TData, TError = Error>({\n enabled = true,\n middlewares = EMPTY_MIDDLEWARES,\n queryFn,\n queryKey,\n queryParams,\n}: UseBaseQueryParams<TData, TError>): UseQueryResult<TData, TError> => {\n const client = useDynamicClient();\n\n const fullQueryKey = useMemo(\n () => [...QUERY_KEY_PREFIX, ...queryKey],\n [queryKey]\n );\n\n // Each middleware is a hook, so every one must run unconditionally on each\n // render: a plain loop keeps the same number and order of hook calls no\n // matter what. A hook always passes the same fixed middlewares in the same\n // order.\n middlewares.forEach((useMiddleware) =>\n useMiddleware({ queryKey: fullQueryKey })\n );\n\n return useQuery({\n queryFn: async () => {\n await waitForClientInitialized(client);\n return queryFn(client);\n },\n queryKey: fullQueryKey,\n ...queryParams,\n enabled: enabled && queryParams?.enabled !== false,\n });\n};\n","import {\n type OnWalletProviderEventParams,\n type WalletProviderEvents,\n onWalletProviderEvent,\n} from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\n/**\n * Params for `useOnWalletProviderEvent`.\n *\n * Widens the client's `OnWalletProviderEventParams` so `walletProviderKey` may\n * be `undefined`: callers that derive the key from an optional wallet account\n * (e.g. a query middleware) can call the hook unconditionally and have it\n * no-op until a provider is known.\n */\nexport type UseOnWalletProviderEventParams<\n E extends Extract<keyof WalletProviderEvents, string>\n> = Omit<OnWalletProviderEventParams<E>, 'walletProviderKey'> & {\n walletProviderKey: string | undefined;\n};\n\n/**\n * Subscribes to an event emitted by a specific wallet provider.\n *\n * Wraps `onWalletProviderEvent` from `@dynamic-labs-sdk/client`. Uses a ref to\n * always call the latest callback without re-subscribing, and cleans up the\n * subscription on unmount or when `event` / `walletProviderKey` change. When\n * `walletProviderKey` is `undefined` the hook subscribes to nothing. When the\n * provider cannot be subscribed to (not registered on this client, or it does\n * not expose `events`), the hook logs and subscribes to nothing rather than\n * throwing — an effect throw would unmount the entire app.\n *\n * @example\n * ```tsx\n * useOnWalletProviderEvent({\n * walletProviderKey: 'metamaskevm',\n * event: 'accountsChanged',\n * callback: ({ addresses }) => console.log(addresses),\n * });\n * ```\n */\nexport const useOnWalletProviderEvent = <\n E extends Extract<keyof WalletProviderEvents, string>\n>({\n callback,\n event,\n walletProviderKey,\n}: UseOnWalletProviderEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(callback);\n\n callbackRef.current = callback;\n\n useEffect(() => {\n if (walletProviderKey === undefined) {\n return;\n }\n\n // Subscribing can throw when the provider is not registered on this client\n // (e.g. a wallet account created on another surface whose chain extension\n // is not installed here) or when the provider does not expose `events`.\n // A throw inside an effect unmounts the whole React tree — a hard crash in\n // release builds — so an unsubscribable provider must degrade to \"never\n // notifies\" instead of propagating.\n try {\n return onWalletProviderEvent(\n {\n callback: ((...args: any[]) => {\n // @ts-expect-error - Ignore the type error because we are using the ref\n callbackRef.current(...args);\n }) as WalletProviderEvents[E],\n event,\n walletProviderKey,\n },\n client\n );\n } catch (error) {\n getCore(client).logger.debug(\n '[useOnWalletProviderEvent] failed to subscribe to wallet provider event',\n { error, event, walletProviderKey }\n );\n\n return undefined;\n }\n }, [event, walletProviderKey, client]);\n};\n","import type {\n WalletAccount,\n WalletProviderEvents,\n} from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type { QueryMiddleware } from '../../foundation/useBaseQuery';\nimport { useOnWalletProviderEvent } from '../../hooks/wrappers/functions/useOnWalletProviderEvent';\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\nexport type InvalidateOnWalletProviderEventParams<\n E extends Extract<keyof WalletProviderEvents, string>\n> = {\n /**\n * The wallet provider event to listen for (e.g. `'networkChanged'`).\n */\n event: E;\n /**\n * The wallet account whose provider emits the event. When `undefined` the\n * subscription is a no-op, so hooks can pass an optional account directly.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Query middleware factory that refetches the query whenever the given wallet\n * account's provider emits `event` (e.g. `networkChanged`).\n *\n * It only wires up the subscription, invalidating the query's own cache key so\n * any mounted consumer refetches. This replaces the manual\n * `useOnWalletProviderEvent` + `refetch` boilerplate consumers would otherwise\n * pair with the hook. When `walletAccount` is undefined the subscription is a\n * no-op. The subscription lives here, not in `useBaseQuery`.\n *\n * @example\n * ```ts\n * useBaseQuery({\n * middlewares: [\n * invalidateOnWalletProviderEvent({ event: 'networkChanged', walletAccount }),\n * ],\n * queryFn: (client) => getActiveNetworkData({ walletAccount }, client),\n * queryKey: ['useGetActiveNetworkData', walletAccount],\n * });\n * ```\n */\nexport const invalidateOnWalletProviderEvent =\n <E extends Extract<keyof WalletProviderEvents, string>>({\n event,\n walletAccount,\n }: InvalidateOnWalletProviderEventParams<E>): QueryMiddleware =>\n (context) => {\n const client = useDynamicClient();\n const queryClient = useQueryClient();\n\n useOnWalletProviderEvent({\n callback: () => {\n // `useBaseQuery` always supplies the query's own key; the context is\n // only optional so middlewares invoked directly in tests can omit it,\n // so bail rather than invalidate an unknown key when it is absent.\n if (!context) {\n return;\n }\n\n queryClient\n .invalidateQueries({ queryKey: context.queryKey })\n .catch((error: unknown) => {\n // Swallow the rejection, but log it so internal devs can\n // troubleshoot a query that fails to refetch on the event.\n getCore(client).logger.debug(\n '[invalidateOnWalletProviderEvent] failed to invalidate query',\n {\n error,\n queryKey: context.queryKey,\n stack: error instanceof Error ? error.stack : undefined,\n }\n );\n });\n },\n event,\n walletProviderKey: walletAccount?.walletProviderKey,\n });\n };\n","import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype GetActiveNetworkDataResult = Awaited<\n ReturnType<typeof getActiveNetworkData>\n>;\ntype GetActiveNetworkDataArgs = Parameters<typeof getActiveNetworkData>[0];\n\nexport type UseGetActiveNetworkDataParams = GetActiveNetworkDataArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetActiveNetworkDataResult>['queryParams'];\n};\n\n/**\n * Wraps `getActiveNetworkData` from `@dynamic-labs-sdk/client`. Returns the network the given wallet account is currently on.\n *\n * @example\n * ```tsx\n * const { data: network, isLoading } = useGetActiveNetworkData({ walletAccount });\n * ```\n */\nexport const useGetActiveNetworkData = ({\n queryParams,\n ...args\n}: UseGetActiveNetworkDataParams) =>\n useBaseQuery<GetActiveNetworkDataResult>({\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount: args.walletAccount,\n }),\n ],\n queryFn: (client) => getActiveNetworkData(args, client),\n queryKey: ['useGetActiveNetworkData', args],\n queryParams,\n });\n","import { getActiveNetworkId } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype ActiveNetworkIdResult = Awaited<ReturnType<typeof getActiveNetworkId>>;\ntype ActiveNetworkIdArgs = Parameters<typeof getActiveNetworkId>[0];\n\nexport type UseGetActiveNetworkIdParams = ActiveNetworkIdArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<ActiveNetworkIdResult>['queryParams'];\n};\n\n/**\n * Returns the active network id for the given wallet account.\n *\n * Wraps `getActiveNetworkId` from `@dynamic-labs-sdk/client`.\n */\nexport const useGetActiveNetworkId = ({ queryParams, ...args }: UseGetActiveNetworkIdParams) =>\n useBaseQuery<ActiveNetworkIdResult>({\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount: args.walletAccount,\n }),\n ],\n queryFn: (client) => getActiveNetworkId(args, client),\n queryKey: ['useGetActiveNetworkId', args],\n queryParams,\n });\n","import { addNetwork } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AddNetworkVariables = Parameters<typeof addNetwork>[0];\ntype AddNetworkResult = Awaited<ReturnType<typeof addNetwork>>;\n\nexport type UseAddNetworkParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AddNetworkResult,\n AddNetworkVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `addNetwork` from `@dynamic-labs-sdk/client`. Call `mutate({ networkData, walletAccount })` to register a custom network on the given wallet account.\n *\n * @example\n * ```tsx\n * const { mutate: addNetwork, isPending } = useAddNetwork();\n * <button\n * onClick={() => addNetwork({ networkData, walletAccount })}\n * disabled={isPending}\n * >\n * Add network\n * </button>\n * ```\n */\nexport const useAddNetwork = ({ mutateParams }: UseAddNetworkParams = {}) =>\n useBaseMutation<AddNetworkResult, AddNetworkVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => addNetwork(variables, client),\n });\n","import { assertWalletAccountSigningAvailability } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype AssertWalletAccountSigningAvailabilityResult = Awaited<ReturnType<typeof assertWalletAccountSigningAvailability>>;\ntype AssertWalletAccountSigningAvailabilityArgs = Parameters<typeof assertWalletAccountSigningAvailability>[0];\n\nexport type UseAssertWalletAccountSigningAvailabilityParams = AssertWalletAccountSigningAvailabilityArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<AssertWalletAccountSigningAvailabilityResult>['queryParams'];\n};\n\n/**\n * Resolves when the given wallet account can sign, and errors otherwise.\n *\n * Wraps `assertWalletAccountSigningAvailability` from `@dynamic-labs-sdk/client`.\n */\nexport const useAssertWalletAccountSigningAvailability = ({ queryParams, ...args }: UseAssertWalletAccountSigningAvailabilityParams) =>\n useBaseQuery<AssertWalletAccountSigningAvailabilityResult>({\n queryFn: (client) => assertWalletAccountSigningAvailability(args, client),\n queryKey: ['useAssertWalletAccountSigningAvailability', args],\n queryParams,\n });\n","import { attachFlowSource } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AttachFlowSourceVariables = Parameters<typeof attachFlowSource>[0];\ntype AttachFlowSourceResult = Awaited<ReturnType<typeof attachFlowSource>>;\n\nexport type UseAttachFlowSourceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AttachFlowSourceResult,\n AttachFlowSourceVariables\n >['mutateParams'];\n};\n\n/**\n * Attaches a payment source to a flow.\n *\n * Wraps `attachFlowSource` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId, sourceType, fromAddress, fromChainId, fromChainName })`\n * to attach a payment source to a flow; the resolved `data` is an object containing\n * the flow and the session token.\n *\n * @example\n * ```tsx\n * const { mutate: attachFlowSource, isPending } = useAttachFlowSource();\n * <button onClick={() => attachFlowSource({ flowId, sourceType, fromAddress, fromChainId, fromChainName })} disabled={isPending}>\n * Attach flow source\n * </button>\n * ```\n */\nexport const useAttachFlowSource = ({\n mutateParams,\n}: UseAttachFlowSourceParams = {}) =>\n useBaseMutation<AttachFlowSourceResult, AttachFlowSourceVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => attachFlowSource(variables, client),\n });\n","import { authenticateMfaRecoveryCode } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AuthenticateMfaRecoveryCodeVariables = Parameters<\n typeof authenticateMfaRecoveryCode\n>[0];\ntype AuthenticateMfaRecoveryCodeResult = Awaited<\n ReturnType<typeof authenticateMfaRecoveryCode>\n>;\n\nexport type UseAuthenticateMfaRecoveryCodeParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AuthenticateMfaRecoveryCodeResult,\n AuthenticateMfaRecoveryCodeVariables\n >['mutateParams'];\n};\n\n/**\n * Authenticates the current user with one of their MFA recovery codes.\n *\n * Wraps `authenticateMfaRecoveryCode` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ code })` with a backup recovery code when no registered MFA\n * method is available; the resolved `data` is the MFA authentication\n * response.\n *\n * @example\n * ```tsx\n * const { mutate: authenticateRecoveryCode, isPending } =\n * useAuthenticateMfaRecoveryCode();\n * <button\n * onClick={() => authenticateRecoveryCode({ code })}\n * disabled={isPending}\n * >\n * Use recovery code\n * </button>\n * ```\n */\nexport const useAuthenticateMfaRecoveryCode = ({\n mutateParams,\n}: UseAuthenticateMfaRecoveryCodeParams = {}) =>\n useBaseMutation<\n AuthenticateMfaRecoveryCodeResult,\n AuthenticateMfaRecoveryCodeVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticateMfaRecoveryCode(variables, client),\n });\n","import { authenticatePasskeyMFA } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AuthenticatePasskeyMFAVariables = Parameters<\n typeof authenticatePasskeyMFA\n>[0];\ntype AuthenticatePasskeyMFAResult = Awaited<\n ReturnType<typeof authenticatePasskeyMFA>\n>;\n\nexport type UseAuthenticatePasskeyMFAParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AuthenticatePasskeyMFAResult,\n AuthenticatePasskeyMFAVariables\n >['mutateParams'];\n};\n\n/**\n * Completes an MFA challenge using the current user's passkey.\n *\n * Wraps `authenticatePasskeyMFA` from `@dynamic-labs-sdk/client`. Call\n * `mutate()` to satisfy an MFA step-up with a passkey; the resolved `data`\n * is the MFA verification response.\n *\n * @example\n * ```tsx\n * const { mutate: authenticatePasskeyMFA, isPending } =\n * useAuthenticatePasskeyMFA();\n * <button onClick={() => authenticatePasskeyMFA()} disabled={isPending}>\n * Verify with passkey\n * </button>\n * ```\n */\nexport const useAuthenticatePasskeyMFA = ({\n mutateParams,\n}: UseAuthenticatePasskeyMFAParams = {}) =>\n useBaseMutation<\n AuthenticatePasskeyMFAResult,\n AuthenticatePasskeyMFAVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticatePasskeyMFA(variables, client),\n });\n","import { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type { MutationMiddleware } from '../../foundation/useBaseMutation';\nimport { QUERY_KEY_PREFIX } from '../../foundation/useBaseQuery/queryKeyPrefix';\nimport { useDynamicClient } from '../../modules/DynamicContext/useDynamicClient';\n\n/**\n * Mutation middleware factory that invalidates one or more query hooks when\n * the mutation succeeds, so any mounted consumer of those queries refetches.\n *\n * Pass the query hooks' names (their `queryKey` leaf, e.g. `'useGetMfaDevices'`);\n * each is namespaced under `QUERY_KEY_PREFIX` to match the keys `useBaseQuery`\n * creates. The invalidation loop lives here, not in `useBaseMutation`.\n *\n * @example\n * ```ts\n * useBaseMutation({\n * middlewares: [invalidatesQueries('useGetMfaDevices')],\n * mutationFn: ({ client, variables }) => deleteMfaDevice(variables, client),\n * });\n * ```\n */\nexport const invalidatesQueries =\n (...queryKeys: ReadonlyArray<string>): MutationMiddleware =>\n () => {\n const queryClient = useQueryClient();\n\n const client = useDynamicClient();\n\n /**\n * Swallows an `invalidateQueries` rejection so a failed refetch never\n * surfaces as an unhandled rejection nor rejects the combined invalidation\n * promise, while still logging it at debug level so internal devs can see\n * which query failed to refetch. Curried over the query key and extracted\n * to a named handler so the invalidation map stays within the\n * function-nesting limit.\n */\n const debugInvalidationFailure =\n (queryKey: ReadonlyArray<string>) =>\n (error: unknown): undefined => {\n getCore(client).logger.debug(\n '[invalidatesQueries] failed to invalidate query',\n { error, queryKey, stack: error instanceof Error ? error.stack : undefined }\n );\n\n return undefined;\n };\n\n return {\n // Return the invalidation promise so `useBaseMutation` can await it,\n // keeping the refetch ordered before the consumer's own `onSuccess`.\n onSuccess: () =>\n Promise.all(\n queryKeys.map((key) => {\n const queryKey = [...QUERY_KEY_PREFIX, key];\n\n return queryClient\n .invalidateQueries({ queryKey })\n .catch(debugInvalidationFailure(queryKey));\n })\n ),\n };\n };\n","import { authenticateTotpMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype AuthenticateTotpMfaDeviceVariables = Parameters<\n typeof authenticateTotpMfaDevice\n>[0];\ntype AuthenticateTotpMfaDeviceResult = Awaited<\n ReturnType<typeof authenticateTotpMfaDevice>\n>;\n\nexport type UseAuthenticateTotpMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AuthenticateTotpMfaDeviceResult,\n AuthenticateTotpMfaDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Authenticates the current user with a TOTP code from an authenticator app.\n *\n * Wraps `authenticateTotpMfaDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ code })` with the 6-digit code; the resolved `data` is the MFA\n * authentication response.\n *\n * @example\n * ```tsx\n * const { mutate: authenticateTotp, isPending } = useAuthenticateTotpMfaDevice();\n * <button onClick={() => authenticateTotp({ code })} disabled={isPending}>\n * Verify code\n * </button>\n * ```\n */\nexport const useAuthenticateTotpMfaDevice = ({\n mutateParams,\n}: UseAuthenticateTotpMfaDeviceParams = {}) => {\n return useBaseMutation<\n AuthenticateTotpMfaDeviceResult,\n AuthenticateTotpMfaDeviceVariables\n >({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticateTotpMfaDevice(variables, client),\n });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { onEvent, waitForClientInitialized } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport type { UseQueryOptions } from '@tanstack/react-query';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useEffect, useMemo, useRef } from 'react';\n\nimport { useDynamicClient } from '../../modules/DynamicContext';\nimport { HOOK_KEY_NAMESPACE } from '../hookKeyNamespace/hookKeyNamespace';\n\n/**\n * Per-event invalidation predicate. Either `true` (always invalidate on\n * fire) or a callback that receives the event's args object and returns\n * `true` iff invalidation should occur.\n */\ntype EventPredicate<E extends keyof DynamicEvents> =\n | true\n | ((args: Parameters<DynamicEvents[E]>[0]) => boolean);\n\n/**\n * Map of event names → predicates. Listing an event opts in to listening\n * for it; the predicate decides whether each individual fire should\n * trigger a refetch.\n *\n * Loose typing here (`unknown` args, not a per-event mapped type) keeps\n * the inferred union small enough for TS to expand; the per-event\n * generic kicks in inside `subscribeWithPredicate` at the call site.\n */\nexport type UseBaseStateEventsMap = Partial<\n Record<keyof DynamicEvents, true | ((args: unknown) => boolean)>\n>;\n\nexport type UseBaseStateParams<T> = {\n /**\n * Value surfaced through `data` as the react-query placeholder while\n * the client is initializing and the selector has not yet resolved.\n * On first render, `data` equals `defaultValue`, `isPlaceholderData`\n * is `true`, and `isFetching` is `true` — callers can rely on those\n * flags to distinguish \"still resolving\" from \"resolved and the\n * answer happens to match the default\".\n */\n defaultValue: T;\n /**\n * The events that should invalidate the query. Pass a single event name\n * (shorthand for `{ [name]: true }`) or a map of `eventName → true |\n * predicate`. A `true` value invalidates on every fire; a predicate\n * receives the event's args and returns `true` iff invalidation should\n * occur for that fire (useful for narrowing — e.g. only invalidate when\n * the changed wallet account is the one this hook cares about).\n */\n event: keyof DynamicEvents | UseBaseStateEventsMap;\n /**\n * react-query `queryKey` for this hook. Internally namespaced under\n * `[HOOK_KEY_NAMESPACE, 'state', ...queryKey]`. Multiple\n * state hooks may observe the same event (e.g. `useUser`,\n * `useSessionExpiresAt`, `useGetUserSocialAccounts` all listen to\n * `userChanged`); without a unique `queryKey` they would share a cache\n * entry. Pass an array so callers can interpolate runtime values\n * (`['useGetNativeBalance', walletAccountId]`).\n */\n queryKey: ReadonlyArray<unknown>;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.). `queryFn`, `queryKey`, and\n * `placeholderData` are owned by `useBaseState` and not overridable.\n */\n queryParams?: Omit<\n UseQueryOptions<T>,\n 'queryFn' | 'queryKey' | 'placeholderData'\n >;\n selector: (client: DynamicClient) => T;\n /**\n * Escape hatch for hooks whose entire purpose is to expose state during\n * client initialization (e.g. `useInitStatus`). When `true`, `queryFn`\n * runs the selector synchronously without awaiting\n * `waitForClientInitialized`. Defaults to `false`.\n */\n skipWaitForInit?: boolean;\n};\n\n/**\n * Internal hook that bridges Dynamic client event-driven state to React via\n * react-query.\n *\n * - `queryFn` waits for the client to finish initializing (so the first\n * render never sees a half-built client) and then runs `selector`. Init\n * failures surface on `error`.\n * - The supplied `event`(s) invalidate the query whenever they fire — a\n * per-event predicate can narrow this so unrelated fires don't refetch.\n * - Returns the full `useQuery` result so consumers can read every field\n * react-query exposes (`data`, `error`, `isLoading`, `isFetching`,\n * `refetch`, `status`, ...).\n */\n// eslint-disable-next-line custom-rules/require-single-object-param -- helper takes the single `event` value, not an options bag\nconst normalizeEvents = (\n event: keyof DynamicEvents | UseBaseStateEventsMap\n): UseBaseStateEventsMap => {\n if (typeof event !== 'string') return event;\n const map: UseBaseStateEventsMap = {};\n map[event] = true;\n return map;\n};\n\ntype SubscribeWithPredicateParams<E extends keyof DynamicEvents> = {\n event: E;\n onMatch: VoidFunction;\n predicate: EventPredicate<E>;\n};\n\n/**\n * Per-event subscription wrapper. Extracted from `useBaseState` so the\n * listener generics resolve at the per-event call site rather than as the\n * intersection across all events.\n */\n// eslint-disable-next-line custom-rules/one-function-per-file -- small internal helper kept colocated with useBaseState\nconst subscribeWithPredicate = <E extends keyof DynamicEvents>(\n { event, predicate, onMatch }: SubscribeWithPredicateParams<E>,\n client: DynamicClient\n): VoidFunction => {\n // eslint-disable-next-line custom-rules/require-single-object-param -- forwards the event's own args shape\n const listener = (args: Parameters<DynamicEvents[E]>[0]) => {\n if (predicate === true || predicate(args)) {\n onMatch();\n }\n };\n return onEvent(\n { event, listener: listener as DynamicEvents[E] },\n client\n );\n};\n\n// eslint-disable-next-line custom-rules/one-function-per-file -- helpers above are colocated by design\nexport const useBaseState = <T>({\n event,\n queryKey,\n queryParams,\n selector,\n defaultValue,\n skipWaitForInit = false,\n}: UseBaseStateParams<T>) => {\n const client = useDynamicClient();\n const queryClient = useQueryClient();\n\n /**\n * Normalize the `event` shorthand into an events map. `useMemo` keyed\n * on a stable JSON shape so callers can pass an inline literal each\n * render without churning the event-subscription effect.\n */\n const eventsMapJson = useMemo(() => {\n const map = normalizeEvents(event);\n const sortedKeys = Object.keys(map).sort((a, b) => a.localeCompare(b));\n return JSON.stringify(\n sortedKeys.map((k) => ({\n event: k,\n predicate:\n map[k as keyof DynamicEvents] === true ? '__always__' : '__fn__',\n }))\n );\n }, [event]);\n\n /**\n * Per-event predicates resolved from the latest render. The effect\n * stays subscribed across re-renders (its deps are stable), so it\n * reads predicates through this ref to pick up the most recent\n * functions a caller passed inline.\n */\n const eventsMapRef = useRef<UseBaseStateEventsMap>(normalizeEvents(event));\n eventsMapRef.current = normalizeEvents(event);\n\n /**\n * Stable list of event names the effect needs to subscribe to. Driven\n * by `eventsMapJson` so callers can swap predicate identities each\n * render without re-subscribing.\n */\n const eventNames = useMemo<ReadonlyArray<keyof DynamicEvents>>(() => {\n const map = eventsMapRef.current;\n return Object.keys(map).sort((a, b) =>\n a.localeCompare(b)\n ) as Array<keyof DynamicEvents>;\n }, [eventsMapJson]);\n\n const fullQueryKey = useMemo(\n () => [HOOK_KEY_NAMESPACE, 'state', ...queryKey],\n [JSON.stringify(queryKey)]\n );\n\n useEffect(() => {\n const core = getCore(client);\n\n const invalidate = () => {\n queryClient\n .invalidateQueries({ queryKey: fullQueryKey })\n .catch((invalidateError) => {\n core.logger.error(\n '[useBaseState] invalidateQueries failed',\n invalidateError\n );\n });\n };\n\n const unsubscribers = eventNames.map((eventName) =>\n subscribeWithPredicate(\n {\n event: eventName,\n onMatch: invalidate,\n // Resolve the predicate fresh on each event fire so inline-fn\n // callers pick up their latest closure without re-subscribing.\n predicate: (args: unknown) => {\n const predicate = eventsMapRef.current[eventName];\n if (predicate === undefined) return false;\n return predicate === true || predicate(args);\n },\n },\n client\n )\n );\n\n return () => {\n for (const unsubscribe of unsubscribers) unsubscribe();\n };\n }, [client, eventNames, queryClient, fullQueryKey]);\n\n return useQuery({\n ...queryParams,\n // react-query types `placeholderData` with an internal\n // `NonFunctionGuard<T>` to disambiguate a static placeholder value\n // from `PlaceholderDataFunction`. Our `T` is unconstrained, so TS\n // can't prove the value isn't a function — state values are never\n // function-typed in practice, so cast through `never`.\n placeholderData: defaultValue as never,\n queryFn: skipWaitForInit\n ? () => selector(client)\n : async () => {\n await waitForClientInitialized(client);\n return selector(client);\n },\n queryKey: fullQueryKey,\n });\n};\n","import { getAvailableWalletProvidersData } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the available wallet providers and their data.\n *\n * Re-renders when the wallet provider registry changes. `walletProviderChanged`\n * fires on register / priority update but NOT on removal, so\n * `walletProviderUnregistered` is wired too — otherwise a removed provider\n * would linger in the returned list.\n */\nexport const useGetAvailableWalletProvidersData = () =>\n useBaseState({\n defaultValue: [],\n event: { walletProviderChanged: true, walletProviderUnregistered: true },\n queryKey: ['useGetAvailableWalletProvidersData'],\n selector: (client) => getAvailableWalletProvidersData(client),\n });\n","import { getBalanceForAddress } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetBalanceForAddressResult = Awaited<\n ReturnType<typeof getBalanceForAddress>\n>;\ntype GetBalanceForAddressArgs = Parameters<typeof getBalanceForAddress>[0];\n\nexport type UseGetBalanceForAddressParams = GetBalanceForAddressArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetBalanceForAddressResult>['queryParams'];\n};\n\n/**\n * Wraps `getBalanceForAddress` from `@dynamic-labs-sdk/client`. Returns the native-token balance for an arbitrary address on the given chain/network.\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useGetBalanceForAddress({ address, chain, networkId });\n * ```\n */\nexport const useGetBalanceForAddress = ({\n queryParams,\n ...args\n}: UseGetBalanceForAddressParams) =>\n useBaseQuery<GetBalanceForAddressResult>({\n queryFn: (client) => getBalanceForAddress(args, client),\n queryKey: ['useGetBalanceForAddress', args],\n queryParams,\n });\n","import { broadcastFlow } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype BroadcastFlowVariables = Parameters<typeof broadcastFlow>[0];\ntype BroadcastFlowResult = Awaited<ReturnType<typeof broadcastFlow>>;\n\nexport type UseBroadcastFlowParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n BroadcastFlowResult,\n BroadcastFlowVariables\n >['mutateParams'];\n};\n\n/**\n * Records that a flow transaction has been broadcasted.\n *\n * Wraps `broadcastFlow` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId, txHash })`\n * to record the broadcast. For wallet sources pass the on-chain `txHash`; for exchange\n * sources `txHash` can be omitted.\n *\n * @example\n * ```tsx\n * const { mutate: broadcastFlow, isPending } = useBroadcastFlow();\n * <button onClick={() => broadcastFlow({ flowId, txHash })} disabled={isPending}>\n * Broadcast flow\n * </button>\n * ```\n */\nexport const useBroadcastFlow = ({ mutateParams }: UseBroadcastFlowParams = {}) =>\n useBaseMutation<BroadcastFlowResult, BroadcastFlowVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => broadcastFlow(variables, client),\n });\n","import { cancelFlow } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CancelFlowVariables = Parameters<typeof cancelFlow>[0];\ntype CancelFlowResult = Awaited<ReturnType<typeof cancelFlow>>;\n\nexport type UseCancelFlowParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CancelFlowResult,\n CancelFlowVariables\n >['mutateParams'];\n};\n\n/**\n * Cancels a flow before it has been broadcasted.\n *\n * Wraps `cancelFlow` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId })`\n * to cancel a flow.\n *\n * @example\n * ```tsx\n * const { mutate: cancelFlow, isPending } = useCancelFlow();\n * <button onClick={() => cancelFlow({ flowId })} disabled={isPending}>\n * Cancel flow\n * </button>\n * ```\n */\nexport const useCancelFlow = ({ mutateParams }: UseCancelFlowParams = {}) =>\n useBaseMutation<CancelFlowResult, CancelFlowVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => cancelFlow(variables, client),\n });\n","import { checkStepUpAuth } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype CheckStepUpAuthResult = Awaited<ReturnType<typeof checkStepUpAuth>>;\ntype CheckStepUpAuthArgs = Parameters<typeof checkStepUpAuth>[0];\n\nexport type UseCheckStepUpAuthParams = CheckStepUpAuthArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<CheckStepUpAuthResult>['queryParams'];\n};\n\n/**\n * Checks whether step-up authentication is required for a given scope and\n * returns the credentials available to satisfy it.\n *\n * Wraps `checkStepUpAuth` from `@dynamic-labs-sdk/client`. Use the returned\n * `isRequired` to decide whether to show a step-up UI before a sensitive\n * action (e.g. exporting a wallet).\n *\n * @example\n * ```tsx\n * const { data } = useCheckStepUpAuth({ scope: TokenScope.Walletexport });\n * if (data?.isRequired) {\n * // render step-up UI using data.credentials\n * }\n * ```\n */\nexport const useCheckStepUpAuth = ({\n queryParams,\n ...args\n}: UseCheckStepUpAuthParams) =>\n useBaseQuery<CheckStepUpAuthResult>({\n queryFn: (client) => checkStepUpAuth(args, client),\n queryKey: ['useCheckStepUpAuth', args],\n queryParams,\n });\n","import { getCoinbaseBuyUrl } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetCoinbaseBuyUrlResult = Awaited<ReturnType<typeof getCoinbaseBuyUrl>>;\ntype GetCoinbaseBuyUrlArgs = Parameters<typeof getCoinbaseBuyUrl>[0];\n\nexport type UseGetCoinbaseBuyUrlParams = GetCoinbaseBuyUrlArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetCoinbaseBuyUrlResult>['queryParams'];\n};\n\n/**\n * Wraps `getCoinbaseBuyUrl` from `@dynamic-labs-sdk/client`. Returns a Coinbase onramp buy URL for the given parameters.\n *\n * @example\n * ```tsx\n * const { data: buyUrl, isLoading } = useGetCoinbaseBuyUrl(buyUrlParams);\n * ```\n */\nexport const useGetCoinbaseBuyUrl = ({\n queryParams,\n ...args\n}: UseGetCoinbaseBuyUrlParams) =>\n useBaseQuery<GetCoinbaseBuyUrlResult>({\n queryFn: (client) => getCoinbaseBuyUrl(args, client),\n queryKey: ['useGetCoinbaseBuyUrl', args],\n queryParams,\n });\n","import { addCoinbaseOnrampOrderEventListener } from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\ntype AddCoinbaseOnrampOrderEventListenerParams = Parameters<\n typeof addCoinbaseOnrampOrderEventListener\n>[0];\n\ntype CoinbaseOnrampOrderListener =\n AddCoinbaseOnrampOrderEventListenerParams['listener'];\n\nexport type UseAddCoinbaseOnrampOrderEventListenerParams = {\n /**\n * Called for each Coinbase onramp order event received via `postMessage`.\n */\n listener: CoinbaseOnrampOrderListener;\n};\n\n/**\n * Subscribes to Coinbase onramp order events for the duration of the component.\n *\n * Wraps `addCoinbaseOnrampOrderEventListener` from `@dynamic-labs-sdk/client`.\n * Uses a ref to always call the latest listener without re-subscribing, and\n * removes the listener on unmount.\n *\n * @example\n * ```tsx\n * useAddCoinbaseOnrampOrderEventListener({\n * listener: ({ eventName, data }) => console.log(eventName, data),\n * });\n * ```\n */\nexport const useAddCoinbaseOnrampOrderEventListener = ({\n listener,\n}: UseAddCoinbaseOnrampOrderEventListenerParams) => {\n const client = useDynamicClient();\n const callbackRef = useRef(listener);\n\n callbackRef.current = listener;\n\n useEffect(\n () =>\n addCoinbaseOnrampOrderEventListener(\n {\n listener: (...args: Parameters<CoinbaseOnrampOrderListener>) => {\n callbackRef.current(...args);\n },\n },\n client\n ),\n [client]\n );\n};\n","import { completeDeviceRegistration } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype CompleteDeviceRegistrationVariables = Parameters<\n typeof completeDeviceRegistration\n>[0];\ntype CompleteDeviceRegistrationResult = Awaited<\n ReturnType<typeof completeDeviceRegistration>\n>;\n\nexport type UseCompleteDeviceRegistrationParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CompleteDeviceRegistrationResult,\n CompleteDeviceRegistrationVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `completeDeviceRegistration` from `@dynamic-labs-sdk/client`. Call `mutate({ deviceToken })` with the device token parsed from the redirect URL; the resolved `data` is a `VerifyResponse`.\n *\n * @example\n * ```tsx\n * const { mutate: completeRegistration, isPending } =\n * useCompleteDeviceRegistration();\n * completeRegistration({ deviceToken });\n * ```\n */\nexport const useCompleteDeviceRegistration = ({\n mutateParams,\n}: UseCompleteDeviceRegistrationParams = {}) =>\n useBaseMutation<\n CompleteDeviceRegistrationResult,\n CompleteDeviceRegistrationVariables\n >({\n middlewares: [invalidatesQueries('useGetRegisteredDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n completeDeviceRegistration(variables, client),\n });\n","import { completeSocialRedirect } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CompleteSocialRedirectVariables = Parameters<\n typeof completeSocialRedirect\n>[0];\ntype CompleteSocialRedirectResult = Awaited<\n ReturnType<typeof completeSocialRedirect>\n>;\n\nexport type UseCompleteSocialRedirectParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CompleteSocialRedirectResult,\n CompleteSocialRedirectVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `completeSocialRedirect` from `@dynamic-labs-sdk/client`. Call `mutate(params)` with the OAuth callback URL once the provider has redirected back to finish the sign-in; the resolved `data` is the signed-in `User` (or `null`).\n *\n * @example\n * ```tsx\n * const { mutate: completeSocialRedirect, data: user } =\n * useCompleteSocialRedirect();\n * completeSocialRedirect({ url: new URL(window.location.href) });\n * ```\n */\nexport const useCompleteSocialRedirect = ({\n mutateParams,\n}: UseCompleteSocialRedirectParams = {}) =>\n useBaseMutation<\n CompleteSocialRedirectResult,\n CompleteSocialRedirectVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n completeSocialRedirect(variables, client),\n });\n","import { detectSocialRedirectUrl } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype DetectSocialRedirectUrlResult = Awaited<\n ReturnType<typeof detectSocialRedirectUrl>\n>;\ntype DetectSocialRedirectUrlArgs = Parameters<typeof detectSocialRedirectUrl>[0];\n\n/**\n * Parameters for {@link useDetectSocialRedirectUrl} — the arguments of\n * `detectSocialRedirectUrl` plus an optional react-query options override.\n *\n * @example\n * ```tsx\n * const params: UseDetectSocialRedirectUrlParams = { url };\n * ```\n *\n * @see {@link useDetectSocialRedirectUrl} the hook these parameters configure.\n * @see {@link useCompleteSocialRedirect} the mutation you fire once detection\n * returns `true`.\n */\nexport type UseDetectSocialRedirectUrlParams = DetectSocialRedirectUrlArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: NonNullable<\n UseBaseQueryParams<DetectSocialRedirectUrlResult>['queryParams']\n >;\n};\n\n/**\n * Wraps `detectSocialRedirectUrl` from `@dynamic-labs-sdk/client`. Resolves to\n * `true` when the given URL is an OAuth redirect back from a social provider\n * (started by `signInWithSocialRedirect`), so you can decide whether to run\n * `completeSocialRedirect`.\n *\n * @param params - See {@link UseDetectSocialRedirectUrlParams}.\n * @returns A react-query result whose `data` is `true` when the URL is a social\n * OAuth callback, plus the usual `isLoading`/`error` fields.\n *\n * @example\n * ```tsx\n * const { data: isReturningFromProvider, isLoading } =\n * useDetectSocialRedirectUrl({ url });\n * ```\n *\n * @see {@link useCompleteSocialRedirect} to finish the redirect sign-in once\n * this returns `true`.\n * @see {@link clearSocialRedirectParams} to clean the OAuth parameters from the\n * URL after completion.\n */\nexport const useDetectSocialRedirectUrl = ({\n queryParams,\n ...args\n}: UseDetectSocialRedirectUrlParams) =>\n useBaseQuery<DetectSocialRedirectUrlResult>({\n queryFn: (client) => detectSocialRedirectUrl(args, client),\n queryKey: ['useDetectSocialRedirectUrl', { url: args.url.href }],\n queryParams,\n });\n","import { confirmTransaction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ConfirmTransactionVariables = Parameters<typeof confirmTransaction>[0];\ntype ConfirmTransactionResult = Awaited<ReturnType<typeof confirmTransaction>>;\n\nexport type UseConfirmTransactionParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ConfirmTransactionResult,\n ConfirmTransactionVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `confirmTransaction` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount, transactionHash })` to await confirmation of a submitted transaction; the resolved `data` is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: confirmTransaction, isPending } = useConfirmTransaction();\n * confirmTransaction({ walletAccount, transactionHash });\n * ```\n */\nexport const useConfirmTransaction = ({\n mutateParams,\n}: UseConfirmTransactionParams = {}) =>\n useBaseMutation<ConfirmTransactionResult, ConfirmTransactionVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n confirmTransaction(variables, client),\n });\n","import { connectAndVerifyWithWalletProvider } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ConnectAndVerifyWithWalletProviderVariables = Parameters<\n typeof connectAndVerifyWithWalletProvider\n>[0];\ntype ConnectAndVerifyWithWalletProviderResult = Awaited<\n ReturnType<typeof connectAndVerifyWithWalletProvider>\n>;\n\nexport type UseConnectAndVerifyWithWalletProviderParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ConnectAndVerifyWithWalletProviderResult,\n ConnectAndVerifyWithWalletProviderVariables\n >['mutateParams'];\n};\n\n/**\n * Connects to a wallet provider and verifies ownership in a single step.\n *\n * Wraps `connectAndVerifyWithWalletProvider` from `@dynamic-labs-sdk/client`.\n * Call `mutate({ walletProviderKey })` to connect and prompt the user to sign\n * a verification message, adding the verified account to their profile.\n *\n * Throws `DeeplinkConnectAndVerifyUnsupportedError` on mobile with deeplink\n * wallet providers — there, use `useConnectWithWalletProvider` followed by\n * `useVerifyWalletAccount` from a fresh user gesture instead.\n *\n * @example\n * ```tsx\n * const { mutate: connectAndVerify, isPending } =\n * useConnectAndVerifyWithWalletProvider();\n * <button\n * onClick={() => connectAndVerify({ walletProviderKey: 'metamaskevm' })}\n * disabled={isPending}\n * >\n * Connect & verify\n * </button>\n * ```\n */\nexport const useConnectAndVerifyWithWalletProvider = ({\n mutateParams,\n}: UseConnectAndVerifyWithWalletProviderParams = {}) =>\n useBaseMutation<\n ConnectAndVerifyWithWalletProviderResult,\n ConnectAndVerifyWithWalletProviderVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n connectAndVerifyWithWalletProvider(variables, client),\n });\n","import { type OnEventParams, onEvent } from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\n/**\n * Subscribes to a Dynamic client event.\n *\n * Uses a ref to always call the latest listener without re-subscribing,\n * and cleans up the subscription on unmount or event name change.\n */\nexport const useOnEvent = <E extends keyof DynamicEvents>({\n event,\n listener,\n}: OnEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(listener);\n\n callbackRef.current = listener;\n\n useEffect(\n () =>\n onEvent(\n {\n event,\n listener: (...args: any[]) => {\n // @ts-expect-error - Ignore the type error because we are using the ref\n callbackRef.current(...args);\n },\n },\n client\n ),\n [event, client]\n );\n};\n","import { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type { QueryMiddleware } from '../../foundation/useBaseQuery';\nimport { useOnEvent } from '../../hooks/wrappers/functions/useOnEvent';\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\nexport type InvalidateOnEventParams<E extends keyof DynamicEvents> = {\n /**\n * The client event to listen for (e.g. `'walletAccountsChanged'`).\n */\n event: E;\n};\n\n/**\n * Query middleware factory that refetches the query whenever the given client\n * event fires (e.g. `walletAccountsChanged`).\n *\n * It only wires up the subscription, invalidating the query's own cache key so\n * any mounted consumer refetches. This replaces the manual `useOnEvent` +\n * `refetch` boilerplate consumers would otherwise pair with the hook. It is the\n * client-event counterpart to `invalidateOnWalletProviderEvent` (which listens\n * on a single wallet account's provider). The subscription lives here, not in\n * `useBaseQuery`.\n *\n * @example\n * ```ts\n * useBaseQuery({\n * middlewares: [invalidateOnEvent({ event: 'walletAccountsChanged' })],\n * queryFn: (client) => getConnectedAddresses(args, client),\n * queryKey: ['useGetConnectedAddresses', args],\n * });\n * ```\n */\nexport const invalidateOnEvent =\n <E extends keyof DynamicEvents>({\n event,\n }: InvalidateOnEventParams<E>): QueryMiddleware =>\n (context) => {\n const queryClient = useQueryClient();\n const client = useDynamicClient();\n\n useOnEvent({\n event,\n // The listener ignores the event payload; it only triggers a refetch.\n listener: (() => {\n // `useBaseQuery` always supplies the query's own key; the context is\n // only optional so middlewares invoked directly in tests can omit it,\n // so bail rather than invalidate an unknown key when it is absent.\n if (!context) {\n return;\n }\n\n // Debug log so developers can observe which query an event invalidates.\n getCore(client).logger.debug(\n '[invalidateOnEvent] invalidating query on event',\n { event, queryKey: context.queryKey }\n );\n\n queryClient\n .invalidateQueries({ queryKey: context.queryKey })\n .catch((error: unknown) => {\n // Swallow the rejection, but log it so internal devs can\n // troubleshoot a query that fails to refetch on the event.\n getCore(client).logger.debug(\n '[invalidateOnEvent] failed to invalidate query',\n {\n error,\n queryKey: context.queryKey,\n stack: error instanceof Error ? error.stack : undefined,\n }\n );\n });\n }) as DynamicEvents[E],\n });\n };\n","import { getConnectedAddresses } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnEvent } from '../../../../middlewares/invalidateOnEvent';\n\ntype ConnectedAddressesResult = Awaited<ReturnType<typeof getConnectedAddresses>>;\ntype ConnectedAddressesArgs = Parameters<typeof getConnectedAddresses>[0];\n\nexport type UseGetConnectedAddressesParams = ConnectedAddressesArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<ConnectedAddressesResult>['queryParams'];\n};\n\n/**\n * Returns the connected addresses for the given wallet provider.\n *\n * Wraps `getConnectedAddresses` from `@dynamic-labs-sdk/client`. Automatically\n * refetches when wallet accounts change (connect / disconnect / verify), so\n * consumers don't have to pair it with a manual `walletAccountsChanged`\n * listener.\n */\nexport const useGetConnectedAddresses = ({ queryParams, ...args }: UseGetConnectedAddressesParams) =>\n useBaseQuery<ConnectedAddressesResult>({\n middlewares: [invalidateOnEvent({ event: 'walletAccountsChanged' })],\n queryFn: (client) => getConnectedAddresses(args, client),\n queryKey: ['useGetConnectedAddresses', args],\n queryParams,\n });\n","import { connectWithWalletProvider } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ConnectWithWalletProviderVariables = Parameters<\n typeof connectWithWalletProvider\n>[0];\ntype ConnectWithWalletProviderResult = Awaited<\n ReturnType<typeof connectWithWalletProvider>\n>;\n\nexport type UseConnectWithWalletProviderParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ConnectWithWalletProviderResult,\n ConnectWithWalletProviderVariables\n >['mutateParams'];\n};\n\n/**\n * Connects to a wallet provider and returns the connected wallet account.\n *\n * Wraps `connectWithWalletProvider` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletProviderKey })` to trigger the connection — the wallet\n * provider will prompt the user via its native UI. The connected account is\n * not verified; pair with `useVerifyWalletAccount`, or use\n * `useConnectAndVerifyWithWalletProvider` to do both in one step.\n *\n * @example\n * ```tsx\n * const { mutate: connect, data, isPending } = useConnectWithWalletProvider();\n * <button\n * onClick={() => connect({ walletProviderKey: 'metamaskevm' })}\n * disabled={isPending}\n * >\n * Connect\n * </button>\n * ```\n */\nexport const useConnectWithWalletProvider = ({\n mutateParams,\n}: UseConnectWithWalletProviderParams = {}) =>\n useBaseMutation<\n ConnectWithWalletProviderResult,\n ConnectWithWalletProviderVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n connectWithWalletProvider(variables, client),\n });\n","import { createCoinbaseOnrampOrder } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateCoinbaseOnrampOrderVariables = Parameters<\n typeof createCoinbaseOnrampOrder\n>[0];\ntype CreateCoinbaseOnrampOrderResult = Awaited<\n ReturnType<typeof createCoinbaseOnrampOrder>\n>;\n\nexport type UseCreateCoinbaseOnrampOrderParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateCoinbaseOnrampOrderResult,\n CreateCoinbaseOnrampOrderVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `createCoinbaseOnrampOrder` from `@dynamic-labs-sdk/client`. Call `mutate(orderParams)` to create a Coinbase onramp order; the resolved `data` is the order response.\n *\n * @example\n * ```tsx\n * const { mutate: createOrder, data: order } = useCreateCoinbaseOnrampOrder();\n * createOrder(orderParams);\n * ```\n */\nexport const useCreateCoinbaseOnrampOrder = ({\n mutateParams,\n}: UseCreateCoinbaseOnrampOrderParams = {}) =>\n useBaseMutation<\n CreateCoinbaseOnrampOrderResult,\n CreateCoinbaseOnrampOrderVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createCoinbaseOnrampOrder(variables, client),\n });\n","import { createCryptoDotComPayment } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateCryptoDotComPaymentVariables = Parameters<\n typeof createCryptoDotComPayment\n>[0];\ntype CreateCryptoDotComPaymentResult = Awaited<\n ReturnType<typeof createCryptoDotComPayment>\n>;\n\nexport type UseCreateCryptoDotComPaymentParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateCryptoDotComPaymentResult,\n CreateCryptoDotComPaymentVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `createCryptoDotComPayment` from `@dynamic-labs-sdk/client`. Call `mutate(paymentParams)` to create a Crypto.com Pay payment; the resolved `data` is the payment response.\n *\n * @example\n * ```tsx\n * const { mutate: createPayment, data: payment } =\n * useCreateCryptoDotComPayment();\n * createPayment(paymentParams);\n * ```\n */\nexport const useCreateCryptoDotComPayment = ({\n mutateParams,\n}: UseCreateCryptoDotComPaymentParams = {}) =>\n useBaseMutation<\n CreateCryptoDotComPaymentResult,\n CreateCryptoDotComPaymentVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createCryptoDotComPayment(variables, client),\n });\n","import { createNewMfaRecoveryCodes } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateNewMfaRecoveryCodesResult = Awaited<\n ReturnType<typeof createNewMfaRecoveryCodes>\n>;\n\nexport type UseCreateNewMfaRecoveryCodesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateNewMfaRecoveryCodesResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Regenerates the current user's MFA recovery codes.\n *\n * Wraps `createNewMfaRecoveryCodes` from `@dynamic-labs-sdk/client`. Takes\n * no arguments — call `mutate()` to issue a fresh set of codes (invalidating\n * the previous set); the resolved `data` is the new recovery codes.\n *\n * @example\n * ```tsx\n * const { mutate: regenerateCodes, data, isPending } =\n * useCreateNewMfaRecoveryCodes();\n * <button onClick={() => regenerateCodes()} disabled={isPending}>\n * Regenerate recovery codes\n * </button>\n * ```\n */\nexport const useCreateNewMfaRecoveryCodes = ({\n mutateParams,\n}: UseCreateNewMfaRecoveryCodesParams = {}) =>\n useBaseMutation<CreateNewMfaRecoveryCodesResult, void>({\n mutateParams,\n mutationFn: ({ client }) => createNewMfaRecoveryCodes(client),\n });\n","import { deleteMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype DeleteMfaDeviceVariables = Parameters<typeof deleteMfaDevice>[0];\ntype DeleteMfaDeviceResult = Awaited<ReturnType<typeof deleteMfaDevice>>;\n\nexport type UseDeleteMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n DeleteMfaDeviceResult,\n DeleteMfaDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Deletes one of the current user's MFA devices.\n *\n * Wraps `deleteMfaDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ deviceId })` to remove the device; when no elevated access\n * token is available, also pass `mfaAuthToken`.\n *\n * @example\n * ```tsx\n * const { mutate: deleteDevice, isPending } = useDeleteMfaDevice();\n * <button onClick={() => deleteDevice({ deviceId })} disabled={isPending}>\n * Remove device\n * </button>\n * ```\n */\nexport const useDeleteMfaDevice = ({\n mutateParams,\n}: UseDeleteMfaDeviceParams = {}) => {\n return useBaseMutation<DeleteMfaDeviceResult, DeleteMfaDeviceVariables>({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) => deleteMfaDevice(variables, client),\n });\n};\n","import { deletePasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype DeletePasskeyVariables = Parameters<typeof deletePasskey>[0];\ntype DeletePasskeyResult = Awaited<ReturnType<typeof deletePasskey>>;\n\nexport type UseDeletePasskeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n DeletePasskeyResult,\n DeletePasskeyVariables\n >['mutateParams'];\n};\n\n/**\n * Deletes one of the current user's passkeys.\n *\n * Wraps `deletePasskey` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ passkeyId })` to remove the passkey; the resolved `data` is\n * `void`.\n *\n * @example\n * ```tsx\n * const { mutate: deletePasskey, isPending } = useDeletePasskey();\n * <button onClick={() => deletePasskey({ passkeyId })} disabled={isPending}>\n * Remove passkey\n * </button>\n * ```\n */\nexport const useDeletePasskey = ({\n mutateParams,\n}: UseDeletePasskeyParams = {}) =>\n useBaseMutation<DeletePasskeyResult, DeletePasskeyVariables>({\n middlewares: [invalidatesQueries('useGetPasskeys')],\n mutateParams,\n mutationFn: ({ client, variables }) => deletePasskey(variables, client),\n });\n","import { deleteUser } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype DeleteUserResult = Awaited<ReturnType<typeof deleteUser>>;\n\nexport type UseDeleteUserParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n DeleteUserResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Permanently deletes the current user's account and logs them out.\n *\n * Wraps `deleteUser` from `@dynamic-labs-sdk/client`. Takes no arguments —\n * call `mutate()` to hard-delete the account; the resolved `data` is `void`.\n * This is destructive and irreversible.\n *\n * @example\n * ```tsx\n * const { mutate: deleteUser, isPending } = useDeleteUser();\n * <button onClick={() => deleteUser()} disabled={isPending}>\n * Delete my account\n * </button>\n * ```\n */\nexport const useDeleteUser = ({ mutateParams }: UseDeleteUserParams = {}) =>\n useBaseMutation<DeleteUserResult, void>({\n mutateParams,\n mutationFn: ({ client }) => deleteUser(client),\n });\n","import { executeSwapTransaction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ExecuteSwapTransactionVariables = Parameters<\n typeof executeSwapTransaction\n>[0];\ntype ExecuteSwapTransactionResult = Awaited<\n ReturnType<typeof executeSwapTransaction>\n>;\n\nexport type UseExecuteSwapTransactionParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ExecuteSwapTransactionResult,\n ExecuteSwapTransactionVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `executeSwapTransaction` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount, signingPayload })` (using a payload from {@link useGetSwapQuote}) to execute a swap; the resolved `data` is `{ transactionHash }`.\n *\n * @example\n * ```tsx\n * const { mutate: executeSwap, data } = useExecuteSwapTransaction();\n * executeSwap({ walletAccount, signingPayload });\n * ```\n */\nexport const useExecuteSwapTransaction = ({\n mutateParams,\n}: UseExecuteSwapTransactionParams = {}) =>\n useBaseMutation<\n ExecuteSwapTransactionResult,\n ExecuteSwapTransactionVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n executeSwapTransaction(variables, client),\n });\n","import { getFlow } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetFlowResult = Awaited<ReturnType<typeof getFlow>>;\n\nexport type UseGetFlowParams = {\n /**\n * **Pseudo-required.** The ID of the flow to fetch.\n * Accepting `undefined` lets callers wire this up before the flow id\n * has loaded — the hook stays disabled until a real value is supplied.\n */\n flowId: string | undefined;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetFlowResult>['queryParams'];\n};\n\n/**\n * Returns the flow with the given ID.\n *\n * Wraps `getFlow` from `@dynamic-labs-sdk/client`. The hook stays disabled\n * until `flowId` is defined.\n *\n * @example\n * ```tsx\n * const { data: flow, isLoading, refetch } = useGetFlow({ flowId });\n * ```\n */\nexport const useGetFlow = ({ flowId, queryParams }: UseGetFlowParams) =>\n useBaseQuery<GetFlowResult>({\n enabled: flowId !== undefined,\n queryFn: (client) => getFlow({ flowId: flowId as string }, client),\n queryKey: ['useGetFlow', flowId],\n queryParams,\n });\n","import { getFlowQuote } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype GetFlowQuoteVariables = Parameters<typeof getFlowQuote>[0];\ntype GetFlowQuoteResult = Awaited<ReturnType<typeof getFlowQuote>>;\n\nexport type UseGetFlowQuoteParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n GetFlowQuoteResult,\n GetFlowQuoteVariables\n >['mutateParams'];\n};\n\n/**\n * Fetches a quote for a flow.\n *\n * Wraps `getFlowQuote` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId, fromTokenAddress, slippage })`\n * to fetch a quote for a flow.\n *\n * @example\n * ```tsx\n * const { mutate: getFlowQuote, isPending } = useGetFlowQuote();\n * <button onClick={() => getFlowQuote({ flowId, fromTokenAddress, slippage })} disabled={isPending}>\n * Get flow quote\n * </button>\n * ```\n */\nexport const useGetFlowQuote = ({ mutateParams }: UseGetFlowQuoteParams = {}) =>\n useBaseMutation<GetFlowQuoteResult, GetFlowQuoteVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => getFlowQuote(variables, client),\n });\n","import { prepareFlowSigning } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype PrepareFlowSigningVariables = Parameters<typeof prepareFlowSigning>[0];\ntype PrepareFlowSigningResult = Awaited<ReturnType<typeof prepareFlowSigning>>;\n\nexport type UsePrepareFlowSigningParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n PrepareFlowSigningResult,\n PrepareFlowSigningVariables\n >['mutateParams'];\n};\n\n/**\n * Prepares a flow transaction for signing.\n *\n * Wraps `prepareFlowSigning` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId })`\n * to prepare a flow for signing.\n *\n * @example\n * ```tsx\n * const { mutate: prepareFlowSigning, isPending } = usePrepareFlowSigning();\n * <button onClick={() => prepareFlowSigning({ flowId })} disabled={isPending}>\n * Prepare flow signing\n * </button>\n * ```\n */\nexport const usePrepareFlowSigning = ({\n mutateParams,\n}: UsePrepareFlowSigningParams = {}) =>\n useBaseMutation<PrepareFlowSigningResult, PrepareFlowSigningVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n prepareFlowSigning(variables, client),\n });\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useRef } from 'react';\n\nimport type { QueryMiddleware } from '../../foundation/useBaseQuery';\nimport { useOnEvent } from '../../hooks/wrappers/functions/useOnEvent';\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\nconst USER_CHANGED_EVENT = 'userChanged';\n\n/**\n * Query middleware factory that refetches the query when a *different* user\n * becomes the current user (login or account switch).\n *\n * Unlike `invalidateOnEvent({ event: 'userChanged' })`, this never invalidates\n * on:\n * - logout (the user becomes `undefined`) — the refetch would just 401 and the\n * cleared session leaves nothing to refetch; and\n * - same-user `userChanged` fires (e.g. linking a credential or a profile\n * update) — the data still belongs to the same user, whose own mutations\n * already invalidate it within the session.\n *\n * It tracks the previous user id across renders (seeded from the user present\n * at mount) and only invalidates when the new id is defined and differs.\n *\n * @example\n * ```ts\n * useBaseQuery({\n * middlewares: [invalidateOnUserSwitch()],\n * queryFn: (client) => getMfaDevices(client),\n * queryKey: ['useGetMfaDevices'],\n * });\n * ```\n */\nexport const invalidateOnUserSwitch =\n (): QueryMiddleware =>\n (context) => {\n const client = useDynamicClient();\n const queryClient = useQueryClient();\n\n // Seed with the user at mount so the first same-user fire (e.g. a profile\n // update right after mount) doesn't spuriously invalidate.\n const previousUserIdRef = useRef<string | undefined>(client.user?.id);\n\n useOnEvent({\n event: USER_CHANGED_EVENT,\n listener: ((args: { user: DynamicClient['user'] }) => {\n const nextUserId = args.user?.id;\n const previousUserId = previousUserIdRef.current;\n previousUserIdRef.current = nextUserId;\n\n // Only a switch to a different, defined user warrants a refetch:\n // logout (-> undefined) would just 401, and same-user fires don't\n // change user-scoped data (their own mutations handle that).\n if (nextUserId === undefined || nextUserId === previousUserId) {\n return;\n }\n\n // `useBaseQuery` always supplies the query's own key; the context is\n // only optional so middlewares invoked directly in tests can omit it,\n // so bail rather than invalidate an unknown key when it is absent.\n if (!context) {\n return;\n }\n\n getCore(client).logger.debug(\n '[invalidateOnUserSwitch] invalidating query on new user',\n { queryKey: context.queryKey }\n );\n\n queryClient\n .invalidateQueries({ queryKey: context.queryKey })\n .catch((error: unknown) => {\n // Swallow the rejection, but log it so internal devs can\n // troubleshoot a query that fails to refetch on the new user.\n getCore(client).logger.debug(\n '[invalidateOnUserSwitch] failed to invalidate query',\n {\n error,\n queryKey: context.queryKey,\n stack: error instanceof Error ? error.stack : undefined,\n }\n );\n });\n }) as DynamicEvents[typeof USER_CHANGED_EVENT],\n });\n };\n","import { getGoogleDriveBackupReadiness } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetGoogleDriveBackupReadinessResult = Awaited<\n ReturnType<typeof getGoogleDriveBackupReadiness>\n>;\n\nexport type UseGetGoogleDriveBackupReadinessParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetGoogleDriveBackupReadinessResult>['queryParams'];\n};\n\n/**\n * Wraps `getGoogleDriveBackupReadiness` from `@dynamic-labs-sdk/client`. Reports whether the user's Google Drive backup is set up and available.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: readiness, isLoading } = useGetGoogleDriveBackupReadiness();\n * ```\n */\nexport const useGetGoogleDriveBackupReadiness = ({\n queryParams,\n}: UseGetGoogleDriveBackupReadinessParams = {}) =>\n useBaseQuery<GetGoogleDriveBackupReadinessResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getGoogleDriveBackupReadiness(client),\n queryKey: ['useGetGoogleDriveBackupReadiness'],\n queryParams,\n });\n","import { isMfaRequiredForAction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype IsMfaRequiredForActionResult = Awaited<ReturnType<typeof isMfaRequiredForAction>>;\ntype IsMfaRequiredForActionArgs = Parameters<typeof isMfaRequiredForAction>[0];\n\nexport type UseIsMfaRequiredForActionParams = IsMfaRequiredForActionArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<IsMfaRequiredForActionResult>['queryParams'];\n};\n\n/**\n * Returns whether MFA is required for the given action.\n *\n * Wraps `isMfaRequiredForAction` from `@dynamic-labs-sdk/client`.\n */\nexport const useIsMfaRequiredForAction = ({ queryParams, ...args }: UseIsMfaRequiredForActionParams) =>\n useBaseQuery<IsMfaRequiredForActionResult>({\n queryFn: (client) => isMfaRequiredForAction(args, client),\n queryKey: ['useIsMfaRequiredForAction', args],\n queryParams,\n });\n","import { getKrakenAccounts } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetKrakenAccountsResult = Awaited<ReturnType<typeof getKrakenAccounts>>;\ntype GetKrakenAccountsArgs = NonNullable<\n Parameters<typeof getKrakenAccounts>[0]\n>;\n\nexport type UseGetKrakenAccountsParams = GetKrakenAccountsArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetKrakenAccountsResult>['queryParams'];\n};\n\n/**\n * Wraps `getKrakenAccounts` from `@dynamic-labs-sdk/client`. Returns the authenticated user's Kraken accounts (with balances), optionally filtered by chain/network.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: accounts, isLoading } = useGetKrakenAccounts();\n * ```\n */\nexport const useGetKrakenAccounts = ({\n queryParams,\n ...args\n}: UseGetKrakenAccountsParams = {}) =>\n useBaseQuery<GetKrakenAccountsResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getKrakenAccounts(args, client),\n queryKey: ['useGetKrakenAccounts', args],\n queryParams,\n });\n","import { createKrakenExchangeTransfer } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateKrakenExchangeTransferVariables = Parameters<\n typeof createKrakenExchangeTransfer\n>[0];\ntype CreateKrakenExchangeTransferResult = Awaited<\n ReturnType<typeof createKrakenExchangeTransfer>\n>;\n\nexport type UseCreateKrakenExchangeTransferParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateKrakenExchangeTransferResult,\n CreateKrakenExchangeTransferVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `createKrakenExchangeTransfer` from `@dynamic-labs-sdk/client`. Call `mutate({ accountId, ... })` to send crypto from a Kraken account (see `useGetKrakenAccounts`) to a whitelisted address (see `useGetKrakenWhitelistedAddresses`); the resolved `data` is the created transfer.\n *\n * @example\n * ```tsx\n * const { mutate: transfer, data } = useCreateKrakenExchangeTransfer();\n * transfer({ accountId, asset, amount, address });\n * ```\n */\nexport const useCreateKrakenExchangeTransfer = ({\n mutateParams,\n}: UseCreateKrakenExchangeTransferParams = {}) =>\n useBaseMutation<\n CreateKrakenExchangeTransferResult,\n CreateKrakenExchangeTransferVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createKrakenExchangeTransfer(variables, client),\n });\n","import { getKrakenWhitelistedAddresses } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetKrakenWhitelistedAddressesResult = Awaited<\n ReturnType<typeof getKrakenWhitelistedAddresses>\n>;\n\nexport type UseGetKrakenWhitelistedAddressesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetKrakenWhitelistedAddressesResult>['queryParams'];\n};\n\n/**\n * Wraps `getKrakenWhitelistedAddresses` from `@dynamic-labs-sdk/client`. Returns the destination addresses whitelisted for Kraken withdrawals.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: addresses, isLoading } = useGetKrakenWhitelistedAddresses();\n * ```\n */\nexport const useGetKrakenWhitelistedAddresses = ({\n queryParams,\n}: UseGetKrakenWhitelistedAddressesParams = {}) =>\n useBaseQuery<GetKrakenWhitelistedAddressesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getKrakenWhitelistedAddresses(client),\n queryKey: ['useGetKrakenWhitelistedAddresses'],\n queryParams,\n });\n","// eslint-disable-next-line custom-rules/require-logout-with-reason -- this hook is the customer-facing wrapper for `logout`, so it forwards the user-intent reason itself.\nimport { logout } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UseLogoutParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<void, void>['mutateParams'];\n};\n\n/**\n * Logs the current user out.\n *\n * Wraps `logout` from `@dynamic-labs-sdk/client`. Takes no required\n * arguments — call `mutate()` to trigger the logout.\n *\n * @example\n * ```tsx\n * const { mutate: logOut, isPending } = useLogout();\n * <button onClick={() => logOut()} disabled={isPending}>Logout</button>\n * ```\n */\nexport const useLogout = ({ mutateParams }: UseLogoutParams = {}) =>\n useBaseMutation<void, void>({\n mutateParams,\n mutationFn: ({ client }) => logout(client),\n });\n","import { mergeUserAccounts } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype MergeUserAccountsVariables = Parameters<typeof mergeUserAccounts>[0];\ntype MergeUserAccountsResult = Awaited<ReturnType<typeof mergeUserAccounts>>;\n\n/**\n * Parameters for {@link useMergeUserAccounts}: an optional override of the\n * underlying react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseMergeUserAccountsParams = {\n * mutateParams: { onSuccess: () => console.log('merged') },\n * };\n * ```\n * @see useMergeUserAccounts\n * @see mergeUserAccounts\n */\nexport type UseMergeUserAccountsParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n MergeUserAccountsResult,\n MergeUserAccountsVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Completes an account merge after a credential was found to already belong to\n * another user (surfaced as `MergeAccountsConfirmationError` during\n * verification / linking).\n *\n * Wraps `mergeUserAccounts` from `@dynamic-labs-sdk/client`. Call `mutate()`\n * with no arguments to merge directly when there are no conflicts, or\n * `mutate({ conflictResolutions })` with the user's per-field choices when the\n * merge surfaced conflicts. The resolved `data` is the merged user.\n *\n * @example\n * ```tsx\n * const { mutate: mergeAccounts, isPending } = useMergeUserAccounts();\n *\n * // No conflicts — merge directly:\n * mergeAccounts({});\n *\n * // With conflicts the user resolved:\n * mergeAccounts({ conflictResolutions });\n * ```\n * @returns A react-query mutation whose `mutate`/`mutateAsync` completes the\n * merge and whose `data` is the merged user.\n * @see mergeUserAccounts\n * @see UseMergeUserAccountsParams\n */\nexport const useMergeUserAccounts = ({\n mutateParams,\n}: UseMergeUserAccountsParams = {}) =>\n useBaseMutation<MergeUserAccountsResult, MergeUserAccountsVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => mergeUserAccounts(variables, client),\n });\n","import { getMfaDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetMfaDevicesResult = Awaited<ReturnType<typeof getMfaDevices>>;\n\nexport type UseGetMfaDevicesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMfaDevicesResult>['queryParams'];\n};\n\n/**\n * Returns the multi-factor authentication devices registered for the\n * current user.\n *\n * Wraps `getMfaDevices` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: mfaDevices, isLoading, refetch } = useGetMfaDevices();\n * ```\n */\nexport const useGetMfaDevices = ({ queryParams }: UseGetMfaDevicesParams = {}) =>\n useBaseQuery<GetMfaDevicesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getMfaDevices(client),\n queryKey: ['useGetMfaDevices'],\n queryParams,\n });\n","import { getMfaMethods } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetMfaMethodsResult = Awaited<ReturnType<typeof getMfaMethods>>;\n\nexport type UseGetMfaMethodsParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMfaMethodsResult>['queryParams'];\n};\n\n/**\n * Returns the multi-factor authentication methods available to the current\n * user.\n *\n * Wraps `getMfaMethods` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: mfaMethods, isLoading, refetch } = useGetMfaMethods();\n * ```\n */\nexport const useGetMfaMethods = ({ queryParams }: UseGetMfaMethodsParams = {}) =>\n useBaseQuery<GetMfaMethodsResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getMfaMethods(client),\n queryKey: ['useGetMfaMethods'],\n queryParams,\n });\n","import { getMfaRecoveryCodes } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetMfaRecoveryCodesResult = Awaited<\n ReturnType<typeof getMfaRecoveryCodes>\n>;\n\nexport type UseGetMfaRecoveryCodesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMfaRecoveryCodesResult>['queryParams'];\n};\n\n/**\n * Returns the current user's MFA recovery codes.\n *\n * Wraps `getMfaRecoveryCodes` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: recoveryCodes, isLoading, refetch } = useGetMfaRecoveryCodes();\n * ```\n */\nexport const useGetMfaRecoveryCodes = ({\n queryParams,\n}: UseGetMfaRecoveryCodesParams = {}) =>\n useBaseQuery<GetMfaRecoveryCodesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getMfaRecoveryCodes(client),\n queryKey: ['useGetMfaRecoveryCodes'],\n queryParams,\n });\n","import { getMoonPayCurrencies } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetMoonPayCurrenciesResult = Awaited<\n ReturnType<typeof getMoonPayCurrencies>\n>;\ntype GetMoonPayCurrenciesArgs = Parameters<typeof getMoonPayCurrencies>[0];\n\nexport type UseGetMoonPayCurrenciesParams = GetMoonPayCurrenciesArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMoonPayCurrenciesResult>['queryParams'];\n};\n\n/**\n * Wraps `getMoonPayCurrencies` from `@dynamic-labs-sdk/client`. Returns the list of currencies MoonPay supports for the given parameters.\n *\n * @example\n * ```tsx\n * const { data: currencies, isLoading } = useGetMoonPayCurrencies(params);\n * ```\n */\nexport const useGetMoonPayCurrencies = ({\n queryParams,\n ...args\n}: UseGetMoonPayCurrenciesParams) =>\n useBaseQuery<GetMoonPayCurrenciesResult>({\n queryFn: (client) => getMoonPayCurrencies(args, client),\n queryKey: ['useGetMoonPayCurrencies', args],\n queryParams,\n });\n","import { getMoonPayUrl } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetMoonPayUrlResult = Awaited<ReturnType<typeof getMoonPayUrl>>;\ntype GetMoonPayUrlArgs = Parameters<typeof getMoonPayUrl>[0];\n\nexport type UseGetMoonPayUrlParams = GetMoonPayUrlArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMoonPayUrlResult>['queryParams'];\n};\n\n/**\n * Wraps `getMoonPayUrl` from `@dynamic-labs-sdk/client`. Returns a MoonPay widget URL for the given parameters.\n *\n * @example\n * ```tsx\n * const { data: moonPayUrl, isLoading } = useGetMoonPayUrl(params);\n * ```\n */\nexport const useGetMoonPayUrl = ({ queryParams, ...args }: UseGetMoonPayUrlParams) =>\n useBaseQuery<GetMoonPayUrlResult>({\n queryFn: (client) => getMoonPayUrl(args, client),\n queryKey: ['useGetMoonPayUrl', args],\n queryParams,\n });\n","import type { GetMultichainTokenBalancesParams } from '@dynamic-labs-sdk/client';\nimport { getMultichainTokenBalances } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetMultichainTokenBalancesResult = Awaited<\n ReturnType<typeof getMultichainTokenBalances>\n>;\n\nexport type UseGetMultichainTokenBalancesParams = {\n /**\n * **Pseudo-required.** The batched balance request forwarded to\n * `getMultichainTokenBalances`. Pass `undefined` to keep the hook\n * disabled — useful while waiting for wallet accounts or chain\n * selection to load.\n */\n balanceRequest: GetMultichainTokenBalancesParams['balanceRequest'] | undefined;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMultichainTokenBalancesResult>['queryParams'];\n};\n\n/**\n * Returns token balances across multiple chains, networks, and addresses\n * in a single batched API request.\n *\n * Wraps `getMultichainTokenBalances` from `@dynamic-labs-sdk/client`. The\n * hook stays disabled until `balanceRequest` is defined. Use this for\n * portfolio-style views; for a single account on one chain prefer\n * {@link useGetTokenBalances}.\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetMultichainTokenBalances({\n * balanceRequest,\n * });\n * ```\n */\nexport const useGetMultichainTokenBalances = ({\n balanceRequest,\n queryParams,\n}: UseGetMultichainTokenBalancesParams) =>\n useBaseQuery<GetMultichainTokenBalancesResult>({\n enabled: balanceRequest !== undefined,\n queryFn: (client) =>\n getMultichainTokenBalances(\n {\n balanceRequest:\n balanceRequest as GetMultichainTokenBalancesParams['balanceRequest'],\n },\n client\n ),\n queryKey: ['useGetMultichainTokenBalances', balanceRequest],\n queryParams,\n });\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getNativeBalance } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype UseGetNativeBalanceParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<{ balance: string | null }>['queryParams'];\n /**\n * **Pseudo-required.** The wallet account to fetch the balance for.\n * Accepting `undefined` lets callers wire this up before the wallet\n * account has loaded — the hook stays disabled until a real value is\n * supplied.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Returns the native token balance for a wallet account.\n *\n * Calls `getNativeBalance` from `@dynamic-labs-sdk/client`. The hook stays\n * disabled until `walletAccount` is defined.\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetNativeBalance({ walletAccount });\n * ```\n */\nexport const useGetNativeBalance = ({ walletAccount, queryParams }: UseGetNativeBalanceParams) =>\n useBaseQuery<{ balance: string | null }>({\n enabled: walletAccount !== undefined,\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount,\n }),\n ],\n queryFn: (client) =>\n getNativeBalance(\n { walletAccount: walletAccount as WalletAccount },\n client\n ),\n queryKey: ['useGetNativeBalance', walletAccount?.id],\n queryParams,\n });\n","import { type OnceEventParams, onceEvent } from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\n/**\n * Subscribes to a Dynamic client event for a single occurrence.\n *\n * Wraps `onceEvent` from `@dynamic-labs-sdk/client` — the one-shot sibling of\n * `useOnEvent`. The listener fires at most once. Uses a ref to always call the\n * latest listener, and cleans up the subscription on unmount or event change.\n *\n * @example\n * ```tsx\n * useOnceEvent({\n * event: 'authFlowCancelled',\n * listener: () => console.log('auth flow cancelled'),\n * });\n * ```\n */\nexport const useOnceEvent = <E extends keyof DynamicEvents>({\n event,\n listener,\n}: OnceEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(listener);\n\n callbackRef.current = listener;\n\n useEffect(\n () =>\n onceEvent(\n {\n event,\n listener: (...args: any[]) => {\n // @ts-expect-error - Ignore the type error because we are using the ref\n callbackRef.current(...args);\n },\n },\n client\n ),\n [event, client]\n );\n};\n","import { getPasskeys } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetPasskeysResult = Awaited<ReturnType<typeof getPasskeys>>;\n\nexport type UseGetPasskeysParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetPasskeysResult>['queryParams'];\n};\n\n/**\n * Returns the passkeys registered for the current user.\n *\n * Wraps `getPasskeys` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: passkeys, isLoading, refetch } = useGetPasskeys();\n * ```\n */\nexport const useGetPasskeys = ({ queryParams }: UseGetPasskeysParams = {}) =>\n useBaseQuery<GetPasskeysResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getPasskeys(client),\n queryKey: ['useGetPasskeys'],\n queryParams,\n });\n","import { proveWalletAccountOwnership } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ProveWalletAccountOwnershipVariables = Parameters<\n typeof proveWalletAccountOwnership\n>[0];\ntype ProveWalletAccountOwnershipResult = Awaited<\n ReturnType<typeof proveWalletAccountOwnership>\n>;\n\nexport type UseProveWalletAccountOwnershipParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ProveWalletAccountOwnershipResult,\n ProveWalletAccountOwnershipVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `proveWalletAccountOwnership` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount })` to prove ownership of a connected wallet account by signing a challenge.\n *\n * @example\n * ```tsx\n * const { mutate: proveOwnership, isPending } =\n * useProveWalletAccountOwnership();\n * proveOwnership({ walletAccount });\n * ```\n */\nexport const useProveWalletAccountOwnership = ({\n mutateParams,\n}: UseProveWalletAccountOwnershipParams = {}) =>\n useBaseMutation<\n ProveWalletAccountOwnershipResult,\n ProveWalletAccountOwnershipVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n proveWalletAccountOwnership(variables, client),\n });\n","import { refreshAuth } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RefreshAuthResult = Awaited<ReturnType<typeof refreshAuth>>;\n\nexport type UseRefreshAuthParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<RefreshAuthResult, void>['mutateParams'];\n};\n\n/**\n * Wraps `refreshAuth` from `@dynamic-labs-sdk/client`. Takes no arguments — call `mutate()` to refresh the session/JWT; the resolved `data` is a `VerifyResponse`.\n *\n * @example\n * ```tsx\n * const { mutate: refreshAuth, isPending } = useRefreshAuth();\n * <button onClick={() => refreshAuth()} disabled={isPending}>\n * Refresh session\n * </button>\n * ```\n */\nexport const useRefreshAuth = ({ mutateParams }: UseRefreshAuthParams = {}) =>\n useBaseMutation<RefreshAuthResult, void>({\n mutateParams,\n mutationFn: ({ client }) => refreshAuth(client),\n });\n","import { getRegisteredDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetRegisteredDevicesResult = Awaited<\n ReturnType<typeof getRegisteredDevices>\n>;\n\nexport type UseGetRegisteredDevicesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetRegisteredDevicesResult>['queryParams'];\n};\n\n/**\n * Returns the devices registered for the current user.\n *\n * Wraps `getRegisteredDevices` from `@dynamic-labs-sdk/client`. Pair with\n * {@link useRevokeRegisteredDevice} to let users revoke a device from the\n * list.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: devices, isLoading, refetch } = useGetRegisteredDevices();\n * ```\n */\nexport const useGetRegisteredDevices = ({\n queryParams,\n}: UseGetRegisteredDevicesParams = {}) =>\n useBaseQuery<GetRegisteredDevicesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getRegisteredDevices(client),\n queryKey: ['useGetRegisteredDevices'],\n queryParams,\n });\n","import { registerPasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RegisterPasskeyVariables = Parameters<typeof registerPasskey>[0];\ntype RegisterPasskeyResult = Awaited<ReturnType<typeof registerPasskey>>;\n\nexport type UseRegisterPasskeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RegisterPasskeyResult,\n RegisterPasskeyVariables\n >['mutateParams'];\n};\n\n/**\n * Registers a new passkey for the current user.\n *\n * Wraps `registerPasskey` from `@dynamic-labs-sdk/client`. Call `mutate()`\n * to prompt the device's WebAuthn flow; the resolved `data` is the\n * registration response.\n *\n * @example\n * ```tsx\n * const { mutate: registerPasskey, isPending } = useRegisterPasskey();\n * <button onClick={() => registerPasskey()} disabled={isPending}>\n * Add passkey\n * </button>\n * ```\n */\nexport const useRegisterPasskey = ({\n mutateParams,\n}: UseRegisterPasskeyParams = {}) =>\n useBaseMutation<RegisterPasskeyResult, RegisterPasskeyVariables>({\n middlewares: [invalidatesQueries('useGetPasskeys')],\n mutateParams,\n mutationFn: ({ client, variables }) => registerPasskey(variables, client),\n });\n","import { registerTotpMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RegisterTotpMfaDeviceResult = Awaited<\n ReturnType<typeof registerTotpMfaDevice>\n>;\n\nexport type UseRegisterTotpMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RegisterTotpMfaDeviceResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Registers a new TOTP MFA device for the current user.\n *\n * Wraps `registerTotpMfaDevice` from `@dynamic-labs-sdk/client`. Takes no\n * arguments — call `mutate()` to start enrollment; the resolved `data`\n * contains the secret/URI used to render the authenticator QR code.\n *\n * @example\n * ```tsx\n * const { mutate: registerTotp, data, isPending } = useRegisterTotpMfaDevice();\n * <button onClick={() => registerTotp()} disabled={isPending}>\n * Add authenticator app\n * </button>\n * ```\n */\nexport const useRegisterTotpMfaDevice = ({\n mutateParams,\n}: UseRegisterTotpMfaDeviceParams = {}) =>\n useBaseMutation<RegisterTotpMfaDeviceResult, void>({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client }) => registerTotpMfaDevice(client),\n });\n","import { removeWalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RemoveWalletAccountVariables = Parameters<typeof removeWalletAccount>[0];\ntype RemoveWalletAccountResult = Awaited<\n ReturnType<typeof removeWalletAccount>\n>;\n\nexport type UseRemoveWalletAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RemoveWalletAccountResult,\n RemoveWalletAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Removes a wallet account from the current user.\n *\n * Wraps `removeWalletAccount` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletAccount })` to disconnect/unlink the account; the\n * resolved `data` is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: removeWallet, isPending } = useRemoveWalletAccount();\n * <button\n * onClick={() => removeWallet({ walletAccount })}\n * disabled={isPending}\n * >\n * Remove wallet\n * </button>\n * ```\n */\nexport const useRemoveWalletAccount = ({\n mutateParams,\n}: UseRemoveWalletAccountParams = {}) =>\n useBaseMutation<RemoveWalletAccountResult, RemoveWalletAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n removeWalletAccount(variables, client),\n });\n","import { requestExternalAuthElevatedToken } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RequestExternalAuthElevatedTokenVariables = Parameters<\n typeof requestExternalAuthElevatedToken\n>[0];\ntype RequestExternalAuthElevatedTokenResult = Awaited<\n ReturnType<typeof requestExternalAuthElevatedToken>\n>;\n\nexport type UseRequestExternalAuthElevatedTokenParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RequestExternalAuthElevatedTokenResult,\n RequestExternalAuthElevatedTokenVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `requestExternalAuthElevatedToken` from `@dynamic-labs-sdk/client`. Call `mutate({ externalJwt })` to exchange an externally issued JWT for an elevated-access token.\n *\n * @example\n * ```tsx\n * const { mutate: requestElevatedToken } =\n * useRequestExternalAuthElevatedToken();\n * requestElevatedToken({ externalJwt });\n * ```\n */\nexport const useRequestExternalAuthElevatedToken = ({\n mutateParams,\n}: UseRequestExternalAuthElevatedTokenParams = {}) =>\n useBaseMutation<\n RequestExternalAuthElevatedTokenResult,\n RequestExternalAuthElevatedTokenVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n requestExternalAuthElevatedToken(variables, client),\n });\n","import { revokeAllRegisteredDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RevokeAllRegisteredDevicesResult = Awaited<\n ReturnType<typeof revokeAllRegisteredDevices>\n>;\n\nexport type UseRevokeAllRegisteredDevicesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RevokeAllRegisteredDevicesResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Wraps `revokeAllRegisteredDevices` from `@dynamic-labs-sdk/client`. Takes no arguments — call `mutate()` to revoke every device registered to the current user; the resolved `data` is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: revokeAllDevices, isPending } =\n * useRevokeAllRegisteredDevices();\n * <button onClick={() => revokeAllDevices()} disabled={isPending}>\n * Revoke all devices\n * </button>\n * ```\n */\nexport const useRevokeAllRegisteredDevices = ({\n mutateParams,\n}: UseRevokeAllRegisteredDevicesParams = {}) => {\n return useBaseMutation<RevokeAllRegisteredDevicesResult, void>({\n middlewares: [invalidatesQueries('useGetRegisteredDevices')],\n mutateParams,\n mutationFn: ({ client }) => revokeAllRegisteredDevices(client),\n });\n};\n","import { revokeRegisteredDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RevokeRegisteredDeviceVariables = Parameters<\n typeof revokeRegisteredDevice\n>[0];\ntype RevokeRegisteredDeviceResult = Awaited<\n ReturnType<typeof revokeRegisteredDevice>\n>;\n\nexport type UseRevokeRegisteredDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RevokeRegisteredDeviceResult,\n RevokeRegisteredDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Revokes a previously registered device.\n *\n * Wraps `revokeRegisteredDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ deviceRegistrationId })` with the id of the device to revoke\n * (e.g. one returned by {@link useGetRegisteredDevices}); the resolved `data`\n * is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: revokeDevice, isPending } = useRevokeRegisteredDevice();\n * <button\n * onClick={() => revokeDevice({ deviceRegistrationId })}\n * disabled={isPending}\n * >\n * Revoke device\n * </button>\n * ```\n */\nexport const useRevokeRegisteredDevice = ({\n mutateParams,\n}: UseRevokeRegisteredDeviceParams = {}) => {\n return useBaseMutation<\n RevokeRegisteredDeviceResult,\n RevokeRegisteredDeviceVariables\n >({\n middlewares: [invalidatesQueries('useGetRegisteredDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n revokeRegisteredDevice(variables, client),\n });\n};\n","import { sendEmailOTP } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SendEmailOTPVariables = Parameters<typeof sendEmailOTP>[0];\ntype SendEmailOTPResult = Awaited<ReturnType<typeof sendEmailOTP>>;\n\nexport type UseSendEmailOTPParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SendEmailOTPResult,\n SendEmailOTPVariables\n >['mutateParams'];\n};\n\n/**\n * Sends a one-time password to an email address.\n *\n * Wraps `sendEmailOTP` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ email })` to dispatch the code; the resolved `data` is the\n * `OTPVerification` payload to hand to {@link useVerifyOTP} once the user\n * enters the code they received.\n *\n * @example\n * ```tsx\n * const { mutate: sendEmailOTP, data: otpVerification, isPending } =\n * useSendEmailOTP();\n * <button\n * onClick={() => sendEmailOTP({ email: 'velma@mystery.inc' })}\n * disabled={isPending}\n * >\n * Email me a code\n * </button>\n * ```\n */\nexport const useSendEmailOTP = ({ mutateParams }: UseSendEmailOTPParams = {}) =>\n useBaseMutation<SendEmailOTPResult, SendEmailOTPVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => sendEmailOTP(variables, client),\n });\n","import { sendSmsOTP } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SendSmsOTPVariables = Parameters<typeof sendSmsOTP>[0];\ntype SendSmsOTPResult = Awaited<ReturnType<typeof sendSmsOTP>>;\n\nexport type UseSendSmsOTPParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SendSmsOTPResult,\n SendSmsOTPVariables\n >['mutateParams'];\n};\n\n/**\n * Sends a one-time password to a phone number via SMS.\n *\n * Wraps `sendSmsOTP` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ isoCountryCode, phoneNumber })` to dispatch the code; the\n * resolved `data` is the `OTPVerification` payload to hand to\n * {@link useVerifyOTP} once the user enters the code they received.\n *\n * @example\n * ```tsx\n * const { mutate: sendSmsOTP, data: otpVerification, isPending } =\n * useSendSmsOTP();\n * <button\n * onClick={() =>\n * sendSmsOTP({ isoCountryCode: 'US', phoneNumber: '5550100' })\n * }\n * disabled={isPending}\n * >\n * Text me a code\n * </button>\n * ```\n */\nexport const useSendSmsOTP = ({ mutateParams }: UseSendSmsOTPParams = {}) =>\n useBaseMutation<SendSmsOTPResult, SendSmsOTPVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => sendSmsOTP(variables, client),\n });\n","import { setDefaultMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype SetDefaultMfaDeviceVariables = Parameters<typeof setDefaultMfaDevice>[0];\ntype SetDefaultMfaDeviceResult = Awaited<\n ReturnType<typeof setDefaultMfaDevice>\n>;\n\nexport type UseSetDefaultMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SetDefaultMfaDeviceResult,\n SetDefaultMfaDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Sets the current user's default MFA device.\n *\n * Wraps `setDefaultMfaDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ deviceId })` to designate the device used for MFA challenges.\n *\n * @example\n * ```tsx\n * const { mutate: setDefaultDevice, isPending } = useSetDefaultMfaDevice();\n * <button onClick={() => setDefaultDevice({ deviceId })} disabled={isPending}>\n * Make default\n * </button>\n * ```\n */\nexport const useSetDefaultMfaDevice = ({\n mutateParams,\n}: UseSetDefaultMfaDeviceParams = {}) =>\n useBaseMutation<SetDefaultMfaDeviceResult, SetDefaultMfaDeviceVariables>({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n setDefaultMfaDevice(variables, client),\n });\n","import { signInWithExternalJwt } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithExternalJwtVariables = Parameters<\n typeof signInWithExternalJwt\n>[0];\ntype SignInWithExternalJwtResult = Awaited<\n ReturnType<typeof signInWithExternalJwt>\n>;\n\nexport type UseSignInWithExternalJwtParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithExternalJwtResult,\n SignInWithExternalJwtVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `signInWithExternalJwt` from `@dynamic-labs-sdk/client`. Call `mutate({ externalJwt })` to authenticate the user with a JWT issued by an external auth provider.\n *\n * @example\n * ```tsx\n * const { mutate: signInWithJwt, isPending } = useSignInWithExternalJwt();\n * signInWithJwt({ externalJwt });\n * ```\n */\nexport const useSignInWithExternalJwt = ({\n mutateParams,\n}: UseSignInWithExternalJwtParams = {}) =>\n useBaseMutation<SignInWithExternalJwtResult, SignInWithExternalJwtVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n signInWithExternalJwt(variables, client),\n });\n","import { signInWithPasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithPasskeyVariables = Parameters<typeof signInWithPasskey>[0];\ntype SignInWithPasskeyResult = Awaited<ReturnType<typeof signInWithPasskey>>;\n\nexport type UseSignInWithPasskeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithPasskeyResult,\n SignInWithPasskeyVariables\n >['mutateParams'];\n};\n\n/**\n * Signs the user in with a previously registered passkey.\n *\n * Wraps `signInWithPasskey` from `@dynamic-labs-sdk/client`. Call `mutate()`\n * to start the WebAuthn authentication; the resolved `data` is the\n * authentication response.\n *\n * @example\n * ```tsx\n * const { mutate: signInWithPasskey, isPending } = useSignInWithPasskey();\n * <button onClick={() => signInWithPasskey()} disabled={isPending}>\n * Sign in with passkey\n * </button>\n * ```\n */\nexport const useSignInWithPasskey = ({\n mutateParams,\n}: UseSignInWithPasskeyParams = {}) =>\n useBaseMutation<SignInWithPasskeyResult, SignInWithPasskeyVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => signInWithPasskey(variables, client),\n });\n","import { signInWithSocialPopUp } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithSocialPopUpVariables = Parameters<\n typeof signInWithSocialPopUp\n>[0];\ntype SignInWithSocialPopUpResult = Awaited<\n ReturnType<typeof signInWithSocialPopUp>\n>;\n\nexport type UseSignInWithSocialPopUpParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithSocialPopUpResult,\n SignInWithSocialPopUpVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `signInWithSocialPopUp` from `@dynamic-labs-sdk/client`. Call `mutate({ provider })` to open the provider's OAuth popup; the resolved `data` is the signed-in `User` (or `null`).\n *\n * @example\n * ```tsx\n * const { mutate: signInWithPopUp, data: user } =\n * useSignInWithSocialPopUp();\n * signInWithPopUp({ provider: 'google' });\n * ```\n */\nexport const useSignInWithSocialPopUp = ({\n mutateParams,\n}: UseSignInWithSocialPopUpParams = {}) =>\n useBaseMutation<SignInWithSocialPopUpResult, SignInWithSocialPopUpVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n signInWithSocialPopUp(variables, client),\n });\n","import { signInWithSocialRedirect } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithSocialRedirectVariables = Parameters<\n typeof signInWithSocialRedirect\n>[0];\ntype SignInWithSocialRedirectResult = Awaited<\n ReturnType<typeof signInWithSocialRedirect>\n>;\n\nexport type UseSignInWithSocialRedirectParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithSocialRedirectResult,\n SignInWithSocialRedirectVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `signInWithSocialRedirect` from `@dynamic-labs-sdk/client`. Call `mutate({ provider, redirectUrl })` to redirect the user to the provider's OAuth page; complete the flow with {@link useCompleteSocialAuthentication}.\n *\n * @example\n * ```tsx\n * const { mutate: signInWithRedirect } = useSignInWithSocialRedirect();\n * signInWithRedirect({ provider: 'google', redirectUrl });\n * ```\n */\nexport const useSignInWithSocialRedirect = ({\n mutateParams,\n}: UseSignInWithSocialRedirectParams = {}) =>\n useBaseMutation<\n SignInWithSocialRedirectResult,\n SignInWithSocialRedirectVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n signInWithSocialRedirect(variables, client),\n });\n","import { signMessage } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignMessageVariables = Parameters<typeof signMessage>[0];\ntype SignMessageResult = Awaited<ReturnType<typeof signMessage>>;\n\nexport type UseSignMessageParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignMessageResult,\n SignMessageVariables\n >['mutateParams'];\n};\n\n/**\n * Signs an arbitrary message with a wallet account.\n *\n * Wraps `signMessage` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletAccount, message })` to trigger the signature flow —\n * the wallet provider will prompt the user via its native UI.\n *\n * @example\n * ```tsx\n * const { mutate: signMessage, data, isPending } = useSignMessage();\n * <button\n * onClick={() => signMessage({ message: 'gm', walletAccount })}\n * disabled={isPending}\n * >\n * Sign\n * </button>\n * ```\n */\nexport const useSignMessage = ({ mutateParams }: UseSignMessageParams = {}) =>\n useBaseMutation<SignMessageResult, SignMessageVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => signMessage(variables, client),\n });\n","import { submitFlowTransaction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SubmitFlowTransactionVariables = Parameters<typeof submitFlowTransaction>[0];\ntype SubmitFlowTransactionResult = Awaited<ReturnType<typeof submitFlowTransaction>>;\n\nexport type UseSubmitFlowTransactionParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SubmitFlowTransactionResult,\n SubmitFlowTransactionVariables\n >['mutateParams'];\n};\n\n/**\n * Prepares, signs, and broadcasts a flow transaction in one call.\n *\n * Wraps `submitFlowTransaction` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ flowId, walletAccount })` to run the full submission flow:\n * prepare signing, sign on-chain, and broadcast.\n *\n * @example\n * ```tsx\n * const { mutate: submitFlowTransaction, isPending } = useSubmitFlowTransaction();\n * <button onClick={() => submitFlowTransaction({ flowId, walletAccount })} disabled={isPending}>\n * Submit flow transaction\n * </button>\n * ```\n */\nexport const useSubmitFlowTransaction = ({\n mutateParams,\n}: UseSubmitFlowTransactionParams = {}) =>\n useBaseMutation<SubmitFlowTransactionResult, SubmitFlowTransactionVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n submitFlowTransaction(variables, client),\n });\n","import { getSwapQuote } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetSwapQuoteResult = Awaited<ReturnType<typeof getSwapQuote>>;\ntype GetSwapQuoteArgs = Parameters<typeof getSwapQuote>[0];\n\nexport type UseGetSwapQuoteParams = GetSwapQuoteArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetSwapQuoteResult>['queryParams'];\n};\n\n/**\n * Wraps `getSwapQuote` from `@dynamic-labs-sdk/client`. Returns a swap quote (including the signing payload consumed by {@link useExecuteSwapTransaction}).\n *\n * @example\n * ```tsx\n * const { data: quote, isLoading } = useGetSwapQuote(params);\n * ```\n */\nexport const useGetSwapQuote = ({ queryParams, ...args }: UseGetSwapQuoteParams) =>\n useBaseQuery<GetSwapQuoteResult>({\n queryFn: (client) => getSwapQuote(args, client),\n queryKey: ['useGetSwapQuote', args],\n queryParams,\n });\n","import { getSwapStatus } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetSwapStatusResult = Awaited<ReturnType<typeof getSwapStatus>>;\ntype GetSwapStatusArgs = Parameters<typeof getSwapStatus>[0];\n\nexport type UseGetSwapStatusParams = GetSwapStatusArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetSwapStatusResult>['queryParams'];\n};\n\n/**\n * Wraps `getSwapStatus` from `@dynamic-labs-sdk/client`. Returns the current status of a previously submitted swap.\n *\n * @example\n * ```tsx\n * const { data: status, isLoading } = useGetSwapStatus(params);\n * ```\n */\nexport const useGetSwapStatus = ({ queryParams, ...args }: UseGetSwapStatusParams) =>\n useBaseQuery<GetSwapStatusResult>({\n queryFn: (client) => getSwapStatus(args, client),\n queryKey: ['useGetSwapStatus', args],\n queryParams,\n });\n","import { switchActiveNetwork } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype SwitchActiveNetworkVariables = Parameters<typeof switchActiveNetwork>[0];\ntype SwitchActiveNetworkResult = Awaited<\n ReturnType<typeof switchActiveNetwork>\n>;\n\nexport type UseSwitchActiveNetworkParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SwitchActiveNetworkResult,\n SwitchActiveNetworkVariables\n >['mutateParams'];\n};\n\n/**\n * Switches the active network for a wallet account.\n *\n * Wraps `switchActiveNetwork` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ networkId, walletAccount })` to request the switch — the\n * wallet provider may prompt the user to approve adding/changing the\n * chain via its native UI.\n *\n * @example\n * ```tsx\n * const { mutate: switchNetwork, isPending } = useSwitchActiveNetwork();\n * <button\n * onClick={() => switchNetwork({ networkId: 1, walletAccount })}\n * disabled={isPending}\n * >\n * Switch to Ethereum\n * </button>\n * ```\n */\nexport const useSwitchActiveNetwork = ({\n mutateParams,\n}: UseSwitchActiveNetworkParams = {}) =>\n useBaseMutation<SwitchActiveNetworkResult, SwitchActiveNetworkVariables>({\n middlewares: [\n invalidatesQueries('useGetActiveNetworkData', 'useGetActiveNetworkId'),\n ],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n switchActiveNetwork(variables, client),\n });\n","import type {\n GetTokenBalancesParams,\n WalletAccount,\n} from '@dynamic-labs-sdk/client';\nimport { getTokenBalances } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype GetTokenBalancesResult = Awaited<ReturnType<typeof getTokenBalances>>;\n\n/**\n * `Omit` that distributes across each member of a union instead of collapsing\n * it into a single shape.\n *\n * `GetTokenBalancesParams` carries a `networkId` xor `networkIds` discriminated\n * union. The built-in `Omit` does not distribute over unions, so it merges the\n * branches into one shape that appears to allow both keys at once — which\n * neither branch actually accepts. Distributing preserves the discriminator so\n * callers still can't pass both at the same time.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nexport type UseGetTokenBalancesParams = DistributiveOmit<\n GetTokenBalancesParams,\n 'walletAccount'\n> & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetTokenBalancesResult>['queryParams'];\n /**\n * **Pseudo-required.** The wallet account to fetch balances for.\n * Accepting `undefined` lets callers wire this up before the wallet\n * account has loaded — the hook stays disabled until a real value is\n * supplied.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Returns the ERC-20-style token balances for a wallet account on a single\n * chain.\n *\n * Wraps `getTokenBalances` from `@dynamic-labs-sdk/client`. The hook stays\n * disabled until `walletAccount` is defined.\n *\n * For native-only balance use {@link useGetNativeBalance}; for a multi-chain\n * portfolio use {@link useGetMultichainTokenBalances}.\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetTokenBalances({ walletAccount });\n * ```\n */\nexport const useGetTokenBalances = ({\n walletAccount,\n queryParams,\n ...rest\n}: UseGetTokenBalancesParams) =>\n useBaseQuery<GetTokenBalancesResult>({\n enabled: walletAccount !== undefined,\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount,\n }),\n ],\n queryFn: (client) =>\n getTokenBalances(\n // safe: `enabled` guarantees walletAccount is defined when queryFn runs\n { walletAccount: walletAccount as WalletAccount, ...rest },\n client\n ),\n queryKey: ['useGetTokenBalances', walletAccount?.id, rest],\n queryParams,\n });\n","import type {\n Chain,\n GetTransactionHistoryParams,\n GetTransactionHistoryResponse,\n} from '@dynamic-labs-sdk/client';\nimport { getTransactionHistory } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\nexport type UseGetTransactionHistoryParams = Omit<\n GetTransactionHistoryParams,\n 'address' | 'chain' | 'networkId'\n> & {\n /**\n * **Pseudo-required.** The wallet address to fetch transactions for.\n * Accepting `undefined` lets callers wire this up before the wallet\n * has loaded — the hook stays disabled until all three of `address`,\n * `chain`, and `networkId` are defined.\n */\n address: string | undefined;\n /**\n * **Pseudo-required.** The chain to fetch transactions for. See\n * {@link address} for the gating semantics.\n */\n chain: Chain | undefined;\n /**\n * **Pseudo-required.** The network ID to fetch transactions for. See\n * {@link address} for the gating semantics.\n */\n networkId: number | string | undefined;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetTransactionHistoryResponse>['queryParams'];\n};\n\n/**\n * Returns the transaction history for a given wallet address, chain, and\n * network.\n *\n * Wraps `getTransactionHistory` from `@dynamic-labs-sdk/client`. The hook\n * stays disabled until `address`, `chain`, and `networkId` are all\n * defined. Pagination is driven by `offset` — callers can swap in a new\n * `offset` to fetch the next page (each unique key produces its own cache\n * entry).\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetTransactionHistory({\n * address,\n * chain,\n * networkId,\n * });\n * ```\n */\nexport const useGetTransactionHistory = ({\n address,\n chain,\n networkId,\n queryParams,\n ...rest\n}: UseGetTransactionHistoryParams) =>\n useBaseQuery<GetTransactionHistoryResponse>({\n enabled:\n address !== undefined && chain !== undefined && networkId !== undefined,\n queryFn: (client) =>\n getTransactionHistory(\n // safe: `enabled` guarantees these are defined when queryFn runs\n {\n address: address as string,\n chain: chain as Chain,\n networkId: networkId as number | string,\n ...rest,\n },\n client\n ),\n queryKey: [\n 'useGetTransactionHistory',\n address,\n chain,\n networkId,\n rest,\n ],\n queryParams,\n });\n","import { transferAmount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype TransferAmountVariables = Parameters<typeof transferAmount>[0];\ntype TransferAmountResult = Awaited<ReturnType<typeof transferAmount>>;\n\nexport type UseTransferAmountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n TransferAmountResult,\n TransferAmountVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `transferAmount` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount, amount, recipient, token })` to send tokens; the resolved `data` is `{ transactionHash }`.\n *\n * @example\n * ```tsx\n * const { mutate: transfer, data } = useTransferAmount();\n * transfer({ walletAccount, amount, recipient, token });\n * ```\n */\nexport const useTransferAmount = ({\n mutateParams,\n}: UseTransferAmountParams = {}) =>\n useBaseMutation<TransferAmountResult, TransferAmountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => transferAmount(variables, client),\n });\n","import { transferWalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype TransferWalletAccountVariables = Parameters<\n typeof transferWalletAccount\n>[0];\ntype TransferWalletAccountResult = Awaited<\n ReturnType<typeof transferWalletAccount>\n>;\n\nexport type UseTransferWalletAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n TransferWalletAccountResult,\n TransferWalletAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `transferWalletAccount` from `@dynamic-labs-sdk/client`. Call `mutate({ walletProviderKey })` to transfer (hand off) a wallet account to the given provider.\n *\n * @example\n * ```tsx\n * const { mutate: transferWalletAccount, isPending } =\n * useTransferWalletAccount();\n * transferWalletAccount({ walletProviderKey });\n * ```\n */\nexport const useTransferWalletAccount = ({\n mutateParams,\n}: UseTransferWalletAccountParams = {}) =>\n useBaseMutation<TransferWalletAccountResult, TransferWalletAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n transferWalletAccount(variables, client),\n });\n","import { unlinkSocialAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UnlinkSocialAccountVariables = Parameters<typeof unlinkSocialAccount>[0];\ntype UnlinkSocialAccountResult = Awaited<\n ReturnType<typeof unlinkSocialAccount>\n>;\n\nexport type UseUnlinkSocialAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n UnlinkSocialAccountResult,\n UnlinkSocialAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Unlinks a social account from the current user.\n *\n * Wraps `unlinkSocialAccount` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ verifiedCredentialId })` with the id of the social credential\n * to remove (e.g. from {@link useGetUserSocialAccounts}); the resolved `data`\n * is the updated `VerifyResponse`.\n *\n * @example\n * ```tsx\n * const { mutate: unlinkSocial, isPending } = useUnlinkSocialAccount();\n * <button\n * onClick={() => unlinkSocial({ verifiedCredentialId })}\n * disabled={isPending}\n * >\n * Disconnect\n * </button>\n * ```\n */\nexport const useUnlinkSocialAccount = ({\n mutateParams,\n}: UseUnlinkSocialAccountParams = {}) =>\n useBaseMutation<UnlinkSocialAccountResult, UnlinkSocialAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n unlinkSocialAccount(variables, client),\n });\n","import { updateUser } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UpdateUserVariables = Parameters<typeof updateUser>[0];\ntype UpdateUserResult = Awaited<ReturnType<typeof updateUser>>;\n\nexport type UseUpdateUserParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n UpdateUserResult,\n UpdateUserVariables\n >['mutateParams'];\n};\n\n/**\n * Updates the current user's profile information.\n *\n * Wraps `updateUser` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ userFields })` to push the new values; if a sensitive field\n * (email, phone) changed the resolved `data` will contain an\n * `OTPVerification` payload the caller needs to follow up on, otherwise\n * `data` is `undefined`.\n *\n * @example\n * ```tsx\n * const { mutate: updateUser, data: otp, isPending } = useUpdateUser();\n * <button\n * onClick={() => updateUser({ userFields: { firstName: 'Velma' } })}\n * disabled={isPending}\n * >\n * Save\n * </button>\n * ```\n */\nexport const useUpdateUser = ({ mutateParams }: UseUpdateUserParams = {}) =>\n useBaseMutation<UpdateUserResult, UpdateUserVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => updateUser(variables, client),\n });\n","import { getUserSocialAccounts } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the current user's linked social accounts.\n *\n * Re-renders when the user changes. Resolves to an empty list while no user is\n * authenticated — the guard is required because the selector runs synchronously\n * and `getUserSocialAccounts` throws (`assertDefined`) when there is no user.\n */\nexport const useGetUserSocialAccounts = () =>\n useBaseState({\n defaultValue: [],\n event: 'userChanged',\n queryKey: ['useGetUserSocialAccounts'],\n selector: (client) => (client.user ? getUserSocialAccounts(client) : []),\n });\n","import { verifyOTP } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype VerifyOTPVariables = Parameters<typeof verifyOTP>[0];\ntype VerifyOTPResult = Awaited<ReturnType<typeof verifyOTP>>;\n\nexport type UseVerifyOTPParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n VerifyOTPResult,\n VerifyOTPVariables\n >['mutateParams'];\n};\n\n/**\n * Verifies a one-time password the user received via email or SMS.\n *\n * Wraps `verifyOTP` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ otpVerification, verificationToken })` with the\n * `OTPVerification` returned by {@link useSendEmailOTP} /\n * {@link useSendSmsOTP} and the code the user entered. A single hook\n * covers both flows — `verifyOTP` resolves sign-in vs. user-update\n * internally based on the current session.\n *\n * @example\n * ```tsx\n * const { mutate: verifyOTP, isPending } = useVerifyOTP();\n * <button\n * onClick={() => verifyOTP({ otpVerification, verificationToken: code })}\n * disabled={isPending}\n * >\n * Verify\n * </button>\n * ```\n */\nexport const useVerifyOTP = ({ mutateParams }: UseVerifyOTPParams = {}) =>\n useBaseMutation<VerifyOTPResult, VerifyOTPVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => verifyOTP(variables, client),\n });\n","import { verifyWalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype VerifyWalletAccountVariables = Parameters<typeof verifyWalletAccount>[0];\ntype VerifyWalletAccountResult = Awaited<ReturnType<typeof verifyWalletAccount>>;\n\nexport type UseVerifyWalletAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n VerifyWalletAccountResult,\n VerifyWalletAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Verifies ownership of a wallet account and adds it to the user's profile.\n *\n * Wraps `verifyWalletAccount` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletAccount })` to trigger the verification flow — the\n * wallet provider will prompt the user to sign a proof-of-ownership\n * message. On success, `data` resolves to the verified\n * {@link WalletAccount}.\n *\n * Throws `WalletAccountAlreadyVerifiedError` if the wallet is already\n * verified, or `WalletAlreadyLinkedToAnotherUserError` if the wallet is\n * linked to a different user — both surface through `error`.\n *\n * @example\n * ```tsx\n * const { mutate: verifyWalletAccount, isPending } = useVerifyWalletAccount();\n * <button\n * onClick={() => verifyWalletAccount({ walletAccount })}\n * disabled={isPending}\n * >\n * Verify\n * </button>\n * ```\n */\nexport const useVerifyWalletAccount = ({\n mutateParams,\n}: UseVerifyWalletAccountParams = {}) =>\n useBaseMutation<VerifyWalletAccountResult, VerifyWalletAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n verifyWalletAccount(variables, client),\n });\n","import { getWalletAccounts } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns all wallet accounts connected to the current user.\n *\n * Re-renders when wallet accounts change (connect, disconnect, verify).\n */\nexport const useGetWalletAccounts = () =>\n useBaseState({\n defaultValue: [],\n // wallet accounts derive from both unverifiedWalletAccounts state and\n // user.verifiedCredentials, so we need to refresh on either change\n event: { userChanged: true, walletAccountsChanged: true },\n queryKey: ['useGetWalletAccounts'],\n selector: (client) => getWalletAccounts(client),\n });\n","import { getWalletConnectCatalog } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetWalletConnectCatalogResult = Awaited<\n ReturnType<typeof getWalletConnectCatalog>\n>;\n\nexport type UseGetWalletConnectCatalogParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetWalletConnectCatalogResult>['queryParams'];\n};\n\n/**\n * Returns the WalletConnect catalog (groups and wallets) used for displaying\n * wallet information and building mobile wallet deeplinks.\n *\n * Wraps `getWalletConnectCatalog` from `@dynamic-labs-sdk/client`.\n *\n * @example\n * ```tsx\n * const { data: catalog, isLoading } = useGetWalletConnectCatalog();\n * ```\n */\nexport const useGetWalletConnectCatalog = ({\n queryParams,\n}: UseGetWalletConnectCatalogParams = {}) =>\n useBaseQuery<GetWalletConnectCatalogResult>({\n queryFn: (client) => getWalletConnectCatalog(client),\n queryKey: ['useGetWalletConnectCatalog'],\n queryParams,\n });\n","import { getWalletConnectCatalogWalletByWalletProviderKey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype WalletConnectCatalogWalletByWalletProviderKeyResult = Awaited<ReturnType<typeof getWalletConnectCatalogWalletByWalletProviderKey>>;\ntype WalletConnectCatalogWalletByWalletProviderKeyArgs = Parameters<typeof getWalletConnectCatalogWalletByWalletProviderKey>[0];\n\nexport type UseGetWalletConnectCatalogWalletByWalletProviderKeyParams = WalletConnectCatalogWalletByWalletProviderKeyArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<WalletConnectCatalogWalletByWalletProviderKeyResult>['queryParams'];\n};\n\n/**\n * Returns the WalletConnect catalog wallet for the given wallet provider key.\n *\n * Wraps `getWalletConnectCatalogWalletByWalletProviderKey` from `@dynamic-labs-sdk/client`.\n */\nexport const useGetWalletConnectCatalogWalletByWalletProviderKey = ({ queryParams, ...args }: UseGetWalletConnectCatalogWalletByWalletProviderKeyParams) =>\n useBaseQuery<WalletConnectCatalogWalletByWalletProviderKeyResult>({\n queryFn: (client) => getWalletConnectCatalogWalletByWalletProviderKey(args, client),\n queryKey: ['useGetWalletConnectCatalogWalletByWalletProviderKey', args],\n queryParams,\n });\n","import { getWalletOptionsCatalogue } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnEvent } from '../../../../middlewares/invalidateOnEvent';\n\ntype GetWalletOptionsCatalogueResult = Awaited<\n ReturnType<typeof getWalletOptionsCatalogue>\n>;\ntype GetWalletOptionsCatalogueArgs = NonNullable<\n Parameters<typeof getWalletOptionsCatalogue>[0]\n>;\n\n/**\n * Freshness window for the catalogue, in milliseconds.\n *\n * The catalogue is derived from two near-static sources: the in-memory wallet\n * provider registry and the wallet-book document served from a CDN. With\n * react-query's default `staleTime: 0` the data is stale the instant it\n * arrives, so every new mount/observer (e.g. reopening the wallet list)\n * refetches the CDN document even though nothing changed — needlessly\n * hammering the CDN. A 1h window serves cached data to remounts; the registry\n * event middlewares below still force an immediate refetch on any real change,\n * so reactivity is preserved.\n */\nconst CATALOGUE_STALE_TIME_MS = 3_600_000;\n\nexport type UseGetWalletOptionsCatalogueParams = GetWalletOptionsCatalogueArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.). Spread last, so overrides win over the\n * hook's CDN-aware defaults.\n */\n queryParams?: UseBaseQueryParams<GetWalletOptionsCatalogueResult>['queryParams'];\n};\n\n/**\n * Wraps `getWalletOptionsCatalogue` from `@dynamic-labs-sdk/client`. Returns the catalogue of wallet options the project supports.\n *\n * Automatically refetches when the wallet provider registry changes: EIP-6963\n * wallets fill the registry asynchronously after mount, and the registry emits\n * `walletProviderChanged` (on register / priority update) and\n * `walletProviderUnregistered` (on removal). Wiring both keeps the catalogue in\n * sync without consumers pairing the hook with a manual listener.\n *\n * @example\n * ```tsx\n * const { data: catalogue, isLoading } = useGetWalletOptionsCatalogue();\n * ```\n */\nexport const useGetWalletOptionsCatalogue = ({\n queryParams,\n ...args\n}: UseGetWalletOptionsCatalogueParams = {}) =>\n useBaseQuery<GetWalletOptionsCatalogueResult>({\n middlewares: [\n invalidateOnEvent({ event: 'walletProviderChanged' }),\n invalidateOnEvent({ event: 'walletProviderUnregistered' }),\n ],\n queryFn: (client) => getWalletOptionsCatalogue(args, client),\n queryKey: ['useGetWalletOptionsCatalogue', args],\n queryParams: {\n // `getWalletOptionsCatalogue` already retries the wallet-book CDN\n // internally and falls back to a cached copy, so react-query's default 3\n // retries would only stack redundant requests on a failing network.\n retry: false,\n staleTime: CATALOGUE_STALE_TIME_MS,\n // Consumer overrides win over the above CDN-aware defaults.\n ...queryParams,\n },\n });\n","import { getWalletProviderDataByKey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnEvent } from '../../../../middlewares/invalidateOnEvent';\n\ntype GetWalletProviderDataByKeyResult = Awaited<\n ReturnType<typeof getWalletProviderDataByKey>\n>;\ntype GetWalletProviderDataByKeyArgs = Parameters<\n typeof getWalletProviderDataByKey\n>[0];\n\nexport type UseGetWalletProviderDataByKeyParams =\n GetWalletProviderDataByKeyArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, enabled, etc.).\n */\n queryParams?: NonNullable<\n UseBaseQueryParams<GetWalletProviderDataByKeyResult>['queryParams']\n >;\n };\n\n/**\n * Wraps `getWalletProviderDataByKey` from `@dynamic-labs-sdk/client`. Returns\n * the display/connection data for a single wallet provider, by key.\n *\n * The underlying data is read from the in-memory wallet provider registry,\n * which EIP-6963 wallets fill asynchronously after mount. The registry emits\n * `walletProviderChanged` on register / priority update, so wiring it keeps the\n * provider data in sync without consumers pairing the hook with a manual\n * `useOnEvent` + `refetch` listener.\n *\n * `walletProviderUnregistered` is intentionally not wired here: this hook reads\n * a single key, and once that key is removed there is no replacement data to\n * fetch — refetching would only make `getWalletProviderDataByKey` throw\n * `NoWalletProviderFoundError`. Skipping it keeps the last-known data instead of\n * forcing the query into an error state.\n *\n * @example\n * ```tsx\n * const { data: walletProviderData } = useGetWalletProviderDataByKey({\n * walletProviderKey,\n * });\n * ```\n */\nexport const useGetWalletProviderDataByKey = ({\n queryParams,\n ...args\n}: UseGetWalletProviderDataByKeyParams) =>\n useBaseQuery<GetWalletProviderDataByKeyResult>({\n middlewares: [invalidateOnEvent({ event: 'walletProviderChanged' })],\n // `getWalletProviderDataByKey` resolves synchronously, but `useBaseQuery`\n // expects a promise-returning `queryFn`, so wrap the result.\n queryFn: (client) =>\n Promise.resolve(getWalletProviderDataByKey(args, client)),\n queryKey: ['useGetWalletProviderDataByKey', args],\n queryParams,\n });\n","import { isDeviceRegistrationRequired } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user still needs to register this device.\n *\n * Re-renders when the user changes (login, logout, completing device\n * registration). Resolves to `false` while no user is authenticated.\n */\nexport const useIsDeviceRegistrationRequired = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsDeviceRegistrationRequired'],\n selector: (client) =>\n client.user ? isDeviceRegistrationRequired(client.user) : false,\n });\n","import { isUserMissingMfaAuth } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user still needs to complete an MFA challenge.\n *\n * Re-renders when the user changes (login, logout, completing the MFA\n * challenge). Resolves to `false` while no user is authenticated.\n */\nexport const useIsUserMissingMfaAuth = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsUserMissingMfaAuth'],\n selector: (client) => (client.user ? isUserMissingMfaAuth(client) : false),\n });\n","import { isPendingRecoveryCodesAcknowledgment } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user still needs to acknowledge their MFA\n * recovery codes.\n *\n * Re-renders when the user changes (login, logout, acknowledging the recovery\n * codes). Resolves to `false` while no user is authenticated.\n */\nexport const useIsPendingRecoveryCodesAcknowledgment = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsPendingRecoveryCodesAcknowledgment'],\n selector: (client) =>\n client.user ? isPendingRecoveryCodesAcknowledgment(client) : false,\n });\n","import { isUserOnboardingComplete } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user has completed every onboarding requirement\n * (KYC fields, MFA, recovery codes acknowledgment, device registration).\n *\n * Re-renders when the user changes (login, logout, completing any onboarding\n * step). Resolves to `false` while no user is authenticated.\n */\nexport const useIsUserOnboardingComplete = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsUserOnboardingComplete'],\n selector: (client) =>\n client.user ? isUserOnboardingComplete(client) : false,\n });\n","import { backupWaasKeySharesToGoogleDrive } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype BackupWaasKeySharesToGoogleDriveVariables = Parameters<typeof backupWaasKeySharesToGoogleDrive>[0];\ntype BackupWaasKeySharesToGoogleDriveResult = Awaited<ReturnType<typeof backupWaasKeySharesToGoogleDrive>>;\n\n/**\n * Parameters for {@link useBackupWaasKeySharesToGoogleDrive}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseBackupWaasKeySharesToGoogleDriveParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useBackupWaasKeySharesToGoogleDrive\n * @see backupWaasKeySharesToGoogleDrive\n */\nexport type UseBackupWaasKeySharesToGoogleDriveParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<BackupWaasKeySharesToGoogleDriveResult, BackupWaasKeySharesToGoogleDriveVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `backupWaasKeySharesToGoogleDrive` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * back up an embedded wallet's key shares to the user's Google Drive.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useBackupWaasKeySharesToGoogleDrive();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `backupWaasKeySharesToGoogleDrive` and whose `data` is its resolved value.\n * @see backupWaasKeySharesToGoogleDrive\n * @see UseBackupWaasKeySharesToGoogleDriveParams\n */\nexport const useBackupWaasKeySharesToGoogleDrive = ({ mutateParams }: UseBackupWaasKeySharesToGoogleDriveParams = {}) =>\n useBaseMutation<BackupWaasKeySharesToGoogleDriveResult, BackupWaasKeySharesToGoogleDriveVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => backupWaasKeySharesToGoogleDrive(variables, client),\n });\n","import { createWaasWalletAccounts } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateWaasWalletAccountsVariables = Parameters<typeof createWaasWalletAccounts>[0];\ntype CreateWaasWalletAccountsResult = Awaited<ReturnType<typeof createWaasWalletAccounts>>;\n\n/**\n * Parameters for {@link useCreateWaasWalletAccounts}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseCreateWaasWalletAccountsParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useCreateWaasWalletAccounts\n * @see createWaasWalletAccounts\n */\nexport type UseCreateWaasWalletAccountsParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<CreateWaasWalletAccountsResult, CreateWaasWalletAccountsVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `createWaasWalletAccounts` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * create embedded wallet accounts for the signed-in user.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useCreateWaasWalletAccounts();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `createWaasWalletAccounts` and whose `data` is its resolved value.\n * @see createWaasWalletAccounts\n * @see UseCreateWaasWalletAccountsParams\n */\nexport const useCreateWaasWalletAccounts = ({ mutateParams }: UseCreateWaasWalletAccountsParams = {}) =>\n useBaseMutation<CreateWaasWalletAccountsResult, CreateWaasWalletAccountsVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => createWaasWalletAccounts(variables, client),\n });\n","import { delegateWaasKeyShares } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype DelegateWaasKeySharesVariables = Parameters<typeof delegateWaasKeyShares>[0];\ntype DelegateWaasKeySharesResult = Awaited<ReturnType<typeof delegateWaasKeyShares>>;\n\n/**\n * Parameters for {@link useDelegateWaasKeyShares}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseDelegateWaasKeySharesParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useDelegateWaasKeyShares\n * @see delegateWaasKeyShares\n */\nexport type UseDelegateWaasKeySharesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<DelegateWaasKeySharesResult, DelegateWaasKeySharesVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `delegateWaasKeyShares` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * delegate signing access for an embedded wallet to your server.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useDelegateWaasKeyShares();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `delegateWaasKeyShares` and whose `data` is its resolved value.\n * @see delegateWaasKeyShares\n * @see UseDelegateWaasKeySharesParams\n */\nexport const useDelegateWaasKeyShares = ({ mutateParams }: UseDelegateWaasKeySharesParams = {}) =>\n useBaseMutation<DelegateWaasKeySharesResult, DelegateWaasKeySharesVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => delegateWaasKeyShares(variables, client),\n });\n","import { exportWaasClientKeyshares } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ExportWaasClientKeysharesVariables = Parameters<typeof exportWaasClientKeyshares>[0];\ntype ExportWaasClientKeysharesResult = Awaited<ReturnType<typeof exportWaasClientKeyshares>>;\n\n/**\n * Parameters for {@link useExportWaasClientKeyshares}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseExportWaasClientKeysharesParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useExportWaasClientKeyshares\n * @see exportWaasClientKeyshares\n */\nexport type UseExportWaasClientKeysharesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<ExportWaasClientKeysharesResult, ExportWaasClientKeysharesVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `exportWaasClientKeyshares` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * export an embedded wallet's client key shares.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useExportWaasClientKeyshares();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `exportWaasClientKeyshares` and whose `data` is its resolved value.\n * @see exportWaasClientKeyshares\n * @see UseExportWaasClientKeysharesParams\n */\nexport const useExportWaasClientKeyshares = ({ mutateParams }: UseExportWaasClientKeysharesParams = {}) =>\n useBaseMutation<ExportWaasClientKeysharesResult, ExportWaasClientKeysharesVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => exportWaasClientKeyshares(variables, client),\n });\n","import { exportWaasPrivateKey } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ExportWaasPrivateKeyVariables = Parameters<typeof exportWaasPrivateKey>[0];\ntype ExportWaasPrivateKeyResult = Awaited<ReturnType<typeof exportWaasPrivateKey>>;\n\n/**\n * Parameters for {@link useExportWaasPrivateKey}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseExportWaasPrivateKeyParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useExportWaasPrivateKey\n * @see exportWaasPrivateKey\n */\nexport type UseExportWaasPrivateKeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<ExportWaasPrivateKeyResult, ExportWaasPrivateKeyVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `exportWaasPrivateKey` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * export an embedded wallet's private key.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useExportWaasPrivateKey();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `exportWaasPrivateKey` and whose `data` is its resolved value.\n * @see exportWaasPrivateKey\n * @see UseExportWaasPrivateKeyParams\n */\nexport const useExportWaasPrivateKey = ({ mutateParams }: UseExportWaasPrivateKeyParams = {}) =>\n useBaseMutation<ExportWaasPrivateKeyResult, ExportWaasPrivateKeyVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => exportWaasPrivateKey(variables, client),\n });\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getWalletRecoveryState } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetWalletRecoveryStateResult = Awaited<\n ReturnType<typeof getWalletRecoveryState>\n>;\n\n/**\n * Parameters for {@link useGetWalletRecoveryState}: the embedded wallet account to read recovery\n * state for, plus optional react-query options.\n *\n * @example\n * ```tsx\n * const params: UseGetWalletRecoveryStateParams = { walletAccount };\n * ```\n * @see useGetWalletRecoveryState\n * @see getWalletRecoveryState\n */\nexport type UseGetWalletRecoveryStateParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: NonNullable<UseBaseQueryParams<GetWalletRecoveryStateResult>['queryParams']>;\n /**\n * **Pseudo-required.** The embedded wallet account to read recovery state\n * for. Accepting `undefined` lets callers wire this up before the wallet\n * account has loaded — the hook stays disabled until a real value is\n * supplied.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Returns the recovery state of an embedded wallet account — whether the user\n * still needs to set a password, back up their key shares, etc.\n *\n * Wraps `getWalletRecoveryState` from `@dynamic-labs-sdk/client/waas`. The hook\n * stays disabled until `walletAccount` is defined.\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useGetWalletRecoveryState({ walletAccount });\n * ```\n *\n * @returns A react-query result whose `data` is the wallet account's recovery state; it stays disabled until `walletAccount` is defined.\n * @see getWalletRecoveryState\n * @see UseGetWalletRecoveryStateParams\n */\nexport const useGetWalletRecoveryState = ({\n queryParams,\n walletAccount,\n}: UseGetWalletRecoveryStateParams) =>\n useBaseQuery<GetWalletRecoveryStateResult>({\n enabled: walletAccount !== undefined,\n queryFn: (client) =>\n getWalletRecoveryState(\n // safe: `enabled` guarantees walletAccount is defined when queryFn runs\n { walletAccount: walletAccount as WalletAccount },\n client,\n ),\n queryKey: ['useGetWalletRecoveryState', walletAccount?.id],\n queryParams,\n });\n","import { importWaasPrivateKey } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ImportWaasPrivateKeyVariables = Parameters<typeof importWaasPrivateKey>[0];\ntype ImportWaasPrivateKeyResult = Awaited<ReturnType<typeof importWaasPrivateKey>>;\n\n/**\n * Parameters for {@link useImportWaasPrivateKey}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseImportWaasPrivateKeyParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useImportWaasPrivateKey\n * @see importWaasPrivateKey\n */\nexport type UseImportWaasPrivateKeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<ImportWaasPrivateKeyResult, ImportWaasPrivateKeyVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `importWaasPrivateKey` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * import a private key into a new embedded wallet account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useImportWaasPrivateKey();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `importWaasPrivateKey` and whose `data` is its resolved value.\n * @see importWaasPrivateKey\n * @see UseImportWaasPrivateKeyParams\n */\nexport const useImportWaasPrivateKey = ({ mutateParams }: UseImportWaasPrivateKeyParams = {}) =>\n useBaseMutation<ImportWaasPrivateKeyResult, ImportWaasPrivateKeyVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => importWaasPrivateKey(variables, client),\n });\n","import { migrateFromFireblocks } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype MigrateFromFireblocksVariables = Parameters<typeof migrateFromFireblocks>[0];\ntype MigrateFromFireblocksResult = Awaited<ReturnType<typeof migrateFromFireblocks>>;\n\n/**\n * Parameters for {@link useMigrateFromFireblocks}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseMigrateFromFireblocksParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useMigrateFromFireblocks\n * @see migrateFromFireblocks\n */\nexport type UseMigrateFromFireblocksParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<MigrateFromFireblocksResult, MigrateFromFireblocksVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `migrateFromFireblocks` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * migrate a user's legacy Fireblocks wallet to an embedded wallet.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useMigrateFromFireblocks();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `migrateFromFireblocks` and whose `data` is its resolved value.\n * @see migrateFromFireblocks\n * @see UseMigrateFromFireblocksParams\n */\nexport const useMigrateFromFireblocks = ({ mutateParams }: UseMigrateFromFireblocksParams = {}) =>\n useBaseMutation<MigrateFromFireblocksResult, MigrateFromFireblocksVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => migrateFromFireblocks(variables, client),\n });\n","import { refreshWaasWalletAccountShares } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RefreshWaasWalletAccountSharesVariables = Parameters<typeof refreshWaasWalletAccountShares>[0];\ntype RefreshWaasWalletAccountSharesResult = Awaited<ReturnType<typeof refreshWaasWalletAccountShares>>;\n\n/**\n * Parameters for {@link useRefreshWaasWalletAccountShares}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseRefreshWaasWalletAccountSharesParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useRefreshWaasWalletAccountShares\n * @see refreshWaasWalletAccountShares\n */\nexport type UseRefreshWaasWalletAccountSharesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<RefreshWaasWalletAccountSharesResult, RefreshWaasWalletAccountSharesVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `refreshWaasWalletAccountShares` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * refresh an embedded wallet account's key shares.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useRefreshWaasWalletAccountShares();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `refreshWaasWalletAccountShares` and whose `data` is its resolved value.\n * @see refreshWaasWalletAccountShares\n * @see UseRefreshWaasWalletAccountSharesParams\n */\nexport const useRefreshWaasWalletAccountShares = ({ mutateParams }: UseRefreshWaasWalletAccountSharesParams = {}) =>\n useBaseMutation<RefreshWaasWalletAccountSharesResult, RefreshWaasWalletAccountSharesVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => refreshWaasWalletAccountShares(variables, client),\n });\n","import { revokeWaasDelegation } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RevokeWaasDelegationVariables = Parameters<typeof revokeWaasDelegation>[0];\ntype RevokeWaasDelegationResult = Awaited<ReturnType<typeof revokeWaasDelegation>>;\n\n/**\n * Parameters for {@link useRevokeWaasDelegation}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseRevokeWaasDelegationParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useRevokeWaasDelegation\n * @see revokeWaasDelegation\n */\nexport type UseRevokeWaasDelegationParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<RevokeWaasDelegationResult, RevokeWaasDelegationVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `revokeWaasDelegation` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * revoke an embedded wallet's previously granted delegated signing access.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useRevokeWaasDelegation();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `revokeWaasDelegation` and whose `data` is its resolved value.\n * @see revokeWaasDelegation\n * @see UseRevokeWaasDelegationParams\n */\nexport const useRevokeWaasDelegation = ({ mutateParams }: UseRevokeWaasDelegationParams = {}) =>\n useBaseMutation<RevokeWaasDelegationResult, RevokeWaasDelegationVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => revokeWaasDelegation(variables, client),\n });\n","import { setWaasWalletAccountPassword } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SetWaasWalletAccountPasswordVariables = Parameters<typeof setWaasWalletAccountPassword>[0];\ntype SetWaasWalletAccountPasswordResult = Awaited<ReturnType<typeof setWaasWalletAccountPassword>>;\n\n/**\n * Parameters for {@link useSetWaasWalletAccountPassword}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseSetWaasWalletAccountPasswordParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useSetWaasWalletAccountPassword\n * @see setWaasWalletAccountPassword\n */\nexport type UseSetWaasWalletAccountPasswordParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<SetWaasWalletAccountPasswordResult, SetWaasWalletAccountPasswordVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `setWaasWalletAccountPassword` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * set a password on an embedded wallet account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useSetWaasWalletAccountPassword();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `setWaasWalletAccountPassword` and whose `data` is its resolved value.\n * @see setWaasWalletAccountPassword\n * @see UseSetWaasWalletAccountPasswordParams\n */\nexport const useSetWaasWalletAccountPassword = ({ mutateParams }: UseSetWaasWalletAccountPasswordParams = {}) =>\n useBaseMutation<SetWaasWalletAccountPasswordResult, SetWaasWalletAccountPasswordVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => setWaasWalletAccountPassword(variables, client),\n });\n","import { unlockWallet } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UnlockWalletVariables = Parameters<typeof unlockWallet>[0];\ntype UnlockWalletResult = Awaited<ReturnType<typeof unlockWallet>>;\n\n/**\n * Parameters for {@link useUnlockWallet}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseUnlockWalletParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useUnlockWallet\n * @see unlockWallet\n */\nexport type UseUnlockWalletParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<UnlockWalletResult, UnlockWalletVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `unlockWallet` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * unlock an embedded wallet account with its password.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useUnlockWallet();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `unlockWallet` and whose `data` is its resolved value.\n * @see unlockWallet\n * @see UseUnlockWalletParams\n */\nexport const useUnlockWallet = ({ mutateParams }: UseUnlockWalletParams = {}) =>\n useBaseMutation<UnlockWalletResult, UnlockWalletVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => unlockWallet(variables, client),\n });\n","import { updateWaasPassword } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UpdateWaasPasswordVariables = Parameters<typeof updateWaasPassword>[0];\ntype UpdateWaasPasswordResult = Awaited<ReturnType<typeof updateWaasPassword>>;\n\n/**\n * Parameters for {@link useUpdateWaasPassword}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseUpdateWaasPasswordParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useUpdateWaasPassword\n * @see updateWaasPassword\n */\nexport type UseUpdateWaasPasswordParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<UpdateWaasPasswordResult, UpdateWaasPasswordVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `updateWaasPassword` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * update the password protecting an embedded wallet account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useUpdateWaasPassword();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `updateWaasPassword` and whose `data` is its resolved value.\n * @see updateWaasPassword\n * @see UseUpdateWaasPasswordParams\n */\nexport const useUpdateWaasPassword = ({ mutateParams }: UseUpdateWaasPasswordParams = {}) =>\n useBaseMutation<UpdateWaasPasswordResult, UpdateWaasPasswordVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => updateWaasPassword(variables, client),\n });\n","import type { DynamicInitStatus } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Narrowed result surface for `useInitStatus`.\n *\n * This is an **exceptional** state hook: unlike every other hook built on\n * `useBaseState` (which returns the full react-query result), it deliberately\n * exposes only the init status (`data`) and the init error. The usual\n * `isLoading` / `isFetching` / `isPlaceholderData` / `refetch` surface is\n * meaningless here because `data` already mirrors the client's own init\n * lifecycle (`'uninitialized' → 'in-progress' → 'finished' | 'failed'`), so\n * surfacing it would only invite callers to gate on the wrong signal.\n */\nexport type UseInitStatusResult = {\n /**\n * Current client initialization status. Reactive — updates whenever the\n * client emits `initStatusChanged`.\n *\n * `'uninitialized' | 'in-progress' | 'finished' | 'failed'`. A `'failed'`\n * value is the authoritative signal that initialization failed.\n */\n data: DynamicInitStatus | undefined;\n /**\n * The error that caused initialization to fail, or `null` when init has not\n * failed. When `data === 'failed'` this holds *why* it failed (unless a\n * non-`Error` value was thrown, in which case it is `null`).\n */\n error: Error | null;\n /**\n * `true` iff initialization failed with an `Error` (i.e. `error` is\n * non-null).\n */\n isError: boolean;\n};\n\n/**\n * Internal reactive shape read from client state: the init status plus the\n * error that caused a failure, kept together so a single subscription drives\n * both fields.\n */\ntype InitState = {\n error: Error | null;\n status: DynamicInitStatus;\n};\n\n/**\n * Returns the current initialization status of the Dynamic client, plus the\n * error that caused initialization to fail (when it did).\n *\n * Exposes only `data` (the reactive init status), `error` and `isError` —\n * see {@link UseInitStatusResult}. Possible `data` values: `'uninitialized'`,\n * `'in-progress'`, `'finished'`, `'failed'`. When `data === 'failed'`, `error`\n * carries the failure reason.\n *\n * @example\n * ```tsx\n * const { data: status, error } = useInitStatus();\n * if (status === 'failed') return <InitErrorScreen message={error?.message} />;\n * if (status !== 'finished') return <LoadingScreen />;\n * return <App />;\n * ```\n *\n * @notInstrumented\n */\nexport const useInitStatus = (): UseInitStatusResult => {\n const { data } = useBaseState<InitState>({\n defaultValue: { error: null, status: 'uninitialized' },\n event: 'initStatusChanged',\n queryKey: ['useInitStatus'],\n selector: (client) => ({\n error: client.initError,\n status: client.initStatus,\n }),\n // exception: this hook exposes init state *during* init, so it must not\n // gate on waitForClientInitialized.\n skipWaitForInit: true,\n });\n\n const error = data?.error ?? null;\n\n return { data: data?.status, error, isError: error !== null };\n};\n","import { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the session expiration date, or null if no active session.\n *\n * Re-renders when the user changes (which includes session updates).\n */\nexport const useSessionExpiresAt = () =>\n useBaseState({\n defaultValue: null,\n event: 'userChanged',\n queryKey: ['useSessionExpiresAt'],\n selector: (client) => client.sessionExpiresAt,\n });\n","import { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the current authenticated user, or null if not authenticated.\n *\n * Re-renders when the user changes (login, logout, profile update).\n */\nexport const useUser = () =>\n useBaseState({\n defaultValue: null,\n event: 'userChanged',\n queryKey: ['useUser'],\n selector: (client) => client.user,\n });\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport {\n useAcknowledgeRecoveryCodes,\n type UseAcknowledgeRecoveryCodesParams,\n} from '../hooks/wrappers/functions/useAcknowledgeRecoveryCodes';\nexport {\n useGetActiveNetworkData,\n type UseGetActiveNetworkDataParams,\n} from '../hooks/wrappers/functions/useGetActiveNetworkData';\nexport {\n useGetActiveNetworkId,\n type UseGetActiveNetworkIdParams,\n} from '../hooks/wrappers/functions/useGetActiveNetworkId';\nexport {\n useAddNetwork,\n type UseAddNetworkParams,\n} from '../hooks/wrappers/functions/useAddNetwork';\nexport {\n useAssertWalletAccountSigningAvailability,\n type UseAssertWalletAccountSigningAvailabilityParams,\n} from '../hooks/wrappers/functions/useAssertWalletAccountSigningAvailability';\nexport {\n useAttachFlowSource,\n type UseAttachFlowSourceParams,\n} from '../hooks/wrappers/functions/useAttachFlowSource';\nexport {\n useAuthenticateMfaRecoveryCode,\n type UseAuthenticateMfaRecoveryCodeParams,\n} from '../hooks/wrappers/functions/useAuthenticateMfaRecoveryCode';\nexport {\n useAuthenticatePasskeyMFA,\n type UseAuthenticatePasskeyMFAParams,\n} from '../hooks/wrappers/functions/useAuthenticatePasskeyMFA';\nexport {\n useAuthenticateTotpMfaDevice,\n type UseAuthenticateTotpMfaDeviceParams,\n} from '../hooks/wrappers/functions/useAuthenticateTotpMfaDevice';\nexport { useGetAvailableWalletProvidersData } from '../hooks/wrappers/functions/useGetAvailableWalletProvidersData';\nexport {\n useGetBalanceForAddress,\n type UseGetBalanceForAddressParams,\n} from '../hooks/wrappers/functions/useGetBalanceForAddress';\nexport {\n useBroadcastFlow,\n type UseBroadcastFlowParams,\n} from '../hooks/wrappers/functions/useBroadcastFlow';\nexport {\n useCancelFlow,\n type UseCancelFlowParams,\n} from '../hooks/wrappers/functions/useCancelFlow';\nexport {\n useCheckStepUpAuth,\n type UseCheckStepUpAuthParams,\n} from '../hooks/wrappers/functions/useCheckStepUpAuth';\nexport {\n useGetCoinbaseBuyUrl,\n type UseGetCoinbaseBuyUrlParams,\n} from '../hooks/wrappers/functions/useGetCoinbaseBuyUrl';\nexport {\n useAddCoinbaseOnrampOrderEventListener,\n type UseAddCoinbaseOnrampOrderEventListenerParams,\n} from '../hooks/wrappers/functions/useAddCoinbaseOnrampOrderEventListener';\nexport {\n useCompleteDeviceRegistration,\n type UseCompleteDeviceRegistrationParams,\n} from '../hooks/wrappers/functions/useCompleteDeviceRegistration';\nexport {\n useCompleteSocialRedirect,\n type UseCompleteSocialRedirectParams,\n} from '../hooks/wrappers/functions/useCompleteSocialRedirect';\nexport {\n useDetectSocialRedirectUrl,\n type UseDetectSocialRedirectUrlParams,\n} from '../hooks/wrappers/functions/useDetectSocialRedirectUrl';\nexport {\n useConfirmTransaction,\n type UseConfirmTransactionParams,\n} from '../hooks/wrappers/functions/useConfirmTransaction';\nexport {\n useConnectAndVerifyWithWalletProvider,\n type UseConnectAndVerifyWithWalletProviderParams,\n} from '../hooks/wrappers/functions/useConnectAndVerifyWithWalletProvider';\nexport {\n useGetConnectedAddresses,\n type UseGetConnectedAddressesParams,\n} from '../hooks/wrappers/functions/useGetConnectedAddresses';\nexport {\n useConnectWithWalletProvider,\n type UseConnectWithWalletProviderParams,\n} from '../hooks/wrappers/functions/useConnectWithWalletProvider';\nexport {\n useCreateCoinbaseOnrampOrder,\n type UseCreateCoinbaseOnrampOrderParams,\n} from '../hooks/wrappers/functions/useCreateCoinbaseOnrampOrder';\nexport {\n useCreateCryptoDotComPayment,\n type UseCreateCryptoDotComPaymentParams,\n} from '../hooks/wrappers/functions/useCreateCryptoDotComPayment';\nexport {\n useCreateNewMfaRecoveryCodes,\n type UseCreateNewMfaRecoveryCodesParams,\n} from '../hooks/wrappers/functions/useCreateNewMfaRecoveryCodes';\nexport {\n useDeleteMfaDevice,\n type UseDeleteMfaDeviceParams,\n} from '../hooks/wrappers/functions/useDeleteMfaDevice';\nexport {\n useDeletePasskey,\n type UseDeletePasskeyParams,\n} from '../hooks/wrappers/functions/useDeletePasskey';\nexport {\n useDeleteUser,\n type UseDeleteUserParams,\n} from '../hooks/wrappers/functions/useDeleteUser';\nexport { useOnEvent } from '../hooks/wrappers/functions/useOnEvent';\nexport {\n useExecuteSwapTransaction,\n type UseExecuteSwapTransactionParams,\n} from '../hooks/wrappers/functions/useExecuteSwapTransaction';\nexport {\n useGetFlow,\n type UseGetFlowParams,\n} from '../hooks/wrappers/functions/useGetFlow';\nexport {\n useGetFlowQuote,\n type UseGetFlowQuoteParams,\n} from '../hooks/wrappers/functions/useGetFlowQuote';\nexport {\n usePrepareFlowSigning,\n type UsePrepareFlowSigningParams,\n} from '../hooks/wrappers/functions/usePrepareFlowSigning';\nexport {\n useGetGoogleDriveBackupReadiness,\n type UseGetGoogleDriveBackupReadinessParams,\n} from '../hooks/wrappers/functions/useGetGoogleDriveBackupReadiness';\nexport {\n useIsMfaRequiredForAction,\n type UseIsMfaRequiredForActionParams,\n} from '../hooks/wrappers/functions/useIsMfaRequiredForAction';\nexport {\n useGetKrakenAccounts,\n type UseGetKrakenAccountsParams,\n} from '../hooks/wrappers/functions/useGetKrakenAccounts';\nexport {\n useCreateKrakenExchangeTransfer,\n type UseCreateKrakenExchangeTransferParams,\n} from '../hooks/wrappers/functions/useCreateKrakenExchangeTransfer';\nexport {\n useGetKrakenWhitelistedAddresses,\n type UseGetKrakenWhitelistedAddressesParams,\n} from '../hooks/wrappers/functions/useGetKrakenWhitelistedAddresses';\nexport { useLogout } from '../hooks/wrappers/functions/useLogout';\nexport {\n useMergeUserAccounts,\n type UseMergeUserAccountsParams,\n} from '../hooks/wrappers/functions/useMergeUserAccounts';\nexport {\n useGetMfaDevices,\n type UseGetMfaDevicesParams,\n} from '../hooks/wrappers/functions/useGetMfaDevices';\nexport {\n useGetMfaMethods,\n type UseGetMfaMethodsParams,\n} from '../hooks/wrappers/functions/useGetMfaMethods';\nexport {\n useGetMfaRecoveryCodes,\n type UseGetMfaRecoveryCodesParams,\n} from '../hooks/wrappers/functions/useGetMfaRecoveryCodes';\nexport {\n useGetMoonPayCurrencies,\n type UseGetMoonPayCurrenciesParams,\n} from '../hooks/wrappers/functions/useGetMoonPayCurrencies';\nexport {\n useGetMoonPayUrl,\n type UseGetMoonPayUrlParams,\n} from '../hooks/wrappers/functions/useGetMoonPayUrl';\nexport {\n useGetMultichainTokenBalances,\n type UseGetMultichainTokenBalancesParams,\n} from '../hooks/wrappers/functions/useGetMultichainTokenBalances';\nexport { useGetNativeBalance } from '../hooks/wrappers/functions/useGetNativeBalance';\nexport { useOnceEvent } from '../hooks/wrappers/functions/useOnceEvent';\nexport {\n useGetPasskeys,\n type UseGetPasskeysParams,\n} from '../hooks/wrappers/functions/useGetPasskeys';\nexport {\n useProveWalletAccountOwnership,\n type UseProveWalletAccountOwnershipParams,\n} from '../hooks/wrappers/functions/useProveWalletAccountOwnership';\nexport {\n useRefreshAuth,\n type UseRefreshAuthParams,\n} from '../hooks/wrappers/functions/useRefreshAuth';\nexport {\n useGetRegisteredDevices,\n type UseGetRegisteredDevicesParams,\n} from '../hooks/wrappers/functions/useGetRegisteredDevices';\nexport {\n useRegisterPasskey,\n type UseRegisterPasskeyParams,\n} from '../hooks/wrappers/functions/useRegisterPasskey';\nexport {\n useRegisterTotpMfaDevice,\n type UseRegisterTotpMfaDeviceParams,\n} from '../hooks/wrappers/functions/useRegisterTotpMfaDevice';\nexport {\n useRemoveWalletAccount,\n type UseRemoveWalletAccountParams,\n} from '../hooks/wrappers/functions/useRemoveWalletAccount';\nexport {\n useRequestExternalAuthElevatedToken,\n type UseRequestExternalAuthElevatedTokenParams,\n} from '../hooks/wrappers/functions/useRequestExternalAuthElevatedToken';\nexport {\n useRevokeAllRegisteredDevices,\n type UseRevokeAllRegisteredDevicesParams,\n} from '../hooks/wrappers/functions/useRevokeAllRegisteredDevices';\nexport {\n useRevokeRegisteredDevice,\n type UseRevokeRegisteredDeviceParams,\n} from '../hooks/wrappers/functions/useRevokeRegisteredDevice';\nexport {\n useSendEmailOTP,\n type UseSendEmailOTPParams,\n} from '../hooks/wrappers/functions/useSendEmailOTP';\nexport {\n useSendSmsOTP,\n type UseSendSmsOTPParams,\n} from '../hooks/wrappers/functions/useSendSmsOTP';\nexport {\n useSetDefaultMfaDevice,\n type UseSetDefaultMfaDeviceParams,\n} from '../hooks/wrappers/functions/useSetDefaultMfaDevice';\nexport {\n useSignInWithExternalJwt,\n type UseSignInWithExternalJwtParams,\n} from '../hooks/wrappers/functions/useSignInWithExternalJwt';\nexport {\n useSignInWithPasskey,\n type UseSignInWithPasskeyParams,\n} from '../hooks/wrappers/functions/useSignInWithPasskey';\nexport {\n useSignInWithSocialPopUp,\n type UseSignInWithSocialPopUpParams,\n} from '../hooks/wrappers/functions/useSignInWithSocialPopUp';\nexport {\n useSignInWithSocialRedirect,\n type UseSignInWithSocialRedirectParams,\n} from '../hooks/wrappers/functions/useSignInWithSocialRedirect';\nexport {\n useSignMessage,\n type UseSignMessageParams,\n} from '../hooks/wrappers/functions/useSignMessage';\nexport {\n useSubmitFlowTransaction,\n type UseSubmitFlowTransactionParams,\n} from '../hooks/wrappers/functions/useSubmitFlowTransaction';\nexport {\n useGetSwapQuote,\n type UseGetSwapQuoteParams,\n} from '../hooks/wrappers/functions/useGetSwapQuote';\nexport {\n useGetSwapStatus,\n type UseGetSwapStatusParams,\n} from '../hooks/wrappers/functions/useGetSwapStatus';\nexport {\n useSwitchActiveNetwork,\n type UseSwitchActiveNetworkParams,\n} from '../hooks/wrappers/functions/useSwitchActiveNetwork';\nexport {\n useGetTokenBalances,\n type UseGetTokenBalancesParams,\n} from '../hooks/wrappers/functions/useGetTokenBalances';\nexport {\n useGetTransactionHistory,\n type UseGetTransactionHistoryParams,\n} from '../hooks/wrappers/functions/useGetTransactionHistory';\nexport {\n useTransferAmount,\n type UseTransferAmountParams,\n} from '../hooks/wrappers/functions/useTransferAmount';\nexport {\n useTransferWalletAccount,\n type UseTransferWalletAccountParams,\n} from '../hooks/wrappers/functions/useTransferWalletAccount';\nexport {\n useUnlinkSocialAccount,\n type UseUnlinkSocialAccountParams,\n} from '../hooks/wrappers/functions/useUnlinkSocialAccount';\nexport {\n useUpdateUser,\n type UseUpdateUserParams,\n} from '../hooks/wrappers/functions/useUpdateUser';\nexport { useGetUserSocialAccounts } from '../hooks/wrappers/functions/useGetUserSocialAccounts';\nexport {\n useVerifyOTP,\n type UseVerifyOTPParams,\n} from '../hooks/wrappers/functions/useVerifyOTP';\nexport {\n useVerifyWalletAccount,\n type UseVerifyWalletAccountParams,\n} from '../hooks/wrappers/functions/useVerifyWalletAccount';\nexport { useGetWalletAccounts } from '../hooks/wrappers/functions/useGetWalletAccounts';\nexport {\n useGetWalletConnectCatalog,\n type UseGetWalletConnectCatalogParams,\n} from '../hooks/wrappers/functions/useGetWalletConnectCatalog';\nexport {\n useGetWalletConnectCatalogWalletByWalletProviderKey,\n type UseGetWalletConnectCatalogWalletByWalletProviderKeyParams,\n} from '../hooks/wrappers/functions/useGetWalletConnectCatalogWalletByWalletProviderKey';\nexport {\n useGetWalletOptionsCatalogue,\n type UseGetWalletOptionsCatalogueParams,\n} from '../hooks/wrappers/functions/useGetWalletOptionsCatalogue';\nexport {\n useGetWalletProviderDataByKey,\n type UseGetWalletProviderDataByKeyParams,\n} from '../hooks/wrappers/functions/useGetWalletProviderDataByKey';\nexport { useOnWalletProviderEvent } from '../hooks/wrappers/functions/useOnWalletProviderEvent';\nexport { useIsDeviceRegistrationRequired } from '../hooks/wrappers/functions/useIsDeviceRegistrationRequired';\nexport { useIsUserMissingMfaAuth } from '../hooks/wrappers/functions/useIsUserMissingMfaAuth';\nexport { useIsPendingRecoveryCodesAcknowledgment } from '../hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment';\nexport { useIsUserOnboardingComplete } from '../hooks/wrappers/functions/useIsUserOnboardingComplete';\nexport {\n useBackupWaasKeySharesToGoogleDrive,\n type UseBackupWaasKeySharesToGoogleDriveParams,\n} from '../hooks/wrappers/functions/useBackupWaasKeySharesToGoogleDrive';\nexport {\n useCreateWaasWalletAccounts,\n type UseCreateWaasWalletAccountsParams,\n} from '../hooks/wrappers/functions/useCreateWaasWalletAccounts';\nexport {\n useDelegateWaasKeyShares,\n type UseDelegateWaasKeySharesParams,\n} from '../hooks/wrappers/functions/useDelegateWaasKeyShares';\nexport {\n useExportWaasClientKeyshares,\n type UseExportWaasClientKeysharesParams,\n} from '../hooks/wrappers/functions/useExportWaasClientKeyshares';\nexport {\n useExportWaasPrivateKey,\n type UseExportWaasPrivateKeyParams,\n} from '../hooks/wrappers/functions/useExportWaasPrivateKey';\nexport {\n useGetWalletRecoveryState,\n type UseGetWalletRecoveryStateParams,\n} from '../hooks/wrappers/functions/useGetWalletRecoveryState';\nexport {\n useImportWaasPrivateKey,\n type UseImportWaasPrivateKeyParams,\n} from '../hooks/wrappers/functions/useImportWaasPrivateKey';\nexport {\n useMigrateFromFireblocks,\n type UseMigrateFromFireblocksParams,\n} from '../hooks/wrappers/functions/useMigrateFromFireblocks';\nexport {\n useRefreshWaasWalletAccountShares,\n type UseRefreshWaasWalletAccountSharesParams,\n} from '../hooks/wrappers/functions/useRefreshWaasWalletAccountShares';\nexport {\n useRevokeWaasDelegation,\n type UseRevokeWaasDelegationParams,\n} from '../hooks/wrappers/functions/useRevokeWaasDelegation';\nexport {\n useSetWaasWalletAccountPassword,\n type UseSetWaasWalletAccountPasswordParams,\n} from '../hooks/wrappers/functions/useSetWaasWalletAccountPassword';\nexport {\n useUnlockWallet,\n type UseUnlockWalletParams,\n} from '../hooks/wrappers/functions/useUnlockWallet';\nexport {\n useUpdateWaasPassword,\n type UseUpdateWaasPasswordParams,\n} from '../hooks/wrappers/functions/useUpdateWaasPassword';\nexport {\n useInitStatus,\n type UseInitStatusResult,\n} from '../hooks/wrappers/state/useInitStatus';\nexport { useSessionExpiresAt } from '../hooks/wrappers/state/useSessionExpiresAt';\nexport { useUser } from '../hooks/wrappers/state/useUser';\nexport { DynamicProvider, useDynamicClient } from '../modules/DynamicContext';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","names":["EMPTY_MIDDLEWARES: ReadonlyArray<MutationMiddleware>","EMPTY_MIDDLEWARES","EMPTY_MIDDLEWARES: ReadonlyArray<QueryMiddleware>","map: UseBaseStateEventsMap","packageName","packageVersion"],"sources":["../package.json","../src/modules/DynamicContext/DynamicContext.ts","../src/modules/DynamicContext/DynamicProvider.tsx","../src/errors/MissingProviderError/MissingProviderError.ts","../src/modules/DynamicContext/useDynamicClient.ts","../src/foundation/useBaseMutation/useBaseMutation.ts","../src/hooks/wrappers/functions/useAcknowledgeRecoveryCodes/useAcknowledgeRecoveryCodes.ts","../src/foundation/hookKeyNamespace/hookKeyNamespace.ts","../src/foundation/useBaseQuery/queryKeyPrefix.ts","../src/foundation/useBaseQuery/useBaseQuery.ts","../src/hooks/wrappers/functions/useOnWalletProviderEvent/useOnWalletProviderEvent.ts","../src/middlewares/invalidateOnWalletProviderEvent/invalidateOnWalletProviderEvent.ts","../src/hooks/wrappers/functions/useGetActiveNetworkData/useGetActiveNetworkData.ts","../src/hooks/wrappers/functions/useGetActiveNetworkId/useGetActiveNetworkId.ts","../src/hooks/wrappers/functions/useAddBusinessAccountMember/useAddBusinessAccountMember.ts","../src/hooks/wrappers/functions/useAddBusinessAccountSigner/useAddBusinessAccountSigner.ts","../src/hooks/wrappers/functions/useAddNetwork/useAddNetwork.ts","../src/hooks/wrappers/functions/useAddWalletToBusinessAccount/useAddWalletToBusinessAccount.ts","../src/hooks/wrappers/functions/useAssertWalletAccountSigningAvailability/useAssertWalletAccountSigningAvailability.ts","../src/hooks/wrappers/functions/useAttachFlowSource/useAttachFlowSource.ts","../src/hooks/wrappers/functions/useAuthenticateMfaRecoveryCode/useAuthenticateMfaRecoveryCode.ts","../src/hooks/wrappers/functions/useAuthenticatePasskeyMFA/useAuthenticatePasskeyMFA.ts","../src/middlewares/invalidatesQueries/invalidatesQueries.ts","../src/hooks/wrappers/functions/useAuthenticateTotpMfaDevice/useAuthenticateTotpMfaDevice.ts","../src/foundation/useBaseState/useBaseState.ts","../src/hooks/wrappers/functions/useGetAvailableWalletProvidersData/useGetAvailableWalletProvidersData.ts","../src/hooks/wrappers/functions/useGetBalanceForAddress/useGetBalanceForAddress.ts","../src/hooks/wrappers/functions/useGetBusinessAccount/useGetBusinessAccount.ts","../src/hooks/wrappers/functions/useBroadcastFlow/useBroadcastFlow.ts","../src/hooks/wrappers/functions/useCancelFlow/useCancelFlow.ts","../src/hooks/wrappers/functions/useCheckStepUpAuth/useCheckStepUpAuth.ts","../src/hooks/wrappers/functions/useGetCoinbaseBuyUrl/useGetCoinbaseBuyUrl.ts","../src/hooks/wrappers/functions/useAddCoinbaseOnrampOrderEventListener/useAddCoinbaseOnrampOrderEventListener.ts","../src/hooks/wrappers/functions/useCompleteDeviceRegistration/useCompleteDeviceRegistration.ts","../src/hooks/wrappers/functions/useCompleteSocialRedirect/useCompleteSocialRedirect.ts","../src/hooks/wrappers/functions/useDetectSocialRedirectUrl/useDetectSocialRedirectUrl.ts","../src/hooks/wrappers/functions/useConfirmTransaction/useConfirmTransaction.ts","../src/hooks/wrappers/functions/useConnectAndVerifyWithWalletProvider/useConnectAndVerifyWithWalletProvider.ts","../src/hooks/wrappers/functions/useOnEvent/useOnEvent.ts","../src/middlewares/invalidateOnEvent/invalidateOnEvent.ts","../src/hooks/wrappers/functions/useGetConnectedAddresses/useGetConnectedAddresses.ts","../src/hooks/wrappers/functions/useConnectWithWalletProvider/useConnectWithWalletProvider.ts","../src/hooks/wrappers/functions/useCreateBusinessAccount/useCreateBusinessAccount.ts","../src/hooks/wrappers/functions/useCreateCoinbaseOnrampOrder/useCreateCoinbaseOnrampOrder.ts","../src/hooks/wrappers/functions/useCreateCryptoDotComPayment/useCreateCryptoDotComPayment.ts","../src/hooks/wrappers/functions/useCreateNewMfaRecoveryCodes/useCreateNewMfaRecoveryCodes.ts","../src/hooks/wrappers/functions/useDeleteMfaDevice/useDeleteMfaDevice.ts","../src/hooks/wrappers/functions/useDeletePasskey/useDeletePasskey.ts","../src/hooks/wrappers/functions/useDeleteUser/useDeleteUser.ts","../src/hooks/wrappers/functions/useExecuteSwapTransaction/useExecuteSwapTransaction.ts","../src/hooks/wrappers/functions/useGetFlow/useGetFlow.ts","../src/hooks/wrappers/functions/useGetFlowQuote/useGetFlowQuote.ts","../src/hooks/wrappers/functions/usePrepareFlowSigning/usePrepareFlowSigning.ts","../src/middlewares/invalidateOnUserSwitch/invalidateOnUserSwitch.ts","../src/hooks/wrappers/functions/useGetGoogleDriveBackupReadiness/useGetGoogleDriveBackupReadiness.ts","../src/hooks/wrappers/functions/useIsMfaRequiredForAction/useIsMfaRequiredForAction.ts","../src/hooks/wrappers/functions/useGetKrakenAccounts/useGetKrakenAccounts.ts","../src/hooks/wrappers/functions/useCreateKrakenExchangeTransfer/useCreateKrakenExchangeTransfer.ts","../src/hooks/wrappers/functions/useGetKrakenWhitelistedAddresses/useGetKrakenWhitelistedAddresses.ts","../src/hooks/wrappers/functions/useListBusinessAccounts/useListBusinessAccounts.ts","../src/hooks/wrappers/functions/useLogout/useLogout.ts","../src/hooks/wrappers/functions/useMergeUserAccounts/useMergeUserAccounts.ts","../src/hooks/wrappers/functions/useGetMfaDevices/useGetMfaDevices.ts","../src/hooks/wrappers/functions/useGetMfaMethods/useGetMfaMethods.ts","../src/hooks/wrappers/functions/useGetMfaRecoveryCodes/useGetMfaRecoveryCodes.ts","../src/hooks/wrappers/functions/useGetMoonPayCurrencies/useGetMoonPayCurrencies.ts","../src/hooks/wrappers/functions/useGetMoonPayUrl/useGetMoonPayUrl.ts","../src/hooks/wrappers/functions/useGetMultichainTokenBalances/useGetMultichainTokenBalances.ts","../src/hooks/wrappers/functions/useGetNativeBalance/useGetNativeBalance.ts","../src/hooks/wrappers/functions/useOnceEvent/useOnceEvent.ts","../src/hooks/wrappers/functions/useGetPasskeys/useGetPasskeys.ts","../src/hooks/wrappers/functions/useProveWalletAccountOwnership/useProveWalletAccountOwnership.ts","../src/hooks/wrappers/functions/useRefreshAuth/useRefreshAuth.ts","../src/hooks/wrappers/functions/useGetRegisteredDevices/useGetRegisteredDevices.ts","../src/hooks/wrappers/functions/useRegisterPasskey/useRegisterPasskey.ts","../src/hooks/wrappers/functions/useRegisterTotpMfaDevice/useRegisterTotpMfaDevice.ts","../src/hooks/wrappers/functions/useRemoveBusinessAccountMember/useRemoveBusinessAccountMember.ts","../src/hooks/wrappers/functions/useRemoveBusinessAccountSigner/useRemoveBusinessAccountSigner.ts","../src/hooks/wrappers/functions/useRemoveWalletAccount/useRemoveWalletAccount.ts","../src/hooks/wrappers/functions/useRequestExternalAuthElevatedToken/useRequestExternalAuthElevatedToken.ts","../src/hooks/wrappers/functions/useRevokeAllRegisteredDevices/useRevokeAllRegisteredDevices.ts","../src/hooks/wrappers/functions/useRevokeRegisteredDevice/useRevokeRegisteredDevice.ts","../src/hooks/wrappers/functions/useSendEmailOTP/useSendEmailOTP.ts","../src/hooks/wrappers/functions/useSendSmsOTP/useSendSmsOTP.ts","../src/hooks/wrappers/functions/useSetDefaultMfaDevice/useSetDefaultMfaDevice.ts","../src/hooks/wrappers/functions/useSignInWithExternalJwt/useSignInWithExternalJwt.ts","../src/hooks/wrappers/functions/useSignInWithPasskey/useSignInWithPasskey.ts","../src/hooks/wrappers/functions/useSignInWithSocialPopUp/useSignInWithSocialPopUp.ts","../src/hooks/wrappers/functions/useSignInWithSocialRedirect/useSignInWithSocialRedirect.ts","../src/hooks/wrappers/functions/useSignMessage/useSignMessage.ts","../src/hooks/wrappers/functions/useSubmitFlowTransaction/useSubmitFlowTransaction.ts","../src/hooks/wrappers/functions/useGetSwapQuote/useGetSwapQuote.ts","../src/hooks/wrappers/functions/useGetSwapStatus/useGetSwapStatus.ts","../src/hooks/wrappers/functions/useSwitchActiveNetwork/useSwitchActiveNetwork.ts","../src/hooks/wrappers/functions/useGetTokenBalances/useGetTokenBalances.ts","../src/hooks/wrappers/functions/useGetTransactionHistory/useGetTransactionHistory.ts","../src/hooks/wrappers/functions/useTransferAmount/useTransferAmount.ts","../src/hooks/wrappers/functions/useTransferWalletAccount/useTransferWalletAccount.ts","../src/hooks/wrappers/functions/useUnlinkSocialAccount/useUnlinkSocialAccount.ts","../src/hooks/wrappers/functions/useUpdateUser/useUpdateUser.ts","../src/hooks/wrappers/functions/useGetUserSocialAccounts/useGetUserSocialAccounts.ts","../src/hooks/wrappers/functions/useVerifyOTP/useVerifyOTP.ts","../src/hooks/wrappers/functions/useVerifyWalletAccount/useVerifyWalletAccount.ts","../src/hooks/wrappers/functions/useGetWalletAccounts/useGetWalletAccounts.ts","../src/hooks/wrappers/functions/useGetWalletConnectCatalog/useGetWalletConnectCatalog.ts","../src/hooks/wrappers/functions/useGetWalletConnectCatalogWalletByWalletProviderKey/useGetWalletConnectCatalogWalletByWalletProviderKey.ts","../src/hooks/wrappers/functions/useGetWalletOptionsCatalogue/useGetWalletOptionsCatalogue.ts","../src/hooks/wrappers/functions/useGetWalletProviderDataByKey/useGetWalletProviderDataByKey.ts","../src/hooks/wrappers/functions/useIsDeviceRegistrationRequired/useIsDeviceRegistrationRequired.ts","../src/hooks/wrappers/functions/useIsUserMissingMfaAuth/useIsUserMissingMfaAuth.ts","../src/hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment/useIsPendingRecoveryCodesAcknowledgment.ts","../src/hooks/wrappers/functions/useIsUserOnboardingComplete/useIsUserOnboardingComplete.ts","../src/hooks/wrappers/functions/useBackupWaasKeySharesToGoogleDrive/useBackupWaasKeySharesToGoogleDrive.ts","../src/hooks/wrappers/functions/useCreateWaasWalletAccounts/useCreateWaasWalletAccounts.ts","../src/hooks/wrappers/functions/useCreateWalletForBusinessAccount/useCreateWalletForBusinessAccount.ts","../src/hooks/wrappers/functions/useDelegateWaasKeyShares/useDelegateWaasKeyShares.ts","../src/hooks/wrappers/functions/useExportWaasClientKeyshares/useExportWaasClientKeyshares.ts","../src/hooks/wrappers/functions/useExportWaasPrivateKey/useExportWaasPrivateKey.ts","../src/hooks/wrappers/functions/useGetWalletRecoveryState/useGetWalletRecoveryState.ts","../src/hooks/wrappers/functions/useImportWaasPrivateKey/useImportWaasPrivateKey.ts","../src/hooks/wrappers/functions/useMigrateFromFireblocks/useMigrateFromFireblocks.ts","../src/hooks/wrappers/functions/useRefreshWaasWalletAccountShares/useRefreshWaasWalletAccountShares.ts","../src/hooks/wrappers/functions/useRevokeWaasDelegation/useRevokeWaasDelegation.ts","../src/hooks/wrappers/functions/useSetWaasWalletAccountPassword/useSetWaasWalletAccountPassword.ts","../src/hooks/wrappers/functions/useUnlockWallet/useUnlockWallet.ts","../src/hooks/wrappers/functions/useUpdateWaasPassword/useUpdateWaasPassword.ts","../src/hooks/wrappers/state/useInitStatus/useInitStatus.ts","../src/hooks/wrappers/state/useSessionExpiresAt/useSessionExpiresAt.ts","../src/hooks/wrappers/state/useUser/useUser.ts","../src/exports/index.ts"],"sourcesContent":["","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { createContext } from 'react';\n\n/**\n * Internal React context for providing the DynamicClient instance to hooks.\n */\nexport const DynamicContext = createContext<DynamicClient | null>(null);\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport type { PropsWithChildren } from 'react';\n\nimport { DynamicContext } from './DynamicContext';\n\ntype DynamicProviderProps = PropsWithChildren<{\n client: DynamicClient;\n}>;\n\n/**\n * Provides the DynamicClient instance to all child hooks.\n *\n * Wrap your application with this provider and pass your client instance\n * so that hooks like useUser, useGetWalletAccounts, etc. can access it.\n */\nexport const DynamicProvider = ({ children, client }: DynamicProviderProps) => (\n <DynamicContext.Provider value={client}>{children}</DynamicContext.Provider>\n);\n","import { BaseError } from '@dynamic-labs-sdk/client';\n\nexport class MissingProviderError extends BaseError {\n constructor() {\n super({\n cause: null,\n code: 'MISSING_PROVIDER',\n docsUrl: null,\n name: 'MissingProviderError',\n shortMessage:\n 'Hook must be used within a <DynamicProvider>.\\nWrap your component tree with <DynamicProvider client={client}>.',\n });\n }\n}\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { useContext } from 'react';\n\nimport { MissingProviderError } from '../../errors/MissingProviderError/MissingProviderError';\nimport { DynamicContext } from './DynamicContext';\n\n/**\n * Internal hook to access the DynamicClient from context.\n * Throws if used outside of DynamicProvider.\n */\nexport const useDynamicClient = (): DynamicClient => {\n const client = useContext(DynamicContext);\n\n if (!client) {\n throw new MissingProviderError();\n }\n\n return client;\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { waitForClientInitialized } from '@dynamic-labs-sdk/client';\nimport type {\n UseMutationOptions,\n UseMutationResult,\n} from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\n/**\n * A mutation middleware is a named hook that contributes mutation lifecycle\n * behavior — currently an `onSuccess` handler merged into the react-query\n * options.\n *\n * It owns its own reactive subscriptions (e.g. `invalidatesQueries` reads\n * `useQueryClient()`) and the behavior lives in the middleware itself.\n * `useBaseMutation` chains the `onSuccess` of every middleware it receives\n * and has zero knowledge of what any individual middleware does — to add a\n * success side effect you write a new `MutationMiddleware`, never edit this\n * file.\n */\nexport type MutationMiddleware<TData = unknown, TVariables = unknown> = () => Pick<\n UseMutationOptions<TData, Error, TVariables>,\n 'onSuccess'\n>;\n\nconst EMPTY_MIDDLEWARES: ReadonlyArray<MutationMiddleware> = [];\n\nexport type UseBaseMutationParams<TData, TVariables, TError = Error> = {\n /**\n * Named middlewares the mutation runs on success. Each is invoked on every\n * render and the `onSuccess` it contributes is chained (in order) ahead of\n * the consumer's own `onSuccess`. The behavior lives in the middleware\n * itself (see `MutationMiddleware`).\n */\n middlewares?: ReadonlyArray<MutationMiddleware>;\n /**\n * Override-only react-query mutation options. Anything set here wins\n * over the defaults (mutationFn). Customers use this to attach\n * `onSuccess` / `onError` callbacks, retry policies, etc.\n */\n mutateParams?: Omit<\n UseMutationOptions<TData, TError, TVariables>,\n 'mutationFn'\n >;\n /**\n * The action. Receives the live `DynamicClient` from context plus the\n * variables passed when the caller invokes `mutate(variables)`.\n */\n mutationFn: (params: {\n client: DynamicClient;\n variables: TVariables;\n }) => Promise<TData>;\n};\n\n/**\n * Internal hook that wraps a react-query `useMutation` with the conventions\n * used by every async-write hook in this package:\n *\n * - `mutationFn` receives the resolved `DynamicClient` from context plus\n * the caller-supplied `variables`, and is gated behind\n * `waitForClientInitialized`.\n * - Callers pass `mutateParams` to override any default\n * `UseMutationOptions`, so consumers can wire `onSuccess` / `onError` /\n * etc.\n * - Callers pass `middlewares` (named hooks like `invalidatesQueries`) and\n * each contributed `onSuccess` runs, in order, ahead of the consumer's own.\n *\n * Returns the full `useMutation` result — `mutate`, `mutateAsync`, `data`,\n * `error`, `isPending`, `isSuccess`, `reset`, `status`, etc.\n */\nexport const useBaseMutation = <TData, TVariables = void, TError = Error>({\n middlewares = EMPTY_MIDDLEWARES,\n mutationFn,\n mutateParams,\n}: UseBaseMutationParams<\n TData,\n TVariables,\n TError\n>): UseMutationResult<TData, TError, TVariables> => {\n const client = useDynamicClient();\n\n // Each middleware is a hook. The `middlewares` array a hook passes is a\n // stable module-level constant, so call order is constant across renders.\n const contributions = middlewares.map((useMiddleware) => useMiddleware());\n\n return useMutation<TData, TError, TVariables>({\n mutationFn: async (variables: TVariables) => {\n await waitForClientInitialized(client);\n return mutationFn({ client, variables });\n },\n ...mutateParams,\n onSuccess: async (...args) => {\n // Await each contribution so async middlewares (e.g. `invalidatesQueries`,\n // whose `onSuccess` returns the `invalidateQueries` promise) run to\n // completion in order before the consumer's own `onSuccess`, and so their\n // rejections surface instead of becoming unhandled promise rejections.\n for (const contribution of contributions) {\n await contribution.onSuccess?.(...args);\n }\n\n return mutateParams?.onSuccess?.(...args);\n },\n });\n};\n","import { acknowledgeRecoveryCodes } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AcknowledgeRecoveryCodesResult = Awaited<\n ReturnType<typeof acknowledgeRecoveryCodes>\n>;\n\nexport type UseAcknowledgeRecoveryCodesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AcknowledgeRecoveryCodesResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Marks the current user's MFA recovery codes as acknowledged. Takes no arguments — call `mutate()` after the user confirms they have stored the codes shown by {@link useGetMfaRecoveryCodes}.\n *\n * @example\n * ```tsx\n * const { mutate: acknowledge, isPending } = useAcknowledgeRecoveryCodes();\n * <button onClick={() => acknowledge()} disabled={isPending}>\n * I've saved my recovery codes\n * </button>\n * ```\n */\nexport const useAcknowledgeRecoveryCodes = ({\n mutateParams,\n}: UseAcknowledgeRecoveryCodesParams = {}) =>\n useBaseMutation<AcknowledgeRecoveryCodesResult, void>({\n mutateParams,\n mutationFn: ({ client }) => acknowledgeRecoveryCodes(client),\n });\n","/**\n * Root namespace shared by every react-query key this package creates.\n * Both `QUERY_KEY_PREFIX` (async-read hooks) and the state-hook key\n * prefix derive from this constant so the namespace is defined exactly\n * once.\n */\nexport const HOOK_KEY_NAMESPACE = '@dynamic-labs-sdk/react-hooks' as const;\n","import { HOOK_KEY_NAMESPACE } from '../hookKeyNamespace/hookKeyNamespace';\n\n/**\n * Shared prefix for all query keys created by `useBaseQuery`. Mutation hooks\n * reference this when invalidating related queries on success.\n */\nexport const QUERY_KEY_PREFIX = [HOOK_KEY_NAMESPACE, 'query'] as const;\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { waitForClientInitialized } from '@dynamic-labs-sdk/client';\nimport type { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';\nimport { useQuery } from '@tanstack/react-query';\nimport { useMemo } from 'react';\n\nimport { useDynamicClient } from '../../modules/DynamicContext';\nimport { QUERY_KEY_PREFIX } from './queryKeyPrefix';\n\n/**\n * Context `useBaseQuery` hands to every middleware on each render.\n *\n * `queryKey` is the fully namespaced cache key of the query the middleware is\n * attached to, so side-effecting middlewares (such as the one that invalidates\n * a query on a wallet provider event) can invalidate exactly that query\n * without the hook having to thread its key through by hand.\n */\nexport type QueryMiddlewareContext = {\n queryKey: ReadonlyArray<unknown>;\n};\n\n/**\n * A query middleware is a named hook that plugs reactive behavior into a query.\n *\n * It owns its own subscriptions (e.g. `invalidateOnWalletProviderEvent` listens\n * to a wallet provider event) and invalidates the query's cache key when\n * something it cares about changes. Middlewares are purely side-effecting:\n * `useBaseQuery` runs every one it receives on each render and has zero\n * knowledge of what any individual middleware does — to add behavior you write\n * a new `QueryMiddleware`, never edit this file.\n *\n * The context is optional so a middleware that ignores it (and tests that\n * invoke a middleware directly) can be called with no arguments; `useBaseQuery`\n * always supplies it at runtime.\n */\nexport type QueryMiddleware = (context?: QueryMiddlewareContext) => void;\n\n/**\n * Stable empty default for the `middlewares` param so the common case never\n * allocates a fresh array per render.\n */\nconst EMPTY_MIDDLEWARES: ReadonlyArray<QueryMiddleware> = [];\n\nexport type UseBaseQueryParams<TData, TError = Error> = {\n /**\n * When false, the query is disabled (react-query returns the\n * placeholder/empty result instead of calling `queryFn`). Hooks set this\n * to false when their pseudo-required arguments are missing — see hook\n * JSDocs for what those are.\n */\n enabled?: boolean;\n /**\n * Named middleware hooks that plug behavior into the query. Each is invoked\n * on every render with the query's context to run its reactive subscription\n * (e.g. invalidating the query on an event). The behavior lives in the\n * middleware itself (see `QueryMiddleware`).\n */\n middlewares?: ReadonlyArray<QueryMiddleware>;\n /**\n * The fetcher. Receives the live `DynamicClient` from context so callers\n * don't have to pull it themselves.\n */\n queryFn: (client: DynamicClient) => Promise<TData>;\n /**\n * Unique key for this hook's queries. The dynamic-labs-sdk prefix + the\n * supplied `keyExtension` (often the hook's argument shape) namespace the\n * react-query cache entry.\n */\n queryKey: ReadonlyArray<unknown>;\n /**\n * Override-only react-query options. Anything set here wins over the\n * defaults (queryFn, queryKey, enabled). Customers use this to tune\n * behavior such as `retry`, `staleTime`, `placeholderData`, etc.\n */\n queryParams?: Omit<UseQueryOptions<TData, TError>, 'queryFn' | 'queryKey'>;\n};\n\n/**\n * Internal hook that wraps a react-query `useQuery` with the conventions used\n * by every async-read hook in this package:\n *\n * - `queryFn` receives the resolved `DynamicClient` from context, and is\n * gated behind `waitForClientInitialized` so customers never see \"client\n * not ready\" errors on first render.\n * - Callers pass `queryParams` to override any default `UseQueryOptions`,\n * so consumers can opt into retries / custom staleTime / etc.\n * - Callers pass `enabled: false` (typically derived from whether their\n * pseudo-required arguments are present) to short-circuit fetches.\n * - Callers pass `middlewares` (named hooks that run reactive subscriptions\n * such as cache invalidation); each runs on every render.\n *\n * Returns the full `useQuery` result — `data`, `error`, `isLoading`,\n * `isFetching`, `isSuccess`, `refetch`, `status`, etc.\n */\nexport const useBaseQuery = <TData, TError = Error>({\n enabled = true,\n middlewares = EMPTY_MIDDLEWARES,\n queryFn,\n queryKey,\n queryParams,\n}: UseBaseQueryParams<TData, TError>): UseQueryResult<TData, TError> => {\n const client = useDynamicClient();\n\n const fullQueryKey = useMemo(\n () => [...QUERY_KEY_PREFIX, ...queryKey],\n [queryKey]\n );\n\n // Each middleware is a hook, so every one must run unconditionally on each\n // render: a plain loop keeps the same number and order of hook calls no\n // matter what. A hook always passes the same fixed middlewares in the same\n // order.\n middlewares.forEach((useMiddleware) =>\n useMiddleware({ queryKey: fullQueryKey })\n );\n\n return useQuery({\n queryFn: async () => {\n await waitForClientInitialized(client);\n return queryFn(client);\n },\n queryKey: fullQueryKey,\n ...queryParams,\n enabled: enabled && queryParams?.enabled !== false,\n });\n};\n","import {\n type OnWalletProviderEventParams,\n type WalletProviderEvents,\n onWalletProviderEvent,\n} from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\n/**\n * Params for `useOnWalletProviderEvent`.\n *\n * Widens the client's `OnWalletProviderEventParams` so `walletProviderKey` may\n * be `undefined`: callers that derive the key from an optional wallet account\n * (e.g. a query middleware) can call the hook unconditionally and have it\n * no-op until a provider is known.\n */\nexport type UseOnWalletProviderEventParams<\n E extends Extract<keyof WalletProviderEvents, string>\n> = Omit<OnWalletProviderEventParams<E>, 'walletProviderKey'> & {\n walletProviderKey: string | undefined;\n};\n\n/**\n * Subscribes to an event emitted by a specific wallet provider.\n *\n * Wraps `onWalletProviderEvent` from `@dynamic-labs-sdk/client`. Uses a ref to\n * always call the latest callback without re-subscribing, and cleans up the\n * subscription on unmount or when `event` / `walletProviderKey` change. When\n * `walletProviderKey` is `undefined` the hook subscribes to nothing. When the\n * provider cannot be subscribed to (not registered on this client, or it does\n * not expose `events`), the hook logs and subscribes to nothing rather than\n * throwing — an effect throw would unmount the entire app.\n *\n * @example\n * ```tsx\n * useOnWalletProviderEvent({\n * walletProviderKey: 'metamaskevm',\n * event: 'accountsChanged',\n * callback: ({ addresses }) => console.log(addresses),\n * });\n * ```\n */\nexport const useOnWalletProviderEvent = <\n E extends Extract<keyof WalletProviderEvents, string>\n>({\n callback,\n event,\n walletProviderKey,\n}: UseOnWalletProviderEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(callback);\n\n callbackRef.current = callback;\n\n useEffect(() => {\n if (walletProviderKey === undefined) {\n return;\n }\n\n // Subscribing can throw when the provider is not registered on this client\n // (e.g. a wallet account created on another surface whose chain extension\n // is not installed here) or when the provider does not expose `events`.\n // A throw inside an effect unmounts the whole React tree — a hard crash in\n // release builds — so an unsubscribable provider must degrade to \"never\n // notifies\" instead of propagating.\n try {\n return onWalletProviderEvent(\n {\n callback: ((...args: any[]) => {\n // @ts-expect-error - Ignore the type error because we are using the ref\n callbackRef.current(...args);\n }) as WalletProviderEvents[E],\n event,\n walletProviderKey,\n },\n client\n );\n } catch (error) {\n getCore(client).logger.debug(\n '[useOnWalletProviderEvent] failed to subscribe to wallet provider event',\n { error, event, walletProviderKey }\n );\n\n return undefined;\n }\n }, [event, walletProviderKey, client]);\n};\n","import type {\n WalletAccount,\n WalletProviderEvents,\n} from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type { QueryMiddleware } from '../../foundation/useBaseQuery';\nimport { useOnWalletProviderEvent } from '../../hooks/wrappers/functions/useOnWalletProviderEvent';\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\nexport type InvalidateOnWalletProviderEventParams<\n E extends Extract<keyof WalletProviderEvents, string>\n> = {\n /**\n * The wallet provider event to listen for (e.g. `'networkChanged'`).\n */\n event: E;\n /**\n * The wallet account whose provider emits the event. When `undefined` the\n * subscription is a no-op, so hooks can pass an optional account directly.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Query middleware factory that refetches the query whenever the given wallet\n * account's provider emits `event` (e.g. `networkChanged`).\n *\n * It only wires up the subscription, invalidating the query's own cache key so\n * any mounted consumer refetches. This replaces the manual\n * `useOnWalletProviderEvent` + `refetch` boilerplate consumers would otherwise\n * pair with the hook. When `walletAccount` is undefined the subscription is a\n * no-op. The subscription lives here, not in `useBaseQuery`.\n *\n * @example\n * ```ts\n * useBaseQuery({\n * middlewares: [\n * invalidateOnWalletProviderEvent({ event: 'networkChanged', walletAccount }),\n * ],\n * queryFn: (client) => getActiveNetworkData({ walletAccount }, client),\n * queryKey: ['useGetActiveNetworkData', walletAccount],\n * });\n * ```\n */\nexport const invalidateOnWalletProviderEvent =\n <E extends Extract<keyof WalletProviderEvents, string>>({\n event,\n walletAccount,\n }: InvalidateOnWalletProviderEventParams<E>): QueryMiddleware =>\n (context) => {\n const client = useDynamicClient();\n const queryClient = useQueryClient();\n\n useOnWalletProviderEvent({\n callback: () => {\n // `useBaseQuery` always supplies the query's own key; the context is\n // only optional so middlewares invoked directly in tests can omit it,\n // so bail rather than invalidate an unknown key when it is absent.\n if (!context) {\n return;\n }\n\n queryClient\n .invalidateQueries({ queryKey: context.queryKey })\n .catch((error: unknown) => {\n // Swallow the rejection, but log it so internal devs can\n // troubleshoot a query that fails to refetch on the event.\n getCore(client).logger.debug(\n '[invalidateOnWalletProviderEvent] failed to invalidate query',\n {\n error,\n queryKey: context.queryKey,\n stack: error instanceof Error ? error.stack : undefined,\n }\n );\n });\n },\n event,\n walletProviderKey: walletAccount?.walletProviderKey,\n });\n };\n","import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype GetActiveNetworkDataResult = Awaited<\n ReturnType<typeof getActiveNetworkData>\n>;\ntype GetActiveNetworkDataArgs = Parameters<typeof getActiveNetworkData>[0];\n\nexport type UseGetActiveNetworkDataParams = GetActiveNetworkDataArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetActiveNetworkDataResult>['queryParams'];\n};\n\n/**\n * Wraps `getActiveNetworkData` from `@dynamic-labs-sdk/client`. Returns the network the given wallet account is currently on.\n *\n * @example\n * ```tsx\n * const { data: network, isLoading } = useGetActiveNetworkData({ walletAccount });\n * ```\n */\nexport const useGetActiveNetworkData = ({\n queryParams,\n ...args\n}: UseGetActiveNetworkDataParams) =>\n useBaseQuery<GetActiveNetworkDataResult>({\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount: args.walletAccount,\n }),\n ],\n queryFn: (client) => getActiveNetworkData(args, client),\n queryKey: ['useGetActiveNetworkData', args],\n queryParams,\n });\n","import { getActiveNetworkId } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype ActiveNetworkIdResult = Awaited<ReturnType<typeof getActiveNetworkId>>;\ntype ActiveNetworkIdArgs = Parameters<typeof getActiveNetworkId>[0];\n\nexport type UseGetActiveNetworkIdParams = ActiveNetworkIdArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<ActiveNetworkIdResult>['queryParams'];\n};\n\n/**\n * Returns the active network id for the given wallet account.\n *\n * Wraps `getActiveNetworkId` from `@dynamic-labs-sdk/client`.\n */\nexport const useGetActiveNetworkId = ({ queryParams, ...args }: UseGetActiveNetworkIdParams) =>\n useBaseQuery<ActiveNetworkIdResult>({\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount: args.walletAccount,\n }),\n ],\n queryFn: (client) => getActiveNetworkId(args, client),\n queryKey: ['useGetActiveNetworkId', args],\n queryParams,\n });\n","import { addBusinessAccountMember } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AddBusinessAccountMemberVariables = Parameters<\n typeof addBusinessAccountMember\n>[0];\ntype AddBusinessAccountMemberResult = Awaited<\n ReturnType<typeof addBusinessAccountMember>\n>;\n\n/**\n * Parameters for {@link useAddBusinessAccountMember}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseAddBusinessAccountMemberParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useAddBusinessAccountMember\n * @see addBusinessAccountMember\n */\nexport type UseAddBusinessAccountMemberParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n AddBusinessAccountMemberResult,\n AddBusinessAccountMemberVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Wraps `addBusinessAccountMember` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * add a member to an existing business account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useAddBusinessAccountMember();\n * <button onClick={() => mutate({ businessAccountId, identifier: 'user@acme.com' })} disabled={isPending}>\n * Add member\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `addBusinessAccountMember` and whose `data` is its resolved value.\n * @see addBusinessAccountMember\n * @see UseAddBusinessAccountMemberParams\n */\nexport const useAddBusinessAccountMember = ({\n mutateParams,\n}: UseAddBusinessAccountMemberParams = {}) =>\n useBaseMutation<\n AddBusinessAccountMemberResult,\n AddBusinessAccountMemberVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n addBusinessAccountMember(variables, client),\n });\n","import { addBusinessAccountSigner } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AddBusinessAccountSignerVariables = Parameters<\n typeof addBusinessAccountSigner\n>[0];\ntype AddBusinessAccountSignerResult = Awaited<\n ReturnType<typeof addBusinessAccountSigner>\n>;\n\n/**\n * Parameters for {@link useAddBusinessAccountSigner}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseAddBusinessAccountSignerParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useAddBusinessAccountSigner\n * @see addBusinessAccountSigner\n */\nexport type UseAddBusinessAccountSignerParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n AddBusinessAccountSignerResult,\n AddBusinessAccountSignerVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Wraps `addBusinessAccountSigner` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * add a signer to a business-account wallet via the reshare ceremony.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useAddBusinessAccountSigner();\n * <button onClick={() => mutate({ targetSignerIdentity, walletAccount })} disabled={isPending}>\n * Add signer\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `addBusinessAccountSigner` and whose `data` is its resolved value.\n * @see addBusinessAccountSigner\n * @see UseAddBusinessAccountSignerParams\n */\nexport const useAddBusinessAccountSigner = ({\n mutateParams,\n}: UseAddBusinessAccountSignerParams = {}) =>\n useBaseMutation<\n AddBusinessAccountSignerResult,\n AddBusinessAccountSignerVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n addBusinessAccountSigner(variables, client),\n });\n","import { addNetwork } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AddNetworkVariables = Parameters<typeof addNetwork>[0];\ntype AddNetworkResult = Awaited<ReturnType<typeof addNetwork>>;\n\nexport type UseAddNetworkParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AddNetworkResult,\n AddNetworkVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `addNetwork` from `@dynamic-labs-sdk/client`. Call `mutate({ networkData, walletAccount })` to register a custom network on the given wallet account.\n *\n * @example\n * ```tsx\n * const { mutate: addNetwork, isPending } = useAddNetwork();\n * <button\n * onClick={() => addNetwork({ networkData, walletAccount })}\n * disabled={isPending}\n * >\n * Add network\n * </button>\n * ```\n */\nexport const useAddNetwork = ({ mutateParams }: UseAddNetworkParams = {}) =>\n useBaseMutation<AddNetworkResult, AddNetworkVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => addNetwork(variables, client),\n });\n","import { addWalletToBusinessAccount } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AddWalletToBusinessAccountVariables = Parameters<\n typeof addWalletToBusinessAccount\n>[0];\ntype AddWalletToBusinessAccountResult = Awaited<\n ReturnType<typeof addWalletToBusinessAccount>\n>;\n\n/**\n * Parameters for {@link useAddWalletToBusinessAccount}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseAddWalletToBusinessAccountParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useAddWalletToBusinessAccount\n * @see addWalletToBusinessAccount\n */\nexport type UseAddWalletToBusinessAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n AddWalletToBusinessAccountResult,\n AddWalletToBusinessAccountVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Wraps `addWalletToBusinessAccount` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * link an existing wallet to a business account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useAddWalletToBusinessAccount();\n * <button onClick={() => mutate({ businessAccountId, walletId })} disabled={isPending}>\n * Link wallet\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `addWalletToBusinessAccount` and whose `data` is its resolved value.\n * @see addWalletToBusinessAccount\n * @see UseAddWalletToBusinessAccountParams\n */\nexport const useAddWalletToBusinessAccount = ({\n mutateParams,\n}: UseAddWalletToBusinessAccountParams = {}) =>\n useBaseMutation<\n AddWalletToBusinessAccountResult,\n AddWalletToBusinessAccountVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n addWalletToBusinessAccount(variables, client),\n });\n","import { assertWalletAccountSigningAvailability } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype AssertWalletAccountSigningAvailabilityResult = Awaited<ReturnType<typeof assertWalletAccountSigningAvailability>>;\ntype AssertWalletAccountSigningAvailabilityArgs = Parameters<typeof assertWalletAccountSigningAvailability>[0];\n\nexport type UseAssertWalletAccountSigningAvailabilityParams = AssertWalletAccountSigningAvailabilityArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<AssertWalletAccountSigningAvailabilityResult>['queryParams'];\n};\n\n/**\n * Resolves when the given wallet account can sign, and errors otherwise.\n *\n * Wraps `assertWalletAccountSigningAvailability` from `@dynamic-labs-sdk/client`.\n */\nexport const useAssertWalletAccountSigningAvailability = ({ queryParams, ...args }: UseAssertWalletAccountSigningAvailabilityParams) =>\n useBaseQuery<AssertWalletAccountSigningAvailabilityResult>({\n queryFn: (client) => assertWalletAccountSigningAvailability(args, client),\n queryKey: ['useAssertWalletAccountSigningAvailability', args],\n queryParams,\n });\n","import { attachFlowSource } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AttachFlowSourceVariables = Parameters<typeof attachFlowSource>[0];\ntype AttachFlowSourceResult = Awaited<ReturnType<typeof attachFlowSource>>;\n\nexport type UseAttachFlowSourceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AttachFlowSourceResult,\n AttachFlowSourceVariables\n >['mutateParams'];\n};\n\n/**\n * Attaches a payment source to a flow.\n *\n * Wraps `attachFlowSource` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId, sourceType, fromAddress, fromChainId, fromChainName })`\n * to attach a payment source to a flow; the resolved `data` is an object containing\n * the flow and the session token.\n *\n * @example\n * ```tsx\n * const { mutate: attachFlowSource, isPending } = useAttachFlowSource();\n * <button onClick={() => attachFlowSource({ flowId, sourceType, fromAddress, fromChainId, fromChainName })} disabled={isPending}>\n * Attach flow source\n * </button>\n * ```\n */\nexport const useAttachFlowSource = ({\n mutateParams,\n}: UseAttachFlowSourceParams = {}) =>\n useBaseMutation<AttachFlowSourceResult, AttachFlowSourceVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => attachFlowSource(variables, client),\n });\n","import { authenticateMfaRecoveryCode } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AuthenticateMfaRecoveryCodeVariables = Parameters<\n typeof authenticateMfaRecoveryCode\n>[0];\ntype AuthenticateMfaRecoveryCodeResult = Awaited<\n ReturnType<typeof authenticateMfaRecoveryCode>\n>;\n\nexport type UseAuthenticateMfaRecoveryCodeParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AuthenticateMfaRecoveryCodeResult,\n AuthenticateMfaRecoveryCodeVariables\n >['mutateParams'];\n};\n\n/**\n * Authenticates the current user with one of their MFA recovery codes.\n *\n * Wraps `authenticateMfaRecoveryCode` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ code })` with a backup recovery code when no registered MFA\n * method is available; the resolved `data` is the MFA authentication\n * response.\n *\n * @example\n * ```tsx\n * const { mutate: authenticateRecoveryCode, isPending } =\n * useAuthenticateMfaRecoveryCode();\n * <button\n * onClick={() => authenticateRecoveryCode({ code })}\n * disabled={isPending}\n * >\n * Use recovery code\n * </button>\n * ```\n */\nexport const useAuthenticateMfaRecoveryCode = ({\n mutateParams,\n}: UseAuthenticateMfaRecoveryCodeParams = {}) =>\n useBaseMutation<\n AuthenticateMfaRecoveryCodeResult,\n AuthenticateMfaRecoveryCodeVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticateMfaRecoveryCode(variables, client),\n });\n","import { authenticatePasskeyMFA } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype AuthenticatePasskeyMFAVariables = Parameters<\n typeof authenticatePasskeyMFA\n>[0];\ntype AuthenticatePasskeyMFAResult = Awaited<\n ReturnType<typeof authenticatePasskeyMFA>\n>;\n\nexport type UseAuthenticatePasskeyMFAParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AuthenticatePasskeyMFAResult,\n AuthenticatePasskeyMFAVariables\n >['mutateParams'];\n};\n\n/**\n * Completes an MFA challenge using the current user's passkey.\n *\n * Wraps `authenticatePasskeyMFA` from `@dynamic-labs-sdk/client`. Call\n * `mutate()` to satisfy an MFA step-up with a passkey; the resolved `data`\n * is the MFA verification response.\n *\n * @example\n * ```tsx\n * const { mutate: authenticatePasskeyMFA, isPending } =\n * useAuthenticatePasskeyMFA();\n * <button onClick={() => authenticatePasskeyMFA()} disabled={isPending}>\n * Verify with passkey\n * </button>\n * ```\n */\nexport const useAuthenticatePasskeyMFA = ({\n mutateParams,\n}: UseAuthenticatePasskeyMFAParams = {}) =>\n useBaseMutation<\n AuthenticatePasskeyMFAResult,\n AuthenticatePasskeyMFAVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticatePasskeyMFA(variables, client),\n });\n","import { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type { MutationMiddleware } from '../../foundation/useBaseMutation';\nimport { QUERY_KEY_PREFIX } from '../../foundation/useBaseQuery/queryKeyPrefix';\nimport { useDynamicClient } from '../../modules/DynamicContext/useDynamicClient';\n\n/**\n * Mutation middleware factory that invalidates one or more query hooks when\n * the mutation succeeds, so any mounted consumer of those queries refetches.\n *\n * Pass the query hooks' names (their `queryKey` leaf, e.g. `'useGetMfaDevices'`);\n * each is namespaced under `QUERY_KEY_PREFIX` to match the keys `useBaseQuery`\n * creates. The invalidation loop lives here, not in `useBaseMutation`.\n *\n * @example\n * ```ts\n * useBaseMutation({\n * middlewares: [invalidatesQueries('useGetMfaDevices')],\n * mutationFn: ({ client, variables }) => deleteMfaDevice(variables, client),\n * });\n * ```\n */\nexport const invalidatesQueries =\n (...queryKeys: ReadonlyArray<string>): MutationMiddleware =>\n () => {\n const queryClient = useQueryClient();\n\n const client = useDynamicClient();\n\n /**\n * Swallows an `invalidateQueries` rejection so a failed refetch never\n * surfaces as an unhandled rejection nor rejects the combined invalidation\n * promise, while still logging it at debug level so internal devs can see\n * which query failed to refetch. Curried over the query key and extracted\n * to a named handler so the invalidation map stays within the\n * function-nesting limit.\n */\n const debugInvalidationFailure =\n (queryKey: ReadonlyArray<string>) =>\n (error: unknown): undefined => {\n getCore(client).logger.debug(\n '[invalidatesQueries] failed to invalidate query',\n { error, queryKey, stack: error instanceof Error ? error.stack : undefined }\n );\n\n return undefined;\n };\n\n return {\n // Return the invalidation promise so `useBaseMutation` can await it,\n // keeping the refetch ordered before the consumer's own `onSuccess`.\n onSuccess: () =>\n Promise.all(\n queryKeys.map((key) => {\n const queryKey = [...QUERY_KEY_PREFIX, key];\n\n return queryClient\n .invalidateQueries({ queryKey })\n .catch(debugInvalidationFailure(queryKey));\n })\n ),\n };\n };\n","import { authenticateTotpMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype AuthenticateTotpMfaDeviceVariables = Parameters<\n typeof authenticateTotpMfaDevice\n>[0];\ntype AuthenticateTotpMfaDeviceResult = Awaited<\n ReturnType<typeof authenticateTotpMfaDevice>\n>;\n\nexport type UseAuthenticateTotpMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n AuthenticateTotpMfaDeviceResult,\n AuthenticateTotpMfaDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Authenticates the current user with a TOTP code from an authenticator app.\n *\n * Wraps `authenticateTotpMfaDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ code })` with the 6-digit code; the resolved `data` is the MFA\n * authentication response.\n *\n * @example\n * ```tsx\n * const { mutate: authenticateTotp, isPending } = useAuthenticateTotpMfaDevice();\n * <button onClick={() => authenticateTotp({ code })} disabled={isPending}>\n * Verify code\n * </button>\n * ```\n */\nexport const useAuthenticateTotpMfaDevice = ({\n mutateParams,\n}: UseAuthenticateTotpMfaDeviceParams = {}) => {\n return useBaseMutation<\n AuthenticateTotpMfaDeviceResult,\n AuthenticateTotpMfaDeviceVariables\n >({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticateTotpMfaDevice(variables, client),\n });\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { onEvent, waitForClientInitialized } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport type { UseQueryOptions } from '@tanstack/react-query';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useEffect, useMemo, useRef } from 'react';\n\nimport { useDynamicClient } from '../../modules/DynamicContext';\nimport { HOOK_KEY_NAMESPACE } from '../hookKeyNamespace/hookKeyNamespace';\n\n/**\n * Per-event invalidation predicate. Either `true` (always invalidate on\n * fire) or a callback that receives the event's args object and returns\n * `true` iff invalidation should occur.\n */\ntype EventPredicate<E extends keyof DynamicEvents> =\n | true\n | ((args: Parameters<DynamicEvents[E]>[0]) => boolean);\n\n/**\n * Map of event names → predicates. Listing an event opts in to listening\n * for it; the predicate decides whether each individual fire should\n * trigger a refetch.\n *\n * Loose typing here (`unknown` args, not a per-event mapped type) keeps\n * the inferred union small enough for TS to expand; the per-event\n * generic kicks in inside `subscribeWithPredicate` at the call site.\n */\nexport type UseBaseStateEventsMap = Partial<\n Record<keyof DynamicEvents, true | ((args: unknown) => boolean)>\n>;\n\nexport type UseBaseStateParams<T> = {\n /**\n * Value surfaced through `data` as the react-query placeholder while\n * the client is initializing and the selector has not yet resolved.\n * On first render, `data` equals `defaultValue`, `isPlaceholderData`\n * is `true`, and `isFetching` is `true` — callers can rely on those\n * flags to distinguish \"still resolving\" from \"resolved and the\n * answer happens to match the default\".\n */\n defaultValue: T;\n /**\n * The events that should invalidate the query. Pass a single event name\n * (shorthand for `{ [name]: true }`) or a map of `eventName → true |\n * predicate`. A `true` value invalidates on every fire; a predicate\n * receives the event's args and returns `true` iff invalidation should\n * occur for that fire (useful for narrowing — e.g. only invalidate when\n * the changed wallet account is the one this hook cares about).\n */\n event: keyof DynamicEvents | UseBaseStateEventsMap;\n /**\n * react-query `queryKey` for this hook. Internally namespaced under\n * `[HOOK_KEY_NAMESPACE, 'state', ...queryKey]`. Multiple\n * state hooks may observe the same event (e.g. `useUser`,\n * `useSessionExpiresAt`, `useGetUserSocialAccounts` all listen to\n * `userChanged`); without a unique `queryKey` they would share a cache\n * entry. Pass an array so callers can interpolate runtime values\n * (`['useGetNativeBalance', walletAccountId]`).\n */\n queryKey: ReadonlyArray<unknown>;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.). `queryFn`, `queryKey`, and\n * `placeholderData` are owned by `useBaseState` and not overridable.\n */\n queryParams?: Omit<\n UseQueryOptions<T>,\n 'queryFn' | 'queryKey' | 'placeholderData'\n >;\n selector: (client: DynamicClient) => T;\n /**\n * Escape hatch for hooks whose entire purpose is to expose state during\n * client initialization (e.g. `useInitStatus`). When `true`, `queryFn`\n * runs the selector synchronously without awaiting\n * `waitForClientInitialized`. Defaults to `false`.\n */\n skipWaitForInit?: boolean;\n};\n\n/**\n * Internal hook that bridges Dynamic client event-driven state to React via\n * react-query.\n *\n * - `queryFn` waits for the client to finish initializing (so the first\n * render never sees a half-built client) and then runs `selector`. Init\n * failures surface on `error`.\n * - The supplied `event`(s) invalidate the query whenever they fire — a\n * per-event predicate can narrow this so unrelated fires don't refetch.\n * - Returns the full `useQuery` result so consumers can read every field\n * react-query exposes (`data`, `error`, `isLoading`, `isFetching`,\n * `refetch`, `status`, ...).\n */\n// eslint-disable-next-line custom-rules/require-single-object-param -- helper takes the single `event` value, not an options bag\nconst normalizeEvents = (\n event: keyof DynamicEvents | UseBaseStateEventsMap\n): UseBaseStateEventsMap => {\n if (typeof event !== 'string') return event;\n const map: UseBaseStateEventsMap = {};\n map[event] = true;\n return map;\n};\n\ntype SubscribeWithPredicateParams<E extends keyof DynamicEvents> = {\n event: E;\n onMatch: VoidFunction;\n predicate: EventPredicate<E>;\n};\n\n/**\n * Per-event subscription wrapper. Extracted from `useBaseState` so the\n * listener generics resolve at the per-event call site rather than as the\n * intersection across all events.\n */\n// eslint-disable-next-line custom-rules/one-function-per-file -- small internal helper kept colocated with useBaseState\nconst subscribeWithPredicate = <E extends keyof DynamicEvents>(\n { event, predicate, onMatch }: SubscribeWithPredicateParams<E>,\n client: DynamicClient\n): VoidFunction => {\n // eslint-disable-next-line custom-rules/require-single-object-param -- forwards the event's own args shape\n const listener = (args: Parameters<DynamicEvents[E]>[0]) => {\n if (predicate === true || predicate(args)) {\n onMatch();\n }\n };\n return onEvent(\n { event, listener: listener as DynamicEvents[E] },\n client\n );\n};\n\n// eslint-disable-next-line custom-rules/one-function-per-file -- helpers above are colocated by design\nexport const useBaseState = <T>({\n event,\n queryKey,\n queryParams,\n selector,\n defaultValue,\n skipWaitForInit = false,\n}: UseBaseStateParams<T>) => {\n const client = useDynamicClient();\n const queryClient = useQueryClient();\n\n /**\n * Normalize the `event` shorthand into an events map. `useMemo` keyed\n * on a stable JSON shape so callers can pass an inline literal each\n * render without churning the event-subscription effect.\n */\n const eventsMapJson = useMemo(() => {\n const map = normalizeEvents(event);\n const sortedKeys = Object.keys(map).sort((a, b) => a.localeCompare(b));\n return JSON.stringify(\n sortedKeys.map((k) => ({\n event: k,\n predicate:\n map[k as keyof DynamicEvents] === true ? '__always__' : '__fn__',\n }))\n );\n }, [event]);\n\n /**\n * Per-event predicates resolved from the latest render. The effect\n * stays subscribed across re-renders (its deps are stable), so it\n * reads predicates through this ref to pick up the most recent\n * functions a caller passed inline.\n */\n const eventsMapRef = useRef<UseBaseStateEventsMap>(normalizeEvents(event));\n eventsMapRef.current = normalizeEvents(event);\n\n /**\n * Stable list of event names the effect needs to subscribe to. Driven\n * by `eventsMapJson` so callers can swap predicate identities each\n * render without re-subscribing.\n */\n const eventNames = useMemo<ReadonlyArray<keyof DynamicEvents>>(() => {\n const map = eventsMapRef.current;\n return Object.keys(map).sort((a, b) =>\n a.localeCompare(b)\n ) as Array<keyof DynamicEvents>;\n }, [eventsMapJson]);\n\n const fullQueryKey = useMemo(\n () => [HOOK_KEY_NAMESPACE, 'state', ...queryKey],\n [JSON.stringify(queryKey)]\n );\n\n useEffect(() => {\n const core = getCore(client);\n\n const invalidate = () => {\n queryClient\n .invalidateQueries({ queryKey: fullQueryKey })\n .catch((invalidateError) => {\n core.logger.error(\n '[useBaseState] invalidateQueries failed',\n invalidateError\n );\n });\n };\n\n const unsubscribers = eventNames.map((eventName) =>\n subscribeWithPredicate(\n {\n event: eventName,\n onMatch: invalidate,\n // Resolve the predicate fresh on each event fire so inline-fn\n // callers pick up their latest closure without re-subscribing.\n predicate: (args: unknown) => {\n const predicate = eventsMapRef.current[eventName];\n if (predicate === undefined) return false;\n return predicate === true || predicate(args);\n },\n },\n client\n )\n );\n\n return () => {\n for (const unsubscribe of unsubscribers) unsubscribe();\n };\n }, [client, eventNames, queryClient, fullQueryKey]);\n\n return useQuery({\n ...queryParams,\n // react-query types `placeholderData` with an internal\n // `NonFunctionGuard<T>` to disambiguate a static placeholder value\n // from `PlaceholderDataFunction`. Our `T` is unconstrained, so TS\n // can't prove the value isn't a function — state values are never\n // function-typed in practice, so cast through `never`.\n placeholderData: defaultValue as never,\n queryFn: skipWaitForInit\n ? () => selector(client)\n : async () => {\n await waitForClientInitialized(client);\n return selector(client);\n },\n queryKey: fullQueryKey,\n });\n};\n","import { getAvailableWalletProvidersData } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the available wallet providers and their data.\n *\n * Re-renders when the wallet provider registry changes. `walletProviderChanged`\n * fires on register / priority update but NOT on removal, so\n * `walletProviderUnregistered` is wired too — otherwise a removed provider\n * would linger in the returned list.\n */\nexport const useGetAvailableWalletProvidersData = () =>\n useBaseState({\n defaultValue: [],\n event: { walletProviderChanged: true, walletProviderUnregistered: true },\n queryKey: ['useGetAvailableWalletProvidersData'],\n selector: (client) => getAvailableWalletProvidersData(client),\n });\n","import { getBalanceForAddress } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetBalanceForAddressResult = Awaited<\n ReturnType<typeof getBalanceForAddress>\n>;\ntype GetBalanceForAddressArgs = Parameters<typeof getBalanceForAddress>[0];\n\nexport type UseGetBalanceForAddressParams = GetBalanceForAddressArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetBalanceForAddressResult>['queryParams'];\n};\n\n/**\n * Wraps `getBalanceForAddress` from `@dynamic-labs-sdk/client`. Returns the native-token balance for an arbitrary address on the given chain/network.\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useGetBalanceForAddress({ address, chain, networkId });\n * ```\n */\nexport const useGetBalanceForAddress = ({\n queryParams,\n ...args\n}: UseGetBalanceForAddressParams) =>\n useBaseQuery<GetBalanceForAddressResult>({\n queryFn: (client) => getBalanceForAddress(args, client),\n queryKey: ['useGetBalanceForAddress', args],\n queryParams,\n });\n","import { getBusinessAccount } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetBusinessAccountResult = Awaited<ReturnType<typeof getBusinessAccount>>;\ntype GetBusinessAccountArgs = Parameters<typeof getBusinessAccount>[0];\n\n/**\n * Parameters for {@link useGetBusinessAccount}: the `getBusinessAccount` args plus an optional\n * override of the underlying react-query options.\n *\n * @example\n * ```tsx\n * const params: UseGetBusinessAccountParams = { businessAccountId };\n * ```\n * @see useGetBusinessAccount\n * @see getBusinessAccount\n */\nexport type UseGetBusinessAccountParams = GetBusinessAccountArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: NonNullable<\n UseBaseQueryParams<GetBusinessAccountResult>['queryParams']\n >;\n};\n\n/**\n * Wraps `getBusinessAccount` from `@dynamic-labs-sdk/client/waas`. Retrieves a business account by\n * ID, including its members, signers, and wallets.\n *\n * @example\n * ```tsx\n * const { data: businessAccount, isLoading } = useGetBusinessAccount({ businessAccountId });\n * ```\n *\n * @returns A react-query result whose `data` is the business account detail resolved by `getBusinessAccount`.\n * @see getBusinessAccount\n * @see UseGetBusinessAccountParams\n */\nexport const useGetBusinessAccount = ({\n queryParams,\n ...args\n}: UseGetBusinessAccountParams) =>\n useBaseQuery<GetBusinessAccountResult>({\n queryFn: (client) => getBusinessAccount(args, client),\n queryKey: ['useGetBusinessAccount', args],\n queryParams,\n });\n","import { broadcastFlow } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype BroadcastFlowVariables = Parameters<typeof broadcastFlow>[0];\ntype BroadcastFlowResult = Awaited<ReturnType<typeof broadcastFlow>>;\n\nexport type UseBroadcastFlowParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n BroadcastFlowResult,\n BroadcastFlowVariables\n >['mutateParams'];\n};\n\n/**\n * Records that a flow transaction has been broadcasted.\n *\n * Wraps `broadcastFlow` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId, txHash })`\n * to record the broadcast. For wallet sources pass the on-chain `txHash`; for exchange\n * sources `txHash` can be omitted.\n *\n * @example\n * ```tsx\n * const { mutate: broadcastFlow, isPending } = useBroadcastFlow();\n * <button onClick={() => broadcastFlow({ flowId, txHash })} disabled={isPending}>\n * Broadcast flow\n * </button>\n * ```\n */\nexport const useBroadcastFlow = ({ mutateParams }: UseBroadcastFlowParams = {}) =>\n useBaseMutation<BroadcastFlowResult, BroadcastFlowVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => broadcastFlow(variables, client),\n });\n","import { cancelFlow } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CancelFlowVariables = Parameters<typeof cancelFlow>[0];\ntype CancelFlowResult = Awaited<ReturnType<typeof cancelFlow>>;\n\nexport type UseCancelFlowParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CancelFlowResult,\n CancelFlowVariables\n >['mutateParams'];\n};\n\n/**\n * Cancels a flow before it has been broadcasted.\n *\n * Wraps `cancelFlow` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId })`\n * to cancel a flow.\n *\n * @example\n * ```tsx\n * const { mutate: cancelFlow, isPending } = useCancelFlow();\n * <button onClick={() => cancelFlow({ flowId })} disabled={isPending}>\n * Cancel flow\n * </button>\n * ```\n */\nexport const useCancelFlow = ({ mutateParams }: UseCancelFlowParams = {}) =>\n useBaseMutation<CancelFlowResult, CancelFlowVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => cancelFlow(variables, client),\n });\n","import { checkStepUpAuth } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype CheckStepUpAuthResult = Awaited<ReturnType<typeof checkStepUpAuth>>;\ntype CheckStepUpAuthArgs = Parameters<typeof checkStepUpAuth>[0];\n\nexport type UseCheckStepUpAuthParams = CheckStepUpAuthArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<CheckStepUpAuthResult>['queryParams'];\n};\n\n/**\n * Checks whether step-up authentication is required for a given scope and\n * returns the credentials available to satisfy it.\n *\n * Wraps `checkStepUpAuth` from `@dynamic-labs-sdk/client`. Use the returned\n * `isRequired` to decide whether to show a step-up UI before a sensitive\n * action (e.g. exporting a wallet).\n *\n * @example\n * ```tsx\n * const { data } = useCheckStepUpAuth({ scope: TokenScope.Walletexport });\n * if (data?.isRequired) {\n * // render step-up UI using data.credentials\n * }\n * ```\n */\nexport const useCheckStepUpAuth = ({\n queryParams,\n ...args\n}: UseCheckStepUpAuthParams) =>\n useBaseQuery<CheckStepUpAuthResult>({\n queryFn: (client) => checkStepUpAuth(args, client),\n queryKey: ['useCheckStepUpAuth', args],\n queryParams,\n });\n","import { getCoinbaseBuyUrl } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetCoinbaseBuyUrlResult = Awaited<ReturnType<typeof getCoinbaseBuyUrl>>;\ntype GetCoinbaseBuyUrlArgs = Parameters<typeof getCoinbaseBuyUrl>[0];\n\nexport type UseGetCoinbaseBuyUrlParams = GetCoinbaseBuyUrlArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetCoinbaseBuyUrlResult>['queryParams'];\n};\n\n/**\n * Wraps `getCoinbaseBuyUrl` from `@dynamic-labs-sdk/client`. Returns a Coinbase onramp buy URL for the given parameters.\n *\n * @example\n * ```tsx\n * const { data: buyUrl, isLoading } = useGetCoinbaseBuyUrl(buyUrlParams);\n * ```\n */\nexport const useGetCoinbaseBuyUrl = ({\n queryParams,\n ...args\n}: UseGetCoinbaseBuyUrlParams) =>\n useBaseQuery<GetCoinbaseBuyUrlResult>({\n queryFn: (client) => getCoinbaseBuyUrl(args, client),\n queryKey: ['useGetCoinbaseBuyUrl', args],\n queryParams,\n });\n","import { addCoinbaseOnrampOrderEventListener } from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\ntype AddCoinbaseOnrampOrderEventListenerParams = Parameters<\n typeof addCoinbaseOnrampOrderEventListener\n>[0];\n\ntype CoinbaseOnrampOrderListener =\n AddCoinbaseOnrampOrderEventListenerParams['listener'];\n\nexport type UseAddCoinbaseOnrampOrderEventListenerParams = {\n /**\n * Called for each Coinbase onramp order event received via `postMessage`.\n */\n listener: CoinbaseOnrampOrderListener;\n};\n\n/**\n * Subscribes to Coinbase onramp order events for the duration of the component.\n *\n * Wraps `addCoinbaseOnrampOrderEventListener` from `@dynamic-labs-sdk/client`.\n * Uses a ref to always call the latest listener without re-subscribing, and\n * removes the listener on unmount.\n *\n * @example\n * ```tsx\n * useAddCoinbaseOnrampOrderEventListener({\n * listener: ({ eventName, data }) => console.log(eventName, data),\n * });\n * ```\n */\nexport const useAddCoinbaseOnrampOrderEventListener = ({\n listener,\n}: UseAddCoinbaseOnrampOrderEventListenerParams) => {\n const client = useDynamicClient();\n const callbackRef = useRef(listener);\n\n callbackRef.current = listener;\n\n useEffect(\n () =>\n addCoinbaseOnrampOrderEventListener(\n {\n listener: (...args: Parameters<CoinbaseOnrampOrderListener>) => {\n callbackRef.current(...args);\n },\n },\n client\n ),\n [client]\n );\n};\n","import { completeDeviceRegistration } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype CompleteDeviceRegistrationVariables = Parameters<\n typeof completeDeviceRegistration\n>[0];\ntype CompleteDeviceRegistrationResult = Awaited<\n ReturnType<typeof completeDeviceRegistration>\n>;\n\nexport type UseCompleteDeviceRegistrationParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CompleteDeviceRegistrationResult,\n CompleteDeviceRegistrationVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `completeDeviceRegistration` from `@dynamic-labs-sdk/client`. Call `mutate({ deviceToken })` with the device token parsed from the redirect URL; the resolved `data` is a `VerifyResponse`.\n *\n * @example\n * ```tsx\n * const { mutate: completeRegistration, isPending } =\n * useCompleteDeviceRegistration();\n * completeRegistration({ deviceToken });\n * ```\n */\nexport const useCompleteDeviceRegistration = ({\n mutateParams,\n}: UseCompleteDeviceRegistrationParams = {}) =>\n useBaseMutation<\n CompleteDeviceRegistrationResult,\n CompleteDeviceRegistrationVariables\n >({\n middlewares: [invalidatesQueries('useGetRegisteredDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n completeDeviceRegistration(variables, client),\n });\n","import { completeSocialRedirect } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CompleteSocialRedirectVariables = Parameters<\n typeof completeSocialRedirect\n>[0];\ntype CompleteSocialRedirectResult = Awaited<\n ReturnType<typeof completeSocialRedirect>\n>;\n\nexport type UseCompleteSocialRedirectParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CompleteSocialRedirectResult,\n CompleteSocialRedirectVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `completeSocialRedirect` from `@dynamic-labs-sdk/client`. Call `mutate(params)` with the OAuth callback URL once the provider has redirected back to finish the sign-in; the resolved `data` is the signed-in `User` (or `null`).\n *\n * @example\n * ```tsx\n * const { mutate: completeSocialRedirect, data: user } =\n * useCompleteSocialRedirect();\n * completeSocialRedirect({ url: new URL(window.location.href) });\n * ```\n */\nexport const useCompleteSocialRedirect = ({\n mutateParams,\n}: UseCompleteSocialRedirectParams = {}) =>\n useBaseMutation<\n CompleteSocialRedirectResult,\n CompleteSocialRedirectVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n completeSocialRedirect(variables, client),\n });\n","import { detectSocialRedirectUrl } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype DetectSocialRedirectUrlResult = Awaited<\n ReturnType<typeof detectSocialRedirectUrl>\n>;\ntype DetectSocialRedirectUrlArgs = Parameters<typeof detectSocialRedirectUrl>[0];\n\n/**\n * Parameters for {@link useDetectSocialRedirectUrl} — the arguments of\n * `detectSocialRedirectUrl` plus an optional react-query options override.\n *\n * @example\n * ```tsx\n * const params: UseDetectSocialRedirectUrlParams = { url };\n * ```\n *\n * @see {@link useDetectSocialRedirectUrl} the hook these parameters configure.\n * @see {@link useCompleteSocialRedirect} the mutation you fire once detection\n * returns `true`.\n */\nexport type UseDetectSocialRedirectUrlParams = DetectSocialRedirectUrlArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: NonNullable<\n UseBaseQueryParams<DetectSocialRedirectUrlResult>['queryParams']\n >;\n};\n\n/**\n * Wraps `detectSocialRedirectUrl` from `@dynamic-labs-sdk/client`. Resolves to\n * `true` when the given URL is an OAuth redirect back from a social provider\n * (started by `signInWithSocialRedirect`), so you can decide whether to run\n * `completeSocialRedirect`.\n *\n * @param params - See {@link UseDetectSocialRedirectUrlParams}.\n * @returns A react-query result whose `data` is `true` when the URL is a social\n * OAuth callback, plus the usual `isLoading`/`error` fields.\n *\n * @example\n * ```tsx\n * const { data: isReturningFromProvider, isLoading } =\n * useDetectSocialRedirectUrl({ url });\n * ```\n *\n * @see {@link useCompleteSocialRedirect} to finish the redirect sign-in once\n * this returns `true`.\n * @see {@link clearSocialRedirectParams} to clean the OAuth parameters from the\n * URL after completion.\n */\nexport const useDetectSocialRedirectUrl = ({\n queryParams,\n ...args\n}: UseDetectSocialRedirectUrlParams) =>\n useBaseQuery<DetectSocialRedirectUrlResult>({\n queryFn: (client) => detectSocialRedirectUrl(args, client),\n queryKey: ['useDetectSocialRedirectUrl', { url: args.url.href }],\n queryParams,\n });\n","import { confirmTransaction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ConfirmTransactionVariables = Parameters<typeof confirmTransaction>[0];\ntype ConfirmTransactionResult = Awaited<ReturnType<typeof confirmTransaction>>;\n\nexport type UseConfirmTransactionParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ConfirmTransactionResult,\n ConfirmTransactionVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `confirmTransaction` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount, transactionHash })` to await confirmation of a submitted transaction; the resolved `data` is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: confirmTransaction, isPending } = useConfirmTransaction();\n * confirmTransaction({ walletAccount, transactionHash });\n * ```\n */\nexport const useConfirmTransaction = ({\n mutateParams,\n}: UseConfirmTransactionParams = {}) =>\n useBaseMutation<ConfirmTransactionResult, ConfirmTransactionVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n confirmTransaction(variables, client),\n });\n","import { connectAndVerifyWithWalletProvider } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ConnectAndVerifyWithWalletProviderVariables = Parameters<\n typeof connectAndVerifyWithWalletProvider\n>[0];\ntype ConnectAndVerifyWithWalletProviderResult = Awaited<\n ReturnType<typeof connectAndVerifyWithWalletProvider>\n>;\n\nexport type UseConnectAndVerifyWithWalletProviderParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ConnectAndVerifyWithWalletProviderResult,\n ConnectAndVerifyWithWalletProviderVariables\n >['mutateParams'];\n};\n\n/**\n * Connects to a wallet provider and verifies ownership in a single step.\n *\n * Wraps `connectAndVerifyWithWalletProvider` from `@dynamic-labs-sdk/client`.\n * Call `mutate({ walletProviderKey })` to connect and prompt the user to sign\n * a verification message, adding the verified account to their profile.\n *\n * Throws `DeeplinkConnectAndVerifyUnsupportedError` on mobile with deeplink\n * wallet providers — there, use `useConnectWithWalletProvider` followed by\n * `useVerifyWalletAccount` from a fresh user gesture instead.\n *\n * @example\n * ```tsx\n * const { mutate: connectAndVerify, isPending } =\n * useConnectAndVerifyWithWalletProvider();\n * <button\n * onClick={() => connectAndVerify({ walletProviderKey: 'metamaskevm' })}\n * disabled={isPending}\n * >\n * Connect & verify\n * </button>\n * ```\n */\nexport const useConnectAndVerifyWithWalletProvider = ({\n mutateParams,\n}: UseConnectAndVerifyWithWalletProviderParams = {}) =>\n useBaseMutation<\n ConnectAndVerifyWithWalletProviderResult,\n ConnectAndVerifyWithWalletProviderVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n connectAndVerifyWithWalletProvider(variables, client),\n });\n","import { type OnEventParams, onEvent } from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\n/**\n * Subscribes to a Dynamic client event.\n *\n * Uses a ref to always call the latest listener without re-subscribing,\n * and cleans up the subscription on unmount or event name change.\n */\nexport const useOnEvent = <E extends keyof DynamicEvents>({\n event,\n listener,\n}: OnEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(listener);\n\n callbackRef.current = listener;\n\n useEffect(\n () =>\n onEvent(\n {\n event,\n listener: (...args: any[]) => {\n // @ts-expect-error - Ignore the type error because we are using the ref\n callbackRef.current(...args);\n },\n },\n client\n ),\n [event, client]\n );\n};\n","import { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\n\nimport type { QueryMiddleware } from '../../foundation/useBaseQuery';\nimport { useOnEvent } from '../../hooks/wrappers/functions/useOnEvent';\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\nexport type InvalidateOnEventParams<E extends keyof DynamicEvents> = {\n /**\n * The client event to listen for (e.g. `'walletAccountsChanged'`).\n */\n event: E;\n};\n\n/**\n * Query middleware factory that refetches the query whenever the given client\n * event fires (e.g. `walletAccountsChanged`).\n *\n * It only wires up the subscription, invalidating the query's own cache key so\n * any mounted consumer refetches. This replaces the manual `useOnEvent` +\n * `refetch` boilerplate consumers would otherwise pair with the hook. It is the\n * client-event counterpart to `invalidateOnWalletProviderEvent` (which listens\n * on a single wallet account's provider). The subscription lives here, not in\n * `useBaseQuery`.\n *\n * @example\n * ```ts\n * useBaseQuery({\n * middlewares: [invalidateOnEvent({ event: 'walletAccountsChanged' })],\n * queryFn: (client) => getConnectedAddresses(args, client),\n * queryKey: ['useGetConnectedAddresses', args],\n * });\n * ```\n */\nexport const invalidateOnEvent =\n <E extends keyof DynamicEvents>({\n event,\n }: InvalidateOnEventParams<E>): QueryMiddleware =>\n (context) => {\n const queryClient = useQueryClient();\n const client = useDynamicClient();\n\n useOnEvent({\n event,\n // The listener ignores the event payload; it only triggers a refetch.\n listener: (() => {\n // `useBaseQuery` always supplies the query's own key; the context is\n // only optional so middlewares invoked directly in tests can omit it,\n // so bail rather than invalidate an unknown key when it is absent.\n if (!context) {\n return;\n }\n\n // Debug log so developers can observe which query an event invalidates.\n getCore(client).logger.debug(\n '[invalidateOnEvent] invalidating query on event',\n { event, queryKey: context.queryKey }\n );\n\n queryClient\n .invalidateQueries({ queryKey: context.queryKey })\n .catch((error: unknown) => {\n // Swallow the rejection, but log it so internal devs can\n // troubleshoot a query that fails to refetch on the event.\n getCore(client).logger.debug(\n '[invalidateOnEvent] failed to invalidate query',\n {\n error,\n queryKey: context.queryKey,\n stack: error instanceof Error ? error.stack : undefined,\n }\n );\n });\n }) as DynamicEvents[E],\n });\n };\n","import { getConnectedAddresses } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnEvent } from '../../../../middlewares/invalidateOnEvent';\n\ntype ConnectedAddressesResult = Awaited<ReturnType<typeof getConnectedAddresses>>;\ntype ConnectedAddressesArgs = Parameters<typeof getConnectedAddresses>[0];\n\nexport type UseGetConnectedAddressesParams = ConnectedAddressesArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<ConnectedAddressesResult>['queryParams'];\n};\n\n/**\n * Returns the connected addresses for the given wallet provider.\n *\n * Wraps `getConnectedAddresses` from `@dynamic-labs-sdk/client`. Automatically\n * refetches when wallet accounts change (connect / disconnect / verify), so\n * consumers don't have to pair it with a manual `walletAccountsChanged`\n * listener.\n */\nexport const useGetConnectedAddresses = ({ queryParams, ...args }: UseGetConnectedAddressesParams) =>\n useBaseQuery<ConnectedAddressesResult>({\n middlewares: [invalidateOnEvent({ event: 'walletAccountsChanged' })],\n queryFn: (client) => getConnectedAddresses(args, client),\n queryKey: ['useGetConnectedAddresses', args],\n queryParams,\n });\n","import { connectWithWalletProvider } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ConnectWithWalletProviderVariables = Parameters<\n typeof connectWithWalletProvider\n>[0];\ntype ConnectWithWalletProviderResult = Awaited<\n ReturnType<typeof connectWithWalletProvider>\n>;\n\nexport type UseConnectWithWalletProviderParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ConnectWithWalletProviderResult,\n ConnectWithWalletProviderVariables\n >['mutateParams'];\n};\n\n/**\n * Connects to a wallet provider and returns the connected wallet account.\n *\n * Wraps `connectWithWalletProvider` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletProviderKey })` to trigger the connection — the wallet\n * provider will prompt the user via its native UI. The connected account is\n * not verified; pair with `useVerifyWalletAccount`, or use\n * `useConnectAndVerifyWithWalletProvider` to do both in one step.\n *\n * @example\n * ```tsx\n * const { mutate: connect, data, isPending } = useConnectWithWalletProvider();\n * <button\n * onClick={() => connect({ walletProviderKey: 'metamaskevm' })}\n * disabled={isPending}\n * >\n * Connect\n * </button>\n * ```\n */\nexport const useConnectWithWalletProvider = ({\n mutateParams,\n}: UseConnectWithWalletProviderParams = {}) =>\n useBaseMutation<\n ConnectWithWalletProviderResult,\n ConnectWithWalletProviderVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n connectWithWalletProvider(variables, client),\n });\n","import { createBusinessAccount } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateBusinessAccountVariables = Parameters<\n typeof createBusinessAccount\n>[0];\ntype CreateBusinessAccountResult = Awaited<\n ReturnType<typeof createBusinessAccount>\n>;\n\n/**\n * Parameters for {@link useCreateBusinessAccount}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseCreateBusinessAccountParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useCreateBusinessAccount\n * @see createBusinessAccount\n */\nexport type UseCreateBusinessAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n CreateBusinessAccountResult,\n CreateBusinessAccountVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Wraps `createBusinessAccount` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * create a new business account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useCreateBusinessAccount();\n * <button onClick={() => mutate({ name: 'Acme' })} disabled={isPending}>\n * Create\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `createBusinessAccount` and whose `data` is its resolved value.\n * @see createBusinessAccount\n * @see UseCreateBusinessAccountParams\n */\nexport const useCreateBusinessAccount = ({\n mutateParams,\n}: UseCreateBusinessAccountParams = {}) =>\n useBaseMutation<CreateBusinessAccountResult, CreateBusinessAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createBusinessAccount(variables, client),\n });\n","import { createCoinbaseOnrampOrder } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateCoinbaseOnrampOrderVariables = Parameters<\n typeof createCoinbaseOnrampOrder\n>[0];\ntype CreateCoinbaseOnrampOrderResult = Awaited<\n ReturnType<typeof createCoinbaseOnrampOrder>\n>;\n\nexport type UseCreateCoinbaseOnrampOrderParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateCoinbaseOnrampOrderResult,\n CreateCoinbaseOnrampOrderVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `createCoinbaseOnrampOrder` from `@dynamic-labs-sdk/client`. Call `mutate(orderParams)` to create a Coinbase onramp order; the resolved `data` is the order response.\n *\n * @example\n * ```tsx\n * const { mutate: createOrder, data: order } = useCreateCoinbaseOnrampOrder();\n * createOrder(orderParams);\n * ```\n */\nexport const useCreateCoinbaseOnrampOrder = ({\n mutateParams,\n}: UseCreateCoinbaseOnrampOrderParams = {}) =>\n useBaseMutation<\n CreateCoinbaseOnrampOrderResult,\n CreateCoinbaseOnrampOrderVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createCoinbaseOnrampOrder(variables, client),\n });\n","import { createCryptoDotComPayment } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateCryptoDotComPaymentVariables = Parameters<\n typeof createCryptoDotComPayment\n>[0];\ntype CreateCryptoDotComPaymentResult = Awaited<\n ReturnType<typeof createCryptoDotComPayment>\n>;\n\nexport type UseCreateCryptoDotComPaymentParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateCryptoDotComPaymentResult,\n CreateCryptoDotComPaymentVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `createCryptoDotComPayment` from `@dynamic-labs-sdk/client`. Call `mutate(paymentParams)` to create a Crypto.com Pay payment; the resolved `data` is the payment response.\n *\n * @example\n * ```tsx\n * const { mutate: createPayment, data: payment } =\n * useCreateCryptoDotComPayment();\n * createPayment(paymentParams);\n * ```\n */\nexport const useCreateCryptoDotComPayment = ({\n mutateParams,\n}: UseCreateCryptoDotComPaymentParams = {}) =>\n useBaseMutation<\n CreateCryptoDotComPaymentResult,\n CreateCryptoDotComPaymentVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createCryptoDotComPayment(variables, client),\n });\n","import { createNewMfaRecoveryCodes } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateNewMfaRecoveryCodesResult = Awaited<\n ReturnType<typeof createNewMfaRecoveryCodes>\n>;\n\nexport type UseCreateNewMfaRecoveryCodesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateNewMfaRecoveryCodesResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Regenerates the current user's MFA recovery codes.\n *\n * Wraps `createNewMfaRecoveryCodes` from `@dynamic-labs-sdk/client`. Takes\n * no arguments — call `mutate()` to issue a fresh set of codes (invalidating\n * the previous set); the resolved `data` is the new recovery codes.\n *\n * @example\n * ```tsx\n * const { mutate: regenerateCodes, data, isPending } =\n * useCreateNewMfaRecoveryCodes();\n * <button onClick={() => regenerateCodes()} disabled={isPending}>\n * Regenerate recovery codes\n * </button>\n * ```\n */\nexport const useCreateNewMfaRecoveryCodes = ({\n mutateParams,\n}: UseCreateNewMfaRecoveryCodesParams = {}) =>\n useBaseMutation<CreateNewMfaRecoveryCodesResult, void>({\n mutateParams,\n mutationFn: ({ client }) => createNewMfaRecoveryCodes(client),\n });\n","import { deleteMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype DeleteMfaDeviceVariables = Parameters<typeof deleteMfaDevice>[0];\ntype DeleteMfaDeviceResult = Awaited<ReturnType<typeof deleteMfaDevice>>;\n\nexport type UseDeleteMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n DeleteMfaDeviceResult,\n DeleteMfaDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Deletes one of the current user's MFA devices.\n *\n * Wraps `deleteMfaDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ deviceId })` to remove the device; when no elevated access\n * token is available, also pass `mfaAuthToken`.\n *\n * @example\n * ```tsx\n * const { mutate: deleteDevice, isPending } = useDeleteMfaDevice();\n * <button onClick={() => deleteDevice({ deviceId })} disabled={isPending}>\n * Remove device\n * </button>\n * ```\n */\nexport const useDeleteMfaDevice = ({\n mutateParams,\n}: UseDeleteMfaDeviceParams = {}) => {\n return useBaseMutation<DeleteMfaDeviceResult, DeleteMfaDeviceVariables>({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) => deleteMfaDevice(variables, client),\n });\n};\n","import { deletePasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype DeletePasskeyVariables = Parameters<typeof deletePasskey>[0];\ntype DeletePasskeyResult = Awaited<ReturnType<typeof deletePasskey>>;\n\nexport type UseDeletePasskeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n DeletePasskeyResult,\n DeletePasskeyVariables\n >['mutateParams'];\n};\n\n/**\n * Deletes one of the current user's passkeys.\n *\n * Wraps `deletePasskey` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ passkeyId })` to remove the passkey; the resolved `data` is\n * `void`.\n *\n * @example\n * ```tsx\n * const { mutate: deletePasskey, isPending } = useDeletePasskey();\n * <button onClick={() => deletePasskey({ passkeyId })} disabled={isPending}>\n * Remove passkey\n * </button>\n * ```\n */\nexport const useDeletePasskey = ({\n mutateParams,\n}: UseDeletePasskeyParams = {}) =>\n useBaseMutation<DeletePasskeyResult, DeletePasskeyVariables>({\n middlewares: [invalidatesQueries('useGetPasskeys')],\n mutateParams,\n mutationFn: ({ client, variables }) => deletePasskey(variables, client),\n });\n","import { deleteUser } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype DeleteUserResult = Awaited<ReturnType<typeof deleteUser>>;\n\nexport type UseDeleteUserParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n DeleteUserResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Permanently deletes the current user's account and logs them out.\n *\n * Wraps `deleteUser` from `@dynamic-labs-sdk/client`. Takes no arguments —\n * call `mutate()` to hard-delete the account; the resolved `data` is `void`.\n * This is destructive and irreversible.\n *\n * @example\n * ```tsx\n * const { mutate: deleteUser, isPending } = useDeleteUser();\n * <button onClick={() => deleteUser()} disabled={isPending}>\n * Delete my account\n * </button>\n * ```\n */\nexport const useDeleteUser = ({ mutateParams }: UseDeleteUserParams = {}) =>\n useBaseMutation<DeleteUserResult, void>({\n mutateParams,\n mutationFn: ({ client }) => deleteUser(client),\n });\n","import { executeSwapTransaction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ExecuteSwapTransactionVariables = Parameters<\n typeof executeSwapTransaction\n>[0];\ntype ExecuteSwapTransactionResult = Awaited<\n ReturnType<typeof executeSwapTransaction>\n>;\n\nexport type UseExecuteSwapTransactionParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ExecuteSwapTransactionResult,\n ExecuteSwapTransactionVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `executeSwapTransaction` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount, signingPayload })` (using a payload from {@link useGetSwapQuote}) to execute a swap; the resolved `data` is `{ transactionHash }`.\n *\n * @example\n * ```tsx\n * const { mutate: executeSwap, data } = useExecuteSwapTransaction();\n * executeSwap({ walletAccount, signingPayload });\n * ```\n */\nexport const useExecuteSwapTransaction = ({\n mutateParams,\n}: UseExecuteSwapTransactionParams = {}) =>\n useBaseMutation<\n ExecuteSwapTransactionResult,\n ExecuteSwapTransactionVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n executeSwapTransaction(variables, client),\n });\n","import { getFlow } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetFlowResult = Awaited<ReturnType<typeof getFlow>>;\n\nexport type UseGetFlowParams = {\n /**\n * **Pseudo-required.** The ID of the flow to fetch.\n * Accepting `undefined` lets callers wire this up before the flow id\n * has loaded — the hook stays disabled until a real value is supplied.\n */\n flowId: string | undefined;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetFlowResult>['queryParams'];\n};\n\n/**\n * Returns the flow with the given ID.\n *\n * Wraps `getFlow` from `@dynamic-labs-sdk/client`. The hook stays disabled\n * until `flowId` is defined.\n *\n * @example\n * ```tsx\n * const { data: flow, isLoading, refetch } = useGetFlow({ flowId });\n * ```\n */\nexport const useGetFlow = ({ flowId, queryParams }: UseGetFlowParams) =>\n useBaseQuery<GetFlowResult>({\n enabled: flowId !== undefined,\n queryFn: (client) => getFlow({ flowId: flowId as string }, client),\n queryKey: ['useGetFlow', flowId],\n queryParams,\n });\n","import { getFlowQuote } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype GetFlowQuoteVariables = Parameters<typeof getFlowQuote>[0];\ntype GetFlowQuoteResult = Awaited<ReturnType<typeof getFlowQuote>>;\n\nexport type UseGetFlowQuoteParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n GetFlowQuoteResult,\n GetFlowQuoteVariables\n >['mutateParams'];\n};\n\n/**\n * Fetches a quote for a flow.\n *\n * Wraps `getFlowQuote` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId, fromTokenAddress, slippage })`\n * to fetch a quote for a flow.\n *\n * @example\n * ```tsx\n * const { mutate: getFlowQuote, isPending } = useGetFlowQuote();\n * <button onClick={() => getFlowQuote({ flowId, fromTokenAddress, slippage })} disabled={isPending}>\n * Get flow quote\n * </button>\n * ```\n */\nexport const useGetFlowQuote = ({ mutateParams }: UseGetFlowQuoteParams = {}) =>\n useBaseMutation<GetFlowQuoteResult, GetFlowQuoteVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => getFlowQuote(variables, client),\n });\n","import { prepareFlowSigning } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype PrepareFlowSigningVariables = Parameters<typeof prepareFlowSigning>[0];\ntype PrepareFlowSigningResult = Awaited<ReturnType<typeof prepareFlowSigning>>;\n\nexport type UsePrepareFlowSigningParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n PrepareFlowSigningResult,\n PrepareFlowSigningVariables\n >['mutateParams'];\n};\n\n/**\n * Prepares a flow transaction for signing.\n *\n * Wraps `prepareFlowSigning` from `@dynamic-labs-sdk/client`. Call `mutate({ flowId })`\n * to prepare a flow for signing.\n *\n * @example\n * ```tsx\n * const { mutate: prepareFlowSigning, isPending } = usePrepareFlowSigning();\n * <button onClick={() => prepareFlowSigning({ flowId })} disabled={isPending}>\n * Prepare flow signing\n * </button>\n * ```\n */\nexport const usePrepareFlowSigning = ({\n mutateParams,\n}: UsePrepareFlowSigningParams = {}) =>\n useBaseMutation<PrepareFlowSigningResult, PrepareFlowSigningVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n prepareFlowSigning(variables, client),\n });\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport { getCore } from '@dynamic-labs-sdk/client/core';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { useRef } from 'react';\n\nimport type { QueryMiddleware } from '../../foundation/useBaseQuery';\nimport { useOnEvent } from '../../hooks/wrappers/functions/useOnEvent';\nimport { useDynamicClient } from '../../modules/DynamicContext';\n\nconst USER_CHANGED_EVENT = 'userChanged';\n\n/**\n * Query middleware factory that refetches the query when a *different* user\n * becomes the current user (login or account switch).\n *\n * Unlike `invalidateOnEvent({ event: 'userChanged' })`, this never invalidates\n * on:\n * - logout (the user becomes `undefined`) — the refetch would just 401 and the\n * cleared session leaves nothing to refetch; and\n * - same-user `userChanged` fires (e.g. linking a credential or a profile\n * update) — the data still belongs to the same user, whose own mutations\n * already invalidate it within the session.\n *\n * It tracks the previous user id across renders (seeded from the user present\n * at mount) and only invalidates when the new id is defined and differs.\n *\n * @example\n * ```ts\n * useBaseQuery({\n * middlewares: [invalidateOnUserSwitch()],\n * queryFn: (client) => getMfaDevices(client),\n * queryKey: ['useGetMfaDevices'],\n * });\n * ```\n */\nexport const invalidateOnUserSwitch =\n (): QueryMiddleware =>\n (context) => {\n const client = useDynamicClient();\n const queryClient = useQueryClient();\n\n // Seed with the user at mount so the first same-user fire (e.g. a profile\n // update right after mount) doesn't spuriously invalidate.\n const previousUserIdRef = useRef<string | undefined>(client.user?.id);\n\n useOnEvent({\n event: USER_CHANGED_EVENT,\n listener: ((args: { user: DynamicClient['user'] }) => {\n const nextUserId = args.user?.id;\n const previousUserId = previousUserIdRef.current;\n previousUserIdRef.current = nextUserId;\n\n // Only a switch to a different, defined user warrants a refetch:\n // logout (-> undefined) would just 401, and same-user fires don't\n // change user-scoped data (their own mutations handle that).\n if (nextUserId === undefined || nextUserId === previousUserId) {\n return;\n }\n\n // `useBaseQuery` always supplies the query's own key; the context is\n // only optional so middlewares invoked directly in tests can omit it,\n // so bail rather than invalidate an unknown key when it is absent.\n if (!context) {\n return;\n }\n\n getCore(client).logger.debug(\n '[invalidateOnUserSwitch] invalidating query on new user',\n { queryKey: context.queryKey }\n );\n\n queryClient\n .invalidateQueries({ queryKey: context.queryKey })\n .catch((error: unknown) => {\n // Swallow the rejection, but log it so internal devs can\n // troubleshoot a query that fails to refetch on the new user.\n getCore(client).logger.debug(\n '[invalidateOnUserSwitch] failed to invalidate query',\n {\n error,\n queryKey: context.queryKey,\n stack: error instanceof Error ? error.stack : undefined,\n }\n );\n });\n }) as DynamicEvents[typeof USER_CHANGED_EVENT],\n });\n };\n","import { getGoogleDriveBackupReadiness } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetGoogleDriveBackupReadinessResult = Awaited<\n ReturnType<typeof getGoogleDriveBackupReadiness>\n>;\n\nexport type UseGetGoogleDriveBackupReadinessParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetGoogleDriveBackupReadinessResult>['queryParams'];\n};\n\n/**\n * Wraps `getGoogleDriveBackupReadiness` from `@dynamic-labs-sdk/client`. Reports whether the user's Google Drive backup is set up and available.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: readiness, isLoading } = useGetGoogleDriveBackupReadiness();\n * ```\n */\nexport const useGetGoogleDriveBackupReadiness = ({\n queryParams,\n}: UseGetGoogleDriveBackupReadinessParams = {}) =>\n useBaseQuery<GetGoogleDriveBackupReadinessResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getGoogleDriveBackupReadiness(client),\n queryKey: ['useGetGoogleDriveBackupReadiness'],\n queryParams,\n });\n","import { isMfaRequiredForAction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype IsMfaRequiredForActionResult = Awaited<ReturnType<typeof isMfaRequiredForAction>>;\ntype IsMfaRequiredForActionArgs = Parameters<typeof isMfaRequiredForAction>[0];\n\nexport type UseIsMfaRequiredForActionParams = IsMfaRequiredForActionArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<IsMfaRequiredForActionResult>['queryParams'];\n};\n\n/**\n * Returns whether MFA is required for the given action.\n *\n * Wraps `isMfaRequiredForAction` from `@dynamic-labs-sdk/client`.\n */\nexport const useIsMfaRequiredForAction = ({ queryParams, ...args }: UseIsMfaRequiredForActionParams) =>\n useBaseQuery<IsMfaRequiredForActionResult>({\n queryFn: (client) => isMfaRequiredForAction(args, client),\n queryKey: ['useIsMfaRequiredForAction', args],\n queryParams,\n });\n","import { getKrakenAccounts } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetKrakenAccountsResult = Awaited<ReturnType<typeof getKrakenAccounts>>;\ntype GetKrakenAccountsArgs = NonNullable<\n Parameters<typeof getKrakenAccounts>[0]\n>;\n\nexport type UseGetKrakenAccountsParams = GetKrakenAccountsArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetKrakenAccountsResult>['queryParams'];\n};\n\n/**\n * Wraps `getKrakenAccounts` from `@dynamic-labs-sdk/client`. Returns the authenticated user's Kraken accounts (with balances), optionally filtered by chain/network.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: accounts, isLoading } = useGetKrakenAccounts();\n * ```\n */\nexport const useGetKrakenAccounts = ({\n queryParams,\n ...args\n}: UseGetKrakenAccountsParams = {}) =>\n useBaseQuery<GetKrakenAccountsResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getKrakenAccounts(args, client),\n queryKey: ['useGetKrakenAccounts', args],\n queryParams,\n });\n","import { createKrakenExchangeTransfer } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateKrakenExchangeTransferVariables = Parameters<\n typeof createKrakenExchangeTransfer\n>[0];\ntype CreateKrakenExchangeTransferResult = Awaited<\n ReturnType<typeof createKrakenExchangeTransfer>\n>;\n\nexport type UseCreateKrakenExchangeTransferParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n CreateKrakenExchangeTransferResult,\n CreateKrakenExchangeTransferVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `createKrakenExchangeTransfer` from `@dynamic-labs-sdk/client`. Call `mutate({ accountId, ... })` to send crypto from a Kraken account (see `useGetKrakenAccounts`) to a whitelisted address (see `useGetKrakenWhitelistedAddresses`); the resolved `data` is the created transfer.\n *\n * @example\n * ```tsx\n * const { mutate: transfer, data } = useCreateKrakenExchangeTransfer();\n * transfer({ accountId, asset, amount, address });\n * ```\n */\nexport const useCreateKrakenExchangeTransfer = ({\n mutateParams,\n}: UseCreateKrakenExchangeTransferParams = {}) =>\n useBaseMutation<\n CreateKrakenExchangeTransferResult,\n CreateKrakenExchangeTransferVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n createKrakenExchangeTransfer(variables, client),\n });\n","import { getKrakenWhitelistedAddresses } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetKrakenWhitelistedAddressesResult = Awaited<\n ReturnType<typeof getKrakenWhitelistedAddresses>\n>;\n\nexport type UseGetKrakenWhitelistedAddressesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetKrakenWhitelistedAddressesResult>['queryParams'];\n};\n\n/**\n * Wraps `getKrakenWhitelistedAddresses` from `@dynamic-labs-sdk/client`. Returns the destination addresses whitelisted for Kraken withdrawals.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: addresses, isLoading } = useGetKrakenWhitelistedAddresses();\n * ```\n */\nexport const useGetKrakenWhitelistedAddresses = ({\n queryParams,\n}: UseGetKrakenWhitelistedAddressesParams = {}) =>\n useBaseQuery<GetKrakenWhitelistedAddressesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getKrakenWhitelistedAddresses(client),\n queryKey: ['useGetKrakenWhitelistedAddresses'],\n queryParams,\n });\n","import { listBusinessAccounts } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype ListBusinessAccountsResult = Awaited<\n ReturnType<typeof listBusinessAccounts>\n>;\n\n/**\n * Parameters for {@link useListBusinessAccounts}: an optional override of the underlying\n * react-query options.\n *\n * @example\n * ```tsx\n * const params: UseListBusinessAccountsParams = { queryParams: { retry: 0 } };\n * ```\n * @see useListBusinessAccounts\n * @see listBusinessAccounts\n */\nexport type UseListBusinessAccountsParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: NonNullable<\n UseBaseQueryParams<ListBusinessAccountsResult>['queryParams']\n >;\n};\n\n/**\n * Wraps `listBusinessAccounts` from `@dynamic-labs-sdk/client/waas`. Lists all business accounts for\n * the current project environment.\n *\n * @example\n * ```tsx\n * const { data: businessAccounts, isLoading } = useListBusinessAccounts();\n * ```\n *\n * @returns A react-query result whose `data` is the paginated list resolved by `listBusinessAccounts`.\n * @see listBusinessAccounts\n * @see UseListBusinessAccountsParams\n */\nexport const useListBusinessAccounts = ({\n queryParams,\n}: UseListBusinessAccountsParams = {}) =>\n useBaseQuery<ListBusinessAccountsResult>({\n queryFn: (client) => listBusinessAccounts(client),\n queryKey: ['useListBusinessAccounts'],\n queryParams,\n });\n","// eslint-disable-next-line custom-rules/require-logout-with-reason -- this hook is the customer-facing wrapper for `logout`, so it forwards the user-intent reason itself.\nimport { logout } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UseLogoutParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<void, void>['mutateParams'];\n};\n\n/**\n * Logs the current user out.\n *\n * Wraps `logout` from `@dynamic-labs-sdk/client`. Takes no required\n * arguments — call `mutate()` to trigger the logout.\n *\n * @example\n * ```tsx\n * const { mutate: logOut, isPending } = useLogout();\n * <button onClick={() => logOut()} disabled={isPending}>Logout</button>\n * ```\n */\nexport const useLogout = ({ mutateParams }: UseLogoutParams = {}) =>\n useBaseMutation<void, void>({\n mutateParams,\n mutationFn: ({ client }) => logout(client),\n });\n","import { mergeUserAccounts } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype MergeUserAccountsVariables = Parameters<typeof mergeUserAccounts>[0];\ntype MergeUserAccountsResult = Awaited<ReturnType<typeof mergeUserAccounts>>;\n\n/**\n * Parameters for {@link useMergeUserAccounts}: an optional override of the\n * underlying react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseMergeUserAccountsParams = {\n * mutateParams: { onSuccess: () => console.log('merged') },\n * };\n * ```\n * @see useMergeUserAccounts\n * @see mergeUserAccounts\n */\nexport type UseMergeUserAccountsParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n MergeUserAccountsResult,\n MergeUserAccountsVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Completes an account merge after a credential was found to already belong to\n * another user (surfaced as `MergeAccountsConfirmationError` during\n * verification / linking).\n *\n * Wraps `mergeUserAccounts` from `@dynamic-labs-sdk/client`. Call `mutate()`\n * with no arguments to merge directly when there are no conflicts, or\n * `mutate({ conflictResolutions })` with the user's per-field choices when the\n * merge surfaced conflicts. The resolved `data` is the merged user.\n *\n * @example\n * ```tsx\n * const { mutate: mergeAccounts, isPending } = useMergeUserAccounts();\n *\n * // No conflicts — merge directly:\n * mergeAccounts({});\n *\n * // With conflicts the user resolved:\n * mergeAccounts({ conflictResolutions });\n * ```\n * @returns A react-query mutation whose `mutate`/`mutateAsync` completes the\n * merge and whose `data` is the merged user.\n * @see mergeUserAccounts\n * @see UseMergeUserAccountsParams\n */\nexport const useMergeUserAccounts = ({\n mutateParams,\n}: UseMergeUserAccountsParams = {}) =>\n useBaseMutation<MergeUserAccountsResult, MergeUserAccountsVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => mergeUserAccounts(variables, client),\n });\n","import { getMfaDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetMfaDevicesResult = Awaited<ReturnType<typeof getMfaDevices>>;\n\nexport type UseGetMfaDevicesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMfaDevicesResult>['queryParams'];\n};\n\n/**\n * Returns the multi-factor authentication devices registered for the\n * current user.\n *\n * Wraps `getMfaDevices` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: mfaDevices, isLoading, refetch } = useGetMfaDevices();\n * ```\n */\nexport const useGetMfaDevices = ({ queryParams }: UseGetMfaDevicesParams = {}) =>\n useBaseQuery<GetMfaDevicesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getMfaDevices(client),\n queryKey: ['useGetMfaDevices'],\n queryParams,\n });\n","import { getMfaMethods } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetMfaMethodsResult = Awaited<ReturnType<typeof getMfaMethods>>;\n\nexport type UseGetMfaMethodsParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMfaMethodsResult>['queryParams'];\n};\n\n/**\n * Returns the multi-factor authentication methods available to the current\n * user.\n *\n * Wraps `getMfaMethods` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: mfaMethods, isLoading, refetch } = useGetMfaMethods();\n * ```\n */\nexport const useGetMfaMethods = ({ queryParams }: UseGetMfaMethodsParams = {}) =>\n useBaseQuery<GetMfaMethodsResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getMfaMethods(client),\n queryKey: ['useGetMfaMethods'],\n queryParams,\n });\n","import { getMfaRecoveryCodes } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetMfaRecoveryCodesResult = Awaited<\n ReturnType<typeof getMfaRecoveryCodes>\n>;\n\nexport type UseGetMfaRecoveryCodesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMfaRecoveryCodesResult>['queryParams'];\n};\n\n/**\n * Returns the current user's MFA recovery codes.\n *\n * Wraps `getMfaRecoveryCodes` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: recoveryCodes, isLoading, refetch } = useGetMfaRecoveryCodes();\n * ```\n */\nexport const useGetMfaRecoveryCodes = ({\n queryParams,\n}: UseGetMfaRecoveryCodesParams = {}) =>\n useBaseQuery<GetMfaRecoveryCodesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getMfaRecoveryCodes(client),\n queryKey: ['useGetMfaRecoveryCodes'],\n queryParams,\n });\n","import { getMoonPayCurrencies } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetMoonPayCurrenciesResult = Awaited<\n ReturnType<typeof getMoonPayCurrencies>\n>;\ntype GetMoonPayCurrenciesArgs = Parameters<typeof getMoonPayCurrencies>[0];\n\nexport type UseGetMoonPayCurrenciesParams = GetMoonPayCurrenciesArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMoonPayCurrenciesResult>['queryParams'];\n};\n\n/**\n * Wraps `getMoonPayCurrencies` from `@dynamic-labs-sdk/client`. Returns the list of currencies MoonPay supports for the given parameters.\n *\n * @example\n * ```tsx\n * const { data: currencies, isLoading } = useGetMoonPayCurrencies(params);\n * ```\n */\nexport const useGetMoonPayCurrencies = ({\n queryParams,\n ...args\n}: UseGetMoonPayCurrenciesParams) =>\n useBaseQuery<GetMoonPayCurrenciesResult>({\n queryFn: (client) => getMoonPayCurrencies(args, client),\n queryKey: ['useGetMoonPayCurrencies', args],\n queryParams,\n });\n","import { getMoonPayUrl } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetMoonPayUrlResult = Awaited<ReturnType<typeof getMoonPayUrl>>;\ntype GetMoonPayUrlArgs = Parameters<typeof getMoonPayUrl>[0];\n\nexport type UseGetMoonPayUrlParams = GetMoonPayUrlArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMoonPayUrlResult>['queryParams'];\n};\n\n/**\n * Wraps `getMoonPayUrl` from `@dynamic-labs-sdk/client`. Returns a MoonPay widget URL for the given parameters.\n *\n * @example\n * ```tsx\n * const { data: moonPayUrl, isLoading } = useGetMoonPayUrl(params);\n * ```\n */\nexport const useGetMoonPayUrl = ({ queryParams, ...args }: UseGetMoonPayUrlParams) =>\n useBaseQuery<GetMoonPayUrlResult>({\n queryFn: (client) => getMoonPayUrl(args, client),\n queryKey: ['useGetMoonPayUrl', args],\n queryParams,\n });\n","import type { GetMultichainTokenBalancesParams } from '@dynamic-labs-sdk/client';\nimport { getMultichainTokenBalances } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetMultichainTokenBalancesResult = Awaited<\n ReturnType<typeof getMultichainTokenBalances>\n>;\n\nexport type UseGetMultichainTokenBalancesParams = {\n /**\n * **Pseudo-required.** The batched balance request forwarded to\n * `getMultichainTokenBalances`. Pass `undefined` to keep the hook\n * disabled — useful while waiting for wallet accounts or chain\n * selection to load.\n */\n balanceRequest: GetMultichainTokenBalancesParams['balanceRequest'] | undefined;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetMultichainTokenBalancesResult>['queryParams'];\n};\n\n/**\n * Returns token balances across multiple chains, networks, and addresses\n * in a single batched API request.\n *\n * Wraps `getMultichainTokenBalances` from `@dynamic-labs-sdk/client`. The\n * hook stays disabled until `balanceRequest` is defined. Use this for\n * portfolio-style views; for a single account on one chain prefer\n * {@link useGetTokenBalances}.\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetMultichainTokenBalances({\n * balanceRequest,\n * });\n * ```\n */\nexport const useGetMultichainTokenBalances = ({\n balanceRequest,\n queryParams,\n}: UseGetMultichainTokenBalancesParams) =>\n useBaseQuery<GetMultichainTokenBalancesResult>({\n enabled: balanceRequest !== undefined,\n queryFn: (client) =>\n getMultichainTokenBalances(\n {\n balanceRequest:\n balanceRequest as GetMultichainTokenBalancesParams['balanceRequest'],\n },\n client\n ),\n queryKey: ['useGetMultichainTokenBalances', balanceRequest],\n queryParams,\n });\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getNativeBalance } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype UseGetNativeBalanceParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<{ balance: string | null }>['queryParams'];\n /**\n * **Pseudo-required.** The wallet account to fetch the balance for.\n * Accepting `undefined` lets callers wire this up before the wallet\n * account has loaded — the hook stays disabled until a real value is\n * supplied.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Returns the native token balance for a wallet account.\n *\n * Calls `getNativeBalance` from `@dynamic-labs-sdk/client`. The hook stays\n * disabled until `walletAccount` is defined.\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetNativeBalance({ walletAccount });\n * ```\n */\nexport const useGetNativeBalance = ({ walletAccount, queryParams }: UseGetNativeBalanceParams) =>\n useBaseQuery<{ balance: string | null }>({\n enabled: walletAccount !== undefined,\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount,\n }),\n ],\n queryFn: (client) =>\n getNativeBalance(\n { walletAccount: walletAccount as WalletAccount },\n client\n ),\n queryKey: ['useGetNativeBalance', walletAccount?.id],\n queryParams,\n });\n","import { type OnceEventParams, onceEvent } from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\n\n/**\n * Subscribes to a Dynamic client event for a single occurrence.\n *\n * Wraps `onceEvent` from `@dynamic-labs-sdk/client` — the one-shot sibling of\n * `useOnEvent`. The listener fires at most once. Uses a ref to always call the\n * latest listener, and cleans up the subscription on unmount or event change.\n *\n * @example\n * ```tsx\n * useOnceEvent({\n * event: 'authFlowCancelled',\n * listener: () => console.log('auth flow cancelled'),\n * });\n * ```\n */\nexport const useOnceEvent = <E extends keyof DynamicEvents>({\n event,\n listener,\n}: OnceEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(listener);\n\n callbackRef.current = listener;\n\n useEffect(\n () =>\n onceEvent(\n {\n event,\n listener: (...args: any[]) => {\n // @ts-expect-error - Ignore the type error because we are using the ref\n callbackRef.current(...args);\n },\n },\n client\n ),\n [event, client]\n );\n};\n","import { getPasskeys } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetPasskeysResult = Awaited<ReturnType<typeof getPasskeys>>;\n\nexport type UseGetPasskeysParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetPasskeysResult>['queryParams'];\n};\n\n/**\n * Returns the passkeys registered for the current user.\n *\n * Wraps `getPasskeys` from `@dynamic-labs-sdk/client`.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: passkeys, isLoading, refetch } = useGetPasskeys();\n * ```\n */\nexport const useGetPasskeys = ({ queryParams }: UseGetPasskeysParams = {}) =>\n useBaseQuery<GetPasskeysResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getPasskeys(client),\n queryKey: ['useGetPasskeys'],\n queryParams,\n });\n","import { proveWalletAccountOwnership } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ProveWalletAccountOwnershipVariables = Parameters<\n typeof proveWalletAccountOwnership\n>[0];\ntype ProveWalletAccountOwnershipResult = Awaited<\n ReturnType<typeof proveWalletAccountOwnership>\n>;\n\nexport type UseProveWalletAccountOwnershipParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n ProveWalletAccountOwnershipResult,\n ProveWalletAccountOwnershipVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `proveWalletAccountOwnership` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount })` to prove ownership of a connected wallet account by signing a challenge.\n *\n * @example\n * ```tsx\n * const { mutate: proveOwnership, isPending } =\n * useProveWalletAccountOwnership();\n * proveOwnership({ walletAccount });\n * ```\n */\nexport const useProveWalletAccountOwnership = ({\n mutateParams,\n}: UseProveWalletAccountOwnershipParams = {}) =>\n useBaseMutation<\n ProveWalletAccountOwnershipResult,\n ProveWalletAccountOwnershipVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n proveWalletAccountOwnership(variables, client),\n });\n","import { refreshAuth } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RefreshAuthResult = Awaited<ReturnType<typeof refreshAuth>>;\n\nexport type UseRefreshAuthParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<RefreshAuthResult, void>['mutateParams'];\n};\n\n/**\n * Wraps `refreshAuth` from `@dynamic-labs-sdk/client`. Takes no arguments — call `mutate()` to refresh the session/JWT; the resolved `data` is a `VerifyResponse`.\n *\n * @example\n * ```tsx\n * const { mutate: refreshAuth, isPending } = useRefreshAuth();\n * <button onClick={() => refreshAuth()} disabled={isPending}>\n * Refresh session\n * </button>\n * ```\n */\nexport const useRefreshAuth = ({ mutateParams }: UseRefreshAuthParams = {}) =>\n useBaseMutation<RefreshAuthResult, void>({\n mutateParams,\n mutationFn: ({ client }) => refreshAuth(client),\n });\n","import { getRegisteredDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnUserSwitch } from '../../../../middlewares/invalidateOnUserSwitch';\n\ntype GetRegisteredDevicesResult = Awaited<\n ReturnType<typeof getRegisteredDevices>\n>;\n\nexport type UseGetRegisteredDevicesParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetRegisteredDevicesResult>['queryParams'];\n};\n\n/**\n * Returns the devices registered for the current user.\n *\n * Wraps `getRegisteredDevices` from `@dynamic-labs-sdk/client`. Pair with\n * {@link useRevokeRegisteredDevice} to let users revoke a device from the\n * list.\n *\n * Automatically refetches when a different user becomes current (login or\n * account switch), so consumers don't have to pair it with a manual\n * `userChanged` listener.\n *\n * @example\n * ```tsx\n * const { data: devices, isLoading, refetch } = useGetRegisteredDevices();\n * ```\n */\nexport const useGetRegisteredDevices = ({\n queryParams,\n}: UseGetRegisteredDevicesParams = {}) =>\n useBaseQuery<GetRegisteredDevicesResult>({\n middlewares: [invalidateOnUserSwitch()],\n queryFn: (client) => getRegisteredDevices(client),\n queryKey: ['useGetRegisteredDevices'],\n queryParams,\n });\n","import { registerPasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RegisterPasskeyVariables = Parameters<typeof registerPasskey>[0];\ntype RegisterPasskeyResult = Awaited<ReturnType<typeof registerPasskey>>;\n\nexport type UseRegisterPasskeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RegisterPasskeyResult,\n RegisterPasskeyVariables\n >['mutateParams'];\n};\n\n/**\n * Registers a new passkey for the current user.\n *\n * Wraps `registerPasskey` from `@dynamic-labs-sdk/client`. Call `mutate()`\n * to prompt the device's WebAuthn flow; the resolved `data` is the\n * registration response.\n *\n * @example\n * ```tsx\n * const { mutate: registerPasskey, isPending } = useRegisterPasskey();\n * <button onClick={() => registerPasskey()} disabled={isPending}>\n * Add passkey\n * </button>\n * ```\n */\nexport const useRegisterPasskey = ({\n mutateParams,\n}: UseRegisterPasskeyParams = {}) =>\n useBaseMutation<RegisterPasskeyResult, RegisterPasskeyVariables>({\n middlewares: [invalidatesQueries('useGetPasskeys')],\n mutateParams,\n mutationFn: ({ client, variables }) => registerPasskey(variables, client),\n });\n","import { registerTotpMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RegisterTotpMfaDeviceResult = Awaited<\n ReturnType<typeof registerTotpMfaDevice>\n>;\n\nexport type UseRegisterTotpMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RegisterTotpMfaDeviceResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Registers a new TOTP MFA device for the current user.\n *\n * Wraps `registerTotpMfaDevice` from `@dynamic-labs-sdk/client`. Takes no\n * arguments — call `mutate()` to start enrollment; the resolved `data`\n * contains the secret/URI used to render the authenticator QR code.\n *\n * @example\n * ```tsx\n * const { mutate: registerTotp, data, isPending } = useRegisterTotpMfaDevice();\n * <button onClick={() => registerTotp()} disabled={isPending}>\n * Add authenticator app\n * </button>\n * ```\n */\nexport const useRegisterTotpMfaDevice = ({\n mutateParams,\n}: UseRegisterTotpMfaDeviceParams = {}) =>\n useBaseMutation<RegisterTotpMfaDeviceResult, void>({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client }) => registerTotpMfaDevice(client),\n });\n","import { removeBusinessAccountMember } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RemoveBusinessAccountMemberVariables = Parameters<\n typeof removeBusinessAccountMember\n>[0];\ntype RemoveBusinessAccountMemberResult = Awaited<\n ReturnType<typeof removeBusinessAccountMember>\n>;\n\n/**\n * Parameters for {@link useRemoveBusinessAccountMember}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseRemoveBusinessAccountMemberParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useRemoveBusinessAccountMember\n * @see removeBusinessAccountMember\n */\nexport type UseRemoveBusinessAccountMemberParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n RemoveBusinessAccountMemberResult,\n RemoveBusinessAccountMemberVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Wraps `removeBusinessAccountMember` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)`\n * to remove a member from a business account (the backend refuses to remove the last owner).\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useRemoveBusinessAccountMember();\n * <button onClick={() => mutate({ businessAccountId, userId })} disabled={isPending}>\n * Remove member\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `removeBusinessAccountMember` and whose `data` is the removed member.\n * @see removeBusinessAccountMember\n * @see UseRemoveBusinessAccountMemberParams\n */\nexport const useRemoveBusinessAccountMember = ({\n mutateParams,\n}: UseRemoveBusinessAccountMemberParams = {}) =>\n useBaseMutation<\n RemoveBusinessAccountMemberResult,\n RemoveBusinessAccountMemberVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n removeBusinessAccountMember(variables, client),\n });\n","import { removeBusinessAccountSigner } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RemoveBusinessAccountSignerVariables = Parameters<\n typeof removeBusinessAccountSigner\n>[0];\ntype RemoveBusinessAccountSignerResult = Awaited<\n ReturnType<typeof removeBusinessAccountSigner>\n>;\n\n/**\n * Parameters for {@link useRemoveBusinessAccountSigner}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseRemoveBusinessAccountSignerParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useRemoveBusinessAccountSigner\n * @see removeBusinessAccountSigner\n */\nexport type UseRemoveBusinessAccountSignerParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<\n UseBaseMutationParams<\n RemoveBusinessAccountSignerResult,\n RemoveBusinessAccountSignerVariables\n >['mutateParams']\n >;\n};\n\n/**\n * Wraps `removeBusinessAccountSigner` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)`\n * to remove a signer from a business-account wallet (the backend refuses to remove the last signer).\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useRemoveBusinessAccountSigner();\n * <button onClick={() => mutate({ businessAccountId, walletId, signerId })} disabled={isPending}>\n * Remove signer\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `removeBusinessAccountSigner` and whose `data` is the removed signer.\n * @see removeBusinessAccountSigner\n * @see UseRemoveBusinessAccountSignerParams\n */\nexport const useRemoveBusinessAccountSigner = ({\n mutateParams,\n}: UseRemoveBusinessAccountSignerParams = {}) =>\n useBaseMutation<\n RemoveBusinessAccountSignerResult,\n RemoveBusinessAccountSignerVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n removeBusinessAccountSigner(variables, client),\n });\n","import { removeWalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RemoveWalletAccountVariables = Parameters<typeof removeWalletAccount>[0];\ntype RemoveWalletAccountResult = Awaited<\n ReturnType<typeof removeWalletAccount>\n>;\n\nexport type UseRemoveWalletAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RemoveWalletAccountResult,\n RemoveWalletAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Removes a wallet account from the current user.\n *\n * Wraps `removeWalletAccount` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletAccount })` to disconnect/unlink the account; the\n * resolved `data` is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: removeWallet, isPending } = useRemoveWalletAccount();\n * <button\n * onClick={() => removeWallet({ walletAccount })}\n * disabled={isPending}\n * >\n * Remove wallet\n * </button>\n * ```\n */\nexport const useRemoveWalletAccount = ({\n mutateParams,\n}: UseRemoveWalletAccountParams = {}) =>\n useBaseMutation<RemoveWalletAccountResult, RemoveWalletAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n removeWalletAccount(variables, client),\n });\n","import { requestExternalAuthElevatedToken } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RequestExternalAuthElevatedTokenVariables = Parameters<\n typeof requestExternalAuthElevatedToken\n>[0];\ntype RequestExternalAuthElevatedTokenResult = Awaited<\n ReturnType<typeof requestExternalAuthElevatedToken>\n>;\n\nexport type UseRequestExternalAuthElevatedTokenParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RequestExternalAuthElevatedTokenResult,\n RequestExternalAuthElevatedTokenVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `requestExternalAuthElevatedToken` from `@dynamic-labs-sdk/client`. Call `mutate({ externalJwt })` to exchange an externally issued JWT for an elevated-access token.\n *\n * @example\n * ```tsx\n * const { mutate: requestElevatedToken } =\n * useRequestExternalAuthElevatedToken();\n * requestElevatedToken({ externalJwt });\n * ```\n */\nexport const useRequestExternalAuthElevatedToken = ({\n mutateParams,\n}: UseRequestExternalAuthElevatedTokenParams = {}) =>\n useBaseMutation<\n RequestExternalAuthElevatedTokenResult,\n RequestExternalAuthElevatedTokenVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n requestExternalAuthElevatedToken(variables, client),\n });\n","import { revokeAllRegisteredDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RevokeAllRegisteredDevicesResult = Awaited<\n ReturnType<typeof revokeAllRegisteredDevices>\n>;\n\nexport type UseRevokeAllRegisteredDevicesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RevokeAllRegisteredDevicesResult,\n void\n >['mutateParams'];\n};\n\n/**\n * Wraps `revokeAllRegisteredDevices` from `@dynamic-labs-sdk/client`. Takes no arguments — call `mutate()` to revoke every device registered to the current user; the resolved `data` is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: revokeAllDevices, isPending } =\n * useRevokeAllRegisteredDevices();\n * <button onClick={() => revokeAllDevices()} disabled={isPending}>\n * Revoke all devices\n * </button>\n * ```\n */\nexport const useRevokeAllRegisteredDevices = ({\n mutateParams,\n}: UseRevokeAllRegisteredDevicesParams = {}) => {\n return useBaseMutation<RevokeAllRegisteredDevicesResult, void>({\n middlewares: [invalidatesQueries('useGetRegisteredDevices')],\n mutateParams,\n mutationFn: ({ client }) => revokeAllRegisteredDevices(client),\n });\n};\n","import { revokeRegisteredDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype RevokeRegisteredDeviceVariables = Parameters<\n typeof revokeRegisteredDevice\n>[0];\ntype RevokeRegisteredDeviceResult = Awaited<\n ReturnType<typeof revokeRegisteredDevice>\n>;\n\nexport type UseRevokeRegisteredDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n RevokeRegisteredDeviceResult,\n RevokeRegisteredDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Revokes a previously registered device.\n *\n * Wraps `revokeRegisteredDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ deviceRegistrationId })` with the id of the device to revoke\n * (e.g. one returned by {@link useGetRegisteredDevices}); the resolved `data`\n * is `void`.\n *\n * @example\n * ```tsx\n * const { mutate: revokeDevice, isPending } = useRevokeRegisteredDevice();\n * <button\n * onClick={() => revokeDevice({ deviceRegistrationId })}\n * disabled={isPending}\n * >\n * Revoke device\n * </button>\n * ```\n */\nexport const useRevokeRegisteredDevice = ({\n mutateParams,\n}: UseRevokeRegisteredDeviceParams = {}) => {\n return useBaseMutation<\n RevokeRegisteredDeviceResult,\n RevokeRegisteredDeviceVariables\n >({\n middlewares: [invalidatesQueries('useGetRegisteredDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n revokeRegisteredDevice(variables, client),\n });\n};\n","import { sendEmailOTP } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SendEmailOTPVariables = Parameters<typeof sendEmailOTP>[0];\ntype SendEmailOTPResult = Awaited<ReturnType<typeof sendEmailOTP>>;\n\nexport type UseSendEmailOTPParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SendEmailOTPResult,\n SendEmailOTPVariables\n >['mutateParams'];\n};\n\n/**\n * Sends a one-time password to an email address.\n *\n * Wraps `sendEmailOTP` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ email })` to dispatch the code; the resolved `data` is the\n * `OTPVerification` payload to hand to {@link useVerifyOTP} once the user\n * enters the code they received.\n *\n * @example\n * ```tsx\n * const { mutate: sendEmailOTP, data: otpVerification, isPending } =\n * useSendEmailOTP();\n * <button\n * onClick={() => sendEmailOTP({ email: 'velma@mystery.inc' })}\n * disabled={isPending}\n * >\n * Email me a code\n * </button>\n * ```\n */\nexport const useSendEmailOTP = ({ mutateParams }: UseSendEmailOTPParams = {}) =>\n useBaseMutation<SendEmailOTPResult, SendEmailOTPVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => sendEmailOTP(variables, client),\n });\n","import { sendSmsOTP } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SendSmsOTPVariables = Parameters<typeof sendSmsOTP>[0];\ntype SendSmsOTPResult = Awaited<ReturnType<typeof sendSmsOTP>>;\n\nexport type UseSendSmsOTPParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SendSmsOTPResult,\n SendSmsOTPVariables\n >['mutateParams'];\n};\n\n/**\n * Sends a one-time password to a phone number via SMS.\n *\n * Wraps `sendSmsOTP` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ isoCountryCode, phoneNumber })` to dispatch the code; the\n * resolved `data` is the `OTPVerification` payload to hand to\n * {@link useVerifyOTP} once the user enters the code they received.\n *\n * @example\n * ```tsx\n * const { mutate: sendSmsOTP, data: otpVerification, isPending } =\n * useSendSmsOTP();\n * <button\n * onClick={() =>\n * sendSmsOTP({ isoCountryCode: 'US', phoneNumber: '5550100' })\n * }\n * disabled={isPending}\n * >\n * Text me a code\n * </button>\n * ```\n */\nexport const useSendSmsOTP = ({ mutateParams }: UseSendSmsOTPParams = {}) =>\n useBaseMutation<SendSmsOTPResult, SendSmsOTPVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => sendSmsOTP(variables, client),\n });\n","import { setDefaultMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype SetDefaultMfaDeviceVariables = Parameters<typeof setDefaultMfaDevice>[0];\ntype SetDefaultMfaDeviceResult = Awaited<\n ReturnType<typeof setDefaultMfaDevice>\n>;\n\nexport type UseSetDefaultMfaDeviceParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SetDefaultMfaDeviceResult,\n SetDefaultMfaDeviceVariables\n >['mutateParams'];\n};\n\n/**\n * Sets the current user's default MFA device.\n *\n * Wraps `setDefaultMfaDevice` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ deviceId })` to designate the device used for MFA challenges.\n *\n * @example\n * ```tsx\n * const { mutate: setDefaultDevice, isPending } = useSetDefaultMfaDevice();\n * <button onClick={() => setDefaultDevice({ deviceId })} disabled={isPending}>\n * Make default\n * </button>\n * ```\n */\nexport const useSetDefaultMfaDevice = ({\n mutateParams,\n}: UseSetDefaultMfaDeviceParams = {}) =>\n useBaseMutation<SetDefaultMfaDeviceResult, SetDefaultMfaDeviceVariables>({\n middlewares: [invalidatesQueries('useGetMfaDevices')],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n setDefaultMfaDevice(variables, client),\n });\n","import { signInWithExternalJwt } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithExternalJwtVariables = Parameters<\n typeof signInWithExternalJwt\n>[0];\ntype SignInWithExternalJwtResult = Awaited<\n ReturnType<typeof signInWithExternalJwt>\n>;\n\nexport type UseSignInWithExternalJwtParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithExternalJwtResult,\n SignInWithExternalJwtVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `signInWithExternalJwt` from `@dynamic-labs-sdk/client`. Call `mutate({ externalJwt })` to authenticate the user with a JWT issued by an external auth provider.\n *\n * @example\n * ```tsx\n * const { mutate: signInWithJwt, isPending } = useSignInWithExternalJwt();\n * signInWithJwt({ externalJwt });\n * ```\n */\nexport const useSignInWithExternalJwt = ({\n mutateParams,\n}: UseSignInWithExternalJwtParams = {}) =>\n useBaseMutation<SignInWithExternalJwtResult, SignInWithExternalJwtVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n signInWithExternalJwt(variables, client),\n });\n","import { signInWithPasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithPasskeyVariables = Parameters<typeof signInWithPasskey>[0];\ntype SignInWithPasskeyResult = Awaited<ReturnType<typeof signInWithPasskey>>;\n\nexport type UseSignInWithPasskeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithPasskeyResult,\n SignInWithPasskeyVariables\n >['mutateParams'];\n};\n\n/**\n * Signs the user in with a previously registered passkey.\n *\n * Wraps `signInWithPasskey` from `@dynamic-labs-sdk/client`. Call `mutate()`\n * to start the WebAuthn authentication; the resolved `data` is the\n * authentication response.\n *\n * @example\n * ```tsx\n * const { mutate: signInWithPasskey, isPending } = useSignInWithPasskey();\n * <button onClick={() => signInWithPasskey()} disabled={isPending}>\n * Sign in with passkey\n * </button>\n * ```\n */\nexport const useSignInWithPasskey = ({\n mutateParams,\n}: UseSignInWithPasskeyParams = {}) =>\n useBaseMutation<SignInWithPasskeyResult, SignInWithPasskeyVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => signInWithPasskey(variables, client),\n });\n","import { signInWithSocialPopUp } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithSocialPopUpVariables = Parameters<\n typeof signInWithSocialPopUp\n>[0];\ntype SignInWithSocialPopUpResult = Awaited<\n ReturnType<typeof signInWithSocialPopUp>\n>;\n\nexport type UseSignInWithSocialPopUpParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithSocialPopUpResult,\n SignInWithSocialPopUpVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `signInWithSocialPopUp` from `@dynamic-labs-sdk/client`. Call `mutate({ provider })` to open the provider's OAuth popup; the resolved `data` is the signed-in `User` (or `null`).\n *\n * @example\n * ```tsx\n * const { mutate: signInWithPopUp, data: user } =\n * useSignInWithSocialPopUp();\n * signInWithPopUp({ provider: 'google' });\n * ```\n */\nexport const useSignInWithSocialPopUp = ({\n mutateParams,\n}: UseSignInWithSocialPopUpParams = {}) =>\n useBaseMutation<SignInWithSocialPopUpResult, SignInWithSocialPopUpVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n signInWithSocialPopUp(variables, client),\n });\n","import { signInWithSocialRedirect } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignInWithSocialRedirectVariables = Parameters<\n typeof signInWithSocialRedirect\n>[0];\ntype SignInWithSocialRedirectResult = Awaited<\n ReturnType<typeof signInWithSocialRedirect>\n>;\n\nexport type UseSignInWithSocialRedirectParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignInWithSocialRedirectResult,\n SignInWithSocialRedirectVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `signInWithSocialRedirect` from `@dynamic-labs-sdk/client`. Call `mutate({ provider, redirectUrl })` to redirect the user to the provider's OAuth page; complete the flow with {@link useCompleteSocialAuthentication}.\n *\n * @example\n * ```tsx\n * const { mutate: signInWithRedirect } = useSignInWithSocialRedirect();\n * signInWithRedirect({ provider: 'google', redirectUrl });\n * ```\n */\nexport const useSignInWithSocialRedirect = ({\n mutateParams,\n}: UseSignInWithSocialRedirectParams = {}) =>\n useBaseMutation<\n SignInWithSocialRedirectResult,\n SignInWithSocialRedirectVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n signInWithSocialRedirect(variables, client),\n });\n","import { signMessage } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SignMessageVariables = Parameters<typeof signMessage>[0];\ntype SignMessageResult = Awaited<ReturnType<typeof signMessage>>;\n\nexport type UseSignMessageParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SignMessageResult,\n SignMessageVariables\n >['mutateParams'];\n};\n\n/**\n * Signs an arbitrary message with a wallet account.\n *\n * Wraps `signMessage` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletAccount, message })` to trigger the signature flow —\n * the wallet provider will prompt the user via its native UI.\n *\n * @example\n * ```tsx\n * const { mutate: signMessage, data, isPending } = useSignMessage();\n * <button\n * onClick={() => signMessage({ message: 'gm', walletAccount })}\n * disabled={isPending}\n * >\n * Sign\n * </button>\n * ```\n */\nexport const useSignMessage = ({ mutateParams }: UseSignMessageParams = {}) =>\n useBaseMutation<SignMessageResult, SignMessageVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => signMessage(variables, client),\n });\n","import { submitFlowTransaction } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SubmitFlowTransactionVariables = Parameters<typeof submitFlowTransaction>[0];\ntype SubmitFlowTransactionResult = Awaited<ReturnType<typeof submitFlowTransaction>>;\n\nexport type UseSubmitFlowTransactionParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SubmitFlowTransactionResult,\n SubmitFlowTransactionVariables\n >['mutateParams'];\n};\n\n/**\n * Prepares, signs, and broadcasts a flow transaction in one call.\n *\n * Wraps `submitFlowTransaction` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ flowId, walletAccount })` to run the full submission flow:\n * prepare signing, sign on-chain, and broadcast.\n *\n * @example\n * ```tsx\n * const { mutate: submitFlowTransaction, isPending } = useSubmitFlowTransaction();\n * <button onClick={() => submitFlowTransaction({ flowId, walletAccount })} disabled={isPending}>\n * Submit flow transaction\n * </button>\n * ```\n */\nexport const useSubmitFlowTransaction = ({\n mutateParams,\n}: UseSubmitFlowTransactionParams = {}) =>\n useBaseMutation<SubmitFlowTransactionResult, SubmitFlowTransactionVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n submitFlowTransaction(variables, client),\n });\n","import { getSwapQuote } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetSwapQuoteResult = Awaited<ReturnType<typeof getSwapQuote>>;\ntype GetSwapQuoteArgs = Parameters<typeof getSwapQuote>[0];\n\nexport type UseGetSwapQuoteParams = GetSwapQuoteArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetSwapQuoteResult>['queryParams'];\n};\n\n/**\n * Wraps `getSwapQuote` from `@dynamic-labs-sdk/client`. Returns a swap quote (including the signing payload consumed by {@link useExecuteSwapTransaction}).\n *\n * @example\n * ```tsx\n * const { data: quote, isLoading } = useGetSwapQuote(params);\n * ```\n */\nexport const useGetSwapQuote = ({ queryParams, ...args }: UseGetSwapQuoteParams) =>\n useBaseQuery<GetSwapQuoteResult>({\n queryFn: (client) => getSwapQuote(args, client),\n queryKey: ['useGetSwapQuote', args],\n queryParams,\n });\n","import { getSwapStatus } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetSwapStatusResult = Awaited<ReturnType<typeof getSwapStatus>>;\ntype GetSwapStatusArgs = Parameters<typeof getSwapStatus>[0];\n\nexport type UseGetSwapStatusParams = GetSwapStatusArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetSwapStatusResult>['queryParams'];\n};\n\n/**\n * Wraps `getSwapStatus` from `@dynamic-labs-sdk/client`. Returns the current status of a previously submitted swap.\n *\n * @example\n * ```tsx\n * const { data: status, isLoading } = useGetSwapStatus(params);\n * ```\n */\nexport const useGetSwapStatus = ({ queryParams, ...args }: UseGetSwapStatusParams) =>\n useBaseQuery<GetSwapStatusResult>({\n queryFn: (client) => getSwapStatus(args, client),\n queryKey: ['useGetSwapStatus', args],\n queryParams,\n });\n","import { switchActiveNetwork } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\nimport { invalidatesQueries } from '../../../../middlewares/invalidatesQueries';\n\ntype SwitchActiveNetworkVariables = Parameters<typeof switchActiveNetwork>[0];\ntype SwitchActiveNetworkResult = Awaited<\n ReturnType<typeof switchActiveNetwork>\n>;\n\nexport type UseSwitchActiveNetworkParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n SwitchActiveNetworkResult,\n SwitchActiveNetworkVariables\n >['mutateParams'];\n};\n\n/**\n * Switches the active network for a wallet account.\n *\n * Wraps `switchActiveNetwork` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ networkId, walletAccount })` to request the switch — the\n * wallet provider may prompt the user to approve adding/changing the\n * chain via its native UI.\n *\n * @example\n * ```tsx\n * const { mutate: switchNetwork, isPending } = useSwitchActiveNetwork();\n * <button\n * onClick={() => switchNetwork({ networkId: 1, walletAccount })}\n * disabled={isPending}\n * >\n * Switch to Ethereum\n * </button>\n * ```\n */\nexport const useSwitchActiveNetwork = ({\n mutateParams,\n}: UseSwitchActiveNetworkParams = {}) =>\n useBaseMutation<SwitchActiveNetworkResult, SwitchActiveNetworkVariables>({\n middlewares: [\n invalidatesQueries('useGetActiveNetworkData', 'useGetActiveNetworkId'),\n ],\n mutateParams,\n mutationFn: ({ client, variables }) =>\n switchActiveNetwork(variables, client),\n });\n","import type {\n GetTokenBalancesParams,\n WalletAccount,\n} from '@dynamic-labs-sdk/client';\nimport { getTokenBalances } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnWalletProviderEvent } from '../../../../middlewares/invalidateOnWalletProviderEvent';\n\ntype GetTokenBalancesResult = Awaited<ReturnType<typeof getTokenBalances>>;\n\n/**\n * `Omit` that distributes across each member of a union instead of collapsing\n * it into a single shape.\n *\n * `GetTokenBalancesParams` carries a `networkId` xor `networkIds` discriminated\n * union. The built-in `Omit` does not distribute over unions, so it merges the\n * branches into one shape that appears to allow both keys at once — which\n * neither branch actually accepts. Distributing preserves the discriminator so\n * callers still can't pass both at the same time.\n */\ntype DistributiveOmit<T, K extends PropertyKey> = T extends unknown\n ? Omit<T, K>\n : never;\n\nexport type UseGetTokenBalancesParams = DistributiveOmit<\n GetTokenBalancesParams,\n 'walletAccount'\n> & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetTokenBalancesResult>['queryParams'];\n /**\n * **Pseudo-required.** The wallet account to fetch balances for.\n * Accepting `undefined` lets callers wire this up before the wallet\n * account has loaded — the hook stays disabled until a real value is\n * supplied.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Returns the ERC-20-style token balances for a wallet account on a single\n * chain.\n *\n * Wraps `getTokenBalances` from `@dynamic-labs-sdk/client`. The hook stays\n * disabled until `walletAccount` is defined.\n *\n * For native-only balance use {@link useGetNativeBalance}; for a multi-chain\n * portfolio use {@link useGetMultichainTokenBalances}.\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetTokenBalances({ walletAccount });\n * ```\n */\nexport const useGetTokenBalances = ({\n walletAccount,\n queryParams,\n ...rest\n}: UseGetTokenBalancesParams) =>\n useBaseQuery<GetTokenBalancesResult>({\n enabled: walletAccount !== undefined,\n middlewares: [\n invalidateOnWalletProviderEvent({\n event: 'networkChanged',\n walletAccount,\n }),\n ],\n queryFn: (client) =>\n getTokenBalances(\n // safe: `enabled` guarantees walletAccount is defined when queryFn runs\n { walletAccount: walletAccount as WalletAccount, ...rest },\n client\n ),\n queryKey: ['useGetTokenBalances', walletAccount?.id, rest],\n queryParams,\n });\n","import type {\n Chain,\n GetTransactionHistoryParams,\n GetTransactionHistoryResponse,\n} from '@dynamic-labs-sdk/client';\nimport { getTransactionHistory } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\nexport type UseGetTransactionHistoryParams = Omit<\n GetTransactionHistoryParams,\n 'address' | 'chain' | 'networkId'\n> & {\n /**\n * **Pseudo-required.** The wallet address to fetch transactions for.\n * Accepting `undefined` lets callers wire this up before the wallet\n * has loaded — the hook stays disabled until all three of `address`,\n * `chain`, and `networkId` are defined.\n */\n address: string | undefined;\n /**\n * **Pseudo-required.** The chain to fetch transactions for. See\n * {@link address} for the gating semantics.\n */\n chain: Chain | undefined;\n /**\n * **Pseudo-required.** The network ID to fetch transactions for. See\n * {@link address} for the gating semantics.\n */\n networkId: number | string | undefined;\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetTransactionHistoryResponse>['queryParams'];\n};\n\n/**\n * Returns the transaction history for a given wallet address, chain, and\n * network.\n *\n * Wraps `getTransactionHistory` from `@dynamic-labs-sdk/client`. The hook\n * stays disabled until `address`, `chain`, and `networkId` are all\n * defined. Pagination is driven by `offset` — callers can swap in a new\n * `offset` to fetch the next page (each unique key produces its own cache\n * entry).\n *\n * @example\n * ```tsx\n * const { data, isLoading, refetch } = useGetTransactionHistory({\n * address,\n * chain,\n * networkId,\n * });\n * ```\n */\nexport const useGetTransactionHistory = ({\n address,\n chain,\n networkId,\n queryParams,\n ...rest\n}: UseGetTransactionHistoryParams) =>\n useBaseQuery<GetTransactionHistoryResponse>({\n enabled:\n address !== undefined && chain !== undefined && networkId !== undefined,\n queryFn: (client) =>\n getTransactionHistory(\n // safe: `enabled` guarantees these are defined when queryFn runs\n {\n address: address as string,\n chain: chain as Chain,\n networkId: networkId as number | string,\n ...rest,\n },\n client\n ),\n queryKey: [\n 'useGetTransactionHistory',\n address,\n chain,\n networkId,\n rest,\n ],\n queryParams,\n });\n","import { transferAmount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype TransferAmountVariables = Parameters<typeof transferAmount>[0];\ntype TransferAmountResult = Awaited<ReturnType<typeof transferAmount>>;\n\nexport type UseTransferAmountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n TransferAmountResult,\n TransferAmountVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `transferAmount` from `@dynamic-labs-sdk/client`. Call `mutate({ walletAccount, amount, recipient, token })` to send tokens; the resolved `data` is `{ transactionHash }`.\n *\n * @example\n * ```tsx\n * const { mutate: transfer, data } = useTransferAmount();\n * transfer({ walletAccount, amount, recipient, token });\n * ```\n */\nexport const useTransferAmount = ({\n mutateParams,\n}: UseTransferAmountParams = {}) =>\n useBaseMutation<TransferAmountResult, TransferAmountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => transferAmount(variables, client),\n });\n","import { transferWalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype TransferWalletAccountVariables = Parameters<\n typeof transferWalletAccount\n>[0];\ntype TransferWalletAccountResult = Awaited<\n ReturnType<typeof transferWalletAccount>\n>;\n\nexport type UseTransferWalletAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n TransferWalletAccountResult,\n TransferWalletAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Wraps `transferWalletAccount` from `@dynamic-labs-sdk/client`. Call `mutate({ walletProviderKey })` to transfer (hand off) a wallet account to the given provider.\n *\n * @example\n * ```tsx\n * const { mutate: transferWalletAccount, isPending } =\n * useTransferWalletAccount();\n * transferWalletAccount({ walletProviderKey });\n * ```\n */\nexport const useTransferWalletAccount = ({\n mutateParams,\n}: UseTransferWalletAccountParams = {}) =>\n useBaseMutation<TransferWalletAccountResult, TransferWalletAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n transferWalletAccount(variables, client),\n });\n","import { unlinkSocialAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UnlinkSocialAccountVariables = Parameters<typeof unlinkSocialAccount>[0];\ntype UnlinkSocialAccountResult = Awaited<\n ReturnType<typeof unlinkSocialAccount>\n>;\n\nexport type UseUnlinkSocialAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n UnlinkSocialAccountResult,\n UnlinkSocialAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Unlinks a social account from the current user.\n *\n * Wraps `unlinkSocialAccount` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ verifiedCredentialId })` with the id of the social credential\n * to remove (e.g. from {@link useGetUserSocialAccounts}); the resolved `data`\n * is the updated `VerifyResponse`.\n *\n * @example\n * ```tsx\n * const { mutate: unlinkSocial, isPending } = useUnlinkSocialAccount();\n * <button\n * onClick={() => unlinkSocial({ verifiedCredentialId })}\n * disabled={isPending}\n * >\n * Disconnect\n * </button>\n * ```\n */\nexport const useUnlinkSocialAccount = ({\n mutateParams,\n}: UseUnlinkSocialAccountParams = {}) =>\n useBaseMutation<UnlinkSocialAccountResult, UnlinkSocialAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n unlinkSocialAccount(variables, client),\n });\n","import { updateUser } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UpdateUserVariables = Parameters<typeof updateUser>[0];\ntype UpdateUserResult = Awaited<ReturnType<typeof updateUser>>;\n\nexport type UseUpdateUserParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n UpdateUserResult,\n UpdateUserVariables\n >['mutateParams'];\n};\n\n/**\n * Updates the current user's profile information.\n *\n * Wraps `updateUser` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ userFields })` to push the new values; if a sensitive field\n * (email, phone) changed the resolved `data` will contain an\n * `OTPVerification` payload the caller needs to follow up on, otherwise\n * `data` is `undefined`.\n *\n * @example\n * ```tsx\n * const { mutate: updateUser, data: otp, isPending } = useUpdateUser();\n * <button\n * onClick={() => updateUser({ userFields: { firstName: 'Velma' } })}\n * disabled={isPending}\n * >\n * Save\n * </button>\n * ```\n */\nexport const useUpdateUser = ({ mutateParams }: UseUpdateUserParams = {}) =>\n useBaseMutation<UpdateUserResult, UpdateUserVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => updateUser(variables, client),\n });\n","import { getUserSocialAccounts } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the current user's linked social accounts.\n *\n * Re-renders when the user changes. Resolves to an empty list while no user is\n * authenticated — the guard is required because the selector runs synchronously\n * and `getUserSocialAccounts` throws (`assertDefined`) when there is no user.\n */\nexport const useGetUserSocialAccounts = () =>\n useBaseState({\n defaultValue: [],\n event: 'userChanged',\n queryKey: ['useGetUserSocialAccounts'],\n selector: (client) => (client.user ? getUserSocialAccounts(client) : []),\n });\n","import { verifyOTP } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype VerifyOTPVariables = Parameters<typeof verifyOTP>[0];\ntype VerifyOTPResult = Awaited<ReturnType<typeof verifyOTP>>;\n\nexport type UseVerifyOTPParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n VerifyOTPResult,\n VerifyOTPVariables\n >['mutateParams'];\n};\n\n/**\n * Verifies a one-time password the user received via email or SMS.\n *\n * Wraps `verifyOTP` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ otpVerification, verificationToken })` with the\n * `OTPVerification` returned by {@link useSendEmailOTP} /\n * {@link useSendSmsOTP} and the code the user entered. A single hook\n * covers both flows — `verifyOTP` resolves sign-in vs. user-update\n * internally based on the current session.\n *\n * @example\n * ```tsx\n * const { mutate: verifyOTP, isPending } = useVerifyOTP();\n * <button\n * onClick={() => verifyOTP({ otpVerification, verificationToken: code })}\n * disabled={isPending}\n * >\n * Verify\n * </button>\n * ```\n */\nexport const useVerifyOTP = ({ mutateParams }: UseVerifyOTPParams = {}) =>\n useBaseMutation<VerifyOTPResult, VerifyOTPVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => verifyOTP(variables, client),\n });\n","import { verifyWalletAccount } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype VerifyWalletAccountVariables = Parameters<typeof verifyWalletAccount>[0];\ntype VerifyWalletAccountResult = Awaited<ReturnType<typeof verifyWalletAccount>>;\n\nexport type UseVerifyWalletAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: UseBaseMutationParams<\n VerifyWalletAccountResult,\n VerifyWalletAccountVariables\n >['mutateParams'];\n};\n\n/**\n * Verifies ownership of a wallet account and adds it to the user's profile.\n *\n * Wraps `verifyWalletAccount` from `@dynamic-labs-sdk/client`. Call\n * `mutate({ walletAccount })` to trigger the verification flow — the\n * wallet provider will prompt the user to sign a proof-of-ownership\n * message. On success, `data` resolves to the verified\n * {@link WalletAccount}.\n *\n * Throws `WalletAccountAlreadyVerifiedError` if the wallet is already\n * verified, or `WalletAlreadyLinkedToAnotherUserError` if the wallet is\n * linked to a different user — both surface through `error`.\n *\n * @example\n * ```tsx\n * const { mutate: verifyWalletAccount, isPending } = useVerifyWalletAccount();\n * <button\n * onClick={() => verifyWalletAccount({ walletAccount })}\n * disabled={isPending}\n * >\n * Verify\n * </button>\n * ```\n */\nexport const useVerifyWalletAccount = ({\n mutateParams,\n}: UseVerifyWalletAccountParams = {}) =>\n useBaseMutation<VerifyWalletAccountResult, VerifyWalletAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n verifyWalletAccount(variables, client),\n });\n","import { getWalletAccounts } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns all wallet accounts connected to the current user.\n *\n * Re-renders when wallet accounts change (connect, disconnect, verify).\n */\nexport const useGetWalletAccounts = () =>\n useBaseState({\n defaultValue: [],\n // wallet accounts derive from both unverifiedWalletAccounts state and\n // user.verifiedCredentials, so we need to refresh on either change\n event: { userChanged: true, walletAccountsChanged: true },\n queryKey: ['useGetWalletAccounts'],\n selector: (client) => getWalletAccounts(client),\n });\n","import { getWalletConnectCatalog } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetWalletConnectCatalogResult = Awaited<\n ReturnType<typeof getWalletConnectCatalog>\n>;\n\nexport type UseGetWalletConnectCatalogParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<GetWalletConnectCatalogResult>['queryParams'];\n};\n\n/**\n * Returns the WalletConnect catalog (groups and wallets) used for displaying\n * wallet information and building mobile wallet deeplinks.\n *\n * Wraps `getWalletConnectCatalog` from `@dynamic-labs-sdk/client`.\n *\n * @example\n * ```tsx\n * const { data: catalog, isLoading } = useGetWalletConnectCatalog();\n * ```\n */\nexport const useGetWalletConnectCatalog = ({\n queryParams,\n}: UseGetWalletConnectCatalogParams = {}) =>\n useBaseQuery<GetWalletConnectCatalogResult>({\n queryFn: (client) => getWalletConnectCatalog(client),\n queryKey: ['useGetWalletConnectCatalog'],\n queryParams,\n });\n","import { getWalletConnectCatalogWalletByWalletProviderKey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype WalletConnectCatalogWalletByWalletProviderKeyResult = Awaited<ReturnType<typeof getWalletConnectCatalogWalletByWalletProviderKey>>;\ntype WalletConnectCatalogWalletByWalletProviderKeyArgs = Parameters<typeof getWalletConnectCatalogWalletByWalletProviderKey>[0];\n\nexport type UseGetWalletConnectCatalogWalletByWalletProviderKeyParams = WalletConnectCatalogWalletByWalletProviderKeyArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: UseBaseQueryParams<WalletConnectCatalogWalletByWalletProviderKeyResult>['queryParams'];\n};\n\n/**\n * Returns the WalletConnect catalog wallet for the given wallet provider key.\n *\n * Wraps `getWalletConnectCatalogWalletByWalletProviderKey` from `@dynamic-labs-sdk/client`.\n */\nexport const useGetWalletConnectCatalogWalletByWalletProviderKey = ({ queryParams, ...args }: UseGetWalletConnectCatalogWalletByWalletProviderKeyParams) =>\n useBaseQuery<WalletConnectCatalogWalletByWalletProviderKeyResult>({\n queryFn: (client) => getWalletConnectCatalogWalletByWalletProviderKey(args, client),\n queryKey: ['useGetWalletConnectCatalogWalletByWalletProviderKey', args],\n queryParams,\n });\n","import { getWalletOptionsCatalogue } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnEvent } from '../../../../middlewares/invalidateOnEvent';\n\ntype GetWalletOptionsCatalogueResult = Awaited<\n ReturnType<typeof getWalletOptionsCatalogue>\n>;\ntype GetWalletOptionsCatalogueArgs = NonNullable<\n Parameters<typeof getWalletOptionsCatalogue>[0]\n>;\n\n/**\n * Freshness window for the catalogue, in milliseconds.\n *\n * The catalogue is derived from two near-static sources: the in-memory wallet\n * provider registry and the wallet-book document served from a CDN. With\n * react-query's default `staleTime: 0` the data is stale the instant it\n * arrives, so every new mount/observer (e.g. reopening the wallet list)\n * refetches the CDN document even though nothing changed — needlessly\n * hammering the CDN. A 1h window serves cached data to remounts; the registry\n * event middlewares below still force an immediate refetch on any real change,\n * so reactivity is preserved.\n */\nconst CATALOGUE_STALE_TIME_MS = 3_600_000;\n\nexport type UseGetWalletOptionsCatalogueParams = GetWalletOptionsCatalogueArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.). Spread last, so overrides win over the\n * hook's CDN-aware defaults.\n */\n queryParams?: UseBaseQueryParams<GetWalletOptionsCatalogueResult>['queryParams'];\n};\n\n/**\n * Wraps `getWalletOptionsCatalogue` from `@dynamic-labs-sdk/client`. Returns the catalogue of wallet options the project supports.\n *\n * Automatically refetches when the wallet provider registry changes: EIP-6963\n * wallets fill the registry asynchronously after mount, and the registry emits\n * `walletProviderChanged` (on register / priority update) and\n * `walletProviderUnregistered` (on removal). Wiring both keeps the catalogue in\n * sync without consumers pairing the hook with a manual listener.\n *\n * @example\n * ```tsx\n * const { data: catalogue, isLoading } = useGetWalletOptionsCatalogue();\n * ```\n */\nexport const useGetWalletOptionsCatalogue = ({\n queryParams,\n ...args\n}: UseGetWalletOptionsCatalogueParams = {}) =>\n useBaseQuery<GetWalletOptionsCatalogueResult>({\n middlewares: [\n invalidateOnEvent({ event: 'walletProviderChanged' }),\n invalidateOnEvent({ event: 'walletProviderUnregistered' }),\n ],\n queryFn: (client) => getWalletOptionsCatalogue(args, client),\n queryKey: ['useGetWalletOptionsCatalogue', args],\n queryParams: {\n // `getWalletOptionsCatalogue` already retries the wallet-book CDN\n // internally and falls back to a cached copy, so react-query's default 3\n // retries would only stack redundant requests on a failing network.\n retry: false,\n staleTime: CATALOGUE_STALE_TIME_MS,\n // Consumer overrides win over the above CDN-aware defaults.\n ...queryParams,\n },\n });\n","import { getWalletProviderDataByKey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\nimport { invalidateOnEvent } from '../../../../middlewares/invalidateOnEvent';\n\ntype GetWalletProviderDataByKeyResult = Awaited<\n ReturnType<typeof getWalletProviderDataByKey>\n>;\ntype GetWalletProviderDataByKeyArgs = Parameters<\n typeof getWalletProviderDataByKey\n>[0];\n\nexport type UseGetWalletProviderDataByKeyParams =\n GetWalletProviderDataByKeyArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, enabled, etc.).\n */\n queryParams?: NonNullable<\n UseBaseQueryParams<GetWalletProviderDataByKeyResult>['queryParams']\n >;\n };\n\n/**\n * Wraps `getWalletProviderDataByKey` from `@dynamic-labs-sdk/client`. Returns\n * the display/connection data for a single wallet provider, by key.\n *\n * The underlying data is read from the in-memory wallet provider registry,\n * which EIP-6963 wallets fill asynchronously after mount. The registry emits\n * `walletProviderChanged` on register / priority update, so wiring it keeps the\n * provider data in sync without consumers pairing the hook with a manual\n * `useOnEvent` + `refetch` listener.\n *\n * `walletProviderUnregistered` is intentionally not wired here: this hook reads\n * a single key, and once that key is removed there is no replacement data to\n * fetch — refetching would only make `getWalletProviderDataByKey` throw\n * `NoWalletProviderFoundError`. Skipping it keeps the last-known data instead of\n * forcing the query into an error state.\n *\n * @example\n * ```tsx\n * const { data: walletProviderData } = useGetWalletProviderDataByKey({\n * walletProviderKey,\n * });\n * ```\n */\nexport const useGetWalletProviderDataByKey = ({\n queryParams,\n ...args\n}: UseGetWalletProviderDataByKeyParams) =>\n useBaseQuery<GetWalletProviderDataByKeyResult>({\n middlewares: [invalidateOnEvent({ event: 'walletProviderChanged' })],\n // `getWalletProviderDataByKey` resolves synchronously, but `useBaseQuery`\n // expects a promise-returning `queryFn`, so wrap the result.\n queryFn: (client) =>\n Promise.resolve(getWalletProviderDataByKey(args, client)),\n queryKey: ['useGetWalletProviderDataByKey', args],\n queryParams,\n });\n","import { isDeviceRegistrationRequired } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user still needs to register this device.\n *\n * Re-renders when the user changes (login, logout, completing device\n * registration). Resolves to `false` while no user is authenticated.\n */\nexport const useIsDeviceRegistrationRequired = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsDeviceRegistrationRequired'],\n selector: (client) =>\n client.user ? isDeviceRegistrationRequired(client.user) : false,\n });\n","import { isUserMissingMfaAuth } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user still needs to complete an MFA challenge.\n *\n * Re-renders when the user changes (login, logout, completing the MFA\n * challenge). Resolves to `false` while no user is authenticated.\n */\nexport const useIsUserMissingMfaAuth = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsUserMissingMfaAuth'],\n selector: (client) => (client.user ? isUserMissingMfaAuth(client) : false),\n });\n","import { isPendingRecoveryCodesAcknowledgment } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user still needs to acknowledge their MFA\n * recovery codes.\n *\n * Re-renders when the user changes (login, logout, acknowledging the recovery\n * codes). Resolves to `false` while no user is authenticated.\n */\nexport const useIsPendingRecoveryCodesAcknowledgment = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsPendingRecoveryCodesAcknowledgment'],\n selector: (client) =>\n client.user ? isPendingRecoveryCodesAcknowledgment(client) : false,\n });\n","import { isUserOnboardingComplete } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns whether the current user has completed every onboarding requirement\n * (KYC fields, MFA, recovery codes acknowledgment, device registration).\n *\n * Re-renders when the user changes (login, logout, completing any onboarding\n * step). Resolves to `false` while no user is authenticated.\n */\nexport const useIsUserOnboardingComplete = () =>\n useBaseState({\n defaultValue: false,\n event: 'userChanged',\n queryKey: ['useIsUserOnboardingComplete'],\n selector: (client) =>\n client.user ? isUserOnboardingComplete(client) : false,\n });\n","import { backupWaasKeySharesToGoogleDrive } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype BackupWaasKeySharesToGoogleDriveVariables = Parameters<typeof backupWaasKeySharesToGoogleDrive>[0];\ntype BackupWaasKeySharesToGoogleDriveResult = Awaited<ReturnType<typeof backupWaasKeySharesToGoogleDrive>>;\n\n/**\n * Parameters for {@link useBackupWaasKeySharesToGoogleDrive}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseBackupWaasKeySharesToGoogleDriveParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useBackupWaasKeySharesToGoogleDrive\n * @see backupWaasKeySharesToGoogleDrive\n */\nexport type UseBackupWaasKeySharesToGoogleDriveParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<BackupWaasKeySharesToGoogleDriveResult, BackupWaasKeySharesToGoogleDriveVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `backupWaasKeySharesToGoogleDrive` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * back up an embedded wallet's key shares to the user's Google Drive.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useBackupWaasKeySharesToGoogleDrive();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `backupWaasKeySharesToGoogleDrive` and whose `data` is its resolved value.\n * @see backupWaasKeySharesToGoogleDrive\n * @see UseBackupWaasKeySharesToGoogleDriveParams\n */\nexport const useBackupWaasKeySharesToGoogleDrive = ({ mutateParams }: UseBackupWaasKeySharesToGoogleDriveParams = {}) =>\n useBaseMutation<BackupWaasKeySharesToGoogleDriveResult, BackupWaasKeySharesToGoogleDriveVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => backupWaasKeySharesToGoogleDrive(variables, client),\n });\n","import { createWaasWalletAccounts } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateWaasWalletAccountsVariables = Parameters<typeof createWaasWalletAccounts>[0];\ntype CreateWaasWalletAccountsResult = Awaited<ReturnType<typeof createWaasWalletAccounts>>;\n\n/**\n * Parameters for {@link useCreateWaasWalletAccounts}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseCreateWaasWalletAccountsParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useCreateWaasWalletAccounts\n * @see createWaasWalletAccounts\n */\nexport type UseCreateWaasWalletAccountsParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<CreateWaasWalletAccountsResult, CreateWaasWalletAccountsVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `createWaasWalletAccounts` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * create embedded wallet accounts for the signed-in user.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useCreateWaasWalletAccounts();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `createWaasWalletAccounts` and whose `data` is its resolved value.\n * @see createWaasWalletAccounts\n * @see UseCreateWaasWalletAccountsParams\n */\nexport const useCreateWaasWalletAccounts = ({ mutateParams }: UseCreateWaasWalletAccountsParams = {}) =>\n useBaseMutation<CreateWaasWalletAccountsResult, CreateWaasWalletAccountsVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => createWaasWalletAccounts(variables, client),\n });\n","import { createWalletForBusinessAccount } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype CreateWalletForBusinessAccountVariables = Parameters<typeof createWalletForBusinessAccount>[0];\ntype CreateWalletForBusinessAccountResult = Awaited<ReturnType<typeof createWalletForBusinessAccount>>;\n\n/**\n * Parameters for {@link useCreateWalletForBusinessAccount}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseCreateWalletForBusinessAccountParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useCreateWalletForBusinessAccount\n * @see createWalletForBusinessAccount\n */\nexport type UseCreateWalletForBusinessAccountParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<CreateWalletForBusinessAccountResult, CreateWalletForBusinessAccountVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `createWalletForBusinessAccount` from `@dynamic-labs-sdk/client/waas`. Call\n * `mutate(variables)` to create a WaaS wallet owned directly by a business account in one step.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useCreateWalletForBusinessAccount();\n * <button\n * onClick={() => mutate({ businessAccountId: 'ba-1', chain: 'EVM' })}\n * disabled={isPending}\n * >\n * Create wallet\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `createWalletForBusinessAccount` and whose `data` is its resolved value.\n * @see createWalletForBusinessAccount\n * @see UseCreateWalletForBusinessAccountParams\n */\nexport const useCreateWalletForBusinessAccount = ({ mutateParams }: UseCreateWalletForBusinessAccountParams = {}) =>\n useBaseMutation<CreateWalletForBusinessAccountResult, CreateWalletForBusinessAccountVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => createWalletForBusinessAccount(variables, client),\n });\n","import { delegateWaasKeyShares } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype DelegateWaasKeySharesVariables = Parameters<typeof delegateWaasKeyShares>[0];\ntype DelegateWaasKeySharesResult = Awaited<ReturnType<typeof delegateWaasKeyShares>>;\n\n/**\n * Parameters for {@link useDelegateWaasKeyShares}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseDelegateWaasKeySharesParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useDelegateWaasKeyShares\n * @see delegateWaasKeyShares\n */\nexport type UseDelegateWaasKeySharesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<DelegateWaasKeySharesResult, DelegateWaasKeySharesVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `delegateWaasKeyShares` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * delegate signing access for an embedded wallet to your server.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useDelegateWaasKeyShares();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `delegateWaasKeyShares` and whose `data` is its resolved value.\n * @see delegateWaasKeyShares\n * @see UseDelegateWaasKeySharesParams\n */\nexport const useDelegateWaasKeyShares = ({ mutateParams }: UseDelegateWaasKeySharesParams = {}) =>\n useBaseMutation<DelegateWaasKeySharesResult, DelegateWaasKeySharesVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => delegateWaasKeyShares(variables, client),\n });\n","import { exportWaasClientKeyshares } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ExportWaasClientKeysharesVariables = Parameters<typeof exportWaasClientKeyshares>[0];\ntype ExportWaasClientKeysharesResult = Awaited<ReturnType<typeof exportWaasClientKeyshares>>;\n\n/**\n * Parameters for {@link useExportWaasClientKeyshares}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseExportWaasClientKeysharesParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useExportWaasClientKeyshares\n * @see exportWaasClientKeyshares\n */\nexport type UseExportWaasClientKeysharesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<ExportWaasClientKeysharesResult, ExportWaasClientKeysharesVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `exportWaasClientKeyshares` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * export an embedded wallet's client key shares.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useExportWaasClientKeyshares();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `exportWaasClientKeyshares` and whose `data` is its resolved value.\n * @see exportWaasClientKeyshares\n * @see UseExportWaasClientKeysharesParams\n */\nexport const useExportWaasClientKeyshares = ({ mutateParams }: UseExportWaasClientKeysharesParams = {}) =>\n useBaseMutation<ExportWaasClientKeysharesResult, ExportWaasClientKeysharesVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => exportWaasClientKeyshares(variables, client),\n });\n","import { exportWaasPrivateKey } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ExportWaasPrivateKeyVariables = Parameters<typeof exportWaasPrivateKey>[0];\ntype ExportWaasPrivateKeyResult = Awaited<ReturnType<typeof exportWaasPrivateKey>>;\n\n/**\n * Parameters for {@link useExportWaasPrivateKey}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseExportWaasPrivateKeyParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useExportWaasPrivateKey\n * @see exportWaasPrivateKey\n */\nexport type UseExportWaasPrivateKeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<ExportWaasPrivateKeyResult, ExportWaasPrivateKeyVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `exportWaasPrivateKey` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * export an embedded wallet's private key.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useExportWaasPrivateKey();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `exportWaasPrivateKey` and whose `data` is its resolved value.\n * @see exportWaasPrivateKey\n * @see UseExportWaasPrivateKeyParams\n */\nexport const useExportWaasPrivateKey = ({ mutateParams }: UseExportWaasPrivateKeyParams = {}) =>\n useBaseMutation<ExportWaasPrivateKeyResult, ExportWaasPrivateKeyVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => exportWaasPrivateKey(variables, client),\n });\n","import type { WalletAccount } from '@dynamic-labs-sdk/client';\nimport { getWalletRecoveryState } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\n\ntype GetWalletRecoveryStateResult = Awaited<\n ReturnType<typeof getWalletRecoveryState>\n>;\n\n/**\n * Parameters for {@link useGetWalletRecoveryState}: the embedded wallet account to read recovery\n * state for, plus optional react-query options.\n *\n * @example\n * ```tsx\n * const params: UseGetWalletRecoveryStateParams = { walletAccount };\n * ```\n * @see useGetWalletRecoveryState\n * @see getWalletRecoveryState\n */\nexport type UseGetWalletRecoveryStateParams = {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\n */\n queryParams?: NonNullable<UseBaseQueryParams<GetWalletRecoveryStateResult>['queryParams']>;\n /**\n * **Pseudo-required.** The embedded wallet account to read recovery state\n * for. Accepting `undefined` lets callers wire this up before the wallet\n * account has loaded — the hook stays disabled until a real value is\n * supplied.\n */\n walletAccount: WalletAccount | undefined;\n};\n\n/**\n * Returns the recovery state of an embedded wallet account — whether the user\n * still needs to set a password, back up their key shares, etc.\n *\n * Wraps `getWalletRecoveryState` from `@dynamic-labs-sdk/client/waas`. The hook\n * stays disabled until `walletAccount` is defined.\n *\n * @example\n * ```tsx\n * const { data, isLoading } = useGetWalletRecoveryState({ walletAccount });\n * ```\n *\n * @returns A react-query result whose `data` is the wallet account's recovery state; it stays disabled until `walletAccount` is defined.\n * @see getWalletRecoveryState\n * @see UseGetWalletRecoveryStateParams\n */\nexport const useGetWalletRecoveryState = ({\n queryParams,\n walletAccount,\n}: UseGetWalletRecoveryStateParams) =>\n useBaseQuery<GetWalletRecoveryStateResult>({\n enabled: walletAccount !== undefined,\n queryFn: (client) =>\n getWalletRecoveryState(\n // safe: `enabled` guarantees walletAccount is defined when queryFn runs\n { walletAccount: walletAccount as WalletAccount },\n client,\n ),\n queryKey: ['useGetWalletRecoveryState', walletAccount?.id],\n queryParams,\n });\n","import { importWaasPrivateKey } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype ImportWaasPrivateKeyVariables = Parameters<typeof importWaasPrivateKey>[0];\ntype ImportWaasPrivateKeyResult = Awaited<ReturnType<typeof importWaasPrivateKey>>;\n\n/**\n * Parameters for {@link useImportWaasPrivateKey}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseImportWaasPrivateKeyParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useImportWaasPrivateKey\n * @see importWaasPrivateKey\n */\nexport type UseImportWaasPrivateKeyParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<ImportWaasPrivateKeyResult, ImportWaasPrivateKeyVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `importWaasPrivateKey` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * import a private key into a new embedded wallet account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useImportWaasPrivateKey();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `importWaasPrivateKey` and whose `data` is its resolved value.\n * @see importWaasPrivateKey\n * @see UseImportWaasPrivateKeyParams\n */\nexport const useImportWaasPrivateKey = ({ mutateParams }: UseImportWaasPrivateKeyParams = {}) =>\n useBaseMutation<ImportWaasPrivateKeyResult, ImportWaasPrivateKeyVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => importWaasPrivateKey(variables, client),\n });\n","import { migrateFromFireblocks } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype MigrateFromFireblocksVariables = Parameters<typeof migrateFromFireblocks>[0];\ntype MigrateFromFireblocksResult = Awaited<ReturnType<typeof migrateFromFireblocks>>;\n\n/**\n * Parameters for {@link useMigrateFromFireblocks}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseMigrateFromFireblocksParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useMigrateFromFireblocks\n * @see migrateFromFireblocks\n */\nexport type UseMigrateFromFireblocksParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<MigrateFromFireblocksResult, MigrateFromFireblocksVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `migrateFromFireblocks` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * migrate a user's legacy Fireblocks wallet to an embedded wallet.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useMigrateFromFireblocks();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `migrateFromFireblocks` and whose `data` is its resolved value.\n * @see migrateFromFireblocks\n * @see UseMigrateFromFireblocksParams\n */\nexport const useMigrateFromFireblocks = ({ mutateParams }: UseMigrateFromFireblocksParams = {}) =>\n useBaseMutation<MigrateFromFireblocksResult, MigrateFromFireblocksVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => migrateFromFireblocks(variables, client),\n });\n","import { refreshWaasWalletAccountShares } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RefreshWaasWalletAccountSharesVariables = Parameters<typeof refreshWaasWalletAccountShares>[0];\ntype RefreshWaasWalletAccountSharesResult = Awaited<ReturnType<typeof refreshWaasWalletAccountShares>>;\n\n/**\n * Parameters for {@link useRefreshWaasWalletAccountShares}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseRefreshWaasWalletAccountSharesParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useRefreshWaasWalletAccountShares\n * @see refreshWaasWalletAccountShares\n */\nexport type UseRefreshWaasWalletAccountSharesParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<RefreshWaasWalletAccountSharesResult, RefreshWaasWalletAccountSharesVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `refreshWaasWalletAccountShares` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * refresh an embedded wallet account's key shares.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useRefreshWaasWalletAccountShares();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `refreshWaasWalletAccountShares` and whose `data` is its resolved value.\n * @see refreshWaasWalletAccountShares\n * @see UseRefreshWaasWalletAccountSharesParams\n */\nexport const useRefreshWaasWalletAccountShares = ({ mutateParams }: UseRefreshWaasWalletAccountSharesParams = {}) =>\n useBaseMutation<RefreshWaasWalletAccountSharesResult, RefreshWaasWalletAccountSharesVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => refreshWaasWalletAccountShares(variables, client),\n });\n","import { revokeWaasDelegation } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype RevokeWaasDelegationVariables = Parameters<typeof revokeWaasDelegation>[0];\ntype RevokeWaasDelegationResult = Awaited<ReturnType<typeof revokeWaasDelegation>>;\n\n/**\n * Parameters for {@link useRevokeWaasDelegation}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseRevokeWaasDelegationParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useRevokeWaasDelegation\n * @see revokeWaasDelegation\n */\nexport type UseRevokeWaasDelegationParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<RevokeWaasDelegationResult, RevokeWaasDelegationVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `revokeWaasDelegation` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * revoke an embedded wallet's previously granted delegated signing access.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useRevokeWaasDelegation();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `revokeWaasDelegation` and whose `data` is its resolved value.\n * @see revokeWaasDelegation\n * @see UseRevokeWaasDelegationParams\n */\nexport const useRevokeWaasDelegation = ({ mutateParams }: UseRevokeWaasDelegationParams = {}) =>\n useBaseMutation<RevokeWaasDelegationResult, RevokeWaasDelegationVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => revokeWaasDelegation(variables, client),\n });\n","import { setWaasWalletAccountPassword } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype SetWaasWalletAccountPasswordVariables = Parameters<typeof setWaasWalletAccountPassword>[0];\ntype SetWaasWalletAccountPasswordResult = Awaited<ReturnType<typeof setWaasWalletAccountPassword>>;\n\n/**\n * Parameters for {@link useSetWaasWalletAccountPassword}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseSetWaasWalletAccountPasswordParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useSetWaasWalletAccountPassword\n * @see setWaasWalletAccountPassword\n */\nexport type UseSetWaasWalletAccountPasswordParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<SetWaasWalletAccountPasswordResult, SetWaasWalletAccountPasswordVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `setWaasWalletAccountPassword` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * set a password on an embedded wallet account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useSetWaasWalletAccountPassword();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `setWaasWalletAccountPassword` and whose `data` is its resolved value.\n * @see setWaasWalletAccountPassword\n * @see UseSetWaasWalletAccountPasswordParams\n */\nexport const useSetWaasWalletAccountPassword = ({ mutateParams }: UseSetWaasWalletAccountPasswordParams = {}) =>\n useBaseMutation<SetWaasWalletAccountPasswordResult, SetWaasWalletAccountPasswordVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => setWaasWalletAccountPassword(variables, client),\n });\n","import { unlockWallet } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UnlockWalletVariables = Parameters<typeof unlockWallet>[0];\ntype UnlockWalletResult = Awaited<ReturnType<typeof unlockWallet>>;\n\n/**\n * Parameters for {@link useUnlockWallet}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseUnlockWalletParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useUnlockWallet\n * @see unlockWallet\n */\nexport type UseUnlockWalletParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<UnlockWalletResult, UnlockWalletVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `unlockWallet` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * unlock an embedded wallet account with its password.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useUnlockWallet();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `unlockWallet` and whose `data` is its resolved value.\n * @see unlockWallet\n * @see UseUnlockWalletParams\n */\nexport const useUnlockWallet = ({ mutateParams }: UseUnlockWalletParams = {}) =>\n useBaseMutation<UnlockWalletResult, UnlockWalletVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => unlockWallet(variables, client),\n });\n","import { updateWaasPassword } from '@dynamic-labs-sdk/client/waas';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\n\ntype UpdateWaasPasswordVariables = Parameters<typeof updateWaasPassword>[0];\ntype UpdateWaasPasswordResult = Awaited<ReturnType<typeof updateWaasPassword>>;\n\n/**\n * Parameters for {@link useUpdateWaasPassword}: an optional override of the underlying\n * react-query mutation options.\n *\n * @example\n * ```tsx\n * const params: UseUpdateWaasPasswordParams = {\n * mutateParams: { onSuccess: () => {} },\n * };\n * ```\n * @see useUpdateWaasPassword\n * @see updateWaasPassword\n */\nexport type UseUpdateWaasPasswordParams = {\n /**\n * Optional override of any react-query `UseMutationOptions`\n * (`onSuccess`, `onError`, `retry`, etc.).\n */\n mutateParams?: NonNullable<UseBaseMutationParams<UpdateWaasPasswordResult, UpdateWaasPasswordVariables>['mutateParams']>;\n};\n\n/**\n * Wraps `updateWaasPassword` from `@dynamic-labs-sdk/client/waas`. Call `mutate(variables)` to\n * update the password protecting an embedded wallet account.\n *\n * @example\n * ```tsx\n * const { mutate, isPending } = useUpdateWaasPassword();\n * <button onClick={() => mutate(variables)} disabled={isPending}>\n * Continue\n * </button>\n * ```\n *\n * @returns A react-query mutation whose `mutate`/`mutateAsync` calls `updateWaasPassword` and whose `data` is its resolved value.\n * @see updateWaasPassword\n * @see UseUpdateWaasPasswordParams\n */\nexport const useUpdateWaasPassword = ({ mutateParams }: UseUpdateWaasPasswordParams = {}) =>\n useBaseMutation<UpdateWaasPasswordResult, UpdateWaasPasswordVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => updateWaasPassword(variables, client),\n });\n","import type { DynamicInitStatus } from '@dynamic-labs-sdk/client';\n\nimport { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Narrowed result surface for `useInitStatus`.\n *\n * This is an **exceptional** state hook: unlike every other hook built on\n * `useBaseState` (which returns the full react-query result), it deliberately\n * exposes only the init status (`data`) and the init error. The usual\n * `isLoading` / `isFetching` / `isPlaceholderData` / `refetch` surface is\n * meaningless here because `data` already mirrors the client's own init\n * lifecycle (`'uninitialized' → 'in-progress' → 'finished' | 'failed'`), so\n * surfacing it would only invite callers to gate on the wrong signal.\n */\nexport type UseInitStatusResult = {\n /**\n * Current client initialization status. Reactive — updates whenever the\n * client emits `initStatusChanged`.\n *\n * `'uninitialized' | 'in-progress' | 'finished' | 'failed'`. A `'failed'`\n * value is the authoritative signal that initialization failed.\n */\n data: DynamicInitStatus | undefined;\n /**\n * The error that caused initialization to fail, or `null` when init has not\n * failed. When `data === 'failed'` this holds *why* it failed (unless a\n * non-`Error` value was thrown, in which case it is `null`).\n */\n error: Error | null;\n /**\n * `true` iff initialization failed with an `Error` (i.e. `error` is\n * non-null).\n */\n isError: boolean;\n};\n\n/**\n * Internal reactive shape read from client state: the init status plus the\n * error that caused a failure, kept together so a single subscription drives\n * both fields.\n */\ntype InitState = {\n error: Error | null;\n status: DynamicInitStatus;\n};\n\n/**\n * Returns the current initialization status of the Dynamic client, plus the\n * error that caused initialization to fail (when it did).\n *\n * Exposes only `data` (the reactive init status), `error` and `isError` —\n * see {@link UseInitStatusResult}. Possible `data` values: `'uninitialized'`,\n * `'in-progress'`, `'finished'`, `'failed'`. When `data === 'failed'`, `error`\n * carries the failure reason.\n *\n * @example\n * ```tsx\n * const { data: status, error } = useInitStatus();\n * if (status === 'failed') return <InitErrorScreen message={error?.message} />;\n * if (status !== 'finished') return <LoadingScreen />;\n * return <App />;\n * ```\n *\n * @notInstrumented\n */\nexport const useInitStatus = (): UseInitStatusResult => {\n const { data } = useBaseState<InitState>({\n defaultValue: { error: null, status: 'uninitialized' },\n event: 'initStatusChanged',\n queryKey: ['useInitStatus'],\n selector: (client) => ({\n error: client.initError,\n status: client.initStatus,\n }),\n // exception: this hook exposes init state *during* init, so it must not\n // gate on waitForClientInitialized.\n skipWaitForInit: true,\n });\n\n const error = data?.error ?? null;\n\n return { data: data?.status, error, isError: error !== null };\n};\n","import { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the session expiration date, or null if no active session.\n *\n * Re-renders when the user changes (which includes session updates).\n */\nexport const useSessionExpiresAt = () =>\n useBaseState({\n defaultValue: null,\n event: 'userChanged',\n queryKey: ['useSessionExpiresAt'],\n selector: (client) => client.sessionExpiresAt,\n });\n","import { useBaseState } from '../../../../foundation/useBaseState';\n\n/**\n * Returns the current authenticated user, or null if not authenticated.\n *\n * Re-renders when the user changes (login, logout, profile update).\n */\nexport const useUser = () =>\n useBaseState({\n defaultValue: null,\n event: 'userChanged',\n queryKey: ['useUser'],\n selector: (client) => client.user,\n });\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport {\n useAcknowledgeRecoveryCodes,\n type UseAcknowledgeRecoveryCodesParams,\n} from '../hooks/wrappers/functions/useAcknowledgeRecoveryCodes';\nexport {\n useGetActiveNetworkData,\n type UseGetActiveNetworkDataParams,\n} from '../hooks/wrappers/functions/useGetActiveNetworkData';\nexport {\n useGetActiveNetworkId,\n type UseGetActiveNetworkIdParams,\n} from '../hooks/wrappers/functions/useGetActiveNetworkId';\nexport {\n useAddBusinessAccountMember,\n type UseAddBusinessAccountMemberParams,\n} from '../hooks/wrappers/functions/useAddBusinessAccountMember';\nexport {\n useAddBusinessAccountSigner,\n type UseAddBusinessAccountSignerParams,\n} from '../hooks/wrappers/functions/useAddBusinessAccountSigner';\nexport {\n useAddNetwork,\n type UseAddNetworkParams,\n} from '../hooks/wrappers/functions/useAddNetwork';\nexport {\n useAddWalletToBusinessAccount,\n type UseAddWalletToBusinessAccountParams,\n} from '../hooks/wrappers/functions/useAddWalletToBusinessAccount';\nexport {\n useAssertWalletAccountSigningAvailability,\n type UseAssertWalletAccountSigningAvailabilityParams,\n} from '../hooks/wrappers/functions/useAssertWalletAccountSigningAvailability';\nexport {\n useAttachFlowSource,\n type UseAttachFlowSourceParams,\n} from '../hooks/wrappers/functions/useAttachFlowSource';\nexport {\n useAuthenticateMfaRecoveryCode,\n type UseAuthenticateMfaRecoveryCodeParams,\n} from '../hooks/wrappers/functions/useAuthenticateMfaRecoveryCode';\nexport {\n useAuthenticatePasskeyMFA,\n type UseAuthenticatePasskeyMFAParams,\n} from '../hooks/wrappers/functions/useAuthenticatePasskeyMFA';\nexport {\n useAuthenticateTotpMfaDevice,\n type UseAuthenticateTotpMfaDeviceParams,\n} from '../hooks/wrappers/functions/useAuthenticateTotpMfaDevice';\nexport { useGetAvailableWalletProvidersData } from '../hooks/wrappers/functions/useGetAvailableWalletProvidersData';\nexport {\n useGetBalanceForAddress,\n type UseGetBalanceForAddressParams,\n} from '../hooks/wrappers/functions/useGetBalanceForAddress';\nexport {\n useGetBusinessAccount,\n type UseGetBusinessAccountParams,\n} from '../hooks/wrappers/functions/useGetBusinessAccount';\nexport {\n useBroadcastFlow,\n type UseBroadcastFlowParams,\n} from '../hooks/wrappers/functions/useBroadcastFlow';\nexport {\n useCancelFlow,\n type UseCancelFlowParams,\n} from '../hooks/wrappers/functions/useCancelFlow';\nexport {\n useCheckStepUpAuth,\n type UseCheckStepUpAuthParams,\n} from '../hooks/wrappers/functions/useCheckStepUpAuth';\nexport {\n useGetCoinbaseBuyUrl,\n type UseGetCoinbaseBuyUrlParams,\n} from '../hooks/wrappers/functions/useGetCoinbaseBuyUrl';\nexport {\n useAddCoinbaseOnrampOrderEventListener,\n type UseAddCoinbaseOnrampOrderEventListenerParams,\n} from '../hooks/wrappers/functions/useAddCoinbaseOnrampOrderEventListener';\nexport {\n useCompleteDeviceRegistration,\n type UseCompleteDeviceRegistrationParams,\n} from '../hooks/wrappers/functions/useCompleteDeviceRegistration';\nexport {\n useCompleteSocialRedirect,\n type UseCompleteSocialRedirectParams,\n} from '../hooks/wrappers/functions/useCompleteSocialRedirect';\nexport {\n useDetectSocialRedirectUrl,\n type UseDetectSocialRedirectUrlParams,\n} from '../hooks/wrappers/functions/useDetectSocialRedirectUrl';\nexport {\n useConfirmTransaction,\n type UseConfirmTransactionParams,\n} from '../hooks/wrappers/functions/useConfirmTransaction';\nexport {\n useConnectAndVerifyWithWalletProvider,\n type UseConnectAndVerifyWithWalletProviderParams,\n} from '../hooks/wrappers/functions/useConnectAndVerifyWithWalletProvider';\nexport {\n useGetConnectedAddresses,\n type UseGetConnectedAddressesParams,\n} from '../hooks/wrappers/functions/useGetConnectedAddresses';\nexport {\n useConnectWithWalletProvider,\n type UseConnectWithWalletProviderParams,\n} from '../hooks/wrappers/functions/useConnectWithWalletProvider';\nexport {\n useCreateBusinessAccount,\n type UseCreateBusinessAccountParams,\n} from '../hooks/wrappers/functions/useCreateBusinessAccount';\nexport {\n useCreateCoinbaseOnrampOrder,\n type UseCreateCoinbaseOnrampOrderParams,\n} from '../hooks/wrappers/functions/useCreateCoinbaseOnrampOrder';\nexport {\n useCreateCryptoDotComPayment,\n type UseCreateCryptoDotComPaymentParams,\n} from '../hooks/wrappers/functions/useCreateCryptoDotComPayment';\nexport {\n useCreateNewMfaRecoveryCodes,\n type UseCreateNewMfaRecoveryCodesParams,\n} from '../hooks/wrappers/functions/useCreateNewMfaRecoveryCodes';\nexport {\n useDeleteMfaDevice,\n type UseDeleteMfaDeviceParams,\n} from '../hooks/wrappers/functions/useDeleteMfaDevice';\nexport {\n useDeletePasskey,\n type UseDeletePasskeyParams,\n} from '../hooks/wrappers/functions/useDeletePasskey';\nexport {\n useDeleteUser,\n type UseDeleteUserParams,\n} from '../hooks/wrappers/functions/useDeleteUser';\nexport { useOnEvent } from '../hooks/wrappers/functions/useOnEvent';\nexport {\n useExecuteSwapTransaction,\n type UseExecuteSwapTransactionParams,\n} from '../hooks/wrappers/functions/useExecuteSwapTransaction';\nexport {\n useGetFlow,\n type UseGetFlowParams,\n} from '../hooks/wrappers/functions/useGetFlow';\nexport {\n useGetFlowQuote,\n type UseGetFlowQuoteParams,\n} from '../hooks/wrappers/functions/useGetFlowQuote';\nexport {\n usePrepareFlowSigning,\n type UsePrepareFlowSigningParams,\n} from '../hooks/wrappers/functions/usePrepareFlowSigning';\nexport {\n useGetGoogleDriveBackupReadiness,\n type UseGetGoogleDriveBackupReadinessParams,\n} from '../hooks/wrappers/functions/useGetGoogleDriveBackupReadiness';\nexport {\n useIsMfaRequiredForAction,\n type UseIsMfaRequiredForActionParams,\n} from '../hooks/wrappers/functions/useIsMfaRequiredForAction';\nexport {\n useGetKrakenAccounts,\n type UseGetKrakenAccountsParams,\n} from '../hooks/wrappers/functions/useGetKrakenAccounts';\nexport {\n useCreateKrakenExchangeTransfer,\n type UseCreateKrakenExchangeTransferParams,\n} from '../hooks/wrappers/functions/useCreateKrakenExchangeTransfer';\nexport {\n useGetKrakenWhitelistedAddresses,\n type UseGetKrakenWhitelistedAddressesParams,\n} from '../hooks/wrappers/functions/useGetKrakenWhitelistedAddresses';\nexport {\n useListBusinessAccounts,\n type UseListBusinessAccountsParams,\n} from '../hooks/wrappers/functions/useListBusinessAccounts';\nexport { useLogout } from '../hooks/wrappers/functions/useLogout';\nexport {\n useMergeUserAccounts,\n type UseMergeUserAccountsParams,\n} from '../hooks/wrappers/functions/useMergeUserAccounts';\nexport {\n useGetMfaDevices,\n type UseGetMfaDevicesParams,\n} from '../hooks/wrappers/functions/useGetMfaDevices';\nexport {\n useGetMfaMethods,\n type UseGetMfaMethodsParams,\n} from '../hooks/wrappers/functions/useGetMfaMethods';\nexport {\n useGetMfaRecoveryCodes,\n type UseGetMfaRecoveryCodesParams,\n} from '../hooks/wrappers/functions/useGetMfaRecoveryCodes';\nexport {\n useGetMoonPayCurrencies,\n type UseGetMoonPayCurrenciesParams,\n} from '../hooks/wrappers/functions/useGetMoonPayCurrencies';\nexport {\n useGetMoonPayUrl,\n type UseGetMoonPayUrlParams,\n} from '../hooks/wrappers/functions/useGetMoonPayUrl';\nexport {\n useGetMultichainTokenBalances,\n type UseGetMultichainTokenBalancesParams,\n} from '../hooks/wrappers/functions/useGetMultichainTokenBalances';\nexport { useGetNativeBalance } from '../hooks/wrappers/functions/useGetNativeBalance';\nexport { useOnceEvent } from '../hooks/wrappers/functions/useOnceEvent';\nexport {\n useGetPasskeys,\n type UseGetPasskeysParams,\n} from '../hooks/wrappers/functions/useGetPasskeys';\nexport {\n useProveWalletAccountOwnership,\n type UseProveWalletAccountOwnershipParams,\n} from '../hooks/wrappers/functions/useProveWalletAccountOwnership';\nexport {\n useRefreshAuth,\n type UseRefreshAuthParams,\n} from '../hooks/wrappers/functions/useRefreshAuth';\nexport {\n useGetRegisteredDevices,\n type UseGetRegisteredDevicesParams,\n} from '../hooks/wrappers/functions/useGetRegisteredDevices';\nexport {\n useRegisterPasskey,\n type UseRegisterPasskeyParams,\n} from '../hooks/wrappers/functions/useRegisterPasskey';\nexport {\n useRegisterTotpMfaDevice,\n type UseRegisterTotpMfaDeviceParams,\n} from '../hooks/wrappers/functions/useRegisterTotpMfaDevice';\nexport {\n useRemoveBusinessAccountMember,\n type UseRemoveBusinessAccountMemberParams,\n} from '../hooks/wrappers/functions/useRemoveBusinessAccountMember';\nexport {\n useRemoveBusinessAccountSigner,\n type UseRemoveBusinessAccountSignerParams,\n} from '../hooks/wrappers/functions/useRemoveBusinessAccountSigner';\nexport {\n useRemoveWalletAccount,\n type UseRemoveWalletAccountParams,\n} from '../hooks/wrappers/functions/useRemoveWalletAccount';\nexport {\n useRequestExternalAuthElevatedToken,\n type UseRequestExternalAuthElevatedTokenParams,\n} from '../hooks/wrappers/functions/useRequestExternalAuthElevatedToken';\nexport {\n useRevokeAllRegisteredDevices,\n type UseRevokeAllRegisteredDevicesParams,\n} from '../hooks/wrappers/functions/useRevokeAllRegisteredDevices';\nexport {\n useRevokeRegisteredDevice,\n type UseRevokeRegisteredDeviceParams,\n} from '../hooks/wrappers/functions/useRevokeRegisteredDevice';\nexport {\n useSendEmailOTP,\n type UseSendEmailOTPParams,\n} from '../hooks/wrappers/functions/useSendEmailOTP';\nexport {\n useSendSmsOTP,\n type UseSendSmsOTPParams,\n} from '../hooks/wrappers/functions/useSendSmsOTP';\nexport {\n useSetDefaultMfaDevice,\n type UseSetDefaultMfaDeviceParams,\n} from '../hooks/wrappers/functions/useSetDefaultMfaDevice';\nexport {\n useSignInWithExternalJwt,\n type UseSignInWithExternalJwtParams,\n} from '../hooks/wrappers/functions/useSignInWithExternalJwt';\nexport {\n useSignInWithPasskey,\n type UseSignInWithPasskeyParams,\n} from '../hooks/wrappers/functions/useSignInWithPasskey';\nexport {\n useSignInWithSocialPopUp,\n type UseSignInWithSocialPopUpParams,\n} from '../hooks/wrappers/functions/useSignInWithSocialPopUp';\nexport {\n useSignInWithSocialRedirect,\n type UseSignInWithSocialRedirectParams,\n} from '../hooks/wrappers/functions/useSignInWithSocialRedirect';\nexport {\n useSignMessage,\n type UseSignMessageParams,\n} from '../hooks/wrappers/functions/useSignMessage';\nexport {\n useSubmitFlowTransaction,\n type UseSubmitFlowTransactionParams,\n} from '../hooks/wrappers/functions/useSubmitFlowTransaction';\nexport {\n useGetSwapQuote,\n type UseGetSwapQuoteParams,\n} from '../hooks/wrappers/functions/useGetSwapQuote';\nexport {\n useGetSwapStatus,\n type UseGetSwapStatusParams,\n} from '../hooks/wrappers/functions/useGetSwapStatus';\nexport {\n useSwitchActiveNetwork,\n type UseSwitchActiveNetworkParams,\n} from '../hooks/wrappers/functions/useSwitchActiveNetwork';\nexport {\n useGetTokenBalances,\n type UseGetTokenBalancesParams,\n} from '../hooks/wrappers/functions/useGetTokenBalances';\nexport {\n useGetTransactionHistory,\n type UseGetTransactionHistoryParams,\n} from '../hooks/wrappers/functions/useGetTransactionHistory';\nexport {\n useTransferAmount,\n type UseTransferAmountParams,\n} from '../hooks/wrappers/functions/useTransferAmount';\nexport {\n useTransferWalletAccount,\n type UseTransferWalletAccountParams,\n} from '../hooks/wrappers/functions/useTransferWalletAccount';\nexport {\n useUnlinkSocialAccount,\n type UseUnlinkSocialAccountParams,\n} from '../hooks/wrappers/functions/useUnlinkSocialAccount';\nexport {\n useUpdateUser,\n type UseUpdateUserParams,\n} from '../hooks/wrappers/functions/useUpdateUser';\nexport { useGetUserSocialAccounts } from '../hooks/wrappers/functions/useGetUserSocialAccounts';\nexport {\n useVerifyOTP,\n type UseVerifyOTPParams,\n} from '../hooks/wrappers/functions/useVerifyOTP';\nexport {\n useVerifyWalletAccount,\n type UseVerifyWalletAccountParams,\n} from '../hooks/wrappers/functions/useVerifyWalletAccount';\nexport { useGetWalletAccounts } from '../hooks/wrappers/functions/useGetWalletAccounts';\nexport {\n useGetWalletConnectCatalog,\n type UseGetWalletConnectCatalogParams,\n} from '../hooks/wrappers/functions/useGetWalletConnectCatalog';\nexport {\n useGetWalletConnectCatalogWalletByWalletProviderKey,\n type UseGetWalletConnectCatalogWalletByWalletProviderKeyParams,\n} from '../hooks/wrappers/functions/useGetWalletConnectCatalogWalletByWalletProviderKey';\nexport {\n useGetWalletOptionsCatalogue,\n type UseGetWalletOptionsCatalogueParams,\n} from '../hooks/wrappers/functions/useGetWalletOptionsCatalogue';\nexport {\n useGetWalletProviderDataByKey,\n type UseGetWalletProviderDataByKeyParams,\n} from '../hooks/wrappers/functions/useGetWalletProviderDataByKey';\nexport { useOnWalletProviderEvent } from '../hooks/wrappers/functions/useOnWalletProviderEvent';\nexport { useIsDeviceRegistrationRequired } from '../hooks/wrappers/functions/useIsDeviceRegistrationRequired';\nexport { useIsUserMissingMfaAuth } from '../hooks/wrappers/functions/useIsUserMissingMfaAuth';\nexport { useIsPendingRecoveryCodesAcknowledgment } from '../hooks/wrappers/functions/useIsPendingRecoveryCodesAcknowledgment';\nexport { useIsUserOnboardingComplete } from '../hooks/wrappers/functions/useIsUserOnboardingComplete';\nexport {\n useBackupWaasKeySharesToGoogleDrive,\n type UseBackupWaasKeySharesToGoogleDriveParams,\n} from '../hooks/wrappers/functions/useBackupWaasKeySharesToGoogleDrive';\nexport {\n useCreateWaasWalletAccounts,\n type UseCreateWaasWalletAccountsParams,\n} from '../hooks/wrappers/functions/useCreateWaasWalletAccounts';\nexport {\n useCreateWalletForBusinessAccount,\n type UseCreateWalletForBusinessAccountParams,\n} from '../hooks/wrappers/functions/useCreateWalletForBusinessAccount';\nexport {\n useDelegateWaasKeyShares,\n type UseDelegateWaasKeySharesParams,\n} from '../hooks/wrappers/functions/useDelegateWaasKeyShares';\nexport {\n useExportWaasClientKeyshares,\n type UseExportWaasClientKeysharesParams,\n} from '../hooks/wrappers/functions/useExportWaasClientKeyshares';\nexport {\n useExportWaasPrivateKey,\n type UseExportWaasPrivateKeyParams,\n} from '../hooks/wrappers/functions/useExportWaasPrivateKey';\nexport {\n useGetWalletRecoveryState,\n type UseGetWalletRecoveryStateParams,\n} from '../hooks/wrappers/functions/useGetWalletRecoveryState';\nexport {\n useImportWaasPrivateKey,\n type UseImportWaasPrivateKeyParams,\n} from '../hooks/wrappers/functions/useImportWaasPrivateKey';\nexport {\n useMigrateFromFireblocks,\n type UseMigrateFromFireblocksParams,\n} from '../hooks/wrappers/functions/useMigrateFromFireblocks';\nexport {\n useRefreshWaasWalletAccountShares,\n type UseRefreshWaasWalletAccountSharesParams,\n} from '../hooks/wrappers/functions/useRefreshWaasWalletAccountShares';\nexport {\n useRevokeWaasDelegation,\n type UseRevokeWaasDelegationParams,\n} from '../hooks/wrappers/functions/useRevokeWaasDelegation';\nexport {\n useSetWaasWalletAccountPassword,\n type UseSetWaasWalletAccountPasswordParams,\n} from '../hooks/wrappers/functions/useSetWaasWalletAccountPassword';\nexport {\n useUnlockWallet,\n type UseUnlockWalletParams,\n} from '../hooks/wrappers/functions/useUnlockWallet';\nexport {\n useUpdateWaasPassword,\n type UseUpdateWaasPasswordParams,\n} from '../hooks/wrappers/functions/useUpdateWaasPassword';\nexport {\n useInitStatus,\n type UseInitStatusResult,\n} from '../hooks/wrappers/state/useInitStatus';\nexport { useSessionExpiresAt } from '../hooks/wrappers/state/useSessionExpiresAt';\nexport { useUser } from '../hooks/wrappers/state/useUser';\nexport { DynamicProvider, useDynamicClient } from '../modules/DynamicContext';\n"],"mappings":"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"}
|