@account-kit/privy-integration 4.73.1-alpha.9 → 4.75.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.
Files changed (105) hide show
  1. package/README.md +61 -21
  2. package/dist/esm/Provider.d.ts +71 -4
  3. package/dist/esm/Provider.js +109 -4
  4. package/dist/esm/Provider.js.map +1 -1
  5. package/dist/esm/hooks/internal/useEmbeddedWallet.d.ts +4 -3
  6. package/dist/esm/hooks/internal/useEmbeddedWallet.js +13 -5
  7. package/dist/esm/hooks/internal/useEmbeddedWallet.js.map +1 -1
  8. package/dist/esm/hooks/useAlchemyClient.d.ts +10 -5
  9. package/dist/esm/hooks/useAlchemyClient.js +46 -25
  10. package/dist/esm/hooks/useAlchemyClient.js.map +1 -1
  11. package/dist/esm/hooks/useAlchemyPrepareSwap.js +3 -6
  12. package/dist/esm/hooks/useAlchemyPrepareSwap.js.map +1 -1
  13. package/dist/esm/hooks/useAlchemySendTransaction.js +12 -10
  14. package/dist/esm/hooks/useAlchemySendTransaction.js.map +1 -1
  15. package/dist/esm/hooks/useAlchemySolanaTransaction.js +1 -1
  16. package/dist/esm/hooks/useAlchemySolanaTransaction.js.map +1 -1
  17. package/dist/esm/hooks/useAlchemySubmitSwap.js +1 -1
  18. package/dist/esm/hooks/useAlchemySubmitSwap.js.map +1 -1
  19. package/dist/esm/types.d.ts +6 -0
  20. package/dist/esm/types.js.map +1 -1
  21. package/dist/esm/version.d.ts +1 -1
  22. package/dist/esm/version.js +1 -1
  23. package/dist/esm/version.js.map +1 -1
  24. package/dist/types/Provider.d.ts +71 -4
  25. package/dist/types/Provider.d.ts.map +1 -1
  26. package/dist/types/hooks/internal/useEmbeddedWallet.d.ts +4 -3
  27. package/dist/types/hooks/internal/useEmbeddedWallet.d.ts.map +1 -1
  28. package/dist/types/hooks/useAlchemyClient.d.ts +10 -5
  29. package/dist/types/hooks/useAlchemyClient.d.ts.map +1 -1
  30. package/dist/types/hooks/useAlchemyPrepareSwap.d.ts.map +1 -1
  31. package/dist/types/hooks/useAlchemySendTransaction.d.ts.map +1 -1
  32. package/dist/types/types.d.ts +6 -0
  33. package/dist/types/types.d.ts.map +1 -1
  34. package/dist/types/version.d.ts +1 -1
  35. package/dist/types/version.d.ts.map +1 -1
  36. package/package.json +4 -27
  37. package/src/hooks/internal/useEmbeddedWallet.ts +20 -5
  38. package/src/hooks/useAlchemyClient.ts +71 -35
  39. package/src/hooks/useAlchemyPrepareSwap.ts +3 -6
  40. package/src/hooks/useAlchemySendTransaction.ts +17 -14
  41. package/src/hooks/useAlchemySolanaTransaction.ts +1 -1
  42. package/src/hooks/useAlchemySubmitSwap.ts +1 -1
  43. package/src/types.ts +7 -0
  44. package/src/version.ts +1 -1
  45. package/dist/esm/Provider.native.d.ts +0 -6
  46. package/dist/esm/Provider.native.js +0 -13
  47. package/dist/esm/Provider.native.js.map +0 -1
  48. package/dist/esm/adapters/react-native.d.ts +0 -6
  49. package/dist/esm/adapters/react-native.js +0 -130
  50. package/dist/esm/adapters/react-native.js.map +0 -1
  51. package/dist/esm/adapters/types.d.ts +0 -44
  52. package/dist/esm/adapters/types.js +0 -2
  53. package/dist/esm/adapters/types.js.map +0 -1
  54. package/dist/esm/adapters/web.d.ts +0 -6
  55. package/dist/esm/adapters/web.js +0 -50
  56. package/dist/esm/adapters/web.js.map +0 -1
  57. package/dist/esm/adapters/web.native.d.ts +0 -5
  58. package/dist/esm/adapters/web.native.js +0 -6
  59. package/dist/esm/adapters/web.native.js.map +0 -1
  60. package/dist/esm/context/AlchemyContext.d.ts +0 -62
  61. package/dist/esm/context/AlchemyContext.js +0 -105
  62. package/dist/esm/context/AlchemyContext.js.map +0 -1
  63. package/dist/esm/providers/ReactNativeProvider.d.ts +0 -33
  64. package/dist/esm/providers/ReactNativeProvider.js +0 -37
  65. package/dist/esm/providers/ReactNativeProvider.js.map +0 -1
  66. package/dist/esm/providers/WebProvider.d.ts +0 -33
  67. package/dist/esm/providers/WebProvider.js +0 -37
  68. package/dist/esm/providers/WebProvider.js.map +0 -1
  69. package/dist/esm/providers/WebProvider.native.d.ts +0 -5
  70. package/dist/esm/providers/WebProvider.native.js +0 -9
  71. package/dist/esm/providers/WebProvider.native.js.map +0 -1
  72. package/dist/esm/react-native.d.ts +0 -11
  73. package/dist/esm/react-native.js +0 -13
  74. package/dist/esm/react-native.js.map +0 -1
  75. package/dist/types/Provider.native.d.ts +0 -7
  76. package/dist/types/Provider.native.d.ts.map +0 -1
  77. package/dist/types/adapters/react-native.d.ts +0 -7
  78. package/dist/types/adapters/react-native.d.ts.map +0 -1
  79. package/dist/types/adapters/types.d.ts +0 -45
  80. package/dist/types/adapters/types.d.ts.map +0 -1
  81. package/dist/types/adapters/web.d.ts +0 -7
  82. package/dist/types/adapters/web.d.ts.map +0 -1
  83. package/dist/types/adapters/web.native.d.ts +0 -6
  84. package/dist/types/adapters/web.native.d.ts.map +0 -1
  85. package/dist/types/context/AlchemyContext.d.ts +0 -63
  86. package/dist/types/context/AlchemyContext.d.ts.map +0 -1
  87. package/dist/types/providers/ReactNativeProvider.d.ts +0 -34
  88. package/dist/types/providers/ReactNativeProvider.d.ts.map +0 -1
  89. package/dist/types/providers/WebProvider.d.ts +0 -34
  90. package/dist/types/providers/WebProvider.d.ts.map +0 -1
  91. package/dist/types/providers/WebProvider.native.d.ts +0 -6
  92. package/dist/types/providers/WebProvider.native.d.ts.map +0 -1
  93. package/dist/types/react-native.d.ts +0 -12
  94. package/dist/types/react-native.d.ts.map +0 -1
  95. package/src/Provider.native.tsx +0 -18
  96. package/src/Provider.tsx +0 -6
  97. package/src/adapters/react-native.ts +0 -190
  98. package/src/adapters/types.ts +0 -56
  99. package/src/adapters/web.native.ts +0 -6
  100. package/src/adapters/web.ts +0 -73
  101. package/src/context/AlchemyContext.tsx +0 -162
  102. package/src/providers/ReactNativeProvider.tsx +0 -45
  103. package/src/providers/WebProvider.native.tsx +0 -11
  104. package/src/providers/WebProvider.tsx +0 -45
  105. package/src/react-native.ts +0 -29
