> For the complete documentation index, see [llms.txt](https://docs.kardiachain.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kardiachain.io/docs/archived-docs/sdk/js-sdk.md).

# \[Deprecated] KardiaChain JS SDK

This is just a quick introduction to Kardia JS SDK. For more detailed documentation, please refer to <https://docs.kardiachain.io/js-sdk/>

## **Getting Started**

&#x20;KardiaChain JS SDK contains 5 modules:

* `Account module` is for managing KardiaChain wallet
* `KAI module` is for interacting directly with KardiaChain's blockchain network
* `Contract module` is for interacting with KardiaChain's smart contract.
* `KRC20 module` is for interacting with KRC20 tokens
* `Transaction module` is for creating KardiaChain's transaction.

&#x20;

### &#x20;  **Installation**

&#x20;   KardiaChain JS SDK can be installed from npm

```
npm i kardia-js-sdk
```

### &#x20;   **Usage**

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

// Account module
const accountModule = kardiaClient.account;

// KAI module
const kaiModule = kardiaClient.kaiChain;

// Smart contract module
const smcModule = kardiaClient.contract;

// KRC20 module
const krcModule = kardiaClient.krc20;

// Transaction module
const transactionModule = kardiaClient.transaction;
```

## **Account Module**

### &#x20;   Generating a wallet

```java
import {KardiaAccount} from 'kardia-js-sdk';

const wallet = KardiaAccount.generateWallet();

// Expected result:
// {
//    address: "YOUR_WALLET_ADDRESS",
//    privateKey: "YOUR_ADDRESS_PRIVATE_KEY",
//    balace: 0
// }
```

### &#x20;   Get KAI balance of a wallet

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

// Account module
const accountModule = kardiaClient.account;

// Get balance
const balance = await accountModule.getBalance('YOUR_WALLET_ADDRESS');
```

### &#x20;   Access wallet by private key

```java
import {KardiaAccount} from 'kardia-js-sdk';

const wallet = KardiaAccount.getWalletFromPK('YOUR_ADDRESS_PRIVATE_KEY');

// Expected result:
// {
//    address: "YOUR_WALLET_ADDRESS",
//    privateKey: "YOUR_ADDRESS_PRIVATE_KEY",
//    balace: 123 // your wallet balance
// }
```

&#x20; &#x20;

### &#x20;    Access wallet by seed phrase

```java
import {KardiaAccount} from 'kardia-js-sdk';

const wallet = KardiaAccount.getWalletFromMnemonic('YOUR_MNEMONIC_PHRASE');

// Expected result:
// {
//    address: "YOUR_WALLET_ADDRESS",
//    privateKey: "YOUR_ADDRESS_PRIVATE_KEY",
//    balace: 123 // your wallet balance
// }
```

## KAI Module

### &#x20;   Event Handler

```java
const topic = keccak256('Transfer(address,address,uint256)');

    const filterId = await kardiaClient.kaiChain.newFilter({
      fromBlock: 200000,
      topics: [topic]
    })

    // To get all logs
    const allLogs = await kardiaClient.kaiChain.getFilterLogs(filterId);

    // To get logs since last poll
    const logs = await kardiaClient.kaiChain.getFilterChanges(filterId);
```

## KRC20 Module

### &#x20;   Get KRC20 balance of a wallet

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const krc20Instance = kardiaClient.krc20;

// Fetch KRC20 token's data from smart contract
await krc20Instance.getFromAddress('KRC20_TOKEN_ADDRESS');

const balance = await krc20Instance.balanceOf('YOUR_WALLET_ADDRESS');
// `balance` will be your wallet's balance, but with token's `decimals` padding.
// To get real ballance, use the following code

const decimals = krc20Instance.getDecimals();
const parsedBalance = balance / 10 ** decimals;
```

### &#x20;   Send a KRC20 transaction

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const krc20Instance = kardiaClient.krc20;

const txResult = await krc20Instance.transfer(
    'YOUR_WALLET_PRIVATE_KEY',
    'RECEIVER_ADDRESS',
    1 // Amount of tokens to send
);
```

## Transaction Module

### &#x20;   Creating a transaction

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

// Get your wallet's latest nonce
const nonce = await kardiaClient.account.getNonce('YOUR_WALLET_ADDRESS');
const txData = {
  to: 'RECEIVER_WALLET_ADDRESS',
  nonce,
  gas: 3000000,      // Gas limit
  gasPrice: 1*10**9,     // Minimum Gas Price = 1 OXY
  value: 231095,    // Amount of KAI to send
};

// Send transaction to network and get transaction hash immediately
const txHash = await kardiaClient.transaction.sendTransaction(
  txData,
  'YOUR_WALLET_PRIVATEKEY'
);

// txHash should be something like '0x0a2db5831c314363a97a79f416061a9daec5230f8b6306cd1c431b467c42f820'

// If you want to wait to the transaction to complete, follow the below code

const txResult = await kardiaClient.transaction.sendTransaction(
  txData,
  'YOUR_WALLET_PRIVATEKEY',
  true,    // Flag to indicate if you want to wait for the transaction to complete
  50000    // Time (in ms) you want to wait for transaction to complete, default will be 300000 (300s)
);
```

###

### &#x20;   Get transaction detail

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const txDetail = await kardiaClient.transaction.getTransaction('TRANSACTION_HASH');
```

###

### &#x20;   Get transaction receipt

```java
import KardiaClient from 'kardia-js-sdk';
const RPC_ENDPOINT = 'YOUR_RPC_ENDPOINT';

const kardiaClient = new KardiaClient({ endpoint: RPC_ENDPOINT });

const txReceipt = await kardiaClient.transaction.getTransactionReceipt('TRANSACTION_HASH');
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://docs.kardiachain.io/docs/archived-docs/sdk/js-sdk.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.
