CapSign
  • Home
  • Compliance Framework
  • Interactive Demos
    • Overview
  • Create an Account
  • Identity Verification
  • Investor Qualification
  • Guides for Individuals
    • Invest in an Offering
  • Guides for Corporations
    • Create a Share Class
    • Authorize Shares
    • Issue Shares
    • Upload a Document
    • Create a Document Template
    • Create an Offering
    • Manage Your Offering
    • Add a Trusted Attestor
    • Approve an Investment
  • API Reference
    • Overview
    • Compliance
      • Exemptions
        • FederalExemption.sol
          • FederalExemption
        • RegAExemption.sol
          • RegAExemption
        • RegCFExemption.sol
          • RegCFExemption
        • RegDExemption.sol
          • RegDExemption
        • Rule144Exemption.sol
          • Rule144Exemption
        • Rule701Exemption.sol
          • Rule701Exemption
      • IComplianceModule.sol
        • IComplianceModule
      • Vesting.sol
        • Vesting
    • Currencies
      • WETH.sol
        • WETH
      • CMX.sol
        • CMX
      • USD.sol
        • USD
    • Governance
      • BoardManagement.sol
        • BoardManagement
      • ProxyVoting.sol
        • ProxyVoting
    • Identity
      • AttestationRegistry.sol
        • AttestationRegistry
      • ERC20PaymentResolver.sol
        • ERC20PaymentResolver
      • Roles
        • BaseRoles.sol
          • BaseRoles
        • PrivateOfferingRoles.sol
          • PrivateOfferingRoles
        • PublicOfferingRoles.sol
          • PublicOfferingRoles
      • Whitelist.sol
        • Whitelist
    • Issuance
      • Compensation
        • CompensationFactory.sol
          • CompensationFactory
        • EmployeeStockOptionCompensation.sol
          • EmployeeStockOptionCompensation
        • RestrictedStockAwardCompensation.sol
          • RestrictedStockAwardCompensation
        • StockAppreciationRightsCompensation.sol
          • StockAppreciationRightCompensation
        • WarrantCompensation.sol
          • WarrantCompensation
      • Offering
        • ExemptOffering.sol
          • ExemptOffering
        • InitialPublicOffering.sol
          • InitialPublicOffering
        • Offering.sol
          • Offering
        • OfferingFactory.sol
          • OfferingFactory
        • Rule506bOffering.sol
          • Rule506bOffering
        • Rule506cOffering.sol
          • Rule506cOffering
        • TenderOffer.sol
          • TenderOffer
    • Investor Relations
      • DividendDistributor.sol
        • DividendDistributor
      • SubscriptionManager.sol
        • SubscriptionManager
        • IERC20
    • Ledgers
      • Ledger.sol
        • Ledger
      • LedgerManager.sol
        • LedgerManager
      • SettlementManager.sol
        • SettlementManager
    • Marketplace
      • AuctionMarket.sol
        • AuctionMarket
      • BaseMarket.sol
        • BaseMarket
      • BulletinBoardMarket.sol
        • BulletinBoardMarket
      • Contents
        • BaseCollateral.sol
          • BaseCollateral
        • ERC20Collateral.sol
          • ERC20Collateral
        • NativeCollateral.sol
          • NativeCollateral
      • LiquidityPoolMarket.sol
        • LiquidityPoolMarket
      • Contents
        • BaseMargin.sol
          • BaseMargin
        • MarginAccount.sol
          • MarginAccount
      • MarginOrderBookMarket.sol
        • MarginOrderBookMarket
      • OTCMarket.sol
        • OTCMarket
      • OrderBookMarket.sol
        • OrderBookMarket
      • Contents
        • BrokerNetSettlement.sol
          • BrokerNetSettlement
        • CustodyBridge.sol
          • CustodyBridge
        • DirectSettlement.sol
          • DirectSettlement
        • ListingRegistry.sol
          • ListingRegistry
    • Tokenization
      • Actions
        • CorporateActionManager.sol
          • CorporateActionManager
          • ICapitalAsset
        • ICorporateActionManager.sol
          • ICorporateActionManager
      • Assets
        • Asset.sol
          • Asset
          • Asset
        • ClosedEndFundClass.sol
          • ClosedEndFundClass
        • ClosedEndFundManager.sol
          • ClosedEndFundManager
        • EmployeeStockOption.sol
          • EmployeeStockOption
        • Contents
          • IAsset.sol
            • IAsset
          • IClosedEndFundClass.sol
            • IClosedEndFundClass
          • IIssuedAsset.sol
            • IIssuedAsset
          • IOpenEndFundClass.sol
            • IOpenEndFundClass
          • IShareClass.sol
            • IShareClass
        • IssuedAsset.sol
          • IssuedAsset
        • OpenEndFundClass.sol
          • OpenEndFundClass
        • OpenEndFundManager.sol
          • OpenEndFundManager
        • ShareClass.sol
          • ShareClass
        • StockAppreciationRight.sol
          • StockAppreciationRight
        • Warrant.sol
          • Warrant
      • TokenFactory.sol
        • TokenFactory
    • Utilities
      • PriceFeed.sol
        • SimplePriceFeed
        • IPriceFeed
    • Valuations
      • ValuationRegistry.sol
        • ValuationRegistry
    • Wallet
      • HookedSmartWallet.sol
        • HookedSmartWallet
      • Wallet.sol
        • Wallet
