[
  {
    "inputs": [
      { "internalType": "contract IAvoRegistry", "name": "avoRegistry_", "type": "address" },
      { "internalType": "address", "name": "avoForwarder_", "type": "address" },
      { "internalType": "contract IAvoSignersList", "name": "avoSignersList_", "type": "address" },
      { "internalType": "contract IAvoConfigV1", "name": "avoConfigV1_", "type": "address" },
      { "internalType": "contract IAvocadoMultisigV1Secondary", "name": "secondary_", "type": "address" }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "fee", "type": "uint256" }],
    "name": "AvocadoMultisig__InsufficientBalance",
    "type": "error"
  },
  { "inputs": [], "name": "AvocadoMultisig__InsufficientGasSent", "type": "error" },
  { "inputs": [], "name": "AvocadoMultisig__InvalidEIP1271Signature", "type": "error" },
  { "inputs": [], "name": "AvocadoMultisig__InvalidParams", "type": "error" },
  { "inputs": [], "name": "AvocadoMultisig__InvalidSignature", "type": "error" },
  { "inputs": [], "name": "AvocadoMultisig__InvalidTiming", "type": "error" },
  {
    "inputs": [
      { "internalType": "uint256", "name": "fee", "type": "uint256" },
      { "internalType": "uint256", "name": "maxFee", "type": "uint256" }
    ],
    "name": "AvocadoMultisig__MaxFee",
    "type": "error"
  },
  { "inputs": [], "name": "AvocadoMultisig__ToHexDigit", "type": "error" },
  { "inputs": [], "name": "AvocadoMultisig__Unauthorized", "type": "error" },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "uint256", "name": "occupiedAvoNonce", "type": "uint256" }],
    "name": "AvoNonceOccupied",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "source", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "caller", "type": "address" },
      { "indexed": false, "internalType": "address[]", "name": "signers", "type": "address[]" },
      { "indexed": false, "internalType": "bytes", "name": "metadata", "type": "bytes" }
    ],
    "name": "CastExecuted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      { "indexed": true, "internalType": "address", "name": "source", "type": "address" },
      { "indexed": true, "internalType": "address", "name": "caller", "type": "address" },
      { "indexed": false, "internalType": "address[]", "name": "signers", "type": "address[]" },
      { "indexed": false, "internalType": "string", "name": "reason", "type": "string" },
      { "indexed": false, "internalType": "bytes", "name": "metadata", "type": "bytes" }
    ],
    "name": "CastFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "uint256", "name": "fee", "type": "uint256" }],
    "name": "FeePaid",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "uint256", "name": "fee", "type": "uint256" }],
    "name": "FeePayFailed",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" }],
    "name": "Initialized",
    "type": "event"
  },
  { "anonymous": false, "inputs": [], "name": "ListSyncFailed", "type": "event" },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "bytes32", "name": "occupiedNonSequentialNonce", "type": "bytes32" }],
    "name": "NonSequentialNonceOccupied",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "bytes32", "name": "messageHash", "type": "bytes32" }],
    "name": "RemoveSignedMessage",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "uint8", "name": "requiredSigners", "type": "uint8" }],
    "name": "RequiredSignersSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "bytes32", "name": "messageHash", "type": "bytes32" }],
    "name": "SignedMessage",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "address", "name": "signer", "type": "address" }],
    "name": "SignerAdded",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "address", "name": "signer", "type": "address" }],
    "name": "SignerRemoved",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [{ "indexed": true, "internalType": "address", "name": "newImplementation", "type": "address" }],
    "name": "Upgraded",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "ACTION_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "AUTHORIZED_FEE_COLLECTOR",
    "outputs": [{ "internalType": "address payable", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "AUTHORIZED_MAX_FEE",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "AUTHORIZED_MIN_FEE",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_AUTHORIZED_PARAMS_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_AUTHORIZED_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_CHAIN_AGNOSTIC_PARAMS_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_CHAIN_AGNOSTIC_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_FORWARD_PARAMS_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_PARAMS_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CAST_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_CHAIN_ID",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR_NAME",
    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR_VERSION",
    "outputs": [{ "internalType": "string", "name": "", "type": "string" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "EIP1271_TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_SIGNERS_COUNT",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TYPE_HASH",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "fromImplementation_", "type": "address" },
      { "internalType": "bytes", "name": "data_", "type": "bytes" }
    ],
    "name": "_afterUpgradeHook",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          { "internalType": "address", "name": "target", "type": "address" },
          { "internalType": "bytes", "name": "data", "type": "bytes" },
          { "internalType": "uint256", "name": "value", "type": "uint256" },
          { "internalType": "uint256", "name": "operation", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.Action[]",
        "name": "actions_",
        "type": "tuple[]"
      },
      { "internalType": "uint256", "name": "id_", "type": "uint256" }
    ],
    "name": "_callTargets",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address[]", "name": "addSigners_", "type": "address[]" },
      { "internalType": "uint8", "name": "requiredSigners_", "type": "uint8" }
    ],
    "name": "addSigners",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "avoForwarder",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "avoNonce",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "avoRegistry",
    "outputs": [{ "internalType": "contract IAvoRegistry", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "avoSecondary",
    "outputs": [{ "internalType": "contract IAvocadoMultisigV1Secondary", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "avoSignersList",
    "outputs": [{ "internalType": "contract IAvoSignersList", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "gas", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
          { "internalType": "uint256", "name": "value", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
        "name": "forwardParams_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      }
    ],
    "name": "cast",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "maxFee", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastAuthorizedParams",
        "name": "authorizedParams_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      }
    ],
    "name": "castAuthorized",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  { "internalType": "address", "name": "target", "type": "address" },
                  { "internalType": "bytes", "name": "data", "type": "bytes" },
                  { "internalType": "uint256", "name": "value", "type": "uint256" },
                  { "internalType": "uint256", "name": "operation", "type": "uint256" }
                ],
                "internalType": "struct AvocadoMultisigStructs.Action[]",
                "name": "actions",
                "type": "tuple[]"
              },
              { "internalType": "uint256", "name": "id", "type": "uint256" },
              { "internalType": "int256", "name": "avoNonce", "type": "int256" },
              { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
              { "internalType": "address", "name": "source", "type": "address" },
              { "internalType": "bytes", "name": "metadata", "type": "bytes" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastParams",
            "name": "params",
            "type": "tuple"
          },
          {
            "components": [
              { "internalType": "uint256", "name": "gas", "type": "uint256" },
              { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
              { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
              { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
            "name": "forwardParams",
            "type": "tuple"
          },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastChainAgnosticParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      },
      {
        "components": [
          { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.ChainAgnosticHash[]",
        "name": "chainAgnosticHashes_",
        "type": "tuple[]"
      }
    ],
    "name": "castChainAgnostic",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "domainSeparatorV4",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "domainSeparatorV4ChainAgnostic",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "gas", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
          { "internalType": "uint256", "name": "value", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
        "name": "forwardParams_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      }
    ],
    "name": "estimateCast",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  { "internalType": "address", "name": "target", "type": "address" },
                  { "internalType": "bytes", "name": "data", "type": "bytes" },
                  { "internalType": "uint256", "name": "value", "type": "uint256" },
                  { "internalType": "uint256", "name": "operation", "type": "uint256" }
                ],
                "internalType": "struct AvocadoMultisigStructs.Action[]",
                "name": "actions",
                "type": "tuple[]"
              },
              { "internalType": "uint256", "name": "id", "type": "uint256" },
              { "internalType": "int256", "name": "avoNonce", "type": "int256" },
              { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
              { "internalType": "address", "name": "source", "type": "address" },
              { "internalType": "bytes", "name": "metadata", "type": "bytes" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastParams",
            "name": "params",
            "type": "tuple"
          },
          {
            "components": [
              { "internalType": "uint256", "name": "gas", "type": "uint256" },
              { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
              { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
              { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
            "name": "forwardParams",
            "type": "tuple"
          },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastChainAgnosticParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      },
      {
        "components": [
          { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.ChainAgnosticHash[]",
        "name": "chainAgnosticHashes_",
        "type": "tuple[]"
      }
    ],
    "name": "estimateCastChainAgnostic",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address[]", "name": "", "type": "address[]" },
      { "internalType": "uint256[]", "name": "", "type": "uint256[]" },
      { "internalType": "uint256[]", "name": "", "type": "uint256[]" },
      { "internalType": "address", "name": "initiator_", "type": "address" },
      { "internalType": "bytes", "name": "data_", "type": "bytes" }
    ],
    "name": "executeOperation",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  { "internalType": "address", "name": "target", "type": "address" },
                  { "internalType": "bytes", "name": "data", "type": "bytes" },
                  { "internalType": "uint256", "name": "value", "type": "uint256" },
                  { "internalType": "uint256", "name": "operation", "type": "uint256" }
                ],
                "internalType": "struct AvocadoMultisigStructs.Action[]",
                "name": "actions",
                "type": "tuple[]"
              },
              { "internalType": "uint256", "name": "id", "type": "uint256" },
              { "internalType": "int256", "name": "avoNonce", "type": "int256" },
              { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
              { "internalType": "address", "name": "source", "type": "address" },
              { "internalType": "bytes", "name": "metadata", "type": "bytes" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastParams",
            "name": "params",
            "type": "tuple"
          },
          {
            "components": [
              { "internalType": "uint256", "name": "gas", "type": "uint256" },
              { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
              { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
              { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
            "name": "forwardParams",
            "type": "tuple"
          },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastChainAgnosticParams[]",
        "name": "params_",
        "type": "tuple[]"
      }
    ],
    "name": "getChainAgnosticHashes",
    "outputs": [
      {
        "components": [
          { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.ChainAgnosticHash[]",
        "name": "chainAgnosticHashes_",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "gas", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
          { "internalType": "uint256", "name": "value", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
        "name": "forwardParams_",
        "type": "tuple"
      }
    ],
    "name": "getSigDigest",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "maxFee", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastAuthorizedParams",
        "name": "authorizedParams_",
        "type": "tuple"
      }
    ],
    "name": "getSigDigestAuthorized",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  { "internalType": "address", "name": "target", "type": "address" },
                  { "internalType": "bytes", "name": "data", "type": "bytes" },
                  { "internalType": "uint256", "name": "value", "type": "uint256" },
                  { "internalType": "uint256", "name": "operation", "type": "uint256" }
                ],
                "internalType": "struct AvocadoMultisigStructs.Action[]",
                "name": "actions",
                "type": "tuple[]"
              },
              { "internalType": "uint256", "name": "id", "type": "uint256" },
              { "internalType": "int256", "name": "avoNonce", "type": "int256" },
              { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
              { "internalType": "address", "name": "source", "type": "address" },
              { "internalType": "bytes", "name": "metadata", "type": "bytes" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastParams",
            "name": "params",
            "type": "tuple"
          },
          {
            "components": [
              { "internalType": "uint256", "name": "gas", "type": "uint256" },
              { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
              { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
              { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
            "name": "forwardParams",
            "type": "tuple"
          },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastChainAgnosticParams[]",
        "name": "params_",
        "type": "tuple[]"
      }
    ],
    "name": "getSigDigestChainAgnostic",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.ChainAgnosticHash[]",
        "name": "chainAgnosticHashes_",
        "type": "tuple[]"
      }
    ],
    "name": "getSigDigestChainAgnosticFromHashes",
    "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "index",
    "outputs": [{ "internalType": "uint32", "name": "", "type": "uint32" }],
    "stateMutability": "view",
    "type": "function"
  },
  { "inputs": [], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" },
  {
    "inputs": [{ "internalType": "address", "name": "signer_", "type": "address" }],
    "name": "isSigner",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
      { "internalType": "bytes", "name": "signature", "type": "bytes" }
    ],
    "name": "isValidSignature",
    "outputs": [{ "internalType": "bytes4", "name": "magicValue", "type": "bytes4" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
    "name": "nonSequentialNonces",
    "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "uint88[]", "name": "avoNonces_", "type": "uint88[]" }],
    "name": "occupyAvoNonces",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "bytes32[]", "name": "nonSequentialNonces_", "type": "bytes32[]" }],
    "name": "occupyNonSequentialNonces",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256[]", "name": "", "type": "uint256[]" },
      { "internalType": "uint256[]", "name": "", "type": "uint256[]" },
      { "internalType": "bytes", "name": "", "type": "bytes" }
    ],
    "name": "onERC1155BatchReceived",
    "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256", "name": "", "type": "uint256" },
      { "internalType": "uint256", "name": "", "type": "uint256" },
      { "internalType": "bytes", "name": "", "type": "bytes" }
    ],
    "name": "onERC1155Received",
    "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "address", "name": "", "type": "address" },
      { "internalType": "uint256", "name": "", "type": "uint256" },
      { "internalType": "bytes", "name": "", "type": "bytes" }
    ],
    "name": "onERC721Received",
    "outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "bytes32", "name": "message_", "type": "bytes32" }],
    "name": "removeSignedMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address[]", "name": "removeSigners_", "type": "address[]" },
      { "internalType": "uint8", "name": "requiredSigners_", "type": "uint8" }
    ],
    "name": "removeSigners",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "requiredSigners",
    "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "uint8", "name": "requiredSigners_", "type": "uint8" }],
    "name": "setRequiredSigners",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "bytes32", "name": "message_", "type": "bytes32" }],
    "name": "signMessage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "signers",
    "outputs": [{ "internalType": "address[]", "name": "signers_", "type": "address[]" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "signersCount",
    "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "gas", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
          { "internalType": "uint256", "name": "value", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
        "name": "forwardParams_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      }
    ],
    "name": "simulateCast",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  { "internalType": "address", "name": "target", "type": "address" },
                  { "internalType": "bytes", "name": "data", "type": "bytes" },
                  { "internalType": "uint256", "name": "value", "type": "uint256" },
                  { "internalType": "uint256", "name": "operation", "type": "uint256" }
                ],
                "internalType": "struct AvocadoMultisigStructs.Action[]",
                "name": "actions",
                "type": "tuple[]"
              },
              { "internalType": "uint256", "name": "id", "type": "uint256" },
              { "internalType": "int256", "name": "avoNonce", "type": "int256" },
              { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
              { "internalType": "address", "name": "source", "type": "address" },
              { "internalType": "bytes", "name": "metadata", "type": "bytes" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastParams",
            "name": "params",
            "type": "tuple"
          },
          {
            "components": [
              { "internalType": "uint256", "name": "gas", "type": "uint256" },
              { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
              { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
              { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
            "name": "forwardParams",
            "type": "tuple"
          },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastChainAgnosticParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      },
      {
        "components": [
          { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.ChainAgnosticHash[]",
        "name": "chainAgnosticHashes_",
        "type": "tuple[]"
      }
    ],
    "name": "simulateCastChainAgnostic",
    "outputs": [
      { "internalType": "bool", "name": "success_", "type": "bool" },
      { "internalType": "string", "name": "revertReason_", "type": "string" }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }],
    "name": "supportsInterface",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "avoImplementation_", "type": "address" },
      { "internalType": "bytes", "name": "afterUpgradeHookData_", "type": "bytes" }
    ],
    "name": "upgradeTo",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "gas", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
          { "internalType": "uint256", "name": "value", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
        "name": "forwardParams_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      }
    ],
    "name": "verify",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              { "internalType": "address", "name": "target", "type": "address" },
              { "internalType": "bytes", "name": "data", "type": "bytes" },
              { "internalType": "uint256", "name": "value", "type": "uint256" },
              { "internalType": "uint256", "name": "operation", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.Action[]",
            "name": "actions",
            "type": "tuple[]"
          },
          { "internalType": "uint256", "name": "id", "type": "uint256" },
          { "internalType": "int256", "name": "avoNonce", "type": "int256" },
          { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
          { "internalType": "address", "name": "source", "type": "address" },
          { "internalType": "bytes", "name": "metadata", "type": "bytes" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "uint256", "name": "maxFee", "type": "uint256" },
          { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
          { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
          { "internalType": "uint256", "name": "validUntil", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastAuthorizedParams",
        "name": "authorizedParams_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      }
    ],
    "name": "verifyAuthorized",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "components": [
              {
                "components": [
                  { "internalType": "address", "name": "target", "type": "address" },
                  { "internalType": "bytes", "name": "data", "type": "bytes" },
                  { "internalType": "uint256", "name": "value", "type": "uint256" },
                  { "internalType": "uint256", "name": "operation", "type": "uint256" }
                ],
                "internalType": "struct AvocadoMultisigStructs.Action[]",
                "name": "actions",
                "type": "tuple[]"
              },
              { "internalType": "uint256", "name": "id", "type": "uint256" },
              { "internalType": "int256", "name": "avoNonce", "type": "int256" },
              { "internalType": "bytes32", "name": "salt", "type": "bytes32" },
              { "internalType": "address", "name": "source", "type": "address" },
              { "internalType": "bytes", "name": "metadata", "type": "bytes" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastParams",
            "name": "params",
            "type": "tuple"
          },
          {
            "components": [
              { "internalType": "uint256", "name": "gas", "type": "uint256" },
              { "internalType": "uint256", "name": "gasPrice", "type": "uint256" },
              { "internalType": "uint256", "name": "validAfter", "type": "uint256" },
              { "internalType": "uint256", "name": "validUntil", "type": "uint256" },
              { "internalType": "uint256", "name": "value", "type": "uint256" }
            ],
            "internalType": "struct AvocadoMultisigStructs.CastForwardParams",
            "name": "forwardParams",
            "type": "tuple"
          },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.CastChainAgnosticParams",
        "name": "params_",
        "type": "tuple"
      },
      {
        "components": [
          { "internalType": "bytes", "name": "signature", "type": "bytes" },
          { "internalType": "address", "name": "signer", "type": "address" }
        ],
        "internalType": "struct AvocadoMultisigStructs.SignatureParams[]",
        "name": "signaturesParams_",
        "type": "tuple[]"
      },
      {
        "components": [
          { "internalType": "bytes32", "name": "hash", "type": "bytes32" },
          { "internalType": "uint256", "name": "chainId", "type": "uint256" }
        ],
        "internalType": "struct AvocadoMultisigStructs.ChainAgnosticHash[]",
        "name": "chainAgnosticHashes_",
        "type": "tuple[]"
      }
    ],
    "name": "verifyChainAgnostic",
    "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
    "stateMutability": "view",
    "type": "function"
  },
  { "stateMutability": "payable", "type": "receive" }
]
