IPrecompile is the base Solidity interface that every Maroo precompile (IOkrw, IPcl, IEas, IAgent, IPrivacy) extends. It declares three families of typed errors that any of those precompiles may revert with: input / encoding errors (InvalidAddress, InvalidAmount, InvalidNumberOfArgs, UnknownMethod, QueryFailed, MsgServerFailed, EventEmitFailed, ABISetupFailed, RequesterIsNotMsgSender, InvalidHeight, InvalidPubkey, InvalidPubkeySize, InvalidPageRequest), stock SDK error mappings (SDKUnauthorized, SDKInsufficientFunds, SDKInvalidAddress, SDKInvalidCoins, SDKInvalidRequest, SDKInvalidType, SDKNotFound, UnmappedCosmosError), and transaction-level rejection errors (InsufficientFee, NonceTooLow, NonceGap, IntrinsicGasTooLow, FloorDataGasTooLow, TipAboveFeeCap, FeeCapTooHigh, TipTooHigh, GasPriceTooLow, GasLimitExceeded, InvalidSender, ChainIdMismatch). Because they are declared once and inherited, an ABI fragment for these errors decodes correctly against any Maroo precompile.