@owlprotocol/contracts-account-abstraction
Version:
ERC4337 Account Abstraction support for deploying relevant smart contracts and interacting with UserOps.
506 lines (504 loc) • 20.1 kB
text/typescript
export const DelegateAndRevert = {
inputs: [
{ internalType: "bool", name: "success", type: "bool" },
{ internalType: "bytes", name: "ret", type: "bytes" },
],
name: "DelegateAndRevert",
type: "error",
} as const;
export const FailedOp = {
inputs: [
{ internalType: "uint256", name: "opIndex", type: "uint256" },
{ internalType: "string", name: "reason", type: "string" },
],
name: "FailedOp",
type: "error",
} as const;
export const FailedOpWithRevert = {
inputs: [
{ internalType: "uint256", name: "opIndex", type: "uint256" },
{ internalType: "string", name: "reason", type: "string" },
{ internalType: "bytes", name: "inner", type: "bytes" },
],
name: "FailedOpWithRevert",
type: "error",
} as const;
export const PostOpReverted = {
inputs: [{ internalType: "bytes", name: "returnData", type: "bytes" }],
name: "PostOpReverted",
type: "error",
} as const;
export const SenderAddressResult = {
inputs: [{ internalType: "address", name: "sender", type: "address" }],
name: "SenderAddressResult",
type: "error",
} as const;
export const SignatureValidationFailed = {
inputs: [{ internalType: "address", name: "aggregator", type: "address" }],
name: "SignatureValidationFailed",
type: "error",
} as const;
export const AccountDeployed = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "bytes32", name: "userOpHash", type: "bytes32" },
{ indexed: true, internalType: "address", name: "sender", type: "address" },
{ indexed: false, internalType: "address", name: "factory", type: "address" },
{ indexed: false, internalType: "address", name: "paymaster", type: "address" },
],
name: "AccountDeployed",
type: "event",
} as const;
export const BeforeExecution = { anonymous: false, inputs: [], name: "BeforeExecution", type: "event" } as const;
export const Deposited = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "account", type: "address" },
{ indexed: false, internalType: "uint256", name: "totalDeposit", type: "uint256" },
],
name: "Deposited",
type: "event",
} as const;
export const PostOpRevertReason = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "bytes32", name: "userOpHash", type: "bytes32" },
{ indexed: true, internalType: "address", name: "sender", type: "address" },
{ indexed: false, internalType: "uint256", name: "nonce", type: "uint256" },
{ indexed: false, internalType: "bytes", name: "revertReason", type: "bytes" },
],
name: "PostOpRevertReason",
type: "event",
} as const;
export const SignatureAggregatorChanged = {
anonymous: false,
inputs: [{ indexed: true, internalType: "address", name: "aggregator", type: "address" }],
name: "SignatureAggregatorChanged",
type: "event",
} as const;
export const StakeLocked = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "account", type: "address" },
{ indexed: false, internalType: "uint256", name: "totalStaked", type: "uint256" },
{ indexed: false, internalType: "uint256", name: "unstakeDelaySec", type: "uint256" },
],
name: "StakeLocked",
type: "event",
} as const;
export const StakeUnlocked = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "account", type: "address" },
{ indexed: false, internalType: "uint256", name: "withdrawTime", type: "uint256" },
],
name: "StakeUnlocked",
type: "event",
} as const;
export const StakeWithdrawn = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "account", type: "address" },
{ indexed: false, internalType: "address", name: "withdrawAddress", type: "address" },
{ indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
],
name: "StakeWithdrawn",
type: "event",
} as const;
export const UserOperationEvent = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "bytes32", name: "userOpHash", type: "bytes32" },
{ indexed: true, internalType: "address", name: "sender", type: "address" },
{ indexed: true, internalType: "address", name: "paymaster", type: "address" },
{ indexed: false, internalType: "uint256", name: "nonce", type: "uint256" },
{ indexed: false, internalType: "bool", name: "success", type: "bool" },
{ indexed: false, internalType: "uint256", name: "actualGasCost", type: "uint256" },
{ indexed: false, internalType: "uint256", name: "actualGasUsed", type: "uint256" },
],
name: "UserOperationEvent",
type: "event",
} as const;
export const UserOperationPrefundTooLow = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "bytes32", name: "userOpHash", type: "bytes32" },
{ indexed: true, internalType: "address", name: "sender", type: "address" },
{ indexed: false, internalType: "uint256", name: "nonce", type: "uint256" },
],
name: "UserOperationPrefundTooLow",
type: "event",
} as const;
export const UserOperationRevertReason = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "bytes32", name: "userOpHash", type: "bytes32" },
{ indexed: true, internalType: "address", name: "sender", type: "address" },
{ indexed: false, internalType: "uint256", name: "nonce", type: "uint256" },
{ indexed: false, internalType: "bytes", name: "revertReason", type: "bytes" },
],
name: "UserOperationRevertReason",
type: "event",
} as const;
export const Withdrawn = {
anonymous: false,
inputs: [
{ indexed: true, internalType: "address", name: "account", type: "address" },
{ indexed: false, internalType: "address", name: "withdrawAddress", type: "address" },
{ indexed: false, internalType: "uint256", name: "amount", type: "uint256" },
],
name: "Withdrawn",
type: "event",
} as const;
export const addStake = {
inputs: [{ internalType: "uint32", name: "_unstakeDelaySec", type: "uint32" }],
name: "addStake",
outputs: [],
stateMutability: "payable",
type: "function",
} as const;
export const balanceOf = {
inputs: [{ internalType: "address", name: "account", type: "address" }],
name: "balanceOf",
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
stateMutability: "view",
type: "function",
} as const;
export const delegateAndRevert = {
inputs: [
{ internalType: "address", name: "target", type: "address" },
{ internalType: "bytes", name: "data", type: "bytes" },
],
name: "delegateAndRevert",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const depositTo = {
inputs: [{ internalType: "address", name: "account", type: "address" }],
name: "depositTo",
outputs: [],
stateMutability: "payable",
type: "function",
} as const;
export const getDepositInfo = {
inputs: [{ internalType: "address", name: "account", type: "address" }],
name: "getDepositInfo",
outputs: [
{
components: [
{ internalType: "uint256", name: "deposit", type: "uint256" },
{ internalType: "bool", name: "staked", type: "bool" },
{ internalType: "uint112", name: "stake", type: "uint112" },
{ internalType: "uint32", name: "unstakeDelaySec", type: "uint32" },
{ internalType: "uint48", name: "withdrawTime", type: "uint48" },
],
internalType: "struct IStakeManager.DepositInfo",
name: "info",
type: "tuple",
},
],
stateMutability: "view",
type: "function",
} as const;
export const getNonce = {
inputs: [
{ internalType: "address", name: "sender", type: "address" },
{ internalType: "uint192", name: "key", type: "uint192" },
],
name: "getNonce",
outputs: [{ internalType: "uint256", name: "nonce", type: "uint256" }],
stateMutability: "view",
type: "function",
} as const;
export const getSenderAddress = {
inputs: [{ internalType: "bytes", name: "initCode", type: "bytes" }],
name: "getSenderAddress",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const getUserOpHash = {
inputs: [
{
components: [
{ internalType: "address", name: "sender", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "bytes", name: "initCode", type: "bytes" },
{ internalType: "bytes", name: "callData", type: "bytes" },
{ internalType: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" },
],
internalType: "struct PackedUserOperation",
name: "userOp",
type: "tuple",
},
],
name: "getUserOpHash",
outputs: [{ internalType: "bytes32", name: "", type: "bytes32" }],
stateMutability: "view",
type: "function",
} as const;
export const handleAggregatedOps = {
inputs: [
{
components: [
{
components: [
{ internalType: "address", name: "sender", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "bytes", name: "initCode", type: "bytes" },
{ internalType: "bytes", name: "callData", type: "bytes" },
{ internalType: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" },
],
internalType: "struct PackedUserOperation[]",
name: "userOps",
type: "tuple[]",
},
{ internalType: "contract IAggregator", name: "aggregator", type: "address" },
{ internalType: "bytes", name: "signature", type: "bytes" },
],
internalType: "struct IEntryPoint.UserOpsPerAggregator[]",
name: "opsPerAggregator",
type: "tuple[]",
},
{ internalType: "address payable", name: "beneficiary", type: "address" },
],
name: "handleAggregatedOps",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const handleOps = {
inputs: [
{
components: [
{ internalType: "address", name: "sender", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "bytes", name: "initCode", type: "bytes" },
{ internalType: "bytes", name: "callData", type: "bytes" },
{ internalType: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" },
],
internalType: "struct PackedUserOperation[]",
name: "ops",
type: "tuple[]",
},
{ internalType: "address payable", name: "beneficiary", type: "address" },
],
name: "handleOps",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const incrementNonce = {
inputs: [{ internalType: "uint192", name: "key", type: "uint192" }],
name: "incrementNonce",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const simulateHandleOp = {
inputs: [
{
components: [
{ internalType: "address", name: "sender", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "bytes", name: "initCode", type: "bytes" },
{ internalType: "bytes", name: "callData", type: "bytes" },
{ internalType: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" },
],
internalType: "struct PackedUserOperation",
name: "op",
type: "tuple",
},
],
name: "simulateHandleOp",
outputs: [
{
components: [
{ internalType: "uint256", name: "preOpGas", type: "uint256" },
{ internalType: "uint256", name: "paid", type: "uint256" },
{ internalType: "uint256", name: "accountValidationData", type: "uint256" },
{ internalType: "uint256", name: "paymasterValidationData", type: "uint256" },
{ internalType: "bool", name: "targetSuccess", type: "bool" },
{ internalType: "bytes", name: "targetResult", type: "bytes" },
],
internalType: "struct IEntryPointSimulations.ExecutionResult",
name: "",
type: "tuple",
},
],
stateMutability: "nonpayable",
type: "function",
} as const;
export const simulateValidation = {
inputs: [
{
components: [
{ internalType: "address", name: "sender", type: "address" },
{ internalType: "uint256", name: "nonce", type: "uint256" },
{ internalType: "bytes", name: "initCode", type: "bytes" },
{ internalType: "bytes", name: "callData", type: "bytes" },
{ internalType: "bytes32", name: "accountGasLimits", type: "bytes32" },
{ internalType: "uint256", name: "preVerificationGas", type: "uint256" },
{ internalType: "bytes32", name: "gasFees", type: "bytes32" },
{ internalType: "bytes", name: "paymasterAndData", type: "bytes" },
{ internalType: "bytes", name: "signature", type: "bytes" },
],
internalType: "struct PackedUserOperation",
name: "userOp",
type: "tuple",
},
],
name: "simulateValidation",
outputs: [
{
components: [
{
components: [
{ internalType: "uint256", name: "preOpGas", type: "uint256" },
{ internalType: "uint256", name: "prefund", type: "uint256" },
{ internalType: "uint256", name: "accountValidationData", type: "uint256" },
{ internalType: "uint256", name: "paymasterValidationData", type: "uint256" },
{ internalType: "bytes", name: "paymasterContext", type: "bytes" },
],
internalType: "struct IEntryPoint.ReturnInfo",
name: "returnInfo",
type: "tuple",
},
{
components: [
{ internalType: "uint256", name: "stake", type: "uint256" },
{ internalType: "uint256", name: "unstakeDelaySec", type: "uint256" },
],
internalType: "struct IStakeManager.StakeInfo",
name: "senderInfo",
type: "tuple",
},
{
components: [
{ internalType: "uint256", name: "stake", type: "uint256" },
{ internalType: "uint256", name: "unstakeDelaySec", type: "uint256" },
],
internalType: "struct IStakeManager.StakeInfo",
name: "factoryInfo",
type: "tuple",
},
{
components: [
{ internalType: "uint256", name: "stake", type: "uint256" },
{ internalType: "uint256", name: "unstakeDelaySec", type: "uint256" },
],
internalType: "struct IStakeManager.StakeInfo",
name: "paymasterInfo",
type: "tuple",
},
{
components: [
{ internalType: "address", name: "aggregator", type: "address" },
{
components: [
{ internalType: "uint256", name: "stake", type: "uint256" },
{ internalType: "uint256", name: "unstakeDelaySec", type: "uint256" },
],
internalType: "struct IStakeManager.StakeInfo",
name: "stakeInfo",
type: "tuple",
},
],
internalType: "struct IEntryPoint.AggregatorStakeInfo",
name: "aggregatorInfo",
type: "tuple",
},
],
internalType: "struct IEntryPointSimulations.ValidationResult",
name: "",
type: "tuple",
},
],
stateMutability: "nonpayable",
type: "function",
} as const;
export const unlockStake = {
inputs: [],
name: "unlockStake",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const withdrawStake = {
inputs: [{ internalType: "address payable", name: "withdrawAddress", type: "address" }],
name: "withdrawStake",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const withdrawTo = {
inputs: [
{ internalType: "address payable", name: "withdrawAddress", type: "address" },
{ internalType: "uint256", name: "withdrawAmount", type: "uint256" },
],
name: "withdrawTo",
outputs: [],
stateMutability: "nonpayable",
type: "function",
} as const;
export const functions = [
addStake,
balanceOf,
delegateAndRevert,
depositTo,
getDepositInfo,
getNonce,
getSenderAddress,
getUserOpHash,
handleAggregatedOps,
handleOps,
incrementNonce,
simulateHandleOp,
simulateValidation,
unlockStake,
withdrawStake,
withdrawTo,
] as const;
export const events = [
AccountDeployed,
BeforeExecution,
Deposited,
PostOpRevertReason,
SignatureAggregatorChanged,
StakeLocked,
StakeUnlocked,
StakeWithdrawn,
UserOperationEvent,
UserOperationPrefundTooLow,
UserOperationRevertReason,
Withdrawn,
] as const;
export const errors = [
DelegateAndRevert,
FailedOp,
FailedOpWithRevert,
PostOpReverted,
SenderAddressResult,
SignatureValidationFailed,
] as const;
export const abi = [...functions, ...events, ...errors] as const;
export const IEntryPointSimulations = {
abi,
};