@account-kit/privy-integration 4.72.0 → 4.73.1-alpha.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/README.md +21 -1
- package/dist/esm/Provider.d.ts +4 -61
- package/dist/esm/Provider.js +4 -99
- package/dist/esm/Provider.js.map +1 -1
- package/dist/esm/adapters/react-native.d.ts +6 -0
- package/dist/esm/adapters/react-native.js +46 -0
- package/dist/esm/adapters/react-native.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +44 -0
- package/dist/esm/adapters/types.js +2 -0
- package/dist/esm/adapters/types.js.map +1 -0
- package/dist/esm/adapters/web.d.ts +6 -0
- package/dist/esm/adapters/web.js +50 -0
- package/dist/esm/adapters/web.js.map +1 -0
- package/dist/esm/context/AlchemyContext.d.ts +62 -0
- package/dist/esm/context/AlchemyContext.js +105 -0
- package/dist/esm/context/AlchemyContext.js.map +1 -0
- package/dist/esm/hooks/internal/useEmbeddedWallet.d.ts +3 -4
- package/dist/esm/hooks/internal/useEmbeddedWallet.js +5 -13
- package/dist/esm/hooks/internal/useEmbeddedWallet.js.map +1 -1
- package/dist/esm/hooks/useAlchemyClient.js +13 -20
- package/dist/esm/hooks/useAlchemyClient.js.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/providers/ReactNativeProvider.d.ts +33 -0
- package/dist/esm/providers/ReactNativeProvider.js +37 -0
- package/dist/esm/providers/ReactNativeProvider.js.map +1 -0
- package/dist/esm/providers/WebProvider.d.ts +33 -0
- package/dist/esm/providers/WebProvider.js +37 -0
- package/dist/esm/providers/WebProvider.js.map +1 -0
- package/dist/esm/react-native.d.ts +11 -0
- package/dist/esm/react-native.js +13 -0
- package/dist/esm/react-native.js.map +1 -0
- package/dist/esm/solana.d.ts +2 -0
- package/dist/esm/solana.js +5 -0
- package/dist/esm/solana.js.map +1 -0
- package/dist/esm/util/createSolanaSponsoredTransaction.js +1 -0
- package/dist/esm/util/createSolanaSponsoredTransaction.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/Provider.d.ts +4 -61
- package/dist/types/Provider.d.ts.map +1 -1
- package/dist/types/adapters/react-native.d.ts +7 -0
- package/dist/types/adapters/react-native.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +45 -0
- package/dist/types/adapters/types.d.ts.map +1 -0
- package/dist/types/adapters/web.d.ts +7 -0
- package/dist/types/adapters/web.d.ts.map +1 -0
- package/dist/types/context/AlchemyContext.d.ts +63 -0
- package/dist/types/context/AlchemyContext.d.ts.map +1 -0
- package/dist/types/hooks/internal/useEmbeddedWallet.d.ts +3 -4
- package/dist/types/hooks/internal/useEmbeddedWallet.d.ts.map +1 -1
- package/dist/types/hooks/useAlchemyClient.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/providers/ReactNativeProvider.d.ts +34 -0
- package/dist/types/providers/ReactNativeProvider.d.ts.map +1 -0
- package/dist/types/providers/WebProvider.d.ts +34 -0
- package/dist/types/providers/WebProvider.d.ts.map +1 -0
- package/dist/types/react-native.d.ts +12 -0
- package/dist/types/react-native.d.ts.map +1 -0
- package/dist/types/solana.d.ts +3 -0
- package/dist/types/solana.d.ts.map +1 -0
- package/dist/types/util/createSolanaSponsoredTransaction.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +27 -4
- package/src/adapters/react-native.ts +71 -0
- package/src/adapters/types.ts +56 -0
- package/src/adapters/web.ts +73 -0
- package/src/hooks/internal/useEmbeddedWallet.ts +5 -20
- package/src/hooks/useAlchemyClient.ts +17 -32
- package/src/index.ts +0 -1
- package/src/react-native.ts +29 -0
- package/src/solana.ts +16 -0
- package/src/util/createSolanaSponsoredTransaction.ts +1 -0
- package/src/version.ts +1 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { type ConnectedWallet as PrivyWallet } from "@privy-io/react-auth";
|
|
2
1
|
/**
|
|
3
2
|
* Internal hook to get the Privy embedded wallet
|
|
4
|
-
*
|
|
3
|
+
* Uses the platform adapter to abstract differences between web and React Native
|
|
5
4
|
*
|
|
6
5
|
* @internal
|
|
7
|
-
* @returns {() =>
|
|
6
|
+
* @returns {() => EmbeddedWallet} Function that returns the embedded wallet
|
|
8
7
|
* @throws {Error} If embedded wallet is not found
|
|
9
8
|
*/
|
|
10
|
-
export declare function useEmbeddedWallet(): () =>
|
|
9
|
+
export declare function useEmbeddedWallet(): () => import("../../adapters/types.js").EmbeddedWallet;
|
|
11
10
|
//# sourceMappingURL=useEmbeddedWallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEmbeddedWallet.d.ts","sourceRoot":"","sources":["../../../../src/hooks/internal/useEmbeddedWallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useEmbeddedWallet.d.ts","sourceRoot":"","sources":["../../../../src/hooks/internal/useEmbeddedWallet.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,2DAGhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAlchemyClient.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAlchemyClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAlchemyClient.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAlchemyClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAUpC;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB;qBAiCU,OAAO,CAAC,iBAAiB,CAAC;EAkFnE"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,6 +3,5 @@ export { useAlchemyClient } from "./hooks/useAlchemyClient.js";
|
|
|
3
3
|
export { useAlchemySendTransaction } from "./hooks/useAlchemySendTransaction.js";
|
|
4
4
|
export { useAlchemyPrepareSwap } from "./hooks/useAlchemyPrepareSwap.js";
|
|
5
5
|
export { useAlchemySubmitSwap } from "./hooks/useAlchemySubmitSwap.js";
|
|
6
|
-
export { useAlchemySolanaTransaction } from "./hooks/useAlchemySolanaTransaction.js";
|
|
7
6
|
export type { AlchemyProviderConfig, UnsignedTransactionRequest, SendTransactionOptions, SendTransactionResult, UseSendTransactionResult, PrepareSwapRequest, PrepareSwapResult, UsePrepareSwapResult, SubmitSwapResult, UseSubmitSwapResult, SwapQuote, } from "./types.js";
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGlE,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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGlE,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;AAGvE,YAAY,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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;
|
|
34
|
+
//# sourceMappingURL=ReactNativeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactNativeProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/ReactNativeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,GAAG,MAAM,EACV,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,2CAM1C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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;
|
|
34
|
+
//# sourceMappingURL=WebProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/WebProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,GAAG,MAAM,EACV,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,2CAM1C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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";
|
|
12
|
+
//# sourceMappingURL=react-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-native.d.ts","sourceRoot":"","sources":["../../src/react-native.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,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;AAGvE,YAAY,EACV,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,GACV,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { useAlchemySolanaTransaction } from "./hooks/useAlchemySolanaTransaction.js";
|
|
2
|
+
export type { PromiseOrValue, PreSend, TransformInstruction, SolanaTransactionParamOptions, SolanaTransactionParams, SolanaTransactionResult, UseAlchemySolanaTransactionOptions, UseAlchemySolanaTransactionResult, } from "./hooks/useAlchemySolanaTransaction.js";
|
|
3
|
+
//# sourceMappingURL=solana.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solana.d.ts","sourceRoot":"","sources":["../../src/solana.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AAErF,YAAY,EACV,cAAc,EACd,OAAO,EACP,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,kCAAkC,EAClC,iCAAiC,GAClC,MAAM,wCAAwC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createSolanaSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/util/createSolanaSponsoredTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,UAAU,EAGV,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;GAQG;AACH,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,sBAAsB,EAAE,EACtC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"createSolanaSponsoredTransaction.d.ts","sourceRoot":"","sources":["../../../src/util/createSolanaSponsoredTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,UAAU,EAGV,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;GAQG;AACH,wBAAsB,gCAAgC,CACpD,YAAY,EAAE,sBAAsB,EAAE,EACtC,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAgD/B"}
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "4.
|
|
1
|
+
export declare const VERSION = "4.73.1-alpha.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,mBAAmB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@account-kit/privy-integration",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.73.1-alpha.0",
|
|
4
4
|
"description": "Use Alchemy gas sponsorship, swaps and more with Privy",
|
|
5
5
|
"author": "Alchemy",
|
|
6
6
|
"license": "MIT",
|
|
@@ -27,6 +27,16 @@
|
|
|
27
27
|
"import": "./dist/esm/index.js",
|
|
28
28
|
"default": "./dist/esm/index.js"
|
|
29
29
|
},
|
|
30
|
+
"./react-native": {
|
|
31
|
+
"types": "./dist/types/react-native.d.ts",
|
|
32
|
+
"import": "./dist/esm/react-native.js",
|
|
33
|
+
"default": "./dist/esm/react-native.js"
|
|
34
|
+
},
|
|
35
|
+
"./solana": {
|
|
36
|
+
"types": "./dist/types/solana.d.ts",
|
|
37
|
+
"import": "./dist/esm/solana.js",
|
|
38
|
+
"default": "./dist/esm/solana.js"
|
|
39
|
+
},
|
|
30
40
|
"./package.json": "./package.json"
|
|
31
41
|
},
|
|
32
42
|
"scripts": {
|
|
@@ -39,17 +49,30 @@
|
|
|
39
49
|
"test:run": "vitest run --passWithNoTests"
|
|
40
50
|
},
|
|
41
51
|
"devDependencies": {
|
|
52
|
+
"@privy-io/expo": "0.58.1",
|
|
42
53
|
"@privy-io/react-auth": "3.3.0",
|
|
43
54
|
"typescript-template": "*"
|
|
44
55
|
},
|
|
45
56
|
"dependencies": {
|
|
46
|
-
"@account-kit/infra": "^4.
|
|
47
|
-
"@account-kit/wallet-client": "^4.
|
|
57
|
+
"@account-kit/infra": "^4.73.1-alpha.0",
|
|
58
|
+
"@account-kit/wallet-client": "^4.73.1-alpha.0"
|
|
48
59
|
},
|
|
49
60
|
"peerDependencies": {
|
|
61
|
+
"@privy-io/expo": "^0.58.0",
|
|
50
62
|
"@privy-io/react-auth": "^2.3.1 || ^3.0.0",
|
|
51
63
|
"viem": "^2.29.2"
|
|
52
64
|
},
|
|
65
|
+
"peerDependenciesMeta": {
|
|
66
|
+
"@privy-io/react-auth": {
|
|
67
|
+
"optional": true
|
|
68
|
+
},
|
|
69
|
+
"@privy-io/expo": {
|
|
70
|
+
"optional": true
|
|
71
|
+
},
|
|
72
|
+
"@solana/web3.js": {
|
|
73
|
+
"optional": true
|
|
74
|
+
}
|
|
75
|
+
},
|
|
53
76
|
"publishConfig": {
|
|
54
77
|
"access": "public",
|
|
55
78
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -62,5 +85,5 @@
|
|
|
62
85
|
"url": "https://github.com/alchemyplatform/aa-sdk/issues"
|
|
63
86
|
},
|
|
64
87
|
"homepage": "https://github.com/alchemyplatform/aa-sdk#readme",
|
|
65
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "30a05bddab1215d0ba101fcdcdec63894d14c04d"
|
|
66
89
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import {
|
|
3
|
+
usePrivy,
|
|
4
|
+
useEmbeddedEthereumWallet,
|
|
5
|
+
type PrivyEmbeddedWalletProvider,
|
|
6
|
+
} from "@privy-io/expo";
|
|
7
|
+
import type { PrivyAdapter, EmbeddedWallet, PrivyAuthState } from "./types.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Wallet type from @privy-io/expo
|
|
11
|
+
* Based on the example app structure
|
|
12
|
+
*/
|
|
13
|
+
interface ExpoEmbeddedWallet {
|
|
14
|
+
address: string;
|
|
15
|
+
chainId?: string;
|
|
16
|
+
getProvider?: () => Promise<PrivyEmbeddedWalletProvider>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* React Native (Expo) adapter for @privy-io/expo
|
|
21
|
+
* Implements platform-specific hooks for React Native applications
|
|
22
|
+
*/
|
|
23
|
+
export const reactNativeAdapter: PrivyAdapter = {
|
|
24
|
+
useEmbeddedWallet() {
|
|
25
|
+
const { wallets } = useEmbeddedEthereumWallet();
|
|
26
|
+
|
|
27
|
+
const getEmbeddedWallet = useCallback((): EmbeddedWallet => {
|
|
28
|
+
const wallet = wallets?.[0];
|
|
29
|
+
if (!wallet) {
|
|
30
|
+
throw new Error(
|
|
31
|
+
"Privy embedded wallet not found. Please ensure the user is authenticated and has created a wallet.",
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return adaptExpoWallet(wallet);
|
|
36
|
+
}, [wallets]);
|
|
37
|
+
|
|
38
|
+
return getEmbeddedWallet;
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
usePrivyAuth(): PrivyAuthState {
|
|
42
|
+
const { user } = usePrivy();
|
|
43
|
+
return { authenticated: !!user, user };
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
// EIP-7702 authorization not available on React Native
|
|
47
|
+
useAuthorizationSigner() {
|
|
48
|
+
return null;
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Adapts an Expo wallet to the common EmbeddedWallet interface
|
|
54
|
+
*
|
|
55
|
+
* @param {ExpoEmbeddedWallet} wallet - The Expo embedded wallet to adapt
|
|
56
|
+
* @returns {EmbeddedWallet} The adapted wallet following the common interface
|
|
57
|
+
*/
|
|
58
|
+
function adaptExpoWallet(wallet: ExpoEmbeddedWallet): EmbeddedWallet {
|
|
59
|
+
return {
|
|
60
|
+
address: wallet.address as `0x${string}`,
|
|
61
|
+
chainId: wallet.chainId || "1",
|
|
62
|
+
getEthereumProvider: async () => {
|
|
63
|
+
if (!wallet.getProvider) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
"getProvider is not available on this wallet. Ensure you're using the embedded Ethereum wallet.",
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
return await wallet.getProvider();
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Address, Authorization } from "viem";
|
|
2
|
+
import type { AuthorizationRequest } from "@aa-sdk/core";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Platform-agnostic embedded wallet interface
|
|
6
|
+
* Abstracts differences between @privy-io/react-auth and @privy-io/expo
|
|
7
|
+
*/
|
|
8
|
+
export interface EmbeddedWallet {
|
|
9
|
+
/** Wallet address */
|
|
10
|
+
address: Address;
|
|
11
|
+
|
|
12
|
+
/** Chain ID (may be CAIP-2 format like "eip155:1" or numeric) */
|
|
13
|
+
chainId: string | number;
|
|
14
|
+
|
|
15
|
+
/** Get EVM provider for the wallet */
|
|
16
|
+
getEthereumProvider(): Promise<any>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Platform-agnostic Privy auth state
|
|
21
|
+
*/
|
|
22
|
+
export interface PrivyAuthState {
|
|
23
|
+
/** Whether user is authenticated */
|
|
24
|
+
authenticated: boolean;
|
|
25
|
+
|
|
26
|
+
/** User object (platform-specific, used for cache invalidation) */
|
|
27
|
+
user: any;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Adapter interface that each platform must implement
|
|
32
|
+
* Provides platform-specific Privy functionality
|
|
33
|
+
*/
|
|
34
|
+
export interface PrivyAdapter {
|
|
35
|
+
/**
|
|
36
|
+
* Hook to get embedded wallet
|
|
37
|
+
* Must be called as a React hook (follows rules of hooks)
|
|
38
|
+
*/
|
|
39
|
+
useEmbeddedWallet(): () => EmbeddedWallet;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Hook to get Privy authentication state
|
|
43
|
+
* Must be called as a React hook (follows rules of hooks)
|
|
44
|
+
*/
|
|
45
|
+
usePrivyAuth(): PrivyAuthState;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Hook to get EIP-7702 authorization signer (optional, web only)
|
|
49
|
+
* Must be called as a React hook (follows rules of hooks)
|
|
50
|
+
*/
|
|
51
|
+
useAuthorizationSigner?():
|
|
52
|
+
| ((
|
|
53
|
+
auth: AuthorizationRequest<number>,
|
|
54
|
+
) => Promise<Authorization<number, true>>)
|
|
55
|
+
| null;
|
|
56
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import {
|
|
3
|
+
useWallets,
|
|
4
|
+
usePrivy,
|
|
5
|
+
useSign7702Authorization,
|
|
6
|
+
type ConnectedWallet as PrivyWallet,
|
|
7
|
+
} from "@privy-io/react-auth";
|
|
8
|
+
import type { Authorization } from "viem";
|
|
9
|
+
import type { AuthorizationRequest } from "@aa-sdk/core";
|
|
10
|
+
import type { PrivyAdapter, EmbeddedWallet, PrivyAuthState } from "./types.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Web adapter for @privy-io/react-auth
|
|
14
|
+
* Implements platform-specific hooks for React web applications
|
|
15
|
+
*/
|
|
16
|
+
export const webAdapter: PrivyAdapter = {
|
|
17
|
+
useEmbeddedWallet() {
|
|
18
|
+
const { wallets } = useWallets();
|
|
19
|
+
|
|
20
|
+
const getEmbeddedWallet = useCallback((): EmbeddedWallet => {
|
|
21
|
+
const embedded = wallets.find((w) => w.walletClientType === "privy");
|
|
22
|
+
if (!embedded) {
|
|
23
|
+
throw new Error(
|
|
24
|
+
"Privy embedded wallet not found. Please ensure the user is authenticated.",
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return adaptWebWallet(embedded);
|
|
29
|
+
}, [wallets]);
|
|
30
|
+
|
|
31
|
+
return getEmbeddedWallet;
|
|
32
|
+
},
|
|
33
|
+
|
|
34
|
+
usePrivyAuth(): PrivyAuthState {
|
|
35
|
+
const { user } = usePrivy();
|
|
36
|
+
return { authenticated: !!user, user };
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
useAuthorizationSigner() {
|
|
40
|
+
const { signAuthorization } = useSign7702Authorization();
|
|
41
|
+
|
|
42
|
+
return useCallback(
|
|
43
|
+
async (
|
|
44
|
+
unsignedAuth: AuthorizationRequest<number>,
|
|
45
|
+
): Promise<Authorization<number, true>> => {
|
|
46
|
+
const signature = await signAuthorization({
|
|
47
|
+
...unsignedAuth,
|
|
48
|
+
contractAddress: unsignedAuth.address ?? unsignedAuth.contractAddress,
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
return {
|
|
52
|
+
...unsignedAuth,
|
|
53
|
+
...signature,
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
[signAuthorization],
|
|
57
|
+
);
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Adapts a Privy web wallet to the common EmbeddedWallet interface
|
|
63
|
+
*
|
|
64
|
+
* @param {PrivyWallet} wallet - The Privy web wallet to adapt
|
|
65
|
+
* @returns {EmbeddedWallet} The adapted wallet following the common interface
|
|
66
|
+
*/
|
|
67
|
+
function adaptWebWallet(wallet: PrivyWallet): EmbeddedWallet {
|
|
68
|
+
return {
|
|
69
|
+
address: wallet.address as `0x${string}`,
|
|
70
|
+
chainId: wallet.chainId || "1",
|
|
71
|
+
getEthereumProvider: () => wallet.getEthereumProvider(),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
@@ -1,29 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
useWallets,
|
|
4
|
-
type ConnectedWallet as PrivyWallet,
|
|
5
|
-
} from "@privy-io/react-auth";
|
|
1
|
+
import { useAdapter } from "../../context/AlchemyContext.js";
|
|
6
2
|
|
|
7
3
|
/**
|
|
8
4
|
* Internal hook to get the Privy embedded wallet
|
|
9
|
-
*
|
|
5
|
+
* Uses the platform adapter to abstract differences between web and React Native
|
|
10
6
|
*
|
|
11
7
|
* @internal
|
|
12
|
-
* @returns {() =>
|
|
8
|
+
* @returns {() => EmbeddedWallet} Function that returns the embedded wallet
|
|
13
9
|
* @throws {Error} If embedded wallet is not found
|
|
14
10
|
*/
|
|
15
11
|
export function useEmbeddedWallet() {
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
const getEmbeddedWallet = useCallback((): PrivyWallet => {
|
|
19
|
-
const embedded = wallets.find((w) => w.walletClientType === "privy");
|
|
20
|
-
if (!embedded) {
|
|
21
|
-
throw new Error(
|
|
22
|
-
"Privy embedded wallet not found. Please ensure the user is authenticated.",
|
|
23
|
-
);
|
|
24
|
-
}
|
|
25
|
-
return embedded;
|
|
26
|
-
}, [wallets]);
|
|
27
|
-
|
|
28
|
-
return getEmbeddedWallet;
|
|
12
|
+
const adapter = useAdapter();
|
|
13
|
+
return adapter.useEmbeddedWallet();
|
|
29
14
|
}
|
|
@@ -1,22 +1,16 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
type AuthorizationRequest,
|
|
5
|
-
ConnectionConfigSchema,
|
|
6
|
-
} from "@aa-sdk/core";
|
|
7
|
-
import {
|
|
8
|
-
createWalletClient,
|
|
9
|
-
custom,
|
|
10
|
-
type Address,
|
|
11
|
-
type Authorization,
|
|
12
|
-
} from "viem";
|
|
13
|
-
import { useSign7702Authorization } from "@privy-io/react-auth";
|
|
2
|
+
import { WalletClientSigner, ConnectionConfigSchema } from "@aa-sdk/core";
|
|
3
|
+
import { createWalletClient, custom, type Address } from "viem";
|
|
14
4
|
import {
|
|
15
5
|
createSmartWalletClient,
|
|
16
6
|
type SmartWalletClient,
|
|
17
7
|
} from "@account-kit/wallet-client";
|
|
18
8
|
import { alchemy } from "@account-kit/infra";
|
|
19
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
useAlchemyConfig,
|
|
11
|
+
useClientCache,
|
|
12
|
+
useAdapter,
|
|
13
|
+
} from "../context/AlchemyContext.js";
|
|
20
14
|
import { getChain } from "../util/getChain.js";
|
|
21
15
|
import { useEmbeddedWallet } from "./internal/useEmbeddedWallet.js";
|
|
22
16
|
|
|
@@ -34,7 +28,8 @@ import { useEmbeddedWallet } from "./internal/useEmbeddedWallet.js";
|
|
|
34
28
|
* ```
|
|
35
29
|
*/
|
|
36
30
|
export function useAlchemyClient() {
|
|
37
|
-
const
|
|
31
|
+
const adapter = useAdapter();
|
|
32
|
+
const signAuthorizationFn = adapter.useAuthorizationSigner?.() || null;
|
|
38
33
|
const config = useAlchemyConfig();
|
|
39
34
|
const cache = useClientCache();
|
|
40
35
|
const getEmbeddedWallet = useEmbeddedWallet();
|
|
@@ -97,23 +92,13 @@ export function useAlchemyClient() {
|
|
|
97
92
|
"privy",
|
|
98
93
|
);
|
|
99
94
|
|
|
100
|
-
// Extend signer with EIP-7702 authorization support
|
|
101
|
-
const signer =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
...unsignedAuth,
|
|
108
|
-
contractAddress: unsignedAuth.address ?? unsignedAuth.contractAddress,
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
return {
|
|
112
|
-
...unsignedAuth,
|
|
113
|
-
...signature,
|
|
114
|
-
};
|
|
115
|
-
},
|
|
116
|
-
};
|
|
95
|
+
// Extend signer with EIP-7702 authorization support (if available)
|
|
96
|
+
const signer = signAuthorizationFn
|
|
97
|
+
? {
|
|
98
|
+
...baseSigner,
|
|
99
|
+
signAuthorization: signAuthorizationFn,
|
|
100
|
+
}
|
|
101
|
+
: baseSigner;
|
|
117
102
|
|
|
118
103
|
// Determine transport configuration using schema validation
|
|
119
104
|
// This properly handles combinations like rpcUrl + jwt together
|
|
@@ -148,7 +133,7 @@ export function useAlchemyClient() {
|
|
|
148
133
|
}, [
|
|
149
134
|
getEmbeddedWallet,
|
|
150
135
|
getEmbeddedWalletChain,
|
|
151
|
-
|
|
136
|
+
signAuthorizationFn,
|
|
152
137
|
config.apiKey,
|
|
153
138
|
config.jwt,
|
|
154
139
|
config.rpcUrl,
|
package/src/index.ts
CHANGED
|
@@ -6,7 +6,6 @@ export { useAlchemyClient } from "./hooks/useAlchemyClient.js";
|
|
|
6
6
|
export { useAlchemySendTransaction } from "./hooks/useAlchemySendTransaction.js";
|
|
7
7
|
export { useAlchemyPrepareSwap } from "./hooks/useAlchemyPrepareSwap.js";
|
|
8
8
|
export { useAlchemySubmitSwap } from "./hooks/useAlchemySubmitSwap.js";
|
|
9
|
-
export { useAlchemySolanaTransaction } from "./hooks/useAlchemySolanaTransaction.js";
|
|
10
9
|
|
|
11
10
|
// Types
|
|
12
11
|
export type {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* React Native (Expo) entry point
|
|
3
|
+
* Import from '@account-kit/privy-integration/react-native' in Expo apps
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// Provider
|
|
7
|
+
export { AlchemyProvider } from "./providers/ReactNativeProvider.js";
|
|
8
|
+
export { useAlchemyConfig } from "./context/AlchemyContext.js";
|
|
9
|
+
|
|
10
|
+
// Hooks
|
|
11
|
+
export { useAlchemyClient } from "./hooks/useAlchemyClient.js";
|
|
12
|
+
export { useAlchemySendTransaction } from "./hooks/useAlchemySendTransaction.js";
|
|
13
|
+
export { useAlchemyPrepareSwap } from "./hooks/useAlchemyPrepareSwap.js";
|
|
14
|
+
export { useAlchemySubmitSwap } from "./hooks/useAlchemySubmitSwap.js";
|
|
15
|
+
|
|
16
|
+
// Types
|
|
17
|
+
export type {
|
|
18
|
+
AlchemyProviderConfig,
|
|
19
|
+
UnsignedTransactionRequest,
|
|
20
|
+
SendTransactionOptions,
|
|
21
|
+
SendTransactionResult,
|
|
22
|
+
UseSendTransactionResult,
|
|
23
|
+
PrepareSwapRequest,
|
|
24
|
+
PrepareSwapResult,
|
|
25
|
+
UsePrepareSwapResult,
|
|
26
|
+
SubmitSwapResult,
|
|
27
|
+
UseSubmitSwapResult,
|
|
28
|
+
SwapQuote,
|
|
29
|
+
} from "./types.js";
|
package/src/solana.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Solana-specific exports
|
|
2
|
+
// Import from '@account-kit/privy-integration/solana' to use Solana functionality
|
|
3
|
+
// This ensures @solana/web3.js is only loaded when explicitly needed
|
|
4
|
+
|
|
5
|
+
export { useAlchemySolanaTransaction } from "./hooks/useAlchemySolanaTransaction.js";
|
|
6
|
+
|
|
7
|
+
export type {
|
|
8
|
+
PromiseOrValue,
|
|
9
|
+
PreSend,
|
|
10
|
+
TransformInstruction,
|
|
11
|
+
SolanaTransactionParamOptions,
|
|
12
|
+
SolanaTransactionParams,
|
|
13
|
+
SolanaTransactionResult,
|
|
14
|
+
UseAlchemySolanaTransactionOptions,
|
|
15
|
+
UseAlchemySolanaTransactionResult,
|
|
16
|
+
} from "./hooks/useAlchemySolanaTransaction.js";
|
package/src/version.ts
CHANGED