# Option Trading

The option trading library helps developers buy call or put options by performing the entire option trading flow when they make an order.

### Function List

* To fetch sign data from RPC

<table data-full-width="false"><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">fetchSignData()
</code></pre></td><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">-
</code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript">'Error fetching sign data'
</code></pre></td></tr></tbody></table>

* To place an order for the option trading
  * Input an object that includes option type (Call or Put), amount, underlying asset address (e.g. ETH address), premium asset (e.g. USDT address), expiration date (e.g. 2 hours, 8 hours, 24 hours)

<table data-full-width="false"><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">placeOrder(JVaultOrder: JVaultOrder)
</code></pre></td><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript"> JVaultOrder:
(
optionType: OptionType;
  amount: BigNumber;
  underlyingAsset: Address;
  premiumAsset: Address;
  expiry: Date
)
</code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript">'Error Placing order'
</code></pre></td></tr></tbody></table>

* To settle the option order at expiration time
  * With two main parameter:
    * JVaultOrder refers to above option trading parameter
    * LiquidateType includes 'NotExercising', 'Exercising', 'ProfitTaking'

<table data-full-width="false"><thead><tr><th>Method</th><th>Parameter Type</th><th>Error Message</th></tr></thead><tbody><tr><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript">liquidateOrder(JVaultOrder: JVaultOrder, liquidateType: LiquidateType)
</code></pre></td><td><pre class="language-javascript" data-overflow="wrap"><code class="lang-javascript"> JVaultOrder:
(
optionType: OptionType;
  amount: BigNumber;
  underlyingAsset: Address;
  premiumAsset: Address;
  expiry: Date
);
<strong>LiquidateType:
</strong>(
  NotExercising,
  Exercising,
  ProfitTaking,
) // enum
</code></pre></td><td><pre class="language-typescript" data-overflow="wrap"><code class="lang-typescript">'Error liquidateOrder'
</code></pre></td></tr></tbody></table>
