RegSOfferingFacet
Implements Reg S specific compliance including:
Foreign investor verification
Distribution compliance periods
Category-specific restrictions
Specialized facet for Regulation S offshore offerings
Uses ComplianceFacet and ExemptionLimitFacet for shared functionality
State Variables
CAT_TWO_COMPLIANCE_PERIOD
uint256 public constant CAT_TWO_COMPLIANCE_PERIOD = 40 days;
CAT_THREE_COMPLIANCE_PERIOD
uint256 public constant CAT_THREE_COMPLIANCE_PERIOD = 365 days;
Functions
initializeRegS
Initialize Regulation S specific settings
function initializeRegS(uint8 category, address attestationRegistry, uint256 exemptionLimit) external;
Parameters
category
uint8
The Regulation S category (1, 2, or 3)
attestationRegistry
address
Address of the attestation registry
exemptionLimit
uint256
12-month rolling exemption limit (0 for unlimited)
_setCategory
Set the Regulation S category and corresponding compliance period
function _setCategory(OfferingStorage.Layout storage s, uint8 category) internal;
Parameters
s
OfferingStorage.Layout
category
uint8
The Regulation S category (1, 2, or 3)
validateRegSInvestment
Validate investment for Regulation S compliance
function validateRegSInvestment(address investor, uint256 amount) external view returns (bool valid);
Parameters
investor
address
The investor address
amount
uint256
The investment amount
Returns
valid
bool
Whether the investment is valid under Reg S rules
enforceRegSCompliance
Enforce Regulation S compliance and exemption limits
function enforceRegSCompliance(address investor, uint256 amount) external view;
Parameters
investor
address
The investor address
amount
uint256
The investment amount
isCompliancePeriodActive
Check if the distribution compliance period is active
function isCompliancePeriodActive() public view returns (bool);
Returns
<none>
bool
bool True if the compliance period is active
getRegSConfig
Get Regulation S configuration
function getRegSConfig()
external
view
returns (uint8 category, uint256 complianceStart, uint256 complianceEnd, bool isActive);
Returns
category
uint8
The Reg S category
complianceStart
uint256
Distribution compliance start time
complianceEnd
uint256
Distribution compliance end time
isActive
bool
Whether compliance period is active
_requireEntity
Internal function to check if caller is the entity
function _requireEntity(OfferingStorage.Layout storage s) internal view;
Events
RegSOfferingConfigured
event RegSOfferingConfigured(uint8 category, uint256 complianceStart, uint256 complianceEnd, uint256 exemptionLimit);
Enums
Category
enum Category {
CategoryOne,
CategoryTwo,
CategoryThree
}
Last updated
Was this helpful?