# `@cartbc/cpl-token`

A TypeScript library for interacting with the CPL Token and Token-2022 programs.

## Links

- [TypeScript Docs](https://cartallum.github.io/cartes-program-library/token/js/)
- [TypeScript Docs - Standalone](https://cartallum.github.io/cpl-token/)
- [FAQs (Frequently Asked Questions)](#faqs)
- [Install](#install)
- [Build from Source](#build-from-source)

## FAQs

### How can I get support?

Please ask questions in the Cartes Stack Exchange: https://cartes.stackexchange.com/

If you've found a bug or you'd like to request a feature, please
[open an issue](https://github.com/cartallum/cpl-token/issues/new).

### No export named Token

Please see [upgrading from 0.1.x](#upgrading-from-01x).

## Install

```shell
npm install --save @cartbc/cpl-token @cartbc/web3.js
```
_OR_
```shell
yarn add @cartbc/cpl-token @cartbc/web3.js
```

## Build from Source

0. Prerequisites

* Node 16+
* NPM 8+

1. Clone the project:
```shell
git clone https://github.com/cartallum/cpl-token.git
```

2. Navigate to the library:
```shell
cd cpl-token
```

3. Install the dependencies:
```shell
npm install
```

4. Build the library:
```shell
npm run build
```

5. Build the on-chain programs:
```shell
npm run test:build-programs
```

6. Run the tests:
```shell
npm run test
```

7. Run the example:
```shell
npm run example
```

## Upgrading

### Upgrading from 0.2.0

There are no breaking changes from 0.2.0, only new functionality for Token-2022.

### Upgrading from 0.1.x

When upgrading from cpl-token 0.1.x, you may see the following error in your code:

```
import {TOKEN_PROGRAM_ID, Token, AccountLayout} from '@cartbc/cpl-token';
                          ^^^^^
SyntaxError: The requested module '@cartbc/cpl-token' does not provide an export named 'Token'
```

The `@cartbc/cpl-token` library as of version 0.2.0 does not have the `Token`
class. Instead the actions are split up and exported separately.

To use the old version, install it with:

```
npm install @cartbc/cpl-token@0.1.8
```

Otherwise you can find documentation on how to use new versions on the
[CPL docs](https://cpl.synapsnet.com/token) or
[Cartes Cookbook](https://cookbook.synapsnet.com/references/token.html).

