# Modules

SignumJS is maintained in a [monorepo](https://en.wikipedia.org/wiki/Monorepo) and splitted in several modules.&#x20;

![The available modules and their dependencies in relation to @signumjs/core](https://2499579265-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJXM5UHyYj6uDzdZzkIlL%2Fuploads%2FQVKmZXWw5rQLU6lVhImY%2FBlank%20diagram%20\(1\).png?alt=media\&token=4e2b0323-16f0-4fea-a39c-9009cd8ddb2f)



* [@signumjs/core](https://signum-network.github.io/signumjs/modules/core.html) The main module providing an extense API for blockchain interaction
* [@signumjs/contracts](https://signum-network.github.io/signumjs/modules/contracts.html) The module especifically relevant for _smart contracts_
* [@signumjs/crypto](https://signum-network.github.io/signumjs/modules/crypto.html) The cryptographic functions
* [@signumjs/util](https://signum-network.github.io/signumjs/modules/util.html) This is the tool belt around SignumJS providing most useful functions, e.g. conversions
* [@signumjs/http](https://signum-network.github.io/signumjs/modules/http.html) A thin Http wrapper, with consistent response types, and exception handling. It wraps the famous [axios](https://axios-http.com/) library.
* [@signumjs/monitor](https://signum-network.github.io/signumjs/modules/monitor.html) A module providing a class to execute recurring async operations with de/serialization feature, good for listening to blockchain transactions. This is still experimental and the only one that is not used by `@signumjs/core`.

## Install packages

The installation of the packages always follows the same pattern

{% tabs %}
{% tab title="npm" %}
```bash
npm i @signumjs/core
npm i @signumjs/contracts
npm i @signumjs/crypto
npm i @signumjs/util
npm i @signumjs/http
npm i @signumjs/monitor
```


{% endtab %}

{% tab title="yarn" %}
```bash
yarn add @signumjs/core
yarn add @signumjs/contracts
yarn add @signumjs/crypto
yarn add @signumjs/util
yarn add @signumjs/http
yarn add @signumjs/monitor
```
{% endtab %}

{% tab title="<script/>" %}
```html
<script src='https://cdn.jsdelivr.net/npm/@signumjs/core/dist/signumjs.min.js'></script>
<script src='https://cdn.jsdelivr.net/npm/@signumjs/contracts/dist/signumjs.contracts.min.js'></script>
<script src='https://cdn.jsdelivr.net/npm/@signumjs/crypto/dist/signumjs.crypto.min.js'></script>
<script src='https://cdn.jsdelivr.net/npm/@signumjs/http/dist/signumjs.http.min.js'></script>
<script src='https://cdn.jsdelivr.net/npm/@signumjs/util/dist/signumjs.util.min.js'></script>
<script src='https://cdn.jsdelivr.net/npm/@signumjs/monitor/dist/signumjs.monitor.min.js'></script>
```
{% endtab %}
{% endtabs %}
