# 6. External Write APIs

There are totally 【84】 external write APIs exposed by the system, which collectively encompass nearly all legal acts relating to corporate governance, share transactions, and the payment and receipt of USDC. These APIs are routed to various Sub-Keepers for further processing and execution, thereby effectuating the corresponding legal consequences of each act.

<details>

<summary><strong>6.1.  APIs Routed to ROC Keeper</strong></summary>

<table><thead><tr><th width="83.83203125">S.N.</th><th width="198.00390625">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>01</td><td>function createSHA(<br>  uint <em><mark style="color:blue;">version</mark></em><br>) external</td><td>(Any Member) Create a new shareholders agreement by cloning the Template of the specific <em><mark style="color:blue;">version</mark></em>.</td></tr><tr><td>02</td><td><p>Function circulateSHA(</p><p>  address <em><mark style="color:blue;">body</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">docUrl</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">docHash</mark></em></p><p>) external</p></td><td>(The Owner of the draft) Circulate the finalized draft of shareholders agreement deployed at the address of <em><mark style="color:blue;">body</mark></em> to the contractual parties for signing, with the URL infomation of <em><mark style="color:blue;">docUrl</mark></em>, and hash value of <em><mark style="color:blue;">docHash</mark></em>.</td></tr><tr><td>03</td><td><p>function signSHA(</p><p>  address <em><mark style="color:blue;">sha</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(Parties to the draft) Sign the finalized draft of shareholders agreement deployed at the address of <em><mark style="color:blue;">sha</mark></em>, with the hash value of signature as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>04</td><td><p>function activateSHA(</p><p>  address <em><mark style="color:blue;">body</mark></em></p><p>) external</p></td><td>(Any user) Activate the draft of shareholders agreement deployed at the address of <em><mark style="color:blue;">body</mark></em>.</td></tr><tr><td>05</td><td><p>function acceptSHA(</p><p>  bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(Any user) Accept the terms and conditons of SHA in force, with the hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr></tbody></table>

<figure><img src="/files/EoniGXrWsLUQelsLDXY8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/8p1Q8OkhyqS6royMB6DQ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/RZY9ASrCE8vYFD4nPNUf" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/NZbR1PB6QtHKHZTngavK" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/0tEBIoSB5eAzkPRkgdvh" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.2. APIs Routed to ROD Keeper</strong></summary>

<table><thead><tr><th width="78.9296875">S.N.</th><th width="229.31640625">API</th><th>Description of Functions and Input Parameters</th><th></th></tr></thead><tbody><tr><td>06</td><td><p>function takeSeat(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The elected Director) Assume the director’s seat identified by <em><mark style="color:blue;">seqOfPos</mark></em> pursuant to the authorization granted under the Motion identified by <em><mark style="color:blue;">seqOfMotion</mark></em>.</td><td></td></tr><tr><td>07</td><td><p>function removeDirector (</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The Member having the nomination right) Remove the director on the position numbered as <em><mark style="color:blue;">seqOfPos</mark></em> as per the removal Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td><td></td></tr><tr><td>08</td><td><p>function takePosition(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The elected officer) Take the officer position identified as <em><mark style="color:blue;">seqOfPos</mark></em> pursuant to the authorization granted under the Motion identified as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td><td></td></tr><tr><td>09</td><td><p>function removeOfficer (</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The executor) Remove the executive officer on the position numbered as <em><mark style="color:blue;">seqOfPos</mark></em> as per the removal Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td><td></td></tr><tr><td>10</td><td><p>function quitPosition(</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The Director or officer) Quit the position identified as <em><mark style="color:blue;">seqOfPos</mark></em> voluntarily.</td><td></td></tr></tbody></table>

<figure><img src="/files/rjMQwBJ1qgareE4v5trl" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/862CVWuGQNFbr3J9mVuu" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4HfRfvozmqpogIDRFJFn" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3SELYU6Ts0RqRVOUSLlM" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/nwzIaoy96C6sxlxSx4wJ" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.3. APIs Routed to BMM Keeper</strong></summary>

<table><thead><tr><th width="53.37109375">S.N.</th><th width="299.6953125">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>11</td><td><p>function nominateOfficer(</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">candidate</mark></em></p><p>) external</p></td><td>(The Director having the nomination right) Nominate the user identified by its user number as <em><mark style="color:blue;">candidate</mark></em> for the officer’s position numbered as <em><mark style="color:blue;">seqOfPos</mark></em>.</td></tr><tr><td>12</td><td><p>function createMotionToRemoveOfficer(</p><p>uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The Director having the nomination right) Create a draft Motion to remove the officer on the position numbered as <em><mark style="color:blue;">seqOfPos</mark></em>.</td></tr><tr><td>13</td><td><p>function createMotionToApproveDoc(</p><p>  uint256 <em><mark style="color:blue;">doc</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfVR</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">executor</mark></em></p><p>) external</p></td><td>(Any Director) Creates a draft Motion for the Board to approve the document deployed at the address of <em><mark style="color:blue;">doc</mark></em>  as per the voting rule numbered as <em><mark style="color:blue;">seqOfVR</mark></em> with the user numbered as <em><mark style="color:blue;">executor</mark></em> to invoke it.</td></tr><tr><td>14</td><td><p>function <strong>proposeToTransferFundWithBoard</strong>(</p><p>    address <em><mark style="color:$primary;">to</mark></em>,</p><p>    bool <em><mark style="color:$primary;">isCBP</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">amt</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">expireDate</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfVR</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">executor</mark></em></p><p>) external</p></td><td>(Any Director) Propose, to the Board Meeting, to transfer certain amount of CBP (<em><mark style="color:$primary;">isCBP</mark></em> is true) or USDC (<em><mark style="color:$primary;">isCBP</mark></em> is false), to the account address <em><mark style="color:$primary;">to</mark></em>, amount to <em><mark style="color:$primary;">amt</mark></em>, before the timestamp of <em><mark style="color:$primary;">expireDate</mark></em>, as per the Voting Rule numbered as <em><mark style="color:$primary;">seqOfVR</mark></em>, with the user numbered as <em><mark style="color:$primary;">executor</mark></em> to execute the Motion concerned.</td></tr><tr><td>15</td><td><p>function createAction(</p><p>    uint256 <em><mark style="color:blue;">seqOfVR</mark></em>,</p><p>    address[] memory <em><mark style="color:blue;">targets</mark></em>,</p><p>    uint256[] memory <em><mark style="color:blue;">values</mark></em>,</p><p>    bytes[] memory <em><mark style="color:blue;">params</mark></em>,</p><p>    bytes32 <em><mark style="color:blue;">desHash</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">executor</mark></em></p><p>) external</p></td><td>Create a draft Motion for the Board to invoke a series of calls, as per the voting rule numbered as <em><mark style="color:blue;">seqOfVR</mark></em>, to the contracts deployed at their respective addresses of <em><mark style="color:blue;">targets</mark></em>, with paying ETH amount to <em><mark style="color:blue;">values</mark></em>, and inputting parameters of <em><mark style="color:blue;">params</mark></em>, attached with the hash value of the description message as <em><mark style="color:blue;">desHash</mark></em>, with the user numbered as <em><mark style="color:blue;">executor</mark></em> to invoke it.</td></tr><tr><td>16</td><td><p>function entrustDelegaterForBoardMeeting(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">delegate</mark></em></p><p>) external</p></td><td>(Any Directors) Entrust the user numbered as <em><mark style="color:blue;">delegate</mark></em> to cast vote in Board meeting for the Motion identified as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td></tr><tr><td>17</td><td><p>function proposeMotionToBoard (</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(Any Director) Propose the draft Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em> to the Board meeting.</td></tr><tr><td>18</td><td><p>function castVote(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">attitude</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(Any Director) Casts vote with the <em><mark style="color:blue;">attitude</mark></em> for the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em> with the signature message’s hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>19</td><td><p>function voteCounting(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(Any user) Count the vote result for the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td></tr><tr><td>20</td><td><p>function execAction(</p><p>    uint <em><mark style="color:blue;">typeOfAction</mark></em>,</p><p>    address[] memory <em><mark style="color:blue;">targets</mark></em>,</p><p>    uint256[] memory <em><mark style="color:blue;">values</mark></em>,</p><p>    bytes[] memory <em><mark style="color:blue;">params</mark></em>,</p><p>    bytes32 <em><mark style="color:blue;">desHash</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(The designated executor) Executes the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>, categorized as <em><mark style="color:blue;">typeOfAction</mark></em>, to invoke the series of calls to the contracts deployed at addresses of <em><mark style="color:blue;">targets</mark></em>, with paying the respective ETH amount to <em><mark style="color:blue;">values</mark></em>, inputting parameters as <em><mark style="color:blue;">params</mark></em>, attached with description message’s hash value as <em><mark style="color:blue;">desHash</mark></em>.</td></tr></tbody></table>

<figure><img src="/files/r5eddkb0IaXOentiNYR9" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3uDOUMeDaTQa8dTf4q2X" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/yPCWFbrzChLgTCV6D6oD" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cW1xgE5vwKeKHogB8NUo" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/O77dD3TQfZgUEBPQSgDB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FrtaHrHPa4eafyyCPEGT" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZApfnSnL8oE69C0Yfd0N" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/E2GgyTi1ma2KeVesRfix" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/xyCJ1TGYZeZS3LkntPkm" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Eb7DJ45LPD9gnFOaZsMz" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.4. APIs Routed to ROM Keeper</strong></summary>

<table><thead><tr><th width="49.73046875" align="center">S.N.</th><th width="317.13671875">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td align="center">21</td><td><p>function setMaxQtyOfMembers(</p><p>  uint256 <em><mark style="color:blue;">max</mark></em></p><p>) external</p></td><td>(The sectary of company, i.e. the Direct Keeper of General Keeper) Set the max quantity of Members as <em><mark style="color:blue;">max</mark></em>.</td></tr><tr><td align="center">22</td><td><p>function setPayInAmt(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">amt</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">expireDate</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">hashLock</mark></em></p><p>) external</p></td><td>(The sectary of company, i.e. the Direct Keeper of General Keeper) Set the intended pay in amount of <em><mark style="color:blue;">amt</mark></em> for the share numbered as <em><mark style="color:blue;">seqOfShare</mark></em>, before the date of <em><mark style="color:blue;">expireDate</mark></em>, with the hash lock whose hash value is <em><mark style="color:blue;">hashLock</mark></em>.</td></tr><tr><td align="center">23</td><td><p>function requestPaidInCapital(</p><p>bytes32 <em><mark style="color:blue;">hashLock</mark></em>,</p><p>string memory <em><mark style="color:blue;">hashKey</mark></em></p><p>) external</p></td><td>(The Member, after paying the paid in the relevant price off-chain) Request the specific paid in amount for the target share by inputting the hash key string <em><mark style="color:blue;">hashKey</mark></em> to unlock the hash lock whose hash value is <em><mark style="color:blue;">hashLock</mark></em>.</td></tr><tr><td align="center">24</td><td><p>function withdrawPayInAmt(</p><p>  bytes32 <em><mark style="color:blue;">hashLock</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em></p><p>) external</p></td><td>(The secrtary of the company, i.e. the Direct Keeper of General Keeper, after the expiration date of the relevant hash lock) Withdraw the setting for granting the pay in amount for the specific share numbered as <em><mark style="color:blue;">seqOfShare</mark></em>, by inputting the hash lock value <em><mark style="color:blue;">hashLock</mark></em>.</td></tr><tr><td align="center">25</td><td><p>function <strong>payInCapital</strong>(</p><p>    ICashier.TransferAuth memory <em><mark style="color:$primary;">auth</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfShare</mark></em>,   </p><p>    uint256 <em><mark style="color:$primary;">paid</mark></em></p><p>) external;</p></td><td>(The shareholder) Pay in capital, for its specific share numbered as <em><mark style="color:$primary;">seqOfShare</mark></em>, to the amount of paid as <em><mark style="color:$primary;">paid</mark></em>, by paying certain amount of USDC through off-chain authorization signed as <em><mark style="color:$primary;">auth</mark>.</em></td></tr><tr><td align="center">26</td><td><p>function <strong>decreaseCapital</strong>(</p><p>    uint <em><mark style="color:$primary;">seqOfVR</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfShare</mark></em>,</p><p>    uint <em><mark style="color:$primary;">paid</mark></em>,</p><p>    uint <em><mark style="color:$primary;">par</mark></em>,</p><p>    uint <em><mark style="color:$primary;">amt</mark></em>,</p><p>    uint <em><mark style="color:$primary;">seqOfMotion</mark></em></p><p>) external;</p></td><td>(The authorized executor) Decrease the registered capital of the share numbered as <em><mark style="color:$primary;">seqOfShare</mark></em>, as per the voting rule numbered as <em><mark style="color:$primary;">seqOfVR</mark></em>, with the paid value amount to <em><mark style="color:$primary;">paid</mark></em>, par value amount to <em><mark style="color:$primary;">par</mark></em>, and USDC value amount to <em><mark style="color:$primary;">amt</mark></em>, according to the passed resolution numbered as <em><mark style="color:$primary;">seqOfMotion</mark></em>.</td></tr></tbody></table>

<figure><img src="/files/IgagcbTkXSVW32RKjiNS" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/w1D5Hould8Jkk99MW228" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/5U4XoJ2yMIqGpN619qiZ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/YQdxwkwX1d2cd8biOvnI" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Yacd76MSN24Cszco2mWY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZAAe5Z1GlXrLcHvU1kHV" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.5. APIs Routed to GMM Keeper</strong></summary>

<table><thead><tr><th width="75.40625">SN</th><th width="308.08984375">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>27</td><td><p>function nominateDirector(</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">candidate</mark></em></p><p>) external</p></td><td>(The Member who has the nomination right) Nominate the user numbered as <em><mark style="color:blue;">candidate</mark></em> for the Director’s position numbered as <em><mark style="color:blue;">seqOfPos</mark></em>.</td></tr><tr><td>28</td><td><p>function createMotionToRemoveDirector(</p><p>  uint256 <em><mark style="color:blue;">seqOfPos</mark></em></p><p>) external</p></td><td>(The Member who has the nomination right) Create a draft motion to remove the Director on the position numbered as <em><mark style="color:blue;">seqOfPos</mark></em>.</td></tr><tr><td>29</td><td><p>function proposeDocOfGM(</p><p>  uint256 <em><mark style="color:blue;">doc</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfVR</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">executor</mark></em></p><p>) external</p></td><td>(A Member) Create and propose a draft Motion for the General Meeting to approve the document deployed at the address of <em><mark style="color:blue;">doc</mark></em> as per the voting rule numbered as <em><mark style="color:blue;">seqOfVR</mark></em> with the user numbered as <em><mark style="color:blue;">executor</mark></em> to invoke it.</td></tr><tr><td>30</td><td><p>function <strong>proposeToDistributeUsd</strong>(</p><p>    uint <em><mark style="color:$primary;">amt</mark></em>,</p><p>    uint <em><mark style="color:$primary;">expireDate</mark></em>,</p><p>    uint <em><mark style="color:$primary;">seqOfVR</mark></em>,</p><p>    uint <em><mark style="color:$primary;">seqOfDR</mark></em>,</p><p>    uint <em><mark style="color:$primary;">para</mark></em>,</p><p>    uint <em><mark style="color:$primary;">executor</mark></em></p><p>) external;</p></td><td>(A Member) Create and propose a draft Motion for the General Meeting to approve distribution a sum of USDC amount to <em><mark style="color:$primary;">amt</mark></em> before the expiration date <em><mark style="color:$primary;">expireDate</mark></em>, as per the voting rule numbered as <em><mark style="color:$primary;">seqOfVR</mark></em> and the distribution rule numbered as <em><mark style="color:$primary;">seqOfDR</mark></em>, with the parameter of <em><mark style="color:$primary;">para</mark></em> and with the user numbered as <em><mark style="color:$primary;">executor</mark></em> to invoke it.</td></tr><tr><td>31</td><td><p>function <strong>proposeToTransferFundWithGM</strong>(</p><p>    address <em><mark style="color:$primary;">to</mark></em>,</p><p>    bool <em><mark style="color:$primary;">isCBP</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">amt</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">expireDate</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfVR</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">executor</mark></em></p><p>) external</p></td><td>(A Member or Director) Propose, to the General Meeting, to transfer certain amount of CBP (<em><mark style="color:$primary;">isCBP</mark></em> is true) or USDC (<em><mark style="color:$primary;">isCBP</mark></em> is false), to the account address <em><mark style="color:$primary;">to</mark></em>, amount to <em><mark style="color:$primary;">amt</mark></em>, before the timestamp of <em><mark style="color:$primary;">expireDate</mark></em>, as per the Voting Rule numbered as <em><mark style="color:$primary;">seqOfVR</mark></em>, with the user numbered as <em><mark style="color:$primary;">executor</mark></em> to execute the Motion concerned.</td></tr><tr><td>32</td><td><p>function createActionOfGM(</p><p>    uint <em><mark style="color:blue;">seqOfVR</mark></em>,</p><p>    address[] memory <em><mark style="color:blue;">targets</mark></em>,</p><p>    uint256[] memory <em><mark style="color:blue;">values</mark></em>,</p><p>    bytes[] memory <em><mark style="color:blue;">params</mark></em>,</p><p>    bytes32 <em><mark style="color:blue;">desHash</mark></em>,</p><p>    uint <em><mark style="color:blue;">executor</mark></em></p><p>) external</p></td><td>(A Member) Create a draft Motion for the General Meeting to execute a series of calls, as per the voting rule numbered as <em><mark style="color:blue;">seqOfVR</mark></em>, to the contracts deployed at the addresses of <em><mark style="color:blue;">targets</mark></em>, with paying the respective ETH amount to <em><mark style="color:blue;">values</mark></em>, and inputting parameters of <em><mark style="color:blue;">params</mark></em>, attached a description message whose hash value is <em><mark style="color:blue;">desHash</mark></em>, with the user numbered as <em><mark style="color:blue;">executor</mark></em> to invoke it.</td></tr><tr><td>33</td><td><p>function entrustDelegaterForGeneralMeeting(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">delegate</mark></em></p><p>) external</p></td><td>(A Member) Entrust the user numbered as <em><mark style="color:blue;">delegate</mark></em> to cast vote in General Meeting for the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td></tr><tr><td>34</td><td><p>function proposeMotionToGeneralMeeting(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(A Member) Proposes the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em> to the General Meeting.</td></tr><tr><td>35</td><td><p>function castVoteOfGM(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">attitude</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(A Member) Cast vote with the <em><mark style="color:blue;">attitude</mark></em> for the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em> with the signature message’s hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>36</td><td><p>function voteCountingOfGM(</p><p>  uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(Any user) Count the vote result for the Motion on the General Meeting numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td></tr><tr><td>37</td><td><p>function execActionOfGM(</p><p>    uint <em><mark style="color:blue;">typeOfAction</mark></em>,</p><p>    address[] memory <em><mark style="color:blue;">targets</mark></em>,</p><p>    uint256[] memory <em><mark style="color:blue;">values</mark></em>,</p><p>    bytes[] memory <em><mark style="color:blue;">params</mark></em>,</p><p>    bytes32 <em><mark style="color:blue;">desHash</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(The designated executor) Execute the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>, categorized as <em><mark style="color:blue;">typeOfAction</mark></em>, to trigger the series of calls to the contracts deployed at addresses of <em><mark style="color:blue;">targets</mark></em>, with paying the respective ETH amount to <em><mark style="color:blue;">values</mark></em>, inputting parameters as <em><mark style="color:blue;">params</mark></em>, attached with hash value of the description message as <em><mark style="color:blue;">desHash</mark></em>.</td></tr></tbody></table>

<figure><img src="/files/nfKpxAd8sCPNsx2LBWyh" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Qa6df6ZwsytjoxAEGOsB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/AUd400G0nLK5AfkRBnBg" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/JKNdDnhENCb5wXY9pC6q" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/EWKoSUSGJBktkfCvdvkY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3YSRNRNsHodkVQxo5C0w" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ercH7uNLRtPWiBvnpB13" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/P6npK4itK7Qhc5GIb5qk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/hwlr0Ldkf8c4ZSYz8owv" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/LqlsTYMHKgwV25DBK8Sm" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/YDnyDO6rt66slgQyVQF3" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.6. APIs Routed to ROA Keeper</strong></summary>

<table><thead><tr><th width="52.37109375">SN</th><th width="267.32421875">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>38</td><td><p>function createIA(</p><p>  uint256 <em><mark style="color:blue;">version</mark></em></p><p>) external</p></td><td>(Any Member) Create a draft Investment Agreement on the Register of Agreement, by cloning the Template of the version numbered as <em><mark style="color:blue;">version</mark></em>.</td></tr><tr><td>39</td><td><p>function circulateIA(</p><p>  address <em><mark style="color:blue;">body</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">docUrl</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">docHash</mark></em></p><p>) external</p></td><td>(The Member who is the Owner of the draft Investment Agreement) Circulate the finalized draft deployed at the address of <em><mark style="color:blue;">body</mark></em> to the parties for signature, attaching with the URL information of <em><mark style="color:blue;">docUrl</mark></em> and the hash value of the draft as <em><mark style="color:blue;">docHash</mark></em>.</td></tr><tr><td>40</td><td><p>function signIA(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(The parties to the Investment Agreement) Sign the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, with the signature message’s hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>41</td><td><p>function pushToCoffer(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfDeal</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">hashLock</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">closingDeadline</mark></em></p><p>) external</p></td><td>(The seller) Confirm all conditions precedent have been satisfied and ready for closing, for the specific deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em>, under the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, by inputting a hash lock value <em><mark style="color:blue;">hashLock</mark></em>  and setting the closing deadline as <em><mark style="color:blue;">closingDeadline</mark></em>.</td></tr><tr><td>42</td><td><p>function closeDeal(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfDeal</mark></em>,</p><p>  string memory <em><mark style="color:blue;">hashKey</mark></em></p><p>) external</p></td><td>(The buyer) Close the deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em>, under the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, after paying the consideration off-chain, by inputting the hash key string <em><mark style="color:blue;">hashKey</mark></em>.</td></tr><tr><td>43</td><td><p>function issueNewShare(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfDeal</mark></em></p><p>) external</p></td><td>(The issuer) Issue new share directly to the buyer, for the capital increasing Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> under the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>.</td></tr><tr><td>44</td><td><p>function transferTargetShare(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfDeal</mark></em></p><p>) external</p></td><td>(The seller) Transfer the subject share directly to the buyer, for the specific share transfer Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> under the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>.</td></tr><tr><td>45</td><td><p>function terminateDeal(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfDeal</mark></em></p><p>) external</p></td><td>(The seller, after the expiration date concerned) Terminate the Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> under the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>.</td></tr><tr><td>46</td><td><p>function <strong>payOffApprovedDeal</strong>(</p><p>    ICashier.TransferAuth memory <em><mark style="color:$primary;">auth</mark></em>,</p><p>    address <em><mark style="color:$primary;">ia</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfDeal</mark></em>,</p><p>    address <em><mark style="color:$primary;">to</mark></em></p><p>) external;</p></td><td>(The buyer) Pay off the specific Deal numbered as <em><mark style="color:$primary;">seqOfDeal</mark></em> in the Investment Agreement deployed as the address of <em><mark style="color:$primary;">ia</mark></em>, by paying to the seller/issuer address <em><mark style="color:$primary;">to</mark></em> certain amount of USDC as per the off-chain authorization signed as <em><mark style="color:$primary;">auth</mark></em>, to close the Deal.</td></tr></tbody></table>

<figure><img src="/files/QEq1keIffqIIVXBkV6nV" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/XyK7itGLoOjFRVsFk1Vz" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WHg0PBGS2emsrTnWvzM8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/uXl3HOkU91lvghgwEGft" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1AQSFVD511iAxQTAej2h" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/k9VTjAjv3FtlbEvdkKrB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZQSyBCBOFKZMrI4WAjhC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/JjCgee1IYn2ZJIXwDRzc" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/CpX30OZAACE5h2n7nj0f" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.7. APIs Routed to ROO Keeper</strong></summary>

<table><thead><tr><th width="49.76953125">SN</th><th width="228.01171875">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>47</td><td><p>function updateOracle(</p><p>    uint256 <em><mark style="color:blue;">seqOfOpt</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">d1</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">d2</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">d3</mark></em></p><p>) external</p></td><td>(The sectary of the company, i.e. the Direct Keeper of General Keeper) Update the key performance indicators of <em><mark style="color:blue;">d1</mark></em>, <em><mark style="color:blue;">d2</mark></em>, and <em><mark style="color:blue;">d3</mark></em>, for the specific Option numbered as <em><mark style="color:blue;">seqOfOpt</mark></em>.</td></tr><tr><td>48</td><td><p>function execOption(</p><p>  uint256 <em><mark style="color:blue;">seqOfOpt</mark></em></p><p>) external</p></td><td>(The right holder) Execute the Option numbered as <em><mark style="color:blue;">seqOfOpt</mark></em>.</td></tr><tr><td>49</td><td><p>function createSwap(</p><p>    uint256 <em><mark style="color:blue;">seqOfOpt</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">seqOfTarget</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">paidOfTarget</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">seqOfPledge</mark></em></p><p>) external</p></td><td>(The right holder) Create a Swap on the target share numbered as <em><mark style="color:blue;">seqOfTarget</mark></em>, for paid value amount to <em><mark style="color:blue;">paidOfTarget</mark></em>, with the collateral set up on the pledged share numbered as <em><mark style="color:blue;">seqOfPledge</mark></em>, for executing the Option numbered as <em><mark style="color:blue;">seqOfOpt</mark></em>.</td></tr><tr><td>50</td><td><p>function <strong>payOffSwap</strong>(</p><p>    ICashier.TransferAuth memory <em><mark style="color:$primary;">auth</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfOpt</mark></em>,</p><p>    uint256 <em><mark style="color:$primary;">seqOfSwap</mark></em>,</p><p>    address <em><mark style="color:$primary;">to</mark></em></p><p>) external;</p></td><td>(The pledger) Pay certain amount of USDC as per the off-chain authorization signed as <em><mark style="color:$primary;">auth</mark></em>, to release the pledged share under the Swap numbered <em><mark style="color:$primary;">seqOfSwap</mark></em> of the Option numbered as <em><mark style="color:$primary;">seqOfOpt</mark></em>, to close the Swap.</td></tr><tr><td>51</td><td><p>function terminateSwap(</p><p>    uint256 <em><mark style="color:blue;">seqOfOpt</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">seqOfSwap</mark></em></p><p>) external</p></td><td>(The target share holder) Execute the swap numbered as <em><mark style="color:blue;">seqOfSwap</mark></em> of the Option numbered as <em><mark style="color:blue;">seqOfOpt</mark></em>, by transferring the target share and releasing the pledged share.</td></tr></tbody></table>

<figure><img src="/files/woaZaJG7XCcDIKFRNg8T" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/w7IhYOBnvSAzaM8eONCz" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fzogxcoCVZf6DyI15KUd" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fLGt3echaagPIJNQFKty" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/D27bDg8cxsJ5q1BCqbA8" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.8. APIs Routed to ROP Keeper</strong></summary>

<table><thead><tr><th width="61.8203125">SN</th><th width="243.5859375">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>52</td><td><p>function createPledge(</p><p>  bytes32 <em><mark style="color:blue;">snOfPld</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">paid</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">par</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">guaranteedAmt</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">execDays</mark></em></p><p>) external</p></td><td>(Any shareholder) Create a Pledge with the codified serial number <em><mark style="color:blue;">snOfPld</mark></em> amount to paid value of <em><mark style="color:blue;">paid</mark></em> and par value of <em><mark style="color:blue;">par</mark></em> to guarantee the debt amount to <em><mark style="color:blue;">guarantedAmt</mark></em> with the guarantee period lasting for number of days of <em><mark style="color:blue;">execDays</mark></em>.</td></tr><tr><td>53</td><td><p>function transferPledge(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">buyer</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">amt</mark></em></p><p>) external</p></td><td>(The creditor) Transfer the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting up on the pledged share numbered <em><mark style="color:blue;">seqOfShare</mark></em> to the user numbered as <em><mark style="color:blue;">buyer</mark></em> with the credit amount to <em><mark style="color:blue;">amt</mark></em>.</td></tr><tr><td>54</td><td><p>function refundDebt(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">amt</mark></em></p><p>) external</p></td><td>(The creditor) Confirm refunding of the debt, guaranteed by the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting on the pledged share numbered as <em><mark style="color:blue;">seqOfShare</mark>,</em> by the amount of <em><mark style="color:blue;">amt</mark></em>.</td></tr><tr><td>55</td><td><p>function extendPledge(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">extDays</mark></em></p><p>) external</p></td><td>(The pledger) Extend the guarantee period of the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting on the pledged share numbered as <em><mark style="color:blue;">seqOfShare</mark></em> for a such number of days as <em><mark style="color:blue;">extDays</mark></em>.</td></tr><tr><td>56</td><td><p>function lockPledge(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">hashLock</mark></em></p><p>) external</p></td><td>(The creditor) Set up a hash lock with the hash value as <em><mark style="color:blue;">hashLock</mark></em> on the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting on the pledged share numbered <em><mark style="color:blue;">seqOfShare</mark></em>.</td></tr><tr><td>57</td><td><p>function releasePledge(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em>,</p><p>  string memory <em><mark style="color:blue;">hashKey</mark></em></p><p>) external</p></td><td>(The pledger, after paying off-chain and obtaining the hash key) Release the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting on the pledged share numbered <em><mark style="color:blue;">seqOfShare</mark></em> by inputting the hash key string <em><mark style="color:blue;">hashKey</mark></em>.</td></tr><tr><td>58</td><td><p>function execPledge(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">buyer</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">groupOfBuyer</mark></em></p><p>) external</p></td><td>(The creditor, after off-chain disposal and receipt of the consideration) Execute the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting on the pledged share numbered as <em><mark style="color:blue;">seqOfShare</mark></em> to transfer the target share to the user numbered as <em><mark style="color:blue;">buyer</mark></em> who belongs to the concert group represented by the user numbered as <em><mark style="color:blue;">groupOfBuyer</mark></em>.</td></tr><tr><td>59</td><td><p>function revokePledge(</p><p>  uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfPld</mark></em></p><p>) external</p></td><td>(The pledger, after the expiration of the guarantee period) Revoke the Pledge numbered as <em><mark style="color:blue;">seqOfPld</mark></em> setting on the pledged share numbered as <em><mark style="color:blue;">seqOfShare</mark></em>.</td></tr></tbody></table>

<figure><img src="/files/ICDdNC6JgP7fL97Lh5UO" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/UpmLUkqHoIeAabFe7nJK" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/aiDe5Oa00e8XPEvX8o1d" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tUxE95VojH67NuJwMOtM" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/1Ph2m0lnPMtr6CxZHQ3A" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Yx02iF0v4cfWyvQqCbM9" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/PbjMnY1Giqx1bjtWB4oU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/FTyE8xsy8IPl6yyON7RX" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.9. APIs Routed to SHA Keeper</strong></summary>

<table><thead><tr><th width="76.578125">SN.</th><th width="246.6953125">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>60</td><td><p>function <strong>execAlongRight</strong>(</p><p>    address <em><mark style="color:$primary;">ia</mark></em>,</p><p>    bytes32 <em><mark style="color:$primary;">snOfClaim</mark></em>,</p><p>    bytes32 <em><mark style="color:$primary;">sigHash</mark></em></p><p>) external</p></td><td>(The right holder) Execute the Tag-Along right, for the tag along or drag along Claim encoded as <em><mark style="color:$primary;">snOfClaim</mark></em> in the Investment Agreement deployed at the address of <em><mark style="color:$primary;">ia</mark></em>, with the signature’s hash value as <em><mark style="color:$primary;">sigHash</mark></em>.</td></tr><tr><td>61</td><td><p>function <strong>acceptAlongDeal</strong>(</p><p>        address <em><mark style="color:blue;">ia</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfDeal</mark></em>,</p><p>        bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(The buyer) Accepts the Tag/Drag Along requests, for the Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> of the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, with the signature’s hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>62</td><td><p>function <strong>execAntiDilution</strong>(</p><p>        address <em><mark style="color:blue;">ia</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfDeal</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfShare</mark></em>,</p><p>        bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>) external</p></td><td>(The right holder) Execute the Anti-Dilution right, towards the Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> in the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, for its share numbered <em><mark style="color:blue;">seqOfShare</mark></em>, with the signature hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>63</td><td><p>function <strong>takeGiftShares</strong>(</p><p>  address <em><mark style="color:blue;">ia</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">seqOfDeal</mark></em></p><p>) external</p></td><td>(The right holder of Anti-Dilution, after the closing) Take the gift shares, generating as per the Anti-Dilution Term of SHA, for the Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> in the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>.</td></tr><tr><td>64</td><td><p>function <strong>execFirstRefusal</strong>(</p><p>        uint256 <em><mark style="color:blue;">seqOfRule</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfRightholder</mark></em>,</p><p>        address <em><mark style="color:blue;">ia</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfDeal</mark></em>,</p><p>        bytes32 <em><mark style="color:blue;">sigHash</mark></em></p><p>    ) external</p></td><td>(The right holder) Execute its First Refusal right, as per the Rule numbered as <em><mark style="color:blue;">seqOfRule</mark></em>, with the identified sequence number as <em><mark style="color:blue;">seqOfRightholder</mark></em>, to request to buy the subject share of the Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> in the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, with the signature hash value as <em><mark style="color:blue;">sigHash</mark></em>.</td></tr><tr><td>65</td><td><p>function computeFirstRefusal(</p><p>        address <em><mark style="color:blue;">ia</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfDeal</mark></em></p><p>    ) external;</p></td><td>(Any Member) Compute the First Refusal claims result for the Deal numbered as <em><mark style="color:blue;">seqOfDeal</mark></em> of the Investment Agreement deployed at the address of <em><mark style="color:blue;">ia</mark></em>, so as to obtain the automatically updated Investment Agreement.</td></tr></tbody></table>

<figure><img src="/files/srShPvqTkQRNCnJqpd1p" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/oBhmLICcMu8hfc37KidV" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/CequzSFBfnWkyMWADAeO" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ud4FiPEZ3UhOGJij1DEK" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ejg2OQU0RTOWdxyp5esC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/B5leDJ1CaiO4233UHojI" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.10. APIs Routed to Accountant</strong></summary>

<table><thead><tr><th width="68.55859375">SN</th><th width="232.37890625">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>66</td><td><p>function <strong>initClass</strong>(</p><p>    uint <em><mark style="color:$primary;">class</mark></em></p><p>) external;</p></td><td>(Secretary of the Company) Initiate a specific <em><mark style="color:$primary;">class</mark></em> of shares to calculate ROE or IRR.</td></tr><tr><td>67</td><td><p>function <strong>distributeProfits</strong>(</p><p>        uint256 <em><mark style="color:blue;">amt</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">expireDate</mark></em>,</p><p>        uint256 <em><mark style="color:$primary;">seqOfDR</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>) external</p></td><td>(The designated executor) Distribute the profits of the company amount to <em><mark style="color:blue;">amt</mark></em>, as per the distribution rule numbered as <em><mark style="color:$primary;">seqOfDR</mark></em> and the Motion numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>, before the expiration date of <em><mark style="color:blue;">expireDate</mark></em>.</td></tr><tr><td>68</td><td><p>function <strong>distributeIncome</strong>(</p><p>        uint256 <em><mark style="color:$primary;">amt</mark></em>,</p><p>        uint256 <em><mark style="color:$primary;">expireDate</mark></em>,</p><p>        uint256 <em><mark style="color:$primary;">seqOfDR</mark></em>,</p><p>        uint256 <em><mark style="color:$primary;">fundManager</mark></em>,</p><p>        uint256 <em><mark style="color:$primary;">seqOfMotion</mark></em></p><p>) external</p></td><td>(The designated executor) Distribute the income of the fund amount to <em><mark style="color:$primary;">amt</mark></em>, as per the Motion numbered as <em><mark style="color:$primary;">seqOfMotion</mark></em>, before the expiration date of <em><mark style="color:$primary;">expireDate</mark>,</em> with the user number of the asset manager as <em><mark style="color:$primary;">fundManager</mark></em>.</td></tr><tr><td>69</td><td><p>    function transferFund(</p><p>        bool <em><mark style="color:blue;">fromBMM</mark></em>,</p><p>        address <em><mark style="color:blue;">to</mark></em>,</p><p>        bool <em><mark style="color:blue;">isCBP</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">amt</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">expireDate</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfMotion</mark></em></p><p>    ) external</p></td><td>(The designated executor) Transfer, CBP (<em><mark style="color:blue;">isCBP</mark></em> is true) or ETH (<em><mark style="color:blue;">isCBP</mark></em> is false), to the account address <em><mark style="color:blue;">to</mark></em>, amount to <em><mark style="color:blue;">amt</mark></em>, as per the Motion passed by, the Board (<em><mark style="color:blue;">toBMM</mark></em> is true) or the General Meeting (<em><mark style="color:blue;">toBMM</mark></em> is false), before the timestamp of <em><mark style="color:blue;">expireDate</mark></em>, numbered as <em><mark style="color:blue;">seqOfMotion</mark></em>.</td></tr></tbody></table>

<figure><img src="/files/BrFlYSp5eaWM6M8buZmM" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/8YKIXw0iSolPzgBVKPpN" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3Zh13kDTCHgSRbYT0875" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tcsYFtrBjHTGsQuTB1ig" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.11. APIs Routed to ROI Keeper</strong></summary>

<table><thead><tr><th width="68.0703125">SN</th><th width="245.7109375">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>70</td><td><p>function <strong>pause</strong>(</p><p>    uint <em><mark style="color:$primary;">seqOfLR</mark></em></p><p>) external</p></td><td>(The authorized Enforcer) Pause temporarily the trade of the shares as per the listing rule numbered as <em><mark style="color:$primary;">seqOfLR</mark></em>.</td></tr><tr><td>71</td><td><p>function <strong>unPause</strong>(</p><p>    uint <em><mark style="color:$primary;">seqOfLR</mark></em></p><p>) external</p></td><td>(The authorized Enforcer) Restore the trade of the shares as per the listing rule numbered as <em><mark style="color:$primary;">seqOfLR</mark></em>.</td></tr><tr><td>72</td><td><p>function <strong>regInvestor</strong>(</p><p>  address <em><mark style="color:blue;">bKey</mark></em>,</p><p>  uint256 <em><mark style="color:blue;">groupRep</mark></em>,</p><p>  bytes32 <em><mark style="color:blue;">idHash</mark></em></p><p>) external</p></td><td>(Any user) Register itself as an investor, by inputting its backup key as <em><mark style="color:blue;">bKey</mark></em>, the user number of its concert group’s representative as <em><mark style="color:blue;">groupRep</mark></em>, with the hash value of its identity information as <em><mark style="color:blue;">idHash</mark></em>.</td></tr><tr><td>73</td><td><p>function <strong>approveInvestor</strong>(</p><p>uint256 <em><mark style="color:blue;">userNo</mark></em>,</p><p>uint256 <em><mark style="color:blue;">seqOfLR</mark></em></p><p>) external</p></td><td>(The verifier) Approve the investor’s application, pursuant to the Listing Rule numbered as <em><mark style="color:blue;">seqOfLR</mark></em>, filed by the user numbered as <em><mark style="color:blue;">userNo</mark></em>.</td></tr><tr><td>74</td><td><p>function <strong>revokeInvestor</strong>(</p><p>uint256 <em><mark style="color:blue;">userNo</mark></em>,</p><p>uint256 <em><mark style="color:blue;">seqOfLR</mark></em></p><p>) external</p></td><td>(The verifier) Revoke the investor’s qualification of the user numbered as <em><mark style="color:blue;">userNo</mark>,</em>  pursuant to the Listing Rule numbered as <em><mark style="color:blue;">seqOfLR</mark></em>.</td></tr><tr><td>75</td><td><p>function <strong>freezeShare</strong>(</p><p>    uint <em><mark style="color:$primary;">seqOfLR</mark></em>,</p><p>    uint <em><mark style="color:$primary;">seqOfShare</mark></em>,</p><p>    uint <em><mark style="color:$primary;">paid</mark></em>,</p><p>    bytes32 <em><mark style="color:$primary;">hashOrder</mark></em></p><p>) external;</p></td><td>(The authorized Enforcer) Freezes the target share identified by sequence number <mark style="color:$primary;">seqOfShare</mark>, with its paid amount recorded as <em><mark style="color:$primary;">paid</mark></em>, pursuant to the authorization set forth in Listing Rule <em><mark style="color:$primary;">seqOfLR</mark></em>, and in accordance with the execution order identified by the hash value <em><mark style="color:$primary;">hashOrder</mark></em>.</td></tr><tr><td>76</td><td><p>function <strong>unfreezeShare</strong>(</p><p>    uint <em><mark style="color:$primary;">seqOfLR</mark></em>,</p><p>    uint <em><mark style="color:$primary;">seqOfShare</mark></em>,</p><p>    uint <em><mark style="color:$primary;">paid</mark></em>,</p><p>    bytes32 <em><mark style="color:$primary;">hashOrder</mark></em></p><p>) external;</p></td><td>(The authorized Enforcer) Unfreezes the target share identified by sequence number <em><mark style="color:$primary;">seqOfShare</mark></em>, with its paid amount recorded as <em><mark style="color:$primary;">paid</mark></em>, pursuant to the authorization set forth in Listing Rule <em><mark style="color:$primary;">seqOfLR</mark></em>, and in accordance with the execution order identified by the hash value <em><mark style="color:$primary;">hashOrder</mark></em>.</td></tr><tr><td>77</td><td><p>function <strong>forceTransfer</strong>(</p><p>    uint <em><mark style="color:$primary;">seqOfLR</mark></em>,</p><p>    uint <em><mark style="color:$primary;">seqOfShare</mark></em>,</p><p>    uint <em><mark style="color:$primary;">paid</mark></em>,</p><p>    address <em><mark style="color:$primary;">addrTo</mark></em>,</p><p>    bytes32 <em><mark style="color:$primary;">hashOrder</mark></em></p><p>) external;</p></td><td>(The authorized Enforcer) Forcibly transfers the target share identified by sequence number <em><mark style="color:$primary;">seqOfShare</mark></em>, with its paid amount recorded as <em><mark style="color:$primary;">paid</mark></em>, to the specified user whose primary key address is <em><mark style="color:$primary;">addrTo</mark></em>, pursuant to the authorization set forth in Listing Rule <em><mark style="color:$primary;">seqOfLR</mark></em>, and in accordance with the execution order identified by the hash value <em><mark style="color:$primary;">hashOrder</mark></em></td></tr></tbody></table>

<figure><img src="/files/2i255JO2L1G1XR562v1C" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/2gYwbP541FDvZ3kuOj8e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/XAlg9yjICjKwzstLQSTJ" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/UlHTuxTx6qnvNaZue0Tk" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/xsVXOGrH9x1wJXcQ8aU7" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/pffW4lO255ABJOxwBBVg" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Y6hUwMA1oBMre45ChIvn" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/r2FPQIxHLmLamqiWB9CC" alt=""><figcaption></figcaption></figure>

</details>

<details>

<summary><strong>6.12. APIs Routed to LOO Keeper</strong></summary>

<table><thead><tr><th width="72.23828125">SN</th><th width="283.1640625">API</th><th>Description of Functions and Input Parameters</th></tr></thead><tbody><tr><td>78</td><td><p>function <strong>placeInitialOffer</strong>(</p><p>        uint256 <em><mark style="color:blue;">classOfShare</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">execHours</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">paid</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">price</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfLR</mark></em></p><p>) external</p></td><td>(The issuer) Place an initial offer for the class of <em><mark style="color:blue;">classOfShare</mark></em>, as per the authorization of the Listing Rule numbered as <em><mark style="color:blue;">seqOfLR</mark></em>,at the price of paid as <em><mark style="color:blue;">price</mark></em>, to the amount of paid as <em><mark style="color:blue;">paid</mark></em>, with the available number of hours as <em><mark style="color:blue;">execHours</mark></em>.</td></tr><tr><td>79</td><td><p>function <strong>withdrawInitialOffer</strong>(</p><p>        uint256 <em><mark style="color:blue;">classOfShare</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfOrder</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfLR</mark></em></p><p>) external;</p></td><td>(The issuer) Withdraw the initial offer numbered as <em><mark style="color:blue;">seqOfOrder</mark></em> under the class of <em><mark style="color:blue;">classOfShare</mark></em>, as per the authorization of the Listing Rule numbered as <em><mark style="color:blue;">seqOfLR</mark>.</em></td></tr><tr><td>80</td><td><p>function <strong>placeSellOrder</strong>(</p><p>        uint256 <em><mark style="color:blue;">seqOfClass</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">execHours</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">paid</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">price</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfLR</mark></em></p><p>) external</p></td><td>(Any qualified investor) Place a sell order under the class numbered as <em><mark style="color:blue;">seqOfClass</mark></em>, as per the Listing Rule of <em><mark style="color:blue;">seqOfLR</mark></em>, to the paid value amount to <em><mark style="color:blue;">paid</mark></em>, at the selling price of <em><mark style="color:blue;">price</mark></em>, with the available time within the number of hours as <em><mark style="color:blue;">execHours</mark></em>.</td></tr><tr><td>81</td><td><p>function <strong>withdrawSellOrder</strong>(</p><p>        uint256 <em><mark style="color:blue;">classOfShare</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfOrder</mark></em></p><p>) external</p></td><td>(The seller) Withdraw the sell order placed by itself numbered as <em><mark style="color:blue;">seqOfOrder</mark></em> for the class of <em><mark style="color:blue;">classOfShare</mark></em>.</td></tr><tr><td>82</td><td><p>function <strong>placeBuyOrder</strong>(</p><p>    ICashier.TransferAuth        </p><p>    memory <em><mark style="color:blue;">auth</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">classOfShare</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">paid</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">price</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">execHours</mark></em></p><p>) external</p></td><td>(Any qualified investor) Place a buy order for the class of <em><mark style="color:blue;">classOfShare</mark>,</em> to the paid value amount to <em><mark style="color:blue;">paid</mark></em>, at the buy price of <em><mark style="color:blue;">price</mark></em>, within the available time as number of hours of <em><mark style="color:blue;">execHours</mark></em>, paying certain amount of USDC as per the off-chain authorization signed as <em><mark style="color:blue;">auth</mark></em>.</td></tr><tr><td>83</td><td><p>function <strong>placeMarketBuyOrder</strong>(</p><p>    ICashier.TransferAuth </p><p>    memory <em><mark style="color:blue;">auth</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">classOfShare</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">paid</mark></em>,</p><p>    uint256 <em><mark style="color:blue;">execHours</mark></em></p><p>) external</p></td><td>(Any qualified investor) Place a buy order for the class of <em><mark style="color:blue;">classOfShare</mark>,</em> to the paid value amount to <em><mark style="color:blue;">paid</mark></em>, at the market price, with the available time within the number of hours as <em><mark style="color:blue;">execHours</mark></em>, paying certain amount of USDC as per the off-chain authorization signed as <em><mark style="color:blue;">auth</mark></em>.</td></tr><tr><td>84</td><td><p>function <strong>withdrawBuyOrder</strong>(</p><p>        uint256 <em><mark style="color:blue;">classOfShare</mark></em>,</p><p>        uint256 <em><mark style="color:blue;">seqOfOrder</mark></em></p><p>) external</p></td><td>(The buyer) Withdraw the buy order numbered as <em><mark style="color:blue;">seqOfOrder</mark></em> for the class of <em><mark style="color:blue;">classOfShare</mark></em> that it has placed.</td></tr></tbody></table>

<figure><img src="/files/imxn1y1Jqcb1wIYlb9op" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cQuUgWxVyXOnX5xjkZqR" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/7E6RlHJHkMSzQhEq85IE" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/6W4dqXhwjpoa7i4vFCxr" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/e55YruzQIhOQVP4kUDAY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/bzOpbcpioZv0xxIcvBXF" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/suusCkdy6myBTbqjZHRz" alt=""><figcaption></figcaption></figure>

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://comboox.gitbook.io/whitepaper-en/system-overview/6.-external-write-apis.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
