diff --git a/content/docs.yml b/content/docs.yml
index 1bce68e16..daddbf11d 100644
--- a/content/docs.yml
+++ b/content/docs.yml
@@ -951,7 +951,7 @@ navigation:
path: wallets/pages/third-party/signers/turnkey.mdx
- page: Other signers
path: wallets/pages/third-party/signers/custom-integration.mdx
- - section: Account kit
+ - section: Account Kit (v4)
collapsed: true
contents:
- section: Login methods
diff --git a/content/wallets/pages/authentication/login-methods/bring-your-own-auth.mdx b/content/wallets/pages/authentication/login-methods/bring-your-own-auth.mdx
index a7e5cb04b..190799d48 100644
--- a/content/wallets/pages/authentication/login-methods/bring-your-own-auth.mdx
+++ b/content/wallets/pages/authentication/login-methods/bring-your-own-auth.mdx
@@ -68,7 +68,7 @@ Your JWTs must contain these claims:
Generate the `targetPublicKey` from the [authentication
- SDK](/docs/wallets/reference/account-kit/signer/classes/AlchemySignerWebClient/targetPublicKey).
+ SDK](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/signer/src/client/base.ts).
diff --git a/content/wallets/pages/concepts/middleware.mdx b/content/wallets/pages/concepts/middleware.mdx
index 61c9489d6..4915c2718 100644
--- a/content/wallets/pages/concepts/middleware.mdx
+++ b/content/wallets/pages/concepts/middleware.mdx
@@ -14,7 +14,7 @@ Middleware allows you to avoid having to write the same flows over and over when
When using the [React](/docs/wallets/react/quickstart),
[Core](/docs/wallets/core/overview), or
- [Infra](/docs/wallets/reference/account-kit/infra) packages, the Smart Account
+ [Infra](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/account-kit/infra) packages, the Smart Account
Clients are already configured to use the appropriate middleware for your
needs. If you want to sponsor gas, the Smart Account Clients in these packages
abstract the relevant middleware away since all you need is a
@@ -24,7 +24,7 @@ Middleware allows you to avoid having to write the same flows over and over when
As mentioned above, the client can be configured with a series of middleware that always run in the same order:
1. `dummyPaymasterAndData` - Generates a dummy paymaster and data for gas estimation if using a paymaster (default: noop)
-2. `feeEstimator` - Estimates the fees for a transaction. If you are using Wallet APIs RPCs, use the [`alchemyFeeEstimator`](/docs/wallets/reference/account-kit/infra) middleware.
+2. `feeEstimator` - Estimates the fees for a transaction. If you are using Wallet APIs RPCs, use the [`alchemyFeeEstimator`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/infra/src/middleware/feeEstimator.ts) middleware.
3. `gasEstimator` - Estimates the gas limits for a transaction. The default middleware calls the underlying RPC to `eth_estimateUserOperationGas`.
4. `customMiddleware` - Allows you to define custom middleware to run before requesting sponsorship if there are any additional steps you need to take before requesting sponsorship. (default: noop)
5. `paymasterAndData` - Requests gas sponsorship. (default: noop)
diff --git a/content/wallets/pages/core/overview.mdx b/content/wallets/pages/core/overview.mdx
index 68fee7c46..6ae10aa95 100644
--- a/content/wallets/pages/core/overview.mdx
+++ b/content/wallets/pages/core/overview.mdx
@@ -20,8 +20,8 @@ how you can leverage this package to build your own integration with Wallet APIs
`@account-kit/core` is itself a higher level wrapper around the three lower level SDKs:
-* [`@account-kit/infra`](/docs/wallets/reference/account-kit/infra) - this package contains all of the Smart Account Client and Gas Manager definitions you need to interact with the infrastructure services.
+* [`@account-kit/infra`](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/account-kit/infra) - this package contains all of the Smart Account Client and Gas Manager definitions you need to interact with the infrastructure services.
* [`@account-kit/signer`](/docs/wallets/signer/what-is-a-signer) - this package contains all of the utilities you need to instantiate and interact with the authentication service. This allows you to provision wallets for your users that can be used as owners on smart wallets.
-* [`@account-kit/smart-contracts`](/docs/wallets/reference/account-kit/smart-contracts) - this package contains all definitions for the smart contracts and allows you to provision and deploy smart contracts for your users seamlessly.
+* [`@account-kit/smart-contracts`](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/account-kit/smart-contracts) - this package contains all definitions for the smart contracts and allows you to provision and deploy smart contracts for your users seamlessly.
Using these packages directly offers you the most control over your stack, but requires significantly more work to get started.
diff --git a/content/wallets/pages/low-level-infra/third-party-infrastructure/bundlers.mdx b/content/wallets/pages/low-level-infra/third-party-infrastructure/bundlers.mdx
index fa8deadce..75d76c0e7 100644
--- a/content/wallets/pages/low-level-infra/third-party-infrastructure/bundlers.mdx
+++ b/content/wallets/pages/low-level-infra/third-party-infrastructure/bundlers.mdx
@@ -33,7 +33,7 @@ any other provider's URL.
## Splitting bundler traffic and node RPC traffic
-You may want to use a different RPC provider for your bundler traffic and your node traffic. This is a common use case, and you can do this by leveraging the [`split`](/docs/wallets/reference/aa-sdk/core/functions/split) transport and passing it to your `createSmartAccountClient` call. For example:
+You may want to use a different RPC provider for your bundler traffic and your node traffic. This is a common use case, and you can do this by leveraging the [`split`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/transport/split.ts) transport and passing it to your `createSmartAccountClient` call. For example:
### Bundler and Gas Manager with third-party RPCs
diff --git a/content/wallets/pages/low-level-infra/third-party-infrastructure/chains.mdx b/content/wallets/pages/low-level-infra/third-party-infrastructure/chains.mdx
index 7a1b7a53b..c4b775ca5 100644
--- a/content/wallets/pages/low-level-infra/third-party-infrastructure/chains.mdx
+++ b/content/wallets/pages/low-level-infra/third-party-infrastructure/chains.mdx
@@ -32,4 +32,4 @@ const smartAccountClient = createLightAccountAlchemyClient({
To use non-Alchemy supported chains, use the `createSmartAccountClient` method from `@aa-sdk/core` or any of the non-Alchemy `create*Client` methods exported from `@account-kit/smart-contracts` with a `chain` definition for your chain and a `transport` pointing to your RPC provider.
-See [`createSmartAccountClient`](/docs/wallets/reference/aa-sdk/core/functions/createSmartAccountClient) for more information.
+See [`createSmartAccountClient`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/client/smartAccountClient.ts) for more information.
diff --git a/content/wallets/pages/react-native/overview.mdx b/content/wallets/pages/react-native/overview.mdx
index 331ba4366..2dcc98bc0 100644
--- a/content/wallets/pages/react-native/overview.mdx
+++ b/content/wallets/pages/react-native/overview.mdx
@@ -7,7 +7,7 @@ slug: wallets/react-native/overview
import { ExpoIcon } from "../../components/icons/ExpoIcon";
import { ReactNativeIcon } from "../../components/icons/ReactNativeIcon";
-A simple example for reference purposes is available [here](https://github.com/alchemyplatform/aa-sdk/tree/main/examples/react-native-expo-example). This was built using Expo, but the same principles apply to a bare React Native app as well.
+A simple example for reference purposes is available [here](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/examples/react-native-expo-example). This was built using Expo, but the same principles apply to a bare React Native app as well.
## Getting Started
diff --git a/content/wallets/pages/react/customization/theme.mdx b/content/wallets/pages/react/customization/theme.mdx
index 3acaebdf5..f114cbb54 100644
--- a/content/wallets/pages/react/customization/theme.mdx
+++ b/content/wallets/pages/react/customization/theme.mdx
@@ -28,7 +28,7 @@ Theme customizations and styling are passed through `withAccountKitUi`, the Wall
## Colors
-The [Wallet APIs Theme](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/react/src/tailwind/types.ts) object passed to `withAccountKitUi` supports an overridable `colors` object which accepts a set of color values. Each color is a key-value pair where the key is the name of the color and the value is an object containing the `light` and `dark` mode value to use.
+The [Wallet APIs Theme](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/tailwind/types.ts) object passed to `withAccountKitUi` supports an overridable `colors` object which accepts a set of color values. Each color is a key-value pair where the key is the name of the color and the value is an object containing the `light` and `dark` mode value to use.
### Border colors
@@ -173,7 +173,7 @@ The available options are:
Unlike colors and border radius, illustration styles are not passed through the Tailwind plugin.
-Customize the illustration style of various icons used in the components by passing one of the [enum values](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/react/src/types.ts) to `illustrationStyle` in your `uiConfig` when you call `createConfig`.
+Customize the illustration style of various icons used in the components by passing one of the [enum values](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/types.ts) to `illustrationStyle` in your `uiConfig` when you call `createConfig`.
```ts twoslash
import { createConfig } from "@account-kit/react";
diff --git a/content/wallets/pages/react/getting-started/initialization.mdx b/content/wallets/pages/react/getting-started/initialization.mdx
index 65e020542..67790157f 100644
--- a/content/wallets/pages/react/getting-started/initialization.mdx
+++ b/content/wallets/pages/react/getting-started/initialization.mdx
@@ -23,8 +23,8 @@ This command passes in flags to use Typescript, Tailwind and the next app router
You need these three libraries:
-* **@account-kit/infra**: Core interfaces and functions for Wallet APIs ([learn more](/docs/wallets/reference/account-kit/infra))
-* **@account-kit/react**: React Hooks, components and utilities for Wallet APIs ([learn more](/docs/wallets/reference/account-kit/react))
+* **@account-kit/infra**: Core interfaces and functions for Wallet APIs ([learn more](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/account-kit/infra))
+* **@account-kit/react**: React Hooks, components and utilities for Wallet APIs ([learn more](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/account-kit/react))
* **@tanstack/react-query**: A required async state library to make Wallet APIs react hooks easier to use ([learn more about this library's motivation here](https://tanstack.com/query/latest/docs/framework/react/overview))
Go ahead and install them to the project with a single command:
diff --git a/content/wallets/pages/react/login-methods/eoa-login.mdx b/content/wallets/pages/react/login-methods/eoa-login.mdx
index d2b042cd9..7f0ff3497 100644
--- a/content/wallets/pages/react/login-methods/eoa-login.mdx
+++ b/content/wallets/pages/react/login-methods/eoa-login.mdx
@@ -110,7 +110,7 @@ If you don't want to use pre-built UI components, you can use React hooks to cus
### EVM connectors
-Use the [useConnect](https://www.alchemy.com/docs/wallets/reference/account-kit/react/hooks/useConnect) hook to allow users to connect their EOA via available connectors:
+Use the [useConnect](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useConnect.ts) hook to allow users to connect their EOA via available connectors:
```tsx twoslash
// @noErrors
diff --git a/content/wallets/pages/react/login-methods/passkey-login.mdx b/content/wallets/pages/react/login-methods/passkey-login.mdx
index a8014a27f..b408be16e 100644
--- a/content/wallets/pages/react/login-methods/passkey-login.mdx
+++ b/content/wallets/pages/react/login-methods/passkey-login.mdx
@@ -66,7 +66,7 @@ type PasskeyAuthType = {
};
```
-You can find the full type definition in the [Account Kit source code](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/react/src/components/auth/types.ts).
+You can find the full type definition in the [Account Kit source code](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/components/auth/types.ts).
For more details on UI component customization, see the [UI Components](/docs/wallets/react/ui-components) documentation.
diff --git a/content/wallets/pages/react/login-methods/social-providers.mdx b/content/wallets/pages/react/login-methods/social-providers.mdx
index d2c574b64..738d7a7eb 100644
--- a/content/wallets/pages/react/login-methods/social-providers.mdx
+++ b/content/wallets/pages/react/login-methods/social-providers.mdx
@@ -139,7 +139,7 @@ type SocialAuthType = {
};
```
-You can find the full type definition in the [Account Kit source code](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/react/src/components/auth/types.ts).
+You can find the full type definition in the [Account Kit source code](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/components/auth/types.ts).
For more details on UI component customization, see the [UI Components](/docs/wallets/react/ui-components) documentation.
diff --git a/content/wallets/pages/react/solana-wallets/get-started.mdx b/content/wallets/pages/react/solana-wallets/get-started.mdx
index d1d072fce..356f90e12 100644
--- a/content/wallets/pages/react/solana-wallets/get-started.mdx
+++ b/content/wallets/pages/react/solana-wallets/get-started.mdx
@@ -122,7 +122,7 @@ function MyComponent() {
## Using the `useSolanaTransaction` hook
-If you want to connect to a user’s Solana Wallet and send transactions, you should use the [`useSolanaTransaction`](/docs/wallets/reference/account-kit/react/hooks/useSolanaTransaction) hook. This hook also exposes the Solana wallet address through the `signer.address` parameter.
+If you want to connect to a user’s Solana Wallet and send transactions, you should use the [`useSolanaTransaction`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useSolanaTransaction.ts) hook. This hook also exposes the Solana wallet address through the `signer.address` parameter.
## Not using React hooks?
diff --git a/content/wallets/pages/react/ui-components.mdx b/content/wallets/pages/react/ui-components.mdx
index 95865949b..07edfc52b 100644
--- a/content/wallets/pages/react/ui-components.mdx
+++ b/content/wallets/pages/react/ui-components.mdx
@@ -30,7 +30,7 @@ If your users have an authenticator app (TOTP) set up, the UI components will au
## Modal auth
-Assuming your application has been [set up](/docs/wallets/react/quickstart), using UI components is the easiest way to authenticate users. All you have to do is leverage the [`useAuthModal`](/docs/wallets/reference/account-kit/react/hooks/useAuthModal) hook and provide users a CTA to open the modal.
+Assuming your application has been [set up](/docs/wallets/react/quickstart), using UI components is the easiest way to authenticate users. All you have to do is leverage the [`useAuthModal`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useAuthModal.ts) hook and provide users a CTA to open the modal.
```tsx twoslash
import React from "react";
@@ -43,7 +43,7 @@ export default function MyPage() {
}
```
-That's it! When the user clicks that button, the modal will open and they can complete authentication. Once they are authenticated, you can use the [`useAccount`](/docs/wallets/reference/account-kit/react/hooks/useAccount) hook to get the logged in user's SCA address.
+That's it! When the user clicks that button, the modal will open and they can complete authentication. Once they are authenticated, you can use the [`useAccount`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useAccount.ts) hook to get the logged in user's SCA address.
**Want to display a loading state during authentication?**
For authentication with redirects in a modal, you may want to add a loading state when users are waiting for authentication to complete.
@@ -80,7 +80,7 @@ export default function MyLoginPage() {
}
```
-That's it! The user can now input their credentials and complete login. Once they are authenticated, you can use the [`useAccount`](/docs/wallets/reference/account-kit/react/hooks/useAccount) hook to get the logged in user's SCA address.
+That's it! The user can now input their credentials and complete login. Once they are authenticated, you can use the [`useAccount`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useAccount.ts) hook to get the logged in user's SCA address.
## Customize authentication UI
@@ -96,7 +96,7 @@ When rendering the authentication component to your users, it's possible to cust
* `sections` object is an array of arrays representing the various sections in descending order, each section (element in the outer array) separated by a divider in the UI
* each item within a section is an `AuthTypes` objects containing configuration parameters for that authentication method.
-**The following [`AuthTypes`](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/react/src/components/auth/types.ts)
+**The following [`AuthTypes`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/components/auth/types.ts)
can be passed into sections:**
### Email
diff --git a/content/wallets/pages/recipes/hyperliquid-wallets.mdx b/content/wallets/pages/recipes/hyperliquid-wallets.mdx
index 990ca2d83..94d077c3d 100644
--- a/content/wallets/pages/recipes/hyperliquid-wallets.mdx
+++ b/content/wallets/pages/recipes/hyperliquid-wallets.mdx
@@ -74,13 +74,13 @@ The most important step is getting your API key (`NEXT_PUBLIC_ALCHEMY_API_KEY`)
-Next, navigate to your `page.tsx`, and get the embedded EOA address using [useSigner()](https://www.alchemy.com/docs/wallets/reference/account-kit/react/hooks/useSigner). This new embedded EOA will be where user assets live and will sign transactions.
+Next, navigate to your `page.tsx`, and get the embedded EOA address using [useSigner()](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useSigner.ts). This new embedded EOA will be where user assets live and will sign transactions.
```tsx
const signer = useSigner();
```
-Note: to access your embedded EOA, you need to have finished authentication. To check your authentication status, use [useSignerStatus()](https://www.alchemy.com/docs/wallets/reference/account-kit/react/hooks/useSignerStatus). For example:
+Note: to access your embedded EOA, you need to have finished authentication. To check your authentication status, use [useSignerStatus()](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useSignerStatus.ts). For example:
```tsx
...
@@ -230,7 +230,7 @@ export const HYPERLIQUID_CALLDATA = (() => {
### Using React
-If you are working in React, you can use the [useSendUserOperation](https://www.alchemy.com/docs/wallets/reference/account-kit/react/hooks/useSendUserOperation) hook. Make sure you have set up your config from step 1.
+If you are working in React, you can use the [useSendUserOperation](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useSendUserOperation.ts) hook. Make sure you have set up your config from step 1.
```tsx
import React from "react";
@@ -279,7 +279,7 @@ export default ComponentWithSendUserOperation;
### Without React
-If you are not using React, you can send the same user operation directly with the [Modular Account V2 client](https://www.alchemy.com/docs/wallets/reference/account-kit/smart-contracts/functions/createModularAccountV2Client) in account-kit, passing in the chain config from step 1 and signer from step 2.
+If you are not using React, you can send the same user operation directly with the [Modular Account V2 client](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/smart-contracts/src/ma-v2/client/client.ts) in account-kit, passing in the chain config from step 1 and signer from step 2.
```ts
import { createModularAccountV2Client } from "@account-kit/smart-contracts";
diff --git a/content/wallets/pages/recipes/multi-chain-setup.mdx b/content/wallets/pages/recipes/multi-chain-setup.mdx
index b4e4efe1d..4d513d5f1 100644
--- a/content/wallets/pages/recipes/multi-chain-setup.mdx
+++ b/content/wallets/pages/recipes/multi-chain-setup.mdx
@@ -39,7 +39,7 @@ export const config = createConfig({
## Change chains
-Once your app is configured to use multiple chains, you can switch between them at any time using the [`useChain`](/docs/wallets/reference/account-kit/react/hooks/useChain) hook.
+Once your app is configured to use multiple chains, you can switch between them at any time using the [`useChain`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useChain.ts) hook.
```tsx twoslash
import React from "react";
@@ -94,7 +94,7 @@ export const config = createConfig({
## Change chains
-Once your app is configured to use multiple chains, you can switch between them at any time using the [`setChain`](/docs/wallets/reference/account-kit/core/functions/setChain) function.
+Once your app is configured to use multiple chains, you can switch between them at any time using the [`setChain`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/core/src/actions/setChain.ts) function.
Changing the chain will trigger state changes in your app (eg. the
diff --git a/content/wallets/pages/recipes/smart-wallets-aave.mdx b/content/wallets/pages/recipes/smart-wallets-aave.mdx
index ebb4bb75a..16c371e5f 100644
--- a/content/wallets/pages/recipes/smart-wallets-aave.mdx
+++ b/content/wallets/pages/recipes/smart-wallets-aave.mdx
@@ -7,7 +7,7 @@ description: >-
slug: wallets/recipes/smart-wallets-aave
---
-Learn how to build DeFi applications that interact with Aave using Wallet APIs. This recipe covers supplying and withdrawing assets with both the [Core library](/docs/wallets/reference/aa-sdk/core) and the [Wallet APIs](/docs/wallets/api-reference/smart-wallets/wallet-api-endpoints/wallet-request-account) for seamless user experiences.
+Learn how to build DeFi applications that interact with Aave using Wallet APIs. This recipe covers supplying and withdrawing assets with both the [Core library](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/aa-sdk/core) and the [Wallet APIs](/docs/wallets/api-reference/smart-wallets/wallet-api-endpoints/wallet-request-account) for seamless user experiences.
## Prerequisites
diff --git a/content/wallets/pages/resources/faqs.mdx b/content/wallets/pages/resources/faqs.mdx
index 96ad3a338..649cf9d87 100644
--- a/content/wallets/pages/resources/faqs.mdx
+++ b/content/wallets/pages/resources/faqs.mdx
@@ -29,7 +29,7 @@ slug: wallets/resources/faqs
Your smart wallet deploys when the first `UserOperation` (UO) is
sent from the account. The first UO must be sent with a non-zero `initCode`.
aa-sdk handles generation of this `initCode` for you using
- [`getAccountInitCode`](/docs/wallets/reference/aa-sdk/core/functions/toSmartContractAccount).
+ [`getAccountInitCode`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/account/smartContractAccount.ts).
### How do I upgrade a Light Account?
@@ -86,9 +86,9 @@ slug: wallets/resources/faqs
This can happen when `UserOperation`s (UOs) become underpriced, frequently due to fee market movement between when gas and fees are estimations and when the UO is actually submitted.
- You may experience this when calling the [`waitForUserOperationTransaction`](/docs/wallets/reference/aa-sdk/core/variables/waitForUserOperationTransaction) method. It may throw an error if it does not find the UO in a mined Transaction within its retry limits.
+ You may experience this when calling the [`waitForUserOperationTransaction`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/actions/smartAccount/waitForUserOperationTransacation.ts) method. It may throw an error if it does not find the UO in a mined Transaction within its retry limits.
- You can mitigate this by defining a more flexible retry period when constructing a [`Client`](/docs/wallets/reference/aa-sdk/core/functions/createSmartAccountClient) (i.e. `txMaxRetries`, `txRetryIntervalMs`, `txRetryMultiplier` in `opts`). If your UO continues to be delayed beyond a limit you are willing to wait, you can resubmit it using [`dropAndReplaceUserOperation`](/docs/wallets/reference/aa-sdk/core/functions/dropAndReplaceUserOperation).
+ You can mitigate this by defining a more flexible retry period when constructing a [`Client`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/client/smartAccountClient.ts) (i.e. `txMaxRetries`, `txRetryIntervalMs`, `txRetryMultiplier` in `opts`). If your UO continues to be delayed beyond a limit you are willing to wait, you can resubmit it using [`dropAndReplaceUserOperation`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/actions/smartAccount/dropAndReplaceUserOperation.ts).
### Are `UserOperation`s protected from MEV bots?
@@ -192,7 +192,7 @@ slug: wallets/resources/faqs
Use this flow when you need to verify user sessions created by SCAs via Wallet APIs.
- 1. The frontend generates a stamped request using [signer.inner.stampWhoAmI](https://www.alchemy.com/docs/wallets/reference/account-kit/signer/classes/BaseSignerClient#stampwhoami).
+ 1. The frontend generates a stamped request using [signer.inner.stampWhoAmI](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/signer/src/client/base.ts).
2. It sends the stamp to your backend.
3. The backend calls the [/signer/v1/whoami](https://www.alchemy.com/docs/node/smart-wallets/signer-api-endpoints/auth-user) endpoint to verify the identity.
4. If you need to make subsequent requests, you can avoid calling the whoami endpoint on every request. After verifying the `whoami`, the backend can issue its own session token (e.g. an HTTP-only cookie or access token). If the token is present, you can safely skip the `whoami` check.
@@ -253,11 +253,11 @@ slug: wallets/resources/faqs
### `waitForUserOperationTransaction` timeout
- [`waitForUserOperationTransaction`](/docs/wallets/reference/aa-sdk/core/variables/waitForUserOperationTransaction) may throw this error if it does not find the mined User Operation within its retry limits.
+ [`waitForUserOperationTransaction`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/actions/smartAccount/waitForUserOperationTransacation.ts) may throw this error if it does not find the mined User Operation within its retry limits.
- You can mitigate this by defining a more flexible retry period when constructing a [`Client`](/docs/wallets/reference/aa-sdk/core/functions/createSmartAccountClient) (i.e. `txMaxRetries`, `txRetryIntervalMs`, `txRetryMultiplier` in `opts`).
+ You can mitigate this by defining a more flexible retry period when constructing a [`Client`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/client/smartAccountClient.ts) (i.e. `txMaxRetries`, `txRetryIntervalMs`, `txRetryMultiplier` in `opts`).
- If your `UserOperation` continues to be delayed beyond a limit you are willing to wait, you can resubmit the user operation using [`dropAndReplaceUserOperation`](/docs/wallets/reference/aa-sdk/core/functions/dropAndReplaceUserOperation#usage).
+ If your `UserOperation` continues to be delayed beyond a limit you are willing to wait, you can resubmit the user operation using [`dropAndReplaceUserOperation`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/actions/smartAccount/dropAndReplaceUserOperation.ts).
### `Although one or more Error Occurred [execution reverted] Contract Execution Completed` on etherscan
@@ -358,7 +358,7 @@ createConfig({
})
```
-[Reference: createConfig](https://www.alchemy.com/docs/wallets/reference/account-kit/react/functions/createConfig)
+[Reference: createConfig](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/createConfig.ts)
***
diff --git a/content/wallets/pages/resources/types.mdx b/content/wallets/pages/resources/types.mdx
index 6591d199d..749848b60 100644
--- a/content/wallets/pages/resources/types.mdx
+++ b/content/wallets/pages/resources/types.mdx
@@ -116,7 +116,7 @@ export type BundlerActions = {
## `BundlerClient`
-`BundlerClient` is a custom `viem` [`Client`](https://viem.sh/docs/clients/custom) that extends viem's [`PublicClient`](https://viem.sh/docs/clients/public) with bundler-specific actions for [EIP-4337](https://eips.ethereum.org/EIPS/eip-4337) operations and [EIP-6900](https://eips.ethereum.org/EIPS/eip-6900) standards. The actions are defined in [`@aa-sdk/core`](/docs/wallets/reference/aa-sdk/core). It's account agnostic and only exposes methods for interacting directly with Bundler RPC and ETH RPC methods.
+`BundlerClient` is a custom `viem` [`Client`](https://viem.sh/docs/clients/custom) that extends viem's [`PublicClient`](https://viem.sh/docs/clients/public) with bundler-specific actions for [EIP-4337](https://eips.ethereum.org/EIPS/eip-4337) operations and [EIP-6900](https://eips.ethereum.org/EIPS/eip-6900) standards. The actions are defined in [`@aa-sdk/core`](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/aa-sdk/core). It's account agnostic and only exposes methods for interacting directly with Bundler RPC and ETH RPC methods.
`BundlerClient` also supports [`Public Actions`](https://viem.sh/docs/actions/public/introduction) for client applications to connect, query, and interact with the blockchain (i.e., sending transactions, smart contract executions, data retrieval, etc.). Additionally, it is EIP-1193 compliant, so it can be swapped out in place of other web3 providers (eg. `window.ethereum`).
In the vast majority of cases, you will not use this client directly. Use the [`SmartAccountClient`](/docs/wallets/concepts/smart-account-client) instead, which wraps the Bundler Client and provides the same actions plus account-specific functionality.
@@ -407,11 +407,11 @@ export interface SmartAccountSigner {
Within Wallet APIs, implementations for Light Account and Modular Account are exported from `@account-kit/smart-contracts`. These implementations handle the logic for generating the deployment data, encoding
single and batch UO execution, and signing of messages, typed data, and UOs.
-Wallets are rarely used on their own, and are typically passed in to [Smart Account Client](/docs/wallets/reference/aa-sdk/core/type-aliases/SmartAccountClient) implementations.
+Wallets are rarely used on their own, and are typically passed in to [Smart Account Client](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/client/types.ts) implementations.
When using either the [React](/docs/wallets/react/quickstart) or [Core](/docs/wallets/core/overview) libraries, the connection of an account and a client is handled for you.
-It's also possible to use a custom account when using the [Infra](/docs/wallets/reference/account-kit/infra) library.
-Within `@aa-sdk/core`, a method [`toSmartContractAccount`](/docs/wallets/reference/aa-sdk/core/functions/toSmartContractAccount) is provided so you can create an instance of your smart wallet.
+It's also possible to use a custom account when using the [Infra](https://github.com/alchemyplatform/aa-sdk/tree/v4.x.x/account-kit/infra) library.
+Within `@aa-sdk/core`, a method [`toSmartContractAccount`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/account/smartContractAccount.ts) is provided so you can create an instance of your smart wallet.
@@ -452,7 +452,7 @@ State overrides allow you to customize the network state for the purpose of the
## `ToSmartContractAccountParams`
-This type defines the parameters to the `SmartContractAccount` instantiation action, [`toSmartContractAccount`](/docs/wallets/reference/aa-sdk/core/functions/toSmartContractAccount). You can configure this parameter to specify the [`Transport`](https://viem.sh/docs/clients/intro#transports), [`Chain`](https://viem.sh/docs/glossary/types#chain), [`EntryPointDef`](#entrypointdef), and other base functionalities of the smart wallet that you are creating.
+This type defines the parameters to the `SmartContractAccount` instantiation action, [`toSmartContractAccount`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/account/smartContractAccount.ts). You can configure this parameter to specify the [`Transport`](https://viem.sh/docs/clients/intro#transports), [`Chain`](https://viem.sh/docs/glossary/types#chain), [`EntryPointDef`](#entrypointdef), and other base functionalities of the smart wallet that you are creating.
@@ -485,7 +485,7 @@ export type ToSmartContractAccountParams<
## `User`
-`User` is a type that defines the model for the details of a user's embedded account. It includes the user's `email`, `orgId`, `userId`, `address` (the EOA address corresponding to the user credentials), and `credentialId`. You can use the [`useUser`](/docs/wallets/reference/account-kit/react/hooks/useUser) React hook to look up a user.
+`User` is a type that defines the model for the details of a user's embedded account. It includes the user's `email`, `orgId`, `userId`, `address` (the EOA address corresponding to the user credentials), and `credentialId`. You can use the [`useUser`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useUser.ts) React hook to look up a user.
diff --git a/content/wallets/pages/signer/export-private-key.mdx b/content/wallets/pages/signer/export-private-key.mdx
index 0709f600b..eec29be1d 100644
--- a/content/wallets/pages/signer/export-private-key.mdx
+++ b/content/wallets/pages/signer/export-private-key.mdx
@@ -7,7 +7,7 @@ slug: wallets/signer/export-private-key
You can export a user's private key, giving them the right to exit at any time. Allowing your users to export their private key is a best practice, as it gives them full control over their account. The private key export method does not rely on external infrastructure, so a user can always export their private key.
-## Using [useExportAccount](/docs/wallets/reference/account-kit/react/hooks/useExportAccount)
+## Using [useExportAccount](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/react/src/hooks/useExportAccount.ts)
A hook to export the private key for an account. It returns the mutation functions to kick off the export process, as well as a component to render the account recovery details in an iframe.
diff --git a/content/wallets/pages/signer/user-sessions.mdx b/content/wallets/pages/signer/user-sessions.mdx
index 608001ebe..b732af5a6 100644
--- a/content/wallets/pages/signer/user-sessions.mdx
+++ b/content/wallets/pages/signer/user-sessions.mdx
@@ -6,7 +6,7 @@ slug: wallets/signer/user-sessions
By default, `AlchemyWebSigner` user sessions are cached in `localStorage` for 15 minutes.
-You can customize session length by passing a [`sessionConfig`](/docs/wallets/reference/account-kit/signer/classes/AlchemyWebSigner) to your `AlchemyWebSigner` constructor.
+You can customize session length by passing a [`sessionConfig`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/signer/src/signer.ts) to your `AlchemyWebSigner` constructor.
You can check if the user has an active session with the following command:
diff --git a/content/wallets/pages/smart-wallets/how-to-stamp-requests.mdx b/content/wallets/pages/smart-wallets/how-to-stamp-requests.mdx
index c805e758f..d8e829e31 100644
--- a/content/wallets/pages/smart-wallets/how-to-stamp-requests.mdx
+++ b/content/wallets/pages/smart-wallets/how-to-stamp-requests.mdx
@@ -32,7 +32,7 @@ For any endpoint the requires a `stampedRequest` body for the verification logic
2. Generate a private key bundle
- 1. Exchange the `targetPublicKey` for an encrypted `bundle` by calling [create wallet](/docs/wallets/reference/account-kit/core/functions/createAccount) (e.g., OAuth, email login)
+ 1. Exchange the `targetPublicKey` for an encrypted `bundle` by calling [create wallet](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/core/src/actions/createAccount.ts) (e.g., OAuth, email login)
3. Decrypt the bundle using Hybrid Public Key Encryption (HPKE).
@@ -88,8 +88,8 @@ If you're building in React or Vanilla JS, use the [SDK](/docs/wallets) which ha
* [JS SDK React Native stamper](https://github.com/alchemyplatform/aa-sdk/blob/9ad59f2d6673bc6f587e6a57343b1486c92f382f/account-kit/rn-signer/src/NativeTEKStamper.ts#L9)
- * [Generating keys, stamping requests on iOS](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/rn-signer/ios/implementation/NativeTEKStamperImpl.swift)
- * [Generating keys, stamping requests on Android](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/rn-signer/android/src/main/java/com/accountkit/reactnativesigner/NativeTEKStamperModule.kt)
+ * [Generating keys, stamping requests on iOS](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/rn-signer/ios/implementation/NativeTEKStamperImpl.swift)
+ * [Generating keys, stamping requests on Android](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/rn-signer/android/src/main/java/com/accountkit/reactnativesigner/NativeTEKStamperModule.kt)
* [More examples of stamping via Turnkey](https://docs.turnkey.com/developer-reference/api-overview/stamps#stampers)
diff --git a/content/wallets/pages/smart-wallets/session-keys/api.mdx b/content/wallets/pages/smart-wallets/session-keys/api.mdx
index e0bf2195f..f71b6644f 100644
--- a/content/wallets/pages/smart-wallets/session-keys/api.mdx
+++ b/content/wallets/pages/smart-wallets/session-keys/api.mdx
@@ -43,7 +43,7 @@ slug: wallets/reference/wallet-apis-session-keys/api
To create a session key:
- * Get the public address of a key you want to use as a session key. This can be any key pair that has the ability to sign (either a local [account](/docs/wallets/reference/aa-sdk/core/classes/LocalAccountSigner) like an EOA or a key generated with an authentication provider).
+ * Get the public address of a key you want to use as a session key. This can be any key pair that has the ability to sign (either a local [account](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/aa-sdk/core/src/signer/local-account.ts) like an EOA or a key generated with an authentication provider).
* Create a session for that key, by passing it as the `publicKey` in a call to `wallet_createSession`. (Note that this must be the public key **address**, not the full public key.)
Use your owner address directly as the `account` field to enable [EIP-7702](/docs/wallets/transactions/using-eip-7702) by default.
diff --git a/content/wallets/pages/third-party/signers/custom-integration.mdx b/content/wallets/pages/third-party/signers/custom-integration.mdx
index e0c0761b5..1d4efad84 100644
--- a/content/wallets/pages/third-party/signers/custom-integration.mdx
+++ b/content/wallets/pages/third-party/signers/custom-integration.mdx
@@ -4,8 +4,6 @@ description: Use any viem-compatible signer with Wallet APIs
slug: wallets/third-party/signers/custom-integration
---
-`@alchemy/wallet-apis` (v5.x.x) is currently in beta but is the recommended replacement for `@account-kit/wallet-client` (v4.x.x). If you run into any issues, please [reach out](mailto:support@alchemy.com).
-
Any signer that provides a viem `LocalAccount` or `WalletClient` works with `createSmartWalletClient`. This guide covers the requirements and how to set up each type.
## Requirements
diff --git a/content/wallets/pages/third-party/signers/openfort.mdx b/content/wallets/pages/third-party/signers/openfort.mdx
index 422f9c263..6c799905d 100644
--- a/content/wallets/pages/third-party/signers/openfort.mdx
+++ b/content/wallets/pages/third-party/signers/openfort.mdx
@@ -4,8 +4,6 @@ description: Use Openfort with Wallet APIs for EIP-7702, sponsorship, and batchi
slug: wallets/third-party/signers/openfort
---
-`@alchemy/wallet-apis` (v5.x.x) is currently in beta but is the recommended replacement for `@account-kit/wallet-client` (v4.x.x). If you run into any issues, please [reach out](mailto:support@alchemy.com).
-
Upgrade existing Openfort embedded wallets to Wallet APIs to enable gasless transactions, batching, and more in under 10 minutes. Keep Openfort for authentication, no wallet migration needed. Add battle-tested transaction infrastructure using EIP-7702 to upgrade your wallets to Wallet APIs:
* [#1 gas abstraction infrastructure](https://www.bundlebear.com/erc4337-bundlers/all) on the market
diff --git a/content/wallets/pages/third-party/signers/privy.mdx b/content/wallets/pages/third-party/signers/privy.mdx
index b68cb6cb5..80bcc12a8 100644
--- a/content/wallets/pages/third-party/signers/privy.mdx
+++ b/content/wallets/pages/third-party/signers/privy.mdx
@@ -4,8 +4,6 @@ description: Use Privy with Wallet APIs for EIP-7702, sponsorship, and batching
slug: wallets/third-party/signers/privy
---
-`@alchemy/wallet-apis` (v5.x.x) is currently in beta but is the recommended replacement for `@account-kit/wallet-client` (v4.x.x). If you run into any issues, please [reach out](mailto:support@alchemy.com).
-
Upgrade existing Privy wallets to Wallet APIs to enable gasless transactions, batching, and more in under 10 minutes. Keep Privy for authentication, no wallet migration needed. Add battle-tested transaction infrastructure using EIP-7702 to upgrade your wallets to Wallet APIs:
* [#1 gas abstraction infrastructure](https://www.bundlebear.com/erc4337-bundlers/all) on the market
diff --git a/content/wallets/pages/third-party/signers/turnkey.mdx b/content/wallets/pages/third-party/signers/turnkey.mdx
index 60b347623..9b4360111 100644
--- a/content/wallets/pages/third-party/signers/turnkey.mdx
+++ b/content/wallets/pages/third-party/signers/turnkey.mdx
@@ -4,8 +4,6 @@ description: Use Turnkey with Wallet APIs for EIP-7702, sponsorship, and batchin
slug: wallets/third-party/signers/turnkey
---
-`@alchemy/wallet-apis` (v5.x.x) is currently in beta but is the recommended replacement for `@account-kit/wallet-client` (v4.x.x). If you run into any issues, please [reach out](mailto:support@alchemy.com).
-
Upgrade existing Turnkey wallets to Wallet APIs to enable gasless transactions, batching, and more in under 10 minutes. Keep Turnkey for key management, no wallet migration needed. Add battle-tested transaction infrastructure using EIP-7702 to upgrade EOAs to Wallet APIs:
* [#1 gas abstraction infrastructure](https://www.bundlebear.com/erc4337-bundlers/all) on the market
diff --git a/content/wallets/shared/react-native/signer-setup.mdx b/content/wallets/shared/react-native/signer-setup.mdx
index 03e414418..17a65802a 100644
--- a/content/wallets/shared/react-native/signer-setup.mdx
+++ b/content/wallets/shared/react-native/signer-setup.mdx
@@ -46,7 +46,7 @@
* For testing, set up a
server on [http://localhost:3000](http://localhost:3000/) or any other server
- you control that redirects an incoming request to your app scheme. A sample implementation can be found in the [`example`](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/rn-signer/example/redirect-server/index.ts)
+ you control that redirects an incoming request to your app scheme. A sample implementation can be found in the [`example`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/rn-signer/example/redirect-server/index.ts)
folder of the `React Native Signer` repo.
* The HTTP or HTTPS URL you set up
diff --git a/content/wallets/shared/setup-smart-account-client/smart-account-client-details.mdx b/content/wallets/shared/setup-smart-account-client/smart-account-client-details.mdx
index 60fefc886..5366ba3ac 100644
--- a/content/wallets/shared/setup-smart-account-client/smart-account-client-details.mdx
+++ b/content/wallets/shared/setup-smart-account-client/smart-account-client-details.mdx
@@ -37,9 +37,9 @@ See the [full guide](/docs/wallets/transactions/sponsor-gas) for gas sponsorship
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Smart wallet implementation | `type` | One of `"ModularAccountV2"`, `"LightAccount"`, `"MultiOwnerLightAccount"`, `"MultiOwnerModularAccount"` |
| Sponsor gas for users. Get your policy ID from the [Gas Manager dashboard](https://dashboard.alchemy.com/gas-manager) | `policyId` | `string` |
- | Simulate user operations before sending (i.e. use [`alchemyUserOperationSimulator`](/docs/wallets/reference/account-kit/infra/functions/alchemyUserOperationSimulator)) | `useSimulation` | `boolean` |
+ | Simulate user operations before sending (i.e. use [`alchemyUserOperationSimulator`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/infra/src/middleware/userOperationSimulator.ts)) | `useSimulation` | `boolean` |
| Custom middleware to run before requesting sponsorship | `customMiddleware` | `ClientMiddlewareFn` |
- | Override fee estimation middleware (if you are using the Wallet APIs RPCs, use the default [`alchemyFeeEstimator`](/docs/wallets/reference/account-kit/infra/variables/alchemyFeeEstimator)) | `feeEstimator` | `ClientMiddlewareFn` |
+ | Override fee estimation middleware (if you are using the Wallet APIs RPCs, use the default [`alchemyFeeEstimator`](https://github.com/alchemyplatform/aa-sdk/blob/v4.x.x/account-kit/infra/src/middleware/feeEstimator.ts)) | `feeEstimator` | `ClientMiddlewareFn` |
| Override gas estimation middleware (the default middleware calls the underlying bundler RPC to `eth_estimateUserOperationGas`) | `gasEstimator` | `ClientMiddlewareFn` |
| Override middleware that signs user operation(s) | `signUserOperation` | `ClientMiddlewareFn` |
| Advanced account params | `accountParams` | `AccountConfig` with the following fields: - `mode`: `"default"` | `"7702"`
- `entryPoint`: `EntryPointDef`
- `signerEntity`: `SignerEntity`
- `salt`: `bigint`
- `factoryAddress`: `Address`
- `initCode`: `Hex`
- `accountAddress`: `Address`
|