import json

LIDO_CURVE_STETH_ETH_GAUGE = json.loads('''
[
  {
    "name": "Deposit",
    "inputs": [
      {
        "name": "provider",
        "type": "address",
        "indexed": true
      },
      {
        "name": "value",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "Withdraw",
    "inputs": [
      {
        "name": "provider",
        "type": "address",
        "indexed": true
      },
      {
        "name": "value",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "UpdateLiquidityLimit",
    "inputs": [
      {
        "name": "user",
        "type": "address",
        "indexed": false
      },
      {
        "name": "original_balance",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "original_supply",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "working_balance",
        "type": "uint256",
        "indexed": false
      },
      {
        "name": "working_supply",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "CommitOwnership",
    "inputs": [
      {
        "name": "admin",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "ApplyOwnership",
    "inputs": [
      {
        "name": "admin",
        "type": "address",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "Transfer",
    "inputs": [
      {
        "name": "_from",
        "type": "address",
        "indexed": true
      },
      {
        "name": "_to",
        "type": "address",
        "indexed": true
      },
      {
        "name": "_value",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "name": "Approval",
    "inputs": [
      {
        "name": "_owner",
        "type": "address",
        "indexed": true
      },
      {
        "name": "_spender",
        "type": "address",
        "indexed": true
      },
      {
        "name": "_value",
        "type": "uint256",
        "indexed": false
      }
    ],
    "anonymous": false,
    "type": "event"
  },
  {
    "stateMutability": "nonpayable",
    "type": "constructor",
    "inputs": [],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "initialize",
    "inputs": [
      {
        "name": "_lp_token",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 374587
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "decimals",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 318
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "integrate_checkpoint",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 4590
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "user_checkpoint",
    "inputs": [
      {
        "name": "addr",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 3123886
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "claimable_tokens",
    "inputs": [
      {
        "name": "addr",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3038676
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "claimed_reward",
    "inputs": [
      {
        "name": "_addr",
        "type": "address"
      },
      {
        "name": "_token",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3036
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "claimable_reward",
    "inputs": [
      {
        "name": "_user",
        "type": "address"
      },
      {
        "name": "_reward_token",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 20255
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "set_rewards_receiver",
    "inputs": [
      {
        "name": "_receiver",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 35673
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "claim_rewards",
    "inputs": [],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "claim_rewards",
    "inputs": [
      {
        "name": "_addr",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "claim_rewards",
    "inputs": [
      {
        "name": "_addr",
        "type": "address"
      },
      {
        "name": "_receiver",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "kick",
    "inputs": [
      {
        "name": "addr",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 3137977
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "deposit",
    "inputs": [
      {
        "name": "_value",
        "type": "uint256"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "deposit",
    "inputs": [
      {
        "name": "_value",
        "type": "uint256"
      },
      {
        "name": "_addr",
        "type": "address"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "deposit",
    "inputs": [
      {
        "name": "_value",
        "type": "uint256"
      },
      {
        "name": "_addr",
        "type": "address"
      },
      {
        "name": "_claim_rewards",
        "type": "bool"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "withdraw",
    "inputs": [
      {
        "name": "_value",
        "type": "uint256"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "withdraw",
    "inputs": [
      {
        "name": "_value",
        "type": "uint256"
      },
      {
        "name": "_claim_rewards",
        "type": "bool"
      }
    ],
    "outputs": []
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "transfer",
    "inputs": [
      {
        "name": "_to",
        "type": "address"
      },
      {
        "name": "_value",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 18062826
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "transferFrom",
    "inputs": [
      {
        "name": "_from",
        "type": "address"
      },
      {
        "name": "_to",
        "type": "address"
      },
      {
        "name": "_value",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 18100776
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "approve",
    "inputs": [
      {
        "name": "_spender",
        "type": "address"
      },
      {
        "name": "_value",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 38151
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "increaseAllowance",
    "inputs": [
      {
        "name": "_spender",
        "type": "address"
      },
      {
        "name": "_added_value",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 40695
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "decreaseAllowance",
    "inputs": [
      {
        "name": "_spender",
        "type": "address"
      },
      {
        "name": "_subtracted_value",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 40719
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "add_reward",
    "inputs": [
      {
        "name": "_reward_token",
        "type": "address"
      },
      {
        "name": "_distributor",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 115414
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "set_reward_distributor",
    "inputs": [
      {
        "name": "_reward_token",
        "type": "address"
      },
      {
        "name": "_distributor",
        "type": "address"
      }
    ],
    "outputs": [],
    "gas": 43179
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "deposit_reward_token",
    "inputs": [
      {
        "name": "_reward_token",
        "type": "address"
      },
      {
        "name": "_amount",
        "type": "uint256"
      }
    ],
    "outputs": [],
    "gas": 1540067
  },
  {
    "stateMutability": "nonpayable",
    "type": "function",
    "name": "set_killed",
    "inputs": [
      {
        "name": "_is_killed",
        "type": "bool"
      }
    ],
    "outputs": [],
    "gas": 40529
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "lp_token",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 3018
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "future_epoch_time",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3048
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "balanceOf",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3293
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "totalSupply",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3108
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "allowance",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3568
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "name",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "gas": 13398
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "symbol",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "string"
      }
    ],
    "gas": 11151
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "working_balances",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3443
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "working_supply",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3258
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "period",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "int128"
      }
    ],
    "gas": 3288
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "period_timestamp",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3363
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "integrate_inv_supply",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3393
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "integrate_inv_supply_of",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3593
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "integrate_checkpoint_of",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3623
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "integrate_fraction",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3653
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "inflation_rate",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3468
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reward_count",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 3498
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reward_tokens",
    "inputs": [
      {
        "name": "arg0",
        "type": "uint256"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 3573
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reward_data",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "token",
        "type": "address"
      },
      {
        "name": "distributor",
        "type": "address"
      },
      {
        "name": "period_finish",
        "type": "uint256"
      },
      {
        "name": "rate",
        "type": "uint256"
      },
      {
        "name": "last_update",
        "type": "uint256"
      },
      {
        "name": "integral",
        "type": "uint256"
      }
    ],
    "gas": 15003
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "rewards_receiver",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 3803
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "reward_integral_for",
    "inputs": [
      {
        "name": "arg0",
        "type": "address"
      },
      {
        "name": "arg1",
        "type": "address"
      }
    ],
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "gas": 4048
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "is_killed",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "gas": 3648
  },
  {
    "stateMutability": "view",
    "type": "function",
    "name": "factory",
    "inputs": [],
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "gas": 3678
  }
]
''')