{
  "contractName": "MandateRegistryV3",
  "sourceName": "contracts/mandate/MandateRegistryV3.sol",
  "compilerVersion": "0.8.24",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_identityRegistry",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_identityRegistryCodehash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        }
      ],
      "name": "ActionNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "AlreadyRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BadChain",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BadExecutionBinding",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BadNonce",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BadSignature",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "BadSigner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        }
      ],
      "name": "ContractNotAllowed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Expired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "InvalidExecutionAdapter",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidIdentityRegistry",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidOperatorIdentity",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidPrincipalIdentity",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidScope",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSignatureLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSignatureS",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidSignatureV",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidTimeWindow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "LegacyConsumeDisabled",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "principal",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "nonce",
          "type": "uint96"
        },
        {
          "internalType": "bytes32",
          "name": "existingMandateHash",
          "type": "bytes32"
        }
      ],
      "name": "NonceAlreadyUsed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotOwner",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotPrincipal",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotRegistered",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotYetActive",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "expected",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "provided",
          "type": "address"
        }
      ],
      "name": "PrincipalMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "RateLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Revoked",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        }
      ],
      "name": "SelectorNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "requested",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "remaining",
          "type": "uint256"
        }
      ],
      "name": "SpendCapExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "TooManyAllowedActions",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "TooManyAllowedContracts",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "TooManyAllowedSelectors",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "provided",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "maximum",
          "type": "uint256"
        }
      ],
      "name": "TooManyProhibitedActions",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnauthorizedCaller",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "UnauthorizedModule",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnsupportedExecutionAsset",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "UnsupportedProtocolVersion",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "ZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "MandateConsumedV3",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "resource",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "callDataHash",
          "type": "bytes32"
        }
      ],
      "name": "MandateExecutionConsumedV3",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "principal",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "notBefore",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "notAfter",
          "type": "uint64"
        }
      ],
      "name": "MandateRegisteredV3",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "by",
          "type": "address"
        }
      ],
      "name": "MandateRevokedV3",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "module",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "updatedBy",
          "type": "address"
        }
      ],
      "name": "ModuleAuthorizationUpdatedV3",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "EXECUTION_DOMAIN",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GOVERNANCE_POLICY_MODULE_ID",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MANDATE_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_ALLOWED_ACTIONS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_ALLOWED_CONTRACTS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_ALLOWED_SELECTORS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_PROHIBITED_ACTIONS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROTOCOL_VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        }
      ],
      "name": "allowedModules",
      "outputs": [
        {
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "identityRegistryChainId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "identityRegistry",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "principalAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "principal",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "operatorAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "beneficiary",
              "type": "address"
            },
            {
              "internalType": "bytes32[]",
              "name": "allowedActions",
              "type": "bytes32[]"
            },
            {
              "internalType": "bytes32[]",
              "name": "prohibitedActions",
              "type": "bytes32[]"
            },
            {
              "internalType": "address[]",
              "name": "allowedContracts",
              "type": "address[]"
            },
            {
              "internalType": "bytes4[]",
              "name": "allowedSelectors",
              "type": "bytes4[]"
            },
            {
              "internalType": "address",
              "name": "spendAsset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "spendCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rateLimitPerHour",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "evidencePolicyId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "disputePolicyId",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "notBefore",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "notAfter",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "nonce",
              "type": "uint96"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "protocolVersion",
              "type": "string"
            }
          ],
          "internalType": "struct MandateRegistryV3.Mandate",
          "name": "",
          "type": "tuple"
        },
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "",
          "type": "bytes4"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "consume",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "encodedMandate",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "action",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "selector",
          "type": "bytes4"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "resource",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "domain",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "callDataHash",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "consumeExecution",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "identityRegistryChainId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "identityRegistry",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "principalAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "principal",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "operatorAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "beneficiary",
              "type": "address"
            },
            {
              "internalType": "bytes32[]",
              "name": "allowedActions",
              "type": "bytes32[]"
            },
            {
              "internalType": "bytes32[]",
              "name": "prohibitedActions",
              "type": "bytes32[]"
            },
            {
              "internalType": "address[]",
              "name": "allowedContracts",
              "type": "address[]"
            },
            {
              "internalType": "bytes4[]",
              "name": "allowedSelectors",
              "type": "bytes4[]"
            },
            {
              "internalType": "address",
              "name": "spendAsset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "spendCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rateLimitPerHour",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "evidencePolicyId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "disputePolicyId",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "notBefore",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "notAfter",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "nonce",
              "type": "uint96"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "protocolVersion",
              "type": "string"
            }
          ],
          "internalType": "struct MandateRegistryV3.Mandate",
          "name": "m",
          "type": "tuple"
        }
      ],
      "name": "hashMandate",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "identityRegistry",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "identityRegistryCodehash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        }
      ],
      "name": "isActive",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "principal",
          "type": "address"
        },
        {
          "internalType": "uint96",
          "name": "nonce",
          "type": "uint96"
        }
      ],
      "name": "mandateForNonce",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "identityRegistryChainId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "identityRegistry",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "principalAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "principal",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "operatorAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "beneficiary",
              "type": "address"
            },
            {
              "internalType": "bytes32[]",
              "name": "allowedActions",
              "type": "bytes32[]"
            },
            {
              "internalType": "bytes32[]",
              "name": "prohibitedActions",
              "type": "bytes32[]"
            },
            {
              "internalType": "address[]",
              "name": "allowedContracts",
              "type": "address[]"
            },
            {
              "internalType": "bytes4[]",
              "name": "allowedSelectors",
              "type": "bytes4[]"
            },
            {
              "internalType": "address",
              "name": "spendAsset",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "spendCap",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "rateLimitPerHour",
              "type": "uint256"
            },
            {
              "internalType": "bytes32",
              "name": "evidencePolicyId",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "disputePolicyId",
              "type": "bytes32"
            },
            {
              "internalType": "uint64",
              "name": "notBefore",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "notAfter",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "nonce",
              "type": "uint96"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "protocolVersion",
              "type": "string"
            }
          ],
          "internalType": "struct MandateRegistryV3.Mandate",
          "name": "m",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "principalSig",
          "type": "bytes"
        }
      ],
      "name": "registerMandate",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requiredExecutionAdapterCodehash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "assertedPrincipal",
          "type": "address"
        }
      ],
      "name": "revokeMandate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        }
      ],
      "name": "revokeMandate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "module",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "allowed",
          "type": "bool"
        }
      ],
      "name": "setModuleAuthorization",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "mandateHash",
          "type": "bytes32"
        }
      ],
      "name": "state",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bool",
              "name": "registered",
              "type": "bool"
            },
            {
              "internalType": "bool",
              "name": "revoked",
              "type": "bool"
            },
            {
              "internalType": "uint64",
              "name": "registeredAt",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "notBefore",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "notAfter",
              "type": "uint64"
            },
            {
              "internalType": "uint96",
              "name": "nonce",
              "type": "uint96"
            },
            {
              "internalType": "uint256",
              "name": "spentSoFar",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "chainId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "identityRegistryChainId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "principalAgentId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "operatorAgentId",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "principal",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "operator",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "beneficiary",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "identityRegistry",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "protocolVersionHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct MandateRegistryV3.MandateState",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_identityRegistry\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_identityRegistryCodehash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"action\",\"type\":\"bytes32\"}],\"name\":\"ActionNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadChain\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadExecutionBinding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"ContractNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Expired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"InvalidExecutionAdapter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidIdentityRegistry\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidOperatorIdentity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidPrincipalIdentity\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidScope\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTimeWindow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LegacyConsumeDisabled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"bytes32\",\"name\":\"existingMandateHash\",\"type\":\"bytes32\"}],\"name\":\"NonceAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPrincipal\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotYetActive\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"expected\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"provided\",\"type\":\"address\"}],\"name\":\"PrincipalMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"RateLimitExceeded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Revoked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"}],\"name\":\"SelectorNotAllowed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"requested\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remaining\",\"type\":\"uint256\"}],\"name\":\"SpendCapExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TooManyAllowedActions\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TooManyAllowedContracts\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TooManyAllowedSelectors\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"provided\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximum\",\"type\":\"uint256\"}],\"name\":\"TooManyProhibitedActions\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"UnauthorizedModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedExecutionAsset\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedProtocolVersion\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"action\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"MandateConsumedV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"action\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resource\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"callDataHash\",\"type\":\"bytes32\"}],\"name\":\"MandateExecutionConsumedV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"notBefore\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"notAfter\",\"type\":\"uint64\"}],\"name\":\"MandateRegisteredV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"}],\"name\":\"MandateRevokedV3\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"updatedBy\",\"type\":\"address\"}],\"name\":\"ModuleAuthorizationUpdatedV3\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"EXECUTION_DOMAIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GOVERNANCE_POLICY_MODULE_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MANDATE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_ALLOWED_ACTIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_ALLOWED_CONTRACTS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_ALLOWED_SELECTORS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_PROHIBITED_ACTIONS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"}],\"name\":\"allowedModules\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"identityRegistryChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"identityRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"principalAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"operatorAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"allowedActions\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"prohibitedActions\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"allowedContracts\",\"type\":\"address[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"allowedSelectors\",\"type\":\"bytes4[]\"},{\"internalType\":\"address\",\"name\":\"spendAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"spendCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rateLimitPerHour\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidencePolicyId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"disputePolicyId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"notBefore\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"notAfter\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocolVersion\",\"type\":\"string\"}],\"internalType\":\"struct MandateRegistryV3.Mandate\",\"name\":\"\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"consume\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedMandate\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"action\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"selector\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resource\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"domain\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"callDataHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"consumeExecution\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"identityRegistryChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"identityRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"principalAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"operatorAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"allowedActions\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"prohibitedActions\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"allowedContracts\",\"type\":\"address[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"allowedSelectors\",\"type\":\"bytes4[]\"},{\"internalType\":\"address\",\"name\":\"spendAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"spendCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rateLimitPerHour\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidencePolicyId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"disputePolicyId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"notBefore\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"notAfter\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocolVersion\",\"type\":\"string\"}],\"internalType\":\"struct MandateRegistryV3.Mandate\",\"name\":\"m\",\"type\":\"tuple\"}],\"name\":\"hashMandate\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identityRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identityRegistryCodehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"isActive\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"}],\"name\":\"mandateForNonce\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"identityRegistryChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"identityRegistry\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"principalAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"operatorAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"bytes32[]\",\"name\":\"allowedActions\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"prohibitedActions\",\"type\":\"bytes32[]\"},{\"internalType\":\"address[]\",\"name\":\"allowedContracts\",\"type\":\"address[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"allowedSelectors\",\"type\":\"bytes4[]\"},{\"internalType\":\"address\",\"name\":\"spendAsset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"spendCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"rateLimitPerHour\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"evidencePolicyId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"disputePolicyId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"notBefore\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"notAfter\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"protocolVersion\",\"type\":\"string\"}],\"internalType\":\"struct MandateRegistryV3.Mandate\",\"name\":\"m\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"principalSig\",\"type\":\"bytes\"}],\"name\":\"registerMandate\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"requiredExecutionAdapterCodehash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"assertedPrincipal\",\"type\":\"address\"}],\"name\":\"revokeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"revokeMandate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"module\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"allowed\",\"type\":\"bool\"}],\"name\":\"setModuleAuthorization\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"mandateHash\",\"type\":\"bytes32\"}],\"name\":\"state\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"registered\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"revoked\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"registeredAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"notBefore\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"notAfter\",\"type\":\"uint64\"},{\"internalType\":\"uint96\",\"name\":\"nonce\",\"type\":\"uint96\"},{\"internalType\":\"uint256\",\"name\":\"spentSoFar\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identityRegistryChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"principalAgentId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"operatorAgentId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"principal\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"beneficiary\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"identityRegistry\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"protocolVersionHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct MandateRegistryV3.MandateState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"A mandate's signed data is immutable. Registration snapshots the security-critical      identity and authorization metadata so revoke and consume never trust user-supplied      values to identify the principal or operator.\",\"kind\":\"dev\",\"methods\":{\"consume((uint256,address,uint256,address,uint256,address,address,bytes32[],bytes32[],address[],bytes4[],address,uint256,uint256,bytes32,bytes32,uint64,uint64,uint96,uint256,string),bytes32,address,bytes4,uint256,address)\":{\"details\":\"The module allowlist blocks arbitrary direct calls that could otherwise grief-consume a      valid mandate. The canonical adapter binds the authenticated operator to immutable      registered state before invoking the downstream call.\"},\"registerMandate((uint256,address,uint256,address,uint256,address,address,bytes32[],bytes32[],address[],bytes4[],address,uint256,uint256,bytes32,bytes32,uint64,uint64,uint96,uint256,string),bytes)\":{\"details\":\"Anyone may submit a valid signature. Nonces are consumed at registration, not per use,      because a mandate may legitimately authorize multiple actions until it expires or caps.\"},\"revokeMandate(bytes32,address)\":{\"details\":\"The asserted principal is checked against immutable registered state; it is never used      for authorization. New integrations should call `revokeMandate(bytes32)`.\"}},\"title\":\"MandateRegistryV3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"allowedModules(address)\":{\"notice\":\"Only owner-approved V3 modules may consume mandates.\"},\"consume((uint256,address,uint256,address,uint256,address,address,bytes32[],bytes32[],address[],bytes4[],address,uint256,uint256,bytes32,bytes32,uint64,uint64,uint96,uint256,string),bytes32,address,bytes4,uint256,address)\":{\"notice\":\"Consume a mandate from an owner-authorized V3 module.\"},\"consumeExecution(bytes,bytes32,address,bytes4,uint256,address,bytes32,bytes32,bytes32,uint256)\":{\"notice\":\"Consume from the canonical adapter after it commits to the exact downstream target, selector, calldata, native value, resource and domain.\"},\"registerMandate((uint256,address,uint256,address,uint256,address,address,bytes32[],bytes32[],address[],bytes4[],address,uint256,uint256,bytes32,bytes32,uint64,uint64,uint96,uint256,string),bytes)\":{\"notice\":\"Principal (or their ERC-1271 wallet) signs an identity-bound mandate.\"},\"revokeMandate(bytes32)\":{\"notice\":\"Revoke a mandate as its snapshotted principal or registry owner.\"},\"revokeMandate(bytes32,address)\":{\"notice\":\"Compatibility overload for the pre-hardening API.\"},\"setModuleAuthorization(address,bool)\":{\"notice\":\"Authorize or remove a trusted V3 module that can consume mandates.\"}},\"notice\":\"Versioned, identity-bound mandates for delegated V3 actions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mandate/MandateRegistryV3.sol\":\"MandateRegistryV3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"contracts/identity/IERC8004IdentityRegistry.sol\":{\"keccak256\":\"0x4f2ea0d26e604767244cbb5218b9917d9d3b966f7563a32fe18e113472d1904b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://70beec2cff1b478ddddf312eff6f1352f0fa20f4cbf808d1335d93b305f5b696\",\"dweb:/ipfs/QmP3nrHUEFDGQc5pc1f3Ezd4fxk79k8X83FcNuKVri6UhJ\"]},\"contracts/mandate/IMandateExecutionAdapterV3.sol\":{\"keccak256\":\"0xa1d95a30cb609a2cce6e31e1a03e87390ad8106d59da67a9752f0c25e366b04e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb05eb7082f69215b408f6873acda103db62208d578eb5cdc385885d4d456dd0\",\"dweb:/ipfs/QmSsoetxJYiUkP3Y5yE9XxdfqsFWA3JX5bTYCo2EKjsCM5\"]},\"contracts/mandate/MandateExecutionAdapterV3.sol\":{\"keccak256\":\"0x65ee163fe4223e09d7e923c1c1d6360f6f65b0f6ea80ecd34c9014cc1ec4d96e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3d457647c625fdd8213009b8f88b4e8fd2ea404d880da79053eefd4fb328d430\",\"dweb:/ipfs/QmfSZ315RfaJauNDfjiy8mQ8CxaFqvtoigSkvz5CrP7bkK\"]},\"contracts/mandate/MandateRegistryV3.sol\":{\"keccak256\":\"0x4d6310b160d3d7a5f2c530fb326a6c6bf9077101b19e26b79507dff05cfee237\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b06f8e3a4583ed8c124b0689b5589012ef201d8dfeb35fb91c4fa666403038df\",\"dweb:/ipfs/QmZKeEKW3y7b2nCgssRsbcmq2ixZuEPeQFPDT7e6tqQKcb\"]},\"contracts/signatures/EIP712BaseV3.sol\":{\"keccak256\":\"0x0b3bc4dc6019ac1161cce0e5837ec4e26a5c41166c761c8c05d87ba265c3eef2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3ae150fd1e5f83202881cd5d7090b2f1b87cebe5a2fb80ccd2d730f4c0cb7de\",\"dweb:/ipfs/QmQ85m5FxMLHkCo9yHFup8qczmkDEgoXQAdcQPzPm6kW4b\"]},\"contracts/signatures/SignatureVerifierV3.sol\":{\"keccak256\":\"0x4585ebc32b59aea191d7423dad290843a05687882d175e0d5ab594c047a5f1ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://916de3a92bf0c10b138a3f541726f94568dfd621dc8ad179d1c5338bc3b2e3d4\",\"dweb:/ipfs/QmeguMdXddrmLVPVBSgHLcVyX8PS72GAG9zbNAcX4K8ipT\"]}},\"version\":1}",
  "deployedBytecode": {
    "object": "[encoded data, 21864 characters]",
    "immutableReferences": {
      "426": [
        {
          "length": 32,
          "start": 3289
        },
        {
          "length": 32,
          "start": 9952
        }
      ],
      "428": [
        {
          "length": 32,
          "start": 6190
        },
        {
          "length": 32,
          "start": 6692
        }
      ],
      "430": [
        {
          "length": 32,
          "start": 667
        },
        {
          "length": 32,
          "start": 6135
        }
      ],
      "2041": [
        {
          "length": 32,
          "start": 10383
        }
      ]
    }
  }
}
