TokenholderVotingFacet

Git Source

Inherits: IGovernanceDelegate, UnifiedGovernanceBase

Implements IGovernanceDelegate to own and control corporate wallets

OCF-based tokenholder governance with lot-based voting

Functions

onlyTokenholder

modifier onlyTokenholder();

onlyActiveGovernance

modifier onlyActiveGovernance();

authorizeWallet

function authorizeWallet(address wallet) external onlyTokenholder;

deauthorizeWallet

function deauthorizeWallet(address wallet) external onlyTokenholder;

canExecuteFor

function canExecuteFor(address wallet, bytes4 selector) public view override returns (bool);

executeOnWallet

function executeOnWallet(address wallet, bytes calldata data) external override returns (bytes memory);

configureOCFStockClasses

function configureOCFStockClasses(GovernanceStorage.OCFStockClass[] calldata stockClasses)
    external
    override
    onlyActiveGovernance;

configureOCFProposalTypes

function configureOCFProposalTypes(GovernanceStorage.OCFProposalTypeConfig[] calldata proposalTypes)
    external
    override
    onlyActiveGovernance;

updateStakeholderShares

function updateStakeholderShares(address stakeholder, string calldata classId, uint256 shares)
    external
    override
    onlyActiveGovernance;

calculateVotingPower

function calculateVotingPower(address stakeholder, string memory proposalType)
    public
    view
    override
    returns (uint256 totalVotingPower);

canVetoProposal

function canVetoProposal(address stakeholder, string memory proposalType) public view override returns (bool canVeto);

castVoteOCF

function castVoteOCF(uint256 proposalId, uint8 support, string calldata proposalType) external;

castVoteWithLots

function castVoteWithLots(
    uint256 proposalId,
    uint8 support,
    bytes32[] calldata lotIds,
    address assetContract,
    string calldata proposalType
) external;

vetoProposal

function vetoProposal(uint256 proposalId, string calldata proposalType) external;

createTokenholderProposal

function createTokenholderProposal(
    TokenholderProposalType proposalType,
    address[] memory targets,
    uint256[] memory values,
    bytes[] memory calldatas,
    string memory description,
    string memory proposalTypeName
) external onlyTokenholder returns (uint256 proposalId);

_hasGovernanceRole

function _hasGovernanceRole(address account) internal view returns (bool);

Events

TokenholderProposalCreated

event TokenholderProposalCreated(uint256 indexed proposalId, address indexed proposer, string proposalType);

LotVoteCast

event LotVoteCast(
    address indexed voter, uint256 indexed proposalId, bytes32[] lotIds, uint8 support, uint256 totalWeight
);

VotingPowerDelegated

event VotingPowerDelegated(address indexed delegator, address indexed delegate, uint256 amount);

VotingPowerUndelegated

event VotingPowerUndelegated(address indexed delegator, address indexed delegate, uint256 amount);

WalletAuthorized

event WalletAuthorized(address indexed wallet);

WalletDeauthorized

event WalletDeauthorized(address indexed wallet);

Enums

TokenholderProposalType

enum TokenholderProposalType {
    ShareholderResolution,
    MajorTransaction,
    ChartAmendment,
    EquityRound,
    LiquidationEvent,
    DirectorElection
}

Last updated

Was this helpful?