{
  "abi": [
    {
      "inputs": [],
      "name": "Bribe_AmountZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_InvalidLockManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_InvalidPeriod",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_InvalidPoolManager",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_InvalidWithdrawAmount",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_NothingToUpdate",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_NothingToWithdraw",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "Bribe_TokenZeroAddress",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IERC20",
          "name": "_token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "ClaimedRewards",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IERC20",
          "name": "_bribeToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_bribeAmount",
          "type": "uint256"
        }
      ],
      "name": "CreatedBribe",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_toPeriod",
          "type": "uint256"
        }
      ],
      "name": "UpdatedUserBalance",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "Withdraw",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "POOL_MANAGER_FACTORY",
      "outputs": [
        {
          "internalType": "contract IPoolManagerFactory",
          "name": "_poolManagerFactory",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "contract IERC20[]",
          "name": "_tokens",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_fromPeriod",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_toPeriod",
          "type": "uint256"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "_bribeToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_bribeAmount",
          "type": "uint256"
        }
      ],
      "name": "createBribe",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_toPeriod",
          "type": "uint256"
        }
      ],
      "name": "updateUserBalanceFromLastInteractionTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        },
        {
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        }
      ],
      "name": "userLatestInteraction",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_period",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILockManager",
          "name": "_lockManager",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "POOL_MANAGER_FACTORY()": "daa6f534",
    "claimRewards(address,address[],uint256,uint256)": "3778c625",
    "createBribe(address,address,uint256)": "40478257",
    "deposit(address,uint256)": "47e7ef24",
    "updateUserBalanceFromLastInteractionTo(address,uint256)": "216eee9c",
    "userLatestInteraction(address,address)": "0995c01a",
    "withdraw(address,uint256)": "f3fef3a3"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Bribe_AmountZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_InvalidLockManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_InvalidPeriod\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_InvalidPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_InvalidWithdrawAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_NothingToUpdate\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_NothingToWithdraw\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Bribe_TokenZeroAddress\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ClaimedRewards\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"_bribeToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_bribeAmount\",\"type\":\"uint256\"}],\"name\":\"CreatedBribe\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toPeriod\",\"type\":\"uint256\"}],\"name\":\"UpdatedUserBalance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"POOL_MANAGER_FACTORY\",\"outputs\":[{\"internalType\":\"contract IPoolManagerFactory\",\"name\":\"_poolManagerFactory\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC20[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_fromPeriod\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toPeriod\",\"type\":\"uint256\"}],\"name\":\"claimRewards\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"_bribeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_bribeAmount\",\"type\":\"uint256\"}],\"name\":\"createBribe\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_toPeriod\",\"type\":\"uint256\"}],\"name\":\"updateUserBalanceFromLastInteractionTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"},{\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"}],\"name\":\"userLatestInteraction\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_period\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ILockManager\",\"name\":\"_lockManager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"ClaimedRewards(address,address,uint256)\":{\"params\":{\"_amount\":\"The amount that got claimed\",\"_token\":\"The token that got claimed\",\"_user\":\"The address of the user that claimed the rewards\"}},\"CreatedBribe(address,address,uint256)\":{\"params\":{\"_bribeAmount\":\"The total amount provided for the Bribery\",\"_bribeToken\":\"The Token provided for the Bribery\",\"_lockManager\":\"The LockManager that the Bribery was targetted\"}},\"Deposit(address,address,uint256)\":{\"params\":{\"_amount\":\"The total amount of LockManager to deposit\",\"_caller\":\"The address that initiated the deposit\",\"_lockManager\":\"The LockManager token\"}},\"UpdatedUserBalance(address,address,uint256)\":{\"params\":{\"_lockManager\":\"The LockManager to targer\",\"_toPeriod\":\"The end period to update\",\"_user\":\"The address of the user\"}},\"Withdraw(address,address,uint256)\":{\"params\":{\"_amount\":\"The total amount of LockManager that were withdrawn\",\"_caller\":\"The address that initiated the withdraw\",\"_lockManager\":\"The LockManager token\"}}},\"kind\":\"dev\",\"methods\":{\"POOL_MANAGER_FACTORY()\":{\"returns\":{\"_poolManagerFactory\":\"The PoolManagerFactory\"}},\"claimRewards(address,address[],uint256,uint256)\":{\"params\":{\"_fromPeriod\":\"The period to start claiming rewards from\",\"_lockManager\":\"The address of the LockManager that the Bribery is targetted\",\"_toPeriod\":\"The period to end claiming rewards from\",\"_tokens\":\"The array of tokens that the user wants to claim\"}},\"createBribe(address,address,uint256)\":{\"details\":\"When a bribe is created we need to check if the previous finished or notIf it didn't then we have to add the tokens and amount to `nextBribe`\",\"params\":{\"_bribeAmount\":\"The total amount to provide for the Bribery\",\"_bribeToken\":\"The address of the Token to provide for the Bribery\",\"_lockManager\":\"The address of the LockManager token to create a Bribery for\"}},\"deposit(address,uint256)\":{\"params\":{\"_amount\":\"The amount to deposit\",\"_lockManager\":\"The address of the LockManager to deposit\"}},\"updateUserBalanceFromLastInteractionTo(address,uint256)\":{\"params\":{\"_lockManager\":\"The LockManager to target\",\"_toPeriod\":\"The period to update up to\"}},\"userLatestInteraction(address,address)\":{\"params\":{\"_lockManager\":\"The LockManager to check\",\"_user\":\"The address of the user to check\"},\"returns\":{\"_period\":\"The number of the period\"}},\"withdraw(address,uint256)\":{\"params\":{\"_amount\":\"The amount to withdraw\",\"_lockManager\":\"The address of the LockManager token to withdraw\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"Bribe_AmountZero()\":[{\"notice\":\"Throws when trying to create a Bribery with 0 bribe amount\"}],\"Bribe_InvalidLockManager()\":[{\"notice\":\"Thrown when the LockManager is invalid\"}],\"Bribe_InvalidPeriod()\":[{\"notice\":\"Throws when trying to claim or update a user's balance with an invalid period\"}],\"Bribe_InvalidPoolManager()\":[{\"notice\":\"Thrown when the PoolManager is invalid\"}],\"Bribe_InvalidWithdrawAmount()\":[{\"notice\":\"Throws when trying to withdraw a bigger amount than deposited\"}],\"Bribe_NothingToUpdate()\":[{\"notice\":\"Throws when trying to update a user's balance but there is nothing to update\"}],\"Bribe_NothingToWithdraw()\":[{\"notice\":\"Throws when trying to withdraw but there is nothing deposited\"}],\"Bribe_TokenZeroAddress()\":[{\"notice\":\"Throws when trying to create a Bribery with bribe Token having the zero address\"}]},\"events\":{\"ClaimedRewards(address,address,uint256)\":{\"notice\":\"Emitted when someone claims the Bribery rewards\"},\"CreatedBribe(address,address,uint256)\":{\"notice\":\"Emitted when someone creates a Bribery\"},\"Deposit(address,address,uint256)\":{\"notice\":\"Emitted when someones deposits an amount of LockManager to earn Bribery rewards\"},\"UpdatedUserBalance(address,address,uint256)\":{\"notice\":\"Emitted when someone updates manually their balances\"},\"Withdraw(address,address,uint256)\":{\"notice\":\"Emitted when someones withdraws their LockManager\"}},\"kind\":\"user\",\"methods\":{\"POOL_MANAGER_FACTORY()\":{\"notice\":\"Returns the contract PoolManagerFactory\"},\"claimRewards(address,address[],uint256,uint256)\":{\"notice\":\"Transfers the rewards of the Bribery to the caller for the specified tokens\"},\"createBribe(address,address,uint256)\":{\"notice\":\"Creates and initializes a Bribery for a given LockManager\"},\"deposit(address,uint256)\":{\"notice\":\"Deposits an amount of LockManager to earn bribes\"},\"updateUserBalanceFromLastInteractionTo(address,uint256)\":{\"notice\":\"Updates the user's balance from the last time he interacted till the specified period\"},\"userLatestInteraction(address,address)\":{\"notice\":\"Returns the period when the user last interacted with a specific LockManager Bribe\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraws LockManager tokens deposited by the user\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"solidity/interfaces/periphery/IBribe.sol\":\"IBribe\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":20000},\"remappings\":[\":@contracts/=solidity/contracts/\",\":@defi-wonderland/=node_modules/@defi-wonderland/\",\":@interfaces/=solidity/interfaces/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@test/=solidity/test/\",\":@uniswap/=node_modules/@uniswap/\",\":@uniswap/v3-core/=node_modules/@uniswap/v3-core/\",\":@uniswap/v3-periphery/=node_modules/@uniswap/v3-periphery/\",\":base64-sol/=node_modules/base64-sol/\",\":chainlink/=node_modules/chainlink/contracts/src/v0.8/\",\":ds-test/=node_modules/ds-test/src/\",\":forge-std/=node_modules/forge-std/src/\",\":isolmate/=node_modules/@defi-wonderland/isolmate/src/\",\":keep3r-v2/=node_modules/keep3r-v2/\",\":keep3r/=node_modules/keep3r-v2/solidity/\",\":openzeppelin-solidity/=node_modules/openzeppelin-solidity/\",\":oz/=node_modules/openzeppelin-solidity/contracts/\",\":uni-v3-core/=node_modules/@uniswap/v3-core/contracts/\",\":uni-v3-periphery/=node_modules/@uniswap/v3-periphery/contracts/\",\":weird-erc20/=node_modules/weird-erc20/src/\"]},\"sources\":{\"node_modules/@defi-wonderland/isolmate/src/interfaces/tokens/IERC20.sol\":{\"keccak256\":\"0xea23a986a9efba47639b24eae7dbfd6936be01e5fc3530202fe1f4b8bb4131b8\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://37e08545e18de038023d32de846032533af9513c0b7b84a6c5c371941b6bd5f7\",\"dweb:/ipfs/QmRYNSXwiJ9wE36ogE5J77g6pbGK7T7qqqAF99DZq3eW5B\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"node_modules/keep3r-v2/solidity/interfaces/IKeep3r.sol\":{\"keccak256\":\"0x273a39984c1475c60182e636bb91a1b89ec98646a036cac6a87067869b3adeb9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13fa95e5526a22c48222b74cbbaa2a7b80126e02112e96fec38d0d75bb20d450\",\"dweb:/ipfs/QmYj3AUhMYmiG9MMqbK9VUFqgnn4X6jaZqKG5myFBYYmmv\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IBaseErrors.sol\":{\"keccak256\":\"0x9130019a08d9eaedfb920a323fed5c7f409736cd918f1a32921c93551b3ee00e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c4ae0dc1b01e1eaf0e795631c0ae2c761b70d3aa9b6883a3948462cfecc06e6\",\"dweb:/ipfs/QmaUsKrdPJqcQnVxb23f2obQyWeK2C3Nikf6LqibaqMLCz\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IDustCollector.sol\":{\"keccak256\":\"0x38dce228111f2a3c6b26ac09c5652c3f1f184c4cfe50d11ff0958ef6a50683bb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bfe74d44a4b1e1e8a73892e44cb7f3a0086ae012c46e354bf1b40a16ded52\",\"dweb:/ipfs/QmeP3F3i2wXRy5yzSWtazNqH8KyKdncFto8AdB9M7VfjUW\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IGovernable.sol\":{\"keccak256\":\"0x3284624b2479bbf97c821f37c93a096dcb869b30bbf9b20d30d1800f9535452c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a058f2e2d3d09fe89230e5e4292568c2a14e24a4cf953d4284daa29cf4de4fa0\",\"dweb:/ipfs/QmSGL7FDT29bvfa5zvoq9PkNVWSpR6ZY523axPXoSq3u7M\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rAccountance.sol\":{\"keccak256\":\"0xf4748c236ddf409e45e7169c735e2fc54e627b2b3ccd189ebb438ad768f1deb1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad6a28e2d17b5eed1a365f995349203053d964ad78c64eb7c0fd4eed0a202bf1\",\"dweb:/ipfs/QmaLH6GkuTkLJ8AukTLXrvSDiS8KAFwDkbynPURTcsumzF\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rDisputable.sol\":{\"keccak256\":\"0x002b9b4c75e62d48d74b6447649d39eb5c1e128d2523bb11e08e9cd3e27b1f70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82c436aaecd1b3152a796c14707ac93a8d2988db101e470a8b2b84c23f3d506f\",\"dweb:/ipfs/QmYUgdQFmZic2c6RUxxWNkSUvqM11B1Ti6rgFZMFRzsT7B\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rJobs.sol\":{\"keccak256\":\"0x08915189f1a9484d17a51b7fb343b765b9edba29062bb644af9663af18f03e34\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5b549c9264d1783a22c8980187c97f2bc7db30c61cd2b1652ed1b184e49d86b\",\"dweb:/ipfs/QmeJR2qYWNkEM1qCwiKczQdfBpXUp45rS3o8Zf43AKoSaR\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rKeepers.sol\":{\"keccak256\":\"0xc95e6bba82a8371c6bd15a8e9d0df91c826b5050b8ee01d913c1c13a4e92a49b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://370a48951cc8c8d1b96507683dbf8f798605867388e6f50e29e1741a8873d46d\",\"dweb:/ipfs/QmVD8zzzcaUUxrVrodoPfHV5zdXqt6ZXKfSshy43gWwsNt\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rParameters.sol\":{\"keccak256\":\"0x942f99c6e3b229a551faaae8f03000b934b20502a7cfade14780508201fd098e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b994c19a217b30352f7a6ca67044bde835d06ddfe51a6b651076d99a7214e1b0\",\"dweb:/ipfs/Qmdb1gc4xtQLSa3nLuen8GK7esb8tj3KgmYvzY2ovvraw1\"]},\"node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rRoles.sol\":{\"keccak256\":\"0xe6eca166cf6ad99e5379d754030222873bb9868ff3e2a76de815a438ead533a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d5036cc038714163c3c79479fe00ff0070e5a0a155e00e562d1d645a636b76b\",\"dweb:/ipfs/QmSZPJntRruGnXFEYuUrBrUSfqDDzJ5awMXx2r1nyDAQbd\"]},\"solidity/interfaces/IFeeManager.sol\":{\"keccak256\":\"0x601f6a0b64273647af20e1c59aeffe2086be4c4978773d0adf7c2bfe41c2c727\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e2c4dc963c1c515fa7ef18bce567fcee6e7acf895031adcfe3fdeb8f7e37caed\",\"dweb:/ipfs/QmWsu86sEAFS2egVJiYSvykcKv9fUfscepuKTfVsat8Bok\"]},\"solidity/interfaces/ILockManager.sol\":{\"keccak256\":\"0xa232140a3c96344e2143d9e7c465097c77304b12c5267fb9e7c22ca467c11b57\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://59e01db60aef7cb9add55070a96a0dfc297d83b99f70562e986e385d3cdb8da8\",\"dweb:/ipfs/QmaAHyD6swNuF5gYsxpyhyzxq11bMUwFUYQZiAezX98JTX\"]},\"solidity/interfaces/ILockManagerFactory.sol\":{\"keccak256\":\"0xae1530bf74a0d9f1e71abec4cce3462b46ad53b067ef0022795929953b23f817\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://2505cbc50886430000811c75a4ed31c8392f8b476c1d43720bd1aa63ae2a090b\",\"dweb:/ipfs/QmPaN3AkvGVaQYdwMDeGjJrYkEqpmfHWvb4xfG2ZuftSER\"]},\"solidity/interfaces/ILockManagerGovernor.sol\":{\"keccak256\":\"0x6dbdf9194a2a45a434fd31cc62acff5003d53a949baef6a454d5dea97dd29ea3\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://6dc8fe41a53db8c09982e78c88036dcc9c9c2bcb45a4d766b40b631a8df33f5b\",\"dweb:/ipfs/QmcFq2LTpZT7ZzNw6VBkXbSLuuX9LGcshzjP7xX9Bzr2cS\"]},\"solidity/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xf795ff3abbe3b2b4def474a505e78569d41086da3f6d439f732b9ee5295ba49d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://62041119416c6418fec45bbaca62fba107acda209dd12ef040a8dab1b65d3878\",\"dweb:/ipfs/QmbB2BeWsmHRRxbeQY7XNQekcaJP9j97n9juXU7khsUzgN\"]},\"solidity/interfaces/IPoolManagerDeployer.sol\":{\"keccak256\":\"0xbc4c205c007a713aa9c166982ce77f208456749f437cc782d6500d6f456f4113\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://70e7239fa222d567ac9851d971c7cbb5ee3ebfa52fd04692db4feb0e21350016\",\"dweb:/ipfs/QmZhFWjSSjYNbggeeo4cUhxinX9vGPAGuUkMqMVxZmnd9D\"]},\"solidity/interfaces/IPoolManagerFactory.sol\":{\"keccak256\":\"0x0aea0b427578023099fb9a1bf09a20762c1c958ef5859c762fc673d3314e97cd\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b8fc29e8f15ef3eaa6262189ac28960c7960e52d2a8de23d6451e3189ae80cc9\",\"dweb:/ipfs/QmYKicDyJi2Lw8YuY92SFyBzfDmvBGuECpH6mm15wbi7J3\"]},\"solidity/interfaces/IPoolManagerGovernor.sol\":{\"keccak256\":\"0x67020a4d2879b26138ffe80168e12caeacb0cdc3852de452a35946a0bab3ff13\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://c6b07c8f824577fce45baaf9a1643b7c1a51398396a47e08306eef8ccdfe87ba\",\"dweb:/ipfs/QmbeATmPW1T9GyrbguSkEkPKJLUS4ALH5BFLs1n38PZnuv\"]},\"solidity/interfaces/jobs/ICardinalityJob.sol\":{\"keccak256\":\"0xb2ea5ab5837457a18099b93596d0bb21d0eba97679219332b2c600027acb7efc\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://36a717206961aa821014c799c45e5d4987042f0447f2da70b0b26e6e348cc4c8\",\"dweb:/ipfs/QmR4E7L8smEL7KrGRCXaXoP45P3C9AmHopgnvhZQhrFEAY\"]},\"solidity/interfaces/jobs/IFeeCollectorJob.sol\":{\"keccak256\":\"0x719f4225d74474973cb4c58a524661dd5b0d437c17258f7be1f028377a2a1ed2\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e414800cc7c4c064caa2e57f243a15ec88a4fa72919d568da944e30a176353e7\",\"dweb:/ipfs/QmRpJdh9C5TCArQPYD2qq1tjNeaQVUHGhRh9YtsdxqAreh\"]},\"solidity/interfaces/jobs/IKeep3rJob.sol\":{\"keccak256\":\"0x537540063984e38ff186592936016ac3b452a21da322ae8fb9bf173b8c2fabe8\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://847d7cc63dd034253aeeb2fdea6225f7b27fda867888b7e21297838f1eb05c1f\",\"dweb:/ipfs/Qmeaci4yeX8rUXamD9cp3biJBGUxYUkJTkLTWf4vcsYJFt\"]},\"solidity/interfaces/periphery/IBribe.sol\":{\"keccak256\":\"0x9b6ff38032ee55d4dbf068eb401336f3af3ac6b204a6289d0dd7bbcb5ef40e20\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://7d5fa3bd3e1702626d1ca2f06375afaa2fa6580be63d94ffffdad68757fb47fc\",\"dweb:/ipfs/QmfF93JrHREtERTmhYFADRtd7vk84F5VP4Rozw7gRQdFdK\"]},\"solidity/interfaces/periphery/IGovernorMiniBravo.sol\":{\"keccak256\":\"0x3385738365ff7ba2aaac8a1e507f571e3e5bd97988241b6678ed4aa1d61cfbae\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://fd624c0e163d0a174c078c4cb450eefa84a86dc70ccdb8625636e1963866cffd\",\"dweb:/ipfs/QmYVVRctxeYgPeKKUPBSuwZ11uU3EPf4opYuLA7aJWKGAB\"]},\"solidity/interfaces/periphery/IPriceOracle.sol\":{\"keccak256\":\"0x27e349905c9e686510cd51ccb3f11c6617bc3135c8188215db980d8fcc02ef26\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1c0096e91e4ce57273090f452af1f8cbc7112c57359404a9920070b969213d08\",\"dweb:/ipfs/QmW56eqevPWT9vzYq3gGC47DaFfEb2QEr3gFK4Tvt1WcjL\"]},\"solidity/interfaces/periphery/IPriceOracleCorrections.sol\":{\"keccak256\":\"0x53b8f395595d23beba0d5295fa494fc28b4452d2526fe8da5932e98ef9b3e12f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e3795b5aacfcd9a3caf85291ed73d17fd37621574072950dad79ecbccbc0d6c4\",\"dweb:/ipfs/QmPK9LKsCS5NJZVktcngDnkDBbkTqoTEkvUmEEwaCj4sHJ\"]},\"solidity/interfaces/strategies/IStrategy.sol\":{\"keccak256\":\"0x4d9be7375229a6b01fdadda608b30096a90f1f828ab21b12937ce601c83b83b0\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://549b50053afaa6782060bb6d6568b728c874dbab422077b4a9d08f70acd83adc\",\"dweb:/ipfs/QmWniAa47EZfDfhqPKYgVeaQ6FFbou6JsVquKyXovcxPhU\"]},\"solidity/interfaces/utils/IPriceGovernable.sol\":{\"keccak256\":\"0xd58d6f0d8634ccd0e4ebf04a73c48b6741e221c66c369f3d09ec7891e96a266f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8e838c65618d08f0300e555d520e8062eae0d09f387812437a9dad0fd782ae9b\",\"dweb:/ipfs/QmYarNLYUK192seJ4hgB4nHjzzb5sxS8Bsm1K4aA21fLuX\"]},\"solidity/interfaces/utils/IPricePausable.sol\":{\"keccak256\":\"0x32147e0eac7998813804d67fef37ca41796e9d12d9cdd30206d5fb04badba29e\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0cebfa2c49375ed9140244cead0d3f4c501970343ccfdd27c7fe41cc2b937ff4\",\"dweb:/ipfs/QmPZ4AY4KFSYmJnHnmwH33kuadY8t4JnnH8hjcVThVB87E\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.10+commit.fc410830"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_AmountZero"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_InvalidLockManager"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_InvalidPeriod"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_InvalidPoolManager"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_InvalidWithdrawAmount"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_NothingToUpdate"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_NothingToWithdraw"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "Bribe_TokenZeroAddress"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract IERC20",
              "name": "_token",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ClaimedRewards",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract IERC20",
              "name": "_bribeToken",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_bribeAmount",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "CreatedBribe",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_caller",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Deposit",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_toPeriod",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "UpdatedUserBalance",
          "anonymous": false
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_caller",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address",
              "indexed": false
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256",
              "indexed": false
            }
          ],
          "type": "event",
          "name": "Withdraw",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "POOL_MANAGER_FACTORY",
          "outputs": [
            {
              "internalType": "contract IPoolManagerFactory",
              "name": "_poolManagerFactory",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address"
            },
            {
              "internalType": "contract IERC20[]",
              "name": "_tokens",
              "type": "address[]"
            },
            {
              "internalType": "uint256",
              "name": "_fromPeriod",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "_toPeriod",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "claimRewards"
        },
        {
          "inputs": [
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address"
            },
            {
              "internalType": "contract IERC20",
              "name": "_bribeToken",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_bribeAmount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "createBribe"
        },
        {
          "inputs": [
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "deposit"
        },
        {
          "inputs": [
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_toPeriod",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "updateUserBalanceFromLastInteractionTo"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_user",
              "type": "address"
            },
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "userLatestInteraction",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "_period",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "contract ILockManager",
              "name": "_lockManager",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_amount",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "withdraw"
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "POOL_MANAGER_FACTORY()": {
            "returns": {
              "_poolManagerFactory": "The PoolManagerFactory"
            }
          },
          "claimRewards(address,address[],uint256,uint256)": {
            "params": {
              "_fromPeriod": "The period to start claiming rewards from",
              "_lockManager": "The address of the LockManager that the Bribery is targetted",
              "_toPeriod": "The period to end claiming rewards from",
              "_tokens": "The array of tokens that the user wants to claim"
            }
          },
          "createBribe(address,address,uint256)": {
            "details": "When a bribe is created we need to check if the previous finished or notIf it didn't then we have to add the tokens and amount to `nextBribe`",
            "params": {
              "_bribeAmount": "The total amount to provide for the Bribery",
              "_bribeToken": "The address of the Token to provide for the Bribery",
              "_lockManager": "The address of the LockManager token to create a Bribery for"
            }
          },
          "deposit(address,uint256)": {
            "params": {
              "_amount": "The amount to deposit",
              "_lockManager": "The address of the LockManager to deposit"
            }
          },
          "updateUserBalanceFromLastInteractionTo(address,uint256)": {
            "params": {
              "_lockManager": "The LockManager to target",
              "_toPeriod": "The period to update up to"
            }
          },
          "userLatestInteraction(address,address)": {
            "params": {
              "_lockManager": "The LockManager to check",
              "_user": "The address of the user to check"
            },
            "returns": {
              "_period": "The number of the period"
            }
          },
          "withdraw(address,uint256)": {
            "params": {
              "_amount": "The amount to withdraw",
              "_lockManager": "The address of the LockManager token to withdraw"
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "POOL_MANAGER_FACTORY()": {
            "notice": "Returns the contract PoolManagerFactory"
          },
          "claimRewards(address,address[],uint256,uint256)": {
            "notice": "Transfers the rewards of the Bribery to the caller for the specified tokens"
          },
          "createBribe(address,address,uint256)": {
            "notice": "Creates and initializes a Bribery for a given LockManager"
          },
          "deposit(address,uint256)": {
            "notice": "Deposits an amount of LockManager to earn bribes"
          },
          "updateUserBalanceFromLastInteractionTo(address,uint256)": {
            "notice": "Updates the user's balance from the last time he interacted till the specified period"
          },
          "userLatestInteraction(address,address)": {
            "notice": "Returns the period when the user last interacted with a specific LockManager Bribe"
          },
          "withdraw(address,uint256)": {
            "notice": "Withdraws LockManager tokens deposited by the user"
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@contracts/=solidity/contracts/",
        ":@defi-wonderland/=node_modules/@defi-wonderland/",
        ":@interfaces/=solidity/interfaces/",
        ":@openzeppelin/=node_modules/@openzeppelin/",
        ":@test/=solidity/test/",
        ":@uniswap/=node_modules/@uniswap/",
        ":@uniswap/v3-core/=node_modules/@uniswap/v3-core/",
        ":@uniswap/v3-periphery/=node_modules/@uniswap/v3-periphery/",
        ":base64-sol/=node_modules/base64-sol/",
        ":chainlink/=node_modules/chainlink/contracts/src/v0.8/",
        ":ds-test/=node_modules/ds-test/src/",
        ":forge-std/=node_modules/forge-std/src/",
        ":isolmate/=node_modules/@defi-wonderland/isolmate/src/",
        ":keep3r-v2/=node_modules/keep3r-v2/",
        ":keep3r/=node_modules/keep3r-v2/solidity/",
        ":openzeppelin-solidity/=node_modules/openzeppelin-solidity/",
        ":oz/=node_modules/openzeppelin-solidity/contracts/",
        ":uni-v3-core/=node_modules/@uniswap/v3-core/contracts/",
        ":uni-v3-periphery/=node_modules/@uniswap/v3-periphery/contracts/",
        ":weird-erc20/=node_modules/weird-erc20/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 20000
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "solidity/interfaces/periphery/IBribe.sol": "IBribe"
      },
      "libraries": {}
    },
    "sources": {
      "node_modules/@defi-wonderland/isolmate/src/interfaces/tokens/IERC20.sol": {
        "keccak256": "0xea23a986a9efba47639b24eae7dbfd6936be01e5fc3530202fe1f4b8bb4131b8",
        "urls": [
          "bzz-raw://37e08545e18de038023d32de846032533af9513c0b7b84a6c5c371941b6bd5f7",
          "dweb:/ipfs/QmRYNSXwiJ9wE36ogE5J77g6pbGK7T7qqqAF99DZq3eW5B"
        ],
        "license": "AGPL-3.0-only"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": {
        "keccak256": "0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1",
        "urls": [
          "bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5",
          "dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": {
        "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634",
        "urls": [
          "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5",
          "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": {
        "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5",
        "urls": [
          "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7",
          "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": {
        "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd",
        "urls": [
          "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03",
          "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": {
        "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7",
        "urls": [
          "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047",
          "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": {
        "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235",
        "urls": [
          "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735",
          "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": {
        "keccak256": "0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f",
        "urls": [
          "bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f",
          "dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg"
        ],
        "license": "GPL-2.0-or-later"
      },
      "node_modules/keep3r-v2/solidity/interfaces/IKeep3r.sol": {
        "keccak256": "0x273a39984c1475c60182e636bb91a1b89ec98646a036cac6a87067869b3adeb9",
        "urls": [
          "bzz-raw://13fa95e5526a22c48222b74cbbaa2a7b80126e02112e96fec38d0d75bb20d450",
          "dweb:/ipfs/QmYj3AUhMYmiG9MMqbK9VUFqgnn4X6jaZqKG5myFBYYmmv"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IBaseErrors.sol": {
        "keccak256": "0x9130019a08d9eaedfb920a323fed5c7f409736cd918f1a32921c93551b3ee00e",
        "urls": [
          "bzz-raw://5c4ae0dc1b01e1eaf0e795631c0ae2c761b70d3aa9b6883a3948462cfecc06e6",
          "dweb:/ipfs/QmaUsKrdPJqcQnVxb23f2obQyWeK2C3Nikf6LqibaqMLCz"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IDustCollector.sol": {
        "keccak256": "0x38dce228111f2a3c6b26ac09c5652c3f1f184c4cfe50d11ff0958ef6a50683bb",
        "urls": [
          "bzz-raw://6f7bfe74d44a4b1e1e8a73892e44cb7f3a0086ae012c46e354bf1b40a16ded52",
          "dweb:/ipfs/QmeP3F3i2wXRy5yzSWtazNqH8KyKdncFto8AdB9M7VfjUW"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IGovernable.sol": {
        "keccak256": "0x3284624b2479bbf97c821f37c93a096dcb869b30bbf9b20d30d1800f9535452c",
        "urls": [
          "bzz-raw://a058f2e2d3d09fe89230e5e4292568c2a14e24a4cf953d4284daa29cf4de4fa0",
          "dweb:/ipfs/QmSGL7FDT29bvfa5zvoq9PkNVWSpR6ZY523axPXoSq3u7M"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rAccountance.sol": {
        "keccak256": "0xf4748c236ddf409e45e7169c735e2fc54e627b2b3ccd189ebb438ad768f1deb1",
        "urls": [
          "bzz-raw://ad6a28e2d17b5eed1a365f995349203053d964ad78c64eb7c0fd4eed0a202bf1",
          "dweb:/ipfs/QmaLH6GkuTkLJ8AukTLXrvSDiS8KAFwDkbynPURTcsumzF"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rDisputable.sol": {
        "keccak256": "0x002b9b4c75e62d48d74b6447649d39eb5c1e128d2523bb11e08e9cd3e27b1f70",
        "urls": [
          "bzz-raw://82c436aaecd1b3152a796c14707ac93a8d2988db101e470a8b2b84c23f3d506f",
          "dweb:/ipfs/QmYUgdQFmZic2c6RUxxWNkSUvqM11B1Ti6rgFZMFRzsT7B"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rJobs.sol": {
        "keccak256": "0x08915189f1a9484d17a51b7fb343b765b9edba29062bb644af9663af18f03e34",
        "urls": [
          "bzz-raw://f5b549c9264d1783a22c8980187c97f2bc7db30c61cd2b1652ed1b184e49d86b",
          "dweb:/ipfs/QmeJR2qYWNkEM1qCwiKczQdfBpXUp45rS3o8Zf43AKoSaR"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rKeepers.sol": {
        "keccak256": "0xc95e6bba82a8371c6bd15a8e9d0df91c826b5050b8ee01d913c1c13a4e92a49b",
        "urls": [
          "bzz-raw://370a48951cc8c8d1b96507683dbf8f798605867388e6f50e29e1741a8873d46d",
          "dweb:/ipfs/QmVD8zzzcaUUxrVrodoPfHV5zdXqt6ZXKfSshy43gWwsNt"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rParameters.sol": {
        "keccak256": "0x942f99c6e3b229a551faaae8f03000b934b20502a7cfade14780508201fd098e",
        "urls": [
          "bzz-raw://b994c19a217b30352f7a6ca67044bde835d06ddfe51a6b651076d99a7214e1b0",
          "dweb:/ipfs/Qmdb1gc4xtQLSa3nLuen8GK7esb8tj3KgmYvzY2ovvraw1"
        ],
        "license": "MIT"
      },
      "node_modules/keep3r-v2/solidity/interfaces/peripherals/IKeep3rRoles.sol": {
        "keccak256": "0xe6eca166cf6ad99e5379d754030222873bb9868ff3e2a76de815a438ead533a2",
        "urls": [
          "bzz-raw://7d5036cc038714163c3c79479fe00ff0070e5a0a155e00e562d1d645a636b76b",
          "dweb:/ipfs/QmSZPJntRruGnXFEYuUrBrUSfqDDzJ5awMXx2r1nyDAQbd"
        ],
        "license": "MIT"
      },
      "solidity/interfaces/IFeeManager.sol": {
        "keccak256": "0x601f6a0b64273647af20e1c59aeffe2086be4c4978773d0adf7c2bfe41c2c727",
        "urls": [
          "bzz-raw://e2c4dc963c1c515fa7ef18bce567fcee6e7acf895031adcfe3fdeb8f7e37caed",
          "dweb:/ipfs/QmWsu86sEAFS2egVJiYSvykcKv9fUfscepuKTfVsat8Bok"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/ILockManager.sol": {
        "keccak256": "0xa232140a3c96344e2143d9e7c465097c77304b12c5267fb9e7c22ca467c11b57",
        "urls": [
          "bzz-raw://59e01db60aef7cb9add55070a96a0dfc297d83b99f70562e986e385d3cdb8da8",
          "dweb:/ipfs/QmaAHyD6swNuF5gYsxpyhyzxq11bMUwFUYQZiAezX98JTX"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/ILockManagerFactory.sol": {
        "keccak256": "0xae1530bf74a0d9f1e71abec4cce3462b46ad53b067ef0022795929953b23f817",
        "urls": [
          "bzz-raw://2505cbc50886430000811c75a4ed31c8392f8b476c1d43720bd1aa63ae2a090b",
          "dweb:/ipfs/QmPaN3AkvGVaQYdwMDeGjJrYkEqpmfHWvb4xfG2ZuftSER"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/ILockManagerGovernor.sol": {
        "keccak256": "0x6dbdf9194a2a45a434fd31cc62acff5003d53a949baef6a454d5dea97dd29ea3",
        "urls": [
          "bzz-raw://6dc8fe41a53db8c09982e78c88036dcc9c9c2bcb45a4d766b40b631a8df33f5b",
          "dweb:/ipfs/QmcFq2LTpZT7ZzNw6VBkXbSLuuX9LGcshzjP7xX9Bzr2cS"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/IPoolManager.sol": {
        "keccak256": "0xf795ff3abbe3b2b4def474a505e78569d41086da3f6d439f732b9ee5295ba49d",
        "urls": [
          "bzz-raw://62041119416c6418fec45bbaca62fba107acda209dd12ef040a8dab1b65d3878",
          "dweb:/ipfs/QmbB2BeWsmHRRxbeQY7XNQekcaJP9j97n9juXU7khsUzgN"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/IPoolManagerDeployer.sol": {
        "keccak256": "0xbc4c205c007a713aa9c166982ce77f208456749f437cc782d6500d6f456f4113",
        "urls": [
          "bzz-raw://70e7239fa222d567ac9851d971c7cbb5ee3ebfa52fd04692db4feb0e21350016",
          "dweb:/ipfs/QmZhFWjSSjYNbggeeo4cUhxinX9vGPAGuUkMqMVxZmnd9D"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/IPoolManagerFactory.sol": {
        "keccak256": "0x0aea0b427578023099fb9a1bf09a20762c1c958ef5859c762fc673d3314e97cd",
        "urls": [
          "bzz-raw://b8fc29e8f15ef3eaa6262189ac28960c7960e52d2a8de23d6451e3189ae80cc9",
          "dweb:/ipfs/QmYKicDyJi2Lw8YuY92SFyBzfDmvBGuECpH6mm15wbi7J3"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/IPoolManagerGovernor.sol": {
        "keccak256": "0x67020a4d2879b26138ffe80168e12caeacb0cdc3852de452a35946a0bab3ff13",
        "urls": [
          "bzz-raw://c6b07c8f824577fce45baaf9a1643b7c1a51398396a47e08306eef8ccdfe87ba",
          "dweb:/ipfs/QmbeATmPW1T9GyrbguSkEkPKJLUS4ALH5BFLs1n38PZnuv"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/jobs/ICardinalityJob.sol": {
        "keccak256": "0xb2ea5ab5837457a18099b93596d0bb21d0eba97679219332b2c600027acb7efc",
        "urls": [
          "bzz-raw://36a717206961aa821014c799c45e5d4987042f0447f2da70b0b26e6e348cc4c8",
          "dweb:/ipfs/QmR4E7L8smEL7KrGRCXaXoP45P3C9AmHopgnvhZQhrFEAY"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/jobs/IFeeCollectorJob.sol": {
        "keccak256": "0x719f4225d74474973cb4c58a524661dd5b0d437c17258f7be1f028377a2a1ed2",
        "urls": [
          "bzz-raw://e414800cc7c4c064caa2e57f243a15ec88a4fa72919d568da944e30a176353e7",
          "dweb:/ipfs/QmRpJdh9C5TCArQPYD2qq1tjNeaQVUHGhRh9YtsdxqAreh"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/jobs/IKeep3rJob.sol": {
        "keccak256": "0x537540063984e38ff186592936016ac3b452a21da322ae8fb9bf173b8c2fabe8",
        "urls": [
          "bzz-raw://847d7cc63dd034253aeeb2fdea6225f7b27fda867888b7e21297838f1eb05c1f",
          "dweb:/ipfs/Qmeaci4yeX8rUXamD9cp3biJBGUxYUkJTkLTWf4vcsYJFt"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/periphery/IBribe.sol": {
        "keccak256": "0x9b6ff38032ee55d4dbf068eb401336f3af3ac6b204a6289d0dd7bbcb5ef40e20",
        "urls": [
          "bzz-raw://7d5fa3bd3e1702626d1ca2f06375afaa2fa6580be63d94ffffdad68757fb47fc",
          "dweb:/ipfs/QmfF93JrHREtERTmhYFADRtd7vk84F5VP4Rozw7gRQdFdK"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/periphery/IGovernorMiniBravo.sol": {
        "keccak256": "0x3385738365ff7ba2aaac8a1e507f571e3e5bd97988241b6678ed4aa1d61cfbae",
        "urls": [
          "bzz-raw://fd624c0e163d0a174c078c4cb450eefa84a86dc70ccdb8625636e1963866cffd",
          "dweb:/ipfs/QmYVVRctxeYgPeKKUPBSuwZ11uU3EPf4opYuLA7aJWKGAB"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/periphery/IPriceOracle.sol": {
        "keccak256": "0x27e349905c9e686510cd51ccb3f11c6617bc3135c8188215db980d8fcc02ef26",
        "urls": [
          "bzz-raw://1c0096e91e4ce57273090f452af1f8cbc7112c57359404a9920070b969213d08",
          "dweb:/ipfs/QmW56eqevPWT9vzYq3gGC47DaFfEb2QEr3gFK4Tvt1WcjL"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/periphery/IPriceOracleCorrections.sol": {
        "keccak256": "0x53b8f395595d23beba0d5295fa494fc28b4452d2526fe8da5932e98ef9b3e12f",
        "urls": [
          "bzz-raw://e3795b5aacfcd9a3caf85291ed73d17fd37621574072950dad79ecbccbc0d6c4",
          "dweb:/ipfs/QmPK9LKsCS5NJZVktcngDnkDBbkTqoTEkvUmEEwaCj4sHJ"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/strategies/IStrategy.sol": {
        "keccak256": "0x4d9be7375229a6b01fdadda608b30096a90f1f828ab21b12937ce601c83b83b0",
        "urls": [
          "bzz-raw://549b50053afaa6782060bb6d6568b728c874dbab422077b4a9d08f70acd83adc",
          "dweb:/ipfs/QmWniAa47EZfDfhqPKYgVeaQ6FFbou6JsVquKyXovcxPhU"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/utils/IPriceGovernable.sol": {
        "keccak256": "0xd58d6f0d8634ccd0e4ebf04a73c48b6741e221c66c369f3d09ec7891e96a266f",
        "urls": [
          "bzz-raw://8e838c65618d08f0300e555d520e8062eae0d09f387812437a9dad0fd782ae9b",
          "dweb:/ipfs/QmYarNLYUK192seJ4hgB4nHjzzb5sxS8Bsm1K4aA21fLuX"
        ],
        "license": "AGPL-3.0-only"
      },
      "solidity/interfaces/utils/IPricePausable.sol": {
        "keccak256": "0x32147e0eac7998813804d67fef37ca41796e9d12d9cdd30206d5fb04badba29e",
        "urls": [
          "bzz-raw://0cebfa2c49375ed9140244cead0d3f4c501970343ccfdd27c7fe41cc2b937ff4",
          "dweb:/ipfs/QmPZ4AY4KFSYmJnHnmwH33kuadY8t4JnnH8hjcVThVB87E"
        ],
        "license": "AGPL-3.0-only"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "solidity/interfaces/periphery/IBribe.sol",
    "id": 44532,
    "exportedSymbols": {
      "IBribe": [
        44531
      ],
      "IERC20": [
        112
      ],
      "IFeeManager": [
        42596
      ],
      "IGovernorMiniBravo": [
        44727
      ],
      "ILockManager": [
        42935
      ],
      "ILockManagerGovernor": [
        42992
      ],
      "IPoolManager": [
        43253
      ],
      "IPoolManagerFactory": [
        43739
      ],
      "IPriceOracle": [
        44972
      ],
      "IPriceOracleCorrections": [
        44985
      ],
      "IStrategy": [
        45094
      ],
      "IUniswapV3Pool": [
        804
      ],
      "IUniswapV3PoolActions": [
        914
      ],
      "IUniswapV3PoolDerivedState": [
        945
      ],
      "IUniswapV3PoolEvents": [
        1064
      ],
      "IUniswapV3PoolImmutables": [
        1104
      ],
      "IUniswapV3PoolOwnerActions": [
        1130
      ],
      "IUniswapV3PoolState": [
        1238
      ]
    },
    "nodeType": "SourceUnit",
    "src": "42:7338:95",
    "nodes": [
      {
        "id": 44354,
        "nodeType": "PragmaDirective",
        "src": "42:31:95",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".4",
          "<",
          "0.9",
          ".0"
        ]
      },
      {
        "id": 44355,
        "nodeType": "ImportDirective",
        "src": "75:47:95",
        "nodes": [],
        "absolutePath": "node_modules/@defi-wonderland/isolmate/src/interfaces/tokens/IERC20.sol",
        "file": "isolmate/interfaces/tokens/IERC20.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 44532,
        "sourceUnit": 113,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 44356,
        "nodeType": "ImportDirective",
        "src": "124:38:95",
        "nodes": [],
        "absolutePath": "solidity/interfaces/ILockManager.sol",
        "file": "@interfaces/ILockManager.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 44532,
        "sourceUnit": 42936,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 44531,
        "nodeType": "ContractDefinition",
        "src": "164:7215:95",
        "nodes": [
          {
            "id": 44359,
            "nodeType": "ErrorDefinition",
            "src": "413:33:95",
            "nodes": [],
            "documentation": {
              "id": 44357,
              "nodeType": "StructuredDocumentation",
              "src": "360:50:95",
              "text": "@notice Thrown when the PoolManager is invalid"
            },
            "name": "Bribe_InvalidPoolManager",
            "nameLocation": "419:24:95",
            "parameters": {
              "id": 44358,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "443:2:95"
            }
          },
          {
            "id": 44362,
            "nodeType": "ErrorDefinition",
            "src": "503:33:95",
            "nodes": [],
            "documentation": {
              "id": 44360,
              "nodeType": "StructuredDocumentation",
              "src": "450:50:95",
              "text": "@notice Thrown when the LockManager is invalid"
            },
            "name": "Bribe_InvalidLockManager",
            "nameLocation": "509:24:95",
            "parameters": {
              "id": 44361,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "533:2:95"
            }
          },
          {
            "id": 44365,
            "nodeType": "ErrorDefinition",
            "src": "634:31:95",
            "nodes": [],
            "documentation": {
              "id": 44363,
              "nodeType": "StructuredDocumentation",
              "src": "540:91:95",
              "text": "@notice Throws when trying to create a Bribery with bribe Token having the zero address"
            },
            "name": "Bribe_TokenZeroAddress",
            "nameLocation": "640:22:95",
            "parameters": {
              "id": 44364,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "662:2:95"
            }
          },
          {
            "id": 44368,
            "nodeType": "ErrorDefinition",
            "src": "742:25:95",
            "nodes": [],
            "documentation": {
              "id": 44366,
              "nodeType": "StructuredDocumentation",
              "src": "669:70:95",
              "text": "@notice Throws when trying to create a Bribery with 0 bribe amount"
            },
            "name": "Bribe_AmountZero",
            "nameLocation": "748:16:95",
            "parameters": {
              "id": 44367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "764:2:95"
            }
          },
          {
            "id": 44371,
            "nodeType": "ErrorDefinition",
            "src": "847:32:95",
            "nodes": [],
            "documentation": {
              "id": 44369,
              "nodeType": "StructuredDocumentation",
              "src": "771:73:95",
              "text": "@notice Throws when trying to withdraw but there is nothing deposited"
            },
            "name": "Bribe_NothingToWithdraw",
            "nameLocation": "853:23:95",
            "parameters": {
              "id": 44370,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "876:2:95"
            }
          },
          {
            "id": 44374,
            "nodeType": "ErrorDefinition",
            "src": "975:28:95",
            "nodes": [],
            "documentation": {
              "id": 44372,
              "nodeType": "StructuredDocumentation",
              "src": "883:89:95",
              "text": "@notice Throws when trying to claim or update a user's balance with an invalid period"
            },
            "name": "Bribe_InvalidPeriod",
            "nameLocation": "981:19:95",
            "parameters": {
              "id": 44373,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1000:2:95"
            }
          },
          {
            "id": 44377,
            "nodeType": "ErrorDefinition",
            "src": "1083:36:95",
            "nodes": [],
            "documentation": {
              "id": 44375,
              "nodeType": "StructuredDocumentation",
              "src": "1007:73:95",
              "text": "@notice Throws when trying to withdraw a bigger amount than deposited"
            },
            "name": "Bribe_InvalidWithdrawAmount",
            "nameLocation": "1089:27:95",
            "parameters": {
              "id": 44376,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1116:2:95"
            }
          },
          {
            "id": 44380,
            "nodeType": "ErrorDefinition",
            "src": "1214:30:95",
            "nodes": [],
            "documentation": {
              "id": 44378,
              "nodeType": "StructuredDocumentation",
              "src": "1123:88:95",
              "text": "@notice Throws when trying to update a user's balance but there is nothing to update"
            },
            "name": "Bribe_NothingToUpdate",
            "nameLocation": "1220:21:95",
            "parameters": {
              "id": 44379,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1241:2:95"
            }
          },
          {
            "id": 44391,
            "nodeType": "EventDefinition",
            "src": "1698:88:95",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 44381,
              "nodeType": "StructuredDocumentation",
              "src": "1422:273:95",
              "text": "@notice              Emitted when someone creates a Bribery\n@param _lockManager  The LockManager that the Bribery was targetted\n@param _bribeToken   The Token provided for the Bribery\n@param _bribeAmount  The total amount provided for the Bribery"
            },
            "name": "CreatedBribe",
            "nameLocation": "1704:12:95",
            "parameters": {
              "id": 44390,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44384,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "1730:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44391,
                  "src": "1717:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44383,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44382,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "1717:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "1717:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44387,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_bribeToken",
                  "nameLocation": "1751:11:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44391,
                  "src": "1744:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$112",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "id": 44386,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44385,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 112,
                      "src": "1744:6:95"
                    },
                    "referencedDeclaration": 112,
                    "src": "1744:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$112",
                      "typeString": "contract IERC20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44389,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_bribeAmount",
                  "nameLocation": "1772:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44391,
                  "src": "1764:20:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44388,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1764:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1716:69:95"
            }
          },
          {
            "id": 44401,
            "nodeType": "EventDefinition",
            "src": "2087:75:95",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 44392,
              "nodeType": "StructuredDocumentation",
              "src": "1790:294:95",
              "text": "@notice              Emitted when someones deposits an amount of LockManager to earn Bribery rewards\n@param _caller       The address that initiated the deposit\n@param _lockManager  The LockManager token\n@param _amount       The total amount of LockManager to deposit"
            },
            "name": "Deposit",
            "nameLocation": "2093:7:95",
            "parameters": {
              "id": 44400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44394,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_caller",
                  "nameLocation": "2109:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44401,
                  "src": "2101:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44393,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2101:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44397,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "2131:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44401,
                  "src": "2118:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44396,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44395,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "2118:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "2118:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44399,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "2153:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44401,
                  "src": "2145:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44398,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2145:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2100:61:95"
            }
          },
          {
            "id": 44411,
            "nodeType": "EventDefinition",
            "src": "2443:76:95",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 44402,
              "nodeType": "StructuredDocumentation",
              "src": "2166:274:95",
              "text": "@notice              Emitted when someones withdraws their LockManager\n@param _caller       The address that initiated the withdraw\n@param _lockManager  The LockManager token\n@param _amount       The total amount of LockManager that were withdrawn"
            },
            "name": "Withdraw",
            "nameLocation": "2449:8:95",
            "parameters": {
              "id": 44410,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44404,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_caller",
                  "nameLocation": "2466:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44411,
                  "src": "2458:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44403,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2458:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44407,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "2488:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44411,
                  "src": "2475:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44406,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44405,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "2475:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "2475:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44409,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "2510:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44411,
                  "src": "2502:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44408,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2502:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2457:61:95"
            }
          },
          {
            "id": 44421,
            "nodeType": "EventDefinition",
            "src": "2788:68:95",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 44412,
              "nodeType": "StructuredDocumentation",
              "src": "2523:262:95",
              "text": "@notice              Emitted when someone claims the Bribery rewards\n@param _user         The address of the user that claimed the rewards\n@param _token        The token that got claimed\n@param _amount       The amount that got claimed"
            },
            "name": "ClaimedRewards",
            "nameLocation": "2794:14:95",
            "parameters": {
              "id": 44420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44414,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_user",
                  "nameLocation": "2817:5:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44421,
                  "src": "2809:13:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44413,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2809:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44417,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_token",
                  "nameLocation": "2831:6:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44421,
                  "src": "2824:13:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$112",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "id": 44416,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44415,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 112,
                      "src": "2824:6:95"
                    },
                    "referencedDeclaration": 112,
                    "src": "2824:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$112",
                      "typeString": "contract IERC20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44419,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "2847:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44421,
                  "src": "2839:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44418,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2808:47:95"
            }
          },
          {
            "id": 44431,
            "nodeType": "EventDefinition",
            "src": "3100:86:95",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 44422,
              "nodeType": "StructuredDocumentation",
              "src": "2860:237:95",
              "text": "@notice              Emitted when someone updates manually their balances\n@param _user         The address of the user\n@param _lockManager  The LockManager to targer\n@param _toPeriod     The end period to update"
            },
            "name": "UpdatedUserBalance",
            "nameLocation": "3106:18:95",
            "parameters": {
              "id": 44430,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44424,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_user",
                  "nameLocation": "3133:5:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44431,
                  "src": "3125:13:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3125:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44427,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "3153:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44431,
                  "src": "3140:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44426,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44425,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "3140:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "3140:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44429,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "_toPeriod",
                  "nameLocation": "3175:9:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44431,
                  "src": "3167:17:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44428,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3167:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3124:61:95"
            }
          },
          {
            "id": 44458,
            "nodeType": "StructDefinition",
            "src": "4050:287:95",
            "nodes": [],
            "canonicalName": "IBribe.PeriodRewards",
            "members": [
              {
                "constant": false,
                "id": 44433,
                "mutability": "mutable",
                "name": "start",
                "nameLocation": "4085:5:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4077:13:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 44432,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4077:7:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 44435,
                "mutability": "mutable",
                "name": "end",
                "nameLocation": "4104:3:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4096:11:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 44434,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4096:7:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 44437,
                "mutability": "mutable",
                "name": "totalDeposited",
                "nameLocation": "4121:14:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4113:22:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 44436,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4113:7:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 44441,
                "mutability": "mutable",
                "name": "bribeTokens",
                "nameLocation": "4150:11:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4141:20:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_contract$_IERC20_$112_$dyn_storage_ptr",
                  "typeString": "contract IERC20[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 44439,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44438,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 112,
                      "src": "4141:6:95"
                    },
                    "referencedDeclaration": 112,
                    "src": "4141:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$112",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 44440,
                  "nodeType": "ArrayTypeName",
                  "src": "4141:8:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$112_$dyn_storage_ptr",
                    "typeString": "contract IERC20[]"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 44446,
                "mutability": "mutable",
                "name": "totalBribeAmountPerToken",
                "nameLocation": "4194:24:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4167:51:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_contract$_IERC20_$112_$_t_uint256_$",
                  "typeString": "mapping(contract IERC20 => uint256)"
                },
                "typeName": {
                  "id": 44445,
                  "keyType": {
                    "id": 44443,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44442,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 112,
                      "src": "4175:6:95"
                    },
                    "referencedDeclaration": 112,
                    "src": "4175:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$112",
                      "typeString": "contract IERC20"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4167:26:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_contract$_IERC20_$112_$_t_uint256_$",
                    "typeString": "mapping(contract IERC20 => uint256)"
                  },
                  "valueType": {
                    "id": 44444,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4185:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 44450,
                "mutability": "mutable",
                "name": "userBalance",
                "nameLocation": "4252:11:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4224:39:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 44449,
                  "keyType": {
                    "id": 44447,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4232:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4224:27:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 44448,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4243:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 44457,
                "mutability": "mutable",
                "name": "userHasClaimedToken",
                "nameLocation": "4313:19:95",
                "nodeType": "VariableDeclaration",
                "scope": 44458,
                "src": "4269:63:95",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$112_$_t_bool_$_$",
                  "typeString": "mapping(address => mapping(contract IERC20 => bool))"
                },
                "typeName": {
                  "id": 44456,
                  "keyType": {
                    "id": 44451,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4277:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "4269:43:95",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_contract$_IERC20_$112_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(contract IERC20 => bool))"
                  },
                  "valueType": {
                    "id": 44455,
                    "keyType": {
                      "id": 44453,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 44452,
                        "name": "IERC20",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 112,
                        "src": "4296:6:95"
                      },
                      "referencedDeclaration": 112,
                      "src": "4296:6:95",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$112",
                        "typeString": "contract IERC20"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "4288:23:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_contract$_IERC20_$112_$_t_bool_$",
                      "typeString": "mapping(contract IERC20 => bool)"
                    },
                    "valueType": {
                      "id": 44454,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "4306:4:95",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "PeriodRewards",
            "nameLocation": "4057:13:95",
            "scope": 44531,
            "visibility": "public"
          },
          {
            "id": 44469,
            "nodeType": "FunctionDefinition",
            "src": "4769:113:95",
            "nodes": [],
            "documentation": {
              "id": 44459,
              "nodeType": "StructuredDocumentation",
              "src": "4517:249:95",
              "text": "@notice Returns the period when the user last interacted with a specific LockManager Bribe\n@param _user The address of the user to check\n@param _lockManager The LockManager to check\n@return _period The number of the period"
            },
            "functionSelector": "0995c01a",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "userLatestInteraction",
            "nameLocation": "4778:21:95",
            "parameters": {
              "id": 44465,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44461,
                  "mutability": "mutable",
                  "name": "_user",
                  "nameLocation": "4808:5:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44469,
                  "src": "4800:13:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 44460,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4800:7:95",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44464,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "4828:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44469,
                  "src": "4815:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44463,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44462,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "4815:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "4815:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4799:42:95"
            },
            "returnParameters": {
              "id": 44468,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44467,
                  "mutability": "mutable",
                  "name": "_period",
                  "nameLocation": "4873:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44469,
                  "src": "4865:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44466,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4865:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4864:17:95"
            },
            "scope": 44531,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44476,
            "nodeType": "FunctionDefinition",
            "src": "5026:96:95",
            "nodes": [],
            "documentation": {
              "id": 44470,
              "nodeType": "StructuredDocumentation",
              "src": "4886:137:95",
              "text": "@notice                     Returns the contract PoolManagerFactory\n@return _poolManagerFactory The PoolManagerFactory"
            },
            "functionSelector": "daa6f534",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "POOL_MANAGER_FACTORY",
            "nameLocation": "5035:20:95",
            "parameters": {
              "id": 44471,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5055:2:95"
            },
            "returnParameters": {
              "id": 44475,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44474,
                  "mutability": "mutable",
                  "name": "_poolManagerFactory",
                  "nameLocation": "5101:19:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44476,
                  "src": "5081:39:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IPoolManagerFactory_$43739",
                    "typeString": "contract IPoolManagerFactory"
                  },
                  "typeName": {
                    "id": 44473,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44472,
                      "name": "IPoolManagerFactory",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 43739,
                      "src": "5081:19:95"
                    },
                    "referencedDeclaration": 43739,
                    "src": "5081:19:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IPoolManagerFactory_$43739",
                      "typeString": "contract IPoolManagerFactory"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5080:41:95"
            },
            "scope": 44531,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44488,
            "nodeType": "FunctionDefinition",
            "src": "5820:115:95",
            "nodes": [],
            "documentation": {
              "id": 44477,
              "nodeType": "StructuredDocumentation",
              "src": "5299:518:95",
              "text": "@notice              Creates and initializes a Bribery for a given LockManager\n@dev                 When a bribe is created we need to check if the previous finished or not\n@dev                 If it didn't then we have to add the tokens and amount to `nextBribe`\n@param _lockManager  The address of the LockManager token to create a Bribery for\n@param _bribeToken   The address of the Token to provide for the Bribery\n@param _bribeAmount  The total amount to provide for the Bribery"
            },
            "functionSelector": "40478257",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "createBribe",
            "nameLocation": "5829:11:95",
            "parameters": {
              "id": 44486,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44480,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "5859:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44488,
                  "src": "5846:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44479,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44478,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "5846:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "5846:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44483,
                  "mutability": "mutable",
                  "name": "_bribeToken",
                  "nameLocation": "5884:11:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44488,
                  "src": "5877:18:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20_$112",
                    "typeString": "contract IERC20"
                  },
                  "typeName": {
                    "id": 44482,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44481,
                      "name": "IERC20",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 112,
                      "src": "5877:6:95"
                    },
                    "referencedDeclaration": 112,
                    "src": "5877:6:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$112",
                      "typeString": "contract IERC20"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44485,
                  "mutability": "mutable",
                  "name": "_bribeAmount",
                  "nameLocation": "5909:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44488,
                  "src": "5901:20:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44484,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5901:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5840:85:95"
            },
            "returnParameters": {
              "id": 44487,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5934:0:95"
            },
            "scope": 44531,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44497,
            "nodeType": "FunctionDefinition",
            "src": "6140:70:95",
            "nodes": [],
            "documentation": {
              "id": 44489,
              "nodeType": "StructuredDocumentation",
              "src": "5939:198:95",
              "text": "@notice              Deposits an amount of LockManager to earn bribes\n@param _lockManager  The address of the LockManager to deposit\n@param _amount       The amount to deposit"
            },
            "functionSelector": "47e7ef24",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nameLocation": "6149:7:95",
            "parameters": {
              "id": 44495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44492,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "6170:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44497,
                  "src": "6157:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44491,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44490,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "6157:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "6157:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44494,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "6192:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44497,
                  "src": "6184:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44493,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6184:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6156:44:95"
            },
            "returnParameters": {
              "id": 44496,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6209:0:95"
            },
            "scope": 44531,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44506,
            "nodeType": "FunctionDefinition",
            "src": "6425:71:95",
            "nodes": [],
            "documentation": {
              "id": 44498,
              "nodeType": "StructuredDocumentation",
              "src": "6214:208:95",
              "text": "@notice              Withdraws LockManager tokens deposited by the user\n@param _lockManager  The address of the LockManager token to withdraw\n@param _amount       The amount to withdraw"
            },
            "functionSelector": "f3fef3a3",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "withdraw",
            "nameLocation": "6434:8:95",
            "parameters": {
              "id": 44504,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44501,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "6456:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44506,
                  "src": "6443:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44500,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44499,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "6443:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "6443:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44503,
                  "mutability": "mutable",
                  "name": "_amount",
                  "nameLocation": "6478:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44506,
                  "src": "6470:15:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44502,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6470:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6442:44:95"
            },
            "returnParameters": {
              "id": 44505,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6495:0:95"
            },
            "scope": 44531,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44515,
            "nodeType": "FunctionDefinition",
            "src": "6723:103:95",
            "nodes": [],
            "documentation": {
              "id": 44507,
              "nodeType": "StructuredDocumentation",
              "src": "6500:220:95",
              "text": "@notice             Updates the user's balance from the last time he interacted till the specified period\n@param _lockManager The LockManager to target\n@param _toPeriod    The period to update up to"
            },
            "functionSelector": "216eee9c",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "updateUserBalanceFromLastInteractionTo",
            "nameLocation": "6732:38:95",
            "parameters": {
              "id": 44513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44510,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "6784:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44515,
                  "src": "6771:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44509,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44508,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "6771:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "6771:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44512,
                  "mutability": "mutable",
                  "name": "_toPeriod",
                  "nameLocation": "6806:9:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44515,
                  "src": "6798:17:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44511,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6798:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6770:46:95"
            },
            "returnParameters": {
              "id": 44514,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6825:0:95"
            },
            "scope": 44531,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 44530,
            "nodeType": "FunctionDefinition",
            "src": "7234:143:95",
            "nodes": [],
            "documentation": {
              "id": 44516,
              "nodeType": "StructuredDocumentation",
              "src": "6830:401:95",
              "text": "@notice              Transfers the rewards of the Bribery to the caller for the specified tokens\n@param  _lockManager The address of the LockManager that the Bribery is targetted\n@param _tokens       The array of tokens that the user wants to claim\n@param _fromPeriod   The period to start claiming rewards from\n@param _toPeriod     The period to end claiming rewards from"
            },
            "functionSelector": "3778c625",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "claimRewards",
            "nameLocation": "7243:12:95",
            "parameters": {
              "id": 44528,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 44519,
                  "mutability": "mutable",
                  "name": "_lockManager",
                  "nameLocation": "7274:12:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44530,
                  "src": "7261:25:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ILockManager_$42935",
                    "typeString": "contract ILockManager"
                  },
                  "typeName": {
                    "id": 44518,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 44517,
                      "name": "ILockManager",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 42935,
                      "src": "7261:12:95"
                    },
                    "referencedDeclaration": 42935,
                    "src": "7261:12:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ILockManager_$42935",
                      "typeString": "contract ILockManager"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44523,
                  "mutability": "mutable",
                  "name": "_tokens",
                  "nameLocation": "7308:7:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44530,
                  "src": "7292:23:95",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_contract$_IERC20_$112_$dyn_memory_ptr",
                    "typeString": "contract IERC20[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 44521,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 44520,
                        "name": "IERC20",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 112,
                        "src": "7292:6:95"
                      },
                      "referencedDeclaration": 112,
                      "src": "7292:6:95",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERC20_$112",
                        "typeString": "contract IERC20"
                      }
                    },
                    "id": 44522,
                    "nodeType": "ArrayTypeName",
                    "src": "7292:8:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_contract$_IERC20_$112_$dyn_storage_ptr",
                      "typeString": "contract IERC20[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44525,
                  "mutability": "mutable",
                  "name": "_fromPeriod",
                  "nameLocation": "7329:11:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44530,
                  "src": "7321:19:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7321:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 44527,
                  "mutability": "mutable",
                  "name": "_toPeriod",
                  "nameLocation": "7354:9:95",
                  "nodeType": "VariableDeclaration",
                  "scope": 44530,
                  "src": "7346:17:95",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 44526,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7346:7:95",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7255:112:95"
            },
            "returnParameters": {
              "id": 44529,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7376:0:95"
            },
            "scope": 44531,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IBribe",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          44531
        ],
        "name": "IBribe",
        "nameLocation": "174:6:95",
        "scope": 44532,
        "usedErrors": [
          44359,
          44362,
          44365,
          44368,
          44371,
          44374,
          44377,
          44380
        ]
      }
    ],
    "license": "AGPL-3.0-only"
  },
  "id": 95
}