Skip to content

Variable: WaitForReceipt

const WaitForReceipt: {
  BoopReplaced: "submitterBoopReplaced";
  BufferExceeded: "submitterBufferExceeded";
  CallReverted: "onchainCallReverted";
  ClientError: "submitterClientError";
  EntryPointOutOfGas: "onchainEntryPointOutOfGas";
  ExecuteRejected: "onchainExecuteRejected";
  ExecuteReverted: "onchainExecuteReverted";
  ExtensionAlreadyRegistered: "onchainExtensionAlreadyRegistered";
  ExtensionNotRegistered: "onchainExtensionNotRegistered";
  ExternalSubmit: "submitterExternalSubmit";
  GasPriceTooHigh: "onchainGasPriceTooHigh";
  InsufficientStake: "onchainInsufficientStake";
  InvalidExtensionValue: "onchainInvalidExtensionValue";
  InvalidNonce: "onchainInvalidNonce";
  InvalidSignature: "onchainInvalidSignature";
  InvalidValues: "submitterInvalidValues";
  MissingGasValues: "onchainMissingGasValues";
  MissingValidationInformation: "onchainMissingValidationInformation";
  NonceTooFarAhead: "submitterNonceTooFarAhead";
  OverCapacity: "submitterOverCapacity";
  PaymentValidationRejected: "onchainPaymentValidationRejected";
  PaymentValidationReverted: "onchainPaymentValidationReverted";
  PayoutFailed: "onchainPayoutFailed";
  ReceiptTimeout: "submitterReceiptTimeout";
  RpcError: "submitterRpcError";
  SubmitTimeout: "submitterSubmitTimeout";
  Success: "onchainSuccess";
  UnexpectedError: "submitterUnexpectedError";
  UnexpectedReverted: "onchainUnexpectedReverted";
  UnknownBoop: "getStateUnknownBoop";
  ValidationRejected: "onchainValidationRejected";
  ValidationReverted: "onchainValidationReverted";
};

Defined in: apps/submitter/lib/handlers/waitForReceipt/types.ts:29

Possible output status of a waitForReceipt call (boop/receipt route).

Type declaration

BoopReplaced

readonly BoopReplaced: "submitterBoopReplaced" = "submitterBoopReplaced";

The boop has been replaced by a newer boop.

BufferExceeded

readonly BufferExceeded: "submitterBufferExceeded" = "submitterBufferExceeded";

The submitter rejected the request because of its Boop buffering policies.

CallReverted

readonly CallReverted: "onchainCallReverted" = "onchainCallReverted";

The call made by the account's execute function reverted.

ClientError

readonly ClientError: "submitterClientError" = "submitterClientError";

Unrecoverable client-side error.

EntryPointOutOfGas

readonly EntryPointOutOfGas: "onchainEntryPointOutOfGas" = "onchainEntryPointOutOfGas";

The EntryPoint ran out of gas. This is not supposed to happen and indicates either:

  1. In the case of a self-paying transaction, a payout function that consumes more gas during execution than during simulation.

  2. A submitter with a custom receive or fallback function that consumes more gas during execution than during simulation.

  3. An issue with the submitter, as only the EntryPoint can revert, and because of simulation we should always be able to provide enough gas that this does not happen (third-parties like accounts and paymasters are provided their separate gas limits and so cannot trigger an EntryPoint OOG revert).

ExecuteRejected

readonly ExecuteRejected: "onchainExecuteRejected" = "onchainExecuteRejected";

The account's execute function returned indicating a failure. This is typically caused by an incorrect input from the user.

ExecuteReverted

readonly ExecuteReverted: "onchainExecuteReverted" = "onchainExecuteReverted";

The account's execute call reverted.

ExtensionAlreadyRegistered

readonly ExtensionAlreadyRegistered: "onchainExtensionAlreadyRegistered" = "onchainExtensionAlreadyRegistered";

The account or the paymaster rejected the boop because the extension is already registered.

ExtensionNotRegistered

readonly ExtensionNotRegistered: "onchainExtensionNotRegistered" = "onchainExtensionNotRegistered";

The account or the paymaster rejected the boop because the extension hash not been registered.

ExternalSubmit

readonly ExternalSubmit: "submitterExternalSubmit" = "submitterExternalSubmit";

Boop was submitted onchain by another submitter or entity.

GasPriceTooHigh

