BoardVotingFacet
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?