[
  {
    "constant": true,
    "inputs": [],
    "name": "CHANGE_VOTE_TIME_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "hasInitialized",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_executionScript",
        "type": "bytes"
      },
      {
        "name": "_context",
        "type": "bytes"
      }
    ],
    "name": "newVote",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      }
    ],
    "name": "isVoteOpenForVoting",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "MAX_VOTES_DELEGATION_SET_LENGTH",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_agreement",
        "type": "address"
      }
    ],
    "name": "setAgreement",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_script",
        "type": "bytes"
      }
    ],
    "name": "getEVMScriptExecutor",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getRecoveryVault",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_settingId",
        "type": "uint256"
      }
    ],
    "name": "getSetting",
    "outputs": [
      {
        "name": "voteTime",
        "type": "uint64"
      },
      {
        "name": "supportRequiredPct",
        "type": "uint64"
      },
      {
        "name": "minAcceptQuorumPct",
        "type": "uint64"
      },
      {
        "name": "delegatedVotingPeriod",
        "type": "uint64"
      },
      {
        "name": "quietEndingPeriod",
        "type": "uint64"
      },
      {
        "name": "quietEndingExtension",
        "type": "uint64"
      },
      {
        "name": "executionDelay",
        "type": "uint64"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "settingsLength",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_quietEndingPeriod",
        "type": "uint64"
      },
      {
        "name": "_quietEndingExtension",
        "type": "uint64"
      }
    ],
    "name": "changeQuietEndingConfiguration",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CHANGE_EXECUTION_DELAY_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "forwarderType",
    "outputs": [
      {
        "name": "",
        "type": "uint8"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_representative",
        "type": "address"
      }
    ],
    "name": "setRepresentative",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      }
    ],
    "name": "getVote",
    "outputs": [
      {
        "name": "yea",
        "type": "uint256"
      },
      {
        "name": "nay",
        "type": "uint256"
      },
      {
        "name": "totalPower",
        "type": "uint256"
      },
      {
        "name": "startDate",
        "type": "uint64"
      },
      {
        "name": "snapshotBlock",
        "type": "uint64"
      },
      {
        "name": "status",
        "type": "uint8"
      },
      {
        "name": "settingId",
        "type": "uint256"
      },
      {
        "name": "actionId",
        "type": "uint256"
      },
      {
        "name": "pausedAt",
        "type": "uint64"
      },
      {
        "name": "pauseDuration",
        "type": "uint64"
      },
      {
        "name": "quietEndingExtensionDuration",
        "type": "uint64"
      },
      {
        "name": "quietEndingSnapshotSupport",
        "type": "uint8"
      },
      {
        "name": "executionScriptHash",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_evmScript",
        "type": "bytes"
      },
      {
        "name": "_context",
        "type": "bytes"
      }
    ],
    "name": "forward",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_minAcceptQuorumPct",
        "type": "uint64"
      }
    ],
    "name": "changeMinAcceptQuorumPct",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CHANGE_SUPPORT_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      }
    ],
    "name": "canChallenge",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_executionDelay",
        "type": "uint64"
      }
    ],
    "name": "changeExecutionDelay",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      },
      {
        "name": "_supports",
        "type": "bool"
      },
      {
        "name": "_voters",
        "type": "address[]"
      }
    ],
    "name": "voteOnBehalfOf",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      }
    ],
    "name": "canClose",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CHANGE_DELEGATED_VOTING_PERIOD_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_disputableActionId",
        "type": "uint256"
      }
    ],
    "name": "onDisputableActionAllowed",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_supportRequiredPct",
        "type": "uint64"
      }
    ],
    "name": "changeSupportRequiredPct",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "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": "_disputableActionId",
        "type": "uint256"
      },
      {
        "name": "_challengeId",
        "type": "uint256"
      },
      {
        "name": "_challenger",
        "type": "address"
      }
    ],
    "name": "onDisputableActionChallenged",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "appId",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      },
      {
        "name": "_voters",
        "type": "address[]"
      },
      {
        "name": "_representative",
        "type": "address"
      }
    ],
    "name": "canVoteOnBehalfOf",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CHANGE_QUIET_ENDING_ROLE",
    "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": true,
    "inputs": [],
    "name": "CHALLENGE_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voter",
        "type": "address"
      },
      {
        "name": "_representative",
        "type": "address"
      }
    ],
    "name": "isRepresentativeOf",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      },
      {
        "name": "_executionScript",
        "type": "bytes"
      }
    ],
    "name": "executeVote",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CHANGE_QUORUM_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      },
      {
        "name": "_voter",
        "type": "address"
      }
    ],
    "name": "getCastVote",
    "outputs": [
      {
        "name": "state",
        "type": "uint8"
      },
      {
        "name": "caster",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_token",
        "type": "address"
      }
    ],
    "name": "transferToVault",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_sender",
        "type": "address"
      },
      {
        "name": "_role",
        "type": "bytes32"
      },
      {
        "name": "_params",
        "type": "uint256[]"
      }
    ],
    "name": "canPerform",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getEVMScriptRegistry",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      }
    ],
    "name": "canRepresentativesVote",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_token",
        "type": "address"
      },
      {
        "name": "_voteTime",
        "type": "uint64"
      },
      {
        "name": "_supportRequiredPct",
        "type": "uint64"
      },
      {
        "name": "_minAcceptQuorumPct",
        "type": "uint64"
      },
      {
        "name": "_delegatedVotingPeriod",
        "type": "uint64"
      },
      {
        "name": "_quietEndingPeriod",
        "type": "uint64"
      },
      {
        "name": "_quietEndingExtension",
        "type": "uint64"
      },
      {
        "name": "_executionDelay",
        "type": "uint64"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_disputableActionId",
        "type": "uint256"
      }
    ],
    "name": "onDisputableActionVoided",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_delegatedVotingPeriod",
        "type": "uint64"
      }
    ],
    "name": "changeDelegatedVotingPeriod",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "getAgreement",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "CREATE_VOTES_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_sender",
        "type": "address"
      },
      {
        "name": "_evmScript",
        "type": "bytes"
      }
    ],
    "name": "canForward",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_voteTime",
        "type": "uint64"
      }
    ],
    "name": "changeVoteTime",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      },
      {
        "name": "_supports",
        "type": "bool"
      }
    ],
    "name": "vote",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      }
    ],
    "name": "canExecute",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [
      {
        "name": "_voteId",
        "type": "uint256"
      },
      {
        "name": "_voter",
        "type": "address"
      }
    ],
    "name": "canVote",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "SET_AGREEMENT_ROLE",
    "outputs": [
      {
        "name": "",
        "type": "bytes32"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "kernel",
    "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": true,
    "inputs": [],
    "name": "votesLength",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": false,
    "inputs": [
      {
        "name": "_disputableActionId",
        "type": "uint256"
      }
    ],
    "name": "onDisputableActionRejected",
    "outputs": [],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "token",
    "outputs": [
      {
        "name": "",
        "type": "address"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "PCT_BASE",
    "outputs": [
      {
        "name": "",
        "type": "uint256"
      }
    ],
    "payable": false,
    "stateMutability": "view",
    "type": "function"
  },
  {
    "constant": true,
    "inputs": [],
    "name": "isForwarder",
    "outputs": [
      {
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "settingId",
        "type": "uint256"
      }
    ],
    "name": "NewSetting",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "voteTime",
        "type": "uint64"
      }
    ],
    "name": "ChangeVoteTime",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "supportRequiredPct",
        "type": "uint64"
      }
    ],
    "name": "ChangeSupportRequired",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "minAcceptQuorumPct",
        "type": "uint64"
      }
    ],
    "name": "ChangeMinQuorum",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "delegatedVotingPeriod",
        "type": "uint64"
      }
    ],
    "name": "ChangeDelegatedVotingPeriod",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "quietEndingPeriod",
        "type": "uint64"
      },
      {
        "indexed": false,
        "name": "quietEndingExtension",
        "type": "uint64"
      }
    ],
    "name": "ChangeQuietEndingConfiguration",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "name": "executionDelay",
        "type": "uint64"
      }
    ],
    "name": "ChangeExecutionDelay",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "name": "creator",
        "type": "address"
      },
      {
        "indexed": false,
        "name": "context",
        "type": "bytes"
      },
      {
        "indexed": false,
        "name": "executionScript",
        "type": "bytes"
      }
    ],
    "name": "StartVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "name": "challengeId",
        "type": "uint256"
      }
    ],
    "name": "PauseVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      }
    ],
    "name": "ResumeVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      }
    ],
    "name": "CancelVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      }
    ],
    "name": "ExecuteVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "name": "passing",
        "type": "bool"
      }
    ],
    "name": "QuietEndingExtendVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "name": "voter",
        "type": "address"
      },
      {
        "indexed": false,
        "name": "supports",
        "type": "bool"
      },
      {
        "indexed": false,
        "name": "caster",
        "type": "address"
      }
    ],
    "name": "CastVote",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voter",
        "type": "address"
      },
      {
        "indexed": true,
        "name": "representative",
        "type": "address"
      }
    ],
    "name": "ChangeRepresentative",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "voteId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "name": "voter",
        "type": "address"
      },
      {
        "indexed": true,
        "name": "representative",
        "type": "address"
      }
    ],
    "name": "ProxyVoteFailure",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "name": "executor",
        "type": "address"
      },
      {
        "indexed": false,
        "name": "script",
        "type": "bytes"
      },
      {
        "indexed": false,
        "name": "input",
        "type": "bytes"
      },
      {
        "indexed": false,
        "name": "returnData",
        "type": "bytes"
      }
    ],
    "name": "ScriptResult",
    "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": "agreement",
        "type": "address"
      }
    ],
    "name": "AgreementSet",
    "type": "event"
  }
]
