IRule701
Interface for Rule 701 compliance management
Functions
createGrant
function createGrant(
address employee,
address assetType,
uint256 amount,
uint256 vestingStart,
uint256 vestingDuration,
uint256 exercisePrice
) external returns (bytes32 grantId);
exerciseGrant
function exerciseGrant(bytes32 grantId, uint256 amount) external;
cancelGrant
function cancelGrant(bytes32 grantId, string calldata reason) external;
getGrant
function getGrant(bytes32 grantId) external view returns (Grant memory);
getEmployeeRecord
function getEmployeeRecord(address employee) external view returns (EmployeeRecord memory);
isWithinLimits
function isWithinLimits(address employee, uint256 amount) external view returns (bool);
setAnnualLimit
function setAnnualLimit(uint256 newLimit) external;
setRule701Status
function setRule701Status(bool isActive) external;
addGrantAdmin
function addGrantAdmin(address admin) external;
removeGrantAdmin
function removeGrantAdmin(address admin) external;
Errors
Rule701Inactive
error Rule701Inactive();
ExceedsAnnualLimit
error ExceedsAnnualLimit();
ExceedsEmployeeLimit
error ExceedsEmployeeLimit();
ExceedsCompanyLimit
error ExceedsCompanyLimit();
InvalidGrant
error InvalidGrant();
GrantNotActive
error GrantNotActive();
UnauthorizedAccess
error UnauthorizedAccess();
InvalidAssetType
error InvalidAssetType();
Structs
Grant
struct Grant {
address employee;
address assetType;
uint256 amount;
uint256 grantDate;
uint256 vestingStart;
uint256 vestingDuration;
uint256 exercisePrice;
bool isActive;
bool isExercised;
}
EmployeeRecord
struct EmployeeRecord {
uint256 totalGranted;
uint256 annualGranted;
uint256 lastGrantYear;
bytes32[] grantIds;
bool isActive;
}
Last updated
Was this helpful?