Powered by GitBook
On this page
  • State Variables
  • exemptionLimit
  • SECONDS_PER_MONTH
  • MONTHS_TO_TRACK
  • amountIssued
  • monthlyTotals
  • Functions
  • _initializeFederalExemption
  • getCurrentMonthId
  • getTotalIssuedInLast12Months
  • issueUnderExemption
  • getMonthlyTotal
  • getLast12MonthsTotals
  • Events
  • ExemptionInitialized
  • ExemptionIssuance

Was this helpful?

  1. API Reference
  2. Compliance
  3. Exemptions
  4. FederalExemption.sol

FederalExemption

PreviousFederalExemption.solNextRegAExemption.sol

Last updated 3 months ago

Was this helpful?

Base contract for U.S. SEC federal exemptions. Derived contracts (Reg D, Reg CF, Reg A) define specific compliance rules. This contract stores minimal common data/logic.

State Variables

exemptionLimit

uint256 public exemptionLimit;

SECONDS_PER_MONTH

uint256 public constant SECONDS_PER_MONTH = 30 days;

MONTHS_TO_TRACK

uint256 public constant MONTHS_TO_TRACK = 12;

amountIssued

mapping(address => uint256) public amountIssued;

monthlyTotals

mapping(uint256 => uint256) public monthlyTotals;

Functions

_initializeFederalExemption

function _initializeFederalExemption(uint256 _exemptionLimit) internal;

getCurrentMonthId

Returns the current month ID based on block.timestamp

function getCurrentMonthId() public view returns (uint256);

getTotalIssuedInLast12Months

Returns the total amount issued in the last 12 months

function getTotalIssuedInLast12Months() public view returns (uint256);

issueUnderExemption

Core function to handle an issuance under this exemption. Derived contracts can override to add additional checks (accreditation, etc.).

function issueUnderExemption(address recipient, uint256 amount) internal virtual;

Parameters

Name
Type
Description

recipient

address

The address of the recipient.

amount

uint256

The amount in the currency of the exemption.

getMonthlyTotal

Returns the investment total for a specific month

function getMonthlyTotal(uint256 monthId) public view returns (uint256);

getLast12MonthsTotals

Returns an array of the last 12 months' totals

function getLast12MonthsTotals() external view returns (uint256[12] memory);

Events

ExemptionInitialized

event ExemptionInitialized(uint256 exemptionLimit);

ExemptionIssuance

event ExemptionIssuance(address indexed recipient, uint256 amount, uint256 monthId);
Git Source