[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_registry",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AlreadyAdvisoryBoardMember",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AlreadyVoted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CannotCancelMemberProposal",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ExecutionPeriodHasEnded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidAdvisoryBoardSwap",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotAuthorizedToVote",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "NotMember",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyAdvisoryBoard",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyAdvisoryBoardMember",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyGovernor",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OnlyMember",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "currentState",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "checks",
        "type": "uint256"
      }
    ],
    "name": "Paused",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProposalAlreadyExecuted",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProposalIsCanceled",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProposalNotFound",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ProposalThresholdNotMet",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "RevertedWithoutReason",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TargetIsNotAContract",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TimelockHasNotEnded",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "callerIndex",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "authorizedBitmap",
        "type": "uint256"
      }
    ],
    "name": "Unauthorized",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VotePeriodHasEnded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VoteQuorumNotMet",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VoteTalliedAgainst",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "VoteThresholdNotMet",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "ProposalCanceled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "enum IGovernor.ProposalKind",
        "name": "kind",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "description",
        "type": "string"
      }
    ],
    "name": "ProposalCreated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "ProposalExecuted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      },
      {
        "indexed": true,
        "internalType": "enum IGovernor.ProposalKind",
        "name": "kind",
        "type": "uint8"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "voterId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "enum IGovernor.Choice",
        "name": "choice",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "weight",
        "type": "uint256"
      }
    ],
    "name": "VoteCast",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "ADVISORY_BOARD_THRESHOLD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MEMBER_VOTE_QUORUM_PERCENTAGE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "PROPOSAL_THRESHOLD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "TIMELOCK_PERIOD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "VOTE_WEIGHT_CAP_PERCENTAGE",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "VOTING_PERIOD",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "cancel",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "execute",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "getProposal",
    "outputs": [
      {
        "components": [
          {
            "internalType": "enum IGovernor.ProposalKind",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "enum IGovernor.ProposalStatus",
            "name": "status",
            "type": "uint8"
          },
          {
            "internalType": "uint32",
            "name": "proposedAt",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "voteBefore",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "executeAfter",
            "type": "uint32"
          }
        ],
        "internalType": "struct IGovernor.Proposal",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "getProposalDescription",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "getProposalTally",
    "outputs": [
      {
        "components": [
          {
            "internalType": "uint96",
            "name": "againstVotes",
            "type": "uint96"
          },
          {
            "internalType": "uint96",
            "name": "forVotes",
            "type": "uint96"
          },
          {
            "internalType": "uint96",
            "name": "abstainVotes",
            "type": "uint96"
          }
        ],
        "internalType": "struct IGovernor.Tally",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "name": "getProposalTransactions",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "target",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          },
          {
            "internalType": "bytes",
            "name": "data",
            "type": "bytes"
          }
        ],
        "internalType": "struct IGovernor.Transaction[]",
        "name": "",
        "type": "tuple[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_proposalId",
        "type": "uint256"
      }
    ],
    "name": "getProposalWithDetails",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      },
      {
        "components": [
          {
            "internalType": "enum IGovernor.ProposalKind",
            "name": "kind",
            "type": "uint8"
          },
          {
            "internalType": "enum IGovernor.ProposalStatus",
            "name": "status",
            "type": "uint8"
          },
          {
            "internalType": "uint32",
            "name": "proposedAt",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "voteBefore",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "executeAfter",
            "type": "uint32"
          }
        ],
        "internalType": "struct IGovernor.Proposal",
        "name": "",
        "type": "tuple"
      },
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      },
      {
        "components": [
          {
            "internalType": "address",
            "name": "target",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          },
          {
            "internalType": "bytes",
            "name": "data",
            "type": "bytes"
          }
        ],
        "internalType": "struct IGovernor.Transaction[]",
        "name": "",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "uint96",
            "name": "againstVotes",
            "type": "uint96"
          },
          {
            "internalType": "uint96",
            "name": "forVotes",
            "type": "uint96"
          },
          {
            "internalType": "uint96",
            "name": "abstainVotes",
            "type": "uint96"
          }
        ],
        "internalType": "struct IGovernor.Tally",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "memberId",
        "type": "uint256"
      }
    ],
    "name": "getVote",
    "outputs": [
      {
        "components": [
          {
            "internalType": "enum IGovernor.Choice",
            "name": "choice",
            "type": "uint8"
          },
          {
            "internalType": "uint96",
            "name": "weight",
            "type": "uint96"
          }
        ],
        "internalType": "struct IGovernor.Vote",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "voter",
        "type": "address"
      }
    ],
    "name": "getVoteWeight",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes[]",
        "name": "data",
        "type": "bytes[]"
      }
    ],
    "name": "multicall",
    "outputs": [
      {
        "internalType": "bytes[]",
        "name": "results",
        "type": "bytes[]"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "proposalCount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "target",
            "type": "address"
          },
          {
            "internalType": "uint96",
            "name": "value",
            "type": "uint96"
          },
          {
            "internalType": "bytes",
            "name": "data",
            "type": "bytes"
          }
        ],
        "internalType": "struct IGovernor.Transaction[]",
        "name": "txs",
        "type": "tuple[]"
      },
      {
        "internalType": "string",
        "name": "description",
        "type": "string"
      }
    ],
    "name": "propose",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "from",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "to",
            "type": "uint256"
          }
        ],
        "internalType": "struct IGovernor.AdvisoryBoardSwap[]",
        "name": "swaps",
        "type": "tuple[]"
      },
      {
        "internalType": "string",
        "name": "description",
        "type": "string"
      }
    ],
    "name": "proposeAdvisoryBoardSwap",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "registry",
    "outputs": [
      {
        "internalType": "contract IRegistry",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokenController",
    "outputs": [
      {
        "internalType": "contract ITokenController",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "proposalId",
        "type": "uint256"
      },
      {
        "internalType": "enum IGovernor.Choice",
        "name": "choice",
        "type": "uint8"
      }
    ],
    "name": "vote",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]