@dynamic-labs-sdk/react-hooks 1.16.1 → 1.17.0
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/foundation/useBaseQuery/useBaseQuery.d.ts +11 -8
- package/dist/foundation/useBaseQuery/useBaseQuery.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useAuthenticateTotpMfaDevice/useAuthenticateTotpMfaDevice.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useCompleteDeviceRegistration/useCompleteDeviceRegistration.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useDeleteMfaDevice/useDeleteMfaDevice.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useRegisterTotpMfaDevice/useRegisterTotpMfaDevice.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useRevokeAllRegisteredDevices/useRevokeAllRegisteredDevices.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useRevokeRegisteredDevice/useRevokeRegisteredDevice.d.ts.map +1 -1
- package/dist/hooks/wrappers/functions/useSetDefaultMfaDevice/useSetDefaultMfaDevice.d.ts.map +1 -1
- package/dist/index.cjs +77 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +77 -19
- package/dist/index.esm.js.map +1 -1
- package/dist/middlewares/invalidatesQueries/index.d.ts +2 -0
- package/dist/middlewares/invalidatesQueries/index.d.ts.map +1 -0
- package/dist/middlewares/invalidatesQueries/invalidatesQueries.d.ts +19 -0
- package/dist/middlewares/invalidatesQueries/invalidatesQueries.d.ts.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +4 -4
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["BaseError","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/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/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/useConfirmTransaction/useConfirmTransaction.ts","../src/hooks/wrappers/functions/useConnectAndVerifyWithWalletProvider/useConnectAndVerifyWithWalletProvider.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/useOnEvent/useOnEvent.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/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/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/useOnWalletProviderEvent/useOnWalletProviderEvent.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 * A query middleware is a named hook that decides whether the query may run.\n *\n * It owns its own reactive subscriptions (e.g. `requiresUser` reads\n * `useUser()`) and returns `true` to allow the query or `false` to keep it\n * disabled. `useBaseQuery` ANDs the results of every middleware it receives\n * and has zero knowledge of what any individual middleware does — to add a\n * gating condition you write a new `QueryMiddleware`, never edit this file.\n */\nexport type QueryMiddleware = () => boolean;\n\n/**\n * Stable empty default for the `middlewares` param so the common (ungated)\n * case never 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 gating hooks the query must satisfy. Each is invoked on every\n * render and the query only runs when they all return `true`. The gating\n * behavior lives in the 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 gating hooks like `requiresUser`) and\n * the query only runs when every one returns `true`.\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 // Each middleware is a hook, so every one must run unconditionally on each\n // render: `.map` (not a short-circuiting `.every`) guarantees the same\n // number and order of hook calls no matter what any middleware returns.\n // The `middlewares` array a hook passes is a stable module-level constant.\n const middlewaresAllow = middlewares\n .map((useMiddleware) => useMiddleware())\n .every(Boolean);\n\n const fullQueryKey = useMemo(\n () => [...QUERY_KEY_PREFIX, ...queryKey],\n [queryKey]\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 && middlewaresAllow && queryParams?.enabled !== false,\n });\n};\n","import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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 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';\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 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 { authenticateTotpMfaDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\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 useBaseMutation<\n AuthenticateTotpMfaDeviceResult,\n AuthenticateTotpMfaDeviceVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n authenticateTotpMfaDevice(variables, client),\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 a wallet provider changes (e.g. network switch).\n */\nexport const useGetAvailableWalletProvidersData = () =>\n useBaseState({\n defaultValue: [],\n event: 'walletProviderChanged',\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';\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 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 { 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 { getConnectedAddresses } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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`.\n */\nexport const useGetConnectedAddresses = ({ queryParams, ...args }: UseGetConnectedAddressesParams) =>\n useBaseQuery<ConnectedAddressesResult>({\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';\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 useBaseMutation<DeleteMfaDeviceResult, DeleteMfaDeviceVariables>({\n mutateParams,\n mutationFn: ({ client, variables }) => deleteMfaDevice(variables, client),\n });\n","import { deletePasskey } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\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 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 { 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 { 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 { getGoogleDriveBackupReadiness } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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 * @example\n * ```tsx\n * const { data: readiness, isLoading } = useGetGoogleDriveBackupReadiness();\n * ```\n */\nexport const useGetGoogleDriveBackupReadiness = ({\n queryParams,\n}: UseGetGoogleDriveBackupReadinessParams = {}) =>\n useBaseQuery<GetGoogleDriveBackupReadinessResult>({\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';\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 * @example\n * ```tsx\n * const { data: accounts, isLoading } = useGetKrakenAccounts();\n * ```\n */\nexport const useGetKrakenAccounts = ({\n queryParams,\n ...args\n}: UseGetKrakenAccountsParams = {}) =>\n useBaseQuery<GetKrakenAccountsResult>({\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';\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 * @example\n * ```tsx\n * const { data: addresses, isLoading } = useGetKrakenWhitelistedAddresses();\n * ```\n */\nexport const useGetKrakenWhitelistedAddresses = ({\n queryParams,\n}: UseGetKrakenWhitelistedAddressesParams = {}) =>\n useBaseQuery<GetKrakenWhitelistedAddressesResult>({\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 { getMfaDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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 * @example\n * ```tsx\n * const { data: mfaDevices, isLoading, refetch } = useGetMfaDevices();\n * ```\n */\nexport const useGetMfaDevices = ({ queryParams }: UseGetMfaDevicesParams = {}) =>\n useBaseQuery<GetMfaDevicesResult>({\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';\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 * @example\n * ```tsx\n * const { data: mfaMethods, isLoading, refetch } = useGetMfaMethods();\n * ```\n */\nexport const useGetMfaMethods = ({ queryParams }: UseGetMfaMethodsParams = {}) =>\n useBaseQuery<GetMfaMethodsResult>({\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';\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 * @example\n * ```tsx\n * const { data: recoveryCodes, isLoading, refetch } = useGetMfaRecoveryCodes();\n * ```\n */\nexport const useGetMfaRecoveryCodes = ({\n queryParams,\n}: UseGetMfaRecoveryCodesParams = {}) =>\n useBaseQuery<GetMfaRecoveryCodesResult>({\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';\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 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';\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 * @example\n * ```tsx\n * const { data: passkeys, isLoading, refetch } = useGetPasskeys();\n * ```\n */\nexport const useGetPasskeys = ({ queryParams }: UseGetPasskeysParams = {}) =>\n useBaseQuery<GetPasskeysResult>({\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';\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 * @example\n * ```tsx\n * const { data: devices, isLoading, refetch } = useGetRegisteredDevices();\n * ```\n */\nexport const useGetRegisteredDevices = ({\n queryParams,\n}: UseGetRegisteredDevicesParams = {}) =>\n useBaseQuery<GetRegisteredDevicesResult>({\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';\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 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';\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 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';\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 useBaseMutation<RevokeAllRegisteredDevicesResult, void>({\n mutateParams,\n mutationFn: ({ client }) => revokeAllRegisteredDevices(client),\n });\n","import { revokeRegisteredDevice } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseMutationParams } from '../../../../foundation/useBaseMutation';\nimport { useBaseMutation } from '../../../../foundation/useBaseMutation';\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 useBaseMutation<\n RevokeRegisteredDeviceResult,\n RevokeRegisteredDeviceVariables\n >({\n mutateParams,\n mutationFn: ({ client, variables }) =>\n revokeRegisteredDevice(variables, client),\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';\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 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';\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 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';\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 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 | 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,\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.\n */\nexport const useGetUserSocialAccounts = () =>\n useBaseState({\n defaultValue: [],\n event: 'userChanged',\n queryKey: ['useGetUserSocialAccounts'],\n selector: (client) => 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';\n\ntype GetWalletOptionsCatalogueResult = Awaited<\n ReturnType<typeof getWalletOptionsCatalogue>\n>;\ntype GetWalletOptionsCatalogueArgs = NonNullable<\n Parameters<typeof getWalletOptionsCatalogue>[0]\n>;\n\nexport type UseGetWalletOptionsCatalogueParams = GetWalletOptionsCatalogueArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\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 * @example\n * ```tsx\n * const { data: catalogue, isLoading } = useGetWalletOptionsCatalogue();\n * ```\n */\nexport const useGetWalletOptionsCatalogue = ({\n queryParams,\n ...args\n}: UseGetWalletOptionsCatalogueParams = {}) =>\n useBaseQuery<GetWalletOptionsCatalogueResult>({\n queryFn: (client) => getWalletOptionsCatalogue(args, client),\n queryKey: ['useGetWalletOptionsCatalogue', args],\n queryParams,\n });\n","import {\n type OnWalletProviderEventParams,\n type WalletProviderEvents,\n onWalletProviderEvent,\n} from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\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.\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}: OnWalletProviderEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(callback);\n\n callbackRef.current = callback;\n\n useEffect(\n () =>\n 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 [event, walletProviderKey, client]\n );\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 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 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 { useOnWalletProviderEvent } from '../hooks/wrappers/functions/useOnWalletProviderEvent';\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.cjs","names":["BaseError","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/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/useConfirmTransaction/useConfirmTransaction.ts","../src/hooks/wrappers/functions/useConnectAndVerifyWithWalletProvider/useConnectAndVerifyWithWalletProvider.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/useOnEvent/useOnEvent.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/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/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/useOnWalletProviderEvent/useOnWalletProviderEvent.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 * A query middleware is a named hook, invoked on every render, that decides\n * whether the query may run.\n *\n * It owns its own reactive subscriptions (e.g. reading `useUser()` to gate on\n * auth, or subscribing to a client event) and returns `true` to allow the\n * query or `false` to keep it disabled. `useBaseQuery` ANDs the results of\n * every middleware it receives and has zero knowledge of what any individual\n * middleware does — to add a gating condition you write a new\n * `QueryMiddleware`, never edit this file.\n */\nexport type QueryMiddleware = () => boolean;\n\n/**\n * Stable empty default for the `middlewares` param so the common (ungated)\n * case never 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 gating hooks the query must satisfy. Each is invoked on every\n * render and the query only runs when they all return `true`. The gating\n * behavior lives in the 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 gate the query and/or run\n * reactive subscriptions) and the query only runs when every one returns\n * `true`.\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 // Each middleware is a hook, so every one must run unconditionally on each\n // render: `.map` (not a short-circuiting `.every`) guarantees the same\n // number and order of hook calls no matter what any middleware returns.\n // The `middlewares` array a hook passes is a stable module-level constant.\n const middlewaresAllow = middlewares\n .map((useMiddleware) => useMiddleware())\n .every(Boolean);\n\n const fullQueryKey = useMemo(\n () => [...QUERY_KEY_PREFIX, ...queryKey],\n [queryKey]\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 && middlewaresAllow && queryParams?.enabled !== false,\n });\n};\n","import { getActiveNetworkData } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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 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';\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 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 a wallet provider changes (e.g. network switch).\n */\nexport const useGetAvailableWalletProvidersData = () =>\n useBaseState({\n defaultValue: [],\n event: 'walletProviderChanged',\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 { 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 { getConnectedAddresses } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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`.\n */\nexport const useGetConnectedAddresses = ({ queryParams, ...args }: UseGetConnectedAddressesParams) =>\n useBaseQuery<ConnectedAddressesResult>({\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';\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 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 { 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 { 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 { getGoogleDriveBackupReadiness } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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 * @example\n * ```tsx\n * const { data: readiness, isLoading } = useGetGoogleDriveBackupReadiness();\n * ```\n */\nexport const useGetGoogleDriveBackupReadiness = ({\n queryParams,\n}: UseGetGoogleDriveBackupReadinessParams = {}) =>\n useBaseQuery<GetGoogleDriveBackupReadinessResult>({\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';\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 * @example\n * ```tsx\n * const { data: accounts, isLoading } = useGetKrakenAccounts();\n * ```\n */\nexport const useGetKrakenAccounts = ({\n queryParams,\n ...args\n}: UseGetKrakenAccountsParams = {}) =>\n useBaseQuery<GetKrakenAccountsResult>({\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';\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 * @example\n * ```tsx\n * const { data: addresses, isLoading } = useGetKrakenWhitelistedAddresses();\n * ```\n */\nexport const useGetKrakenWhitelistedAddresses = ({\n queryParams,\n}: UseGetKrakenWhitelistedAddressesParams = {}) =>\n useBaseQuery<GetKrakenWhitelistedAddressesResult>({\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 { getMfaDevices } from '@dynamic-labs-sdk/client';\n\nimport type { UseBaseQueryParams } from '../../../../foundation/useBaseQuery';\nimport { useBaseQuery } from '../../../../foundation/useBaseQuery';\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 * @example\n * ```tsx\n * const { data: mfaDevices, isLoading, refetch } = useGetMfaDevices();\n * ```\n */\nexport const useGetMfaDevices = ({ queryParams }: UseGetMfaDevicesParams = {}) =>\n useBaseQuery<GetMfaDevicesResult>({\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';\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 * @example\n * ```tsx\n * const { data: mfaMethods, isLoading, refetch } = useGetMfaMethods();\n * ```\n */\nexport const useGetMfaMethods = ({ queryParams }: UseGetMfaMethodsParams = {}) =>\n useBaseQuery<GetMfaMethodsResult>({\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';\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 * @example\n * ```tsx\n * const { data: recoveryCodes, isLoading, refetch } = useGetMfaRecoveryCodes();\n * ```\n */\nexport const useGetMfaRecoveryCodes = ({\n queryParams,\n}: UseGetMfaRecoveryCodesParams = {}) =>\n useBaseQuery<GetMfaRecoveryCodesResult>({\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';\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 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';\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 * @example\n * ```tsx\n * const { data: passkeys, isLoading, refetch } = useGetPasskeys();\n * ```\n */\nexport const useGetPasskeys = ({ queryParams }: UseGetPasskeysParams = {}) =>\n useBaseQuery<GetPasskeysResult>({\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';\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 * @example\n * ```tsx\n * const { data: devices, isLoading, refetch } = useGetRegisteredDevices();\n * ```\n */\nexport const useGetRegisteredDevices = ({\n queryParams,\n}: UseGetRegisteredDevicesParams = {}) =>\n useBaseQuery<GetRegisteredDevicesResult>({\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';\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 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';\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 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';\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 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 | 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,\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.\n */\nexport const useGetUserSocialAccounts = () =>\n useBaseState({\n defaultValue: [],\n event: 'userChanged',\n queryKey: ['useGetUserSocialAccounts'],\n selector: (client) => 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';\n\ntype GetWalletOptionsCatalogueResult = Awaited<\n ReturnType<typeof getWalletOptionsCatalogue>\n>;\ntype GetWalletOptionsCatalogueArgs = NonNullable<\n Parameters<typeof getWalletOptionsCatalogue>[0]\n>;\n\nexport type UseGetWalletOptionsCatalogueParams = GetWalletOptionsCatalogueArgs & {\n /**\n * Optional override of any react-query `UseQueryOptions` (retry,\n * staleTime, refetchInterval, etc.).\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 * @example\n * ```tsx\n * const { data: catalogue, isLoading } = useGetWalletOptionsCatalogue();\n * ```\n */\nexport const useGetWalletOptionsCatalogue = ({\n queryParams,\n ...args\n}: UseGetWalletOptionsCatalogueParams = {}) =>\n useBaseQuery<GetWalletOptionsCatalogueResult>({\n queryFn: (client) => getWalletOptionsCatalogue(args, client),\n queryKey: ['useGetWalletOptionsCatalogue', args],\n queryParams,\n });\n","import {\n type OnWalletProviderEventParams,\n type WalletProviderEvents,\n onWalletProviderEvent,\n} from '@dynamic-labs-sdk/client';\nimport { useEffect, useRef } from 'react';\n\nimport { useDynamicClient } from '../../../../modules/DynamicContext';\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.\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}: OnWalletProviderEventParams<E>) => {\n const client = useDynamicClient();\n const callbackRef = useRef(callback);\n\n callbackRef.current = callback;\n\n useEffect(\n () =>\n 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 [event, walletProviderKey, client]\n );\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 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 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 { useOnWalletProviderEvent } from '../hooks/wrappers/functions/useOnWalletProviderEvent';\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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"}
|