@lidofinance/lido-csm-sdk 2.0.0-alpha.71 → 2.0.0-alpha.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,14 +3,30 @@ const require_sdk_error_code = require("./sdk-error-code.cjs");
3
3
  let viem = require("viem");
4
4
  //#region src/common/utils/classify-error.ts
5
5
  const TX_RECEIPT_REVERTED_NAME = "TransactionReceiptRevertedError";
6
+ const WALLET_TIMEOUT_PATTERN = /timed?\s*out/i;
7
+ const AA_VALIDATION_PATTERN = /\bAA[1-2]\d\b/;
8
+ const AA_PAYMASTER_PATTERN = /\bAA3\d\b/;
9
+ const aaReasonOf = (e) => e.shortMessage;
6
10
  const CLASSIFIERS = [
7
11
  [(e) => e instanceof viem.UserRejectedRequestError, require_sdk_error_code.ERROR_CODE.USER_REJECTED],
8
12
  [(e) => e instanceof viem.UnknownBundleIdError, require_sdk_error_code.ERROR_CODE.BUNDLE_NOT_FOUND],
13
+ [(e) => e instanceof viem.DuplicateIdError, require_sdk_error_code.ERROR_CODE.DUPLICATE_BUNDLE_ID],
14
+ [(e) => e instanceof viem.BundleTooLargeError || e instanceof viem.AtomicityNotSupportedError || e instanceof viem.AtomicReadyWalletRejectedUpgradeError, require_sdk_error_code.ERROR_CODE.BATCH_NOT_ATOMIC],
15
+ [(e) => e instanceof viem.UnauthorizedProviderError, require_sdk_error_code.ERROR_CODE.WALLET_UNAUTHORIZED],
16
+ [(e) => e instanceof viem.UnsupportedProviderMethodError, require_sdk_error_code.ERROR_CODE.METHOD_NOT_SUPPORTED],
9
17
  [(e) => e instanceof viem.ChainMismatchError || e instanceof viem.ChainDisconnectedError || e instanceof viem.ProviderDisconnectedError || e instanceof viem.SwitchChainError || e instanceof viem.UnsupportedChainIdError, require_sdk_error_code.ERROR_CODE.CHAIN_MISMATCH],
10
18
  [(e) => e instanceof viem.HttpRequestError || e instanceof viem.TimeoutError || e instanceof viem.WaitForCallsStatusTimeoutError || e instanceof viem.WebSocketRequestError || e instanceof viem.RpcRequestError || e instanceof viem.SocketClosedError, require_sdk_error_code.ERROR_CODE.NETWORK_ERROR],
19
+ [(e) => e instanceof viem.LimitExceededRpcError, require_sdk_error_code.ERROR_CODE.RATE_LIMITED],
11
20
  [(e) => e instanceof viem.InsufficientFundsError, require_sdk_error_code.ERROR_CODE.INSUFFICIENT_FUNDS],
21
+ [(e) => e instanceof viem.NonceTooLowError || e instanceof viem.NonceTooHighError || e instanceof viem.NonceMaxValueError, require_sdk_error_code.ERROR_CODE.NONCE_ERROR],
22
+ [(e) => e instanceof viem.FeeCapTooHighError || e instanceof viem.FeeCapTooLowError || e instanceof viem.TipAboveFeeCapError, require_sdk_error_code.ERROR_CODE.FEE_ERROR],
23
+ [(e) => e instanceof viem.IntrinsicGasTooHighError || e instanceof viem.IntrinsicGasTooLowError, require_sdk_error_code.ERROR_CODE.GAS_ERROR],
24
+ [(e) => e instanceof viem.TransactionTypeNotSupportedError, require_sdk_error_code.ERROR_CODE.NOT_SUPPORTED],
12
25
  [(e) => typeof e === "object" && e !== null && e.name === TX_RECEIPT_REVERTED_NAME, require_sdk_error_code.ERROR_CODE.TRANSACTION_REVERTED],
26
+ [(e) => e instanceof viem.ExecutionRevertedError && AA_VALIDATION_PATTERN.test(aaReasonOf(e)), require_sdk_error_code.ERROR_CODE.AA_VALIDATION_ERROR],
27
+ [(e) => e instanceof viem.ExecutionRevertedError && AA_PAYMASTER_PATTERN.test(aaReasonOf(e)), require_sdk_error_code.ERROR_CODE.AA_PAYMASTER_ERROR],
13
28
  [(e) => e instanceof viem.ExecutionRevertedError, require_sdk_error_code.ERROR_CODE.EXECUTION_REVERTED],
29
+ [(e) => (e instanceof viem.InternalRpcError || e instanceof viem.InvalidInputRpcError) && WALLET_TIMEOUT_PATTERN.test(e.details ?? ""), require_sdk_error_code.ERROR_CODE.WALLET_TIMEOUT],
14
30
  [(e) => e instanceof viem.InternalRpcError || e instanceof viem.InvalidInputRpcError, require_sdk_error_code.ERROR_CODE.WALLET_RPC_ERROR]
15
31
  ];
