ComBoox - Source Code
  • 🎼Source Code
    • ℹ️Libraries
      • ℹ️ArrayUtils
      • ℹ️BallotsBox
      • ℹ️Checkpoints
      • ℹ️CondsRepo
      • ℹ️DealsRepo
      • ℹ️DelegateMap
      • ℹ️DocsRepo
      • ℹ️DTClaims
      • ℹ️EnumerableSet
      • ℹ️FilesRepo
      • ℹ️FRClaims
      • ℹ️GoldChain
      • ℹ️LinksRepo
      • ℹ️LockersRepo
      • ℹ️MembersRepo
      • ℹ️MotionsRepo
      • ℹ️OfficersRepo
      • ℹ️OptionsRepo
      • ℹ️OrdersRepo
      • ℹ️PledgesRepo
      • ℹ️RolesRepo
      • ℹ️RulesParser
      • ℹ️SharesRepo
      • ℹ️SigsRepo
      • ℹ️SwapsRepo
      • ℹ️TopChain
      • ℹ️UsersRepo
    • 🛠️Components
      • 🛠️AccessControl
      • 🛠️FilesFolder
      • 🛠️SigPage
    • 📖Registers
      • 📘RegisterOfConstitution
      • 📘RegisterOfDirectors
      • 📘MeetingMinutes
      • 📘RegisterOfMembers
      • 📘RegisterOfAgreements
      • 📘RegisterOfOptions
      • 📘RegisterOfPledges
      • 📘RegisterOfShares
      • 📘ListOfOrders
    • 👨‍✈️Bookkeepers
      • 👮GeneralKeeper
      • 👮ROCKeeper
      • 👮RODKeeper
      • 👮BMMKeeper
      • 👮ROMKeeper
      • 👮GMMKeeper
      • 👮ROAKeeper
      • 👮ROOKeeper
      • 👮ROPKeeper
      • 👮SHAKeeper
      • 👮LOOKeeper
    • 📋Agreements
      • 📋InvestmentAgreement
      • 📋ShareholdersAgreement
      • 📋AntiDilution
      • 📋Lock Up
      • 📋Alongs
      • 📋Options
    • 🏛️RegCenter
    • ⛽FuleTank
Powered by GitBook
On this page
  • API:
  • Source Code:
  1. Source Code
  2. Agreements

Options

Contract Template for Options Terms(Compulsory Purchase and Sale)

PreviousAlongsNextRegCenter

Name

Options

Address

Dependent Contract

IOptions, , ,

API:

Source Code:

Options
// SPDX-License-Identifier: UNLICENSED

/* *
 * Copyright (c) 2021-2023 LI LI @ JINGTIAN & GONGCHENG.
 *
 * This WORK is licensed under ComBoox SoftWare License 1.0, a copy of which 
 * can be obtained at:
 *         [https://github.com/paul-lee-attorney/comboox]
 *
 * THIS WORK IS PROVIDED ON AN "AS IS" BASIS, WITHOUT 
 * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
 * TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. IN NO 
 * EVENT SHALL ANY CONTRIBUTOR BE LIABLE TO YOU FOR ANY DAMAGES.
 *
 * YOU ARE PROHIBITED FROM DEPLOYING THE SMART CONTRACTS OF THIS WORK, IN WHOLE 
 * OR IN PART, FOR WHATEVER PURPOSE, ON ANY BLOCKCHAIN NETWORK THAT HAS ONE OR 
 * MORE NODES THAT ARE OUT OF YOUR CONTROL.
 * */

pragma solidity ^0.8.8;

import "../../../common/access/AccessControl.sol";

import "./IOptions.sol";

