import json

LIDO_DAO_ABI = json.loads('''
[
  {
    "constant": true,
    "inputs": [],
    "name": "hasInitialized",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "KERNEL_APP_ID",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "APP_ADDR_NAMESPACE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getRecoveryVault",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_appBase",
        "type": "address"
      },
      {
        "name": "_initializePayload",
        "type": "bytes"
      },
      {
        "name": "_setDefault",
        "type": "bool"
      }
    ],
    "name": "newAppInstance",
    "outputs": [
      {
        "name": "appProxy",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "",
        "type": "bytes32"
      },
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "name": "apps",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_baseAcl",
        "type": "address"
      },
      {
        "name": "_permissionsCreator",
        "type": "address"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CORE_NAMESPACE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "token",
        "type": "address"
      }
    ],
    "name": "allowRecoverability",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_appBase",
        "type": "address"
      }
    ],
    "name": "newAppInstance",
    "outputs": [
      {
        "name": "appProxy",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "recoveryVaultAppId",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getInitializationBlock",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_recoveryVaultAppId",
        "type": "bytes32"
      }
    ],
    "name": "setRecoveryVaultAppId",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "APP_MANAGER_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_appBase",
        "type": "address"
      }
    ],
    "name": "newPinnedAppInstance",
    "outputs": [
      {
        "name": "appProxy",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_token",
        "type": "address"
      }
    ],
    "name": "transferToVault",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_namespace",
        "type": "bytes32"
      },
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_app",
        "type": "address"
      }
    ],
    "name": "setApp",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_namespace",
        "type": "bytes32"
      },
      {
        "name": "_appId",
        "type": "bytes32"
      }
    ],
    "name": "getApp",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_appBase",
        "type": "address"
      },
      {
        "name": "_initializePayload",
        "type": "bytes"
      },
      {
        "name": "_setDefault",
        "type": "bool"
      }
    ],
    "name": "newPinnedAppInstance",
    "outputs": [
      {
        "name": "appProxy",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_kernel",
        "type": "address"
      },
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_initializePayload",
        "type": "bytes"
      }
    ],
    "name": "newAppProxyPinned",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "APP_BASES_NAMESPACE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "acl",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "isPetrified",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_kernel",
        "type": "address"
      },
      {
        "name": "_appId",
        "type": "bytes32"
      }
    ],
    "name": "newAppProxy",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "DEFAULT_ACL_APP_ID",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_kernel",
        "type": "address"
      },
      {
        "name": "_appId",
        "type": "bytes32"
      },
      {
        "name": "_initializePayload",
        "type": "bytes"
      }
    ],
    "name": "newAppProxy",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_who",
        "type": "address"
      },
      {
        "name": "_where",
        "type": "address"
      },
      {
        "name": "_what",
        "type": "bytes32"
      },
      {
        "name": "_how",
        "type": "bytes"
      }
    ],
    "name": "hasPermission",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_kernel",
        "type": "address"
      },
      {
        "name": "_appId",
        "type": "bytes32"
      }
    ],
    "name": "newAppProxyPinned",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "name": "_shouldPetrify",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "proxy",
        "type": "address"
      },
      {
        "indexed": false,
        "name": "isUpgradeable",
        "type": "bool"
      },
      {
        "indexed": false,
        "name": "appId",
        "type": "bytes32"
      }
    ],
    "name": "NewAppProxy",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "vault",
        "type": "address"
      },
      {
        "indexed": true,
        "name": "token",
        "type": "address"
      },
      {
        "indexed": false,
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "RecoverToVault",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "namespace",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "name": "appId",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "name": "app",
        "type": "address"
      }
    ],
    "name": "SetApp",
    "type": "event"
  }
]
''')