# `@joystream/types`

The types package is required to register the custom Substrate runtime types when working with [`@polkadot/api`](https://www.npmjs.com/package/@polkadot/api#registering-custom-types) to communicate with a Joystream full node.


## Installation

Add the package as a dependency in your project.

```shell
yarn add @joystream/types

# or

npm install --save @joystream/types
```

## Registering the types

Call `registerJoystreamTypes()` before creating a Polkadot API client.

```javascript
import { registerJoystreamTypes } from '@joystream/types';
import { ApiPromise, WsProvider } from '@polkadot/api';

async function main () {
  // Initialise the provider to connect to the local node
  const provider = new WsProvider('ws://127.0.0.1:9944');

  // Register types before creating the API
  registerJoystreamTypes();

  // Create the API and wait until ready
  const api = await ApiPromise.create(provider);

  // Retrieve the chain & node information information via RPC calls
  const [chain, nodeName, nodeVersion] = await Promise.all([
    api.rpc.system.chain(),
    api.rpc.system.name(),
    api.rpc.system.version()
  ]);

  console.log(`Chain ${chain} using ${nodeName} v${nodeVersion}`);
}

main();
```

## Publishing Instructions
The package is published with typescipt sources pre-compiled, automated with prepublish hook in package.json

```
npm publish
```

## Users

See [joystream-api-examples](https://github.com/Joystream/joystream-api-examples) for some additional examples on usage.
