
PROPOSITION_THRESHOLD at the block before the proposal is created and until the proposal is executed.submitVote() is called._propositionSnapshots/_votingSnapshots mappings. New snapshots are taken on every call to:transfer()getVotingPropositionSupplyAt()/getTotalPropositionSupplyAt()​getVotingPowerAt(), getPropositionPowerAt()​PENDING state until the vote begins.votingDelay = 0, then the voting period begins at the next block. Otherwise the voting begins after the votingDelay. The votingDelay value can be fetched from getVotingDelay(). A snapshot of voting powers is taken and can no longer be delegated/transferred for the proposal being voted on. ACTIVE and users can submit a vote for or against the proposal, weighted by the users total voting power (tokens + delegated voting power), within the allotted VOTING_DURATION.MINIMUM_QUORUM parameter, andVOTE_DIFFERENTIAL parameter.SUCCEEDED, otherwise it is FAILEDSUCCEEDED proposal can be queued and will be executed after the execution delay and before grace period expiration. The delay can be fetched from getDelay() and the GRACE_PERIOD can be fetched from GRACE_PERIOD().QUEUED.EXECUTED.EXPIRED.PROPOSITION_THRESHOLD, any user can cancel the proposal.CANCELED.delegate() or delegateByType() on the AAVE and/or the stkAAVE token contracts to delegate one or both of the voting and proposition powers.getProposal() or getProposals().getTokenPower().function create(address executor, address[] memory targets, uint256[] memory values, string[] memory signatures, bytes[] memory calldatas, bool[] memory withDelegatecalls, bytes32 ipfsHash) external returns (uint256 proposalId)executortargetsvaluessignaturescalldataswithDelegatecallsipfsHashproposalIdfunction PROPOSITION_THRESHOLD()function getVotingDelay()function VOTING_DURATION()function MINIMUM_QUORUM()function VOTE_DIFFERENTIAL()function getDelay()function GRACE_PERIOD()delay (getDelay()) in seconds when a proposal can be executed in Proposal Queueing and Execution Period.function delegate(address delegatee)delegateefunction delegateByType(address delegatee, uint8 delegationType)delegateedelegationTypesubmitVote(uint256 proposalId, bool support)proposalIdsupportfunction getDelegateeByType(address delegator, uint8 delegationType) returns(address delegatee)delegatordelegationTypefunction get{Voting,Proposition}PowerAt(address user, uint256 blockNumber) returns(power uint256)userblockNumberfunction getTotal{Voting,Proposition}SupplyAt(uint256 blockNumber) returns(totalSupply uint256)blockNumberGovV2Helperfunction getProposal(uint256 id, IAaveGovernanceV2 governance)idgovernanceGovV2Helperfunction getProposals(uint256 skip, uint256 limit, IAaveGovernanceV2 governance)skiplimituint(-1) to fetch all proposals.governanceGovV2Helperfunction getTokensPower(address user, address[] memory tokens)user. usertokensvotingPower, delegatedAddressVotingPower, propositionPower, delegatedAddressPropositionPower.