> For the complete documentation index, see [llms.txt](https://docs.cryptolegacy.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cryptolegacy.app/documentation/errors-reference.md).

# Contracts Errors

## Table of Contents

1. [BeneficiaryRegistry (BR1)](#beneficiaryregistry-br1)
2. [BuildManagerOwnable (BMO1)](#buildmanagerownable-bmo1)
3. [Create3Factory (C3F1)](#create3factory-c3f1)
4. [CryptoLegacy (CL1)](#cryptolegacy-cl1)
5. [CryptoLegacyBuildManager (CLBM1)](#cryptolegacybuildmanager-clbm1)
6. [CryptoLegacyDiamondBase (CLDB1)](#cryptolegacydiamondbase-cldb1)
7. [CryptoLegacyExternalLens (CLEXL1)](#cryptolegacyexternallens-clexl1)
8. [CryptoLegacyFactory (CLF1)](#cryptolegacyfactory-clf1)
9. [CryptoLegacyOwnable (CLO1)](#cryptolegacyownable-clo1)
10. [FeeRegistry (FR1)](#feeregistry-fr1)
11. [LegacyMessenger (LM1)](#legacymessenger-lm1)
12. [LifetimeNft (LN1)](#lifetimenft-ln1)
13. [LockChainGate (LCG1)](#lockchaingate-lcg1)
14. [MultiPermit (MP1)](#multipermit-mp1)
15. [PluginsRegistry (PR1)](#pluginsregistry-pr1)
16. [ProxyBuilder (PB1)](#proxybuilder-pb1)

* [AdminAlreadyCreated (PB1)](#adminalreadycreated-pb1)
* [AddressMismatch (PB1)](#addressmismatch-pb1)

17. [ProxyBuilderAdmin (PBA1)](#proxybuilderadmin-pba1)
18. [SignatureRoleTimelock (SRT1)](#signatureroletimelock-srt1)
19. [ArbSys (AS1)](#arbsys-as1)
20. [Flags (FLG1)](#flags-flg1)
21. [IAaveV3Pool (IAV3P1)](#iaavev3pool-iav3p1)
22. [IAaveV3PoolDataProvider (IAV3PDP1)](#iaavev3pooldataprovider-iav3pdp1)
23. [WethUnwrap (WU1)](#wethunwrap-wu1)

* [CallbackCallFailed (WU1)](#callbackcallfailed-wu1)

24. [IBeneficiaryRegistry (IBR1)](#ibeneficiaryregistry-ibr1)
25. [IBuildManagerOwnable (IBMO1)](#ibuildmanagerownable-ibmo1)

* [NotTheOwnerOfCryptoLegacy (IBMO1)](#nottheownerofcryptolegacy-ibmo1)
* [CryptoLegacyNotRegistered (IBMO1)](#cryptolegacynotregistered-ibmo1)
* [BuildManagerNotAdded (IBMO1)](#buildmanagernotadded-ibmo1)

26. [ICallProxy (ICP1)](#icallproxy-icp1)
27. [ICryptoLegacy (ICL1)](#icryptolegacy-icl1)

* [BeneficiarySwitchTimelock (ICL1)](#beneficiaryswitchtimelock-icl1)
* [ArrayLengthMismatch (ICL1)](#arraylengthmismatch-icl1)
* [DisabledFunc (ICL1)](#disabledfunc-icl1)
* [NotTheOwner (ICL1)](#nottheowner-icl1)
* [NotTheBeneficiary (ICL1)](#notthebeneficiary-icl1)
* [BeneficiaryNotExist (ICL1)](#beneficiarynotexist-icl1)
* [TooEarly (ICL1)](#tooearly-icl1)
* [IncorrectRefShare (ICL1)](#incorrectrefshare-icl1)
* [NoValueAllowed (ICL1)](#novalueallowed-icl1)
* [TooLongArray (ICL1)](#toolongarray-icl1)
* [IncorrectFee (ICL1)](#incorrectfee-icl1)
* [ZeroAddress (ICL1)](#zeroaddress-icl1)
* [ZeroTokens (ICL1)](#zerotokens-icl1)
* [InitialFeeNotPaid (ICL1)](#initialfeenotpaid-icl1)
* [InitialFeeAlreadyPaid (ICL1)](#initialfeealreadypaid-icl1)
* [NotBuildManager (ICL1)](#notbuildmanager-icl1)
* [LengthMismatch (ICL1)](#lengthmismatch-icl1)
* [ShareSumDoesntMatchBase (ICL1)](#sharesumdoesntmatchbase-icl1)
* [OriginalHashDuplicate (ICL1)](#originalhashduplicate-icl1)
* [DistributionStarted (ICL1)](#distributionstarted-icl1)
* [DistributionStartAlreadySet (ICL1)](#distributionstartalreadyset-icl1)
* [DistributionDelay (ICL1)](#distributiondelay-icl1)
* [ChallengePeriodStarted (ICL1)](#challengeperiodstarted-icl1)
* [AlreadySet (ICL1)](#alreadyset-icl1)
* [BeneficiaryNotSet (ICL1)](#beneficiarynotset-icl1)
* [Pause (ICL1)](#pause-icl1)
* [IncorrectFacetCutAction (ICL1)](#incorrectfacetcutaction-icl1)
* [NotContractOwner (ICL1)](#notcontractowner-icl1)
* [FacetNotFound (ICL1)](#facetnotfound-icl1)
* [FacetHasNoCode (ICL1)](#facethasnocode-icl1)
* [NoSelectorsInFacetToCut (ICL1)](#noselectorsinfacettocut-icl1)
* [FacetCantBeZero (ICL1)](#facetcantbezero-icl1)
* [CantRemoveImmutableFunctions (ICL1)](#cantremoveimmutablefunctions-icl1)
* [CantAddFunctionThatAlreadyExists (ICL1)](#cantaddfunctionthatalreadyexists-icl1)
* [CantReplaceFunctionWithSameFunction (ICL1)](#cantreplacefunctionwithsamefunction-icl1)
* [InitFunctionReverted (ICL1)](#initfunctionreverted-icl1)
* [InitAddressZeroButCalldataIsNot (ICL1)](#initaddresszerobutcalldataisnot-icl1)
* [InitCalldataZeroButAddressIsNot (ICL1)](#initcalldatazerobutaddressisnot-icl1)
* [PluginNotRegistered (ICL1)](#pluginnotregistered-icl1)
* [TransferFeeFailed (ICL1)](#transferfeefailed-icl1)
* [TooBigMultiplier (ICL1)](#toobigmultiplier-icl1)

28. [ICryptoLegacyBuildManager (ICLBM1)](#icryptolegacybuildmanager-iclbm1)

* [AlreadyLifetime (ICLBM1)](#alreadylifetime-iclbm1)
* [WithdrawFeeFailed (ICLBM1)](#withdrawfeefailed-iclbm1)
* [NotValidTimeout (ICLBM1)](#notvalidtimeout-iclbm1)
* [IncorrectFee (ICLBM1)](#incorrectfee-iclbm1)
* [BelowMinimumSupply (ICLBM1)](#belowminimumsupply-iclbm1)
* [NotRegisteredCryptoLegacy (ICLBM1)](#notregisteredcryptolegacy-iclbm1)
* [NotOwnerOfCryptoLegacy (ICLBM1)](#notownerofcryptolegacy-iclbm1)
* [TransferFeeFailed (ICLBM1)](#transferfeefailed-iclbm1)

29. [ICryptoLegacyDiamondBase (ICLDB1)](#icryptolegacydiamondbase-icldb1)

* [FunctionNotExists (ICLDB1)](#functionnotexists-icldb1)
* [NotSelfCall (ICLDB1)](#notselfcall-icldb1)

30. [ICryptoLegacyFactory (ICLF1)](#icryptolegacyfactory-iclf1)

* [NotBuildOperator (ICLF1)](#notbuildoperator-iclf1)

31. [ICryptoLegacyLens (ICLL1)](#icryptolegacylens-icll1)
32. [ICryptoLegacyOwnable (ICLO1)](#icryptolegacyownable-iclo1)

* [OwnableUnauthorizedAccount (ICLO1)](#ownableunauthorizedaccount-iclo1)

33. [ICryptoLegacyPlugin (ICLP1)](#icryptolegacyplugin-iclp1)
34. [ICryptoLegacyUpdaterPlugin (ICLUP1)](#icryptolegacyupdaterplugin-iclup1)

* [NotTheUpdater (ICLUP1)](#nottheupdater-iclup1)

35. [IDeBridgeGate (IDBG1)](#idebridgegate-idbg1)
36. [IDiamondCut (IDC1)](#idiamondcut-idc1)
37. [IDiamondLoupe (IDL1)](#idiamondloupe-idl1)
38. [IFeeRegistry (IFR1)](#ifeeregistry-ifr1)

* [WithdrawAccumulatedFeeFailed (IFR1)](#withdrawaccumulatedfeefailed-ifr1)
* [PctSumDoesntMatchBase (IFR1)](#pctsumdoesntmatchbase-ifr1)
* [TooBigPct (IFR1)](#toobigpct-ifr1)
* [RefAlreadyCreated (IFR1)](#refalreadycreated-ifr1)
* [ZeroCode (IFR1)](#zerocode-ifr1)
* [NotOperator (IFR1)](#notoperator-ifr1)
* [NotReferrer (IFR1)](#notreferrer-ifr1)
* [AlreadyReferrer (IFR1)](#alreadyreferrer-ifr1)
* [CodeNotCreated (IFR1)](#codenotcreated-ifr1)

39. [ILockChainGate (ILCG1)](#ilockchaingate-ilcg1)

* [ArrayLengthMismatch (ILCG1)](#arraylengthmismatch-ilcg1)
* [AlreadyLocked (ILCG1)](#alreadylocked-ilcg1)
* [LockedToChains (ILCG1)](#lockedtochains-ilcg1)
* [CrossChainLock (ILCG1)](#crosschainlock-ilcg1)
* [TooEarly (ILCG1)](#tooearly-ilcg1)
* [DestinationChainNotSpecified (ILCG1)](#destinationchainnotspecified-ilcg1)
* [TokenNotLocked (ILCG1)](#tokennotlocked-ilcg1)
* [TokenIdMismatch (ILCG1)](#tokenidmismatch-ilcg1)
* [AlreadyLockedToChain (ILCG1)](#alreadylockedtochain-ilcg1)
* [SourceNotSpecified (ILCG1)](#sourcenotspecified-ilcg1)
* [NotLockedByChain (ILCG1)](#notlockedbychain-ilcg1)
* [DestinationNotSpecified (ILCG1)](#destinationnotspecified-ilcg1)
* [NotAvailable (ILCG1)](#notavailable-ilcg1)
* [IncorrectFee (ILCG1)](#incorrectfee-ilcg1)
* [SameAddress (ILCG1)](#sameaddress-ilcg1)
* [RecipientLocked (ILCG1)](#recipientlocked-ilcg1)
* [TransferLockTimeout (ILCG1)](#transferlocktimeout-ilcg1)
* [NotCallProxy (ILCG1)](#notcallproxy-ilcg1)
* [ChainIdMismatch (ILCG1)](#chainidmismatch-ilcg1)
* [NotValidSender (ILCG1)](#notvalidsender-ilcg1)
* [NotAllowed (ILCG1)](#notallowed-ilcg1)
* [TransferFeeFailed (ILCG1)](#transferfeefailed-ilcg1)

40. [ILegacyMessenger (ILM1)](#ilegacymessenger-ilm1)
41. [ILido (ILD1)](#ilido-ild1)
42. [ILidoWithdrawalQueue (ILWQ1)](#ilidowithdrawalqueue-ilwq1)
43. [ILifetimeNft (ILN1)](#ilifetimenft-iln1)

* [NotTheMinter (ILN1)](#nottheminter-iln1)

44. [IPermit2 (IPM21)](#ipermit2-ipm21)
45. [IPluginsRegistry (IPR1)](#ipluginsregistry-ipr1)
46. [ISafeMinimalMultisig (ISM1)](#isafeminimalmultisig-ism1)

* [MultisigProposalNotPending (ISM1)](#multisigproposalnotpending-ism1)
* [MultisigNotConfirmed (ISM1)](#multisignotconfirmed-ism1)
* [MultisigExecutionFailed (ISM1)](#multisigexecutionfailed-ism1)
* [MultisigMethodNotAllowed (ISM1)](#multisigmethodnotallowed-ism1)
* [MultisigVoterNotAllowed (ISM1)](#multisigvoternotallowed-ism1)
* [MultisigOnlyExecutor (ISM1)](#multisigonlyexecutor-ism1)
* [MultisigIncorrectRequiredConfirmations (ISM1)](#multisigincorrectrequiredconfirmations-ism1)
* [MultisigNothingToWithdraw (ISM1)](#multisignothingtowithdraw-ism1)
* [TransferFeeFailed (ISM1)](#transferfeefailed-ism1)

47. [ISignatureRoleTimelock (ISRT1)](#isignatureroletimelock-isrt1)

* [DisabledFunction (ISRT1)](#disabledfunction-isrt1)
* [AlreadyHaveRole (ISRT1)](#alreadyhaverole-isrt1)
* [DoesntHaveRole (ISRT1)](#doesnthaverole-isrt1)
* [RoleDontExist (ISRT1)](#roledontexist-isrt1)
* [CallerNotCurrentAddress (ISRT1)](#callernotcurrentaddress-isrt1)
* [IncorrectSignatureIndex (ISRT1)](#incorrectsignatureindex-isrt1)
* [IncorrectRoleIndex (ISRT1)](#incorrectroleindex-isrt1)
* [CallFailed (ISRT1)](#callfailed-isrt1)
* [CallNotScheduled (ISRT1)](#callnotscheduled-isrt1)
* [NotPending (ISRT1)](#notpending-isrt1)
* [TimelockActive (ISRT1)](#timelockactive-isrt1)
* [TimelockExpired (ISRT1)](#timelockexpired-isrt1)
* [CallerHaveNoRequiredRole (ISRT1)](#callerhavenorequiredrole-isrt1)
* [CallAlreadyScheduled (ISRT1)](#callalreadyscheduled-isrt1)
* [SignatureAlreadyExists (ISRT1)](#signaturealreadyexists-isrt1)
* [SignatureTimeLockNotSet (ISRT1)](#signaturetimelocknotset-isrt1)
* [OutOfTimelockBounds (ISRT1)](#outoftimelockbounds-isrt1)
* [OutOfMaxExecutionPeriodBounds (ISRT1)](#outofmaxexecutionperiodbounds-isrt1)

48. [IStataToken (ISTA1)](#istatatoken-ista1)
49. [IStataTokenFactory (ISTF1)](#istatatokenfactory-istf1)
50. [ITrustedGuardiansPlugin (ITGP1)](#itrustedguardiansplugin-itgp1)

* [NotGuardian (ITGP1)](#notguardian-itgp1)
* [ZeroGuardian (ITGP1)](#zeroguardian-itgp1)
* [ThresholdDontMet (ITGP1)](#thresholddontmet-itgp1)
* [ThresholdTooBig (ITGP1)](#thresholdtoobig-itgp1)
* [GuardianAlreadyVoted (ITGP1)](#guardianalreadyvoted-itgp1)
* [GuardiansTimeoutCantBeZero (ITGP1)](#guardianstimeoutcantbezero-itgp1)
* [MaxGuardiansTimeout (ITGP1)](#maxguardianstimeout-itgp1)

51. [DiamondLoupeFacet (DLF1)](#diamondloupefacet-dlf1)
52. [IUniversalRouter (IUR1)](#iuniversalrouter-iur1)
53. [IWETH (IWETH1)](#iweth-iweth1)
54. [IWstETH (IWSTETH1)](#iwsteth-iwsteth1)
55. [WethUnwrapIWETH (WUI1)](#wethunwrapiweth-wui1)
56. [LibCLUtils (LCLU1)](#libclutils-lclu1)

* [ApprovalFailed (LCLU1)](#approvalfailed-lclu1)

57. [LibClaimMigrationCore (LCMC1)](#libclaimmigrationcore-lcmc1)

* [MigrationInvalidDelta (LCMC1)](#migrationinvaliddelta-lcmc1)
* [MigrationAmountTooSmall (LCMC1)](#migrationamounttoosmall-lcmc1)

58. [LibOneStepClaimMigration (LOSCM1)](#libonestepclaimmigration-loscm1)
59. [LibTwoStepClaimMigration (LTSCM1)](#libtwostepclaimmigration-ltscm1)

* [NoPendingMigration (LTSCM1)](#nopendingmigration-ltscm1)
* [PendingMigrationAlreadyExists (LTSCM1)](#pendingmigrationalreadyexists-ltscm1)
* [TokenAlreadyLocked (LTSCM1)](#tokenalreadylocked-ltscm1)

60. [LibCreate3 (LC31)](#libcreate3-lc31)

* [ErrorCreatingProxy (LC31)](#errorcreatingproxy-lc31)
* [ErrorCreatingContract (LC31)](#errorcreatingcontract-lc31)
* [TargetAlreadyExists (LC31)](#targetalreadyexists-lc31)

61. [LibCryptoLegacy (LCL1)](#libcryptolegacy-lcl1)
62. [LibCryptoLegacyDeploy (LCLD1)](#libcryptolegacydeploy-lcld1)

* [BytecodeEmpty (LCLD1)](#bytecodeempty-lcld1)
* [AddressMismatch (LCLD1)](#addressmismatch-lcld1)
* [Create3Failed (LCLD1)](#create3failed-lcld1)

63. [LibCryptoLegacyPlugins (LCLP1)](#libcryptolegacyplugins-lclp1)
64. [LibDiamond (LD1)](#libdiamond-ld1)

* [InitializationFunctionReverted (LD1)](#initializationfunctionreverted-ld1)

65. [LibSafeMinimalBeneficiaryMultisig (LSMB1)](#libsafeminimalbeneficiarymultisig-lsmb1)
66. [LibSafeMinimalMultisig (LSM1)](#libsafeminimalmultisig-lsm1)
67. [LibTrustedGuardiansPlugin (LTGP1)](#libtrustedguardiansplugin-ltgp1)
68. [BeneficiaryAaveV3SupplyPlugin (BALP1)](#beneficiaryaavev3supplyplugin-balp1)

* [ZeroAmount (BALP1)](#zeroamount-balp1)
* [ATokenNotFound (BALP1)](#atokennotfound-balp1)
* [StataTokenNotFound (BALP1)](#statatokennotfound-balp1)

69. [BeneficiaryLidoStakingPlugin (BLSP1)](#beneficiarylidostakingplugin-blsp1)

* [ZeroStEthAmount (BLSP1)](#zerostethamount-blsp1)
* [ZeroWethAmount (BLSP1)](#zerowethamount-blsp1)
* [ZeroWstEthAmount (BLSP1)](#zerowstethamount-blsp1)
* [InsufficientStEth (BLSP1)](#insufficientsteth-blsp1)
* [InsufficientWstEth (BLSP1)](#insufficientwsteth-blsp1)
* [LidoRequestIdsEmpty (BLSP1)](#lidorequestidsempty-blsp1)
* [WethUnwrapAmountMismatch (BLSP1)](#wethunwrapamountmismatch-blsp1)
* [WstEthWrapFailed (BLSP1)](#wstethwrapfailed-blsp1)
* [EmptyWithdrawalAmounts (BLSP1)](#emptywithdrawalamounts-blsp1)
* [PendingMigrationActive (BLSP1)](#pendingmigrationactive-blsp1)
* [BeneficiarySwitchGuardAlreadyActive (BLSP1)](#beneficiaryswitchguardalreadyactive-blsp1)

70. [BeneficiaryPluginAddRights (BPAR1)](#beneficiarypluginaddrights-bpar1)
71. [BeneficiaryUniswapV4SwapPlugin (BU4SP1)](#beneficiaryuniswapv4swapplugin-bu4sp1)

* [ZeroAmount (BU4SP1)](#zeroamount-bu4sp1)
* [EmptyPath (BU4SP1)](#emptypath-bu4sp1)

72. [CryptoLegacyBasePlugin (CLBP1)](#cryptolegacybaseplugin-clbp1)
73. [LegacyRecoveryPlugin (LRP1)](#legacyrecoveryplugin-lrp1)
74. [LensPlugin (LP1)](#lensplugin-lp1)
75. [NftLegacyPlugin (NLP1)](#nftlegacyplugin-nlp1)
76. [ReceiveEthPlugin (REP1)](#receiveethplugin-rep1)

* [NoEthToWrap (REP1)](#noethtowrap-rep1)

77. [TrustedGuardiansPlugin (TGP1)](#trustedguardiansplugin-tgp1)
78. [UpdateRolePlugin (URP1)](#updateroleplugin-urp1)
79. [Parameter Types](#parameter-types)

## BeneficiaryRegistry (BR1)

**No errors in this contract/library.**

## BuildManagerOwnable (BMO1)

**No errors in this contract/library.**

## Create3Factory (C3F1)

**No errors in this contract/library.**

## CryptoLegacy (CL1)

**No errors in this contract/library.**

## CryptoLegacyBuildManager (CLBM1)

**No errors in this contract/library.**

## CryptoLegacyDiamondBase (CLDB1)

**No errors in this contract/library.**

## CryptoLegacyExternalLens (CLEXL1)

**No errors in this contract/library.**

## CryptoLegacyFactory (CLF1)

**No errors in this contract/library.**

## CryptoLegacyOwnable (CLO1)

**No errors in this contract/library.**

## FeeRegistry (FR1)

**No errors in this contract/library.**

## LegacyMessenger (LM1)

**No errors in this contract/library.**

## LifetimeNft (LN1)

**No errors in this contract/library.**

## LockChainGate (LCG1)

**No errors in this contract/library.**

## MultiPermit (MP1)

**No errors in this contract/library.**

## PluginsRegistry (PR1)

**No errors in this contract/library.**

## ProxyBuilder (PB1)

### AdminAlreadyCreated (PB1)

**Parameters:** None

**Description:** Raised when trying to create a ProxyBuilderAdmin contract if one already exists under the same environment.

**Error Signature:** `AdminAlreadyCreated()`

**Raised by:** None

**Notes / Edge cases:** None

### AddressMismatch (PB1)

**Parameters:** None

**Description:** Raised when a computed deployment address does not match the expected address.

**Error Signature:** `AddressMismatch()`

**Raised by:**

* [ProxyBuilder.build()](https://docs.cryptolegacy.app/documentation/functions-reference#build-pb1)

**Notes / Edge cases:** None

## ProxyBuilderAdmin (PBA1)

**No errors in this contract/library.**

## SignatureRoleTimelock (SRT1)

**No errors in this contract/library.**

## ArbSys (AS1)

**No errors in this contract/library.**

## Flags (FLG1)

**No errors in this contract/library.**

## IAaveV3Pool (IAV3P1)

**No errors in this contract/library.**

## IAaveV3PoolDataProvider (IAV3PDP1)

**No errors in this contract/library.**

## WethUnwrap (WU1)

### CallbackCallFailed (WU1)

**Parameters:** None

**Description:** Raised when `WethUnwrap.unwrap_weth()` successfully unwraps WETH but the callback back into `msg.sender` returns `false`.

**Error Signature:** `CallbackCallFailed()`

**Raised by:**

* [WethUnwrap.unwrap\_weth()](https://docs.cryptolegacy.app/documentation/functions-reference#unwrap_weth-wu1)

**Notes / Edge cases:** Guards the final low-level callback only; upstream WETH transfer/withdraw failures bubble directly from the WETH implementation instead of using this custom error.

## IBeneficiaryRegistry (IBR1)

**No errors in this contract/library.**

## IBuildManagerOwnable (IBMO1)

### NotTheOwnerOfCryptoLegacy (IBMO1)

**Parameters:** None

**Description:** Raised when a check determines that the caller is not the actual owner of the referenced CryptoLegacy contract.

**Error Signature:** `NotTheOwnerOfCryptoLegacy()`

**Raised by:**

* [BuildManagerOwnable.\_checkBuildManagerValid()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkbuildmanagervalid-bmo1)

**Notes / Edge cases:** None

### CryptoLegacyNotRegistered (IBMO1)

**Parameters:** None

**Description:** Raised when a CryptoLegacy contract has not been registered by a valid build manager or is otherwise unknown.

**Error Signature:** `CryptoLegacyNotRegistered()`

**Raised by:**

* [BuildManagerOwnable.\_checkBuildManagerValid()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkbuildmanagervalid-bmo1)

**Notes / Edge cases:** None

### BuildManagerNotAdded (IBMO1)

**Parameters:** None

**Description:** Raised when an operation requires a build manager that is not recognized in the added build managers list.

**Error Signature:** `BuildManagerNotAdded()`

**Raised by:**

* [BuildManagerOwnable.\_checkBuildManagerValid()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkbuildmanagervalid-bmo1)

**Notes / Edge cases:** None

## ICallProxy (ICP1)

**No errors in this contract/library.**

## ICryptoLegacy (ICL1)

### BeneficiarySwitchTimelock (ICL1)

**Parameters:** None

**Description:** Raised when attempting to switch a beneficiary before the switch timelock expires.

**Error Signature:** `BeneficiarySwitchTimelock()`

**Raised by:**

* [CryptoLegacyBasePlugin.beneficiarySwitch()](https://docs.cryptolegacy.app/documentation/functions-reference#beneficiaryswitch-clbp1)

**Notes / Edge cases:** None

### ArrayLengthMismatch (ICL1)

**Parameters:** None

**Description:** Raised when related arrays are expected to be the same length but are not.

**Error Signature:** `ArrayLengthMismatch()`

**Raised by:**

* [CryptoLegacyBasePlugin.payInitialFee()](https://docs.cryptolegacy.app/documentation/functions-reference#payinitialfee-clbp1)
* [CryptoLegacyBasePlugin.update()](https://docs.cryptolegacy.app/documentation/functions-reference#update-clbp1)

**Notes / Edge cases:** None

### DisabledFunc (ICL1)

**Parameters:** None

**Description:** Raised when a function call is disabled by the contract's internal configuration.

**Error Signature:** `DisabledFunc()`

**Raised by:**

* [LibCryptoLegacy.\_checkDisabledFunc()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkdisabledfunc-lcl1)

**Notes / Edge cases:** None

### NotTheOwner (ICL1)

**Parameters:** None

**Description:** Raised when the caller attempts an owner-only action but is not recognized as the contract owner.

**Error Signature:** `NotTheOwner()`

**Raised by:**

* [LibCryptoLegacy.\_checkSenderOwner()](https://docs.cryptolegacy.app/documentation/functions-reference#_checksenderowner-lcl1)

**Notes / Edge cases:** None

### NotTheBeneficiary (ICL1)

**Parameters:** None

**Description:** Raised when an address that is not a valid beneficiary tries to perform a beneficiary-only action.

**Error Signature:** `NotTheBeneficiary()`

**Raised by:**

* [LibCryptoLegacy.\_checkAddressIsBeneficiary()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkaddressisbeneficiary-lcl1)
* [NftLegacyPlugin.transferNftTokensToLegacy()](https://docs.cryptolegacy.app/documentation/functions-reference#transfernfttokenstolegacy-nlp1)
* [NftLegacyPlugin.beneficiaryClaimNft()](https://docs.cryptolegacy.app/documentation/functions-reference#beneficiaryclaimnft-nlp1)

**Notes / Edge cases:** None

### BeneficiaryNotExist (ICL1)

**Parameters:** None

**Description:** Raised when a beneficiary hash is not present or has no configuration in storage.

**Error Signature:** `BeneficiaryNotExist()`

**Raised by:**

* [LibCryptoLegacy.\_getBeneficiaryConfigAndVesting()](https://docs.cryptolegacy.app/documentation/functions-reference#_getbeneficiaryconfigandvesting-lcl1)

**Notes / Edge cases:** None

### TooEarly (ICL1)

**Parameters:** None

**Description:** Raised when an unlocking or transfer is attempted before the lock period has elapsed.

**Error Signature:** `TooEarly()`

**Raised by:**

* [LibCryptoLegacy.\_checkDistributionReady()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkdistributionready-lcl1)
* [CryptoLegacyBasePlugin.initiateChallenge()](https://docs.cryptolegacy.app/documentation/functions-reference#initiatechallenge-clbp1)
* [CryptoLegacyBasePlugin.beneficiaryClaim()](https://docs.cryptolegacy.app/documentation/functions-reference#beneficiaryclaim-clbp1)

**Notes / Edge cases:** None

### IncorrectRefShare (ICL1)

**Parameters:** None

**Description:** Raised when a referrer or beneficiary share is invalid or outside allowed bounds.

**Error Signature:** `IncorrectRefShare()`

**Raised by:**

* [LibCryptoLegacy.\_sendFeeByTransfer()](https://docs.cryptolegacy.app/documentation/functions-reference#_sendfeebytransfer-lcl1)

**Notes / Edge cases:** None

### NoValueAllowed (ICL1)

**Parameters:** None

**Description:** Raised when a function that requires zero `msg.value` is called with a nonzero value.

**Error Signature:** `NoValueAllowed()`

**Raised by:**

* [LibCryptoLegacy.\_checkNoFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_checknofee-lcl1)

**Notes / Edge cases:** None

### TooLongArray (ICL1)

**Parameters:**

* `maxLength (uint256)`: Maximum allowed length for the array.

**Description:** Raised when an array exceeds the maximum allowed length.

**Error Signature:** `TooLongArray(uint256 maxLength)`

**Raised by:**

* [LibCryptoLegacy.\_takeFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_takefee-lcl1)

**Notes / Edge cases:** None

### IncorrectFee (ICL1)

**Parameters:**

* `requiredFee (uint256)`: Exact fee amount required by the operation.

**Description:** Raised if the fee passed into a function is less than the required amount or otherwise mismatched.

**Error Signature:** `IncorrectFee(uint256 requiredFee)`

**Raised by:**

* [LibCryptoLegacy.\_checkFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkfee-lcl1)

**Notes / Edge cases:** None

### ZeroAddress (ICL1)

**Parameters:** None

**Description:** Raised when a provided address argument is the zero address (i.e., `0x0000000000000000000000000000000000000000`).

**Error Signature:** `ZeroAddress()`

**Raised by:**

* [CryptoLegacyOwnable.\_transferOwnership()](https://docs.cryptolegacy.app/documentation/functions-reference#_transferownership-clo1)

**Notes / Edge cases:** None

### ZeroTokens (ICL1)

**Parameters:** None

**Description:** Raised when an operation that expects one or more tokens is called with zero tokens or an empty list.

**Error Signature:** `ZeroTokens()`

**Raised by:**

* [NftLegacyPlugin.beneficiaryClaimNft()](https://docs.cryptolegacy.app/documentation/functions-reference#beneficiaryclaimnft-nlp1)

**Notes / Edge cases:** None

### InitialFeeNotPaid (ICL1)

**Parameters:** None

**Description:** Raised when certain actions require that the initial deployment fee has already been paid, but it has not.

**Error Signature:** `InitialFeeNotPaid()`

**Raised by:**

* [LibCryptoLegacy.\_checkOwner()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkowner-lcl1)
* [TrustedGuardiansPlugin.\_checkGuardian()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkguardian-tgp1)

**Notes / Edge cases:** None

### InitialFeeAlreadyPaid (ICL1)

**Parameters:** None

**Description:** Raised if an attempt is made to pay the initial fee again after it has already been settled.

**Error Signature:** `InitialFeeAlreadyPaid()`

**Raised by:**

* [CryptoLegacyBasePlugin.payInitialFee()](https://docs.cryptolegacy.app/documentation/functions-reference#payinitialfee-clbp1)

**Notes / Edge cases:** None

### NotBuildManager (ICL1)

**Parameters:** None

**Description:** Raised when a restricted action is attempted by an entity that is not recognized as the Build Manager.

**Error Signature:** `NotBuildManager()`

**Raised by:**

* [CryptoLegacyBasePlugin.initializeByBuildManager()](https://docs.cryptolegacy.app/documentation/functions-reference#initializebybuildmanager-clbp1)

**Notes / Edge cases:** None

### LengthMismatch (ICL1)

**Parameters:** None

**Description:** Raised when two or more arrays passed to a function have mismatched lengths, preventing proper correlation of elements.

**Error Signature:** `LengthMismatch()`

**Raised by:**

* [CryptoLegacyBasePlugin.\_setBeneficiaries()](https://docs.cryptolegacy.app/documentation/functions-reference#_setbeneficiaries-clbp1)

**Notes / Edge cases:** None

### ShareSumDoesntMatchBase (ICL1)

**Parameters:** None

**Description:** Raised when beneficiary share percentages do not sum to the required base (e.g., 10000 basis points).

**Error Signature:** `ShareSumDoesntMatchBase()`

**Raised by:**

* [CryptoLegacyBasePlugin.\_setBeneficiaries()](https://docs.cryptolegacy.app/documentation/functions-reference#_setbeneficiaries-clbp1)

**Notes / Edge cases:** None

### OriginalHashDuplicate (ICL1)

**Parameters:** None

**Description:** Raised when an original beneficiary hash is already linked and cannot be duplicated.

**Error Signature:** `OriginalHashDuplicate()`

**Raised by:**

* [CryptoLegacyBasePlugin.\_setBeneficiaries()](https://docs.cryptolegacy.app/documentation/functions-reference#_setbeneficiaries-clbp1)

**Notes / Edge cases:** None

### DistributionStarted (ICL1)

**Parameters:** None

**Description:** Raised when an operation that must occur before distribution cannot proceed because distribution has already begun.

**Error Signature:** `DistributionStarted()`

**Raised by:**

* [LibCryptoLegacy.\_checkDistributionStart()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkdistributionstart-lcl1)

**Notes / Edge cases:** None

### DistributionStartAlreadySet (ICL1)

**Parameters:** None

**Description:** Raised if distributionStartAt was already set, yet an attempt is made to set or re-initiate it again.

**Error Signature:** `DistributionStartAlreadySet()`

**Raised by:**

* [CryptoLegacyBasePlugin.initiateChallenge()](https://docs.cryptolegacy.app/documentation/functions-reference#initiatechallenge-clbp1)

**Notes / Edge cases:** None

### DistributionDelay (ICL1)

**Parameters:** None

**Description:** Raised if a beneficiary tries to claim an asset or operation before the required distribution delay.

**Error Signature:** `DistributionDelay()`

**Raised by:**

* [NftLegacyPlugin.beneficiaryClaimNft()](https://docs.cryptolegacy.app/documentation/functions-reference#beneficiaryclaimnft-nlp1)

**Notes / Edge cases:** None

### ChallengePeriodStarted (ICL1)

**Parameters:** None

**Description:** Raised when an action that must occur before the challenge period is attempted after it has started.

**Error Signature:** `ChallengePeriodStarted()`

**Raised by:**

* [LibCryptoLegacy.\_setPause()](https://docs.cryptolegacy.app/documentation/functions-reference#_setpause-lcl1)

**Notes / Edge cases:** None

### AlreadySet (ICL1)

**Parameters:** None

**Description:** Raised when a switch or assignment is made but the target was already assigned or set to the same value.

**Error Signature:** `AlreadySet()`

**Raised by:**

* [CryptoLegacyBasePlugin.beneficiarySwitch()](https://docs.cryptolegacy.app/documentation/functions-reference#beneficiaryswitch-clbp1)

**Notes / Edge cases:** None

### BeneficiaryNotSet (ICL1)

**Parameters:** None

**Description:** Raised when a beneficiary is assumed to exist but none is configured.

**Error Signature:** `BeneficiaryNotSet()`

**Raised by:**

* [NftLegacyPlugin.transferNftTokensToLegacy()](https://docs.cryptolegacy.app/documentation/functions-reference#transfernfttokenstolegacy-nlp1)

**Notes / Edge cases:** None

### Pause (ICL1)

**Parameters:** None

**Description:** Raised if a call is attempted while the contract is in a paused state, blocking the requested action.

**Error Signature:** `Pause()`

**Raised by:**

* [LibCryptoLegacy.\_checkPause()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkpause-lcl1)

**Notes / Edge cases:** None

### IncorrectFacetCutAction (ICL1)

**Parameters:** None

**Description:** Raised if the diamond cut (facet management) action is not recognized (not Add, Replace, or Remove).

**Error Signature:** `IncorrectFacetCutAction()`

**Raised by:** None

**Notes / Edge cases:** None

### NotContractOwner (ICL1)

**Parameters:** None

**Description:** Raised if a diamond operation expects the diamond's internal owner but is called by someone else.

**Error Signature:** `NotContractOwner()`

**Raised by:** None

**Notes / Edge cases:** None

### FacetNotFound (ICL1)

**Parameters:** None

**Description:** Raised when an attempt is made to manage or reference a facet address that cannot be located in storage.

**Error Signature:** `FacetNotFound()`

**Raised by:**

* [LibCryptoLegacyPlugins.\_getFacetAddressPosition()](https://docs.cryptolegacy.app/documentation/functions-reference#_getfacetaddressposition-lclp1)

**Notes / Edge cases:** None

### FacetHasNoCode (ICL1)

**Parameters:** None

**Description:** Raised if a facet address is found to contain no contract code upon an Add or Replace operation.

**Error Signature:** `FacetHasNoCode()`

**Raised by:** None

**Notes / Edge cases:** None

### NoSelectorsInFacetToCut (ICL1)

**Parameters:** None

**Description:** Raised if a facet cut is requested with zero function selectors.

**Error Signature:** `NoSelectorsInFacetToCut()`

**Raised by:** None

**Notes / Edge cases:** None

### FacetCantBeZero (ICL1)

**Parameters:** None

**Description:** Raised if an Add, Replace, or Remove action references a zero address for the facet.

**Error Signature:** `FacetCantBeZero()`

**Raised by:**

* [LibCryptoLegacyPlugins.addFunctions()](https://docs.cryptolegacy.app/documentation/functions-reference#addfunctions-lclp1)
* [LibCryptoLegacyPlugins.removeFunctions()](https://docs.cryptolegacy.app/documentation/functions-reference#removefunctions-lclp1)

**Notes / Edge cases:** None

### CantRemoveImmutableFunctions (ICL1)

**Parameters:** None

**Description:** Raised if a removal is attempted on a function that is immutable (defined directly in the diamond).

**Error Signature:** `CantRemoveImmutableFunctions()`

**Raised by:**

* [LibCryptoLegacyPlugins.removeFunctions()](https://docs.cryptolegacy.app/documentation/functions-reference#removefunctions-lclp1)

**Notes / Edge cases:** None

### CantAddFunctionThatAlreadyExists (ICL1)

**Parameters:** None

**Description:** Raised if a new facet or plugin tries to add a function selector that already exists in the contract.

**Error Signature:** `CantAddFunctionThatAlreadyExists()`

**Raised by:**

* [LibCryptoLegacyPlugins.addFunctions()](https://docs.cryptolegacy.app/documentation/functions-reference#addfunctions-lclp1)

**Notes / Edge cases:** None

### CantReplaceFunctionWithSameFunction (ICL1)

**Parameters:** None

**Description:** Raised if a Replace operation attempts to replace a function selector with a facet that already provides it.

**Error Signature:** `CantReplaceFunctionWithSameFunction()`

**Raised by:** None

**Notes / Edge cases:** None

### InitFunctionReverted (ICL1)

**Parameters:** None

**Description:** Raised if the init function (delegatecall) reverts during a diamond cut.

**Error Signature:** `InitFunctionReverted()`

**Raised by:** None

**Notes / Edge cases:** None

### InitAddressZeroButCalldataIsNot (ICL1)

**Parameters:** None

**Description:** Raised if an address is zero but non-empty calldata was provided for the init function, leading to a mismatch.

**Error Signature:** `InitAddressZeroButCalldataIsNot()`

**Raised by:** None

**Notes / Edge cases:** None

### InitCalldataZeroButAddressIsNot (ICL1)

**Parameters:** None

**Description:** Raised if an init address is non-zero but the calldata is empty, which is invalid for a diamond cut initialization.

**Error Signature:** `InitCalldataZeroButAddressIsNot()`

**Raised by:** None

**Notes / Edge cases:** None

### PluginNotRegistered (ICL1)

**Parameters:** None

**Description:** Raised if a plugin is used that is not recognized in the plugins registry.

**Error Signature:** `PluginNotRegistered()`

**Raised by:**

* [LibCryptoLegacyPlugins.\_validatePlugin()](https://docs.cryptolegacy.app/documentation/functions-reference#_validateplugin-lclp1)

**Notes / Edge cases:** None

### TransferFeeFailed (ICL1)

**Parameters:**

* `response (bytes)`: Raw response bytes from the failed fee transfer.

**Description:** Raised when transferring or refunding a fee fails and returns error data.

**Error Signature:** `TransferFeeFailed(bytes response)`

**Raised by:**

* [LibCryptoLegacy.\_transferFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_transferfee-lcl1)

**Notes / Edge cases:** None

### TooBigMultiplier (ICL1)

**Parameters:**

* `maxMultiplier (uint8)`: Maximum permitted gas limit multiplier.

**Description:** Raised when a gas limit multiplier exceeds the permitted maximum.

**Error Signature:** `TooBigMultiplier(uint8 maxMultiplier)`

**Raised by:**

* [CryptoLegacyBasePlugin.setGasLimitMultiplier()](https://docs.cryptolegacy.app/documentation/functions-reference#setgaslimitmultiplier-clbp1)

**Notes / Edge cases:** None

## ICryptoLegacyBuildManager (ICLBM1)

### AlreadyLifetime (ICLBM1)

**Parameters:** None

**Description:** Raised if an operation tries to pay a lifetime fee or set a lifetime NFT, but the user already has lifetime status.

**Error Signature:** `AlreadyLifetime()`

**Raised by:** None

**Notes / Edge cases:** None

### WithdrawFeeFailed (ICLBM1)

**Parameters:**

* `reason (bytes)`: Raw revert data returned by the failed withdrawal.

**Description:** Raised when a fee withdrawal fails and returns revert data.

**Error Signature:** `WithdrawFeeFailed(bytes reason)`

**Raised by:**

* [CryptoLegacyBuildManager.withdrawFee()](https://docs.cryptolegacy.app/documentation/functions-reference#withdrawfee-clbm1)

**Notes / Edge cases:** None

### NotValidTimeout (ICLBM1)

**Parameters:** None

**Description:** Raised if the provided interval or timeout is not valid for the expected usage (e.g., not matching required durations).

**Error Signature:** `NotValidTimeout()`

**Raised by:**

* [CryptoLegacyBuildManager.\_checkBuildArgs()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkbuildargs-clbm1)

**Notes / Edge cases:** None

### IncorrectFee (ICLBM1)

**Parameters:**

* `feeToTake (uint256)`: Fee amount the build manager expected to collect.

**Description:** Raised if the fee passed into a function is less than the required amount or otherwise mismatched.

**Error Signature:** `IncorrectFee(uint256 feeToTake)`

**Raised by:**

* [CryptoLegacyBuildManager.\_checkFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkfee-clbm1)
* [CryptoLegacyBuildManager.payForMultipleLifetimeNft()](https://docs.cryptolegacy.app/documentation/functions-reference#payformultiplelifetimenft-clbm1)

**Notes / Edge cases:** None

### BelowMinimumSupply (ICLBM1)

**Parameters:**

* `supplyLimit (uint256)`: Minimum supply threshold required for the operation.

**Description:** Raised when an operation requires a minimum supply but the current supply is below the configured limit.

**Error Signature:** `BelowMinimumSupply(uint256 supplyLimit)`

**Raised by:**

* [CryptoLegacyBuildManager.payForMultipleLifetimeNft()](https://docs.cryptolegacy.app/documentation/functions-reference#payformultiplelifetimenft-clbm1)

**Notes / Edge cases:** None

### NotRegisteredCryptoLegacy (ICLBM1)

**Parameters:** None

**Description:** Raised when a CryptoLegacy contract is not registered in the build manager.

**Error Signature:** `NotRegisteredCryptoLegacy()`

**Raised by:**

* [CryptoLegacyBuildManager.isLifetimeNftLockedAndUpdate()](https://docs.cryptolegacy.app/documentation/functions-reference#islifetimenftlockedandupdate-clbm1)
* [LibCryptoLegacy.\_isLifetimeActiveAndUpdate()](https://docs.cryptolegacy.app/documentation/functions-reference#_islifetimeactiveandupdate-lcl1)

**Notes / Edge cases:** None

### NotOwnerOfCryptoLegacy (ICLBM1)

**Parameters:** None

**Description:** Raised when the caller is not the owner of the specified CryptoLegacy contract.

**Error Signature:** `NotOwnerOfCryptoLegacy()`

**Raised by:**

* [CryptoLegacyBuildManager.isLifetimeNftLockedAndUpdate()](https://docs.cryptolegacy.app/documentation/functions-reference#islifetimenftlockedandupdate-clbm1)
* [LibCryptoLegacy.\_isLifetimeActiveAndUpdate()](https://docs.cryptolegacy.app/documentation/functions-reference#_islifetimeactiveandupdate-lcl1)

**Notes / Edge cases:** None

### TransferFeeFailed (ICLBM1)

**Parameters:**

* `response (bytes)`: Raw response bytes from the failed fee transfer.

**Description:** Raised when transferring or refunding a fee fails and returns error data.

**Error Signature:** `TransferFeeFailed(bytes response)`

**Raised by:**

* [CryptoLegacyBuildManager.\_returnFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_returnfee-clbm1)

**Notes / Edge cases:** None

## ICryptoLegacyDiamondBase (ICLDB1)

### FunctionNotExists (ICLDB1)

**Parameters:**

* `selector (bytes4)`: Function selector that was not found.

**Description:** Raised when a function call does not match any available facet or plugin, indicating that the function does not exist.

**Error Signature:** `FunctionNotExists(bytes4 selector)`

**Raised by:**

* [CryptoLegacyDiamondBase.fallback()](https://docs.cryptolegacy.app/documentation/functions-reference#fallback-cldb1)

**Notes / Edge cases:** None

### NotSelfCall (ICLDB1)

**Parameters:** None

**Description:** Raised when a static call checker detects that a call is not made from the contract to itself (self-call is required).

**Error Signature:** `NotSelfCall()`

**Raised by:**

* [CryptoLegacyDiamondBase.staticCallChecker()](https://docs.cryptolegacy.app/documentation/functions-reference#staticcallchecker-cldb1)

**Notes / Edge cases:** None

## ICryptoLegacyFactory (ICLF1)

### NotBuildOperator (ICLF1)

**Parameters:** None

**Description:** Raised when an action is attempted by an address that is not registered as an allowed build operator.

**Error Signature:** `NotBuildOperator()`

**Raised by:**

* [CryptoLegacyFactory.createCryptoLegacy()](https://docs.cryptolegacy.app/documentation/functions-reference#createcryptolegacy-clf1)

**Notes / Edge cases:** None

## ICryptoLegacyLens (ICLL1)

**No errors in this contract/library.**

## ICryptoLegacyOwnable (ICLO1)

### OwnableUnauthorizedAccount (ICLO1)

**Parameters:**

* `account (address)`: Account that failed an authorization check.

**Description:** Raised when an account that is not the owner attempts an owner-restricted action.

**Error Signature:** `OwnableUnauthorizedAccount(address account)`

**Raised by:**

* [CryptoLegacyOwnable.acceptOwnership()](https://docs.cryptolegacy.app/documentation/functions-reference#acceptownership-clo1)

**Notes / Edge cases:** None

## ICryptoLegacyPlugin (ICLP1)

**No errors in this contract/library.**

## ICryptoLegacyUpdaterPlugin (ICLUP1)

### NotTheUpdater (ICLUP1)

**Parameters:** None

**Description:** Raised when a function that only an approved updater may call is attempted by an address that is not recognized as an updater.

**Error Signature:** `NotTheUpdater()`

**Raised by:**

* [UpdateRolePlugin.updateByUpdater()](https://docs.cryptolegacy.app/documentation/functions-reference#updatebyupdater-urp1)

**Notes / Edge cases:** None

## IDeBridgeGate (IDBG1)

**No errors in this contract/library.**

## IDiamondCut (IDC1)

**No errors in this contract/library.**

## IDiamondLoupe (IDL1)

**No errors in this contract/library.**

## IFeeRegistry (IFR1)

### WithdrawAccumulatedFeeFailed (IFR1)

**Parameters:**

* `reason (bytes)`: Raw revert data returned by the failed withdrawal.

**Description:** Raised when withdrawing accumulated fees fails and returns revert data.

**Error Signature:** `WithdrawAccumulatedFeeFailed(bytes reason)`

**Raised by:**

* [FeeRegistry.withdrawAccumulatedFee()](https://docs.cryptolegacy.app/documentation/functions-reference#withdrawaccumulatedfee-fr1)
* [FeeRegistry.withdrawReferralAccumulatedFee()](https://docs.cryptolegacy.app/documentation/functions-reference#withdrawreferralaccumulatedfee-fr1)

**Notes / Edge cases:** None

### PctSumDoesntMatchBase (IFR1)

**Parameters:** None

**Description:** Raised when fee beneficiary shares do not sum to the required base (10000).

**Error Signature:** `PctSumDoesntMatchBase()`

**Raised by:**

* [FeeRegistry.setFeeBeneficiaries()](https://docs.cryptolegacy.app/documentation/functions-reference#setfeebeneficiaries-fr1)

**Notes / Edge cases:** None

### TooBigPct (IFR1)

**Parameters:** None

**Description:** Raised when a discount or share percentage is greater than the permissible maximum (10000 bps).

**Error Signature:** `TooBigPct()`

**Raised by:**

* [FeeRegistry.setRefererSpecificPct()](https://docs.cryptolegacy.app/documentation/functions-reference#setrefererspecificpct-fr1)
* [FeeRegistry.\_calculateFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_calculatefee-fr1)

**Notes / Edge cases:** None

### RefAlreadyCreated (IFR1)

**Parameters:** None

**Description:** Raised if a referral code is being created but it already exists in the registry.

**Error Signature:** `RefAlreadyCreated()`

**Raised by:**

* [FeeRegistry.\_createCustomCode()](https://docs.cryptolegacy.app/documentation/functions-reference#_createcustomcode-fr1)

**Notes / Edge cases:** None

### ZeroCode (IFR1)

**Parameters:** None

**Description:** Raised if an attempt is made to create or use a referral code that is `bytes8(0)`, which is disallowed.

**Error Signature:** `ZeroCode()`

**Raised by:**

* [FeeRegistry.\_checkCodeNotZero()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkcodenotzero-fr1)

**Notes / Edge cases:** None

### NotOperator (IFR1)

**Parameters:** None

**Description:** Raised if a function limited to code operators is called by an address not in that set.

**Error Signature:** `NotOperator()`

**Raised by:**

* [FeeRegistry.\_checkSenderIsOperator()](https://docs.cryptolegacy.app/documentation/functions-reference#_checksenderisoperator-fr1)

**Notes / Edge cases:** None

### NotReferrer (IFR1)

**Parameters:** None

**Description:** Raised if a call referencing a referral code is made by someone other than the recognized code owner (referrer).

**Error Signature:** `NotReferrer()`

**Raised by:**

* [FeeRegistry.\_checkSenderIsReferrer()](https://docs.cryptolegacy.app/documentation/functions-reference#_checksenderisreferrer-fr1)

**Notes / Edge cases:** None

### AlreadyReferrer (IFR1)

**Parameters:** None

**Description:** Raised if a new owner address is designated for a referral code but already has a code assigned.

**Error Signature:** `AlreadyReferrer()`

**Raised by:**

* [FeeRegistry.\_checkNewOwnerIsNotReferrer()](https://docs.cryptolegacy.app/documentation/functions-reference#_checknewownerisnotreferrer-fr1)

**Notes / Edge cases:** None

### CodeNotCreated (IFR1)

**Parameters:** None

**Description:** Raised if an update or cross-chain referral action references a code that does not exist in storage.

**Error Signature:** `CodeNotCreated()`

**Raised by:**

* [FeeRegistry.updateCrossChainsRef()](https://docs.cryptolegacy.app/documentation/functions-reference#updatecrosschainsref-fr1)

**Notes / Edge cases:** None

## ILockChainGate (ILCG1)

### ArrayLengthMismatch (ILCG1)

**Parameters:** None

**Description:** Raised when related arrays are expected to be the same length but are not.

**Error Signature:** `ArrayLengthMismatch()`

**Raised by:**

* [FeeRegistry.\_setCrossChainsRef()](https://docs.cryptolegacy.app/documentation/functions-reference#_setcrosschainsref-fr1)
* [LockChainGate.\_lockLifetimeNftToChains()](https://docs.cryptolegacy.app/documentation/functions-reference#_locklifetimenfttochains-lcg1)
* [LockChainGate.\_updateNftOwnerOnChainList()](https://docs.cryptolegacy.app/documentation/functions-reference#_updatenftowneronchainlist-lcg1)

**Notes / Edge cases:** None

### AlreadyLocked (ILCG1)

**Parameters:** None

**Description:** Raised when an NFT is already locked for a holder and a new lock attempt is made without unlocking first.

**Error Signature:** `AlreadyLocked()`

**Raised by:**

* [LockChainGate.\_writeLockLifetimeNft()](https://docs.cryptolegacy.app/documentation/functions-reference#_writelocklifetimenft-lcg1)

**Notes / Edge cases:** None

### LockedToChains (ILCG1)

**Parameters:** None

**Description:** Raised when an action (e.g., unlocking) is attempted but the NFT is still locked to multiple chains.

**Error Signature:** `LockedToChains()`

**Raised by:**

* [LockChainGate.unlockLifetimeNft()](https://docs.cryptolegacy.app/documentation/functions-reference#unlocklifetimenft-lcg1)

**Notes / Edge cases:** None

### CrossChainLock (ILCG1)

**Parameters:** None

**Description:** Raised when an action cannot proceed because the NFT is currently locked under a cross-chain process.

**Error Signature:** `CrossChainLock()`

**Raised by:**

* [LockChainGate.\_checkCrossChainLock()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkcrosschainlock-lcg1)

**Notes / Edge cases:** None

### TooEarly (ILCG1)

**Parameters:** None

**Description:** Raised when an unlocking or transfer is attempted before the lock period has elapsed.

**Error Signature:** `TooEarly()`

**Raised by:**

* [LockChainGate.\_checkTooEarly()](https://docs.cryptolegacy.app/documentation/functions-reference#_checktooearly-lcg1)

**Notes / Edge cases:** None

### DestinationChainNotSpecified (ILCG1)

**Parameters:** None

**Description:** Raised when a cross-chain locking action references a chain ID for which no destination contract is specified.

**Error Signature:** `DestinationChainNotSpecified()`

**Raised by:**

* [LockChainGate.\_checkDestinationLockedChain()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkdestinationlockedchain-lcg1)

**Notes / Edge cases:** None

### TokenNotLocked (ILCG1)

**Parameters:** None

**Description:** Raised when an NFT-based action is attempted for a token that is not currently locked.

**Error Signature:** `TokenNotLocked()`

**Raised by:**

* [LockChainGate.\_checkTokenLocked()](https://docs.cryptolegacy.app/documentation/functions-reference#_checktokenlocked-lcg1)
* [LockChainGate.\_checkHolderTokenLock()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkholdertokenlock-lcg1)

**Notes / Edge cases:** None

### TokenIdMismatch (ILCG1)

**Parameters:**

* `checkTokenId (uint256)`: Token ID that was expected for the operation.

**Description:** Raised when the token ID being updated or transferred does not match the token ID that was locked or recognized for the operation.

**Error Signature:** `TokenIdMismatch(uint256 checkTokenId)`

**Raised by:**

* [LockChainGate.\_updateLifetimeNftOwnerOnChain()](https://docs.cryptolegacy.app/documentation/functions-reference#_updatelifetimenftowneronchain-lcg1)

**Notes / Edge cases:** None

### AlreadyLockedToChain (ILCG1)

**Parameters:** None

**Description:** Raised when attempting to lock an NFT to a chain to which it is already locked.

**Error Signature:** `AlreadyLockedToChain()`

**Raised by:**

* [LockChainGate.\_lockLifetimeNftToChain()](https://docs.cryptolegacy.app/documentation/functions-reference#_locklifetimenfttochain-lcg1)

**Notes / Edge cases:** None

### SourceNotSpecified (ILCG1)

**Parameters:** None

**Description:** Raised if a cross-chain message originates from a chain ID for which no source contract is set in the gate configuration.

**Error Signature:** `SourceNotSpecified()`

**Raised by:**

* [LockChainGate.\_checkSource()](https://docs.cryptolegacy.app/documentation/functions-reference#_checksource-lcg1)

**Notes / Edge cases:** None

### NotLockedByChain (ILCG1)

**Parameters:** None

**Description:** Raised when an unlock-from-chain operation is attempted but the NFT is not locked by that chain.

**Error Signature:** `NotLockedByChain()`

**Raised by:**

* [LockChainGate.unlockLifetimeNftFromChain()](https://docs.cryptolegacy.app/documentation/functions-reference#unlocklifetimenftfromchain-lcg1)

**Notes / Edge cases:** None

### DestinationNotSpecified (ILCG1)

**Parameters:** None

**Description:** Raised when no destination chain contract is configured for the specified chain.

**Error Signature:** `DestinationNotSpecified()`

**Raised by:** None

**Notes / Edge cases:** None

### NotAvailable (ILCG1)

**Parameters:** None

**Description:** Raised when an operation on a locked NFT is not available to the caller or is blocked by conditions.

**Error Signature:** `NotAvailable()`

**Raised by:**

* [LockChainGate.unlockLifetimeNft()](https://docs.cryptolegacy.app/documentation/functions-reference#unlocklifetimenft-lcg1)
* [LockChainGate.transferLifetimeNftTo()](https://docs.cryptolegacy.app/documentation/functions-reference#transferlifetimenftto-lcg1)
* [LockChainGate.updateNftOwnerOnChainList()](https://docs.cryptolegacy.app/documentation/functions-reference#updatenftowneronchainlist-lcg1)

**Notes / Edge cases:** None

### IncorrectFee (ILCG1)

**Parameters:**

* `requiredFee (uint256)`: Exact fee amount required by the operation.

**Description:** Raised if the fee passed into a function is less than the required amount or otherwise mismatched.

**Error Signature:** `IncorrectFee(uint256 requiredFee)`

**Raised by:**

* [LockChainGate.\_checkFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkfee-lcg1)

**Notes / Edge cases:** None

### SameAddress (ILCG1)

**Parameters:** None

**Description:** Raised when a transfer is requested, but the source and destination addresses are the same.

**Error Signature:** `SameAddress()`

**Raised by:**

* [LockChainGate.\_transferLifetimeNftTo()](https://docs.cryptolegacy.app/documentation/functions-reference#_transferlifetimenftto-lcg1)

**Notes / Edge cases:** None

### RecipientLocked (ILCG1)

**Parameters:** None

**Description:** Raised when trying to transfer an NFT to a recipient who already has a locked NFT, and the system prohibits such a scenario.

**Error Signature:** `RecipientLocked()`

**Raised by:**

* [LockChainGate.\_transferLifetimeNftTo()](https://docs.cryptolegacy.app/documentation/functions-reference#_transferlifetimenftto-lcg1)

**Notes / Edge cases:** None

### TransferLockTimeout (ILCG1)

**Parameters:** None

**Description:** Raised when a transfer or unlock is attempted after the transfer timeout has elapsed.

**Error Signature:** `TransferLockTimeout()`

**Raised by:**

* [LockChainGate.\_transferLifetimeNftTo()](https://docs.cryptolegacy.app/documentation/functions-reference#_transferlifetimenftto-lcg1)

**Notes / Edge cases:** None

### NotCallProxy (ILCG1)

**Parameters:** None

**Description:** Raised when a cross-chain operation is not being relayed by the expected CallProxy contract.

**Error Signature:** `NotCallProxy()`

**Raised by:**

* [LockChainGate.\_onlyCrossChain()](https://docs.cryptolegacy.app/documentation/functions-reference#_onlycrosschain-lcg1)

**Notes / Edge cases:** None

### ChainIdMismatch (ILCG1)

**Parameters:** None

**Description:** Raised when a cross-chain message’s chain ID does not match the chain ID that the contract expects for the submission.

**Error Signature:** `ChainIdMismatch()`

**Raised by:**

* [LockChainGate.\_onlyCrossChain()](https://docs.cryptolegacy.app/documentation/functions-reference#_onlycrosschain-lcg1)

**Notes / Edge cases:** None

### NotValidSender (ILCG1)

**Parameters:** None

**Description:** Raised when a cross-chain message’s native sender does not match the recognized source contract.

**Error Signature:** `NotValidSender()`

**Raised by:**

* [LockChainGate.\_onlyCrossChain()](https://docs.cryptolegacy.app/documentation/functions-reference#_onlycrosschain-lcg1)

**Notes / Edge cases:** None

### NotAllowed (ILCG1)

**Parameters:** None

**Description:** Raised when an operation on a locked NFT is restricted to certain operators, but the caller is not allowed.

**Error Signature:** `NotAllowed()`

**Raised by:**

* [LockChainGate.isNftLockedAndUpdate()](https://docs.cryptolegacy.app/documentation/functions-reference#isnftlockedandupdate-lcg1)

**Notes / Edge cases:** None

### TransferFeeFailed (ILCG1)

**Parameters:**

* `response (bytes)`: Raw response bytes from the failed fee transfer.

**Description:** Raised when transferring or refunding a fee fails and returns error data.

**Error Signature:** `TransferFeeFailed(bytes response)`

**Raised by:**

* [LockChainGate.\_returnFee()](https://docs.cryptolegacy.app/documentation/functions-reference#_returnfee-lcg1)

**Notes / Edge cases:** None

## ILegacyMessenger (ILM1)

**No errors in this contract/library.**

## ILido (ILD1)

**No errors in this contract/library.**

## ILidoWithdrawalQueue (ILWQ1)

**No errors in this contract/library.**

## ILifetimeNft (ILN1)

### NotTheMinter (ILN1)

**Parameters:** None

**Description:** Raised when an address attempts to mint a LifetimeNft but is not designated as an active minter operator.

**Error Signature:** `NotTheMinter()`

**Raised by:**

* [LifetimeNft.mint()](https://docs.cryptolegacy.app/documentation/functions-reference#mint-ln1)

**Notes / Edge cases:** None

## IPermit2 (IPM21)

**No errors in this contract/library.**

## IPluginsRegistry (IPR1)

**No errors in this contract/library.**

## ISafeMinimalMultisig (ISM1)

### MultisigProposalNotPending (ISM1)

**Parameters:** None

**Description:** Raised when a proposal is expected to be pending but is not.

**Error Signature:** `MultisigProposalNotPending()`

**Raised by:**

* [LibSafeMinimalMultisig.\_getPendingProposalForVoter()](https://docs.cryptolegacy.app/documentation/functions-reference#_getpendingproposalforvoter-lsm1)

**Notes / Edge cases:** None

### MultisigNotConfirmed (ISM1)

**Parameters:** None

**Description:** Raised when a proposal lacks the required confirmations for execution.

**Error Signature:** `MultisigNotConfirmed()`

**Raised by:**

* [LibSafeMinimalMultisig.\_cancel()](https://docs.cryptolegacy.app/documentation/functions-reference#_cancel-lsm1)

**Notes / Edge cases:** None

### MultisigExecutionFailed (ISM1)

**Parameters:** None

**Description:** Raised if the low-level call (execution of a proposal) fails or reverts.

**Error Signature:** `MultisigExecutionFailed()`

**Raised by:**

* [LibSafeMinimalMultisig.\_execute()](https://docs.cryptolegacy.app/documentation/functions-reference#_execute-lsm1)

**Notes / Edge cases:** None

### MultisigMethodNotAllowed (ISM1)

**Parameters:** None

**Description:** Raised if a proposal references a function selector that is not permitted by the chosen multi-sig flow.

**Error Signature:** `MultisigMethodNotAllowed()`

**Raised by:**

* [LibSafeMinimalMultisig.\_propose()](https://docs.cryptolegacy.app/documentation/functions-reference#_propose-lsm1)

**Notes / Edge cases:** None

### MultisigVoterNotAllowed (ISM1)

**Parameters:** None

**Description:** Raised when an address that is not in the set of recognized voters attempts to create or confirm a proposal.

**Error Signature:** `MultisigVoterNotAllowed()`

**Raised by:**

* [LibSafeMinimalMultisig.\_checkIsSenderAllowed()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkissenderallowed-lsm1)

**Notes / Edge cases:** None

### MultisigOnlyExecutor (ISM1)

**Parameters:** None

**Description:** Raised if a proposal is executed by an entity other than the contract itself (where the design requires internal execution).

**Error Signature:** `MultisigOnlyExecutor()`

**Raised by:**

* [LibSafeMinimalMultisig.\_checkIsMultisigExecutor()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkismultisigexecutor-lsm1)

**Notes / Edge cases:** None

### MultisigIncorrectRequiredConfirmations (ISM1)

**Parameters:** None

**Description:** Raised if an attempt is made to set or initialize a multi-sig with a required confirmation count that is zero or exceeds the number of voters.

**Error Signature:** `MultisigIncorrectRequiredConfirmations()`

**Raised by:**

* [LibSafeMinimalBeneficiaryMultisig.\_setConfirmations()](https://docs.cryptolegacy.app/documentation/functions-reference#_setconfirmations-lsmb1)
* [LibSafeMinimalMultisig.\_setVotersAndConfirmations()](https://docs.cryptolegacy.app/documentation/functions-reference#_setvotersandconfirmations-lsm1)

**Notes / Edge cases:** None

### MultisigNothingToWithdraw (ISM1)

**Parameters:** None

**Description:** Raised when a withdrawal is attempted but there is no held ETH to withdraw.

**Error Signature:** `MultisigNothingToWithdraw()`

**Raised by:**

* [LibSafeMinimalMultisig.\_withdrawHeldEth()](https://docs.cryptolegacy.app/documentation/functions-reference#_withdrawheldeth-lsm1)

**Notes / Edge cases:** None

### TransferFeeFailed (ISM1)

**Parameters:**

* `response (bytes)`: Raw response bytes from the failed fee transfer.

**Description:** Raised when transferring or refunding a fee fails and returns error data.

**Error Signature:** `TransferFeeFailed(bytes response)`

**Raised by:**

* [LibSafeMinimalMultisig.\_withdrawHeldEth()](https://docs.cryptolegacy.app/documentation/functions-reference#_withdrawheldeth-lsm1)

**Notes / Edge cases:** None

## ISignatureRoleTimelock (ISRT1)

### DisabledFunction (ISRT1)

**Parameters:** None

**Description:** Raised when a function or signature is disabled in the timelock configuration.

**Error Signature:** `DisabledFunction()`

**Raised by:**

* [SignatureRoleTimelock.renounceRole()](https://docs.cryptolegacy.app/documentation/functions-reference#renouncerole-srt1)

**Notes / Edge cases:** None

### AlreadyHaveRole (ISRT1)

**Parameters:** None

**Description:** Raised when adding a role to an account that already holds it.

**Error Signature:** `AlreadyHaveRole()`

**Raised by:**

* [SignatureRoleTimelock.\_addRoleAccount()](https://docs.cryptolegacy.app/documentation/functions-reference#_addroleaccount-srt1)

**Notes / Edge cases:** None

### DoesntHaveRole (ISRT1)

**Parameters:** None

**Description:** Raised when removing or modifying a role for an account that does not hold the role.

**Error Signature:** `DoesntHaveRole()`

**Raised by:**

* [SignatureRoleTimelock.\_removeRoleAccount()](https://docs.cryptolegacy.app/documentation/functions-reference#_removeroleaccount-srt1)

**Notes / Edge cases:** None

### RoleDontExist (ISRT1)

**Parameters:** None

**Description:** Raised when assigning a signature role to a role identifier that does not exist.

**Error Signature:** `RoleDontExist()`

**Raised by:**

* [SignatureRoleTimelock.\_addSignatureRole()](https://docs.cryptolegacy.app/documentation/functions-reference#_addsignaturerole-srt1)

**Notes / Edge cases:** None

### CallerNotCurrentAddress (ISRT1)

**Parameters:** None

**Description:** Raised when a function marked for internal use is called by an external address instead of the contract itself.

**Error Signature:** `CallerNotCurrentAddress()`

**Raised by:**

* [SignatureRoleTimelock.setMaxExecutionPeriod()](https://docs.cryptolegacy.app/documentation/functions-reference#setmaxexecutionperiod-srt1)
* [SignatureRoleTimelock.setRoleAccounts()](https://docs.cryptolegacy.app/documentation/functions-reference#setroleaccounts-srt1)
* [SignatureRoleTimelock.addSignatureRoleList()](https://docs.cryptolegacy.app/documentation/functions-reference#addsignaturerolelist-srt1)
* [SignatureRoleTimelock.removeSignatureRoleList()](https://docs.cryptolegacy.app/documentation/functions-reference#removesignaturerolelist-srt1)

**Notes / Edge cases:** None

### IncorrectSignatureIndex (ISRT1)

**Parameters:** None

**Description:** Raised when an index for a signature array is incorrect or out-of-bounds during a removal or update action.

**Error Signature:** `IncorrectSignatureIndex()`

**Raised by:**

* [SignatureRoleTimelock.\_removeSignatureRole()](https://docs.cryptolegacy.app/documentation/functions-reference#_removesignaturerole-srt1)

**Notes / Edge cases:** None

### IncorrectRoleIndex (ISRT1)

**Parameters:** None

**Description:** Raised when an index for a role array is incorrect or out-of-bounds during role management.

**Error Signature:** `IncorrectRoleIndex()`

**Raised by:**

* [SignatureRoleTimelock.\_removeRoleAccount()](https://docs.cryptolegacy.app/documentation/functions-reference#_removeroleaccount-srt1)

**Notes / Edge cases:** None

### CallFailed (ISRT1)

**Parameters:**

* `errorMessage (bytes)`: Raw revert data returned by the failed call.

**Description:** Raised when an external call made by the timelock fails.

**Error Signature:** `CallFailed(bytes errorMessage)`

**Raised by:**

* [SignatureRoleTimelock.\_executeCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_executecall-srt1)

**Notes / Edge cases:** None

### CallNotScheduled (ISRT1)

**Parameters:** None

**Description:** Raised when attempting to execute or cancel a call that is not in the pending schedule.

**Error Signature:** `CallNotScheduled()`

**Raised by:**

* [SignatureRoleTimelock.\_executeCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_executecall-srt1)
* [SignatureRoleTimelock.\_cancelCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_cancelcall-srt1)

**Notes / Edge cases:** None

### NotPending (ISRT1)

**Parameters:** None

**Description:** Raised when a scheduled call has already been executed or canceled, so it is no longer pending.

**Error Signature:** `NotPending()`

**Raised by:**

* [SignatureRoleTimelock.\_executeCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_executecall-srt1)
* [SignatureRoleTimelock.\_cancelCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_cancelcall-srt1)

**Notes / Edge cases:** None

### TimelockActive (ISRT1)

**Parameters:** None

**Description:** Raised when execution is attempted before the timelock period has elapsed.

**Error Signature:** `TimelockActive()`

**Raised by:**

* [SignatureRoleTimelock.\_executeCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_executecall-srt1)

**Notes / Edge cases:** None

### TimelockExpired (ISRT1)

**Parameters:** None

**Description:** Raised when execution is attempted after the timelock’s valid execution window.

**Error Signature:** `TimelockExpired()`

**Raised by:**

* [SignatureRoleTimelock.\_executeCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_executecall-srt1)

**Notes / Edge cases:** None

### CallerHaveNoRequiredRole (ISRT1)

**Parameters:**

* `requiredRole (bytes32)`: Role identifier the caller must have.

**Description:** Raised when a caller tries to schedule or execute an action requiring a role they do not possess.

**Error Signature:** `CallerHaveNoRequiredRole(bytes32 requiredRole)`

**Raised by:**

* [SignatureRoleTimelock.\_checkRole()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkrole-srt1)

**Notes / Edge cases:** None

### CallAlreadyScheduled (ISRT1)

**Parameters:** None

**Description:** Raised when a call is scheduled more than once with the same combination of target, data, and execution time.

**Error Signature:** `CallAlreadyScheduled()`

**Raised by:**

* [SignatureRoleTimelock.\_scheduleCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_schedulecall-srt1)

**Notes / Edge cases:** None

### SignatureAlreadyExists (ISRT1)

**Parameters:** None

**Description:** Raised when an attempt is made to add a signature role that already exists for a given target/function.

**Error Signature:** `SignatureAlreadyExists()`

**Raised by:**

* [SignatureRoleTimelock.\_addSignatureRole()](https://docs.cryptolegacy.app/documentation/functions-reference#_addsignaturerole-srt1)

**Notes / Edge cases:** None

### SignatureTimeLockNotSet (ISRT1)

**Parameters:**

* `signature (bytes4)`: Function selector whose timelock is missing.

**Description:** Raised if a signature-based action is processed but no timelock parameter is set.

**Error Signature:** `SignatureTimeLockNotSet(bytes4 signature)`

**Raised by:**

* [SignatureRoleTimelock.\_scheduleCall()](https://docs.cryptolegacy.app/documentation/functions-reference#_schedulecall-srt1)

**Notes / Edge cases:** None

### OutOfTimelockBounds (ISRT1)

**Parameters:**

* `maxTimelock (uint256)`: Maximum allowed timelock duration.

**Description:** Raised when a proposed timelock duration exceeds the allowed maximum limit.

**Error Signature:** `OutOfTimelockBounds(uint256 maxTimelock)`

**Raised by:**

* [SignatureRoleTimelock.\_addSignatureRole()](https://docs.cryptolegacy.app/documentation/functions-reference#_addsignaturerole-srt1)

**Notes / Edge cases:** None

### OutOfMaxExecutionPeriodBounds (ISRT1)

**Parameters:**

* `minPeriod (uint256)`: Minimum execution window length allowed.
* `maxPeriod (uint256)`: Maximum execution window length allowed.

**Description:** Raised if a proposed max execution period for scheduled calls is out of the contract’s acceptable range.

**Error Signature:** `OutOfMaxExecutionPeriodBounds(uint256 minPeriod, uint256 maxPeriod)`

**Raised by:**

* [SignatureRoleTimelock.setMaxExecutionPeriod()](https://docs.cryptolegacy.app/documentation/functions-reference#setmaxexecutionperiod-srt1)

**Notes / Edge cases:** None

## IStataToken (ISTA1)

**No errors in this contract/library.**

## IStataTokenFactory (ISTF1)

**No errors in this contract/library.**

## ITrustedGuardiansPlugin (ITGP1)

### NotGuardian (ITGP1)

**Parameters:** None

**Description:** Raised if a function restricted to guardians is attempted by an address that is not in the guardian set.

**Error Signature:** `NotGuardian()`

**Raised by:**

* [TrustedGuardiansPlugin.\_checkGuardian()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkguardian-tgp1)

**Notes / Edge cases:** None

### ZeroGuardian (ITGP1)

**Parameters:** None

**Description:** Raised when a guardian identifier is zero or empty.

**Error Signature:** `ZeroGuardian()`

**Raised by:**

* [TrustedGuardiansPlugin.\_setGuardians()](https://docs.cryptolegacy.app/documentation/functions-reference#_setguardians-tgp1)

**Notes / Edge cases:** None

### ThresholdDontMet (ITGP1)

**Parameters:** None

**Description:** Raised if an operation expects a certain guardian threshold to be met but it has not been reached.

**Error Signature:** `ThresholdDontMet()`

**Raised by:** None

**Notes / Edge cases:** None

### ThresholdTooBig (ITGP1)

**Parameters:** None

**Description:** Raised when the guardians threshold exceeds the maximum allowed value.

**Error Signature:** `ThresholdTooBig()`

**Raised by:**

* [TrustedGuardiansPlugin.\_afterGuardiansSet()](https://docs.cryptolegacy.app/documentation/functions-reference#_afterguardiansset-tgp1)

**Notes / Edge cases:** None

### GuardianAlreadyVoted (ITGP1)

**Parameters:** None

**Description:** Raised if a guardian tries to vote or re-vote when their vote is already recorded.

**Error Signature:** `GuardianAlreadyVoted()`

**Raised by:**

* [TrustedGuardiansPlugin.\_checkGuardianNotVoted()](https://docs.cryptolegacy.app/documentation/functions-reference#_checkguardiannotvoted-tgp1)

**Notes / Edge cases:** None

### GuardiansTimeoutCantBeZero (ITGP1)

**Parameters:** None

**Description:** Raised when the guardians challenge timeout is set to zero.

**Error Signature:** `GuardiansTimeoutCantBeZero()`

**Raised by:**

* [TrustedGuardiansPlugin.\_setGuardiansConfig()](https://docs.cryptolegacy.app/documentation/functions-reference#_setguardiansconfig-tgp1)

**Notes / Edge cases:** None

### MaxGuardiansTimeout (ITGP1)

**Parameters:**

* `guardiansThreshold (uint64)`: Guardians threshold value that exceeds the allowed maximum.

**Description:** Raised if a proposed guardians challenge timeout exceeds the permitted maximum (e.g., 30 days).

**Error Signature:** `MaxGuardiansTimeout(uint64 guardiansThreshold)`

**Raised by:**

* [TrustedGuardiansPlugin.\_setGuardiansConfig()](https://docs.cryptolegacy.app/documentation/functions-reference#_setguardiansconfig-tgp1)

**Notes / Edge cases:** None

## DiamondLoupeFacet (DLF1)

**No errors in this contract/library.**

## IUniversalRouter (IUR1)

**No errors in this contract/library.**

## IWETH (IWETH1)

**No errors in this contract/library.**

## IWstETH (IWSTETH1)

**No errors in this contract/library.**

## WethUnwrapIWETH (WUI1)

**No errors in this contract/library.**

## LibCLUtils (LCLU1)

### ApprovalFailed (LCLU1)

**Parameters:** None

**Description:** Raised when `LibCLUtils.approveToken()` performs the low-level ERC-20 approval call and the call either reverts or returns an explicit `false`.

**Error Signature:** `ApprovalFailed()`

**Raised by:**

* [LibCLUtils.approveToken()](https://docs.cryptolegacy.app/documentation/functions-reference#approvetoken-lclu1)

**Notes / Edge cases:** Covers both non-standard ERC-20 approve reverts and tokens that return a boolean `false` instead of reverting.

## LibClaimMigrationCore (LCMC1)

### MigrationInvalidDelta (LCMC1)

**Parameters:**

* `outBalanceBefore (uint256)`: Source-token balance snapshot before the conversion.
* `amountOut (uint256)`: Amount of source token that left the contract.
* `amountIn (uint256)`: Amount of destination token that arrived.

**Description:** Raised when the conversion delta used for claim migration is invalid because one of the required balances/deltas is zero.

**Error Signature:** `MigrationInvalidDelta(uint256 outBalanceBefore, uint256 amountOut, uint256 amountIn)`

**Raised by:**

* [LibClaimMigrationCore.calculateFractionAndRatio()](https://docs.cryptolegacy.app/documentation/functions-reference#calculatefractionandratio-lcmc1)
* [LibTwoStepClaimMigration.start()](https://docs.cryptolegacy.app/documentation/functions-reference#start-ltscm1)

**Notes / Edge cases:** `start()` raises this error directly when the source-token delta is zero before any ratio can be computed. The same error also surfaces transitively through `migrate()` and `complete()` when they delegate into `calculateFractionAndRatio()` or `_applyPendingMigration()`.

### MigrationAmountTooSmall (LCMC1)

**Parameters:**

* `outBalanceBefore (uint256)`: Source-token balance snapshot before the conversion.
* `amountOut (uint256)`: Amount of source token that left the contract.
* `amountIn (uint256)`: Amount of destination token that arrived.
* `fraction (uint256)`: Computed migration fraction that rounded to zero.
* `ratio (uint256)`: Computed exchange ratio that rounded to zero.

**Description:** Raised when the conversion is so small relative to the tracked balances that the scaled migration fraction or ratio rounds to zero.

**Error Signature:** `MigrationAmountTooSmall(uint256 outBalanceBefore, uint256 amountOut, uint256 amountIn, uint256 fraction, uint256 ratio)`

**Raised by:**

* [LibClaimMigrationCore.calculateFractionAndRatio()](https://docs.cryptolegacy.app/documentation/functions-reference#calculatefractionandratio-lcmc1)

**Notes / Edge cases:** This error is raised directly by `calculateFractionAndRatio()` and then bubbles through `migrate()`, `complete()`, and `_applyPendingMigration()` when the computed fraction or ratio rounds to zero.

## LibOneStepClaimMigration (LOSCM1)

**No errors in this contract/library.**

## LibTwoStepClaimMigration (LTSCM1)

### NoPendingMigration (LTSCM1)

**Parameters:** None

**Description:** Raised when a two-step migration operation expects an active pending migration but none exists.

**Error Signature:** `NoPendingMigration()`

**Raised by:**

* [LibTwoStepClaimMigration.complete()](https://docs.cryptolegacy.app/documentation/functions-reference#complete-ltscm1)
* [LibTwoStepClaimMigration.abandon()](https://docs.cryptolegacy.app/documentation/functions-reference#abandon-ltscm1)

**Notes / Edge cases:** Protects both the completion path and the emergency-abandon path from running against cleared or never-initialized migration state.

### PendingMigrationAlreadyExists (LTSCM1)

**Parameters:**

* `tokenOut (address)`: Source token associated with the already active pending migration.

**Description:** Raised when `LibTwoStepClaimMigration.start()` is called while another pending migration is still active.

**Error Signature:** `PendingMigrationAlreadyExists(address tokenOut)`

**Raised by:**

* [LibTwoStepClaimMigration.start()](https://docs.cryptolegacy.app/documentation/functions-reference#start-ltscm1)

**Notes / Edge cases:** Enforces the library invariant that only one delayed migration may be active at a time.

### TokenAlreadyLocked (LTSCM1)

**Parameters:**

* `token (address)`: Token whose beneficiary claim slots are already locked.

**Description:** Raised when `start()` encounters a beneficiary claim slot already set to the migration lock sentinel.

**Error Signature:** `TokenAlreadyLocked(address token)`

**Raised by:**

* [LibTwoStepClaimMigration.start()](https://docs.cryptolegacy.app/documentation/functions-reference#start-ltscm1)

**Notes / Edge cases:** Prevents overlapping delayed migrations that would otherwise reuse claim slots already locked by another in-flight migration.

## LibCreate3 (LC31)

### ErrorCreatingProxy (LC31)

**Parameters:** None

**Description:** Raised when the CREATE3 proxy deployment fails.

**Error Signature:** `ErrorCreatingProxy()`

**Raised by:**

* [LibCreate3.create3()](https://docs.cryptolegacy.app/documentation/functions-reference#create3bytes32bytesuint256-lc31)

**Notes / Edge cases:** None

### ErrorCreatingContract (LC31)

**Parameters:** None

**Description:** Raised when CREATE3 proxy deployment succeeds but the final contract creation fails.

**Error Signature:** `ErrorCreatingContract()`

**Raised by:**

* [LibCreate3.create3()](https://docs.cryptolegacy.app/documentation/functions-reference#create3bytes32bytesuint256-lc31)

**Notes / Edge cases:** None

### TargetAlreadyExists (LC31)

**Parameters:** None

**Description:** Raised when the target deployment address already has code.

**Error Signature:** `TargetAlreadyExists()`

**Raised by:**

* [LibCreate3.create3()](https://docs.cryptolegacy.app/documentation/functions-reference#create3bytes32bytesuint256-lc31)

**Notes / Edge cases:** None

## LibCryptoLegacy (LCL1)

**No errors in this contract/library.**

## LibCryptoLegacyDeploy (LCLD1)

### BytecodeEmpty (LCLD1)

**Parameters:** None

**Description:** Raised when a CREATE2 deployment is requested but the supplied bytecode is empty.

**Error Signature:** `BytecodeEmpty()`

**Raised by:**

* [LibCryptoLegacyDeploy.\_deployByCreate3()](https://docs.cryptolegacy.app/documentation/functions-reference#_deploybycreate3-lcld1)

**Notes / Edge cases:** None

### AddressMismatch (LCLD1)

**Parameters:** None

**Description:** Raised when a computed deployment address does not match the expected address.

**Error Signature:** `AddressMismatch()`

**Raised by:**

* [LibCryptoLegacyDeploy.\_deployByCreate3()](https://docs.cryptolegacy.app/documentation/functions-reference#_deploybycreate3-lcld1)

**Notes / Edge cases:** None

### Create3Failed (LCLD1)

**Parameters:** None

**Description:** Raised when a CREATE3 deployment fails to produce a contract address.

**Error Signature:** `Create3Failed()`

**Raised by:** None

**Notes / Edge cases:** None

## LibCryptoLegacyPlugins (LCLP1)

**No errors in this contract/library.**

## LibDiamond (LD1)

### InitializationFunctionReverted (LD1)

**Parameters:**

* `_initializationContractAddress (address)`: Initialization target that received the delegatecall during the diamond cut.
* `_calldata (bytes)`: Initialization calldata forwarded to the delegatecall.

**Description:** Raised when the post-cut initialization delegatecall fails without bubbling a concrete revert reason.

**Error Signature:** `InitializationFunctionReverted(address _initializationContractAddress, bytes _calldata)`

**Raised by:**

* [LibDiamond.initializeDiamondCut()](https://docs.cryptolegacy.app/documentation/functions-reference#initializediamondcut-ld1)

**Notes / Edge cases:** Surfaced only when the low-level delegatecall returns `success == false` without a decodable custom error or string reason.

## LibSafeMinimalBeneficiaryMultisig (LSMB1)

**No errors in this contract/library.**

## LibSafeMinimalMultisig (LSM1)

**No errors in this contract/library.**

## LibTrustedGuardiansPlugin (LTGP1)

**No errors in this contract/library.**

## BeneficiaryAaveV3SupplyPlugin (BALP1)

### ZeroAmount (BALP1)

**Parameters:** None

**Description:** Raised when an Aave beneficiary-plugin action receives a zero input amount or zero share amount.

**Error Signature:** `ZeroAmount()`

**Raised by:**

* [BeneficiaryAaveV3SupplyPlugin.baavesSupply()](https://docs.cryptolegacy.app/documentation/functions-reference#baavessupply-balp1)
* [BeneficiaryAaveV3SupplyPlugin.baavesWithdraw()](https://docs.cryptolegacy.app/documentation/functions-reference#baaveswithdraw-balp1)
* [BeneficiaryAaveV3SupplyPlugin.baavesWrapATokenToStataToken()](https://docs.cryptolegacy.app/documentation/functions-reference#baaveswrapatokentostatatoken-balp1)
* [BeneficiaryAaveV3SupplyPlugin.baavesUnwrapStataTokenToAToken()](https://docs.cryptolegacy.app/documentation/functions-reference#baavesunwrapstatatokentoatoken-balp1)
* [BeneficiaryAaveV3SupplyPlugin.baavesDepositToStataToken()](https://docs.cryptolegacy.app/documentation/functions-reference#baavesdeposittostatatoken-balp1)
* [BeneficiaryAaveV3SupplyPlugin.baavesRedeemFromStataToken()](https://docs.cryptolegacy.app/documentation/functions-reference#baavesredeemfromstatatoken-balp1)

**Notes / Edge cases:** None

### ATokenNotFound (BALP1)

**Parameters:** None

**Description:** Raised when the configured PoolDataProvider returns the zero address instead of a valid aToken for the requested reserve asset.

**Error Signature:** `ATokenNotFound()`

**Raised by:**

* [BeneficiaryAaveV3SupplyPlugin.\_getAToken()](https://docs.cryptolegacy.app/documentation/functions-reference#_getatoken-balp1)

**Notes / Edge cases:** The error is raised directly inside `_getAToken(asset)` and then bubbles into `baavesSupply()`, `baavesWithdraw()`, `baavesWrapATokenToStataToken()`, and `baavesUnwrapStataTokenToAToken()`.

### StataTokenNotFound (BALP1)

**Parameters:** None

**Description:** Raised when the configured StataTokenFactory returns the zero address instead of a wrapper for the requested reserve asset.

**Error Signature:** `StataTokenNotFound()`

**Raised by:**

* [BeneficiaryAaveV3SupplyPlugin.\_getStataToken()](https://docs.cryptolegacy.app/documentation/functions-reference#_getstatatoken-balp1)

**Notes / Edge cases:** The error is raised directly inside `_getStataToken(asset)` and then bubbles into `baavesWrapATokenToStataToken()`, `baavesUnwrapStataTokenToAToken()`, `baavesDepositToStataToken()`, and `baavesRedeemFromStataToken()`.

## BeneficiaryLidoStakingPlugin (BLSP1)

### ZeroStEthAmount (BLSP1)

**Parameters:** None

**Description:** Raised when a stETH wrapping request is submitted with a zero stETH amount.

**Error Signature:** `ZeroStEthAmount()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoWrapStEthToWstEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidowrapstethtowsteth-blsp1)

**Notes / Edge cases:** None

### ZeroWethAmount (BLSP1)

**Parameters:** None

**Description:** Raised when a WETH-based Lido action is requested with a zero WETH amount.

**Error Signature:** `ZeroWethAmount()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoStakeWethToStEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidostakewethtosteth-blsp1)
* [BeneficiaryLidoStakingPlugin.blsLidoWrapWethToWstEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidowrapwethtowsteth-blsp1)

**Notes / Edge cases:** None

### ZeroWstEthAmount (BLSP1)

**Parameters:** None

**Description:** Raised when an unwrap request is submitted with a zero wstETH amount.

**Error Signature:** `ZeroWstEthAmount()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoUnwrapWstEthToStEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidounwrapwstethtosteth-blsp1)

**Notes / Edge cases:** None

### InsufficientStEth (BLSP1)

**Parameters:** None

**Description:** Raised when the plugin is asked to wrap more stETH than it currently holds.

**Error Signature:** `InsufficientStEth()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoWrapStEthToWstEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidowrapstethtowsteth-blsp1)

**Notes / Edge cases:** None

### InsufficientWstEth (BLSP1)

**Parameters:** None

**Description:** Raised when the plugin is asked to unwrap more wstETH than it currently holds.

**Error Signature:** `InsufficientWstEth()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoUnwrapWstEthToStEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidounwrapwstethtosteth-blsp1)

**Notes / Edge cases:** None

### LidoRequestIdsEmpty (BLSP1)

**Parameters:** None

**Description:** Raised when the Lido plugin has no pending request IDs to claim or when the request list being stored is unexpectedly empty.

**Error Signature:** `LidoRequestIdsEmpty()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoClaimWithdrawals()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidoclaimwithdrawals-blsp1)
* [BeneficiaryLidoStakingPlugin.blsLidoUnsafeClaimWithdrawals()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidounsafeclaimwithdrawals-blsp1)
* [BeneficiaryLidoStakingPlugin.\_storeLidoRequestIds()](https://docs.cryptolegacy.app/documentation/functions-reference#_storelidorequestids-blsp1)

**Notes / Edge cases:** `blsLidoClaimWithdrawals()` and `blsLidoUnsafeClaimWithdrawals()` raise this error directly when no cached request IDs exist. The two request functions surface the same error transitively via `_storeLidoRequestIds(requestIds)` when the withdrawal queue unexpectedly returns an empty list. `blsLidoAbandonMigration()` does not raise this error.

### WethUnwrapAmountMismatch (BLSP1)

**Parameters:** None

**Description:** Raised when the ETH balance delta after `WethUnwrap.unwrap_weth()` does not equal the requested WETH amount.

**Error Signature:** `WethUnwrapAmountMismatch()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoStakeWethToStEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidostakewethtosteth-blsp1)
* [BeneficiaryLidoStakingPlugin.blsLidoWrapWethToWstEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidowrapwethtowsteth-blsp1)

**Notes / Edge cases:** None

### WstEthWrapFailed (BLSP1)

**Parameters:** None

**Description:** Raised when the low-level call that wraps ETH into wstETH returns `false`.

**Error Signature:** `WstEthWrapFailed()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoWrapWethToWstEth()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidowrapwethtowsteth-blsp1)

**Notes / Edge cases:** None

### EmptyWithdrawalAmounts (BLSP1)

**Parameters:** None

**Description:** Raised when a withdrawal-request action is submitted with an empty amounts array.

**Error Signature:** `EmptyWithdrawalAmounts()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoRequestStEthWithdrawal()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidorequeststethwithdrawal-blsp1)
* [BeneficiaryLidoStakingPlugin.blsLidoRequestWstEthWithdrawal()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidorequestwstethwithdrawal-blsp1)

**Notes / Edge cases:** None

### PendingMigrationActive (BLSP1)

**Parameters:** None

**Description:** Raised when the emergency unsafe-claim path is attempted while the fair two-step migration is still active.

**Error Signature:** `PendingMigrationActive()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.blsLidoUnsafeClaimWithdrawals()](https://docs.cryptolegacy.app/documentation/functions-reference#blslidounsafeclaimwithdrawals-blsp1)

**Notes / Edge cases:** None

### BeneficiarySwitchGuardAlreadyActive (BLSP1)

**Parameters:** None

**Description:** Raised when the plugin tries to activate the beneficiary-switch guard while it is already active.

**Error Signature:** `BeneficiarySwitchGuardAlreadyActive()`

**Raised by:**

* [BeneficiaryLidoStakingPlugin.\_activateBeneficiarySwitchGuard()](https://docs.cryptolegacy.app/documentation/functions-reference#_activatebeneficiaryswitchguard-blsp1)

**Notes / Edge cases:** The error is raised directly by `_activateBeneficiarySwitchGuard(cls)` and bubbles into `blsLidoRequestStEthWithdrawal()` and `blsLidoRequestWstEthWithdrawal()`.

## BeneficiaryPluginAddRights (BPAR1)

**No errors in this contract/library.**

## BeneficiaryUniswapV4SwapPlugin (BU4SP1)

### ZeroAmount (BU4SP1)

**Parameters:** None

**Description:** Raised when a Uniswap V4 swap request is submitted with a zero input amount.

**Error Signature:** `ZeroAmount()`

**Raised by:**

* [BeneficiaryUniswapV4SwapPlugin.bunisSwapExactInputSingle()](https://docs.cryptolegacy.app/documentation/functions-reference#bunisswapexactinputsingle-bu4sp1)
* [BeneficiaryUniswapV4SwapPlugin.bunisSwapExactInput()](https://docs.cryptolegacy.app/documentation/functions-reference#bunisswapexactinput-bu4sp1)

**Notes / Edge cases:** None

### EmptyPath (BU4SP1)

**Parameters:** None

**Description:** Raised when the multi-hop exact-input swap is called with an empty route.

**Error Signature:** `EmptyPath()`

**Raised by:**

* [BeneficiaryUniswapV4SwapPlugin.bunisSwapExactInput()](https://docs.cryptolegacy.app/documentation/functions-reference#bunisswapexactinput-bu4sp1)

**Notes / Edge cases:** None

## CryptoLegacyBasePlugin (CLBP1)

**No errors in this contract/library.**

## LegacyRecoveryPlugin (LRP1)

**No errors in this contract/library.**

## LensPlugin (LP1)

**No errors in this contract/library.**

## NftLegacyPlugin (NLP1)

**No errors in this contract/library.**

## ReceiveEthPlugin (REP1)

### NoEthToWrap (REP1)

**Parameters:** None

**Description:** Raised when `wrapEthToWeth()` is called while the plugin holds no ETH balance to convert into WETH.

**Error Signature:** `NoEthToWrap()`

**Raised by:**

* [ReceiveEthPlugin.wrapEthToWeth()](https://docs.cryptolegacy.app/documentation/functions-reference#wrapethtoweth-rep1)

**Notes / Edge cases:** Triggered before any WETH deposit or distribution-state update is attempted.

## TrustedGuardiansPlugin (TGP1)

**No errors in this contract/library.**

## UpdateRolePlugin (URP1)

**No errors in this contract/library.**

## Parameter Types

| Type      | Description                |
| --------- | -------------------------- |
| `address` | EOA or contract address    |
| `bytes`   | Dynamic byte array         |
| `bytes4`  | 4-byte selector            |
| `bytes32` | Fixed-length 32-byte value |
| `uint8`   | Unsigned 8-bit integer     |
| `uint64`  | Unsigned 64-bit integer    |
| `uint256` | Unsigned 256-bit integer   |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cryptolegacy.app/documentation/errors-reference.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
