{
  "address": "0x2849a5101d98e6015714b9Ff54Aa36cBaD512e50",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IOpsProxyFactory",
          "name": "_opsProxyFactory",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "execAddresses",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "fee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "feeToken",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "nonce1Balance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onCreateTask",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "opsProxyFactory",
      "outputs": [
        {
          "internalType": "contract IOpsProxyFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "taskId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "execData",
          "type": "bytes"
        }
      ],
      "name": "postExecCall",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        }
      ],
      "name": "preCancelTask",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_execAddress",
          "type": "address"
        }
      ],
      "name": "preCreateTask",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_taskCreator",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_execAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_execData",
          "type": "bytes"
        }
      ],
      "name": "preExecCall",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "execData",
          "type": "bytes"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "taskCreator",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum LibDataTypes.Module",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "taskModuleAddresses",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "timedTask",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "nextExec",
          "type": "uint128"
        },
        {
          "internalType": "uint128",
          "name": "interval",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
  "receipt": {
    "to": "0x0000000000000000000000000000000000008006",
    "from": "0xF1108379d71ff2A785899F4C36010f841F1Fea04",
    "contractAddress": "0x2849a5101d98e6015714b9Ff54Aa36cBaD512e50",
    "transactionIndex": 12,
    "gasUsed": "11212007",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "blockHash": "0xda19554d0a57cfcea7b1a24fe3ffdef7f7f2268f49db29df2b82a60d0ea5b731",
    "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
    "logs": [
      {
        "transactionIndex": 12,
        "blockNumber": 5925486,
        "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
        "address": "0x000000000000000000000000000000000000800A",
        "topics": [
          "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04",
          "0x0000000000000000000000000000000000000000000000000000000000008001"
        ],
        "data": "0x000000000000000000000000000000000000000000000000000f32e389b58700",
        "logIndex": 88,
        "blockHash": "0xda19554d0a57cfcea7b1a24fe3ffdef7f7f2268f49db29df2b82a60d0ea5b731"
      },
      {
        "transactionIndex": 12,
        "blockNumber": 5925486,
        "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
        "address": "0x0000000000000000000000000000000000008008",
        "topics": [
          "0x3a36e47291f4201faf137fab081d92295bce2d53be2c6ca68ba82c7faa9ce241",
          "0x000000000000000000000000000000000000000000000000000000000000800e",
          "0xa7fcb461a01d6f7fec7843aab194a7d79c66f5f59c8851cdbe9317ba82f4c719"
        ],
        "data": "[encoded data, 19458 characters]",
        "logIndex": 89,
        "blockHash": "0xda19554d0a57cfcea7b1a24fe3ffdef7f7f2268f49db29df2b82a60d0ea5b731"
      },
      {
        "transactionIndex": 12,
        "blockNumber": 5925486,
        "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
        "address": "0x0000000000000000000000000000000000008004",
        "topics": [
          "0xc94722ff13eacf53547c4741dab5228353a05938ffcdd5d4a2d533ae0e618287",
          "0x010001efd50f4ee7500bfd18b472f795da4c4a4c97818d1302b53f71cb3ec5eb",
          "0x0000000000000000000000000000000000000000000000000000000000000000"
        ],
        "data": "0x",
        "logIndex": 90,
        "blockHash": "0xda19554d0a57cfcea7b1a24fe3ffdef7f7f2268f49db29df2b82a60d0ea5b731"
      },
      {
        "transactionIndex": 12,
        "blockNumber": 5925486,
        "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
        "address": "0x0000000000000000000000000000000000008006",
        "topics": [
          "0x290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e5",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04",
          "0x010001efd50f4ee7500bfd18b472f795da4c4a4c97818d1302b53f71cb3ec5eb",
          "0x0000000000000000000000002849a5101d98e6015714b9ff54aa36cbad512e50"
        ],
        "data": "0x",
        "logIndex": 91,
        "blockHash": "0xda19554d0a57cfcea7b1a24fe3ffdef7f7f2268f49db29df2b82a60d0ea5b731"
      },
      {
        "transactionIndex": 12,
        "blockNumber": 5925486,
        "transactionHash": "0xd6f2a85940d5e0a3a73e8d64c2aaea9f31fecd0473f4003d60a8d49e3fa21bdf",
        "address": "0x000000000000000000000000000000000000800A",
        "topics": [
          "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
          "0x0000000000000000000000000000000000000000000000000000000000008001",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04"
        ],
        "data": "0x00000000000000000000000000000000000000000000000000053d92d6187580",
        "logIndex": 92,
        "blockHash": "0xda19554d0a57cfcea7b1a24fe3ffdef7f7f2268f49db29df2b82a60d0ea5b731"
      }
    ],
    "blockNumber": 5925486,
    "cumulativeGasUsed": "0",
    "status": 1,
    "byzantium": true
  },
  "args": ["0xB675ce934431e42Fd3daE03e3a385b7e24ae7257"],
  "numDeployments": 1,
  "solcInputHash": "a55a0720c0d0238808136c5effb03d4d",
  "metadata": {
    "optimizer_settings": "M3B3",
    "solc_metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IOpsProxyFactory\",\"name\":\"_opsProxyFactory\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"execAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"nonce1Balance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_taskCreator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onCreateTask\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"opsProxyFactory\",\"outputs\":[{\"internalType\":\"contract IOpsProxyFactory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"taskId\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"taskCreator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"execAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"execData\",\"type\":\"bytes\"}],\"name\":\"postExecCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_taskCreator\",\"type\":\"address\"}],\"name\":\"preCancelTask\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_taskCreator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_execAddress\",\"type\":\"address\"}],\"name\":\"preCreateTask\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_taskCreator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_execAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_execData\",\"type\":\"bytes\"}],\"name\":\"preExecCall\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"execData\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"taskCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LibDataTypes.Module\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"taskModuleAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"timedTask\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"nextExec\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"interval\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"onCreateTask(bytes32,address,address,bytes,bytes)\":{\"params\":{\"execAddress\":\"Address of contract that should be called.\",\"execData\":\"Execution data to be called with / function selector if execution data is yet to be determined.\",\"initModuleArg\":\"Encoded arguments for module if any.\",\"taskCreator\":\"The address which created the task.\",\"taskId\":\"Unique hash of the task created.\"}},\"postExecCall(bytes32,address,address,bytes)\":{\"params\":{\"execAddress\":\"Address of contract that should be called.\",\"execData\":\"Execution data to be called with / function selector if execution data is yet to be determined.\",\"taskCreator\":\"The address which created the task.\",\"taskId\":\"Unique hash of the task created.\"}},\"preCancelTask(bytes32,address)\":{\"details\":\"Modules can override taskCreator.\",\"params\":{\"taskCreator\":\"The address which created the task.\",\"taskId\":\"Unique hash of the task created.\"},\"returns\":{\"_0\":\"address Overriden or original taskCreator.\"}},\"preCreateTask(address,address)\":{\"details\":\"_taskCreator cannot create task to other user's proxy\",\"params\":{\"execAddress\":\"Address of contract that should be called.\",\"taskCreator\":\"The address which created the task.\"},\"returns\":{\"_0\":\"address Overriden or original taskCreator.\",\"_1\":\"address Overriden or original execAddress.\"}},\"preExecCall(bytes32,address,address,bytes)\":{\"details\":\"_execData is encoded with proxy's `executeCall` function unless _execAddress is OpsProxy which assumes that _execData is encoded with `executeCall` or `batchExecuteCall`.\",\"params\":{\"execAddress\":\"Address of contract that should be called.\",\"execData\":\"Execution data to be called with / function selector if execution data is yet to be determined.\",\"taskCreator\":\"The address which created the task.\",\"taskId\":\"Unique hash of the task created.\"},\"returns\":{\"_0\":\"address Overriden or original execution address.\",\"execData\":\"bytes Overriden or original execution data.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"onCreateTask(bytes32,address,address,bytes,bytes)\":{\"notice\":\"Initiates task module whenever `createTask` is being called.\"},\"postExecCall(bytes32,address,address,bytes)\":{\"notice\":\"Called during `exec` and after execAddress is called.\"},\"preCancelTask(bytes32,address)\":{\"notice\":\"Called before taskId is removed from _createdTasks[].\"},\"preCreateTask(address,address)\":{\"notice\":\"Called before generating taskId.\"},\"preExecCall(bytes32,address,address,bytes)\":{\"notice\":\"Called during `exec` and before execAddress is called.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/taskModules/ProxyModule.sol\":\"ProxyModule\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"contracts/AutomateStorage.sol\":{\"keccak256\":\"0xfd89c084cf9f5099605b648debf5f3757e442003b4c2895a53a53b4d06c8a800\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://693ebfd5c65667652320d599be31d20c5c641680bf6109d88de2a6aa9c87f6dd\",\"dweb:/ipfs/Qmc79DExaocrxTAWgYRLQC5FdWKxpqKrpyYTimiUF5uwjC\"]},\"contracts/interfaces/IOpsProxy.sol\":{\"keccak256\":\"0x1b6e349287dfeb2735da8d3f7ae0aa5865996f7dd58622773b449a76bcaf881a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f073bdcac5d5a558a26e67a4343aee6fc4d6ddf71883e233d17147f038840a32\",\"dweb:/ipfs/QmZjQQPokhx9es6o1fzgCxG8VtFRwZoy78PKSCnDXUnBez\"]},\"contracts/interfaces/IOpsProxyFactory.sol\":{\"keccak256\":\"0xf4852a06be6f35a0671cf951f455fb9a58320c0908914c3ab9e62f9d27affe2b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8cffeacd964bd883f8f7dd92ccb02c87b282e22c802aa1f69246c0f29c40a06b\",\"dweb:/ipfs/QmcFGkDVMv22PvxjEK7MQ8ZtxFfgBxBHe5CuQHPqAigUUu\"]},\"contracts/interfaces/ITaskModule.sol\":{\"keccak256\":\"0xd537257852c23ce7d0bc392b03aba1efd750be372d64a01edf1c726ef7c4274d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://279804efd2c93f8e5282947429deb438776b39f9f6426bb88b17206aa98df131\",\"dweb:/ipfs/QmWKTJ7xtrRENJPFZL4MzxiegB7h9cMPjqawggpYVk5sw9\"]},\"contracts/libraries/LibDataTypes.sol\":{\"keccak256\":\"0x5876a9713daf67a36768b25454b3317c015e46db2abf77820dee2845fac55ee0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://71cddf6e6739462876ec7a237e2865a9d74cb5e6062ad40e2de528eadd6d1f40\",\"dweb:/ipfs/QmUi4dDoD5WPvwzm1L3sHefDMjuDC1pZWcW5mh7bYihqqu\"]},\"contracts/taskModules/ProxyModule.sol\":{\"keccak256\":\"0xe681a040fb7054876217145013a02ba86e73aaf06ec69940a0a7ce80a9c6a657\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://886acab2ae36373e738f5d27afd6a15f5f4e05c440919b15410cc474d8860348\",\"dweb:/ipfs/QmT9186SHrFgognm7P7KybcXUEZ45QE6HnSRvJbnFBbwTL\"]},\"contracts/taskModules/TaskModuleBase.sol\":{\"keccak256\":\"0x231bcf0d6af7d2e0f96eb4eb83285fe0ea0d64d3aa937c6af29779cf653af695\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5d55f4944e8a91c9df605acf0c69c89d67d6302336ea46d2356bf101e038c56a\",\"dweb:/ipfs/QmShpsJtHNQjz8FLjsQDg9c6UrmwjqnhDaJea26HPUS5dz\"]}},\"version\":1}",
    "zk_version": "1.3.7"
  },
  "bytecode": "[encoded data, 31682 characters]",
  "deployedBytecode": "[encoded data, 31682 characters]",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "onCreateTask(bytes32,address,address,bytes,bytes)": {
        "params": {
          "execAddress": "Address of contract that should be called.",
          "execData": "Execution data to be called with / function selector if execution data is yet to be determined.",
          "initModuleArg": "Encoded arguments for module if any.",
          "taskCreator": "The address which created the task.",
          "taskId": "Unique hash of the task created."
        }
      },
      "postExecCall(bytes32,address,address,bytes)": {
        "params": {
          "execAddress": "Address of contract that should be called.",
          "execData": "Execution data to be called with / function selector if execution data is yet to be determined.",
          "taskCreator": "The address which created the task.",
          "taskId": "Unique hash of the task created."
        }
      },
      "preCancelTask(bytes32,address)": {
        "details": "Modules can override taskCreator.",
        "params": {
          "taskCreator": "The address which created the task.",
          "taskId": "Unique hash of the task created."
        },
        "returns": {
          "_0": "address Overriden or original taskCreator."
        }
      },
      "preCreateTask(address,address)": {
        "details": "_taskCreator cannot create task to other user's proxy",
        "params": {
          "execAddress": "Address of contract that should be called.",
          "taskCreator": "The address which created the task."
        },
        "returns": {
          "_0": "address Overriden or original taskCreator.",
          "_1": "address Overriden or original execAddress."
        }
      },
      "preExecCall(bytes32,address,address,bytes)": {
        "details": "_execData is encoded with proxy's `executeCall` function unless _execAddress is OpsProxy which assumes that _execData is encoded with `executeCall` or `batchExecuteCall`.",
        "params": {
          "execAddress": "Address of contract that should be called.",
          "execData": "Execution data to be called with / function selector if execution data is yet to be determined.",
          "taskCreator": "The address which created the task.",
          "taskId": "Unique hash of the task created."
        },
        "returns": {
          "_0": "address Overriden or original execution address.",
          "execData": "bytes Overriden or original execution data."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "onCreateTask(bytes32,address,address,bytes,bytes)": {
        "notice": "Initiates task module whenever `createTask` is being called."
      },
      "postExecCall(bytes32,address,address,bytes)": {
        "notice": "Called during `exec` and after execAddress is called."
      },
      "preCancelTask(bytes32,address)": {
        "notice": "Called before taskId is removed from _createdTasks[]."
      },
      "preCreateTask(address,address)": {
        "notice": "Called before generating taskId."
      },
      "preExecCall(bytes32,address,address,bytes)": {
        "notice": "Called during `exec` and before execAddress is called."
      }
    },
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 2480,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "taskCreator",
        "offset": 0,
        "slot": "0",
        "type": "t_mapping(t_bytes32,t_address)"
      },
      {
        "astId": 2485,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "execAddresses",
        "offset": 0,
        "slot": "1",
        "type": "t_mapping(t_bytes32,t_address)"
      },
      {
        "astId": 2491,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "_createdTasks",
        "offset": 0,
        "slot": "2",
        "type": "t_mapping(t_address,t_struct(Bytes32Set)1433_storage)"
      },
      {
        "astId": 2493,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "fee",
        "offset": 0,
        "slot": "3",
        "type": "t_uint256"
      },
      {
        "astId": 2495,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "feeToken",
        "offset": 0,
        "slot": "4",
        "type": "t_address"
      },
      {
        "astId": 2501,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "timedTask",
        "offset": 0,
        "slot": "5",
        "type": "t_mapping(t_bytes32,t_struct(Time)5292_storage)"
      },
      {
        "astId": 2506,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "taskModuleAddresses",
        "offset": 0,
        "slot": "6",
        "type": "t_mapping(t_enum(Module)5279,t_address)"
      },
      {
        "astId": 2510,
        "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
        "label": "nonce1Balance",
        "offset": 0,
        "slot": "7",
        "type": "t_mapping(t_bytes32,t_uint256)"
      }
    ],
    "types": {
      "t_address": {
        "encoding": "inplace",
        "label": "address",
        "numberOfBytes": "20"
      },
      "t_array(t_bytes32)dyn_storage": {
        "base": "t_bytes32",
        "encoding": "dynamic_array",
        "label": "bytes32[]",
        "numberOfBytes": "32"
      },
      "t_bytes32": {
        "encoding": "inplace",
        "label": "bytes32",
        "numberOfBytes": "32"
      },
      "t_enum(Module)5279": {
        "encoding": "inplace",
        "label": "enum LibDataTypes.Module",
        "numberOfBytes": "1"
      },
      "t_mapping(t_address,t_struct(Bytes32Set)1433_storage)": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => struct EnumerableSet.Bytes32Set)",
        "numberOfBytes": "32",
        "value": "t_struct(Bytes32Set)1433_storage"
      },
      "t_mapping(t_bytes32,t_address)": {
        "encoding": "mapping",
        "key": "t_bytes32",
        "label": "mapping(bytes32 => address)",
        "numberOfBytes": "32",
        "value": "t_address"
      },
      "t_mapping(t_bytes32,t_struct(Time)5292_storage)": {
        "encoding": "mapping",
        "key": "t_bytes32",
        "label": "mapping(bytes32 => struct LibDataTypes.Time)",
        "numberOfBytes": "32",
        "value": "t_struct(Time)5292_storage"
      },
      "t_mapping(t_bytes32,t_uint256)": {
        "encoding": "mapping",
        "key": "t_bytes32",
        "label": "mapping(bytes32 => uint256)",
        "numberOfBytes": "32",
        "value": "t_uint256"
      },
      "t_mapping(t_enum(Module)5279,t_address)": {
        "encoding": "mapping",
        "key": "t_enum(Module)5279",
        "label": "mapping(enum LibDataTypes.Module => address)",
        "numberOfBytes": "32",
        "value": "t_address"
      },
      "t_struct(Bytes32Set)1433_storage": {
        "encoding": "inplace",
        "label": "struct EnumerableSet.Bytes32Set",
        "members": [
          {
            "astId": 1432,
            "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
            "label": "_inner",
            "offset": 0,
            "slot": "0",
            "type": "t_struct(Set)1239_storage"
          }
        ],
        "numberOfBytes": "64"
      },
      "t_struct(Set)1239_storage": {
        "encoding": "inplace",
        "label": "struct EnumerableSet.Set",
        "members": [
          {
            "astId": 1234,
            "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
            "label": "_values",
            "offset": 0,
            "slot": "0",
            "type": "t_array(t_bytes32)dyn_storage"
          },
          {
            "astId": 1238,
            "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
            "label": "_indexes",
            "offset": 0,
            "slot": "1",
            "type": "t_mapping(t_bytes32,t_uint256)"
          }
        ],
        "numberOfBytes": "64"
      },
      "t_struct(Time)5292_storage": {
        "encoding": "inplace",
        "label": "struct LibDataTypes.Time",
        "members": [
          {
            "astId": 5289,
            "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
            "label": "nextExec",
            "offset": 0,
            "slot": "0",
            "type": "t_uint128"
          },
          {
            "astId": 5291,
            "contract": "contracts/taskModules/ProxyModule.sol:ProxyModule",
            "label": "interval",
            "offset": 16,
            "slot": "0",
            "type": "t_uint128"
          }
        ],
        "numberOfBytes": "32"
      },
      "t_uint128": {
        "encoding": "inplace",
        "label": "uint128",
        "numberOfBytes": "16"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}