@@ -1,44 +0,0 @@
1
- import type { Address, Authorization } from "viem";
2
- import type { AuthorizationRequest } from "@aa-sdk/core";
3
- /**
4
- * Platform-agnostic embedded wallet interface
5
- * Abstracts differences between @privy-io/react-auth and @privy-io/expo
6
- */
7
- export interface EmbeddedWallet {
8
- /** Wallet address */
9
- address: Address;
10
- /** Chain ID (may be CAIP-2 format like "eip155:1" or numeric) */
11
- chainId: string | number;
12
- /** Get EVM provider for the wallet */
13
- getEthereumProvider(): Promise<any>;
14
- }
15
- /**
16
- * Platform-agnostic Privy auth state
17
- */
18
- export interface PrivyAuthState {
19
- /** Whether user is authenticated */
20
- authenticated: boolean;
21
- /** User object (platform-specific, used for cache invalidation) */
22
- user: any;
23
- }
24
- /**
25
- * Adapter interface that each platform must implement
26
- * Provides platform-specific Privy functionality
27
- */
28
- export interface PrivyAdapter {
29
- /**
30
- * Hook to get embedded wallet
31
- * Must be called as a React hook (follows rules of hooks)
32
- */
33
- useEmbeddedWallet(): () => EmbeddedWallet;
34
- /**
35
- * Hook to get Privy authentication state
36
- * Must be called as a React hook (follows rules of hooks)
37
- */
38
- usePrivyAuth(): PrivyAuthState;
39
- /**
40
- * Hook to get EIP-7702 authorization signer (optional, web only)
41
- * Must be called as a React hook (follows rules of hooks)
42
- */
43
- useAuthorizationSigner?(): ((auth: AuthorizationRequest<number>) => Promise<Authorization<number, true>>) | null;
44
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Address, Authorization } from \"viem\";\nimport type { AuthorizationRequest } from \"@aa-sdk/core\";\n\n/**\n * Platform-agnostic embedded wallet interface\n * Abstracts differences between @privy-io/react-auth and @privy-io/expo\n */\nexport interface EmbeddedWallet {\n /** Wallet address */\n address: Address;\n\n /** Chain ID (may be CAIP-2 format like \"eip155:1\" or numeric) */\n chainId: string | number;\n\n /** Get EVM provider for the wallet */\n getEthereumProvider(): Promise<any>;\n}\n\n/**\n * Platform-agnostic Privy auth state\n */\nexport interface PrivyAuthState {\n /** Whether user is authenticated */\n authenticated: boolean;\n\n /** User object (platform-specific, used for cache invalidation) */\n user: any;\n}\n\n/**\n * Adapter interface that each platform must implement\n * Provides platform-specific Privy functionality\n */\nexport interface PrivyAdapter {\n /**\n * Hook to get embedded wallet\n * Must be called as a React hook (follows rules of hooks)\n */\n useEmbeddedWallet(): () => EmbeddedWallet;\n\n /**\n * Hook to get Privy authentication state\n * Must be called as a React hook (follows rules of hooks)\n */\n usePrivyAuth(): PrivyAuthState;\n\n /**\n * Hook to get EIP-7702 authorization signer (optional, web only)\n * Must be called as a React hook (follows rules of hooks)\n */\n useAuthorizationSigner?():\n | ((\n auth: AuthorizationRequest<number>,\n ) => Promise<Authorization<number, true>>)\n | null;\n}\n"]}
@@ -1,6 +0,0 @@
1
- import type { PrivyAdapter } from "./types.js";
2
- /**
3
- * Web adapter for @privy-io/react-auth
4
- * Implements platform-specific hooks for React web applications
5
- */
6
- export declare const webAdapter: PrivyAdapter;
@@ -1,50 +0,0 @@
1
- import { useCallback } from "react";
2
- import { useWallets, usePrivy, useSign7702Authorization, } from "@privy-io/react-auth";
3
- /**
4
- * Web adapter for @privy-io/react-auth
5
- * Implements platform-specific hooks for React web applications
6
- */
7
- export const webAdapter = {
8
- useEmbeddedWallet() {
9
- const { wallets } = useWallets();
10
- const getEmbeddedWallet = useCallback(() => {
11
- const embedded = wallets.find((w) => w.walletClientType === "privy");
12
- if (!embedded) {
13
- throw new Error("Privy embedded wallet not found. Please ensure the user is authenticated.");
14
- }
15
- return adaptWebWallet(embedded);
16
- }, [wallets]);
17
- return getEmbeddedWallet;
18
- },
19
- usePrivyAuth() {
20
- const { user } = usePrivy();
21
- return { authenticated: !!user, user };
22
- },
23
- useAuthorizationSigner() {
24
- const { signAuthorization } = useSign7702Authorization();
25
- return useCallback(async (unsignedAuth) => {
26
- const signature = await signAuthorization({
27
- ...unsignedAuth,
28
- contractAddress: unsignedAuth.address ?? unsignedAuth.contractAddress,
29
- });
30
- return {
31
- ...unsignedAuth,
32
- ...signature,
33
- };
34
- }, [signAuthorization]);
35
- },
36
- };
37
- /**
38
- * Adapts a Privy web wallet to the common EmbeddedWallet interface
39
- *
40
- * @param {PrivyWallet} wallet - The Privy web wallet to adapt
41
- * @returns {EmbeddedWallet} The adapted wallet following the common interface
42
- */
43
- function adaptWebWallet(wallet) {
44
- return {
45
- address: wallet.address,
46
- chainId: wallet.chainId || "1",
47
- getEthereumProvider: () => wallet.getEthereumProvider(),
48
- };
49
- }
50
- //# sourceMappingURL=web.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../../src/adapters/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,UAAU,EACV,QAAQ,EACR,wBAAwB,GAEzB,MAAM,sBAAsB,CAAC;AAK9B;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,iBAAiB;QACf,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC;QAEjC,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAmB,EAAE;YACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,OAAO,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;YACJ,CAAC;YAED,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEd,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,YAAY;QACV,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC5B,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,sBAAsB;QACpB,MAAM,EAAE,iBAAiB,EAAE,GAAG,wBAAwB,EAAE,CAAC;QAEzD,OAAO,WAAW,CAChB,KAAK,EACH,YAA0C,EACJ,EAAE;YACxC,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC;gBACxC,GAAG,YAAY;gBACf,eAAe,EAAE,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,eAAe;aACtE,CAAC,CAAC;YAEH,OAAO;gBACL,GAAG,YAAY;gBACf,GAAG,SAAS;aACb,CAAC;QACJ,CAAC,EACD,CAAC,iBAAiB,CAAC,CACpB,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAS,cAAc,CAAC,MAAmB;IACzC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAwB;QACxC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,GAAG;QAC9B,mBAAmB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE;KACxD,CAAC;AACJ,CAAC","sourcesContent":["import { useCallback } from \"react\";\nimport {\n useWallets,\n usePrivy,\n useSign7702Authorization,\n type ConnectedWallet as PrivyWallet,\n} from \"@privy-io/react-auth\";\nimport type { Authorization } from \"viem\";\nimport type { AuthorizationRequest } from \"@aa-sdk/core\";\nimport type { PrivyAdapter, EmbeddedWallet, PrivyAuthState } from \"./types.js\";\n\n/**\n * Web adapter for @privy-io/react-auth\n * Implements platform-specific hooks for React web applications\n */\nexport const webAdapter: PrivyAdapter = {\n useEmbeddedWallet() {\n const { wallets } = useWallets();\n\n const getEmbeddedWallet = useCallback((): EmbeddedWallet => {\n const embedded = wallets.find((w) => w.walletClientType === \"privy\");\n if (!embedded) {\n throw new Error(\n \"Privy embedded wallet not found. Please ensure the user is authenticated.\",\n );\n }\n\n return adaptWebWallet(embedded);\n }, [wallets]);\n\n return getEmbeddedWallet;\n },\n\n usePrivyAuth(): PrivyAuthState {\n const { user } = usePrivy();\n return { authenticated: !!user, user };\n },\n\n useAuthorizationSigner() {\n const { signAuthorization } = useSign7702Authorization();\n\n return useCallback(\n async (\n unsignedAuth: AuthorizationRequest<number>,\n ): Promise<Authorization<number, true>> => {\n const signature = await signAuthorization({\n ...unsignedAuth,\n contractAddress: unsignedAuth.address ?? unsignedAuth.contractAddress,\n });\n\n return {\n ...unsignedAuth,\n ...signature,\n };\n },\n [signAuthorization],\n );\n },\n};\n\n/**\n * Adapts a Privy web wallet to the common EmbeddedWallet interface\n *\n * @param {PrivyWallet} wallet - The Privy web wallet to adapt\n * @returns {EmbeddedWallet} The adapted wallet following the common interface\n */\nfunction adaptWebWallet(wallet: PrivyWallet): EmbeddedWallet {\n return {\n address: wallet.address as `0x${string}`,\n chainId: wallet.chainId || \"1\",\n getEthereumProvider: () => wallet.getEthereumProvider(),\n };\n}\n"]}
@@ -1,5 +0,0 @@
1
- /**
2
- * React Native stub for web adapter
3
- * This file prevents Metro from importing @privy-io/react-auth
4
- */
5
- export declare const webAdapter: null;
@@ -1,6 +0,0 @@
1
- /**
2
- * React Native stub for web adapter
3
- * This file prevents Metro from importing @privy-io/react-auth
4
- */
5
- export const webAdapter = null;
6
- //# sourceMappingURL=web.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web.native.js","sourceRoot":"","sources":["../../../src/adapters/web.native.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC","sourcesContent":["/**\n * React Native stub for web adapter\n * This file prevents Metro from importing @privy-io/react-auth\n */\n\nexport const webAdapter = null;\n"]}
@@ -1,62 +0,0 @@
1
- import { type PropsWithChildren } from "react";
2
- import type { SmartWalletClient } from "@account-kit/wallet-client";
3
- import type { AlchemyProviderConfig } from "../types.js";
4
- import type { PrivyAdapter } from "../adapters/types.js";
5
- /**
6
- * Client cache stored in React tree (similar to QueryClient in React Query)
7
- *
8
- * @internal
9
- */
10
- interface ClientCache {
11
- client: SmartWalletClient | null;
12
- cacheKey: string | null;
13
- }
14
- /**
15
- * Props for AlchemyContextProvider
16
- */
17
- interface AlchemyContextProviderProps extends PropsWithChildren {
18
- config: AlchemyProviderConfig;
19
- adapter: PrivyAdapter;
20
- }
21
- /**
22
- * Internal provider component that manages Alchemy context
23
- * Used by both web and React Native providers
24
- *
25
- * @internal
26
- * @param {AlchemyContextProviderProps} props - Component props
27
- * @param {React.ReactNode} props.children - React children to wrap with context
28
- * @param {AlchemyProviderConfig} props.config - Alchemy configuration
29
- * @param {PrivyAdapter} props.adapter - Platform adapter
30
- * @returns {JSX.Element} Context provider component
31
- */
32
- export declare function AlchemyContextProvider({ children, config, adapter, }: AlchemyContextProviderProps): import("react/jsx-runtime").JSX.Element;
33
- /**
34
- * Hook to access Alchemy provider configuration
35
- * Must be used within an <AlchemyProvider> component
36
- *
37
- * @returns {AlchemyProviderConfig} The current Alchemy configuration
38
- * @throws {Error} If used outside of AlchemyProvider
39
- *
40
- * @example
41
- * ```tsx
42
- * const config = useAlchemyConfig();
43
- * console.log('Policy ID:', config.policyId);
44
- * ```
45
- */
46
- export declare function useAlchemyConfig(): AlchemyProviderConfig;
47
- /**
48
- * Hook to access the platform adapter
49
- * Must be used within an <AlchemyProvider> component
50
- *
51
- * @internal
52
- * @returns {PrivyAdapter} The platform adapter
53
- */
54
- export declare function useAdapter(): PrivyAdapter;
55
- /**
56
- * Hook to access the client cache (internal use only)
57
- *
58
- * @internal
59
- * @returns {ClientCache} The client cache object
60
- */
61
- export declare function useClientCache(): ClientCache;
62
- export {};
@@ -1,105 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useRef, useEffect, } from "react";
3
- /**
4
- * Context for Alchemy configuration
5
- */
6
- const AlchemyConfigContext = createContext(null);
7
- /**
8
- * Context for the platform adapter
9
- */
10
- const AdapterContext = createContext(null);
11
- const ClientCacheContext = createContext(null);
12
- /**
13
- * Internal provider component that manages Alchemy context
14
- * Used by both web and React Native providers
15
- *
16
- * @internal
17
- * @param {AlchemyContextProviderProps} props - Component props
18
- * @param {React.ReactNode} props.children - React children to wrap with context
19
- * @param {AlchemyProviderConfig} props.config - Alchemy configuration
20
- * @param {PrivyAdapter} props.adapter - Platform adapter
21
- * @returns {JSX.Element} Context provider component
22
- */
23
- export function AlchemyContextProvider({ children, config, adapter, }) {
24
- const { authenticated, user } = adapter.usePrivyAuth();
25
- // Store cache in a ref - persists across renders but scoped to this component instance
26
- // This makes it SSR-safe (each request gets its own cache) and React StrictMode-safe
27
- const cache = useRef({
28
- client: null,
29
- cacheKey: null,
30
- });
31
- // Track previous state to detect logout and wallet changes
32
- const prevAuthenticatedRef = useRef(authenticated);
33
- const prevWalletAddressRef = useRef(user?.wallet?.address);
34
- // Automatically reset cache when user logs out or switches wallets
35
- useEffect(() => {
36
- const wasAuthenticated = prevAuthenticatedRef.current;
37
- const prevWalletAddress = prevWalletAddressRef.current;
38
- const currentWalletAddress = user?.wallet?.address;
39
- // Reset cache on logout
40
- if (wasAuthenticated && !authenticated) {
41
- cache.current.client = null;
42
- cache.current.cacheKey = null;
43
- }
44
- // Reset cache on wallet address change (account switching)
45
- if (authenticated &&
46
- prevWalletAddress &&
47
- currentWalletAddress &&
48
- prevWalletAddress !== currentWalletAddress) {
49
- cache.current.client = null;
50
- cache.current.cacheKey = null;
51
- }
52
- // Update refs for next render
53
- prevAuthenticatedRef.current = authenticated;
54
- prevWalletAddressRef.current = currentWalletAddress;
55
- }, [authenticated, user?.wallet?.address]);
56
- return (_jsx(AlchemyConfigContext.Provider, { value: config, children: _jsx(AdapterContext.Provider, { value: adapter, children: _jsx(ClientCacheContext.Provider, { value: cache.current, children: children }) }) }));
57
- }
58
- /**
59
- * Hook to access Alchemy provider configuration
60
- * Must be used within an <AlchemyProvider> component
61
- *
62
- * @returns {AlchemyProviderConfig} The current Alchemy configuration
63
- * @throws {Error} If used outside of AlchemyProvider
64
- *
65
- * @example
66
- * ```tsx
67
- * const config = useAlchemyConfig();
68
- * console.log('Policy ID:', config.policyId);
69
- * ```
70
- */
71
- export function useAlchemyConfig() {
72
- const context = useContext(AlchemyConfigContext);
73
- if (!context) {
74
- throw new Error("useAlchemyConfig must be used within <AlchemyProvider />");
75
- }
76
- return context;
77
- }
78
- /**
79
- * Hook to access the platform adapter
80
- * Must be used within an <AlchemyProvider> component
81
- *
82
- * @internal
83
- * @returns {PrivyAdapter} The platform adapter
84
- */
85
- export function useAdapter() {
86
- const context = useContext(AdapterContext);
87
- if (!context) {
88
- throw new Error("useAdapter must be used within <AlchemyProvider />. Make sure AlchemyProvider is nested inside PrivyProvider.");
89
- }
90
- return context;
91
- }
92
- /**
93
- * Hook to access the client cache (internal use only)
94
- *
95
- * @internal
96
- * @returns {ClientCache} The client cache object
97
- */
98
- export function useClientCache() {
99
- const context = useContext(ClientCacheContext);
100
- if (!context) {
101
- throw new Error("useClientCache must be used within <AlchemyProvider />. Make sure AlchemyProvider is nested inside PrivyProvider.");
102
- }
103
- return context;
104
- }
105
- //# sourceMappingURL=AlchemyContext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AlchemyContext.js","sourceRoot":"","sources":["../../../src/context/AlchemyContext.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n type PropsWithChildren,\n createContext,\n useContext,\n useRef,\n useEffect,\n} from \"react\";\nimport type { SmartWalletClient } from \"@account-kit/wallet-client\";\nimport type { AlchemyProviderConfig } from \"../types.js\";\nimport type { PrivyAdapter } from \"../adapters/types.js\";\n\n/**\n * Context for Alchemy configuration\n */\nconst AlchemyConfigContext = createContext<AlchemyProviderConfig | null>(null);\n\n/**\n * Context for the platform adapter\n */\nconst AdapterContext = createContext<PrivyAdapter | null>(null);\n\n/**\n * Client cache stored in React tree (similar to QueryClient in React Query)\n *\n * @internal\n */\ninterface ClientCache {\n client: SmartWalletClient | null;\n cacheKey: string | null;\n}\n\nconst ClientCacheContext = createContext<ClientCache | null>(null);\n\n/**\n * Props for AlchemyContextProvider\n */\ninterface AlchemyContextProviderProps extends PropsWithChildren {\n config: AlchemyProviderConfig;\n adapter: PrivyAdapter;\n}\n\n/**\n * Internal provider component that manages Alchemy context\n * Used by both web and React Native providers\n *\n * @internal\n * @param {AlchemyContextProviderProps} props - Component props\n * @param {React.ReactNode} props.children - React children to wrap with context\n * @param {AlchemyProviderConfig} props.config - Alchemy configuration\n * @param {PrivyAdapter} props.adapter - Platform adapter\n * @returns {JSX.Element} Context provider component\n */\nexport function AlchemyContextProvider({\n children,\n config,\n adapter,\n}: AlchemyContextProviderProps) {\n const { authenticated, user } = adapter.usePrivyAuth();\n\n // Store cache in a ref - persists across renders but scoped to this component instance\n // This makes it SSR-safe (each request gets its own cache) and React StrictMode-safe\n const cache = useRef<ClientCache>({\n client: null,\n cacheKey: null,\n });\n\n // Track previous state to detect logout and wallet changes\n const prevAuthenticatedRef = useRef(authenticated);\n const prevWalletAddressRef = useRef(user?.wallet?.address);\n\n // Automatically reset cache when user logs out or switches wallets\n useEffect(() => {\n const wasAuthenticated = prevAuthenticatedRef.current;\n const prevWalletAddress = prevWalletAddressRef.current;\n const currentWalletAddress = user?.wallet?.address;\n\n // Reset cache on logout\n if (wasAuthenticated && !authenticated) {\n cache.current.client = null;\n cache.current.cacheKey = null;\n }\n\n // Reset cache on wallet address change (account switching)\n if (\n authenticated &&\n prevWalletAddress &&\n currentWalletAddress &&\n prevWalletAddress !== currentWalletAddress\n ) {\n cache.current.client = null;\n cache.current.cacheKey = null;\n }\n\n // Update refs for next render\n prevAuthenticatedRef.current = authenticated;\n prevWalletAddressRef.current = currentWalletAddress;\n }, [authenticated, user?.wallet?.address]);\n\n return (\n <AlchemyConfigContext.Provider value={config}>\n <AdapterContext.Provider value={adapter}>\n <ClientCacheContext.Provider value={cache.current}>\n {children}\n </ClientCacheContext.Provider>\n </AdapterContext.Provider>\n </AlchemyConfigContext.Provider>\n );\n}\n\n/**\n * Hook to access Alchemy provider configuration\n * Must be used within an <AlchemyProvider> component\n *\n * @returns {AlchemyProviderConfig} The current Alchemy configuration\n * @throws {Error} If used outside of AlchemyProvider\n *\n * @example\n * ```tsx\n * const config = useAlchemyConfig();\n * console.log('Policy ID:', config.policyId);\n * ```\n */\nexport function useAlchemyConfig(): AlchemyProviderConfig {\n const context = useContext(AlchemyConfigContext);\n if (!context) {\n throw new Error(\"useAlchemyConfig must be used within <AlchemyProvider />\");\n }\n return context;\n}\n\n/**\n * Hook to access the platform adapter\n * Must be used within an <AlchemyProvider> component\n *\n * @internal\n * @returns {PrivyAdapter} The platform adapter\n */\nexport function useAdapter(): PrivyAdapter {\n const context = useContext(AdapterContext);\n if (!context) {\n throw new Error(\n \"useAdapter must be used within <AlchemyProvider />. Make sure AlchemyProvider is nested inside PrivyProvider.\",\n );\n }\n return context;\n}\n\n/**\n * Hook to access the client cache (internal use only)\n *\n * @internal\n * @returns {ClientCache} The client cache object\n */\nexport function useClientCache(): ClientCache {\n const context = useContext(ClientCacheContext);\n if (!context) {\n throw new Error(\n \"useClientCache must be used within <AlchemyProvider />. Make sure AlchemyProvider is nested inside PrivyProvider.\",\n );\n }\n return context;\n}\n"]}
@@ -1,33 +0,0 @@
1
- import type { PropsWithChildren } from "react";
2
- import type { AlchemyProviderConfig } from "../types.js";
3
- /**
4
- * Provider component for React Native (Expo) applications
5
- * Must be nested INSIDE PrivyProvider from @privy-io/expo
6
- *
7
- * @param {PropsWithChildren<AlchemyProviderConfig>} props - Component props
8
- * @param {React.ReactNode} props.children - React children to wrap with Alchemy configuration
9
- * @param {string} [props.apiKey] - Your Alchemy API key
10
- * @param {string} [props.jwt] - JWT token for authentication
11
- * @param {string} [props.rpcUrl] - Custom RPC URL for EVM chains
12
- * @param {string} [props.solanaRpcUrl] - Custom RPC URL for Solana
13
- * @param {string | string[]} [props.policyId] - Gas Manager policy ID(s) for EVM chains
14
- * @param {string | string[]} [props.solanaPolicyId] - Gas Manager policy ID(s) for Solana
15
- * @param {boolean} [props.disableSponsorship] - Set to true to disable sponsorship by default (default: false)
16
- * @returns {JSX.Element} Provider component
17
- *
18
- * @example
19
- * ```tsx
20
- * import { PrivyProvider } from '@privy-io/expo';
21
- * import { AlchemyProvider } from '@account-kit/privy-integration/react-native';
22
- *
23
- * <PrivyProvider appId="..." clientId="...">
24
- * <AlchemyProvider
25
- * apiKey="your-alchemy-api-key"
26
- * policyId="your-gas-policy-id"
27
- * >
28
- * <YourApp />
29
- * </AlchemyProvider>
30
- * </PrivyProvider>
31
- * ```
32
- */
33
- export declare function AlchemyProvider({ children, ...config }: PropsWithChildren<AlchemyProviderConfig>): import("react/jsx-runtime").JSX.Element;
@@ -1,37 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { AlchemyContextProvider } from "../context/AlchemyContext.js";
3
- import { reactNativeAdapter } from "../adapters/react-native.js";
4
- /**
5
- * Provider component for React Native (Expo) applications
6
- * Must be nested INSIDE PrivyProvider from @privy-io/expo
7
- *
8
- * @param {PropsWithChildren<AlchemyProviderConfig>} props - Component props
9
- * @param {React.ReactNode} props.children - React children to wrap with Alchemy configuration
10
- * @param {string} [props.apiKey] - Your Alchemy API key
11
- * @param {string} [props.jwt] - JWT token for authentication
12
- * @param {string} [props.rpcUrl] - Custom RPC URL for EVM chains
13
- * @param {string} [props.solanaRpcUrl] - Custom RPC URL for Solana
14
- * @param {string | string[]} [props.policyId] - Gas Manager policy ID(s) for EVM chains
15
- * @param {string | string[]} [props.solanaPolicyId] - Gas Manager policy ID(s) for Solana
16
- * @param {boolean} [props.disableSponsorship] - Set to true to disable sponsorship by default (default: false)
17
- * @returns {JSX.Element} Provider component
18
- *
19
- * @example
20
- * ```tsx
21
- * import { PrivyProvider } from '@privy-io/expo';
22
- * import { AlchemyProvider } from '@account-kit/privy-integration/react-native';
23
- *
24
- * <PrivyProvider appId="..." clientId="...">
25
- * <AlchemyProvider
26
- * apiKey="your-alchemy-api-key"
27
- * policyId="your-gas-policy-id"
28
- * >
29
- * <YourApp />
30
- * </AlchemyProvider>
31
- * </PrivyProvider>
32
- * ```
33
- */
34
- export function AlchemyProvider({ children, ...config }) {
35
- return (_jsx(AlchemyContextProvider, { config: config, adapter: reactNativeAdapter, children: children }));
36
- }
37
- //# sourceMappingURL=ReactNativeProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ReactNativeProvider.js","sourceRoot":"","sources":["../../../src/providers/ReactNativeProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,GAAG,MAAM,EACgC;IACzC,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,YAChE,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC","sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport { AlchemyContextProvider } from \"../context/AlchemyContext.js\";\nimport { reactNativeAdapter } from \"../adapters/react-native.js\";\nimport type { AlchemyProviderConfig } from \"../types.js\";\n\n/**\n * Provider component for React Native (Expo) applications\n * Must be nested INSIDE PrivyProvider from @privy-io/expo\n *\n * @param {PropsWithChildren<AlchemyProviderConfig>} props - Component props\n * @param {React.ReactNode} props.children - React children to wrap with Alchemy configuration\n * @param {string} [props.apiKey] - Your Alchemy API key\n * @param {string} [props.jwt] - JWT token for authentication\n * @param {string} [props.rpcUrl] - Custom RPC URL for EVM chains\n * @param {string} [props.solanaRpcUrl] - Custom RPC URL for Solana\n * @param {string | string[]} [props.policyId] - Gas Manager policy ID(s) for EVM chains\n * @param {string | string[]} [props.solanaPolicyId] - Gas Manager policy ID(s) for Solana\n * @param {boolean} [props.disableSponsorship] - Set to true to disable sponsorship by default (default: false)\n * @returns {JSX.Element} Provider component\n *\n * @example\n * ```tsx\n * import { PrivyProvider } from '@privy-io/expo';\n * import { AlchemyProvider } from '@account-kit/privy-integration/react-native';\n *\n * <PrivyProvider appId=\"...\" clientId=\"...\">\n * <AlchemyProvider\n * apiKey=\"your-alchemy-api-key\"\n * policyId=\"your-gas-policy-id\"\n * >\n * <YourApp />\n * </AlchemyProvider>\n * </PrivyProvider>\n * ```\n */\nexport function AlchemyProvider({\n children,\n ...config\n}: PropsWithChildren<AlchemyProviderConfig>) {\n return (\n <AlchemyContextProvider config={config} adapter={reactNativeAdapter}>\n {children}\n </AlchemyContextProvider>\n );\n}\n"]}
@@ -1,33 +0,0 @@
1
- import type { PropsWithChildren } from "react";
2
- import type { AlchemyProviderConfig } from "../types.js";
3
- /**
4
- * Provider component for React web applications
5
- * Must be nested INSIDE PrivyProvider from @privy-io/react-auth
6
- *
7
- * @param {PropsWithChildren<AlchemyProviderConfig>} props - Component props
8
- * @param {React.ReactNode} props.children - React children to wrap with Alchemy configuration
9
- * @param {string} [props.apiKey] - Your Alchemy API key
10
- * @param {string} [props.jwt] - JWT token for authentication
11
- * @param {string} [props.rpcUrl] - Custom RPC URL for EVM chains
12
- * @param {string} [props.solanaRpcUrl] - Custom RPC URL for Solana
13
- * @param {string | string[]} [props.policyId] - Gas Manager policy ID(s) for EVM chains
14
- * @param {string | string[]} [props.solanaPolicyId] - Gas Manager policy ID(s) for Solana
15
- * @param {boolean} [props.disableSponsorship] - Set to true to disable sponsorship by default (default: false)
16
- * @returns {JSX.Element} Provider component
17
- *
18
- * @example
19
- * ```tsx
20
- * import { PrivyProvider } from '@privy-io/react-auth';
21
- * import { AlchemyProvider } from '@account-kit/privy-integration';
22
- *
23
- * <PrivyProvider appId="...">
24
- * <AlchemyProvider
25
- * apiKey="your-alchemy-api-key"
26
- * policyId="your-gas-policy-id"
27
- * >
28
- * <YourApp />
29
- * </AlchemyProvider>
30
- * </PrivyProvider>
31
- * ```
32
- */
33
- export declare function AlchemyProvider({ children, ...config }: PropsWithChildren<AlchemyProviderConfig>): import("react/jsx-runtime").JSX.Element;
@@ -1,37 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { AlchemyContextProvider } from "../context/AlchemyContext.js";
3
- import { webAdapter } from "../adapters/web.js";
4
- /**
5
- * Provider component for React web applications
6
- * Must be nested INSIDE PrivyProvider from @privy-io/react-auth
7
- *
8
- * @param {PropsWithChildren<AlchemyProviderConfig>} props - Component props
9
- * @param {React.ReactNode} props.children - React children to wrap with Alchemy configuration
10
- * @param {string} [props.apiKey] - Your Alchemy API key
11
- * @param {string} [props.jwt] - JWT token for authentication
12
- * @param {string} [props.rpcUrl] - Custom RPC URL for EVM chains
13
- * @param {string} [props.solanaRpcUrl] - Custom RPC URL for Solana
14
- * @param {string | string[]} [props.policyId] - Gas Manager policy ID(s) for EVM chains
15
- * @param {string | string[]} [props.solanaPolicyId] - Gas Manager policy ID(s) for Solana
16
- * @param {boolean} [props.disableSponsorship] - Set to true to disable sponsorship by default (default: false)
17
- * @returns {JSX.Element} Provider component
18
- *
19
- * @example
20
- * ```tsx
21
- * import { PrivyProvider } from '@privy-io/react-auth';
22
- * import { AlchemyProvider } from '@account-kit/privy-integration';
23
- *
24
- * <PrivyProvider appId="...">
25
- * <AlchemyProvider
26
- * apiKey="your-alchemy-api-key"
27
- * policyId="your-gas-policy-id"
28
- * >
29
- * <YourApp />
30
- * </AlchemyProvider>
31
- * </PrivyProvider>
32
- * ```
33
- */
34
- export function AlchemyProvider({ children, ...config }) {
35
- return (_jsx(AlchemyContextProvider, { config: config, adapter: webAdapter, children: children }));
36
- }
37
- //# sourceMappingURL=WebProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebProvider.js","sourceRoot":"","sources":["../../../src/providers/WebProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,GAAG,MAAM,EACgC;IACzC,OAAO,CACL,KAAC,sBAAsB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,YACxD,QAAQ,GACc,CAC1B,CAAC;AACJ,CAAC","sourcesContent":["import type { PropsWithChildren } from \"react\";\nimport { AlchemyContextProvider } from \"../context/AlchemyContext.js\";\nimport { webAdapter } from \"../adapters/web.js\";\nimport type { AlchemyProviderConfig } from \"../types.js\";\n\n/**\n * Provider component for React web applications\n * Must be nested INSIDE PrivyProvider from @privy-io/react-auth\n *\n * @param {PropsWithChildren<AlchemyProviderConfig>} props - Component props\n * @param {React.ReactNode} props.children - React children to wrap with Alchemy configuration\n * @param {string} [props.apiKey] - Your Alchemy API key\n * @param {string} [props.jwt] - JWT token for authentication\n * @param {string} [props.rpcUrl] - Custom RPC URL for EVM chains\n * @param {string} [props.solanaRpcUrl] - Custom RPC URL for Solana\n * @param {string | string[]} [props.policyId] - Gas Manager policy ID(s) for EVM chains\n * @param {string | string[]} [props.solanaPolicyId] - Gas Manager policy ID(s) for Solana\n * @param {boolean} [props.disableSponsorship] - Set to true to disable sponsorship by default (default: false)\n * @returns {JSX.Element} Provider component\n *\n * @example\n * ```tsx\n * import { PrivyProvider } from '@privy-io/react-auth';\n * import { AlchemyProvider } from '@account-kit/privy-integration';\n *\n * <PrivyProvider appId=\"...\">\n * <AlchemyProvider\n * apiKey=\"your-alchemy-api-key\"\n * policyId=\"your-gas-policy-id\"\n * >\n * <YourApp />\n * </AlchemyProvider>\n * </PrivyProvider>\n * ```\n */\nexport function AlchemyProvider({\n children,\n ...config\n}: PropsWithChildren<AlchemyProviderConfig>) {\n return (\n <AlchemyContextProvider config={config} adapter={webAdapter}>\n {children}\n </AlchemyContextProvider>\n );\n}\n"]}
@@ -1,5 +0,0 @@
1
- /**
2
- * React Native stub for WebProvider
3
- * This file prevents Metro from importing web-specific code
4
- */
5
- export declare function AlchemyProvider(): void;
@@ -1,9 +0,0 @@
1
- /**
2
- * React Native stub for WebProvider
3
- * This file prevents Metro from importing web-specific code
4
- */
5
- export function AlchemyProvider() {
6
- throw new Error("WebProvider is not available in React Native. " +
7
- 'Import from "@account-kit/privy-integration/react-native" instead.');
8
- }
9
- //# sourceMappingURL=WebProvider.native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WebProvider.native.js","sourceRoot":"","sources":["../../../src/providers/WebProvider.native.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,UAAU,eAAe;IAC7B,MAAM,IAAI,KAAK,CACb,gDAAgD;QAC9C,oEAAoE,CACvE,CAAC;AACJ,CAAC","sourcesContent":["/**\n * React Native stub for WebProvider\n * This file prevents Metro from importing web-specific code\n */\n\nexport function AlchemyProvider() {\n throw new Error(\n \"WebProvider is not available in React Native. \" +\n 'Import from \"@account-kit/privy-integration/react-native\" instead.',\n );\n}\n"]}
@@ -1,11 +0,0 @@
1
- /**
2
- * React Native (Expo) entry point
3
- * Import from '@account-kit/privy-integration/react-native' in Expo apps
4
- */
5
- export { AlchemyProvider } from "./providers/ReactNativeProvider.js";
6
- export { useAlchemyConfig } from "./context/AlchemyContext.js";
7
- export { useAlchemyClient } from "./hooks/useAlchemyClient.js";
8
- export { useAlchemySendTransaction } from "./hooks/useAlchemySendTransaction.js";
9
- export { useAlchemyPrepareSwap } from "./hooks/useAlchemyPrepareSwap.js";
10
- export { useAlchemySubmitSwap } from "./hooks/useAlchemySubmitSwap.js";
11
- export type { AlchemyProviderConfig, UnsignedTransactionRequest, SendTransactionOptions, SendTransactionResult, UseSendTransactionResult, PrepareSwapRequest, PrepareSwapResult, UsePrepareSwapResult, SubmitSwapResult, UseSubmitSwapResult, SwapQuote, } from "./types.js";
@@ -1,13 +0,0 @@
1
- /**
2
- * React Native (Expo) entry point
3
- * Import from '@account-kit/privy-integration/react-native' in Expo apps
4
- */
5
- // Provider
6
- export { AlchemyProvider } from "./providers/ReactNativeProvider.js";
7
- export { useAlchemyConfig } from "./context/AlchemyContext.js";
8
- // Hooks
9
- export { useAlchemyClient } from "./hooks/useAlchemyClient.js";
10
- export { useAlchemySendTransaction } from "./hooks/useAlchemySendTransaction.js";
11
- export { useAlchemyPrepareSwap } from "./hooks/useAlchemyPrepareSwap.js";
12
- export { useAlchemySubmitSwap } from "./hooks/useAlchemySubmitSwap.js";
13
- //# sourceMappingURL=react-native.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-native.js","sourceRoot":"","sources":["../../src/react-native.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,WAAW;AACX,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,QAAQ;AACR,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC","sourcesContent":["/**\n * React Native (Expo) entry point\n * Import from '@account-kit/privy-integration/react-native' in Expo apps\n */\n\n// Provider\nexport { AlchemyProvider } from \"./providers/ReactNativeProvider.js\";\nexport { useAlchemyConfig } from \"./context/AlchemyContext.js\";\n\n// Hooks\nexport { useAlchemyClient } from \"./hooks/useAlchemyClient.js\";\nexport { useAlchemySendTransaction } from \"./hooks/useAlchemySendTransaction.js\";\nexport { useAlchemyPrepareSwap } from \"./hooks/useAlchemyPrepareSwap.js\";\nexport { useAlchemySubmitSwap } from \"./hooks/useAlchemySubmitSwap.js\";\n\n// Types\nexport type {\n AlchemyProviderConfig,\n UnsignedTransactionRequest,\n SendTransactionOptions,\n SendTransactionResult,\n UseSendTransactionResult,\n PrepareSwapRequest,\n PrepareSwapResult,\n UsePrepareSwapResult,\n SubmitSwapResult,\n UseSubmitSwapResult,\n SwapQuote,\n} from \"./types.js\";\n"]}
@@ -1,7 +0,0 @@
1
- /**
2
- * React Native stub for web Provider
3
- * This file prevents Metro from importing web-specific code
4
- */
5
- export declare function AlchemyProvider(): void;
6
- export declare function useAlchemyConfig(): void;
7
- //# sourceMappingURL=Provider.native.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Provider.native.d.ts","sourceRoot":"","sources":["../../src/Provider.native.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,eAAe,SAK9B;AAED,wBAAgB,gBAAgB,SAK/B"}
@@ -1,7 +0,0 @@
1
- import type { PrivyAdapter } from "./types.js";
2
- /**
3
- * React Native (Expo) adapter for @privy-io/expo
4
- * Implements platform-specific hooks for React Native applications
5
- */
6
- export declare const reactNativeAdapter: PrivyAdapter;
7
- //# sourceMappingURL=react-native.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../../src/adapters/react-native.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAkC,MAAM,YAAY,CAAC;AAY/E;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,YAsHhC,CAAC"}
@@ -1,45 +0,0 @@
1
- import type { Address, Authorization } from "viem";
2
- import type { AuthorizationRequest } from "@aa-sdk/core";
3
- /**
4
- * Platform-agnostic embedded wallet interface
5
- * Abstracts differences between @privy-io/react-auth and @privy-io/expo
6
- */
7
- export interface EmbeddedWallet {
8
- /** Wallet address */
9
- address: Address;
10
- /** Chain ID (may be CAIP-2 format like "eip155:1" or numeric) */
11
- chainId: string | number;
12
- /** Get EVM provider for the wallet */
13
- getEthereumProvider(): Promise<any>;
14
- }
15
- /**
16
- * Platform-agnostic Privy auth state
17
- */
18
- export interface PrivyAuthState {
19
- /** Whether user is authenticated */
20
- authenticated: boolean;
21
- /** User object (platform-specific, used for cache invalidation) */
22
- user: any;
23
- }
24
- /**
25
- * Adapter interface that each platform must implement
26
- * Provides platform-specific Privy functionality
27
- */
28
- export interface PrivyAdapter {
29
- /**
30
- * Hook to get embedded wallet
31
- * Must be called as a React hook (follows rules of hooks)
32
- */
33
- useEmbeddedWallet(): () => EmbeddedWallet;
34
- /**
35
- * Hook to get Privy authentication state
36
- * Must be called as a React hook (follows rules of hooks)
37
- */
38
- usePrivyAuth(): PrivyAuthState;
39
- /**
40
- * Hook to get EIP-7702 authorization signer (optional, web only)
41
- * Must be called as a React hook (follows rules of hooks)
42
- */
43
- useAuthorizationSigner?(): ((auth: AuthorizationRequest<number>) => Promise<Authorization<number, true>>) | null;
44
- }
45
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,OAAO,EAAE,OAAO,CAAC;IAEjB,iEAAiE;IACjE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAEzB,sCAAsC;IACtC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,aAAa,EAAE,OAAO,CAAC;IAEvB,mEAAmE;IACnE,IAAI,EAAE,GAAG,CAAC;CACX;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,iBAAiB,IAAI,MAAM,cAAc,CAAC;IAE1C;;;OAGG;IACH,YAAY,IAAI,cAAc,CAAC;IAE/B;;;OAGG;IACH,sBAAsB,CAAC,IACnB,CAAC,CACC,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAC/B,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,GAC1C,IAAI,CAAC;CACV"}
@@ -1,7 +0,0 @@
1
- import type { PrivyAdapter } from "./types.js";
2
- /**
3
- * Web adapter for @privy-io/react-auth
4
- * Implements platform-specific hooks for React web applications
5
- */
6
- export declare const webAdapter: PrivyAdapter;
7
- //# sourceMappingURL=web.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../../src/adapters/web.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAkC,MAAM,YAAY,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,YA2CxB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * React Native stub for web adapter
3
- * This file prevents Metro from importing @privy-io/react-auth
4
- */
5
- export declare const webAdapter: null;
6
- //# sourceMappingURL=web.native.d.ts.map