{
  "address": "0x843bD81dA1609569a0cC43DA3c30Ba4E52a0d0E4",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract ITaskTreasury",
          "name": "_oldTreasury",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FundsDeposited",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "initiator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "FundsWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "executor",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "fees",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "service",
          "type": "address"
        }
      ],
      "name": "LogDeductFees",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "maxFee",
          "type": "uint256"
        }
      ],
      "name": "UpdatedMaxFee",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "service",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "add",
          "type": "bool"
        }
      ],
      "name": "UpdatedService",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "MIN_SHARES_IN_TREASURY",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "depositFunds",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getCreditTokensByUser",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "getTotalCreditTokensByUser",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getWhitelistedServices",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxFee",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "oldTreasury",
      "outputs": [
        {
          "internalType": "contract ITaskTreasury",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "shares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "totalShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "totalUserTokenBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_newMaxFee",
          "type": "uint256"
        }
      ],
      "name": "updateMaxFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_service",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "_add",
          "type": "bool"
        }
      ],
      "name": "updateWhitelistedService",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "useFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "userTokenBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_receiver",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdrawFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "transactionHash": "0xbded10999614ba0eb7bb23954f76eeba3ffa3cae954ecf79c4b673813726bd03",
  "receipt": {
    "to": "0x0000000000000000000000000000000000008006",
    "from": "0xF1108379d71ff2A785899F4C36010f841F1Fea04",
    "contractAddress": "0x843bD81dA1609569a0cC43DA3c30Ba4E52a0d0E4",
    "transactionIndex": 8,
    "gasUsed": "320924",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "blockHash": "0x0fb80df4bc9761b2563d0cf83361c2bd9fb3e5036d59f5b3bfe2c6a7d7649ddc",
    "transactionHash": "0xbded10999614ba0eb7bb23954f76eeba3ffa3cae954ecf79c4b673813726bd03",
    "logs": [
      {
        "transactionIndex": 8,
        "blockNumber": 5924327,
        "transactionHash": "0xbded10999614ba0eb7bb23954f76eeba3ffa3cae954ecf79c4b673813726bd03",
        "address": "0x000000000000000000000000000000000000800A",
        "topics": [
          "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04",
          "0x0000000000000000000000000000000000000000000000000000000000008001"
        ],
        "data": "0x0000000000000000000000000000000000000000000000000000b5d05bebb900",
        "logIndex": 53,
        "blockHash": "0x0fb80df4bc9761b2563d0cf83361c2bd9fb3e5036d59f5b3bfe2c6a7d7649ddc"
      },
      {
        "transactionIndex": 8,
        "blockNumber": 5924327,
        "transactionHash": "0xbded10999614ba0eb7bb23954f76eeba3ffa3cae954ecf79c4b673813726bd03",
        "address": "0x0000000000000000000000000000000000008006",
        "topics": [
          "0x290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e5",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04",
          "0x01000615d2256690b08233d94d7eb9aa70db040344d48d8c3262c5a535c657bd",
          "0x000000000000000000000000843bd81da1609569a0cc43da3c30ba4e52a0d0e4"
        ],
        "data": "0x",
        "logIndex": 54,
        "blockHash": "0x0fb80df4bc9761b2563d0cf83361c2bd9fb3e5036d59f5b3bfe2c6a7d7649ddc"
      },
      {
        "transactionIndex": 8,
        "blockNumber": 5924327,
        "transactionHash": "0xbded10999614ba0eb7bb23954f76eeba3ffa3cae954ecf79c4b673813726bd03",
        "address": "0x000000000000000000000000000000000000800A",
        "topics": [
          "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
          "0x0000000000000000000000000000000000000000000000000000000000008001",
          "0x000000000000000000000000f1108379d71ff2a785899f4c36010f841f1fea04"
        ],
        "data": "0x00000000000000000000000000000000000000000000000000006cd81faa7300",
        "logIndex": 55,
        "blockHash": "0x0fb80df4bc9761b2563d0cf83361c2bd9fb3e5036d59f5b3bfe2c6a7d7649ddc"
      }
    ],
    "blockNumber": 5924327,
    "cumulativeGasUsed": "0",
    "status": 1,
    "byzantium": true
  },
  "args": ["0x0000000000000000000000000000000000000000"],
  "numDeployments": 1,
  "solcInputHash": "a55a0720c0d0238808136c5effb03d4d",
  "metadata": {
    "optimizer_settings": "M3B3",
    "solc_metadata": "{\"compiler\":{\"version\":\"0.8.14+commit.80d49f37\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ITaskTreasury\",\"name\":\"_oldTreasury\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FundsDeposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initiator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"FundsWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"executor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"service\",\"type\":\"address\"}],\"name\":\"LogDeductFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"maxFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedMaxFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"service\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"add\",\"type\":\"bool\"}],\"name\":\"UpdatedService\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MIN_SHARES_IN_TREASURY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"depositFunds\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getCreditTokensByUser\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getTotalCreditTokensByUser\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWhitelistedServices\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_maxFee\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oldTreasury\",\"outputs\":[{\"internalType\":\"contract ITaskTreasury\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"shares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"totalShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"totalUserTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newMaxFee\",\"type\":\"uint256\"}],\"name\":\"updateMaxFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_service\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_add\",\"type\":\"bool\"}],\"name\":\"updateWhitelistedService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"useFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"userTokenBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_receiver\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdrawFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"depositFunds(address,address,uint256)\":{\"params\":{\"_amount\":\"Amount to be credited\",\"_receiver\":\"Address receiving the credits\",\"_token\":\"Token to be credited, use \\\"0xeeee....\\\" for ETH\"}},\"getCreditTokensByUser(address)\":{\"params\":{\"_user\":\"User to get the balances from\"}},\"getTotalCreditTokensByUser(address)\":{\"params\":{\"_user\":\"User to get the balances from\"}},\"totalUserTokenBalance(address,address)\":{\"params\":{\"_token\":\"Token to check balance of\",\"_user\":\"User to get balance from\"}},\"updateMaxFee(uint256)\":{\"params\":{\"_newMaxFee\":\"New Max Fee to charge\"}},\"updateWhitelistedService(address,bool)\":{\"params\":{\"_add\":\"Add to whitelist if true, else remove from whitelist\",\"_service\":\"Service to add or remove from whitelist\"}},\"useFunds(address,address,uint256)\":{\"params\":{\"_amount\":\"Amount to be deducted\",\"_token\":\"Token to be used for payment by users\",\"_user\":\"Address of user whose balance will be deducted\"}},\"userTokenBalance(address,address)\":{\"params\":{\"_token\":\"Token to check balance of\",\"_user\":\"User to get balance from\"}},\"withdrawFunds(address,address,uint256)\":{\"params\":{\"_amount\":\"Amount to be credited\",\"_receiver\":\"Address receiving the credits\",\"_token\":\"Token to be credited, use \\\"0xeeee....\\\" for ETH\"}}},\"stateVariables\":{\"_tokens\":{\"details\":\"tracks the tokens deposited by users\"},\"shares\":{\"details\":\"tracks token shares of users\"},\"totalShares\":{\"details\":\"tracks total shares of tokens\"}},\"version\":1},\"userdoc\":{\"events\":{\"FundsDeposited(address,address,uint256)\":{\"notice\":\"Events ///\"}},\"kind\":\"user\",\"methods\":{\"depositFunds(address,address,uint256)\":{\"notice\":\"Function to deposit Funds which will be used to execute transactions on various services\"},\"getCreditTokensByUser(address)\":{\"notice\":\"Helper func to get all deposited tokens by a user.\"},\"getTotalCreditTokensByUser(address)\":{\"notice\":\"Helper func to get all deposited tokens by a user across treasuries.\"},\"getWhitelistedServices()\":{\"notice\":\"Get list of services that can call useFunds.\"},\"totalUserTokenBalance(address,address)\":{\"notice\":\"Get balance of a token owned by user across treasuries\"},\"updateMaxFee(uint256)\":{\"notice\":\"Change maxFee charged by Gelato (only relevant on Layer2s)\"},\"updateWhitelistedService(address,bool)\":{\"notice\":\"Add or remove service that can call useFunds. Gelato Governance\"},\"useFunds(address,address,uint256)\":{\"notice\":\"Function called by whitelisted services to handle payments, e.g. Gelato Automate\"},\"userTokenBalance(address,address)\":{\"notice\":\"Get balance of a token owned by user\"},\"withdrawFunds(address,address,uint256)\":{\"notice\":\"Function to withdraw Funds back to the _receiver\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/taskTreasury/TaskTreasuryUpgradable.sol\":\"TaskTreasuryUpgradable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x68861bcc80cacbd498efde75aab6c74a486cc48262660d326c8d7530d9752097\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5beb2713aca05976562500789329e8c41320d00bd68ea9247856ec73894c3e3f\",\"dweb:/ipfs/QmQKwkpofsZYAzMZs7uNL7Qq58zVBuhoZCGpD6bJdUwyqy\"]},\"@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0xf3a9b766b0d0456f79d9402db4b49bb16c414f3f9d65244475c0704b6c66dcf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2be836e0695ca8a93f81a4bb6a7f74469ba97fb6e33948739c7f65a5f4110e4f\",\"dweb:/ipfs/QmTcsEpD8XJHtA5vjJ2mbrgYyDYQoMF3zuAEMTu6KFSXjX\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x3f0f878c796dfc7feba6d3c4e3e526c14c7deae8b7bfc71088e3f38fab0d77b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69bf7d357ce97852f4fb71045919b1bb2c0ad0c820e3f06b9dd4451b2dc5a343\",\"dweb:/ipfs/QmWt96ZviufDu2qqS7Ln6UCJjfLyoFKbo6YKn54ao3o94z\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbbc8ac883ac3c0078ce5ad3e288fbb3ffcc8a30c3a98c0fda0114d64fc44fca2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87a7a5d2f6f63f84598af02b8c50ca2df2631cb8ba2453e8d95fcb17e4be9824\",\"dweb:/ipfs/QmR76hqtAcRqoFj33tmNjcWTLrgNsAaakYwnKZ8zoJtKei\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xc3d946432c0ddbb1f846a0d3985be71299df331b91d06732152117f62f0be2b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4632c341a06ba5c079b51ca5a915efab4e6ab57735b37839b3e8365ff806a43e\",\"dweb:/ipfs/QmTHT3xHYed2wajEoA5qu7ii2BxLpPhQZHwAhtLK5Z7ANK\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x2ccf9d2313a313d41a791505f2b5abfdc62191b5d4334f7f7a82691c088a1c87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3a57d0854b2fdce6ebff933a48dca2445643d1eccfc27f00292e937f26c6a58\",\"dweb:/ipfs/QmW45rZooS9TqR4YXUbjRbtf2Bpb5ouSarBvfW1LdGprvV\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9772845c886f87a3aab315f8d6b68aa599027c20f441b131cd4afaf65b588900\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad2f29a9c17a4f746416c9e254e17671f43c409dbfa6e4d7d76c3e4a83212d31\",\"dweb:/ipfs/QmTqU65L6iu6yqmXKzcNLPioR8etzKPWycpDJCm17ifVdS\"]},\"contracts/functions/FUtils.sol\":{\"keccak256\":\"0xecf150c4e9030703ac85cd5192fb98eca2e68a8df00ca50efd99fc8813cfb4a2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b4be457cd1613ed0ce8cf60a1e20c6e10c431b0827e5660b06a3f3557451f9c1\",\"dweb:/ipfs/QmNrZESyZcdFzcwC5DAVivfY3Y23s1NymfnopLRhK7LR84\"]},\"contracts/interfaces/IERC20Extended.sol\":{\"keccak256\":\"0xdfa1185ee541ba2ef0ef3cfe61fc277233ae557a90d2cb013546e01df7364695\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7c36358666f58369f1067892115bf772abee5f0bd02684ff0f942840580cf8b8\",\"dweb:/ipfs/QmUmYm11mFWagZiNqFBEH8gnfTeJ9WHN7VgjtnPM6ttf4N\"]},\"contracts/interfaces/ITaskTreasury.sol\":{\"keccak256\":\"0xd3a9a4df2a2cb7b86802e1e7e31803283199e98955733c2744873e943497b1c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d21c85fe7bc191772b0788a9007a5302b4915f5d584cb357dff7e6ac943dbee\",\"dweb:/ipfs/QmdZmq771yJVzpH9mBGWexLCqkp96GKK8ainv6BqXCGPqZ\"]},\"contracts/interfaces/ITaskTreasuryUpgradable.sol\":{\"keccak256\":\"0x4b692a8a7e0e365cbed8f03704a97d7ffa06736a96f1a2206983bb4e8ead9b75\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b286c2740cb29d7f77cbaf659b4c6bd9feaed58fe000488ee7b33251dc4b9e6\",\"dweb:/ipfs/QmcSWrVMi5Ft6RRztZxhsbg2mDCQiTc3YcXWafdjKy1LXM\"]},\"contracts/libraries/LibShares.sol\":{\"keccak256\":\"0x77587737bfa126a9d0830b2e73e27d15d75dd7aaebefc851b237166e0eb1745f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e44d066af44490de8f759acf7d7c8fb306b816b71e8e4d9e66ded18e3ab0e8b6\",\"dweb:/ipfs/QmWtV1mu3BU91Q7j6uXRpRaZjBWG6Ed3vCD1qQ8D7EU88E\"]},\"contracts/taskTreasury/TaskTreasuryUpgradable.sol\":{\"keccak256\":\"0x2ad0227526640b04ea2475a16d7335fb00f6175bd246ea2615c9894389100ad6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cf02ef9bbadcdb8c1b7b6f269e943343000bfd3cbce4b657161af25ff006e327\",\"dweb:/ipfs/QmPNWwDDjX5DjS9LYaNqiywB6im1ygMqWucH8MJPHF23xZ\"]},\"contracts/vendor/proxy/EIP173/Proxied.sol\":{\"keccak256\":\"0x428ced1961d42c505a3e49d90498f92f4b0df8537e5ffa59f14ba375d99150a1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://bdaf6158f4b6b54670691ff09e74698559684245fcae6c68657a52ef4b1cc88b\",\"dweb:/ipfs/QmcWDmV1JCBNgrzsJkE5GnfVSyKKaoVE6AbQFeDaXjV9Nh\"]}},\"version\":1}",
    "zk_version": "1.3.7"
  },
  "bytecode": "[encoded data, 99650 characters]",
  "deployedBytecode": "[encoded data, 99650 characters]",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "depositFunds(address,address,uint256)": {
        "params": {
          "_amount": "Amount to be credited",
          "_receiver": "Address receiving the credits",
          "_token": "Token to be credited, use \"0xeeee....\" for ETH"
        }
      },
      "getCreditTokensByUser(address)": {
        "params": {
          "_user": "User to get the balances from"
        }
      },
      "getTotalCreditTokensByUser(address)": {
        "params": {
          "_user": "User to get the balances from"
        }
      },
      "totalUserTokenBalance(address,address)": {
        "params": {
          "_token": "Token to check balance of",
          "_user": "User to get balance from"
        }
      },
      "updateMaxFee(uint256)": {
        "params": {
          "_newMaxFee": "New Max Fee to charge"
        }
      },
      "updateWhitelistedService(address,bool)": {
        "params": {
          "_add": "Add to whitelist if true, else remove from whitelist",
          "_service": "Service to add or remove from whitelist"
        }
      },
      "useFunds(address,address,uint256)": {
        "params": {
          "_amount": "Amount to be deducted",
          "_token": "Token to be used for payment by users",
          "_user": "Address of user whose balance will be deducted"
        }
      },
      "userTokenBalance(address,address)": {
        "params": {
          "_token": "Token to check balance of",
          "_user": "User to get balance from"
        }
      },
      "withdrawFunds(address,address,uint256)": {
        "params": {
          "_amount": "Amount to be credited",
          "_receiver": "Address receiving the credits",
          "_token": "Token to be credited, use \"0xeeee....\" for ETH"
        }
      }
    },
    "stateVariables": {
      "_tokens": {
        "details": "tracks the tokens deposited by users"
      },
      "shares": {
        "details": "tracks token shares of users"
      },
      "totalShares": {
        "details": "tracks total shares of tokens"
      }
    },
    "version": 1
  },
  "userdoc": {
    "events": {
      "FundsDeposited(address,address,uint256)": {
        "notice": "Events ///"
      }
    },
    "kind": "user",
    "methods": {
      "depositFunds(address,address,uint256)": {
        "notice": "Function to deposit Funds which will be used to execute transactions on various services"
      },
      "getCreditTokensByUser(address)": {
        "notice": "Helper func to get all deposited tokens by a user."
      },
      "getTotalCreditTokensByUser(address)": {
        "notice": "Helper func to get all deposited tokens by a user across treasuries."
      },
      "getWhitelistedServices()": {
        "notice": "Get list of services that can call useFunds."
      },
      "totalUserTokenBalance(address,address)": {
        "notice": "Get balance of a token owned by user across treasuries"
      },
      "updateMaxFee(uint256)": {
        "notice": "Change maxFee charged by Gelato (only relevant on Layer2s)"
      },
      "updateWhitelistedService(address,bool)": {
        "notice": "Add or remove service that can call useFunds. Gelato Governance"
      },
      "useFunds(address,address,uint256)": {
        "notice": "Function called by whitelisted services to handle payments, e.g. Gelato Automate"
      },
      "userTokenBalance(address,address)": {
        "notice": "Get balance of a token owned by user"
      },
      "withdrawFunds(address,address,uint256)": {
        "notice": "Function to withdraw Funds back to the _receiver"
      }
    },
    "version": 1
  },
  "storageLayout": {
    "storage": [
      {
        "astId": 6,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "_initialized",
        "offset": 0,
        "slot": "0",
        "type": "t_bool"
      },
      {
        "astId": 9,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "_initializing",
        "offset": 1,
        "slot": "0",
        "type": "t_bool"
      },
      {
        "astId": 87,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "_status",
        "offset": 0,
        "slot": "1",
        "type": "t_uint256"
      },
      {
        "astId": 130,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "__gap",
        "offset": 0,
        "slot": "2",
        "type": "t_array(t_uint256)49_storage"
      },
      {
        "astId": 9210,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "maxFee",
        "offset": 0,
        "slot": "51",
        "type": "t_uint256"
      },
      {
        "astId": 9217,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "shares",
        "offset": 0,
        "slot": "52",
        "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))"
      },
      {
        "astId": 9222,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "totalShares",
        "offset": 0,
        "slot": "53",
        "type": "t_mapping(t_address,t_uint256)"
      },
      {
        "astId": 9228,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "_tokens",
        "offset": 0,
        "slot": "54",
        "type": "t_mapping(t_address,t_struct(AddressSet)1540_storage)"
      },
      {
        "astId": 9231,
        "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
        "label": "_whitelistedServices",
        "offset": 0,
        "slot": "55",
        "type": "t_struct(AddressSet)1540_storage"
      }
    ],
    "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_array(t_uint256)49_storage": {
        "base": "t_uint256",
        "encoding": "inplace",
        "label": "uint256[49]",
        "numberOfBytes": "1568"
      },
      "t_bool": {
        "encoding": "inplace",
        "label": "bool",
        "numberOfBytes": "1"
      },
      "t_bytes32": {
        "encoding": "inplace",
        "label": "bytes32",
        "numberOfBytes": "32"
      },
      "t_mapping(t_address,t_mapping(t_address,t_uint256))": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => mapping(address => uint256))",
        "numberOfBytes": "32",
        "value": "t_mapping(t_address,t_uint256)"
      },
      "t_mapping(t_address,t_struct(AddressSet)1540_storage)": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => struct EnumerableSet.AddressSet)",
        "numberOfBytes": "32",
        "value": "t_struct(AddressSet)1540_storage"
      },
      "t_mapping(t_address,t_uint256)": {
        "encoding": "mapping",
        "key": "t_address",
        "label": "mapping(address => uint256)",
        "numberOfBytes": "32",
        "value": "t_uint256"
      },
      "t_mapping(t_bytes32,t_uint256)": {
        "encoding": "mapping",
        "key": "t_bytes32",
        "label": "mapping(bytes32 => uint256)",
        "numberOfBytes": "32",
        "value": "t_uint256"
      },
      "t_struct(AddressSet)1540_storage": {
        "encoding": "inplace",
        "label": "struct EnumerableSet.AddressSet",
        "members": [
          {
            "astId": 1539,
            "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
            "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/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
            "label": "_values",
            "offset": 0,
            "slot": "0",
            "type": "t_array(t_bytes32)dyn_storage"
          },
          {
            "astId": 1238,
            "contract": "contracts/taskTreasury/TaskTreasuryUpgradable.sol:TaskTreasuryUpgradable",
            "label": "_indexes",
            "offset": 0,
            "slot": "1",
            "type": "t_mapping(t_bytes32,t_uint256)"
          }
        ],
        "numberOfBytes": "64"
      },
      "t_uint256": {
        "encoding": "inplace",
        "label": "uint256",
        "numberOfBytes": "32"
      }
    }
  }
}