readonly GasPriceTooHigh: "onchainGasPriceTooHigh" = "onchainGasPriceTooHigh";

The boop got rejected because the onchain gas price was above the maxFeePerGas.

InsufficientStake

readonly InsufficientStake: "onchainInsufficientStake" = "onchainInsufficientStake";

The submitter or paymaster has insufficient stake.

InvalidExtensionValue

readonly InvalidExtensionValue: "onchainInvalidExtensionValue" = "onchainInvalidExtensionValue";

The account or the paymaster rejected the boop because an extension value in the extraData is invalid.

InvalidNonce

readonly InvalidNonce: "onchainInvalidNonce" = "onchainInvalidNonce";

The nonce provided was invalid outside of simulation.

InvalidSignature

readonly InvalidSignature: "onchainInvalidSignature" = "onchainInvalidSignature";

The account or the paymaster rejected the boop because of an invalid signature.

InvalidValues

readonly InvalidValues: "submitterInvalidValues" = "submitterInvalidValues";

Some values provided as input are invalid (e.g. gas limits, timeout).

MissingGasValues

readonly MissingGasValues: "onchainMissingGasValues" = "onchainMissingGasValues";

A self-paying boop passes simulation but can't be submitted onchain because either its maxFeePerGas or gas limits are set to zero — this means either this would fail onchain because of zero values, or if we attach updated values, the signature would fail to verify. The Boop system imposes that a self-paying transaction must sign over its actual gas values for security.

MissingValidationInformation

readonly MissingValidationInformation: "onchainMissingValidationInformation" = "onchainMissingValidationInformation";

The boop passes simulation but can't be submitted onchain because either validation or payment validation has indicated that the status is unknown during validation. This typically means they need a signature, which could only be obtained once simulation was used to get the gas values to sign over (for self-paying transactions).

NonceTooFarAhead

readonly NonceTooFarAhead: "submitterNonceTooFarAhead" = "submitterNonceTooFarAhead";

The supplied nonce is too far ahead of the current nonce value.

OverCapacity

readonly OverCapacity: "submitterOverCapacity" = "submitterOverCapacity";

The submitter rejected the request because it is over capacity.

PaymentValidationRejected

readonly PaymentValidationRejected: "onchainPaymentValidationRejected" = "onchainPaymentValidationRejected";

The paymaster rejected the boop during payment validation.

PaymentValidationReverted

readonly PaymentValidationReverted: "onchainPaymentValidationReverted" = "onchainPaymentValidationReverted";

The paymaster's payout call reverted. This indicates either a dysfunctional paymaster or a dysfunctional submitter.

PayoutFailed

readonly PayoutFailed: "onchainPayoutFailed" = "onchainPayoutFailed";

When self-paying and the payment from the account fails, either because IAccount.payout reverts, consumes too much gas, or does not transfer the full cost to the submitter.

ReceiptTimeout

readonly ReceiptTimeout: "submitterReceiptTimeout" = "submitterReceiptTimeout";

Timed out while waiting for a receipt. This could indicate that the submitter tx is stuck in the mempool or an RPC issue.

RpcError

readonly RpcError: "submitterRpcError" = "submitterRpcError";

Error from the node's JSON-RPC server.

SubmitTimeout

readonly SubmitTimeout: "submitterSubmitTimeout" = "submitterSubmitTimeout";

The RPC execution call (or related RPC call) timed out.

Success

readonly Success: "onchainSuccess" = "onchainSuccess";

The Boop succeeded: the intended call was made without errors.

UnexpectedError

readonly UnexpectedError: "submitterUnexpectedError" = "submitterUnexpectedError";

The submitter failed with an unexpected error.

UnexpectedReverted

readonly UnexpectedReverted: "onchainUnexpectedReverted" = "onchainUnexpectedReverted";

Unexpected revert of the boop, this is not supposed to happen and indicates a deep issue, in theory only possible if the EntryPoint contract itself is faulty.

UnknownBoop

readonly UnknownBoop: "getStateUnknownBoop" = GetState.UnknownBoop;

ValidationRejected

readonly ValidationRejected: "onchainValidationRejected" = "onchainValidationRejected";

The account rejected the boop during validation.

ValidationReverted

readonly ValidationReverted: "onchainValidationReverted" = "onchainValidationReverted";

The account validation of the Boop reverted. This indicates either a dysfunctional account or a dysfunctional submitter.