prepareCalls
Defined in: account-kit/wallet-client/src/client/actions/prepareCalls.ts:57
Prepares a set of contract calls for execution by building a user operation. Returns the built user operation and a signature request that needs to be signed before submitting to sendPreparedCalls.
Example
Type Parameters
Parameters
Returns
Promise<
| {
chainId: `0x${string}`;
data: {
callData: `0x${string}`;
callGasLimit: `0x${string}`;
initCode: `0x${string}`;
maxFeePerGas: `0x${string}`;
maxPriorityFeePerGas: `0x${string}`;
nonce: `0x${string}`;
paymasterAndData: `0x${string}`;
preVerificationGas: `0x${string}`;
sender: `0x${string}`;
verificationGasLimit: `0x${string}`;
};
feePayment: {
maxAmount: `0x${string}`;
sponsored: boolean;
tokenAddress: `0x${string}`;
};
signatureRequest?: | {
data: | string
| {
raw: `0x${string}`;
};
rawPayload: `0x${string}`;
type: "personal_sign";
}
| {
data: {
domain?: {
chainId?: number;
name?: string;
salt?: `0x${string}`;
verifyingContract?: `0x${string}`;
version?: string;
};
message: Record<string, unknown>;
primaryType: string;
types: Record<string, object[]>;
};
rawPayload: `0x${string}`;
type: "eth_signTypedData_v4";
};
type: "user-operation-v060";
}
| {
chainId: `0x${string}`;
data: {
callData: `0x${string}`;
callGasLimit: `0x${string}`;
factory?: `0x${string}`;
factoryData?: `0x${string}`;
maxFeePerGas: `0x${string}`;
maxPriorityFeePerGas: `0x${string}`;
nonce: `0x${string}`;
paymaster?: `0x${string}`;
paymasterData?: `0x${string}`;
paymasterPostOpGasLimit?: `0x${string}`;
paymasterVerificationGasLimit?: `0x${string}`;
preVerificationGas: `0x${string}`;
sender: `0x${string}`;
verificationGasLimit: `0x${string}`;
};
feePayment: {
maxAmount: `0x${string}`;
sponsored: boolean;
tokenAddress: `0x${string}`;
};
signatureRequest?: | {
data: | string
| {
raw: `0x${string}`;
};
rawPayload: `0x${string}`;
type: "personal_sign";
}
| {
data: {
domain?: {
chainId?: number;
name?: string;
salt?: `0x${string}`;
verifyingContract?: `0x${string}`;
version?: string;
};
message: Record<string, unknown>;
primaryType: string;
types: Record<string, object[]>;
};
rawPayload: `0x${string}`;
type: "eth_signTypedData_v4";
};
type: "user-operation-v070";
}
| {
data: {
domain?: {
chainId?: number;
name?: string;
salt?: `0x${string}`;
verifyingContract?: `0x${string}`;
version?: string;
};
message: Record<string, unknown>;
primaryType: string;
types: Record<string, object[]>;
};
modifiedRequest: {
calls: object[];
capabilities?: {
eip7702Auth?: | true
| {
account?: `0x${string}`;
delegation: "ModularAccountV2" | "0x69007702764179f14F51cdce752f4f775d74E139";
};
gasParamsOverride?: {
callGasLimit?: | `0x${string}`
| {
multiplier: number;
};
maxFeePerGas?: | `0x${string}`
| {
multiplier: number;
};
maxPriorityFeePerGas?: | `0x${string}`
| {
multiplier: number;
};
paymasterPostOpGasLimit?: | `0x${string}`
| {
multiplier: number;
};
paymasterVerificationGasLimit?: | `0x${string}`
| {
multiplier: number;
};
preVerificationGas?: | `0x${string}`
| {
multiplier: number;
};
verificationGasLimit?: | `0x${string}`
| {
multiplier: number;
};
};
nonceOverride?: {
nonceKey: `0x${string}`;
};
paymasterService?: ({ policyId: string; } | { policyIds: string[]; }) & { onlyEstimation?: boolean | undefined; erc20?: { maxTokenAmount?: `0x\{string}\` | undefined; tokenAddress: \`0x{string}`; preOpSettings: { autoPermit: { …; }; }; } | { …; } | { …; } | { …; } | undefined; webhookData?: string | undefined; };
permissions?: | {
context: `0x${string}`;
}
| {
sessionId: `0x${string}`;
signature: `0x${string}`;
};
};
chainId: `0x${string}`;
from: `0x${string}`;
paymasterPermitSignature?: | {
data: | `0x${string}`
| {
r: `0x${string}`;
s: `0x${string}`;
yParity: `0x${string}`;
}
| {
r: `0x${string}`;
s: `0x${string}`;
v: `0x${string}`;
};
type: "secp256k1";
}
| {
data: | `0x${string}`
| {
r: `0x${string}`;
s: `0x${string}`;
yParity: `0x${string}`;
}
| {
r: `0x${string}`;
s: `0x${string}`;
v: `0x${string}`;
};
type: "ecdsa";
};
};
signatureRequest: {
data: {
domain?: {
chainId?: number;
name?: string;
salt?: `0x${string}`;
verifyingContract?: `0x${string}`;
version?: string;
};
message: Record<string, unknown>;
primaryType: string;
types: Record<string, object[]>;
};
rawPayload: `0x${string}`;
type: "eth_signTypedData_v4";
};
type: "paymaster-permit";
}
| {
data: (
| {
chainId: `0x${string}`;
data: {
callData: `0x${string}`;
callGasLimit: `0x${string}`;
initCode: `0x${string}`;
maxFeePerGas: `0x${string}`;
maxPriorityFeePerGas: `0x${string}`;
nonce: `0x${string}`;
paymasterAndData: `0x${string}`;
preVerificationGas: `0x${string}`;
sender: `0x${string}`;
verificationGasLimit: `0x${string}`;
};
feePayment: {
maxAmount: `0x${string}`;
sponsored: boolean;
tokenAddress: `0x${string}`;
};
signatureRequest?: | {
data: | string
| {
raw: `0x${(...)}`;
};
rawPayload: `0x${string}`;
type: "personal_sign";
}
| {
data: {
domain?: {
chainId?: …;
name?: …;
salt?: …;
verifyingContract?: …;
version?: …;
};
message: Record<string, unknown>;
primaryType: string;
types: Record<string, …[]>;
};
rawPayload: `0x${string}`;
type: "eth_signTypedData_v4";
};
type: "user-operation-v060";
}
| {
chainId: `0x${string}`;
data: {
callData: `0x${string}`;
callGasLimit: `0x${string}`;
factory?: `0x${string}`;
factoryData?: `0x${string}`;
maxFeePerGas: `0x${string}`;
maxPriorityFeePerGas: `0x${string}`;
nonce: `0x${string}`;
paymaster?: `0x${string}`;
paymasterData?: `0x${string}`;
paymasterPostOpGasLimit?: `0x${string}`;
paymasterVerificationGasLimit?: `0x${string}`;
preVerificationGas: `0x${string}`;
sender: `0x${string}`;
verificationGasLimit: `0x${string}`;
};
feePayment: {
maxAmount: `0x${string}`;
sponsored: boolean;
tokenAddress: `0x${string}`;
};
signatureRequest?: | {
data: | string
| {
raw: `0x${(...)}`;
};
rawPayload: `0x${string}`;
type: "personal_sign";
}
| {
data: {
domain?: {
chainId?: …;
name?: …;
salt?: …;
verifyingContract?: …;
version?: …;
};
message: Record<string, unknown>;
primaryType: string;
types: Record<string, …[]>;
};
rawPayload: `0x${string}`;
type: "eth_signTypedData_v4";
};
type: "user-operation-v070";
}
| {
chainId: `0x${string}`;
data: {
address: `0x${string}`;
nonce: `0x${string}`;
};
signatureRequest: {
rawPayload: `0x${string}`;
type: "eip7702Auth";
};
type: "authorization";
})[];
type: "array";
}>
A Promise that resolves to the prepared calls result containing the user operation data and signature request