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
  • owner
  • Asset
  • Functions
  • onlyOwner
  • constructor
  • processSpinOff
  • forcedBuyback
  • processMerger
  • setOwner
  • setAsset
  • Events
  • SpinOffProcessed

Was this helpful?

  1. API Reference
  2. Tokenization
  3. Actions
  4. CorporateActionManager.sol

CorporateActionManager

PreviousCorporateActionManager.solNextICapitalAsset

Last updated 3 months ago

Was this helpful?

A contract that orchestrates advanced corporate actions by interacting with one or more Token contracts. This keeps the heavy logic out of each Token, focusing it here instead.

State Variables

owner

address public owner;

Asset

IAsset public Asset;

Functions

onlyOwner

modifier onlyOwner();

constructor

constructor(address _asset);

processSpinOff

*Example function for a "spin-off" scenario in which:

  • The old lot is partially or fully adjusted

  • You create a new lot with new cost basis

  • This might correspond to shares in a different class or contract In real cases, you might also call a second contract to create brand-new shares in "SpinCo".*

function processSpinOff(bytes32 oldLotId, uint96 spinOffQuantity, uint96 spinOffCostBasis, string calldata reason)
    external
    onlyOwner
    returns (bytes32 newLotId);

forcedBuyback

*Example function for a forced buyback scenario in which:

  • The "company" forcibly buys some or all shares from a user's lot.

  • We might do a partial or full re-lot if needed.*

function forcedBuyback(
    bytes32 oldLotId,
    uint96 buybackQuantity,
    uint96 leftoverQuantity,
    uint96 leftoverCostBasis,
    string calldata reason
) external onlyOwner returns (bytes32 newLotId);

processMerger

Another advanced scenario: A "merger" operation could loop over many tokens. We'll not fully implement it, but here's a conceptual outline:

function processMerger(
    bytes32[] calldata oldLotIds,
    uint96 newQuantityPerShare,
    uint96 newCostBasisPerShare,
    string calldata reason
) external onlyOwner;

setOwner

Example function to reassign operator or ownership if desired.

function setOwner(address newOwner) external onlyOwner;

setAsset

Example function to set a different Token

function setAsset(address _asset) external onlyOwner;

Events

SpinOffProcessed

event SpinOffProcessed(
    bytes32 indexed oldLotId,
    bytes32 indexed newLotId,
    address indexed holder,
    uint96 newQuantity,
    uint96 newCostBasis,
    string info
);
Git Source