alchemyGasAndPaymasterAndDataMiddleware

Paymaster middleware factory that uses Alchemy’s Gas Manager for sponsoring transactions. Uses Alchemy’s custom alchemy_requestGasAndPaymasterAndData method instead of conforming to the standard ERC-7677 interface. Note that if you use createAlchemySmartAccountClient, this middleware is already used by default and you do not need to manually include it.

Import

1import { alchemyGasAndPaymasterAndDataMiddleware } from "@account-kit/infra";

Usage

import {
  
const sepolia: Chain
sepolia
,
function alchemy(config: AlchemyTransportConfig): AlchemyTransport

Creates an Alchemy transport with the specified configuration options. When sending all traffic to Alchemy, you must pass in one of rpcUrl, apiKey, or jwt. If you want to send Bundler and Paymaster traffic to Alchemy and Node traffic to a different RPC, you must pass in alchemyConnection and nodeRpcUrl.

alchemy
,
function alchemyGasAndPaymasterAndDataMiddleware(params: AlchemyGasAndPaymasterAndDataMiddlewareParams): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "feeEstimator" | "gasEstimator" | "paymasterAndData">

Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring transactions. Uses Alchemy's custom alchemy_requestGasAndPaymasterAndData method instead of conforming to the standard ERC-7677 interface. Note that if you use createAlchemySmartAccountClient, this middleware is already used by default and you do not need to manually include it.

alchemyGasAndPaymasterAndDataMiddleware
,
} from "@account-kit/infra"; import {
function createSmartAccountClient<TTransport extends Transport = Transport, TChain extends Chain | undefined = Chain | undefined, TAccount extends SmartContractAccount | undefined = SmartContractAccount | undefined, TContext extends UserOperationContext | undefined = UserOperationContext | undefined>(config: SmartAccountClientConfig<TTransport, TChain, TAccount, TContext>): SmartAccountClient<TTransport, TChain, TAccount>
createSmartAccountClient
} from "@aa-sdk/core";
const
const client: { [x: string]: unknown; account: SmartContractAccount | undefined; batch?: { multicall?: boolean | Prettify<MulticallBatchOptions> | undefined; } | undefined; ... 83 more ...; extend: <const client extends { ...; } & ExactPartial<...>>(fn: (client: Client<...>) => client) => Client<...>; }
client
=
createSmartAccountClient<AlchemyTransport, Chain, SmartContractAccount | undefined, UserOperationContext>(config: { type?: string | undefined | undefined; ... 15 more ...; signUserOperation?: ClientMiddlewareFn<...> | undefined; }): { ...; }
createSmartAccountClient
({
transport: AlchemyTransport

The RPC transport

transport
:
function alchemy(config: AlchemyTransportConfig): AlchemyTransport

Creates an Alchemy transport with the specified configuration options. When sending all traffic to Alchemy, you must pass in one of rpcUrl, apiKey, or jwt. If you want to send Bundler and Paymaster traffic to Alchemy and Node traffic to a different RPC, you must pass in alchemyConnection and nodeRpcUrl.

alchemy
({
apiKey: string
apiKey
: "your-api-key" }),
chain?: Chain | undefined

Chain for the client.

chain
:
const sepolia: Chain
sepolia
,
...
function alchemyGasAndPaymasterAndDataMiddleware(params: AlchemyGasAndPaymasterAndDataMiddlewareParams): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "feeEstimator" | "gasEstimator" | "paymasterAndData">

Paymaster middleware factory that uses Alchemy's Gas Manager for sponsoring transactions. Uses Alchemy's custom alchemy_requestGasAndPaymasterAndData method instead of conforming to the standard ERC-7677 interface. Note that if you use createAlchemySmartAccountClient, this middleware is already used by default and you do not need to manually include it.

alchemyGasAndPaymasterAndDataMiddleware
({
AlchemyGasAndPaymasterAndDataMiddlewareParams.policyId: string | string[]
policyId
: "policyId",
AlchemyGasAndPaymasterAndDataMiddlewareParams.transport: AlchemyTransport
transport
:
function alchemy(config: AlchemyTransportConfig): AlchemyTransport

Creates an Alchemy transport with the specified configuration options. When sending all traffic to Alchemy, you must pass in one of rpcUrl, apiKey, or jwt. If you want to send Bundler and Paymaster traffic to Alchemy and Node traffic to a different RPC, you must pass in alchemyConnection and nodeRpcUrl.

alchemy
({
apiKey: string
apiKey
: "your-api-key" }),
}), });

Parameters

params

AlchemyGasAndPaymasterAndDataMiddlewareParams configuration params

params.policyId

AlchemyGasAndPaymasterAndDataMiddlewareParams.policyId the policyId for Alchemy’s gas manager

params.transport

AlchemyGasAndPaymasterAndDataMiddlewareParams.transport fallback transport to use for fee estimation when not using the paymaster

params.gasEstimatorOverride

AlchemyGasAndPaymasterAndDataMiddlewareParams.gasEstimatorOverride custom gas estimator middleware

params.feeEstimatorOverride

AlchemyGasAndPaymasterAndDataMiddlewareParams.feeEstimatorOverride custom fee estimator middleware

Returns

Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "feeEstimator" | "gasEstimator" | "paymasterAndData"> partial client middleware configuration containing dummyPaymasterAndData, feeEstimator, gasEstimator, and paymasterAndData