IBoardGovernance
Interface for corporate board governance with roles and committee management
Functions
propose
Create a new board proposal
function propose(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, string memory description)
external
returns (uint256 proposalId);
Parameters
targets
address[]
Array of target addresses
values
uint256[]
Array of ether values
calldatas
bytes[]
Array of call data
description
string
Proposal description
Returns
proposalId
uint256
The ID of the created proposal
proposeBoard
Create a board-specific proposal
function proposeBoard(
BoardProposalType proposalType,
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas,
string memory description
) external returns (uint256 proposalId);
Parameters
proposalType
BoardProposalType
Type of board proposal
targets
address[]
Array of target addresses
values
uint256[]
Array of ether values
calldatas
bytes[]
Array of call data
description
string
Proposal description
Returns
proposalId
uint256
The ID of the created proposal
castVote
Cast a vote as a board member
function castVote(uint256 proposalId, uint8 support) external returns (uint256 balance);
Parameters
proposalId
uint256
The proposal ID
support
uint8
The vote type (0=against, 1=for, 2=abstain)
castVoteWithReason
Cast a vote with reason as a board member
function castVoteWithReason(uint256 proposalId, uint8 support, string calldata reason)
external
returns (uint256 balance);
Parameters
proposalId
uint256
The proposal ID
support
uint8
The vote type
reason
string
Voting reason
executeiveApproval
Executive approval for urgent matters
function executeiveApproval(uint256 proposalId, string calldata approvalType) external;
Parameters
proposalId
uint256
The proposal ID
approvalType
string
Type of executive approval
queue
Queue a succeeded proposal for execution
function queue(uint256 proposalId) external;
Parameters
proposalId
uint256
The proposal ID
execute
Execute a queued proposal
function execute(uint256 proposalId) external payable;
Parameters
proposalId
uint256
The proposal ID
cancel
Cancel a proposal
function cancel(uint256 proposalId) external;
Parameters
proposalId
uint256
The proposal ID
addBoardMember
Add a board member
function addBoardMember(address member, BoardRole role) external;
Parameters
member
address
The member address
role
BoardRole
The board role
removeBoardMember
Remove a board member
function removeBoardMember(address member) external;
Parameters
member
address
The member address
updateBoardMemberRole
Update a board member's role
function updateBoardMemberRole(address member, BoardRole newRole) external;
Parameters
member
address
The member address
newRole
BoardRole
The new role
grantExecutiveAuthority
Grant executive authority
function grantExecutiveAuthority(address executive, string calldata authority) external;
Parameters
executive
address
The executive address
authority
string
The authority description
getProposal
Get proposal details
function getProposal(uint256 proposalId) external view returns (ProposalCore memory proposal);
Parameters
proposalId
uint256
The proposal ID
Returns
proposal
ProposalCore
The proposal core details
getProposalVotes
Get proposal votes
function getProposalVotes(uint256 proposalId) external view returns (ProposalVotes memory votes);
Parameters
proposalId
uint256
The proposal ID
Returns
votes
ProposalVotes
The vote tallies
state
Get proposal state
function state(uint256 proposalId) external view returns (ProposalState state);
Parameters
proposalId
uint256
The proposal ID
Returns
state
ProposalState
The current proposal state
getBoardMember
Get board member details
function getBoardMember(address member) external view returns (BoardMember memory boardMember);
Parameters
member
address
The member address
Returns
boardMember
BoardMember
The board member details
getBoardMembers
Get all board members
function getBoardMembers() external view returns (address[] memory members);
Returns
members
address[]
Array of board member addresses
isBoardMember
Check if an address is a board member
function isBoardMember(address member) external view returns (bool isMember);
Parameters
member
address
The address to check
Returns
isMember
bool
True if the address is a board member
hasVoted
Check if an account has voted on a proposal
function hasVoted(uint256 proposalId, address account) external view returns (bool hasVoted);
Parameters
proposalId
uint256
The proposal ID
account
address
The account address
Returns
hasVoted
bool
True if the account has voted
quorum
Get quorum requirement for a proposal
function quorum(uint256 proposalId) external view returns (uint256 quorum);
Parameters
proposalId
uint256
The proposal ID
Returns
quorum
uint256
The required quorum
votingDelay
Get voting delay (blocks between proposal and voting start)
function votingDelay() external view returns (uint256 delay);
Returns
delay
uint256
The voting delay in blocks
votingPeriod
Get voting period (blocks for voting duration)
function votingPeriod() external view returns (uint256 period);
Returns
period
uint256
The voting period in blocks
boardQuorum
Get board quorum percentage
function boardQuorum() external view returns (uint256 percentage);
Returns
percentage
uint256
The board quorum percentage (1-100)
Events
ProposalCreated
event ProposalCreated(
uint256 indexed proposalId,
address indexed proposer,
address[] targets,
uint256[] values,
string[] signatures,
bytes[] calldatas,
uint256 startBlock,
uint256 endBlock,
string description
);
BoardProposalCreated
event BoardProposalCreated(uint256 indexed proposalId, address indexed proposer, BoardProposalType proposalType);
BoardVoteCast
event BoardVoteCast(address indexed voter, uint256 indexed proposalId, uint8 support, BoardRole role, string reason);
ExecutiveApproval
event ExecutiveApproval(uint256 indexed proposalId, address indexed executive, string approvalType);
BoardMemberAdded
event BoardMemberAdded(address indexed member, BoardRole role);
BoardMemberRemoved
event BoardMemberRemoved(address indexed member, BoardRole role);
ExecutiveAuthorityGranted
event ExecutiveAuthorityGranted(address indexed executive, string authority);
ProposalQueued
event ProposalQueued(uint256 indexed proposalId, uint256 eta);
ProposalExecuted
event ProposalExecuted(uint256 indexed proposalId);
ProposalCancelled
event ProposalCancelled(uint256 indexed proposalId);
Structs
ProposalCore
struct ProposalCore {
uint256 id;
address proposer;
uint256 startBlock;
uint256 endBlock;
string description;
ProposalState state;
BoardProposalType proposalType;
}
ProposalVotes
struct ProposalVotes {
uint256 againstVotes;
uint256 forVotes;
uint256 abstainVotes;
}
BoardMember
struct BoardMember {
address member;
BoardRole role;
bool active;
uint256 joinedAt;
}
Enums
ProposalState
enum ProposalState {
Pending,
Active,
Cancelled,
Defeated,
Succeeded,
Queued,
Expired,
Executed
}
VoteType
enum VoteType {
Against,
For,
Abstain
}
BoardRole
enum BoardRole {
Director,
IndependentDirector,
CEO,
CFO,
Chairman,
AuditCommittee,
CompensationCommittee
}
BoardProposalType
enum BoardProposalType {
EquityGrant,
ExecutiveCompensation,
FinancialApproval,
PolicyChange,
BoardResolution,
EmergencyAction
}
Last updated
Was this helpful?