16
32
  const classifyError = (error, decodedRevert) => {
@@ -1 +1 @@
1
- {"version":3,"file":"classify-error.cjs","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"sourcesContent":["import {\n BaseError,\n ChainDisconnectedError,\n ChainMismatchError,\n ExecutionRevertedError,\n HttpRequestError,\n InsufficientFundsError,\n InternalRpcError,\n InvalidInputRpcError,\n ProviderDisconnectedError,\n RpcRequestError,\n SocketClosedError,\n SwitchChainError,\n TimeoutError,\n UnknownBundleIdError,\n UnsupportedChainIdError,\n UserRejectedRequestError,\n WaitForCallsStatusTimeoutError,\n WebSocketRequestError,\n} from 'viem';\nimport type { DecodedRevert } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\n// viem doesn't re-export TransactionReceiptRevertedError from its top-level\n// entry, so `instanceof` is unavailable — match by `name`, which viem sets\n// explicitly. Thrown only by sendTransactionSync / sendRawTransactionSync.\nconst TX_RECEIPT_REVERTED_NAME = 'TransactionReceiptRevertedError';\n\n// Ordered most-specific → most-generic: a UserRejectedRequestError wrapped\n// inside an InternalRpcError must still classify as USER_REJECTED. CHAIN_MISMATCH\n// precedes EXECUTION_REVERTED — a wallet on the wrong chain may surface an\n// execution revert under the hood, but the chain issue is the actionable root.\nconst CLASSIFIERS: Array<[(e: unknown) => boolean, ERROR_CODE]> = [\n [(e) => e instanceof UserRejectedRequestError, ERROR_CODE.USER_REJECTED],\n [(e) => e instanceof UnknownBundleIdError, ERROR_CODE.BUNDLE_NOT_FOUND],\n [\n (e) =>\n e instanceof ChainMismatchError ||\n e instanceof ChainDisconnectedError ||\n e instanceof ProviderDisconnectedError ||\n e instanceof SwitchChainError ||\n e instanceof UnsupportedChainIdError,\n ERROR_CODE.CHAIN_MISMATCH,\n ],\n [\n (e) =>\n e instanceof HttpRequestError ||\n e instanceof TimeoutError ||\n e instanceof WaitForCallsStatusTimeoutError ||\n e instanceof WebSocketRequestError ||\n e instanceof RpcRequestError ||\n e instanceof SocketClosedError,\n ERROR_CODE.NETWORK_ERROR,\n ],\n [(e) => e instanceof InsufficientFundsError, ERROR_CODE.INSUFFICIENT_FUNDS],\n [\n (e) =>\n typeof e === 'object' &&\n e !== null &&\n (e as { name?: unknown }).name === TX_RECEIPT_REVERTED_NAME,\n ERROR_CODE.TRANSACTION_REVERTED,\n ],\n [(e) => e instanceof ExecutionRevertedError, ERROR_CODE.EXECUTION_REVERTED],\n [\n (e) => e instanceof InternalRpcError || e instanceof InvalidInputRpcError,\n ERROR_CODE.WALLET_RPC_ERROR,\n ],\n];\n\nexport const classifyError = (\n error: unknown,\n decodedRevert: DecodedRevert | undefined,\n): ERROR_CODE | undefined => {\n if (decodedRevert) return ERROR_CODE.CONTRACT_REVERT;\n if (!(error instanceof BaseError)) return undefined;\n\n for (const [match, code] of CLASSIFIERS) {\n if (error.walk(match)) return code;\n }\n return undefined;\n};\n"],"mappings":";;;;AA0BA,MAAM,2BAA2B;AAMjC,MAAM,cAA4D;CAChE,EAAE,MAAM,aAAa,KAAA,0BAA0B,uBAAA,WAAW,cAAa;CACvE,EAAE,MAAM,aAAa,KAAA,sBAAsB,uBAAA,WAAW,iBAAgB;CACtE,EACG,MACC,aAAa,KAAA,sBACb,aAAa,KAAA,0BACb,aAAa,KAAA,6BACb,aAAa,KAAA,oBACb,aAAa,KAAA,yBACf,uBAAA,WAAW,eACb;CACA,EACG,MACC,aAAa,KAAA,oBACb,aAAa,KAAA,gBACb,aAAa,KAAA,kCACb,aAAa,KAAA,yBACb,aAAa,KAAA,mBACb,aAAa,KAAA,mBACf,uBAAA,WAAW,cACb;CACA,EAAE,MAAM,aAAa,KAAA,wBAAwB,uBAAA,WAAW,mBAAkB;CAC1E,EACG,MACC,OAAO,MAAM,YACb,MAAM,QACL,EAAyB,SAAS,0BACrC,uBAAA,WAAW,qBACb;CACA,EAAE,MAAM,aAAa,KAAA,wBAAwB,uBAAA,WAAW,mBAAkB;CAC1E,EACG,MAAM,aAAa,KAAA,oBAAoB,aAAa,KAAA,sBACrD,uBAAA,WAAW,iBACb;CACF;AAEO,MAAM,iBACX,OACA,kBAC2B;AAC3B,KAAI,cAAe,QAAO,uBAAA,WAAW;AACrC,KAAI,EAAE,iBAAiB,KAAA,WAAY,QAAO,KAAA;AAE1C,MAAA,MAAW,CAAC,OAAO,SAAS,YAC1B,KAAI,MAAM,KAAK,MAAK,CAAG,QAAO"}
1
+ {"version":3,"file":"classify-error.cjs","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"sourcesContent":["import {\n AtomicityNotSupportedError,\n AtomicReadyWalletRejectedUpgradeError,\n BaseError,\n BundleTooLargeError,\n ChainDisconnectedError,\n ChainMismatchError,\n DuplicateIdError,\n ExecutionRevertedError,\n FeeCapTooHighError,\n FeeCapTooLowError,\n HttpRequestError,\n InsufficientFundsError,\n IntrinsicGasTooHighError,\n IntrinsicGasTooLowError,\n InternalRpcError,\n InvalidInputRpcError,\n LimitExceededRpcError,\n NonceMaxValueError,\n NonceTooHighError,\n NonceTooLowError,\n ProviderDisconnectedError,\n RpcRequestError,\n SocketClosedError,\n SwitchChainError,\n TimeoutError,\n TipAboveFeeCapError,\n TransactionTypeNotSupportedError,\n UnauthorizedProviderError,\n UnknownBundleIdError,\n UnsupportedChainIdError,\n UnsupportedProviderMethodError,\n UserRejectedRequestError,\n WaitForCallsStatusTimeoutError,\n WebSocketRequestError,\n} from 'viem';\nimport type { DecodedRevert } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\n// viem doesn't re-export TransactionReceiptRevertedError from its top-level\n// entry, so `instanceof` is unavailable — match by `name`, which viem sets\n// explicitly. Thrown only by sendTransactionSync / sendRawTransactionSync.\nconst TX_RECEIPT_REVERTED_NAME = 'TransactionReceiptRevertedError';\n\n// EIP-1474 has no dedicated \"wallet timed out\" code — wallets report their\n// own internal timeouts as a generic -32603/-32000 with vendor-specific\n// wording. Best-effort only: matches common phrasings (\"timeout\", \"timed\n// out\", \"time out\"); differently-worded wallet timeouts fall through to\n// WALLET_RPC_ERROR instead. Not spec-stable like the other classifiers below.\nconst WALLET_TIMEOUT_PATTERN = /timed?\\s*out/i;\n\n// ERC-4337 EntryPoint reverts with a conventional \"AAxx <reason>\" string —\n// not ABI-decodable (see decode-revert-data.ts), but the \"AAxx\" prefix\n// convention is defined by the ERC itself, not a wallet vendor, so it's a\n// firmer signal than a typical message heuristic. viem surfaces it as an\n// ExecutionRevertedError whose shortMessage embeds the raw reason text.\n// AA1x = factory/sender deployment, AA2x = account validation (signature,\n// prefund). Best-effort: non-conforming bundlers still fall through to\n// EXECUTION_REVERTED.\nconst AA_VALIDATION_PATTERN = /\\bAA[1-2]\\d\\b/;\n// AA3x = paymaster validation/execution failure (deposit too low, paymaster\n// reverted post-op, etc.).\nconst AA_PAYMASTER_PATTERN = /\\bAA3\\d\\b/;\n\nconst aaReasonOf = (e: ExecutionRevertedError): string => e.shortMessage;\n\n// Ordered most-specific → most-generic: a UserRejectedRequestError wrapped\n// inside an InternalRpcError must still classify as USER_REJECTED. CHAIN_MISMATCH\n// precedes EXECUTION_REVERTED — a wallet on the wrong chain may surface an\n// execution revert under the hood, but the chain issue is the actionable root.\n// The AA_* buckets precede the generic EXECUTION_REVERTED bucket, and\n// WALLET_TIMEOUT precedes the generic WALLET_RPC_ERROR bucket, for the same\n// reason — each must win before its catch-all superclass match claims it.\nconst CLASSIFIERS: Array<[(e: unknown) => boolean, ERROR_CODE]> = [\n [(e) => e instanceof UserRejectedRequestError, ERROR_CODE.USER_REJECTED],\n [(e) => e instanceof UnknownBundleIdError, ERROR_CODE.BUNDLE_NOT_FOUND],\n [(e) => e instanceof DuplicateIdError, ERROR_CODE.DUPLICATE_BUNDLE_ID],\n [\n (e) =>\n e instanceof BundleTooLargeError ||\n e instanceof AtomicityNotSupportedError ||\n e instanceof AtomicReadyWalletRejectedUpgradeError,\n ERROR_CODE.BATCH_NOT_ATOMIC,\n ],\n [\n (e) => e instanceof UnauthorizedProviderError,\n ERROR_CODE.WALLET_UNAUTHORIZED,\n ],\n [\n (e) => e instanceof UnsupportedProviderMethodError,\n ERROR_CODE.METHOD_NOT_SUPPORTED,\n ],\n [\n (e) =>\n e instanceof ChainMismatchError ||\n e instanceof ChainDisconnectedError ||\n e instanceof ProviderDisconnectedError ||\n e instanceof SwitchChainError ||\n e instanceof UnsupportedChainIdError,\n ERROR_CODE.CHAIN_MISMATCH,\n ],\n [\n (e) =>\n e instanceof HttpRequestError ||\n e instanceof TimeoutError ||\n e instanceof WaitForCallsStatusTimeoutError ||\n e instanceof WebSocketRequestError ||\n e instanceof RpcRequestError ||\n e instanceof SocketClosedError,\n ERROR_CODE.NETWORK_ERROR,\n ],\n [(e) => e instanceof LimitExceededRpcError, ERROR_CODE.RATE_LIMITED],\n [(e) => e instanceof InsufficientFundsError, ERROR_CODE.INSUFFICIENT_FUNDS],\n [\n (e) =>\n e instanceof NonceTooLowError ||\n e instanceof NonceTooHighError ||\n e instanceof NonceMaxValueError,\n ERROR_CODE.NONCE_ERROR,\n ],\n [\n (e) =>\n e instanceof FeeCapTooHighError ||\n e instanceof FeeCapTooLowError ||\n e instanceof TipAboveFeeCapError,\n ERROR_CODE.FEE_ERROR,\n ],\n [\n (e) =>\n e instanceof IntrinsicGasTooHighError ||\n e instanceof IntrinsicGasTooLowError,\n ERROR_CODE.GAS_ERROR,\n ],\n [\n (e) => e instanceof TransactionTypeNotSupportedError,\n ERROR_CODE.NOT_SUPPORTED,\n ],\n [\n (e) =>\n typeof e === 'object' &&\n e !== null &&\n (e as { name?: unknown }).name === TX_RECEIPT_REVERTED_NAME,\n ERROR_CODE.TRANSACTION_REVERTED,\n ],\n [\n (e) =>\n e instanceof ExecutionRevertedError &&\n AA_VALIDATION_PATTERN.test(aaReasonOf(e)),\n ERROR_CODE.AA_VALIDATION_ERROR,\n ],\n [\n (e) =>\n e instanceof ExecutionRevertedError &&\n AA_PAYMASTER_PATTERN.test(aaReasonOf(e)),\n ERROR_CODE.AA_PAYMASTER_ERROR,\n ],\n [(e) => e instanceof ExecutionRevertedError, ERROR_CODE.EXECUTION_REVERTED],\n [\n (e) =>\n (e instanceof InternalRpcError || e instanceof InvalidInputRpcError) &&\n WALLET_TIMEOUT_PATTERN.test(e.details ?? ''),\n ERROR_CODE.WALLET_TIMEOUT,\n ],\n [\n (e) => e instanceof InternalRpcError || e instanceof InvalidInputRpcError,\n ERROR_CODE.WALLET_RPC_ERROR,\n ],\n];\n\nexport const classifyError = (\n error: unknown,\n decodedRevert: DecodedRevert | undefined,\n): ERROR_CODE | undefined => {\n if (decodedRevert) return ERROR_CODE.CONTRACT_REVERT;\n if (!(error instanceof BaseError)) return undefined;\n\n for (const [match, code] of CLASSIFIERS) {\n if (error.walk(match)) return code;\n }\n return undefined;\n};\n"],"mappings":";;;;AA0CA,MAAM,2BAA2B;AAOjC,MAAM,yBAAyB;AAU/B,MAAM,wBAAwB;AAG9B,MAAM,uBAAuB;AAE7B,MAAM,cAAc,MAAsC,EAAE;AAS5D,MAAM,cAA4D;CAChE,EAAE,MAAM,aAAa,KAAA,0BAA0B,uBAAA,WAAW,cAAa;CACvE,EAAE,MAAM,aAAa,KAAA,sBAAsB,uBAAA,WAAW,iBAAgB;CACtE,EAAE,MAAM,aAAa,KAAA,kBAAkB,uBAAA,WAAW,oBAAmB;CACrE,EACG,MACC,aAAa,KAAA,uBACb,aAAa,KAAA,8BACb,aAAa,KAAA,uCACf,uBAAA,WAAW,iBACb;CACA,EACG,MAAM,aAAa,KAAA,2BACpB,uBAAA,WAAW,oBACb;CACA,EACG,MAAM,aAAa,KAAA,gCACpB,uBAAA,WAAW,qBACb;CACA,EACG,MACC,aAAa,KAAA,sBACb,aAAa,KAAA,0BACb,aAAa,KAAA,6BACb,aAAa,KAAA,oBACb,aAAa,KAAA,yBACf,uBAAA,WAAW,eACb;CACA,EACG,MACC,aAAa,KAAA,oBACb,aAAa,KAAA,gBACb,aAAa,KAAA,kCACb,aAAa,KAAA,yBACb,aAAa,KAAA,mBACb,aAAa,KAAA,mBACf,uBAAA,WAAW,cACb;CACA,EAAE,MAAM,aAAa,KAAA,uBAAuB,uBAAA,WAAW,aAAY;CACnE,EAAE,MAAM,aAAa,KAAA,wBAAwB,uBAAA,WAAW,mBAAkB;CAC1E,EACG,MACC,aAAa,KAAA,oBACb,aAAa,KAAA,qBACb,aAAa,KAAA,oBACf,uBAAA,WAAW,YACb;CACA,EACG,MACC,aAAa,KAAA,sBACb,aAAa,KAAA,qBACb,aAAa,KAAA,qBACf,uBAAA,WAAW,UACb;CACA,EACG,MACC,aAAa,KAAA,4BACb,aAAa,KAAA,yBACf,uBAAA,WAAW,UACb;CACA,EACG,MAAM,aAAa,KAAA,kCACpB,uBAAA,WAAW,cACb;CACA,EACG,MACC,OAAO,MAAM,YACb,MAAM,QACL,EAAyB,SAAS,0BACrC,uBAAA,WAAW,qBACb;CACA,EACG,MACC,aAAa,KAAA,0BACb,sBAAsB,KAAK,WAAW,EAAE,CAAA,EAC1C,uBAAA,WAAW,oBACb;CACA,EACG,MACC,aAAa,KAAA,0BACb,qBAAqB,KAAK,WAAW,EAAE,CAAA,EACzC,uBAAA,WAAW,mBACb;CACA,EAAE,MAAM,aAAa,KAAA,wBAAwB,uBAAA,WAAW,mBAAkB;CAC1E,EACG,OACE,aAAa,KAAA,oBAAoB,aAAa,KAAA,yBAC/C,uBAAuB,KAAK,EAAE,WAAW,GAAE,EAC7C,uBAAA,WAAW,eACb;CACA,EACG,MAAM,aAAa,KAAA,oBAAoB,aAAa,KAAA,sBACrD,uBAAA,WAAW,iBACb;CACF;AAEO,MAAM,iBACX,OACA,kBAC2B;AAC3B,KAAI,cAAe,QAAO,uBAAA,WAAW;AACrC,KAAI,EAAE,iBAAiB,KAAA,WAAY,QAAO,KAAA;AAE1C,MAAA,MAAW,CAAC,OAAO,SAAS,YAC1B,KAAI,MAAM,KAAK,MAAK,CAAG,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"classify-error.d.cts","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"mappings":";;;;cAqEa,aAAA,GACX,KAAA,WACA,aAAA,EAAe,aAAA,iBACd,UAAA"}
1
+ {"version":3,"file":"classify-error.d.cts","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"mappings":";;;;cAyKa,aAAA,GACX,KAAA,WACA,aAAA,EAAe,aAAA,iBACd,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"classify-error.d.mts","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"mappings":";;;;cAqEa,aAAA,GACX,KAAA,WACA,aAAA,EAAe,aAAA,iBACd,UAAA"}
1
+ {"version":3,"file":"classify-error.d.mts","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"mappings":";;;;cAyKa,aAAA,GACX,KAAA,WACA,aAAA,EAAe,aAAA,iBACd,UAAA"}
@@ -1,15 +1,31 @@
1
1
  import { ERROR_CODE } from "./sdk-error-code.mjs";
2
- import { BaseError, ChainDisconnectedError, ChainMismatchError, ExecutionRevertedError, HttpRequestError, InsufficientFundsError, InternalRpcError, InvalidInputRpcError, ProviderDisconnectedError, RpcRequestError, SocketClosedError, SwitchChainError, TimeoutError, UnknownBundleIdError, UnsupportedChainIdError, UserRejectedRequestError, WaitForCallsStatusTimeoutError, WebSocketRequestError } from "viem";
2
+ import { AtomicReadyWalletRejectedUpgradeError, AtomicityNotSupportedError, BaseError, BundleTooLargeError, ChainDisconnectedError, ChainMismatchError, DuplicateIdError, ExecutionRevertedError, FeeCapTooHighError, FeeCapTooLowError, HttpRequestError, InsufficientFundsError, InternalRpcError, IntrinsicGasTooHighError, IntrinsicGasTooLowError, InvalidInputRpcError, LimitExceededRpcError, NonceMaxValueError, NonceTooHighError, NonceTooLowError, ProviderDisconnectedError, RpcRequestError, SocketClosedError, SwitchChainError, TimeoutError, TipAboveFeeCapError, TransactionTypeNotSupportedError, UnauthorizedProviderError, UnknownBundleIdError, UnsupportedChainIdError, UnsupportedProviderMethodError, UserRejectedRequestError, WaitForCallsStatusTimeoutError, WebSocketRequestError } from "viem";
3
3
  //#region src/common/utils/classify-error.ts
4
4
  const TX_RECEIPT_REVERTED_NAME = "TransactionReceiptRevertedError";
5
+ const WALLET_TIMEOUT_PATTERN = /timed?\s*out/i;
6
+ const AA_VALIDATION_PATTERN = /\bAA[1-2]\d\b/;
7
+ const AA_PAYMASTER_PATTERN = /\bAA3\d\b/;
8
+ const aaReasonOf = (e) => e.shortMessage;
5
9
  const CLASSIFIERS = [
6
10
  [(e) => e instanceof UserRejectedRequestError, ERROR_CODE.USER_REJECTED],
7
11
  [(e) => e instanceof UnknownBundleIdError, ERROR_CODE.BUNDLE_NOT_FOUND],
12
+ [(e) => e instanceof DuplicateIdError, ERROR_CODE.DUPLICATE_BUNDLE_ID],
13
+ [(e) => e instanceof BundleTooLargeError || e instanceof AtomicityNotSupportedError || e instanceof AtomicReadyWalletRejectedUpgradeError, ERROR_CODE.BATCH_NOT_ATOMIC],
14
+ [(e) => e instanceof UnauthorizedProviderError, ERROR_CODE.WALLET_UNAUTHORIZED],
15
+ [(e) => e instanceof UnsupportedProviderMethodError, ERROR_CODE.METHOD_NOT_SUPPORTED],
8
16
  [(e) => e instanceof ChainMismatchError || e instanceof ChainDisconnectedError || e instanceof ProviderDisconnectedError || e instanceof SwitchChainError || e instanceof UnsupportedChainIdError, ERROR_CODE.CHAIN_MISMATCH],
9
17
  [(e) => e instanceof HttpRequestError || e instanceof TimeoutError || e instanceof WaitForCallsStatusTimeoutError || e instanceof WebSocketRequestError || e instanceof RpcRequestError || e instanceof SocketClosedError, ERROR_CODE.NETWORK_ERROR],
18
+ [(e) => e instanceof LimitExceededRpcError, ERROR_CODE.RATE_LIMITED],
10
19
  [(e) => e instanceof InsufficientFundsError, ERROR_CODE.INSUFFICIENT_FUNDS],
20
+ [(e) => e instanceof NonceTooLowError || e instanceof NonceTooHighError || e instanceof NonceMaxValueError, ERROR_CODE.NONCE_ERROR],
21
+ [(e) => e instanceof FeeCapTooHighError || e instanceof FeeCapTooLowError || e instanceof TipAboveFeeCapError, ERROR_CODE.FEE_ERROR],
22
+ [(e) => e instanceof IntrinsicGasTooHighError || e instanceof IntrinsicGasTooLowError, ERROR_CODE.GAS_ERROR],
23
+ [(e) => e instanceof TransactionTypeNotSupportedError, ERROR_CODE.NOT_SUPPORTED],
11
24
  [(e) => typeof e === "object" && e !== null && e.name === TX_RECEIPT_REVERTED_NAME, ERROR_CODE.TRANSACTION_REVERTED],
25
+ [(e) => e instanceof ExecutionRevertedError && AA_VALIDATION_PATTERN.test(aaReasonOf(e)), ERROR_CODE.AA_VALIDATION_ERROR],
26
+ [(e) => e instanceof ExecutionRevertedError && AA_PAYMASTER_PATTERN.test(aaReasonOf(e)), ERROR_CODE.AA_PAYMASTER_ERROR],
12
27
  [(e) => e instanceof ExecutionRevertedError, ERROR_CODE.EXECUTION_REVERTED],
28
+ [(e) => (e instanceof InternalRpcError || e instanceof InvalidInputRpcError) && WALLET_TIMEOUT_PATTERN.test(e.details ?? ""), ERROR_CODE.WALLET_TIMEOUT],
13
29
  [(e) => e instanceof InternalRpcError || e instanceof InvalidInputRpcError, ERROR_CODE.WALLET_RPC_ERROR]
14
30
  ];
15
31
  const classifyError = (error, decodedRevert) => {
@@ -1 +1 @@
1
- {"version":3,"file":"classify-error.mjs","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"sourcesContent":["import {\n BaseError,\n ChainDisconnectedError,\n ChainMismatchError,\n ExecutionRevertedError,\n HttpRequestError,\n InsufficientFundsError,\n InternalRpcError,\n InvalidInputRpcError,\n ProviderDisconnectedError,\n RpcRequestError,\n SocketClosedError,\n SwitchChainError,\n TimeoutError,\n UnknownBundleIdError,\n UnsupportedChainIdError,\n UserRejectedRequestError,\n WaitForCallsStatusTimeoutError,\n WebSocketRequestError,\n} from 'viem';\nimport type { DecodedRevert } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\n// viem doesn't re-export TransactionReceiptRevertedError from its top-level\n// entry, so `instanceof` is unavailable — match by `name`, which viem sets\n// explicitly. Thrown only by sendTransactionSync / sendRawTransactionSync.\nconst TX_RECEIPT_REVERTED_NAME = 'TransactionReceiptRevertedError';\n\n// Ordered most-specific → most-generic: a UserRejectedRequestError wrapped\n// inside an InternalRpcError must still classify as USER_REJECTED. CHAIN_MISMATCH\n// precedes EXECUTION_REVERTED — a wallet on the wrong chain may surface an\n// execution revert under the hood, but the chain issue is the actionable root.\nconst CLASSIFIERS: Array<[(e: unknown) => boolean, ERROR_CODE]> = [\n [(e) => e instanceof UserRejectedRequestError, ERROR_CODE.USER_REJECTED],\n [(e) => e instanceof UnknownBundleIdError, ERROR_CODE.BUNDLE_NOT_FOUND],\n [\n (e) =>\n e instanceof ChainMismatchError ||\n e instanceof ChainDisconnectedError ||\n e instanceof ProviderDisconnectedError ||\n e instanceof SwitchChainError ||\n e instanceof UnsupportedChainIdError,\n ERROR_CODE.CHAIN_MISMATCH,\n ],\n [\n (e) =>\n e instanceof HttpRequestError ||\n e instanceof TimeoutError ||\n e instanceof WaitForCallsStatusTimeoutError ||\n e instanceof WebSocketRequestError ||\n e instanceof RpcRequestError ||\n e instanceof SocketClosedError,\n ERROR_CODE.NETWORK_ERROR,\n ],\n [(e) => e instanceof InsufficientFundsError, ERROR_CODE.INSUFFICIENT_FUNDS],\n [\n (e) =>\n typeof e === 'object' &&\n e !== null &&\n (e as { name?: unknown }).name === TX_RECEIPT_REVERTED_NAME,\n ERROR_CODE.TRANSACTION_REVERTED,\n ],\n [(e) => e instanceof ExecutionRevertedError, ERROR_CODE.EXECUTION_REVERTED],\n [\n (e) => e instanceof InternalRpcError || e instanceof InvalidInputRpcError,\n ERROR_CODE.WALLET_RPC_ERROR,\n ],\n];\n\nexport const classifyError = (\n error: unknown,\n decodedRevert: DecodedRevert | undefined,\n): ERROR_CODE | undefined => {\n if (decodedRevert) return ERROR_CODE.CONTRACT_REVERT;\n if (!(error instanceof BaseError)) return undefined;\n\n for (const [match, code] of CLASSIFIERS) {\n if (error.walk(match)) return code;\n }\n return undefined;\n};\n"],"mappings":";;;AA0BA,MAAM,2BAA2B;AAMjC,MAAM,cAA4D;CAChE,EAAE,MAAM,aAAa,0BAA0B,WAAW,cAAa;CACvE,EAAE,MAAM,aAAa,sBAAsB,WAAW,iBAAgB;CACtE,EACG,MACC,aAAa,sBACb,aAAa,0BACb,aAAa,6BACb,aAAa,oBACb,aAAa,yBACf,WAAW,eACb;CACA,EACG,MACC,aAAa,oBACb,aAAa,gBACb,aAAa,kCACb,aAAa,yBACb,aAAa,mBACb,aAAa,mBACf,WAAW,cACb;CACA,EAAE,MAAM,aAAa,wBAAwB,WAAW,mBAAkB;CAC1E,EACG,MACC,OAAO,MAAM,YACb,MAAM,QACL,EAAyB,SAAS,0BACrC,WAAW,qBACb;CACA,EAAE,MAAM,aAAa,wBAAwB,WAAW,mBAAkB;CAC1E,EACG,MAAM,aAAa,oBAAoB,aAAa,sBACrD,WAAW,iBACb;CACF;AAEO,MAAM,iBACX,OACA,kBAC2B;AAC3B,KAAI,cAAe,QAAO,WAAW;AACrC,KAAI,EAAE,iBAAiB,WAAY,QAAO,KAAA;AAE1C,MAAA,MAAW,CAAC,OAAO,SAAS,YAC1B,KAAI,MAAM,KAAK,MAAK,CAAG,QAAO"}
1
+ {"version":3,"file":"classify-error.mjs","names":[],"sources":["../../../src/common/utils/classify-error.ts"],"sourcesContent":["import {\n AtomicityNotSupportedError,\n AtomicReadyWalletRejectedUpgradeError,\n BaseError,\n BundleTooLargeError,\n ChainDisconnectedError,\n ChainMismatchError,\n DuplicateIdError,\n ExecutionRevertedError,\n FeeCapTooHighError,\n FeeCapTooLowError,\n HttpRequestError,\n InsufficientFundsError,\n IntrinsicGasTooHighError,\n IntrinsicGasTooLowError,\n InternalRpcError,\n InvalidInputRpcError,\n LimitExceededRpcError,\n NonceMaxValueError,\n NonceTooHighError,\n NonceTooLowError,\n ProviderDisconnectedError,\n RpcRequestError,\n SocketClosedError,\n SwitchChainError,\n TimeoutError,\n TipAboveFeeCapError,\n TransactionTypeNotSupportedError,\n UnauthorizedProviderError,\n UnknownBundleIdError,\n UnsupportedChainIdError,\n UnsupportedProviderMethodError,\n UserRejectedRequestError,\n WaitForCallsStatusTimeoutError,\n WebSocketRequestError,\n} from 'viem';\nimport type { DecodedRevert } from './decode-revert-data';\nimport { ERROR_CODE } from './sdk-error-code';\n\n// viem doesn't re-export TransactionReceiptRevertedError from its top-level\n// entry, so `instanceof` is unavailable — match by `name`, which viem sets\n// explicitly. Thrown only by sendTransactionSync / sendRawTransactionSync.\nconst TX_RECEIPT_REVERTED_NAME = 'TransactionReceiptRevertedError';\n\n// EIP-1474 has no dedicated \"wallet timed out\" code — wallets report their\n// own internal timeouts as a generic -32603/-32000 with vendor-specific\n// wording. Best-effort only: matches common phrasings (\"timeout\", \"timed\n// out\", \"time out\"); differently-worded wallet timeouts fall through to\n// WALLET_RPC_ERROR instead. Not spec-stable like the other classifiers below.\nconst WALLET_TIMEOUT_PATTERN = /timed?\\s*out/i;\n\n// ERC-4337 EntryPoint reverts with a conventional \"AAxx <reason>\" string —\n// not ABI-decodable (see decode-revert-data.ts), but the \"AAxx\" prefix\n// convention is defined by the ERC itself, not a wallet vendor, so it's a\n// firmer signal than a typical message heuristic. viem surfaces it as an\n// ExecutionRevertedError whose shortMessage embeds the raw reason text.\n// AA1x = factory/sender deployment, AA2x = account validation (signature,\n// prefund). Best-effort: non-conforming bundlers still fall through to\n// EXECUTION_REVERTED.\nconst AA_VALIDATION_PATTERN = /\\bAA[1-2]\\d\\b/;\n// AA3x = paymaster validation/execution failure (deposit too low, paymaster\n// reverted post-op, etc.).\nconst AA_PAYMASTER_PATTERN = /\\bAA3\\d\\b/;\n\nconst aaReasonOf = (e: ExecutionRevertedError): string => e.shortMessage;\n\n// Ordered most-specific → most-generic: a UserRejectedRequestError wrapped\n// inside an InternalRpcError must still classify as USER_REJECTED. CHAIN_MISMATCH\n// precedes EXECUTION_REVERTED — a wallet on the wrong chain may surface an\n// execution revert under the hood, but the chain issue is the actionable root.\n// The AA_* buckets precede the generic EXECUTION_REVERTED bucket, and\n// WALLET_TIMEOUT precedes the generic WALLET_RPC_ERROR bucket, for the same\n// reason — each must win before its catch-all superclass match claims it.\nconst CLASSIFIERS: Array<[(e: unknown) => boolean, ERROR_CODE]> = [\n [(e) => e instanceof UserRejectedRequestError, ERROR_CODE.USER_REJECTED],\n [(e) => e instanceof UnknownBundleIdError, ERROR_CODE.BUNDLE_NOT_FOUND],\n [(e) => e instanceof DuplicateIdError, ERROR_CODE.DUPLICATE_BUNDLE_ID],\n [\n (e) =>\n e instanceof BundleTooLargeError ||\n e instanceof AtomicityNotSupportedError ||\n e instanceof AtomicReadyWalletRejectedUpgradeError,\n ERROR_CODE.BATCH_NOT_ATOMIC,\n ],\n [\n (e) => e instanceof UnauthorizedProviderError,\n ERROR_CODE.WALLET_UNAUTHORIZED,\n ],\n [\n (e) => e instanceof UnsupportedProviderMethodError,\n ERROR_CODE.METHOD_NOT_SUPPORTED,\n ],\n [\n (e) =>\n e instanceof ChainMismatchError ||\n e instanceof ChainDisconnectedError ||\n e instanceof ProviderDisconnectedError ||\n e instanceof SwitchChainError ||\n e instanceof UnsupportedChainIdError,\n ERROR_CODE.CHAIN_MISMATCH,\n ],\n [\n (e) =>\n e instanceof HttpRequestError ||\n e instanceof TimeoutError ||\n e instanceof WaitForCallsStatusTimeoutError ||\n e instanceof WebSocketRequestError ||\n e instanceof RpcRequestError ||\n e instanceof SocketClosedError,\n ERROR_CODE.NETWORK_ERROR,\n ],\n [(e) => e instanceof LimitExceededRpcError, ERROR_CODE.RATE_LIMITED],\n [(e) => e instanceof InsufficientFundsError, ERROR_CODE.INSUFFICIENT_FUNDS],\n [\n (e) =>\n e instanceof NonceTooLowError ||\n e instanceof NonceTooHighError ||\n e instanceof NonceMaxValueError,\n ERROR_CODE.NONCE_ERROR,\n ],\n [\n (e) =>\n e instanceof FeeCapTooHighError ||\n e instanceof FeeCapTooLowError ||\n e instanceof TipAboveFeeCapError,\n ERROR_CODE.FEE_ERROR,\n ],\n [\n (e) =>\n e instanceof IntrinsicGasTooHighError ||\n e instanceof IntrinsicGasTooLowError,\n ERROR_CODE.GAS_ERROR,\n ],\n [\n (e) => e instanceof TransactionTypeNotSupportedError,\n ERROR_CODE.NOT_SUPPORTED,\n ],\n [\n (e) =>\n typeof e === 'object' &&\n e !== null &&\n (e as { name?: unknown }).name === TX_RECEIPT_REVERTED_NAME,\n ERROR_CODE.TRANSACTION_REVERTED,\n ],\n [\n (e) =>\n e instanceof ExecutionRevertedError &&\n AA_VALIDATION_PATTERN.test(aaReasonOf(e)),\n ERROR_CODE.AA_VALIDATION_ERROR,\n ],\n [\n (e) =>\n e instanceof ExecutionRevertedError &&\n AA_PAYMASTER_PATTERN.test(aaReasonOf(e)),\n ERROR_CODE.AA_PAYMASTER_ERROR,\n ],\n [(e) => e instanceof ExecutionRevertedError, ERROR_CODE.EXECUTION_REVERTED],\n [\n (e) =>\n (e instanceof InternalRpcError || e instanceof InvalidInputRpcError) &&\n WALLET_TIMEOUT_PATTERN.test(e.details ?? ''),\n ERROR_CODE.WALLET_TIMEOUT,\n ],\n [\n (e) => e instanceof InternalRpcError || e instanceof InvalidInputRpcError,\n ERROR_CODE.WALLET_RPC_ERROR,\n ],\n];\n\nexport const classifyError = (\n error: unknown,\n decodedRevert: DecodedRevert | undefined,\n): ERROR_CODE | undefined => {\n if (decodedRevert) return ERROR_CODE.CONTRACT_REVERT;\n if (!(error instanceof BaseError)) return undefined;\n\n for (const [match, code] of CLASSIFIERS) {\n if (error.walk(match)) return code;\n }\n return undefined;\n};\n"],"mappings":";;;AA0CA,MAAM,2BAA2B;AAOjC,MAAM,yBAAyB;AAU/B,MAAM,wBAAwB;AAG9B,MAAM,uBAAuB;AAE7B,MAAM,cAAc,MAAsC,EAAE;AAS5D,MAAM,cAA4D;CAChE,EAAE,MAAM,aAAa,0BAA0B,WAAW,cAAa;CACvE,EAAE,MAAM,aAAa,sBAAsB,WAAW,iBAAgB;CACtE,EAAE,MAAM,aAAa,kBAAkB,WAAW,oBAAmB;CACrE,EACG,MACC,aAAa,uBACb,aAAa,8BACb,aAAa,uCACf,WAAW,iBACb;CACA,EACG,MAAM,aAAa,2BACpB,WAAW,oBACb;CACA,EACG,MAAM,aAAa,gCACpB,WAAW,qBACb;CACA,EACG,MACC,aAAa,sBACb,aAAa,0BACb,aAAa,6BACb,aAAa,oBACb,aAAa,yBACf,WAAW,eACb;CACA,EACG,MACC,aAAa,oBACb,aAAa,gBACb,aAAa,kCACb,aAAa,yBACb,aAAa,mBACb,aAAa,mBACf,WAAW,cACb;CACA,EAAE,MAAM,aAAa,uBAAuB,WAAW,aAAY;CACnE,EAAE,MAAM,aAAa,wBAAwB,WAAW,mBAAkB;CAC1E,EACG,MACC,aAAa,oBACb,aAAa,qBACb,aAAa,oBACf,WAAW,YACb;CACA,EACG,MACC,aAAa,sBACb,aAAa,qBACb,aAAa,qBACf,WAAW,UACb;CACA,EACG,MACC,aAAa,4BACb,aAAa,yBACf,WAAW,UACb;CACA,EACG,MAAM,aAAa,kCACpB,WAAW,cACb;CACA,EACG,MACC,OAAO,MAAM,YACb,MAAM,QACL,EAAyB,SAAS,0BACrC,WAAW,qBACb;CACA,EACG,MACC,aAAa,0BACb,sBAAsB,KAAK,WAAW,EAAE,CAAA,EAC1C,WAAW,oBACb;CACA,EACG,MACC,aAAa,0BACb,qBAAqB,KAAK,WAAW,EAAE,CAAA,EACzC,WAAW,mBACb;CACA,EAAE,MAAM,aAAa,wBAAwB,WAAW,mBAAkB;CAC1E,EACG,OACE,aAAa,oBAAoB,aAAa,yBAC/C,uBAAuB,KAAK,EAAE,WAAW,GAAE,EAC7C,WAAW,eACb;CACA,EACG,MAAM,aAAa,oBAAoB,aAAa,sBACrD,WAAW,iBACb;CACF;AAEO,MAAM,iBACX,OACA,kBAC2B;AAC3B,KAAI,cAAe,QAAO,WAAW;AACrC,KAAI,EAAE,iBAAiB,WAAY,QAAO,KAAA;AAE1C,MAAA,MAAW,CAAC,OAAO,SAAS,YAC1B,KAAI,MAAM,KAAK,MAAK,CAAG,QAAO"}
@@ -8,13 +8,24 @@ var ERROR_CODE = /* @__PURE__ */ ((ERROR_CODE2) => {
8
8
  ERROR_CODE2["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
9
9
  ERROR_CODE2["USER_REJECTED"] = "USER_REJECTED";
10
10
  ERROR_CODE2["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
11
+ ERROR_CODE2["WALLET_TIMEOUT"] = "WALLET_TIMEOUT";
11
12
  ERROR_CODE2["WALLET_RPC_ERROR"] = "WALLET_RPC_ERROR";
13
+ ERROR_CODE2["RATE_LIMITED"] = "RATE_LIMITED";
14
+ ERROR_CODE2["WALLET_UNAUTHORIZED"] = "WALLET_UNAUTHORIZED";
15
+ ERROR_CODE2["METHOD_NOT_SUPPORTED"] = "METHOD_NOT_SUPPORTED";
12
16
  ERROR_CODE2["BUNDLE_NOT_FOUND"] = "BUNDLE_NOT_FOUND";
17
+ ERROR_CODE2["DUPLICATE_BUNDLE_ID"] = "DUPLICATE_BUNDLE_ID";
18
+ ERROR_CODE2["BATCH_NOT_ATOMIC"] = "BATCH_NOT_ATOMIC";
13
19
  ERROR_CODE2["NETWORK_ERROR"] = "NETWORK_ERROR";
14
20
  ERROR_CODE2["CHAIN_MISMATCH"] = "CHAIN_MISMATCH";
21
+ ERROR_CODE2["NONCE_ERROR"] = "NONCE_ERROR";
22
+ ERROR_CODE2["FEE_ERROR"] = "FEE_ERROR";
23
+ ERROR_CODE2["GAS_ERROR"] = "GAS_ERROR";
15
24
  ERROR_CODE2["CONTRACT_REVERT"] = "CONTRACT_REVERT";
16
25
  ERROR_CODE2["TRANSACTION_REVERTED"] = "TRANSACTION_REVERTED";
17
26
  ERROR_CODE2["EXECUTION_REVERTED"] = "EXECUTION_REVERTED";
27
+ ERROR_CODE2["AA_VALIDATION_ERROR"] = "AA_VALIDATION_ERROR";
28
+ ERROR_CODE2["AA_PAYMASTER_ERROR"] = "AA_PAYMASTER_ERROR";
18
29
  ERROR_CODE2["DECODE_RESULT_ERROR"] = "DECODE_RESULT_ERROR";
19
30
  return ERROR_CODE2;
20
31
  })(ERROR_CODE || {});
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error-code.cjs","names":["ERROR_CODE"],"sources":["../../../src/common/utils/sdk-error-code.ts"],"sourcesContent":["export enum ERROR_CODE {\n // SDK-internal contexts\n INVALID_ARGUMENT = 'INVALID_ARGUMENT',\n NOT_SUPPORTED = 'NOT_SUPPORTED',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n READ_ERROR = 'READ_ERROR',\n TRANSACTION_ERROR = 'TRANSACTION_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n\n // Wallet / provider — classified from viem error classes via classifyError.\n // Detection is spec-stable: each code maps to a viem class viem maintains.\n USER_REJECTED = 'USER_REJECTED', // viem UserRejectedRequestError (EIP-1193 code 4001)\n INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS', // viem InsufficientFundsError\n WALLET_RPC_ERROR = 'WALLET_RPC_ERROR', // viem InternalRpcError (-32603) / InvalidInputRpcError (-32000)\n BUNDLE_NOT_FOUND = 'BUNDLE_NOT_FOUND', // viem UnknownBundleIdError (EIP-5792 code 5730)\n // Transient transport failures. Retryable from the consumer's perspective:\n // viem HttpRequestError, TimeoutError, WaitForCallsStatusTimeoutError,\n // WebSocketRequestError, RpcRequestError, SocketClosedError.\n NETWORK_ERROR = 'NETWORK_ERROR',\n // Wallet is connected to the wrong / unsupported chain — consumer should\n // prompt a chain switch: viem ChainMismatchError, ChainDisconnectedError,\n // ProviderDisconnectedError, SwitchChainError, UnsupportedChainIdError.\n CHAIN_MISMATCH = 'CHAIN_MISMATCH',\n\n // Contract / execution\n CONTRACT_REVERT = 'CONTRACT_REVERT', // revert with decodable selector — see SDKError.decodedRevert\n TRANSACTION_REVERTED = 'TRANSACTION_REVERTED', // tx mined, receipt status === 'reverted' (gas spent)\n EXECUTION_REVERTED = 'EXECUTION_REVERTED', // eth_call simulation reverted without decodable selector\n // Tx mined & confirmed on-chain, but the caller-supplied `decodeResult`\n // callback threw. cause is a DecodeResultError carrying hash + receipt +\n // confirmations so consumers can still render success UI / retry decode.\n DECODE_RESULT_ERROR = 'DECODE_RESULT_ERROR',\n}\n"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AAELA,aAAA,sBAAmB;AACnBA,aAAA,mBAAgB;AAChBA,aAAA,oBAAiB;AACjBA,aAAA,gBAAa;AACbA,aAAA,uBAAoB;AACpBA,aAAA,mBAAgB;AAIhBA,aAAA,mBAAgB;AAChBA,aAAA,wBAAqB;AACrBA,aAAA,sBAAmB;AACnBA,aAAA,sBAAmB;AAInBA,aAAA,mBAAgB;AAIhBA,aAAA,oBAAiB;AAGjBA,aAAA,qBAAkB;AAClBA,aAAA,0BAAuB;AACvBA,aAAA,wBAAqB;AAIrBA,aAAA,yBAAsB;AA/BZ,QAAAA;GAAA,cAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"sdk-error-code.cjs","names":["ERROR_CODE"],"sources":["../../../src/common/utils/sdk-error-code.ts"],"sourcesContent":["export enum ERROR_CODE {\n // SDK-internal contexts\n INVALID_ARGUMENT = 'INVALID_ARGUMENT',\n NOT_SUPPORTED = 'NOT_SUPPORTED',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n READ_ERROR = 'READ_ERROR',\n TRANSACTION_ERROR = 'TRANSACTION_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n\n // Wallet / provider — classified from viem error classes via classifyError.\n // Detection is spec-stable: each code maps to a viem class viem maintains.\n USER_REJECTED = 'USER_REJECTED', // viem UserRejectedRequestError (EIP-1193 code 4001)\n INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS', // viem InsufficientFundsError\n // Best-effort, NOT spec-stable like the rest of this bucket: EIP-1474 has no\n // dedicated \"wallet timed out\" code, so wallets report their own internal\n // timeouts as a generic -32603 with vendor-specific wording (e.g. \"request\n // timed out\"). Matched by a `details` regex — narrower/differently-worded\n // wallet timeouts will still fall through to WALLET_RPC_ERROR.\n WALLET_TIMEOUT = 'WALLET_TIMEOUT',\n WALLET_RPC_ERROR = 'WALLET_RPC_ERROR', // viem InternalRpcError (-32603) / InvalidInputRpcError (-32000)\n // Wallet/RPC provider is throttling requests: viem LimitExceededRpcError\n // (EIP-1474 code -32005). Consumer should back off and retry later.\n RATE_LIMITED = 'RATE_LIMITED',\n // Wallet exists but isn't authorized/unlocked yet: viem UnauthorizedProviderError\n // (EIP-1193 code 4100). Distinct from USER_REJECTED — nothing was declined,\n // the wallet needs to be unlocked/connected first.\n WALLET_UNAUTHORIZED = 'WALLET_UNAUTHORIZED',\n // Wallet doesn't implement the requested EIP-1193/5792 method: viem\n // UnsupportedProviderMethodError (code 4200). Common when probing capabilities\n // (e.g. sendCalls) on a wallet that predates EIP-5792.\n METHOD_NOT_SUPPORTED = 'METHOD_NOT_SUPPORTED',\n BUNDLE_NOT_FOUND = 'BUNDLE_NOT_FOUND', // viem UnknownBundleIdError (EIP-5792 code 5730)\n // A submitted EIP-5792 bundle id collides with one already in flight: viem\n // DuplicateIdError (code 5720). Retry with a fresh id.\n DUPLICATE_BUNDLE_ID = 'DUPLICATE_BUNDLE_ID',\n // Wallet can't/won't execute this EIP-5792 batch atomically as requested —\n // consumer should fall back to sequential calls or shrink the batch: viem\n // BundleTooLargeError (5740), AtomicityNotSupportedError (5760),\n // AtomicReadyWalletRejectedUpgradeError (5750, user declined the upgrade\n // prompt rather than the transaction itself).\n BATCH_NOT_ATOMIC = 'BATCH_NOT_ATOMIC',\n // Transient transport failures. Retryable from the consumer's perspective:\n // viem HttpRequestError, TimeoutError, WaitForCallsStatusTimeoutError,\n // WebSocketRequestError, RpcRequestError, SocketClosedError.\n NETWORK_ERROR = 'NETWORK_ERROR',\n // Wallet is connected to the wrong / unsupported chain — consumer should\n // prompt a chain switch: viem ChainMismatchError, ChainDisconnectedError,\n // ProviderDisconnectedError, SwitchChainError, UnsupportedChainIdError.\n CHAIN_MISMATCH = 'CHAIN_MISMATCH',\n\n // Transaction simulation / node errors — spec-stable in the same sense as\n // the wallet bucket above: viem parses well-known geth/erigon/anvil node\n // messages into these classes itself (see viem/errors/node.ts), we just\n // weren't classifying them yet.\n // viem NonceTooLowError, NonceTooHighError, NonceMaxValueError.\n NONCE_ERROR = 'NONCE_ERROR',\n // viem FeeCapTooHighError, FeeCapTooLowError, TipAboveFeeCapError.\n FEE_ERROR = 'FEE_ERROR',\n // viem IntrinsicGasTooHighError, IntrinsicGasTooLowError.\n GAS_ERROR = 'GAS_ERROR',\n\n // Contract / execution\n CONTRACT_REVERT = 'CONTRACT_REVERT', // revert with decodable selector — see SDKError.decodedRevert\n TRANSACTION_REVERTED = 'TRANSACTION_REVERTED', // tx mined, receipt status === 'reverted' (gas spent)\n EXECUTION_REVERTED = 'EXECUTION_REVERTED', // eth_call simulation reverted without decodable selector\n // Best-effort, NOT spec-stable: ERC-4337 EntryPoint reverts with a\n // conventional \"AAxx <reason>\" string (not ABI-decodable — see\n // decode-revert-data.ts), matched by prefix out of ExecutionRevertedError's\n // reason text. AA1x/AA2x = sender/account validation (signature, prefund,\n // deployment). Non-matching or non-standard bundler messages fall through\n // to EXECUTION_REVERTED.\n AA_VALIDATION_ERROR = 'AA_VALIDATION_ERROR',\n // ERC-4337 AA3x = paymaster validation/execution failure (deposit too low,\n // paymaster reverted, etc.). Same best-effort caveat as AA_VALIDATION_ERROR.\n AA_PAYMASTER_ERROR = 'AA_PAYMASTER_ERROR',\n // Tx mined & confirmed on-chain, but the caller-supplied `decodeResult`\n // callback threw. cause is a DecodeResultError carrying hash + receipt +\n // confirmations so consumers can still render success UI / retry decode.\n DECODE_RESULT_ERROR = 'DECODE_RESULT_ERROR',\n}\n"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AAELA,aAAA,sBAAmB;AACnBA,aAAA,mBAAgB;AAChBA,aAAA,oBAAiB;AACjBA,aAAA,gBAAa;AACbA,aAAA,uBAAoB;AACpBA,aAAA,mBAAgB;AAIhBA,aAAA,mBAAgB;AAChBA,aAAA,wBAAqB;AAMrBA,aAAA,oBAAiB;AACjBA,aAAA,sBAAmB;AAGnBA,aAAA,kBAAe;AAIfA,aAAA,yBAAsB;AAItBA,aAAA,0BAAuB;AACvBA,aAAA,sBAAmB;AAGnBA,aAAA,yBAAsB;AAMtBA,aAAA,sBAAmB;AAInBA,aAAA,mBAAgB;AAIhBA,aAAA,oBAAiB;AAOjBA,aAAA,iBAAc;AAEdA,aAAA,eAAY;AAEZA,aAAA,eAAY;AAGZA,aAAA,qBAAkB;AAClBA,aAAA,0BAAuB;AACvBA,aAAA,wBAAqB;AAOrBA,aAAA,yBAAsB;AAGtBA,aAAA,wBAAqB;AAIrBA,aAAA,yBAAsB;AA9EZ,QAAAA;GAAA,cAAA,EAAA,CAAA"}
@@ -10,18 +10,29 @@ declare enum ERROR_CODE {
10
10
  // viem UserRejectedRequestError (EIP-1193 code 4001)
11
11
  INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
12
12
  // viem InsufficientFundsError
13
+ WALLET_TIMEOUT = "WALLET_TIMEOUT",
13
14
  WALLET_RPC_ERROR = "WALLET_RPC_ERROR",
14
15
  // viem InternalRpcError (-32603) / InvalidInputRpcError (-32000)
16
+ RATE_LIMITED = "RATE_LIMITED",
17
+ WALLET_UNAUTHORIZED = "WALLET_UNAUTHORIZED",
18
+ METHOD_NOT_SUPPORTED = "METHOD_NOT_SUPPORTED",
15
19
  BUNDLE_NOT_FOUND = "BUNDLE_NOT_FOUND",
16
20
  // viem UnknownBundleIdError (EIP-5792 code 5730)
21
+ DUPLICATE_BUNDLE_ID = "DUPLICATE_BUNDLE_ID",
22
+ BATCH_NOT_ATOMIC = "BATCH_NOT_ATOMIC",
17
23
  NETWORK_ERROR = "NETWORK_ERROR",
18
24
  CHAIN_MISMATCH = "CHAIN_MISMATCH",
25
+ NONCE_ERROR = "NONCE_ERROR",
26
+ FEE_ERROR = "FEE_ERROR",
27
+ GAS_ERROR = "GAS_ERROR",
19
28
  CONTRACT_REVERT = "CONTRACT_REVERT",
20
29
  // revert with decodable selector — see SDKError.decodedRevert
21
30
  TRANSACTION_REVERTED = "TRANSACTION_REVERTED",
22
31
  // tx mined, receipt status === 'reverted' (gas spent)
23
32
  EXECUTION_REVERTED = "EXECUTION_REVERTED",
24
33
  // eth_call simulation reverted without decodable selector
34
+ AA_VALIDATION_ERROR = "AA_VALIDATION_ERROR",
35
+ AA_PAYMASTER_ERROR = "AA_PAYMASTER_ERROR",
25
36
  DECODE_RESULT_ERROR = "DECODE_RESULT_ERROR"
26
37
  }
27
38
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error-code.d.cts","names":[],"sources":["../../../src/common/utils/sdk-error-code.ts"],"mappings":";aAAY,UAAA;EAEV,gBAAA;EACA,aAAA;EACA,cAAA;EACA,UAAA;EACA,iBAAA;EACA,aAAA;EAIA,aAAA;EAAA;EACA,kBAAA;EAAA;EACA,gBAAA;EAAA;EACA,gBAAA;EAAA;EAIA,aAAA;EAIA,cAAA;EAGA,eAAA;EAAA;EACA,oBAAA;EAAA;EACA,kBAAA;EAAA;EAIA,mBAAA;AAAA"}
1
+ {"version":3,"file":"sdk-error-code.d.cts","names":[],"sources":["../../../src/common/utils/sdk-error-code.ts"],"mappings":";aAAY,UAAA;EAEV,gBAAA;EACA,aAAA;EACA,cAAA;EACA,UAAA;EACA,iBAAA;EACA,aAAA;EAIA,aAAA;EAAA;EACA,kBAAA;EAAA;EAMA,cAAA;EACA,gBAAA;EAAA;EAGA,YAAA;EAIA,mBAAA;EAIA,oBAAA;EACA,gBAAA;EAAA;EAGA,mBAAA;EAMA,gBAAA;EAIA,aAAA;EAIA,cAAA;EAOA,WAAA;EAEA,SAAA;EAEA,SAAA;EAGA,eAAA;EAAA;EACA,oBAAA;EAAA;EACA,kBAAA;EAAA;EAOA,mBAAA;EAGA,kBAAA;EAIA,mBAAA;AAAA"}
@@ -10,18 +10,29 @@ declare enum ERROR_CODE {
10
10
  // viem UserRejectedRequestError (EIP-1193 code 4001)
11
11
  INSUFFICIENT_FUNDS = "INSUFFICIENT_FUNDS",
12
12
  // viem InsufficientFundsError
13
+ WALLET_TIMEOUT = "WALLET_TIMEOUT",
13
14
  WALLET_RPC_ERROR = "WALLET_RPC_ERROR",
14
15
  // viem InternalRpcError (-32603) / InvalidInputRpcError (-32000)
16
+ RATE_LIMITED = "RATE_LIMITED",
17
+ WALLET_UNAUTHORIZED = "WALLET_UNAUTHORIZED",
18
+ METHOD_NOT_SUPPORTED = "METHOD_NOT_SUPPORTED",
15
19
  BUNDLE_NOT_FOUND = "BUNDLE_NOT_FOUND",
16
20
  // viem UnknownBundleIdError (EIP-5792 code 5730)
21
+ DUPLICATE_BUNDLE_ID = "DUPLICATE_BUNDLE_ID",
22
+ BATCH_NOT_ATOMIC = "BATCH_NOT_ATOMIC",
17
23
  NETWORK_ERROR = "NETWORK_ERROR",
18
24
  CHAIN_MISMATCH = "CHAIN_MISMATCH",
25
+ NONCE_ERROR = "NONCE_ERROR",
26
+ FEE_ERROR = "FEE_ERROR",
27
+ GAS_ERROR = "GAS_ERROR",
19
28
  CONTRACT_REVERT = "CONTRACT_REVERT",
20
29
  // revert with decodable selector — see SDKError.decodedRevert
21
30
  TRANSACTION_REVERTED = "TRANSACTION_REVERTED",
22
31
  // tx mined, receipt status === 'reverted' (gas spent)
23
32
  EXECUTION_REVERTED = "EXECUTION_REVERTED",
24
33
  // eth_call simulation reverted without decodable selector
34
+ AA_VALIDATION_ERROR = "AA_VALIDATION_ERROR",
35
+ AA_PAYMASTER_ERROR = "AA_PAYMASTER_ERROR",
25
36
  DECODE_RESULT_ERROR = "DECODE_RESULT_ERROR"
26
37
  }
27
38
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error-code.d.mts","names":[],"sources":["../../../src/common/utils/sdk-error-code.ts"],"mappings":";aAAY,UAAA;EAEV,gBAAA;EACA,aAAA;EACA,cAAA;EACA,UAAA;EACA,iBAAA;EACA,aAAA;EAIA,aAAA;EAAA;EACA,kBAAA;EAAA;EACA,gBAAA;EAAA;EACA,gBAAA;EAAA;EAIA,aAAA;EAIA,cAAA;EAGA,eAAA;EAAA;EACA,oBAAA;EAAA;EACA,kBAAA;EAAA;EAIA,mBAAA;AAAA"}
1
+ {"version":3,"file":"sdk-error-code.d.mts","names":[],"sources":["../../../src/common/utils/sdk-error-code.ts"],"mappings":";aAAY,UAAA;EAEV,gBAAA;EACA,aAAA;EACA,cAAA;EACA,UAAA;EACA,iBAAA;EACA,aAAA;EAIA,aAAA;EAAA;EACA,kBAAA;EAAA;EAMA,cAAA;EACA,gBAAA;EAAA;EAGA,YAAA;EAIA,mBAAA;EAIA,oBAAA;EACA,gBAAA;EAAA;EAGA,mBAAA;EAMA,gBAAA;EAIA,aAAA;EAIA,cAAA;EAOA,WAAA;EAEA,SAAA;EAEA,SAAA;EAGA,eAAA;EAAA;EACA,oBAAA;EAAA;EACA,kBAAA;EAAA;EAOA,mBAAA;EAGA,kBAAA;EAIA,mBAAA;AAAA"}
@@ -8,13 +8,24 @@ var ERROR_CODE = /* @__PURE__ */ ((ERROR_CODE2) => {
8
8
  ERROR_CODE2["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
9
9
  ERROR_CODE2["USER_REJECTED"] = "USER_REJECTED";
10
10
  ERROR_CODE2["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
11
+ ERROR_CODE2["WALLET_TIMEOUT"] = "WALLET_TIMEOUT";
11
12
  ERROR_CODE2["WALLET_RPC_ERROR"] = "WALLET_RPC_ERROR";
13
+ ERROR_CODE2["RATE_LIMITED"] = "RATE_LIMITED";
14
+ ERROR_CODE2["WALLET_UNAUTHORIZED"] = "WALLET_UNAUTHORIZED";
15
+ ERROR_CODE2["METHOD_NOT_SUPPORTED"] = "METHOD_NOT_SUPPORTED";
12
16
  ERROR_CODE2["BUNDLE_NOT_FOUND"] = "BUNDLE_NOT_FOUND";
17
+ ERROR_CODE2["DUPLICATE_BUNDLE_ID"] = "DUPLICATE_BUNDLE_ID";
18
+ ERROR_CODE2["BATCH_NOT_ATOMIC"] = "BATCH_NOT_ATOMIC";
13
19
  ERROR_CODE2["NETWORK_ERROR"] = "NETWORK_ERROR";
14
20
  ERROR_CODE2["CHAIN_MISMATCH"] = "CHAIN_MISMATCH";
21
+ ERROR_CODE2["NONCE_ERROR"] = "NONCE_ERROR";
22
+ ERROR_CODE2["FEE_ERROR"] = "FEE_ERROR";
23
+ ERROR_CODE2["GAS_ERROR"] = "GAS_ERROR";
15
24
  ERROR_CODE2["CONTRACT_REVERT"] = "CONTRACT_REVERT";
16
25
  ERROR_CODE2["TRANSACTION_REVERTED"] = "TRANSACTION_REVERTED";
17
26
  ERROR_CODE2["EXECUTION_REVERTED"] = "EXECUTION_REVERTED";
27
+ ERROR_CODE2["AA_VALIDATION_ERROR"] = "AA_VALIDATION_ERROR";
28
+ ERROR_CODE2["AA_PAYMASTER_ERROR"] = "AA_PAYMASTER_ERROR";
18
29
  ERROR_CODE2["DECODE_RESULT_ERROR"] = "DECODE_RESULT_ERROR";
19
30
  return ERROR_CODE2;
20
31
  })(ERROR_CODE || {});
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-error-code.mjs","names":["ERROR_CODE"],"sources":["../../../src/common/utils/sdk-error-code.ts"],"sourcesContent":["export enum ERROR_CODE {\n // SDK-internal contexts\n INVALID_ARGUMENT = 'INVALID_ARGUMENT',\n NOT_SUPPORTED = 'NOT_SUPPORTED',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n READ_ERROR = 'READ_ERROR',\n TRANSACTION_ERROR = 'TRANSACTION_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n\n // Wallet / provider — classified from viem error classes via classifyError.\n // Detection is spec-stable: each code maps to a viem class viem maintains.\n USER_REJECTED = 'USER_REJECTED', // viem UserRejectedRequestError (EIP-1193 code 4001)\n INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS', // viem InsufficientFundsError\n WALLET_RPC_ERROR = 'WALLET_RPC_ERROR', // viem InternalRpcError (-32603) / InvalidInputRpcError (-32000)\n BUNDLE_NOT_FOUND = 'BUNDLE_NOT_FOUND', // viem UnknownBundleIdError (EIP-5792 code 5730)\n // Transient transport failures. Retryable from the consumer's perspective:\n // viem HttpRequestError, TimeoutError, WaitForCallsStatusTimeoutError,\n // WebSocketRequestError, RpcRequestError, SocketClosedError.\n NETWORK_ERROR = 'NETWORK_ERROR',\n // Wallet is connected to the wrong / unsupported chain — consumer should\n // prompt a chain switch: viem ChainMismatchError, ChainDisconnectedError,\n // ProviderDisconnectedError, SwitchChainError, UnsupportedChainIdError.\n CHAIN_MISMATCH = 'CHAIN_MISMATCH',\n\n // Contract / execution\n CONTRACT_REVERT = 'CONTRACT_REVERT', // revert with decodable selector — see SDKError.decodedRevert\n TRANSACTION_REVERTED = 'TRANSACTION_REVERTED', // tx mined, receipt status === 'reverted' (gas spent)\n EXECUTION_REVERTED = 'EXECUTION_REVERTED', // eth_call simulation reverted without decodable selector\n // Tx mined & confirmed on-chain, but the caller-supplied `decodeResult`\n // callback threw. cause is a DecodeResultError carrying hash + receipt +\n // confirmations so consumers can still render success UI / retry decode.\n DECODE_RESULT_ERROR = 'DECODE_RESULT_ERROR',\n}\n"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AAELA,aAAA,sBAAmB;AACnBA,aAAA,mBAAgB;AAChBA,aAAA,oBAAiB;AACjBA,aAAA,gBAAa;AACbA,aAAA,uBAAoB;AACpBA,aAAA,mBAAgB;AAIhBA,aAAA,mBAAgB;AAChBA,aAAA,wBAAqB;AACrBA,aAAA,sBAAmB;AACnBA,aAAA,sBAAmB;AAInBA,aAAA,mBAAgB;AAIhBA,aAAA,oBAAiB;AAGjBA,aAAA,qBAAkB;AAClBA,aAAA,0BAAuB;AACvBA,aAAA,wBAAqB;AAIrBA,aAAA,yBAAsB;AA/BZ,QAAAA;GAAA,cAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"sdk-error-code.mjs","names":["ERROR_CODE"],"sources":["../../../src/common/utils/sdk-error-code.ts"],"sourcesContent":["export enum ERROR_CODE {\n // SDK-internal contexts\n INVALID_ARGUMENT = 'INVALID_ARGUMENT',\n NOT_SUPPORTED = 'NOT_SUPPORTED',\n PROVIDER_ERROR = 'PROVIDER_ERROR',\n READ_ERROR = 'READ_ERROR',\n TRANSACTION_ERROR = 'TRANSACTION_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR',\n\n // Wallet / provider — classified from viem error classes via classifyError.\n // Detection is spec-stable: each code maps to a viem class viem maintains.\n USER_REJECTED = 'USER_REJECTED', // viem UserRejectedRequestError (EIP-1193 code 4001)\n INSUFFICIENT_FUNDS = 'INSUFFICIENT_FUNDS', // viem InsufficientFundsError\n // Best-effort, NOT spec-stable like the rest of this bucket: EIP-1474 has no\n // dedicated \"wallet timed out\" code, so wallets report their own internal\n // timeouts as a generic -32603 with vendor-specific wording (e.g. \"request\n // timed out\"). Matched by a `details` regex — narrower/differently-worded\n // wallet timeouts will still fall through to WALLET_RPC_ERROR.\n WALLET_TIMEOUT = 'WALLET_TIMEOUT',\n WALLET_RPC_ERROR = 'WALLET_RPC_ERROR', // viem InternalRpcError (-32603) / InvalidInputRpcError (-32000)\n // Wallet/RPC provider is throttling requests: viem LimitExceededRpcError\n // (EIP-1474 code -32005). Consumer should back off and retry later.\n RATE_LIMITED = 'RATE_LIMITED',\n // Wallet exists but isn't authorized/unlocked yet: viem UnauthorizedProviderError\n // (EIP-1193 code 4100). Distinct from USER_REJECTED — nothing was declined,\n // the wallet needs to be unlocked/connected first.\n WALLET_UNAUTHORIZED = 'WALLET_UNAUTHORIZED',\n // Wallet doesn't implement the requested EIP-1193/5792 method: viem\n // UnsupportedProviderMethodError (code 4200). Common when probing capabilities\n // (e.g. sendCalls) on a wallet that predates EIP-5792.\n METHOD_NOT_SUPPORTED = 'METHOD_NOT_SUPPORTED',\n BUNDLE_NOT_FOUND = 'BUNDLE_NOT_FOUND', // viem UnknownBundleIdError (EIP-5792 code 5730)\n // A submitted EIP-5792 bundle id collides with one already in flight: viem\n // DuplicateIdError (code 5720). Retry with a fresh id.\n DUPLICATE_BUNDLE_ID = 'DUPLICATE_BUNDLE_ID',\n // Wallet can't/won't execute this EIP-5792 batch atomically as requested —\n // consumer should fall back to sequential calls or shrink the batch: viem\n // BundleTooLargeError (5740), AtomicityNotSupportedError (5760),\n // AtomicReadyWalletRejectedUpgradeError (5750, user declined the upgrade\n // prompt rather than the transaction itself).\n BATCH_NOT_ATOMIC = 'BATCH_NOT_ATOMIC',\n // Transient transport failures. Retryable from the consumer's perspective:\n // viem HttpRequestError, TimeoutError, WaitForCallsStatusTimeoutError,\n // WebSocketRequestError, RpcRequestError, SocketClosedError.\n NETWORK_ERROR = 'NETWORK_ERROR',\n // Wallet is connected to the wrong / unsupported chain — consumer should\n // prompt a chain switch: viem ChainMismatchError, ChainDisconnectedError,\n // ProviderDisconnectedError, SwitchChainError, UnsupportedChainIdError.\n CHAIN_MISMATCH = 'CHAIN_MISMATCH',\n\n // Transaction simulation / node errors — spec-stable in the same sense as\n // the wallet bucket above: viem parses well-known geth/erigon/anvil node\n // messages into these classes itself (see viem/errors/node.ts), we just\n // weren't classifying them yet.\n // viem NonceTooLowError, NonceTooHighError, NonceMaxValueError.\n NONCE_ERROR = 'NONCE_ERROR',\n // viem FeeCapTooHighError, FeeCapTooLowError, TipAboveFeeCapError.\n FEE_ERROR = 'FEE_ERROR',\n // viem IntrinsicGasTooHighError, IntrinsicGasTooLowError.\n GAS_ERROR = 'GAS_ERROR',\n\n // Contract / execution\n CONTRACT_REVERT = 'CONTRACT_REVERT', // revert with decodable selector — see SDKError.decodedRevert\n TRANSACTION_REVERTED = 'TRANSACTION_REVERTED', // tx mined, receipt status === 'reverted' (gas spent)\n EXECUTION_REVERTED = 'EXECUTION_REVERTED', // eth_call simulation reverted without decodable selector\n // Best-effort, NOT spec-stable: ERC-4337 EntryPoint reverts with a\n // conventional \"AAxx <reason>\" string (not ABI-decodable — see\n // decode-revert-data.ts), matched by prefix out of ExecutionRevertedError's\n // reason text. AA1x/AA2x = sender/account validation (signature, prefund,\n // deployment). Non-matching or non-standard bundler messages fall through\n // to EXECUTION_REVERTED.\n AA_VALIDATION_ERROR = 'AA_VALIDATION_ERROR',\n // ERC-4337 AA3x = paymaster validation/execution failure (deposit too low,\n // paymaster reverted, etc.). Same best-effort caveat as AA_VALIDATION_ERROR.\n AA_PAYMASTER_ERROR = 'AA_PAYMASTER_ERROR',\n // Tx mined & confirmed on-chain, but the caller-supplied `decodeResult`\n // callback threw. cause is a DecodeResultError carrying hash + receipt +\n // confirmations so consumers can still render success UI / retry decode.\n DECODE_RESULT_ERROR = 'DECODE_RESULT_ERROR',\n}\n"],"mappings":";AAAO,IAAK,aAAL,kBAAKA,gBAAL;AAELA,aAAA,sBAAmB;AACnBA,aAAA,mBAAgB;AAChBA,aAAA,oBAAiB;AACjBA,aAAA,gBAAa;AACbA,aAAA,uBAAoB;AACpBA,aAAA,mBAAgB;AAIhBA,aAAA,mBAAgB;AAChBA,aAAA,wBAAqB;AAMrBA,aAAA,oBAAiB;AACjBA,aAAA,sBAAmB;AAGnBA,aAAA,kBAAe;AAIfA,aAAA,yBAAsB;AAItBA,aAAA,0BAAuB;AACvBA,aAAA,sBAAmB;AAGnBA,aAAA,yBAAsB;AAMtBA,aAAA,sBAAmB;AAInBA,aAAA,mBAAgB;AAIhBA,aAAA,oBAAiB;AAOjBA,aAAA,iBAAc;AAEdA,aAAA,eAAY;AAEZA,aAAA,eAAY;AAGZA,aAAA,qBAAkB;AAClBA,aAAA,0BAAuB;AACvBA,aAAA,wBAAqB;AAOrBA,aAAA,yBAAsB;AAGtBA,aAAA,wBAAqB;AAIrBA,aAAA,yBAAsB;AA9EZ,QAAAA;GAAA,cAAA,EAAA,CAAA"}