contract Options is IOptions, AccessControl {
    using OptionsRepo for OptionsRepo.Repo;
    using OptionsRepo for OptionsRepo.Option;
    using OptionsRepo for OptionsRepo.Head;
    using OptionsRepo for bytes32;
    using EnumerableSet for EnumerableSet.Bytes32Set;
    using EnumerableSet for EnumerableSet.UintSet;

    OptionsRepo.Repo private _repo;

    // ################
    // ## Write I/O  ##
    // ################

    function createOption(
        bytes32 snOfOpt,
        bytes32 snOfCond,
        uint rightholder,
        uint paid,
        uint par
    ) external onlyAttorney returns (OptionsRepo.Head memory head) {
        head = _repo.createOption(snOfOpt, snOfCond, rightholder, paid, par);
    }

    function delOption(uint256 seqOfOpt) external onlyAttorney returns(bool flag){
        flag = _repo.removeOption(seqOfOpt);
    }

    function addObligorIntoOpt(
        uint256 seqOfOpt,
        uint256 obligor
    ) external onlyAttorney returns (bool flag) {
        if (isOption(seqOfOpt)) 
            flag = _repo.records[seqOfOpt].obligors.add(obligor);
    }

    function removeObligorFromOpt(
        uint256 seqOfOpt,
        uint256 obligor
    ) external onlyAttorney returns (bool flag) {
        if (isOption(seqOfOpt)) 
            flag = _repo.records[seqOfOpt].obligors.remove(obligor);
    }

    // ################
    // ##  Read      ##
    // ################

    // ==== Option ====

    function counterOfOptions() external view returns (uint32) {
        return _repo.counterOfOptions();
    }

    function qtyOfOptions() external view returns (uint) {
        return _repo.qtyOfOptions();
    }

    function isOption(uint256 seqOfOpt) public view returns (bool) {
        return _repo.isOption(seqOfOpt);
    }

    function getOption(uint256 seqOfOpt) external view
        returns (OptionsRepo.Option memory option)   
    {
        return _repo.getOption(seqOfOpt);
    }

    function getAllOptions() external view returns (OptionsRepo.Option[] memory) 
    {
        return _repo.getAllOptions();
    }

    // ==== Obligor ====

    function isObligor(uint256 seqOfOpt, uint256 acct) external 
        view returns (bool) 
    {
        return _repo.isObligor(seqOfOpt, acct);
    }

    function getObligorsOfOption(uint256 seqOfOpt) external view
        returns (uint256[] memory)
    {
        return _repo.getObligorsOfOption(seqOfOpt);
    }

    function getSeqList() external view returns(uint[] memory) {
        return _repo.getSeqList();
    }

}
IOptions
// SPDX-License-Identifier: UNLICENSED

/* *
 * Copyright (c) 2021-2023 LI LI @ JINGTIAN & GONGCHENG.
 *
 * This WORK is licensed under ComBoox SoftWare License 1.0, a copy of which 
 * can be obtained at:
 *         [https://github.com/paul-lee-attorney/comboox]
 *
 * THIS WORK IS PROVIDED ON AN "AS IS" BASIS, WITHOUT 
 * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
 * TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. IN NO 
 * EVENT SHALL ANY CONTRIBUTOR BE LIABLE TO YOU FOR ANY DAMAGES.
 *
 * YOU ARE PROHIBITED FROM DEPLOYING THE SMART CONTRACTS OF THIS WORK, IN WHOLE 
 * OR IN PART, FOR WHATEVER PURPOSE, ON ANY BLOCKCHAIN NETWORK THAT HAS ONE OR 
 * MORE NODES THAT ARE OUT OF YOUR CONTROL.
 * */

pragma solidity ^0.8.8;

import "../../../../lib/OptionsRepo.sol";
import "../../../../lib/EnumerableSet.sol";

interface IOptions {
    // ################
    // ## Write I/O ##
    // ################

    function createOption(
        bytes32 snOfOpt,
        bytes32 snOfCond,
        uint rightholder,
        uint paid,
        uint par
    ) external returns (OptionsRepo.Head memory head); 

    function delOption(uint256 seqOfOpt) external returns(bool flag);

    function addObligorIntoOpt(
        uint256 seqOfOpt,
        uint256 obligor
    ) external returns (bool flag);

    function removeObligorFromOpt(
        uint256 seqOfOpt,
        uint256 obligor
    ) external returns (bool flag);


    // ################
    // ##  Read      ##
    // ################

    // ==== Option ====

    function counterOfOptions() external view returns (uint32);

    function qtyOfOptions() external view returns (uint);

    function isOption(uint256 seqOfOpt) external view returns (bool);

    function getOption(uint256 seqOfOpt) external view
        returns (OptionsRepo.Option memory option); 

    function getAllOptions() external view returns (OptionsRepo.Option[] memory);

    // ==== Obligor ====

    function isObligor(uint256 seqOfOpt, uint256 acct) external 
        view returns (bool); 

    function getObligorsOfOption(uint256 seqOfOpt) external view
        returns (uint256[] memory);

    // ==== snOfOpt ====
    function getSeqList() external view returns(uint[] memory);

}

🎼
📋
📋
0x4eD40FF9aDCDFd7Da773E61E435139b47DB26C86
AccessControl
OptionsRepo
EnumerableSet