# @ton-api/client

## Overview

`@ton-api/client` is an automatically generated SDK that provides seamless access to the endpoints offered by [tonapi.io](https://tonapi.io). This client is specifically designed to integrate with the TON blockchain, offering type-safe interactions and full compatibility with @ton/core library.

## Documentation

For a detailed view of all methods and endpoints in a Swagger format, refer to the [Swagger documentation](https://tonapi.io/api-v2)
For detailed API information and endpoint descriptions, please refer to the [official documentation](https://docs.tonconsole.com/tonapi/rest-api) or check the [Swagger UI](https://tonapi.io/api-v2) for an interactive method list.

For usage examples, check the [TonAPI Cookbook](https://docs.tonconsole.com/tonapi/cookbook).

## Features

- Full coverage of tonapi.io endpoints
- Type-safe interactions with the API
- Seamless integration with `@ton/core`
<!-- - Automatically generated from the latest API specifications -->

Additionally, [`@ton-api/ton-adapter`](https://www.npmjs.com/package/@ton-api/ton-adapter) enables users to work with contracts written for `@ton/ton` through `@ton-api/client`, ensuring seamless integration while maintaining their existing code structure.

## Prerequisites

To use this SDK, you need to:

1. Set up an account at [tonconsole.com](https://tonconsole.com/)
2. Obtain an API key for authentication

## Installation

Install the package and its peer dependencies using npm, yarn, or pnpm:

```sh
npm install @ton-api/client @ton/core
# or
yarn add @ton-api/client @ton/core
# or
pnpm add @ton-api/client @ton/core
```

## Quick Start

Here's a basic example to get you started:

```javascript
import { TonApiClient } from '@ton-api/client';
import { Address } from '@ton/core';

// Initialize the TonApi
const ta = new TonApiClient({
    baseUrl: 'https://tonapi.io',
    apiKey: 'YOUR_API_KEY'
});

// Use the API
async function fetchAccountEvents() {
    const address = Address.parse('YOUR_ADDRESS_HERE');
    const events = await ta.accounts.getAccountEvents(address, { limit: 50 })
    
    console.log('Account events:', events)
}

fetchAccountEvents();
```

## Documentation

For detailed API information and endpoint descriptions, please refer to the [official documentation](https://docs.tonconsole.com/tonapi).

## Usage Examples

### Fetching NFT Collection

```javascript
const collectionAddress = Address.parse('COLLECTION_ADDRESS_HERE');

ta.nft.getNftCollection(collectionAddress)
    .then(collection => console.log('NFT Collection:', collection))
    .catch(error => console.error('Error fetching NFT collection:', error));
```

### Getting Jetton Information

```javascript
const jettonAddress = Address.parse('JETTON_ADDRESS_HERE');

ta.jettons.getJettonInfo(jettonAddress)
    .then(jetton => console.log('Jetton Info:', jetton))
    .catch(error => console.error('Error fetching jetton info:', error));
```

### Send message to blockchain

```javascript
import { beginCell, external, storeMessage, Address } from '@ton/core';

const accountAddress = Address.parse('JETTON_ADDRESS_HERE');
const exampleMessage = beginCell()
    .storeUint(0, 64)
    .endCell();
    

const messageBoc = beginCell()
    .store(
        storeMessage(
            external({
                to: address,
                body: exampleMessage
            })
        )
    )
    .endCell();

ta.blockchain.sendBlockchainMessage({
    boc: messageBoc
});
```

## License

MIT
