UNPKG

viem

Version:

TypeScript Interface for Ethereum

779 lines (729 loc) • 20.9 kB
import type { Address } from 'abitype' import { BaseError } from '../../errors/base.js' import type { Hex } from '../../types/misc.js' export type AccountNotDeployedErrorType = AccountNotDeployedError & { name: 'AccountNotDeployedError' } export class AccountNotDeployedError extends BaseError { static message = /aa20/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Smart Account is not deployed.', { cause, metaMessages: [ 'This could arise when:', '- No `factory`/`factoryData` or `initCode` properties are provided for Smart Account deployment.', '- An incorrect `sender` address is provided.', ], name: 'AccountNotDeployedError', }) } } export type ExecutionRevertedErrorType = ExecutionRevertedError & { code: -32521 name: 'ExecutionRevertedError' } export class ExecutionRevertedError extends BaseError { static code = -32521 static message = /execution reverted/ data?: { revertData?: Hex } | undefined constructor({ cause, data, message, }: { cause?: BaseError | undefined data?: { revertData?: Hex } | undefined message?: string | undefined } = {}) { const reason = message ?.replace('execution reverted: ', '') ?.replace('execution reverted', '') super( `Execution reverted ${ reason ? `with reason: ${reason}` : 'for an unknown reason' }.`, { cause, name: 'ExecutionRevertedError', }, ) this.data = data } } export type FailedToSendToBeneficiaryErrorType = FailedToSendToBeneficiaryError & { name: 'FailedToSendToBeneficiaryError' } export class FailedToSendToBeneficiaryError extends BaseError { static message = /aa91/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Failed to send funds to beneficiary.', { cause, name: 'FailedToSendToBeneficiaryError', }) } } export type GasValuesOverflowErrorType = GasValuesOverflowError & { name: 'GasValuesOverflowError' } export class GasValuesOverflowError extends BaseError { static message = /aa94/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Gas value overflowed.', { cause, metaMessages: [ 'This could arise when:', '- one of the gas values exceeded 2**120 (uint120)', ].filter(Boolean) as string[], name: 'GasValuesOverflowError', }) } } export type HandleOpsOutOfGasErrorType = HandleOpsOutOfGasError & { name: 'HandleOpsOutOfGasError' } export class HandleOpsOutOfGasError extends BaseError { static message = /aa95/ constructor({ cause, }: { cause?: BaseError | undefined }) { super( 'The `handleOps` function was called by the Bundler with a gas limit too low.', { cause, name: 'HandleOpsOutOfGasError', }, ) } } export type InitCodeFailedErrorType = InitCodeFailedError & { name: 'InitCodeFailedError' } export class InitCodeFailedError extends BaseError { static message = /aa13/ constructor({ cause, factory, factoryData, initCode, }: { cause?: BaseError | undefined factory?: Address | undefined factoryData?: Hex | undefined initCode?: Hex | undefined }) { super('Failed to simulate deployment for Smart Account.', { cause, metaMessages: [ 'This could arise when:', '- Invalid `factory`/`factoryData` or `initCode` properties are present', '- Smart Account deployment execution ran out of gas (low `verificationGasLimit` value)', '- Smart Account deployment execution reverted with an error\n', factory && `factory: ${factory}`, factoryData && `factoryData: ${factoryData}`, initCode && `initCode: ${initCode}`, ].filter(Boolean) as string[], name: 'InitCodeFailedError', }) } } export type InitCodeMustCreateSenderErrorType = InitCodeMustCreateSenderError & { name: 'InitCodeMustCreateSenderError' } export class InitCodeMustCreateSenderError extends BaseError { static message = /aa15/ constructor({ cause, factory, factoryData, initCode, }: { cause?: BaseError | undefined factory?: Address | undefined factoryData?: Hex | undefined initCode?: Hex | undefined }) { super( 'Smart Account initialization implementation did not create an account.', { cause, metaMessages: [ 'This could arise when:', '- `factory`/`factoryData` or `initCode` properties are invalid', '- Smart Account initialization implementation is incorrect\n', factory && `factory: ${factory}`, factoryData && `factoryData: ${factoryData}`, initCode && `initCode: ${initCode}`, ].filter(Boolean) as string[], name: 'InitCodeMustCreateSenderError', }, ) } } export type InitCodeMustReturnSenderErrorType = InitCodeMustReturnSenderError & { name: 'InitCodeMustReturnSenderError' } export class InitCodeMustReturnSenderError extends BaseError { static message = /aa14/ constructor({ cause, factory, factoryData, initCode, sender, }: { cause?: BaseError | undefined factory?: Address | undefined factoryData?: Hex | undefined initCode?: Hex | undefined sender?: Address | undefined }) { super( 'Smart Account initialization implementation does not return the expected sender.', { cause, metaMessages: [ 'This could arise when:', 'Smart Account initialization implementation does not return a sender address\n', factory && `factory: ${factory}`, factoryData && `factoryData: ${factoryData}`, initCode && `initCode: ${initCode}`, sender && `sender: ${sender}`, ].filter(Boolean) as string[], name: 'InitCodeMustReturnSenderError', }, ) } } export type InsufficientPrefundErrorType = InsufficientPrefundError & { name: 'InsufficientPrefundError' } export class InsufficientPrefundError extends BaseError { static message = /aa21/ constructor({ cause, }: { cause?: BaseError | undefined }) { super( 'Smart Account does not have sufficient funds to execute the User Operation.', { cause, metaMessages: [ 'This could arise when:', '- the Smart Account does not have sufficient funds to cover the required prefund, or', '- a Paymaster was not provided', ].filter(Boolean) as string[], name: 'InsufficientPrefundError', }, ) } } export type InternalCallOnlyErrorType = InternalCallOnlyError & { name: 'InternalCallOnlyError' } export class InternalCallOnlyError extends BaseError { static message = /aa92/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Bundler attempted to call an invalid function on the EntryPoint.', { cause, name: 'InternalCallOnlyError', }) } } export type InvalidAggregatorErrorType = InvalidAggregatorError & { name: 'InvalidAggregatorError' } export class InvalidAggregatorError extends BaseError { static message = /aa96/ constructor({ cause, }: { cause?: BaseError | undefined }) { super( 'Bundler used an invalid aggregator for handling aggregated User Operations.', { cause, name: 'InvalidAggregatorError', }, ) } } export type InvalidAccountNonceErrorType = InvalidAccountNonceError & { name: 'InvalidAccountNonceError' } export class InvalidAccountNonceError extends BaseError { static message = /aa25/ constructor({ cause, nonce, }: { cause?: BaseError | undefined nonce?: bigint | undefined }) { super('Invalid Smart Account nonce used for User Operation.', { cause, metaMessages: [nonce && `nonce: ${nonce}`].filter(Boolean) as string[], name: 'InvalidAccountNonceError', }) } } export type InvalidBeneficiaryErrorType = InvalidBeneficiaryError & { name: 'InvalidBeneficiaryError' } export class InvalidBeneficiaryError extends BaseError { static message = /aa90/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Bundler has not set a beneficiary address.', { cause, name: 'InvalidBeneficiaryError', }) } } export type InvalidFieldsErrorType = InvalidFieldsError & { name: 'InvalidFieldsError' } export class InvalidFieldsError extends BaseError { static code = -32602 constructor({ cause, }: { cause?: BaseError | undefined }) { super('Invalid fields set on User Operation.', { cause, name: 'InvalidFieldsError', }) } } export type InvalidPaymasterAndDataErrorType = InvalidPaymasterAndDataError & { name: 'InvalidPaymasterAndDataError' } export class InvalidPaymasterAndDataError extends BaseError { static message = /aa93/ constructor({ cause, paymasterAndData, }: { cause?: BaseError | undefined paymasterAndData?: Hex | undefined }) { super('Paymaster properties provided are invalid.', { cause, metaMessages: [ 'This could arise when:', '- the `paymasterAndData` property is of an incorrect length\n', paymasterAndData && `paymasterAndData: ${paymasterAndData}`, ].filter(Boolean) as string[], name: 'InvalidPaymasterAndDataError', }) } } export type PaymasterDepositTooLowErrorType = PaymasterDepositTooLowError & { code: -32508 name: 'PaymasterDepositTooLowError' } export class PaymasterDepositTooLowError extends BaseError { static code = -32508 static message = /aa31/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Paymaster deposit for the User Operation is too low.', { cause, metaMessages: [ 'This could arise when:', '- the Paymaster has deposited less than the expected amount via the `deposit` function', ].filter(Boolean) as string[], name: 'PaymasterDepositTooLowError', }) } } export type PaymasterFunctionRevertedErrorType = PaymasterFunctionRevertedError & { name: 'PaymasterFunctionRevertedError' } export class PaymasterFunctionRevertedError extends BaseError { static message = /aa33/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('The `validatePaymasterUserOp` function on the Paymaster reverted.', { cause, name: 'PaymasterFunctionRevertedError', }) } } export type PaymasterNotDeployedErrorType = PaymasterNotDeployedError & { name: 'PaymasterNotDeployedError' } export class PaymasterNotDeployedError extends BaseError { static message = /aa30/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('The Paymaster contract has not been deployed.', { cause, name: 'PaymasterNotDeployedError', }) } } export type PaymasterRateLimitErrorType = PaymasterRateLimitError & { code: -32504 name: 'PaymasterRateLimitError' } export class PaymasterRateLimitError extends BaseError { static code = -32504 constructor({ cause }: { cause?: BaseError | undefined }) { super( 'UserOperation rejected because paymaster (or signature aggregator) is throttled/banned.', { cause, name: 'PaymasterRateLimitError', }, ) } } export type PaymasterStakeTooLowErrorType = PaymasterStakeTooLowError & { code: -32505 name: 'PaymasterStakeTooLowError' } export class PaymasterStakeTooLowError extends BaseError { static code = -32505 constructor({ cause }: { cause?: BaseError | undefined }) { super( 'UserOperation rejected because paymaster (or signature aggregator) is throttled/banned.', { cause, name: 'PaymasterStakeTooLowError', }, ) } } export type PaymasterPostOpFunctionRevertedErrorType = PaymasterPostOpFunctionRevertedError & { name: 'PaymasterPostOpFunctionRevertedError' } export class PaymasterPostOpFunctionRevertedError extends BaseError { static message = /aa50/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Paymaster `postOp` function reverted.', { cause, name: 'PaymasterPostOpFunctionRevertedError', }) } } export type SenderAlreadyConstructedErrorType = SenderAlreadyConstructedError & { name: 'SenderAlreadyConstructedError' } export class SenderAlreadyConstructedError extends BaseError { static message = /aa10/ constructor({ cause, factory, factoryData, initCode, }: { cause?: BaseError | undefined factory?: Address | undefined factoryData?: Hex | undefined initCode?: Hex | undefined }) { super('Smart Account has already been deployed.', { cause, metaMessages: [ 'Remove the following properties and try again:', factory && '`factory`', factoryData && '`factoryData`', initCode && '`initCode`', ].filter(Boolean) as string[], name: 'SenderAlreadyConstructedError', }) } } export type SignatureCheckFailedErrorType = SignatureCheckFailedError & { code: -32507 name: 'SignatureCheckFailedError' } export class SignatureCheckFailedError extends BaseError { static code = -32507 constructor({ cause }: { cause?: BaseError | undefined }) { super( 'UserOperation rejected because account signature check failed (or paymaster signature, if the paymaster uses its data as signature).', { cause, name: 'SignatureCheckFailedError', }, ) } } export type SmartAccountFunctionRevertedErrorType = SmartAccountFunctionRevertedError & { name: 'SmartAccountFunctionRevertedError' } export class SmartAccountFunctionRevertedError extends BaseError { static message = /aa23/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('The `validateUserOp` function on the Smart Account reverted.', { cause, name: 'SmartAccountFunctionRevertedError', }) } } export type UnsupportedSignatureAggregatorErrorType = UnsupportedSignatureAggregatorError & { code: -32506 name: 'UnsupportedSignatureAggregatorError' } export class UnsupportedSignatureAggregatorError extends BaseError { static code = -32506 constructor({ cause }: { cause?: BaseError | undefined }) { super( 'UserOperation rejected because account specified unsupported signature aggregator.', { cause, name: 'UnsupportedSignatureAggregatorError', }, ) } } export type UserOperationExpiredErrorType = UserOperationExpiredError & { name: 'UserOperationExpiredError' } export class UserOperationExpiredError extends BaseError { static message = /aa22/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('User Operation expired.', { cause, metaMessages: [ 'This could arise when:', '- the `validAfter` or `validUntil` values returned from `validateUserOp` on the Smart Account are not satisfied', ].filter(Boolean) as string[], name: 'UserOperationExpiredError', }) } } export type UserOperationPaymasterExpiredErrorType = UserOperationPaymasterExpiredError & { name: 'UserOperationPaymasterExpiredError' } export class UserOperationPaymasterExpiredError extends BaseError { static message = /aa32/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Paymaster for User Operation expired.', { cause, metaMessages: [ 'This could arise when:', '- the `validAfter` or `validUntil` values returned from `validatePaymasterUserOp` on the Paymaster are not satisfied', ].filter(Boolean) as string[], name: 'UserOperationPaymasterExpiredError', }) } } export type UserOperationSignatureErrorType = UserOperationSignatureError & { name: 'UserOperationSignatureError' } export class UserOperationSignatureError extends BaseError { static message = /aa24/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Signature provided for the User Operation is invalid.', { cause, metaMessages: [ 'This could arise when:', '- the `signature` for the User Operation is incorrectly computed, and unable to be verified by the Smart Account', ].filter(Boolean) as string[], name: 'UserOperationSignatureError', }) } } export type UserOperationPaymasterSignatureErrorType = UserOperationPaymasterSignatureError & { name: 'UserOperationPaymasterSignatureError' } export class UserOperationPaymasterSignatureError extends BaseError { static message = /aa34/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('Signature provided for the User Operation is invalid.', { cause, metaMessages: [ 'This could arise when:', '- the `signature` for the User Operation is incorrectly computed, and unable to be verified by the Paymaster', ].filter(Boolean) as string[], name: 'UserOperationPaymasterSignatureError', }) } } export type UserOperationRejectedByEntryPointErrorType = UserOperationRejectedByEntryPointError & { code: -32500 name: 'UserOperationRejectedByEntryPointError' } export class UserOperationRejectedByEntryPointError extends BaseError { static code = -32500 constructor({ cause }: { cause?: BaseError | undefined }) { super( "User Operation rejected by EntryPoint's `simulateValidation` during account creation or validation.", { cause, name: 'UserOperationRejectedByEntryPointError', }, ) } } export type UserOperationRejectedByPaymasterErrorType = UserOperationRejectedByPaymasterError & { code: -32501 name: 'UserOperationRejectedByPaymasterError' } export class UserOperationRejectedByPaymasterError extends BaseError { static code = -32501 constructor({ cause }: { cause?: BaseError | undefined }) { super("User Operation rejected by Paymaster's `validatePaymasterUserOp`.", { cause, name: 'UserOperationRejectedByPaymasterError', }) } } export type UserOperationRejectedByOpCodeErrorType = UserOperationRejectedByOpCodeError & { code: -32502 name: 'UserOperationRejectedByOpCodeError' } export class UserOperationRejectedByOpCodeError extends BaseError { static code = -32502 constructor({ cause }: { cause?: BaseError | undefined }) { super('User Operation rejected with op code validation error.', { cause, name: 'UserOperationRejectedByOpCodeError', }) } } export type UserOperationOutOfTimeRangeErrorType = UserOperationOutOfTimeRangeError & { code: -32503 name: 'UserOperationOutOfTimeRangeError' } export class UserOperationOutOfTimeRangeError extends BaseError { static code = -32503 constructor({ cause }: { cause?: BaseError | undefined }) { super( 'UserOperation out of time-range: either wallet or paymaster returned a time-range, and it is already expired (or will expire soon).', { cause, name: 'UserOperationOutOfTimeRangeError', }, ) } } export type UnknownBundlerErrorType = UnknownBundlerError & { name: 'UnknownBundlerError' } export class UnknownBundlerError extends BaseError { constructor({ cause }: { cause?: BaseError | undefined }) { super( `An error occurred while executing user operation: ${cause?.shortMessage}`, { cause, name: 'UnknownBundlerError', }, ) } } export type VerificationGasLimitExceededErrorType = VerificationGasLimitExceededError & { name: 'VerificationGasLimitExceededError' } export class VerificationGasLimitExceededError extends BaseError { static message = /aa40/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('User Operation verification gas limit exceeded.', { cause, metaMessages: [ 'This could arise when:', '- the gas used for verification exceeded the `verificationGasLimit`', ].filter(Boolean) as string[], name: 'VerificationGasLimitExceededError', }) } } export type VerificationGasLimitTooLowErrorType = VerificationGasLimitTooLowError & { name: 'VerificationGasLimitTooLowError' } export class VerificationGasLimitTooLowError extends BaseError { static message = /aa41/ constructor({ cause, }: { cause?: BaseError | undefined }) { super('User Operation verification gas limit is too low.', { cause, metaMessages: [ 'This could arise when:', '- the `verificationGasLimit` is too low to verify the User Operation', ].filter(Boolean) as string[], name: 'VerificationGasLimitTooLowError', }) } }