> For the complete documentation index, see [llms.txt](https://docs.kanalabs.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kanalabs.io/perpetual-futures/kana-perps/api-docs/installation-setup.md).

# Installation Setup

### Testnet Supported Markets

<table data-header-hidden><thead><tr><th></th><th width="282"></th><th></th></tr></thead><tbody><tr><td><strong>Asset</strong></td><td><strong>Market ID</strong></td><td><strong>Description</strong></td></tr><tr><td>APT-USD</td><td>1338</td><td>Aptos-based trading market.</td></tr><tr><td>BTC-USD</td><td>1339</td><td>Bitcoin-based trading market.</td></tr><tr><td>ETH-USD</td><td>1340</td><td>Ethereum-based trading market.</td></tr><tr><td>SOL-USD</td><td>2387</td><td>Solana-based trading market.</td></tr></tbody></table>

### Mainnet Supported Markets

<table data-header-hidden><thead><tr><th></th><th width="282"></th><th></th></tr></thead><tbody><tr><td><strong>Asset</strong></td><td><strong>Market ID</strong></td><td><strong>Description</strong></td></tr><tr><td>APT-USD</td><td>14</td><td>Aptos-based trading market.</td></tr><tr><td>BTC-USD</td><td>15</td><td>Bitcoin-based trading market.</td></tr><tr><td>ETH-USD</td><td>16</td><td>Ethereum-based trading market.</td></tr><tr><td>SOL-USD</td><td>31</td><td>Solana-based trading market.</td></tr></tbody></table>

#### Prerequisites

Before using the API, ensure you have the following:

1. **Node.js**: Install version 16 or higher. [Download here](https://nodejs.org/).
2. **npm**: Verify npm is installed to manage packages.

#### Install Required Packages

Run these commands to install the required dependencies:

1. Install `dotenv` and `axios`:

   ```bash
   npm install dotenv axios
   ```
2. Install the Aptos SDK for TypeScript:

   ```bash
   npm install @aptos-labs/ts-sdk
   ```

#### Example Setup in TypeScript

Create a file, e.g., `setup.ts`, and use the following code:

```typescript
// Import required packages
import dotenv from 'dotenv';
import axios from 'axios';
import { AptosConfig, Aptos, Network, Account, Ed25519PrivateKey, PrivateKeyVariants } from "@aptos-labs/ts-sdk";

// Load environment variables from .env file
dotenv.config();

// Setup the client
const config = new AptosConfig({ network: Network.TESTNET });
const aptos = new Aptos(config);
const formattedPrivateKey = PrivateKey.formatPrivateKey(
    process.env.APTOS_PRIVATEKEY || '',
    'ed25519' as PrivateKeyVariants
);
const account = Account.fromPrivateKey({
    privateKey: new Ed25519PrivateKey(formattedPrivateKey),
});
```

### **Size Conversion Details:**

**APT Market**

* `base_decimals`: **8**
* `lot_size_multiplier`: **100000**

**BTC Market**

* `base_decimals`: **8**
* `lot_size_multiplier`: **1000**

**ETH Market**

* `base_decimals`: **8**
* `lot_size_multiplier`: **10000**

#### Size Conversion Example in TypeScript:

```typescript
import BigNumber from "bignumber.js";

async function main(): Promise<void> {

    // Size conversion
    const size = new BigNumber("your_size_value"); // Eg: 5.67
    const baseDecimals = "your_base_decimals_value"; // Eg: 8
    const lotSizeMultiplier = new BigNumber("your_lot_size_multiplier_value"); // Eg: 100000

    // 10^baseDecimals
    const sizeScalingFactor = new BigNumber(10).pow(baseDecimals);

    // Convert size and remove decimals
    const convertedSize = size.multipliedBy(sizeScalingFactor).dividedBy(lotSizeMultiplier).integerValue(BigNumber.ROUND_FLOOR);

    console.log("Converted Size: ", convertedSize.toString());
}

main().catch(error => {
    console.error('An error occurred:', error);
});

```

### **Price Conversion Details:**

**APT Market**

* `price_precision`: **3**

**BTC Market**

* `price_precision`: **0**

**ETH Market**

* `price_precision`: **1**

#### Price Conversion Example in TypeScript:

```typescript
import BigNumber from "bignumber.js";

async function main(): Promise<void> {

    // Price conversion
    const price = new BigNumber("your_price_value"); // Eg: 8.356
    const pricePrecision = "your_price_precision_value"; // Eg: 3

    // 10^pricePrecision
    const priceMultiplier = new BigNumber(10).pow(pricePrecision);

    // Convert price and remove decimals
    const convertedPrice = price.multipliedBy(priceMultiplier).integerValue(BigNumber.ROUND_FLOOR);

    console.log("Converted Price: ", convertedPrice.toString());
}

main().catch(error => {
    console.error('An error occurred:', error);
});

```
