# Governor

Governor is the governance module of the protocol. It allows addresses with more than 1% of the current supply of Union token to propose changes to the protocol. Addresses that hold voting weight, at the start of the proposal, invoked through the `getPriorVotes()` function, can submit their votes during a 3-day voting period. If quorum is met, and the majority of votes are cast for the proposal, the proposal succeeds. It is then queued in the Timelock and can be implemented after 2 days.

## Functions

### `proposalCount() → uint256` <a href="#igovernor-proposalcount" id="igovernor-proposalcount"></a>

No description

### `propose(address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, string description) → uint256` <a href="#igovernor-propose-address-uint256-string-bytes-string" id="igovernor-propose-address-uint256-string-bytes-string"></a>

No description

### `queue(uint256 proposalId)` <a href="#igovernor-queue-uint256" id="igovernor-queue-uint256"></a>

No description

### `execute(uint256 proposalId)` <a href="#igovernor-execute-uint256" id="igovernor-execute-uint256"></a>

No description

### `cancel(uint256 proposalId)` <a href="#igovernor-cancel-uint256" id="igovernor-cancel-uint256"></a>

No description

### `getActions(uint256 proposalId) → address[], uint256[], string[], bytes[]` <a href="#igovernor-getactions-uint256" id="igovernor-getactions-uint256"></a>

No description

### `getReceipt(uint256 proposalId, address voter) → struct IGovernor.Receipt` <a href="#igovernor-getreceipt-uint256-address" id="igovernor-getreceipt-uint256-address"></a>

No description

### `state(uint256 proposalId) → enum IGovernor.ProposalState` <a href="#igovernor-state-uint256" id="igovernor-state-uint256"></a>

No description

### `castVote(uint256 proposalId, uint8 support)` <a href="#igovernor-castvote-uint256-uint8" id="igovernor-castvote-uint256-uint8"></a>

No description

### `castVoteWithReason(uint256 proposalId, uint8 support, string reason)` <a href="#igovernor-castvotewithreason-uint256-uint8-string" id="igovernor-castvotewithreason-uint256-uint8-string"></a>

No description

### `castVoteBySig(uint256 proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s)` <a href="#igovernor-castvotebysig-uint256-uint8-uint8-bytes32-bytes32" id="igovernor-castvotebysig-uint256-uint8-uint8-bytes32-bytes32"></a>

No description

## Events

### `ProposalCreated(uint256 id, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 startBlock, uint256 endBlock, string description)` <a href="#igovernor-proposalcreated-uint256-address-address-uint256-string-bytes-uint256-uint256-string" id="igovernor-proposalcreated-uint256-address-address-uint256-string-bytes-uint256-uint256-string"></a>

No description

### `UnionTokenSet(address oldUnionToken, address newUnionToken)` <a href="#igovernor-uniontokenset-address-address" id="igovernor-uniontokenset-address-address"></a>

No description

### `TimelockSet(address oldTimelock, address newTimelock)` <a href="#igovernor-timelockset-address-address" id="igovernor-timelockset-address-address"></a>

No description

### `VotingDelaySet(uint256 oldVotingDelay, uint256 newVotingDelay)` <a href="#igovernor-votingdelayset-uint256-uint256" id="igovernor-votingdelayset-uint256-uint256"></a>

No description

### `VotingPeriodSet(uint256 oldVotingPeriod, uint256 newVotingPeriod)` <a href="#igovernor-votingperiodset-uint256-uint256" id="igovernor-votingperiodset-uint256-uint256"></a>

No description

### `ProposalThresholdSet(uint256 oldProposalThreshold, uint256 newProposalThreshold)` <a href="#igovernor-proposalthresholdset-uint256-uint256" id="igovernor-proposalthresholdset-uint256-uint256"></a>

No description

### `VoteCast(address voter, uint256 proposalId, uint8 support, uint256 votes, string reason)` <a href="#igovernor-votecast-address-uint256-uint8-uint256-string" id="igovernor-votecast-address-uint256-uint8-uint256-string"></a>

No description

### `ProposalCanceled(uint256 id)` <a href="#igovernor-proposalcanceled-uint256" id="igovernor-proposalcanceled-uint256"></a>

No description

### `ProposalQueued(uint256 id, uint256 eta)` <a href="#igovernor-proposalqueued-uint256-uint256" id="igovernor-proposalqueued-uint256-uint256"></a>

No description

### `ProposalExecuted(uint256 id)` <a href="#igovernor-proposalexecuted-uint256" id="igovernor-proposalexecuted-uint256"></a>

No description

### `NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin)` <a href="#igovernor-newpendingadmin-address-address" id="igovernor-newpendingadmin-address-address"></a>

No description

### `NewAdmin(address oldAdmin, address newAdmin)` <a href="#igovernor-newadmin-address-address" id="igovernor-newadmin-address-address"></a>

No description


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.union.finance/developers/governance/igovernor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
