BoardVotingFacet

Git Source

Inherits: IGovernanceDelegate, UnifiedGovernanceBase

Implements IGovernanceDelegate to own and control corporate wallets

OCF-based board governance with multi-class voting and corporate wallet control

Functions

onlyBoardMember

modifier onlyBoardMember();

onlyActiveGovernance

modifier onlyActiveGovernance();

authorizeWallet

function authorizeWallet(address wallet) external onlyBoardMember;

deauthorizeWallet

function deauthorizeWallet(address wallet) external onlyBoardMember;

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);

grantExecutiveApproval

function grantExecutiveApproval(
    address executive,
    address targetWallet,
    bytes4 selector,
    uint256 maxValue,
    uint256 validFor
) external onlyBoardMember;

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;

vetoProposal

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

addBoardMember

function addBoardMember(address member, string calldata role) external onlyActiveGovernance;

removeBoardMember

function removeBoardMember(address member) external onlyActiveGovernance;

_hasRole

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

Events

BoardProposalCreated

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

BoardVoteCast

event BoardVoteCast(address indexed voter, uint256 indexed proposalId, uint8 support, string role);

ExecutiveApproval

event ExecutiveApproval(uint256 indexed proposalId, address indexed executive, string approvalType);

BoardMemberAdded

event BoardMemberAdded(address indexed member, string role);

BoardMemberRemoved

event BoardMemberRemoved(address indexed member, string role);

ExecutiveAuthorityGranted

event ExecutiveAuthorityGranted(address indexed executive, string authority);

WalletAuthorized

event WalletAuthorized(address indexed wallet);

WalletDeauthorized

event WalletDeauthorized(address indexed wallet);

Enums

BoardRole

enum BoardRole {
    Director,
    IndependentDirector,
    CEO,
    CFO,
    Chairman,
    AuditCommittee,
    CompensationCommittee
}

BoardProposalType

enum BoardProposalType {
    EquityGrant,
    ExecutiveCompensation,
    BoardAppointment,
    AuditApproval,
    BudgetApproval,
    StrategicDecision,
    PolicyChange
}

Last updated

Was this helpful?