From 460192eddf1bb80713cc66f98674ed73d4032d55 Mon Sep 17 00:00:00 2001
From: Pierre Jeanjacquot <26487010+PierreJeanjacquot@users.noreply.github.com>
Date: Fri, 4 Mar 2022 16:58:07 +0100
Subject: [PATCH] generate doc with typedoc
---
CLI.md | 908 +++++
README.md | 3294 +----------------
cookbook.md | 66 -
docs/.nojekyll | 1 +
docs/README.md | 192 +
docs/classes/IExec.md | 272 ++
docs/classes/IExecAccountModule.md | 209 ++
docs/classes/IExecAppModule.md | 224 ++
docs/classes/IExecConfig.md | 248 ++
docs/classes/IExecDatasetModule.md | 387 ++
docs/classes/IExecDealModule.md | 387 ++
docs/classes/IExecENSModule.md | 322 ++
docs/classes/IExecHubModule.md | 205 +
docs/classes/IExecModule.md | 106 +
docs/classes/IExecNetworkModule.md | 115 +
docs/classes/IExecOrderModule.md | 1165 ++++++
docs/classes/IExecOrderbookModule.md | 370 ++
docs/classes/IExecResultModule.md | 169 +
docs/classes/IExecStorageModule.md | 194 +
docs/classes/IExecTaskModule.md | 236 ++
docs/classes/IExecWalletModule.md | 433 +++
docs/classes/IExecWorkerpoolModule.md | 212 ++
docs/classes/errors.BridgeError.md | 64 +
docs/classes/errors.ConfigurationError.md | 39 +
docs/classes/errors.ObjectNotFoundError.md | 77 +
docs/classes/errors.ValidationError.md | 42 +
docs/classes/errors.Web3ProviderCallError.md | 58 +
docs/classes/errors.Web3ProviderError.md | 60 +
docs/classes/errors.Web3ProviderSendError.md | 58 +
.../errors.Web3ProviderSignMessageError.md | 58 +
docs/classes/internal_.BrigdeObservable.md | 96 +
docs/classes/internal_.DealObservable.md | 86 +
.../internal_.ENSConfigurationObservable.md | 106 +
.../classes/internal_.IExecContractsClient.md | 322 ++
docs/classes/internal_.Observable.md | 70 +
docs/classes/internal_.TaskObservable.md | 88 +
docs/classes/utils.BN.md | 68 +
docs/classes/utils.EnhancedWallet.md | 67 +
docs/interfaces/internal_.App.md | 90 +
docs/interfaces/internal_.ApporderTemplate.md | 89 +
docs/interfaces/internal_.Category.md | 51 +
.../internal_.ConsumableApporder.md | 111 +
.../internal_.ConsumableDatasetorder.md | 111 +
.../internal_.ConsumableRequestorder.md | 177 +
.../internal_.ConsumableWorkerpoolorder.md | 133 +
docs/interfaces/internal_.Dataset.md | 64 +
.../internal_.DatasetorderTemplate.md | 89 +
docs/interfaces/internal_.HashableApporder.md | 100 +
.../internal_.HashableDatasetorder.md | 100 +
.../internal_.HashableRequestorder.md | 166 +
.../internal_.HashableWorkerpoolorder.md | 122 +
docs/interfaces/internal_.IExecConfigArgs.md | 36 +
.../internal_.IExecConfigOptions.md | 194 +
docs/interfaces/internal_.PaginableDeals.md | 56 +
docs/interfaces/internal_.PaginableOrders.md | 62 +
.../interfaces/internal_.PublishedApporder.md | 103 +
.../internal_.PublishedDatasetorder.md | 103 +
.../internal_.PublishedRequestorder.md | 109 +
.../internal_.PublishedWorkerpoolorder.md | 105 +
.../internal_.RequestorderTemplate.md | 166 +
docs/interfaces/internal_.SignedApporder.md | 111 +
.../internal_.SignedDatasetorder.md | 111 +
.../internal_.SignedRequestorder.md | 177 +
.../internal_.SignedWorkerpoolorder.md | 133 +
docs/interfaces/internal_.Workerpool.md | 38 +
.../internal_.WorkerpoolorderTemplate.md | 111 +
docs/modules.md | 31 +
docs/modules/errors.md | 16 +
docs/modules/internal_.md | 193 +
docs/modules/utils.md | 318 ++
package-lock.json | 61 +
package.json | 8 +-
tsconfig.doc.json | 17 +
typedoc_readme.md | 190 +
74 files changed, 11589 insertions(+), 3337 deletions(-)
create mode 100644 CLI.md
delete mode 100644 cookbook.md
create mode 100644 docs/.nojekyll
create mode 100644 docs/README.md
create mode 100644 docs/classes/IExec.md
create mode 100644 docs/classes/IExecAccountModule.md
create mode 100644 docs/classes/IExecAppModule.md
create mode 100644 docs/classes/IExecConfig.md
create mode 100644 docs/classes/IExecDatasetModule.md
create mode 100644 docs/classes/IExecDealModule.md
create mode 100644 docs/classes/IExecENSModule.md
create mode 100644 docs/classes/IExecHubModule.md
create mode 100644 docs/classes/IExecModule.md
create mode 100644 docs/classes/IExecNetworkModule.md
create mode 100644 docs/classes/IExecOrderModule.md
create mode 100644 docs/classes/IExecOrderbookModule.md
create mode 100644 docs/classes/IExecResultModule.md
create mode 100644 docs/classes/IExecStorageModule.md
create mode 100644 docs/classes/IExecTaskModule.md
create mode 100644 docs/classes/IExecWalletModule.md
create mode 100644 docs/classes/IExecWorkerpoolModule.md
create mode 100644 docs/classes/errors.BridgeError.md
create mode 100644 docs/classes/errors.ConfigurationError.md
create mode 100644 docs/classes/errors.ObjectNotFoundError.md
create mode 100644 docs/classes/errors.ValidationError.md
create mode 100644 docs/classes/errors.Web3ProviderCallError.md
create mode 100644 docs/classes/errors.Web3ProviderError.md
create mode 100644 docs/classes/errors.Web3ProviderSendError.md
create mode 100644 docs/classes/errors.Web3ProviderSignMessageError.md
create mode 100644 docs/classes/internal_.BrigdeObservable.md
create mode 100644 docs/classes/internal_.DealObservable.md
create mode 100644 docs/classes/internal_.ENSConfigurationObservable.md
create mode 100644 docs/classes/internal_.IExecContractsClient.md
create mode 100644 docs/classes/internal_.Observable.md
create mode 100644 docs/classes/internal_.TaskObservable.md
create mode 100644 docs/classes/utils.BN.md
create mode 100644 docs/classes/utils.EnhancedWallet.md
create mode 100644 docs/interfaces/internal_.App.md
create mode 100644 docs/interfaces/internal_.ApporderTemplate.md
create mode 100644 docs/interfaces/internal_.Category.md
create mode 100644 docs/interfaces/internal_.ConsumableApporder.md
create mode 100644 docs/interfaces/internal_.ConsumableDatasetorder.md
create mode 100644 docs/interfaces/internal_.ConsumableRequestorder.md
create mode 100644 docs/interfaces/internal_.ConsumableWorkerpoolorder.md
create mode 100644 docs/interfaces/internal_.Dataset.md
create mode 100644 docs/interfaces/internal_.DatasetorderTemplate.md
create mode 100644 docs/interfaces/internal_.HashableApporder.md
create mode 100644 docs/interfaces/internal_.HashableDatasetorder.md
create mode 100644 docs/interfaces/internal_.HashableRequestorder.md
create mode 100644 docs/interfaces/internal_.HashableWorkerpoolorder.md
create mode 100644 docs/interfaces/internal_.IExecConfigArgs.md
create mode 100644 docs/interfaces/internal_.IExecConfigOptions.md
create mode 100644 docs/interfaces/internal_.PaginableDeals.md
create mode 100644 docs/interfaces/internal_.PaginableOrders.md
create mode 100644 docs/interfaces/internal_.PublishedApporder.md
create mode 100644 docs/interfaces/internal_.PublishedDatasetorder.md
create mode 100644 docs/interfaces/internal_.PublishedRequestorder.md
create mode 100644 docs/interfaces/internal_.PublishedWorkerpoolorder.md
create mode 100644 docs/interfaces/internal_.RequestorderTemplate.md
create mode 100644 docs/interfaces/internal_.SignedApporder.md
create mode 100644 docs/interfaces/internal_.SignedDatasetorder.md
create mode 100644 docs/interfaces/internal_.SignedRequestorder.md
create mode 100644 docs/interfaces/internal_.SignedWorkerpoolorder.md
create mode 100644 docs/interfaces/internal_.Workerpool.md
create mode 100644 docs/interfaces/internal_.WorkerpoolorderTemplate.md
create mode 100644 docs/modules.md
create mode 100644 docs/modules/errors.md
create mode 100644 docs/modules/internal_.md
create mode 100644 docs/modules/utils.md
create mode 100644 tsconfig.doc.json
create mode 100644 typedoc_readme.md
diff --git a/CLI.md b/CLI.md
new file mode 100644
index 00000000..b7f2e469
--- /dev/null
+++ b/CLI.md
@@ -0,0 +1,908 @@
+[< Back home](./README.md)
+
+# iExec SDK CLI
+
+Use the iExec decentralised marketplace for off-chain computing from your terminal.
+
+## Content
+
+- [Install](#install)
+- [Upgrade](#upgrade)
+- [Quick start](#quick-start)
+- [API](#api)
+- [Files](#files)
+- [Interoperability](#Interoperability)
+
+---
+
+# Install
+
+All three major OS are supported (linux, OSX, windows).
+
+## Using Nodejs
+
+Requirements: [](https://nodejs.org/en/) and [Git](https://git-scm.com/).
+
+```bash
+npm -g install iexec # install the cli
+iexec --version
+iexec --help
+```
+
+## Using Docker
+
+Requirements: [Docker](https://docs.docker.com/install/).
+
+```bash
+# For Linux users
+echo 'alias iexec='"'"'docker run -e DEBUG=$DEBUG --interactive --tty --rm -v /tmp:/tmp -v $(pwd):/iexec-project -v /home/$(whoami)/.ethereum/keystore:/home/node/.ethereum/keystore -w /iexec-project iexechub/iexec-sdk:latest'"'"'' >> ~/.bash_aliases && source ~/.bashrc
+# For Mac OSX users
+echo 'alias iexec='"'"'docker run -e DEBUG=$DEBUG --interactive --tty --rm -v /tmp:/tmp -v $(pwd):/iexec-project -v /Users/$(whoami)/Library/Ethereum/keystore:/home/node/.ethereum/keystore -w /iexec-project iexechub/iexec-sdk:latest'"'"'' >> ~/.bash_profile && source ~/.bash_profile
+```
+
+Now run `iexec --version` to check all is working.
+
+## Upgrade
+
+- **Nodejs**: run `npm -g install iexec`
+- **Docker**: run `docker pull iexechub/iexec-sdk`
+
+---
+
+# Quick start
+
+- [Init project](#Init-project)
+- [SDK CLI for Dapp developpers](#SDK-CLI-for-Dapp-developpers)
+- [SDK CLI for Dataset providers](#SDK-CLI-for-Dataset-providers)
+- [SDK CLI for Workerpools](#SDK-CLI-for-Workerpools)
+- [SDK CLI for Requesters](#SDK-CLI-for-Requesters)
+- [SDK CLI for workers](#SDK-CLI-for-workers)
+
+## Init project
+
+required steps before following any other workflow.
+
+```bash
+iexec init # create all required files
+iexec wallet get-RLC # ask iExec faucet for RLC
+iexec wallet show # show your wallet
+iexec storage init # initialize your remote storage
+```
+
+> _NB:_ iExec SDK CLI access the public blockchains (mainnet & goerli) through [ethers](https://github.com/ethers-io/ethers.js/) to connect different backends ([Alchemy](https://alchemyapi.io/), [Etherscan](https://etherscan.io/), [INFURA](https://infura.io/)).
+>
+> Default API keys for backend services are provided for convenience.
+> As these keys are shared accross all users and are subject to rate limits, **you must use your own API keys** or better **your own node**.
+>
+> Get API keys for backend services:
+>
+> - [INFURA](https://infura.io/register) ([more details on Infura's blog](https://blog.infura.io/getting-started-with-infura-28e41844cc89/))
+> - [Etherscan](https://etherscan.io/apis)
+> - [Alchemy](https://alchemyapi.io/signup)
+>
+> Once you created your access, you can add your API keys in the `chains.json` configuration file:
+>
+> ```json
+> {
+> "default": ...,
+> "chains": { ... },
+> "providers": {
+> "infura": {
+> "projectId": "INFURA_PROJECT_ID",
+> "projectSecret": "INFURA_PROJECT_SECRET"
+> },
+> "etherscan": "ETHERSCAN_API_KEY",
+> "alchemy": "ALCHEMY_API_KEY"
+> }
+> }
+> ```
+>
+> If you run your own node, you can add an `host` key in the `chains.json` configuration file to target your node:
+>
+> ```json
+> {
+> "default": ...,
+> "chains": {
+> ...
+> "mainnet": {
+> "id": "1",
+> "host": "http://localhost:8545"
+> },
+> "goerli": {
+> "id": "5",
+> "host": "http://localhost:58545"
+> }
+> }
+> }
+> ```
+>
+> Check your current host:
+> `iexec info`
+
+## SDK CLI for Dapp developpers
+
+First go through [Init project](#Init-project)
+
+### Deploy an app
+
+```bash
+iexec app count # check if you have already deployed apps
+iexec app init # reset app fields in iexec.json
+iexec app deploy # deploy app on Ethereum and get an address
+iexec app show # show details of deployed app
+```
+
+### Run an app
+
+```bash
+iexec app run [address] # run an application on iExec at market price
+```
+
+### Sell your app on the Marketplace
+
+```bash
+iexec orderbook app
# check if you have valid sell orders for your app on the Marketplace
+iexec app publish [address] # publish an apporder on the Marketplace and get an orderHash
+iexec order show --app [orderHash] # show your order on the Marketplace
+iexec order cancel --app # cancel your order
+```
+
+## SDK CLI for Dataset providers
+
+First go through [Init project](#Init-project)
+
+### Encrypt your dataset
+
+```bash
+cp 'myAwsomeDataset.file' ./datasets/original # copy your dataset file or folder into the dataset/original/ folder
+iexec dataset encrypt # generate a secret key for each file or folder in dataset/original/ and encrypt it, also output the encrypted file checksum to use for deployment.
+cat ./.secrets/dataset/myAwsomeDataset.file.secret # this is the secret key for decrypting the dataset
+cat ./datasets/encrypted/myAwsomeDataset.file.enc # this is the encrypted dataset, you must share this file at a public url
+```
+
+### Deploy your dataset
+
+```bash
+iexec dataset count # check if you have already deployed datasets
+iexec dataset init # reset dataset fields in iexec.json
+iexec dataset deploy # deploy dataset on Ethereum
+iexec dataset show # show details of deployed dataset
+```
+
+## Securely share the dataset secret key
+
+**Disclaimer:** The secrets pushed in the Secreet Management Service will be shared with the worker to process the dataset in the therms your specify in the dataset order. Make sure to always double check your selling policy in the dataset order before signing it.
+
+```bash
+iexec dataset push-secret # Push the secret in the Secret Management Service (sms)
+```
+
+### Sell your dataset on the Marketplace
+
+```bash
+iexec orderbook dataset # check if you have valid sell orders for your dataset on the Marketplace
+iexec dataset publish [address] --tag tee --app-restrict # publish a datasetorder (restricted to specific app running in Trusted Execution Environment) on the Marketplace and get an orderHash
+iexec order show --dataset [orderHash] # show your order on the Marketplace
+iexec order cancel --dataset # cancel your order
+```
+
+## SDK CLI for Workerpools
+
+First go through [Init project](#Init-project)
+
+### Deploy a workerpool
+
+```bash
+iexec workerpool count # check if you have already deployed workerpools
+iexec workerpool init # reset workerpool fields in iexec.json
+iexec workerpool deploy # deploy workerpool on Ethereum
+iexec workerpool show # show details of deployed workerpool
+```
+
+### Sell your computing power at limit price on the Marketplace
+
+```bash
+iexec orderbook workerpool [address] --category # check if you have valid sell orders for your workerpool on the Marketplace
+iexec workerpool publish # publish a workerpoolorder on the Marketplace and get an orderHash
+iexec order cancel --workerpool # cancel your order
+```
+
+### Sell your computing power at market price on the Marketplace
+
+```bash
+iexec orderbook requester --category # find a requestorder ask you want to fill in your category
+iexec orderbook app # find a compatible apporder
+iexec orderbook dataset # find a compatible datasetorder
+iexec order init --workerpool # reset workerpoolorder fields in iexec.json
+iexec order sign --workerpool # sign your workerpoolorder
+iexec order fill --request --app --dataset # send the orders and get a dealid
+iexec deal show # show the detail of the deal you concludes
+```
+
+## SDK CLI for Requesters
+
+First go through [Init project](#init-project)
+
+### Top up your iExec account to buy compution
+
+```bash
+iexec account show # show your iExec account
+iexec account deposit 200 # deposit RLC from your wallet to your account
+iexec account show # make sure you have enough staked RCL to buy computation
+```
+
+### Buy computation at market price on the Marketplace
+
+```bash
+iexec app run [address] [--dataset [address] --args --category ] # run an iExec application at market price
+```
+
+see [app run available options](#app-run)
+
+### Or Buy computation at limit price on the Marketplace
+
+```bash
+iexec app request-execution [address] [--dataset [address] --args --category ] # publish a requestorder on the Marketplace and get an orderHash
+iexec order show --request --deals # show your order on the Marketplace and check the deals
+```
+
+### Watch your Deals, your Tasks and download the results
+
+```bash
+iexec deal show # show your deal details, get the taskids
+iexec task show # show the status of your task
+iexec task show --watch # wait until the task is COMPLETED or FAILED
+iexec task show --download [fileName] # download the result of your COMPLETED task
+```
+
+### Use results encryption
+
+```bash
+iexec result generate-encryption-keypair # generate private/public RSA keypair for result encryption
+iexec result push-encryption-key # share the public RSA key with the secret management service, all your results will be encrypted with this key
+# Go through the normal buy process and download the result of the computation #
+iexec result decrypt [encryptedResultsFilePath] # decrypt the result with the private RSA key
+```
+
+## SDK CLI for workers
+
+First go through [Init project](#Init-project)
+
+### Top up your iExec account to stake
+
+```bash
+iexec account deposit 200 # deposit RLC from your wallet to your account
+iexec account show # make sure you have enough stake to join a workerpool
+```
+
+### Withdraw your working reward
+
+```bash
+iexec account show # view your available stake
+iexec account withdraw 1000 # withdraw RLC from your account to your wallet
+```
+
+---
+
+# API
+
+- [Help & Info](#help--info)
+- [Global options](#global-options)
+- [init](#init)
+- [wallet](#wallet)
+- [account](#account)
+- [app](#app)
+- [dataset](#dataset)
+- [workerpool](#workerpool)
+- [order](#order)
+- [orderbook](#orderbook)
+- [deal](#deal)
+- [task](#task)
+- [storage](#storage)
+- [result](#result)
+- [ens](#ens)
+- [category](#category)
+- [registry](#registry)
+
+## Help & Info
+
+```bash
+iexec --version
+iexec --help
+iexec app --help
+iexec orderbook --help
+iexec info --chain viviani
+```
+
+## Global options
+
+```bash
+--quiet # disable update notification
+--raw # display the command result as a json (disable update notification)
+```
+
+### Wallet options
+
+```bash
+--keystoredir <'global'|'local'|customPath> # specify the location of the keystoredir
+--wallet-address # specify which wallet to use in the keystore
+--wallet-file # specify which wallet to use in the keystore
+--password # specify the password for unlocking the wallet (not recommended)
+```
+
+### Transactions options
+
+```bash
+--gas-price [unit] # use the specified value (in wei or specified unit) for next transactions gas price (default use eth_gasPrice current value)
+--confirms # set custom block count to wait for transactions confirmation (default 1 block)
+```
+
+## init
+
+```bash
+iexec init # create all files necessary to get started
+iexec init --skip-wallet # skip the wallet creation step
+```
+
+## wallet
+
+```bash
+# OPTIONS
+# --chain
+# --to
+# --force
+# --password
+iexec wallet create # create a new encrypted wallet
+iexec wallet create --unencrypted # create unencrypted wallet.json (not recommended)
+iexec wallet import # create an encrypted wallet from a privateKey
+iexec wallet get-ETH # ask ETH from faucets
+iexec wallet get-RLC # ask RLC from faucets
+iexec wallet show [address] # optional address to show other people's wallet
+iexec wallet show --show-private-key # allow displaying wallet private key
+iexec wallet send-ether [unit] --to # send ether amount (in ether or specified unit) to the specified eth address
+iexec wallet send-RLC [unit] --to # send RLC amount (in RLC or specified unit) to the specified eth address
+iexec wallet sweep --to # drain all ether and RLC, sending them to the specified eth address
+iexec wallet bridge-to-sidechain [unit] # send RLC amount (in nRLC or specified unit) from a mainchain to the bridged sidechain.
+iexec wallet bridge-to-mainchain [unit] # send RLC amount (in nRLC or specified unit) from a sidechain to the bridged mainchain.
+iexec wallet swap-RLC-for-eRLC [unit] # swap RLC for the same amount of eRLC (default unit nRLC) - the wallet must be authorized to interact with eRLC.
+iexec wallet swap-eRLC-for-RLC [unit] # swap eRLC for the same amount of RLC (default unit neRLC) - the wallet must be authorized to interact with eRLC.
+```
+
+The wallet files are stored in the Ethereum keystore.
+The keystore location depends on your OS:
+
+- Linux : ~/.ethereum/keystore
+- Mac: ~/Library/Ethereum/keystore
+- Windows: ~/AppData/Roaming/Ethereum/keystore
+
+## account
+
+```bash
+# OPTIONS
+# --chain
+# --force
+iexec account show [address] # optional address to show other people's account
+iexec account deposit [unit] # deposit the specified amount of RLC (in nRLC or specified unit) from your wallet to your account
+iexec account withdraw [unit] # withdraw the specified amount of RLC (in nRLC or specified unit) from your account to your wallet
+```
+
+## app
+
+```bash
+# OPTIONS
+# --chain
+# --user
+iexec app init # init the app template
+iexec app init --tee # init the TEE app template
+iexec app deploy # deploy the app on the blockchain
+iexec app publish [address] # publish an apporder to make your app publicly available on the marketplace (use options to manage access)
+iexec app unpublish [address] # unpublish the last published apporder for specified app
+iexec app unpublish [address] --all # unpublish all the published apporders for specified app
+iexec app show [address|index] # show app details
+iexec app count # count your total number of app
+iexec app count --user # count user total number of app
+```
+
+### app run
+
+```bash
+iexec app run [appAddress] [options] # run an iExec application at market price (default run last deployed app)
+# OPTIONS
+--dataset # dataset address, use "deployed" to use last deployed from "deployed.json"
+--workerpool # workerpool address, use "deployed" to use last deployed from "deployed.json"
+--category # id of the task category
+--tag # specify tags (usage: --tag tee,gpu)
+--trust # trust level
+--beneficiary # specify the beneficiary of the request (default user address)
+--callback # specify the callback address of the request
+--args # specify the arguments to pass to the app
+--input-files # specify the URL of input files to be used by the app (usage: --input-files https://example.com/foo.txt,https://example.com/bar.zip)
+--encrypt-result # encrypt the result archive with the beneficiary public key
+--storage-provider <"ipfs"|"dropbox"> # specify the storage to use to store the result archive
+--skip-request-check # skip request validity checks, this may result in task execution fail
+--params # specify the params of the request, this option is reserved to an advanced usage (usage: --params '{"iexec_args":"dostuff","iexec_input_files":["https://example.com/file.zip"]}')
+--watch # watch execution status changes
+```
+
+### app request-execution
+
+```bash
+iexec app request-execution [options] # request an iExec application execution at limit price
+# OPTIONS
+--dataset # dataset address
+--workerpool # workerpool address
+--app-price # app price per task (default unit nRLC)
+--dataset-price # dataset price per task (default unit nRLC)
+--workerpool-price # workerpool price per task (default unit nRLC)
+--category # id of the task category
+--tag # specify tags (usage: --tag tee,gpu)
+--trust # trust level
+--beneficiary # specify the beneficiary of the request (default user address)
+--callback # specify the callback address of the request
+--args # specify the arguments to pass to the app
+--input-files # specify the URL of input files to be used by the app (usage: --input-files https://example.com/foo.txt,https://example.com/bar.zip)
+--encrypt-result # encrypt the result archive with the beneficiary public key
+--storage-provider <"ipfs"|"dropbox"> # specify the storage to use to store the result archive
+--skip-request-check # skip request validity checks, this may result in task execution fail
+--params # specify the params of the request, this option is reserved to an advanced usage (usage: --params '{"iexec_args":"dostuff","iexec_input_files":["https://example.com/file.zip"]}')
+```
+
+## dataset
+
+```bash
+# OPTIONS
+# --chain
+# --user
+iexec dataset init # init the dataset template
+iexec dataset init --tee # init the dataset template and create the folders for dataset encryption
+iexec dataset encrypt # for each dataset file in ./datasets/original/ generate a 256 bits key and encrypt the dataset using AES-256-CBC and compute the encrypted file's sha256 checksum
+iexec dataset deploy # deploy the dataset on the blockchain
+iexec dataset push-secret [datasetAddress] # push the key for the encrypted dataset
+iexec dataset check-secret [datasetAddress] # check if a secret exists for the dataset
+iexec dataset publish [datasetAddress] # publish an datasetorder to make your dataset publicly available on the marketplace (use options to manage access)
+iexec dataset unpublish [datasetAddress] # unpublish the last published datasetorder for specified dataset
+iexec dataset unpublish [datasetAddress] --all # unpublish all the published datasetorders for specified dataset
+iexec dataset show [address|index] # show dataset details
+iexec dataset count # count your total number of dataset
+iexec dataset count --user # count user total number of dataset
+```
+
+## workerpool
+
+```bash
+# OPTIONS
+# --chain
+# --user
+iexec workerpool init # init the workerpool template
+iexec workerpool deploy # deploy the workerpool on the blockchain
+iexec workerpool publish [workerpoolAddress] --price [unit] # publish an workerpoolorder to make your workerpool computing power publicly available on the marketplace
+iexec workerpool unpublish [workerpoolAddress] # unpublish the last published workerpoolorder for specified workerpool
+iexec workerpool unpublish [workerpoolAddress] --all # unpublish all the published workerpoolorders for specified workerpool
+iexec workerpool show [address|index] # show workerpool details
+iexec workerpool count # count your total number of workerpool
+iexec workerpool count --user # count user total number of workerpool
+```
+
+## order
+
+```bash
+# OPTIONS
+# --chain
+# --force
+iexec order init # init all kind of orders
+iexec order init --app --dataset --workerpool --request # specify the kind of order to init
+iexec order sign # sign all initialized orders
+iexec order sign --app --dataset --workerpool --request # sign the specific initialized orders
+iexec order publish --app --dataset --workerpool --request # publish the specific signed orders on iExec Marketplace
+iexec order show --app [orderHash] --dataset [orderHash] --workerpool [orderHash] --request [orderHash] # show the specified published order from iExec Marketplace
+iexec order show --request [orderHash] --deals # show the deals produced by an order
+iexec order fill # fill a set of local signed orders (app + dataset + workerpool + request) and return a dealid
+iexec order fill --app --dataset --workerpool --request # fill a set of signed orders from iExec Marketplace and return a dealid
+iexec order fill --params # fill a set of signed orders generate a request order with specified params on the fly (existing apporder is ignored)
+iexec order cancel --app --dataset --workerpool --request # cancel a specific signed order
+iexec order unpublish --app [orderHash] --dataset [orderHash] --workerpool [orderHash] --request [orderHash] # unpublish a specific published order from iExec Marketplace (unpublished orders are still valid in the PoCo, to invalidate them use cancel)
+```
+
+## orderbook
+
+```bash
+# OPTIONS
+# --chain
+iexec orderbook requester --category # show the best requestorders published on the Marketplace for the specified category
+iexec orderbook requester [address] --category # filters the result on requester
+iexec orderbook workerpool --category # show the best workerpools published on the Marketplace for the specified category
+iexec orderbook workerpool [address] --category # filters the result on workerpool
+iexec orderbook workerpool --category --require-tag <...tags> # show the best workerpools published on the Marketplace matchin the specified tags
+iexec orderbook app # show the best apporders published on the Marketplace for the specified app
+iexec orderbook app --dataset --requester --workerpool # filter on specific dataset, requester, workerpool
+iexec orderbook dataset # show the best datasetorders published on the Marketplace for the specified dataset
+iexec orderbook dataset --app --requester --workerpool # filter on specific app, requester, workerpool
+```
+
+## deal
+
+```bash
+# OPTIONS
+# ---chain
+iexec deal show # show a deal identified by dealid
+iexec deal claim # claim all failed tasks from a deal
+```
+
+## task
+
+```bash
+# OPTIONS
+# --chain
+iexec task show # show task identified by taskid
+iexec task show --watch # wait for task to be COMPLETED or CLAIMED
+iexec task show --download [fileName] # download the result of a COMPLETED task
+iexec task show --download [fileName] --decrypt # download and decrypt the result of a COMPLETED task
+iexec task claim # claim a task requested by the user if the final deadline is reached and the task is still not COMPLETED
+```
+
+## result
+
+```bash
+# OPTIONS
+# --chain
+iexec result generate-encryption-keypair # generate a beneficiary keypair to encrypt and decrypt the results
+iexec result push-encryption-key # push the encryption key for the beneficiary
+iexec result push-encryption-key --force-update # push the encryption key for the beneficiary, update if exists
+iexec result push-encryption-key --secret-file [secretPath] # specify a file path for reading the secret
+iexec result decrypt [encryptedResultsPath] # decrypt encrypted results with beneficary key
+iexec result check-encryption-key [userAddress] # check if a encryption key exists for the user
+```
+
+## storage
+
+```bash
+# OPTIONS
+# --chain
+iexec storage init # initialize the IPFS based default remote storage
+iexec storage init [provider] # initialize the specified remote storage (supported "default"|"dropbox")
+iexec storage check [provider] # check if the specified remote storage is initialized
+iexec storage check [provider] --user # check if the remote storage of specified user is initialized
+```
+
+## ens
+
+```bash
+# OPTIONS
+# --chain
+iexec ens resolve # resolve an ENS name to an address
+iexec ens lookup # lookup for the ENS name of an address
+iexec ens get-owner # find the the owner address of an ENS name
+iexec ens register --domain --for # register an ENS if needed and setup both ENS resolution and reverse resolution
+```
+
+## category
+
+```bash
+# OPTIONS
+# --chain
+iexec category init # init the category template
+iexec category create # create new category
+iexec category show # show category details by index
+iexec category count # count total number of category
+```
+
+## registry
+
+```bash
+iexec registry validate <'app'|'dataset'|'workerpool'> # validate an object before submitting it to the iExec registry and be listed in the iExec stores
+```
+
+---
+
+# Files
+
+- [iexec.json](#iexecjson)
+- [chain.json](#chainjson)
+- [orders.json](#ordersjson)
+- [deployed.json](#deployedjson)
+- [.secrets/](#secrets)
+ - [.secrets/datasets/](#secretsdatasets)
+ - [.secrets/beneficary/](#secretsbeneficiary)
+- [datasets/](#datasets)
+ - [datasets/original/](#datasetsoriginal)
+ - [datasets/encrypted/](#datasetsencrypted)
+
+## iexec.json
+
+The `iexec.json` file, located in every iExec project, describes the parameters used when creating a [app|dataset|category|workerpool], or when signing an order.
+
+```json
+{
+ "app": {
+ "owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
+ "name": "VanityGen",
+ "type": "DOCKER",
+ "multiaddr": "registry.hub.docker.com/iexechub/vanitygen:1.0.0",
+ "checksum": "0x762a451c05e0d8097b35d6376e748798b5dc6a13290439cf67d5202f7c6f695f"
+ },
+ "dataset": {
+ "owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
+ "name": "my-dataset",
+ "multiaddr": "/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ",
+ "checksum": "0x0000000000000000000000000000000000000000000000000000000000000000"
+ },
+ "workerpool": {
+ "owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
+ "description": "my workerpool"
+ },
+ "category": {
+ "name": "CAT1",
+ "description": "my category N°1",
+ "workClockTimeRef": 100
+ },
+ "order": {
+ "apporder": {
+ "app": "0x0000000000000000000000000000000000000000",
+ "appprice": "0",
+ "volume": "1",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "datasetrestrict": "0x0000000000000000000000000000000000000000",
+ "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
+ "requesterrestrict": "0x0000000000000000000000000000000000000000"
+ },
+ "datasetorder": {
+ "dataset": "0x0000000000000000000000000000000000000000",
+ "datasetprice": "0",
+ "volume": "1",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "apprestrict": "0x0000000000000000000000000000000000000000",
+ "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
+ "requesterrestrict": "0x0000000000000000000000000000000000000000"
+ },
+ "workerpoolorder": {
+ "workerpool": "0x0000000000000000000000000000000000000000",
+ "workerpoolprice": "0",
+ "volume": "1",
+ "category": "1",
+ "trust": "100",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "apprestrict": "0x0000000000000000000000000000000000000000",
+ "datasetrestrict": "0x0000000000000000000000000000000000000000",
+ "requesterrestrict": "0x0000000000000000000000000000000000000000"
+ },
+ "requestorder": {
+ "app": "0x0000000000000000000000000000000000000000",
+ "appmaxprice": "0",
+ "dataset": "0x0000000000000000000000000000000000000000",
+ "datasetmaxprice": "0",
+ "workerpool": "0x0000000000000000000000000000000000000000",
+ "workerpoolmaxprice": "0",
+ "volume": "1",
+ "category": "1",
+ "trust": "100",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "beneficiary": "0x0000000000000000000000000000000000000000",
+ "callback": "0x0000000000000000000000000000000000000000",
+ "params": "{ cmdline: '--help' }"
+ }
+ }
+}
+```
+
+## chain.json
+
+The `chain.json` file, located in every iExec project, describes the parameters used when communicating with ethereum nodes and iExec Secret Management Services. They are ordered by chain name, accessible by using the `--chain ` option for each command of the SDK.
+
+- `default` set the default chain used by the SDK cli.
+- `chains` set the available chains
+ - optional key `host` set the url of the ethereum node used by the SDK cli on each chain (overwrite default value).
+ - optional key `hub` set the address of the hub used by the SDK cli on each chain (overwrite default value).
+ - optional key `sms` set the url of the Secret Management Service used by the SDK cli on each chain (overwrite default value).
+ - optional key `resultProxy` set the url of the Result Proxy used by the SDK cli on each chain (overwrite default value).
+ - optional key `ipfsGateway` set the url of the IPFS gateway used by the SDK cli on each chain (overwrite default value).
+ - optional key `bridge` set the bridge used by the SDK cli when working with bridged networks (sidechain). `bridge.contract` set the address of the RLC bridge on the chain, `bridge.bridgedChainName` set the reference to the bridged network.
+ - optional key `enterprise` set the enterprise swap contract used by the SDK cli when working with enterprise enabled networks. `bridge.enterpriseSwapChainName` set the reference to the enterprise bound network.
+ - optional key `native` specify whether or not the chain native token is RLC (overwrite default value: chain value or `false`).
+ - optional key `useGas` specify whether or not the chain requires to spend gas to send a transaction (overwrite default value: chain value or `true`).
+- optional key `providers` set the backends for public chains
+ - optional key `alchemy` set Alchemy API Token
+ - optional key `etherscan` set Etherscan API Token
+ - optional key `infura` set INFURA Project ID or ProjectID and Project Secret
+ - optional key `quorum` set minimum number of backends that must agree before forwarding blockchain responses
+
+```json
+{
+ "default": "viviani",
+ "chains": {
+ "dev": {
+ "host": "http://localhost:8545",
+ "id": "65535",
+ "sms": "http://localhost:5000",
+ "resultProxy": "http://localhost:8089",
+ "ipfsGateway": "http://localhost:8080",
+ "flavour": "standard",
+ "hub": "0xC129e7917b7c7DeDfAa5Fff1FB18d5D7050fE8ca",
+ "bridge": {
+ "contract": "0x1e32aFA55854B6c015D284E3ccA9aA5a463A1418",
+ "bridgedChainName": "dev-sidechain"
+ },
+ "enterprise": {
+ "enterpriseSwapChainName": "dev-enterprise"
+ }
+ },
+ "dev-sidechain": {
+ "host": "http://localhost:18545",
+ "id": "123456",
+ "sms": "http://localhost:15000",
+ "resultProxy": "http://localhost:18089",
+ "ipfsGateway": "http://localhost:18080",
+ "native": true,
+ "useGas": false,
+ "flavour": "standard",
+ "hub": "0xC129e7917b7c7DeDfAa5Fff1FB18d5D7050fE8ca",
+ "bridge": {
+ "contract": "0x1e32aFA55854B6c015D284E3ccA9aA5a463A1418",
+ "bridgedChainName": "development"
+ }
+ },
+ "dev-enterprise": {
+ "host": "http://localhost:8545",
+ "id": "65535",
+ "sms": "http://localhost:5000",
+ "resultProxy": "http://localhost:8089",
+ "ipfsGateway": "http://localhost:8080",
+ "flavour": "enterprise",
+ "hub": "0xb80C02d24791fA92fA8983f15390274698A75D23",
+ "enterprise": {
+ "enterpriseSwapChainName": "dev"
+ }
+ },
+ "goerli": {},
+ "viviani": {},
+ "mainnet": {},
+ "bellecour": {},
+ "enterprise": {}
+ },
+ "providers": {
+ "alchemy": "ALCHEMY_API_KEY",
+ "etherscan": "ETHERSCAN_API_KEY",
+ "infura": {
+ "projectId": "INFURA_PROJECT_ID",
+ "projectSecret": "INFURA_PROJECT_SECRET"
+ },
+ "quorum": 1
+ }
+}
+```
+
+## deployed.json
+
+The `deployed.json` file, located in iExec project, locally stores your latest deployed resources address. These address are used when you run a command without specifying a resource address (exemple: `iexec app show` will show the app in `deployed.json`).
+
+```json
+{
+ "app": {
+ "42": "0xa760FEfAd0a38D494890501120cB79f5EEAFeE28"
+ },
+ "workerpool": {
+ "42": "0xFb346A453C4D34AbA0038c274D1bd3C98099962c"
+ },
+ "dataset": {
+ "42": "0xB9c7647ECd48d795A9031d6fe8292C13E73372F7"
+ }
+}
+```
+
+## orders.json
+
+The `orders.json` file, located in iExec project, locally stores your latest signed orders. This file is used when you publish an order on the Marketplace and when you fill orders without specified orders from the Marketplace.
+
+```json
+{
+ "42": {
+ "apporder": {
+ "app": "0x0000000000000000000000000000000000000000",
+ "appprice": "0",
+ "volume": "1",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "datasetrestrict": "0x0000000000000000000000000000000000000000",
+ "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
+ "requesterrestrict": "0x0000000000000000000000000000000000000000",
+ "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "sign": "0x"
+ },
+ "datasetorder": {
+ "dataset": "0x0000000000000000000000000000000000000000",
+ "datasetprice": "0",
+ "volume": "1",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "apprestrict": "0x0000000000000000000000000000000000000000",
+ "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
+ "requesterrestrict": "0x0000000000000000000000000000000000000000",
+ "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "sign": "0x"
+ },
+ "workerpoolorder": {
+ "workerpool": "0x0000000000000000000000000000000000000000",
+ "workerpoolprice": "0",
+ "volume": "1",
+ "category": "1",
+ "trust": "100",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "apprestrict": "0x0000000000000000000000000000000000000000",
+ "datasetrestrict": "0x0000000000000000000000000000000000000000",
+ "requesterrestrict": "0x0000000000000000000000000000000000000000",
+ "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "sign": "0x"
+ },
+ "requestorder": {
+ "app": "0x0000000000000000000000000000000000000000",
+ "appmaxprice": "0",
+ "dataset": "0x0000000000000000000000000000000000000000",
+ "datasetmaxprice": "0",
+ "workerpool": "0x0000000000000000000000000000000000000000",
+ "workerpoolmaxprice": "0",
+ "volume": "1",
+ "category": "1",
+ "trust": "100",
+ "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "beneficiary": "0x0000000000000000000000000000000000000000",
+ "callback": "0x0000000000000000000000000000000000000000",
+ "params": "--help",
+ "requester": "0x0000000000000000000000000000000000000000",
+ "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
+ "sign": "0x"
+ }
+ }
+}
+```
+
+## ./secrets/
+
+This folder is created when running `iexec result generate-encryption-keypair` or `ìexec dataset init --tee` and is intended to store credentials generated by the iexec SDK CLI.
+
+### ./secrets/beneficiary/
+
+This folder stores the keypair to use for result encryption and decryption.
+A keypair is generated when running `iexec result generate-encryption-keypair`
+Public keys name follow the pattern _userAddress_\_key.pub , this key is shared with the workers when running `ìexec result push-encryption-key`
+Private keys name follow the pattern _userAddress_\_key this should never be shared with third party, the private key is used by the SDK CLI to decrypt a result when running `ìexec result decrypt`.
+
+### ./secrets/datasets/
+
+This folder stores the AES keys used for dataset encryption.
+A key is generated for each dataset file when running `iexec dataset encrypt`.
+The key file is named after the dataset file name, last key generated is also stored in `./secrets/datasets/dataset.key` to be used as default secret to share with workers when running `iexec dataset push-secret`.
+
+## ./datasets/
+
+This folder is created when running `ìexec dataset init --tee` and is intended to store datasets files.
+
+### ./datasets/original/
+
+Paste your original dataset files in this folder and run `iexec dataset encrypt` to encrypt them.
+
+### ./datasets/encrypted/
+
+This folder stores the encrypted datasets files.
+An encrypted dataset file is created for each dataset file when running `iexec dataset encrypt`.
+The encrypted dataset file is named after the dataset file name.
+The encrypted dataset files must be upload on a public file system and referenced in multriaddr when running `iexec dataset deploy`.
+
+---
+
+# Interoperability
+
+If your program is not written in javascript, your last option to use the SDK would be to spawn it as a separate process (sometimes called FORK operation). After each SDK run you should check the exit code returned by the SDK to know if the operation was successful or not `echo $?`:
+
+- 0 = successful
+- 1 = error
+
+Finally, you could choose to parse the SDK stdout/stderr to access more information. Use the global option --raw to get json formatted output.
+
+ex:
+
+- `iexec wallet show --raw &> out.json`
+- `iexec wallet show --raw | jq .`
+
+Warning:
+
+- The stdout/stderr is subject to changes (this is what makes this solution brittle)
+- The node and docker version have some slight differences in their stdout/stderr
+
+[< Back home](./README.md)
diff --git a/README.md b/README.md
index ebaa16c1..08206a74 100644
--- a/README.md
+++ b/README.md
@@ -5,3296 +5,50 @@
[](https://drone.iex.ec/iExecBlockchainComputing/iexec-sdk)
[](https://www.npmjs.com/package/iexec) [](https://www.npmjs.com/package/iexec) [](LICENSE) [](https://twitter.com/iex_ec)
-The iExec SDK is a CLI and a JS library that allows easy interactions with iExec decentralized Marketplace in order to run off-chain computations.
+The iExec SDK is a CLI and a JS library that allows easy interactions with iExec decentralized marketplace in order to run off-chain computations.
-## Resources
-
-- [CLI tutorials](#cli-tutorials)
-- [CLI documentation](#iexec-sdk-cli-api)
-- [JS lib documentation](#iexec-sdk-library-api)
-- [CHANGELOG](./CHANGELOG.md)
-- iExec main documentation:
-- The iExec Dapp Store:
-- The iExec Marketplace:
-- The iExec Explorer:
-- The iExec Workerpool registry:
-- The RLC faucet:
-- [iExec dapps registry](https://github.com/iExecBlockchainComputing/iexec-dapps-registry), to apply for Dapp Store listing
-
-## Install
-
-All three major OS are supported (linux, OSX, windows).
-
-### Using Nodejs
-
-Requirements: [](https://nodejs.org/en/) and [Git](https://git-scm.com/).
-
-```bash
-npm -g install iexec # install the cli
-iexec --version
-iexec --help
-```
-
-### Using Docker
-
-Requirements: [Docker](https://docs.docker.com/install/).
-
-```bash
-# For Linux users
-echo 'alias iexec='"'"'docker run -e DEBUG=$DEBUG --interactive --tty --rm -v /tmp:/tmp -v $(pwd):/iexec-project -v /home/$(whoami)/.ethereum/keystore:/home/node/.ethereum/keystore -w /iexec-project iexechub/iexec-sdk:latest'"'"'' >> ~/.bash_aliases && source ~/.bashrc
-# For Mac OSX users
-echo 'alias iexec='"'"'docker run -e DEBUG=$DEBUG --interactive --tty --rm -v /tmp:/tmp -v $(pwd):/iexec-project -v /Users/$(whoami)/Library/Ethereum/keystore:/home/node/.ethereum/keystore -w /iexec-project iexechub/iexec-sdk:latest'"'"'' >> ~/.bash_profile && source ~/.bash_profile
-```
-
-Now run `iexec --version` to check all is working.
-
-## Upgrade
-
-- **Nodejs**: run `npm -g install iexec`
-- **Docker**: run `docker pull iexechub/iexec-sdk`
-
-# Tutorials
-
-## CLI Tutorials
-
-- [Init project](#Init-project)
-- [SDK CLI for Dapp developpers](#SDK-CLI-for-Dapp-developpers)
-- [SDK CLI for Dataset providers](#SDK-CLI-for-Dataset-providers)
-- [SDK CLI for Workerpools](#SDK-CLI-for-Workerpools)
-- [SDK CLI for Requesters](#SDK-CLI-for-Requesters)
-- [SDK CLI for workers](#SDK-CLI-for-workers)
-
-### Init project
-
-required steps before following any other workflow.
-
-```bash
-iexec init # create all required files
-iexec wallet get-RLC # ask iExec faucet for RLC
-iexec wallet show # show your wallet
-iexec storage init # initialize your remote storage
-```
-
-> _NB:_ iExec SDK CLI access the public blockchains (mainnet & goerli) through [ethers](https://github.com/ethers-io/ethers.js/) to connect different backends ([Alchemy](https://alchemyapi.io/), [Etherscan](https://etherscan.io/), [INFURA](https://infura.io/)).
->
-> Default API keys for backend services are provided for convenience.
-> As these keys are shared accross all users and are subject to rate limits, **you must use your own API keys** or better **your own node**.
->
-> Get API keys for backend services:
->
-> - [INFURA](https://infura.io/register) ([more details on Infura's blog](https://blog.infura.io/getting-started-with-infura-28e41844cc89/))
-> - [Etherscan](https://etherscan.io/apis)
-> - [Alchemy](https://alchemyapi.io/signup)
->
-> Once you created your access, you can add your API keys in the `chains.json` configuration file:
->
-> ```json
-> {
-> "default": ...,
-> "chains": { ... },
-> "providers": {
-> "infura": {
-> "projectId": "INFURA_PROJECT_ID",
-> "projectSecret": "INFURA_PROJECT_SECRET"
-> },
-> "etherscan": "ETHERSCAN_API_KEY",
-> "alchemy": "ALCHEMY_API_KEY"
-> }
-> }
-> ```
->
-> If you run your own node, you can add an `host` key in the `chains.json` configuration file to target your node:
->
-> ```json
-> {
-> "default": ...,
-> "chains": {
-> ...
-> "mainnet": {
-> "id": "1",
-> "host": "http://localhost:8545"
-> },
-> "goerli": {
-> "id": "5",
-> "host": "http://localhost:58545"
-> }
-> }
-> }
-> ```
->
-> Check your current host:
-> `iexec info`
-
-### SDK CLI for Dapp developpers
-
-First go through [Init project](#Init-project)
-
-#### Deploy an app
-
-```bash
-iexec app count # check if you have already deployed apps
-iexec app init # reset app fields in iexec.json
-iexec app deploy # deploy app on Ethereum and get an address
-iexec app show # show details of deployed app
-```
-
-#### Run an app
-
-```bash
-iexec app run [address] # run an application on iExec at market price
-```
-
-#### Sell your app on the Marketplace
-
-```bash
-iexec orderbook app # check if you have valid sell orders for your app on the Marketplace
-iexec app publish [address] # publish an apporder on the Marketplace and get an orderHash
-iexec order show --app [orderHash] # show your order on the Marketplace
-iexec order cancel --app # cancel your order
-```
-
-### SDK CLI for Dataset providers
-
-First go through [Init project](#Init-project)
-
-#### Encrypt your dataset
-
-```bash
-cp 'myAwsomeDataset.file' ./datasets/original # copy your dataset file or folder into the dataset/original/ folder
-iexec dataset encrypt # generate a secret key for each file or folder in dataset/original/ and encrypt it, also output the encrypted file checksum to use for deployment.
-cat ./.secrets/dataset/myAwsomeDataset.file.secret # this is the secret key for decrypting the dataset
-cat ./datasets/encrypted/myAwsomeDataset.file.enc # this is the encrypted dataset, you must share this file at a public url
-```
-
-#### Deploy your dataset
-
-```bash
-iexec dataset count # check if you have already deployed datasets
-iexec dataset init # reset dataset fields in iexec.json
-iexec dataset deploy # deploy dataset on Ethereum
-iexec dataset show # show details of deployed dataset
-```
-
-### Securely share the dataset secret key
-
-**Disclaimer:** The secrets pushed in the Secreet Management Service will be shared with the worker to process the dataset in the therms your specify in the dataset order. Make sure to always double check your selling policy in the dataset order before signing it.
-
-```bash
-iexec dataset push-secret # Push the secret in the Secret Management Service (sms)
-```
-
-#### Sell your dataset on the Marketplace
-
-```bash
-iexec orderbook dataset # check if you have valid sell orders for your dataset on the Marketplace
-iexec dataset publish [address] --tag tee --app-restrict # publish a datasetorder (restricted to specific app running in Trusted Execution Environment) on the Marketplace and get an orderHash
-iexec order show --dataset [orderHash] # show your order on the Marketplace
-iexec order cancel --dataset # cancel your order
-```
-
-### SDK CLI for Workerpools
-
-First go through [Init project](#Init-project)
-
-#### Deploy a workerpool
-
-```bash
-iexec workerpool count # check if you have already deployed workerpools
-iexec workerpool init # reset workerpool fields in iexec.json
-iexec workerpool deploy # deploy workerpool on Ethereum
-iexec workerpool show # show details of deployed workerpool
-```
-
-#### Sell your computing power at limit price on the Marketplace
-
-```bash
-iexec orderbook workerpool [address] --category # check if you have valid sell orders for your workerpool on the Marketplace
-iexec workerpool publish # publish a workerpoolorder on the Marketplace and get an orderHash
-iexec order cancel --workerpool # cancel your order
-```
-
-#### Sell your computing power at market price on the Marketplace
-
-```bash
-iexec orderbook requester --category # find a requestorder ask you want to fill in your category
-iexec orderbook app # find a compatible apporder
-iexec orderbook dataset # find a compatible datasetorder
-iexec order init --workerpool # reset workerpoolorder fields in iexec.json
-iexec order sign --workerpool # sign your workerpoolorder
-iexec order fill --request --app --dataset # send the orders and get a dealid
-iexec deal show # show the detail of the deal you concludes
-```
-
-### SDK CLI for Requesters
-
-First go through [Init project](#Init-project)
-
-#### Top up your iExec account to buy compution
-
-```bash
-iexec account show # show your iExec account
-iexec account deposit 200 # deposit RLC from your wallet to your account
-iexec account show # make sure you have enough staked RCL to buy computation
-```
-
-#### Buy computation at market price on the Marketplace
-
-```bash
-iexec app run [address] [--dataset [address] --args --category ] # run an iExec application at market price
-```
-
-see [app run available options](#app-run)
-
-#### Or Buy computation at limit price on the Marketplace
-
-```bash
-iexec app request-execution [address] [--dataset [address] --args --category ] # publish a requestorder on the Marketplace and get an orderHash
-iexec order show --request --deals # show your order on the Marketplace and check the deals
-```
-
-#### Watch your Deals, your Tasks and download the results
-
-```bash
-iexec deal show # show your deal details, get the taskids
-iexec task show # show the status of your task
-iexec task show --watch # wait until the task is COMPLETED or FAILED
-iexec task show --download [fileName] # download the result of your COMPLETED task
-```
-
-#### Use results encryption
-
-```bash
-iexec result generate-encryption-keypair # generate private/public RSA keypair for result encryption
-iexec result push-encryption-key # share the public RSA key with the secret management service, all your results will be encrypted with this key
-# Go through the normal buy process and download the result of the computation #
-iexec result decrypt [encryptedResultsFilePath] # decrypt the result with the private RSA key
-```
-
-### SDK CLI for workers
-
-First go through [Init project](#Init-project)
-
-#### Top up your iExec account to stake
-
-```bash
-iexec account deposit 200 # deposit RLC from your wallet to your account
-iexec account show # make sure you have enough stake to join a workerpool
-```
-
-#### Withdraw your working reward
-
-```bash
-iexec account show # view your available stake
-iexec account withdraw 1000 # withdraw RLC from your account to your wallet
-```
-
-# iExec SDK CLI API
-
-- [Help & Info](#help--info)
-- [Global options](#global-options)
- - [Wallet options](#wallet-options)
- - [Transactions options](#Transactions-options)
-- CLI commands
- - [init](#init)
- - [wallet](#wallet)
- - [account](#account)
- - [app](#app)
- - [dataset](#dataset)
- - [workerpool](#workerpool)
- - [order](#order)
- - [orderbook](#orderbook)
- - [deal](#deal)
- - [task](#task)
- - [storage](#storage)
- - [result](#result)
- - [ens](#ens)
- - [category](#category)
- - [registry](#registry)
-- [CLI files and folders](#cli-files-and-folders)
-
-## Help & Info
-
-```bash
-iexec --version
-iexec --help
-iexec app --help
-iexec orderbook --help
-iexec info --chain viviani
-```
-
-## Global options
-
-```bash
---quiet # disable update notification
---raw # display the command result as a json (disable update notification)
-```
-
-### Wallet options
-
-```bash
---keystoredir <'global'|'local'|customPath> # specify the location of the keystoredir
---wallet-address # specify which wallet to use in the keystore
---wallet-file # specify which wallet to use in the keystore
---password # specify the password for unlocking the wallet (not recommended)
-```
-
-### Transactions options
-
-```bash
---gas-price [unit] # use the specified value (in wei or specified unit) for next transactions gas price (default use eth_gasPrice current value)
---confirms # set custom block count to wait for transactions confirmation (default 1 block)
-```
-
-## init
-
-```bash
-iexec init # create all files necessary to get started
-iexec init --skip-wallet # skip the wallet creation step
-```
-
-## wallet
-
-```bash
-# OPTIONS
-# --chain
-# --to
-# --force
-# --password
-iexec wallet create # create a new encrypted wallet
-iexec wallet create --unencrypted # create unencrypted wallet.json (not recommended)
-iexec wallet import # create an encrypted wallet from a privateKey
-iexec wallet get-ETH # ask ETH from faucets
-iexec wallet get-RLC # ask RLC from faucets
-iexec wallet show [address] # optional address to show other people's wallet
-iexec wallet show --show-private-key # allow displaying wallet private key
-iexec wallet send-ether [unit] --to # send ether amount (in ether or specified unit) to the specified eth address
-iexec wallet send-RLC [unit] --to # send RLC amount (in RLC or specified unit) to the specified eth address
-iexec wallet sweep --to # drain all ether and RLC, sending them to the specified eth address
-iexec wallet bridge-to-sidechain [unit] # send RLC amount (in nRLC or specified unit) from a mainchain to the bridged sidechain.
-iexec wallet bridge-to-mainchain [unit] # send RLC amount (in nRLC or specified unit) from a sidechain to the bridged mainchain.
-iexec wallet swap-RLC-for-eRLC [unit] # swap RLC for the same amount of eRLC (default unit nRLC) - the wallet must be authorized to interact with eRLC.
-iexec wallet swap-eRLC-for-RLC [unit] # swap eRLC for the same amount of RLC (default unit neRLC) - the wallet must be authorized to interact with eRLC.
-```
-
-The wallet files are stored in the Ethereum keystore.
-The keystore location depends on your OS:
-
-- Linux : ~/.ethereum/keystore
-- Mac: ~/Library/Ethereum/keystore
-- Windows: ~/AppData/Roaming/Ethereum/keystore
-
-## account
-
-```bash
-# OPTIONS
-# --chain
-# --force
-iexec account show [address] # optional address to show other people's account
-iexec account deposit [unit] # deposit the specified amount of RLC (in nRLC or specified unit) from your wallet to your account
-iexec account withdraw [unit] # withdraw the specified amount of RLC (in nRLC or specified unit) from your account to your wallet
-```
-
-## app
-
-```bash
-# OPTIONS
-# --chain
-# --user
-iexec app init # init the app template
-iexec app init --tee # init the TEE app template
-iexec app deploy # deploy the app on the blockchain
-iexec app publish [address] # publish an apporder to make your app publicly available on the marketplace (use options to manage access)
-iexec app unpublish [address] # unpublish the last published apporder for specified app
-iexec app unpublish [address] --all # unpublish all the published apporders for specified app
-iexec app show [address|index] # show app details
-iexec app count # count your total number of app
-iexec app count --user # count user total number of app
-```
-
-### app run
-
-```bash
-iexec app run [appAddress] [options] # run an iExec application at market price (default run last deployed app)
-# OPTIONS
---dataset # dataset address, use "deployed" to use last deployed from "deployed.json"
---workerpool # workerpool address, use "deployed" to use last deployed from "deployed.json"
---category # id of the task category
---tag # specify tags (usage: --tag tee,gpu)
---trust # trust level
---beneficiary # specify the beneficiary of the request (default user address)
---callback # specify the callback address of the request
---args # specify the arguments to pass to the app
---input-files # specify the URL of input files to be used by the app (usage: --input-files https://example.com/foo.txt,https://example.com/bar.zip)
---encrypt-result # encrypt the result archive with the beneficiary public key
---storage-provider <"ipfs"|"dropbox"> # specify the storage to use to store the result archive
---skip-request-check # skip request validity checks, this may result in task execution fail
---params # specify the params of the request, this option is reserved to an advanced usage (usage: --params '{"iexec_args":"dostuff","iexec_input_files":["https://example.com/file.zip"]}')
---watch # watch execution status changes
-```
-
-### app request-execution
-
-```bash
-iexec app request-execution [options] # request an iExec application execution at limit price
-# OPTIONS
---dataset # dataset address
---workerpool # workerpool address
---app-price # app price per task (default unit nRLC)
---dataset-price # dataset price per task (default unit nRLC)
---workerpool-price # workerpool price per task (default unit nRLC)
---category # id of the task category
---tag # specify tags (usage: --tag tee,gpu)
---trust # trust level
---beneficiary # specify the beneficiary of the request (default user address)
---callback # specify the callback address of the request
---args # specify the arguments to pass to the app
---input-files # specify the URL of input files to be used by the app (usage: --input-files https://example.com/foo.txt,https://example.com/bar.zip)
---encrypt-result # encrypt the result archive with the beneficiary public key
---storage-provider <"ipfs"|"dropbox"> # specify the storage to use to store the result archive
---skip-request-check # skip request validity checks, this may result in task execution fail
---params # specify the params of the request, this option is reserved to an advanced usage (usage: --params '{"iexec_args":"dostuff","iexec_input_files":["https://example.com/file.zip"]}')
-```
-
-## dataset
-
-```bash
-# OPTIONS
-# --chain
-# --user
-iexec dataset init # init the dataset template
-iexec dataset init --tee # init the dataset template and create the folders for dataset encryption
-iexec dataset encrypt # for each dataset file in ./datasets/original/ generate a 256 bits key and encrypt the dataset using AES-256-CBC and compute the encrypted file's sha256 checksum
-iexec dataset deploy # deploy the dataset on the blockchain
-iexec dataset push-secret [datasetAddress] # push the key for the encrypted dataset
-iexec dataset check-secret [datasetAddress] # check if a secret exists for the dataset
-iexec dataset publish [datasetAddress] # publish an datasetorder to make your dataset publicly available on the marketplace (use options to manage access)
-iexec dataset unpublish [datasetAddress] # unpublish the last published datasetorder for specified dataset
-iexec dataset unpublish [datasetAddress] --all # unpublish all the published datasetorders for specified dataset
-iexec dataset show [address|index] # show dataset details
-iexec dataset count # count your total number of dataset
-iexec dataset count --user # count user total number of dataset
-```
-
-## workerpool
-
-```bash
-# OPTIONS
-# --chain
-# --user
-iexec workerpool init # init the workerpool template
-iexec workerpool deploy # deploy the workerpool on the blockchain
-iexec workerpool publish [workerpoolAddress] --price [unit] # publish an workerpoolorder to make your workerpool computing power publicly available on the marketplace
-iexec workerpool unpublish [workerpoolAddress] # unpublish the last published workerpoolorder for specified workerpool
-iexec workerpool unpublish [workerpoolAddress] --all # unpublish all the published workerpoolorders for specified workerpool
-iexec workerpool show [address|index] # show workerpool details
-iexec workerpool count # count your total number of workerpool
-iexec workerpool count --user # count user total number of workerpool
-```
-
-## order
-
-```bash
-# OPTIONS
-# --chain
-# --force
-iexec order init # init all kind of orders
-iexec order init --app --dataset --workerpool --request # specify the kind of order to init
-iexec order sign # sign all initialized orders
-iexec order sign --app --dataset --workerpool --request # sign the specific initialized orders
-iexec order publish --app --dataset --workerpool --request # publish the specific signed orders on iExec Marketplace
-iexec order show --app [orderHash] --dataset [orderHash] --workerpool [orderHash] --request [orderHash] # show the specified published order from iExec Marketplace
-iexec order show --request [orderHash] --deals # show the deals produced by an order
-iexec order fill # fill a set of local signed orders (app + dataset + workerpool + request) and return a dealid
-iexec order fill --app --dataset --workerpool --request # fill a set of signed orders from iExec Marketplace and return a dealid
-iexec order fill --params # fill a set of signed orders generate a request order with specified params on the fly (existing apporder is ignored)
-iexec order cancel --app --dataset --workerpool --request # cancel a specific signed order
-iexec order unpublish --app [orderHash] --dataset [orderHash] --workerpool [orderHash] --request [orderHash] # unpublish a specific published order from iExec Marketplace (unpublished orders are still valid in the PoCo, to invalidate them use cancel)
-```
-
-## orderbook
-
-```bash
-# OPTIONS
-# --chain
-iexec orderbook requester --category # show the best requestorders published on the Marketplace for the specified category
-iexec orderbook requester [address] --category # filters the result on requester
-iexec orderbook workerpool --category # show the best workerpools published on the Marketplace for the specified category
-iexec orderbook workerpool [address] --category # filters the result on workerpool
-iexec orderbook workerpool --category --require-tag <...tags> # show the best workerpools published on the Marketplace matchin the specified tags
-iexec orderbook app # show the best apporders published on the Marketplace for the specified app
-iexec orderbook app --dataset --requester --workerpool # filter on specific dataset, requester, workerpool
-iexec orderbook dataset # show the best datasetorders published on the Marketplace for the specified dataset
-iexec orderbook dataset --app --requester --workerpool # filter on specific app, requester, workerpool
-```
-
-## deal
-
-```bash
-# OPTIONS
-# ---chain
-iexec deal show # show a deal identified by dealid
-iexec deal claim # claim all failed tasks from a deal
-```
-
-## task
-
-```bash
-# OPTIONS
-# --chain
-iexec task show # show task identified by taskid
-iexec task show --watch # wait for task to be COMPLETED or CLAIMED
-iexec task show --download [fileName] # download the result of a COMPLETED task
-iexec task show --download [fileName] --decrypt # download and decrypt the result of a COMPLETED task
-iexec task claim # claim a task requested by the user if the final deadline is reached and the task is still not COMPLETED
-```
-
-## result
-
-```bash
-# OPTIONS
-# --chain
-iexec result generate-encryption-keypair # generate a beneficiary keypair to encrypt and decrypt the results
-iexec result push-encryption-key # push the encryption key for the beneficiary
-iexec result push-encryption-key --force-update # push the encryption key for the beneficiary, update if exists
-iexec result push-encryption-key --secret-file [secretPath] # specify a file path for reading the secret
-iexec result decrypt [encryptedResultsPath] # decrypt encrypted results with beneficary key
-iexec result check-encryption-key [userAddress] # check if a encryption key exists for the user
-```
-
-## storage
-
-```bash
-# OPTIONS
-# --chain
-iexec storage init # initialize the IPFS based default remote storage
-iexec storage init [provider] # initialize the specified remote storage (supported "default"|"dropbox")
-iexec storage check [provider] # check if the specified remote storage is initialized
-iexec storage check [provider] --user # check if the remote storage of specified user is initialized
-```
-
-## ens
-
-```bash
-# OPTIONS
-# --chain
-iexec ens resolve # resolve an ENS name to an address
-iexec ens lookup # lookup for the ENS name of an address
-iexec ens get-owner # find the the owner address of an ENS name
-iexec ens register --domain --for # register an ENS if needed and setup both ENS resolution and reverse resolution
-```
-
-## category
-
-```bash
-# OPTIONS
-# --chain
-iexec category init # init the category template
-iexec category create # create new category
-iexec category show # show category details by index
-iexec category count # count total number of category
-```
-
-## registry
-
-```bash
-iexec registry validate <'app'|'dataset'|'workerpool'> # validate an object before submitting it to the iExec registry and be listed in the iExec stores
-```
-
-## CLI files and folders
-
-- [iexec.json](#iexecjson)
-- [chain.json](#chainjson)
-- [orders.json](#ordersjson)
-- [deployed.json](#deployedjson)
-- [.secrets/](#secrets)
- - [.secrets/datasets/](#secretsdatasets)
- - [.secrets/beneficary/](#secretsbeneficiary)
-- [datasets/](#datasets)
- - [datasets/original/](#datasetsoriginal)
- - [datasets/encrypted/](#datasetsencrypted)
-
-### iexec.json
-
-The `iexec.json` file, located in every iExec project, describes the parameters used when creating a [app|dataset|category|workerpool], or when signing an order.
-
-```json
-{
- "app": {
- "owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
- "name": "VanityGen",
- "type": "DOCKER",
- "multiaddr": "registry.hub.docker.com/iexechub/vanitygen:1.0.0",
- "checksum": "0x762a451c05e0d8097b35d6376e748798b5dc6a13290439cf67d5202f7c6f695f"
- },
- "dataset": {
- "owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
- "name": "my-dataset",
- "multiaddr": "/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ",
- "checksum": "0x0000000000000000000000000000000000000000000000000000000000000000"
- },
- "workerpool": {
- "owner": "0xF048eF3d7E3B33A465E0599E641BB29421f7Df92",
- "description": "my workerpool"
- },
- "category": {
- "name": "CAT1",
- "description": "my category N°1",
- "workClockTimeRef": 100
- },
- "order": {
- "apporder": {
- "app": "0x0000000000000000000000000000000000000000",
- "appprice": "0",
- "volume": "1",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "datasetrestrict": "0x0000000000000000000000000000000000000000",
- "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
- "requesterrestrict": "0x0000000000000000000000000000000000000000"
- },
- "datasetorder": {
- "dataset": "0x0000000000000000000000000000000000000000",
- "datasetprice": "0",
- "volume": "1",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "apprestrict": "0x0000000000000000000000000000000000000000",
- "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
- "requesterrestrict": "0x0000000000000000000000000000000000000000"
- },
- "workerpoolorder": {
- "workerpool": "0x0000000000000000000000000000000000000000",
- "workerpoolprice": "0",
- "volume": "1",
- "category": "1",
- "trust": "100",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "apprestrict": "0x0000000000000000000000000000000000000000",
- "datasetrestrict": "0x0000000000000000000000000000000000000000",
- "requesterrestrict": "0x0000000000000000000000000000000000000000"
- },
- "requestorder": {
- "app": "0x0000000000000000000000000000000000000000",
- "appmaxprice": "0",
- "dataset": "0x0000000000000000000000000000000000000000",
- "datasetmaxprice": "0",
- "workerpool": "0x0000000000000000000000000000000000000000",
- "workerpoolmaxprice": "0",
- "volume": "1",
- "category": "1",
- "trust": "100",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "beneficiary": "0x0000000000000000000000000000000000000000",
- "callback": "0x0000000000000000000000000000000000000000",
- "params": "{ cmdline: '--help' }"
- }
- }
-}
-```
-
-### chain.json
+## [Library](./docs/README.md)
-The `chain.json` file, located in every iExec project, describes the parameters used when communicating with ethereum nodes and iExec Secret Management Services. They are ordered by chain name, accessible by using the `--chain ` option for each command of the SDK.
+The iExec javascript SDK can be imported in your frontend or backend JS project.
-- `default` set the default chain used by the SDK cli.
-- `chains` set the available chains
- - optional key `host` set the url of the ethereum node used by the SDK cli on each chain (overwrite default value).
- - optional key `hub` set the address of the hub used by the SDK cli on each chain (overwrite default value).
- - optional key `sms` set the url of the Secret Management Service used by the SDK cli on each chain (overwrite default value).
- - optional key `resultProxy` set the url of the Result Proxy used by the SDK cli on each chain (overwrite default value).
- - optional key `ipfsGateway` set the url of the IPFS gateway used by the SDK cli on each chain (overwrite default value).
- - optional key `bridge` set the bridge used by the SDK cli when working with bridged networks (sidechain). `bridge.contract` set the address of the RLC bridge on the chain, `bridge.bridgedChainName` set the reference to the bridged network.
- - optional key `enterprise` set the enterprise swap contract used by the SDK cli when working with enterprise enabled networks. `bridge.enterpriseSwapChainName` set the reference to the enterprise bound network.
- - optional key `native` specify whether or not the chain native token is RLC (overwrite default value: chain value or `false`).
- - optional key `useGas` specify whether or not the chain requires to spend gas to send a transaction (overwrite default value: chain value or `true`).
-- optional key `providers` set the backends for public chains
- - optional key `alchemy` set Alchemy API Token
- - optional key `etherscan` set Etherscan API Token
- - optional key `infura` set INFURA Project ID or ProjectID and Project Secret
- - optional key `quorum` set minimum number of backends that must agree before forwarding blockchain responses
+install
-```json
-{
- "default": "viviani",
- "chains": {
- "dev": {
- "host": "http://localhost:8545",
- "id": "65535",
- "sms": "http://localhost:5000",
- "resultProxy": "http://localhost:8089",
- "ipfsGateway": "http://localhost:8080",
- "flavour": "standard",
- "hub": "0xC129e7917b7c7DeDfAa5Fff1FB18d5D7050fE8ca",
- "bridge": {
- "contract": "0x1e32aFA55854B6c015D284E3ccA9aA5a463A1418",
- "bridgedChainName": "dev-sidechain"
- },
- "enterprise": {
- "enterpriseSwapChainName": "dev-enterprise"
- }
- },
- "dev-sidechain": {
- "host": "http://localhost:18545",
- "id": "123456",
- "sms": "http://localhost:15000",
- "resultProxy": "http://localhost:18089",
- "ipfsGateway": "http://localhost:18080",
- "native": true,
- "useGas": false,
- "flavour": "standard",
- "hub": "0xC129e7917b7c7DeDfAa5Fff1FB18d5D7050fE8ca",
- "bridge": {
- "contract": "0x1e32aFA55854B6c015D284E3ccA9aA5a463A1418",
- "bridgedChainName": "development"
- }
- },
- "dev-enterprise": {
- "host": "http://localhost:8545",
- "id": "65535",
- "sms": "http://localhost:5000",
- "resultProxy": "http://localhost:8089",
- "ipfsGateway": "http://localhost:8080",
- "flavour": "enterprise",
- "hub": "0xb80C02d24791fA92fA8983f15390274698A75D23",
- "enterprise": {
- "enterpriseSwapChainName": "dev"
- }
- },
- "goerli": {},
- "viviani": {},
- "mainnet": {},
- "bellecour": {},
- "enterprise": {}
- },
- "providers": {
- "alchemy": "ALCHEMY_API_KEY",
- "etherscan": "ETHERSCAN_API_KEY",
- "infura": {
- "projectId": "INFURA_PROJECT_ID",
- "projectSecret": "INFURA_PROJECT_SECRET"
- },
- "quorum": 1
- }
-}
-```
-
-### deployed.json
-
-The `deployed.json` file, located in iExec project, locally stores your latest deployed resources address. These address are used when you run a command without specifying a resource address (exemple: `iexec app show` will show the app in `deployed.json`).
-
-```json
-{
- "app": {
- "42": "0xa760FEfAd0a38D494890501120cB79f5EEAFeE28"
- },
- "workerpool": {
- "42": "0xFb346A453C4D34AbA0038c274D1bd3C98099962c"
- },
- "dataset": {
- "42": "0xB9c7647ECd48d795A9031d6fe8292C13E73372F7"
- }
-}
-```
-
-### orders.json
-
-The `orders.json` file, located in iExec project, locally stores your latest signed orders. This file is used when you publish an order on the Marketplace and when you fill orders without specified orders from the Marketplace.
-
-```json
-{
- "42": {
- "apporder": {
- "app": "0x0000000000000000000000000000000000000000",
- "appprice": "0",
- "volume": "1",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "datasetrestrict": "0x0000000000000000000000000000000000000000",
- "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
- "requesterrestrict": "0x0000000000000000000000000000000000000000",
- "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "sign": "0x"
- },
- "datasetorder": {
- "dataset": "0x0000000000000000000000000000000000000000",
- "datasetprice": "0",
- "volume": "1",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "apprestrict": "0x0000000000000000000000000000000000000000",
- "workerpoolrestrict": "0x0000000000000000000000000000000000000000",
- "requesterrestrict": "0x0000000000000000000000000000000000000000",
- "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "sign": "0x"
- },
- "workerpoolorder": {
- "workerpool": "0x0000000000000000000000000000000000000000",
- "workerpoolprice": "0",
- "volume": "1",
- "category": "1",
- "trust": "100",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "apprestrict": "0x0000000000000000000000000000000000000000",
- "datasetrestrict": "0x0000000000000000000000000000000000000000",
- "requesterrestrict": "0x0000000000000000000000000000000000000000",
- "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "sign": "0x"
- },
- "requestorder": {
- "app": "0x0000000000000000000000000000000000000000",
- "appmaxprice": "0",
- "dataset": "0x0000000000000000000000000000000000000000",
- "datasetmaxprice": "0",
- "workerpool": "0x0000000000000000000000000000000000000000",
- "workerpoolmaxprice": "0",
- "volume": "1",
- "category": "1",
- "trust": "100",
- "tag": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "beneficiary": "0x0000000000000000000000000000000000000000",
- "callback": "0x0000000000000000000000000000000000000000",
- "params": "--help",
- "requester": "0x0000000000000000000000000000000000000000",
- "salt": "0x0000000000000000000000000000000000000000000000000000000000000000",
- "sign": "0x"
- }
- }
-}
-```
-
-### ./secrets/
-
-This folder is created when running `iexec result generate-encryption-keypair` or `ìexec dataset init --tee` and is intended to store credentials generated by the iexec SDK CLI.
-
-#### ./secrets/beneficiary/
-
-This folder stores the keypair to use for result encryption and decryption.
-A keypair is generated when running `iexec result generate-encryption-keypair`
-Public keys name follow the pattern _userAddress_\_key.pub , this key is shared with the workers when running `ìexec result push-encryption-key`
-Private keys name follow the pattern _userAddress_\_key this should never be shared with third party, the private key is used by the SDK CLI to decrypt a result when running `ìexec result decrypt`.
-
-#### ./secrets/datasets/
-
-This folder stores the AES keys used for dataset encryption.
-A key is generated for each dataset file when running `iexec dataset encrypt`.
-The key file is named after the dataset file name, last key generated is also stored in `./secrets/datasets/dataset.key` to be used as default secret to share with workers when running `iexec dataset push-secret`.
-
-### ./datasets/
-
-This folder is created when running `ìexec dataset init --tee` and is intended to store datasets files.
-
-#### ./datasets/original/
-
-Paste your original dataset files in this folder and run `iexec dataset encrypt` to encrypt them.
-
-#### ./datasets/encrypted/
-
-This folder stores the encrypted datasets files.
-An encrypted dataset file is created for each dataset file when running `iexec dataset encrypt`.
-The encrypted dataset file is named after the dataset file name.
-The encrypted dataset files must be upload on a public file system and referenced in multriaddr when running `iexec dataset deploy`.
-
-# iExec SDK Library API
-
-## Test iexec in codesandbox
-
-- [Buy computation demo](https://codesandbox.io/embed/876r7?fontsize=14&hidenavigation=1&theme=dark)
-- [Deploy and sell application demo](https://codesandbox.io/embed/l4hh4?fontsize=14&hidenavigation=1&theme=dark)
-- [Deploy and sell dataset demo](https://codesandbox.io/embed/micsl?fontsize=14&hidenavigation=1&theme=dark)
-
-## These dapps are built on the top of iexec SDK
-
-- [Price feed DOracle](https://price-feed-doracle.iex.ec/): a decentralized price oracle for your favorite cryptos.
-
-## How to use ?
-
-1. [Install the dependency in your JS project](#install-the-dependency-in-your-js-project)
-2. [Instanciate the iExec SDK](#instanciate-the-iexec-sdk)
-3. [Use iexec sdk](#use-iexec-sdk)
-4. [Utils](#utils)
-5. [Types](#types)
-6. [Errors](#errors)
-
-### Install the dependency in your JS project
-
-Install iexec sdk
-
-```bash
+```sh
npm install iexec
```
-### Instanciate the iExec SDK
-
-#### IExec Constructor
-
-**new IExec ({ ethProvider: Web3SignerProvider, flavour: 'standard'|'enterprise'|undefined } \[, options \])** => **IExec**
-
-> _options:_
->
-> - `hubAddress: Address` specify the address of iExec hub smart contract to use
-> - `smsURL: URL` specify the Secret Management System to use
-> - `resultProxyURL: URL` specify the result proxy to use for results remote storage
-> - `ipfsGatewayURL: URL` specify the IPFS gateway to use
-> - `isNative: Boolean` true when the RLC is the chain native token
-> - `useGas: Boolean` false when the chain does NOT requires to spend gas to send a transaction
-> - `confirms: Number` confirmations block count to wait for each transaction (must be positive, default 1)
-> - `bridgeAddress: Address` specify the bridge smart contract on current chain to transfert RLC to a bridged chain
-> - `bridgedNetworkConf: { rpcURL: URL, chainId: String, hubAddress: Address, bridgeAddress: Address }` specify how to connect to the bridged chain
-> - `enterpriseSwapConf: { hubAddress: Address }` specify enterprise flavour binding
-
-##### Basic configuration
-
-_Example:_
-
-```js
-import { IExec } from 'iexec';
-
-const iexec = new IExec({
- ethProvider: ethProvider, // an eth signer provider like MetaMask
-});
-```
-
-**Important:** if the current network change, you must reinstanciate the iExec SDK (actual supported networks are '1' (ethereum mainnet), '5' (goerli testnet), '134' (iExec sidechain), '133' (iExec sidechain testnet)).
-
-**Important:** ethProvider must implement eth_signTypedData_v3 (EIP712)
-
-In the browser, you can get a signer provider from [MetaMask plugin](https://metamask.io/)
-
-In the server side, use [utils.getSignerFromPrivateKey](#getSignerFromPrivateKey)
-
-_Example:_
-
-```js
-const getIExec = async () => {
- let ethProvider;
- if (!window.ethereum)
- // check existing web3 provider
- throw Error('Need to install MetaMask');
- ethProvider = window.ethereum;
- try {
- await window.ethereum.request({ method: 'eth_requestAccounts' }); // prompt the use to grant the dapp access to the blockchain
- } catch (error) {
- throw Error('User denied access', error);
- }
- return new IExec({
- ethProvider: ethProvider,
- });
-};
-```
-
-##### Sidechain configuration
-
-###### Adding iExec sidechain to MetaMask
-
-Click `Custom RPC` in the MetaMask Networks dropdown and fill with the following values:
-
-- Network Name: Bellecour (iExec sidechain)
-- New RPC URL:
-- ChainID (optional): 134
-- Symbol (optional): xRLC
-- Block Explorer URL (optional):
-
-###### Connecting iExec SDK to iExec sidechain
-
-If you intend to use iExec SDK on a RLC native chain (ie: RLC is the native token), you must use `isNative` option.
-_NB:_ Default values are provided on well known native networks such iExec test sidechain `133` and iExec mainnet sidechain `134`.
-
-_Example:_
-
-```js
-import { IExec } from 'iexec';
-
-const iexec = new IExec(
- {
- ethProvider: ethProvider, // an eth signer provider like MetaMask connected to https://bellecour.iex.ec
- },
- {
- isNative: true, // iExec sidechain use RLC as native token
- },
-);
-```
-
-##### Bridge configuration
-
-If you intend to bridge RLC from a chain to another (mainchain to sidechain or sidechain to mainchain), you must set `bridgeAddress` and `bridgedNetwork` options.
-
-_Example:_
+import
```js
import { IExec } from 'iexec';
-
-const bridgeAddress = '0x...'; // Address of the RLC bridge smart contract on mainnet
-
-const bridgedNetworkConf = {
- chainId: '134', // id of the bridged chain (134 for iExec sidechain)
- hubAddress: '0x...', // Address of theiExec hub smart contract on bridged chain
- rpcURL: 'https://bellecour.iex.ec', // url of a public node of bridged chain
- bridgeAddress: '0x...'; // Address of the RLC bridge smart contract on bridged chain
-};
-
-const iexec = new IExec({
- ethProvider: ethProvider, // an eth signer provider like MetaMask
-}, {
- bridgeAddress,
- bridgedNetworkConf
-});
-```
-
-### Use iexec sdk
-
-- [wallet](#iexecwallet): manage your wallet, send RLC...
-- [account](#iexecaccount): manage your account, deposit, withdraw...
-- [app](#iexecapp): deploy a new app, show an existing one
-- [dataset](#iexecdataset): deploy a new dataset, show an existing one
-- [workerpool](#iexecworkerpool): deploy a new workerpool, show an existing one
-- [order](#iexecorder): manage any type of order, make deals to start offchain computation
-- [orderbook](#iexecorderbook): explore the iexec Marketplace
-- [deal](#iexecdeal): find your deals
-- [task](#iexectask): follow the computation, download results or claim failed executions
-- [result](#iexecresult): manage the results encryption
-- [storage](#iexecstorage): manage the remote storage
-- [network](#iexecnetwork): useful information about the chain
-
-### iexec.wallet
-
-#### iexec.wallet.getAddress
-
-iexec.**wallet.getAddress ( )** => Promise < **Address** >
-
-> get the user selected address
-
-_Example:_
-
-```js
-const userAddress = await iexec.wallet.getAddress();
-console.log('User address:', userAddress);
-```
-
-#### iexec.wallet.checkBalances
-
-iexec.**wallet.checkBalances ( address: Address )** => Promise < **{ nRLC: BN, wei: BN }** >
-
-> check the wallet balance of specified address
-
-_Example:_
-
-```js
-const balance = await iexec.wallet.checkBalances(ethAddress);
-console.log('Nano RLC:', balance.nRLC.toString());
-console.log('Eth wei:', balance.wei.toString());
```
-#### iexec.wallet.sendRLC
-
-iexec.**wallet.sendRLC ( nRlcAmount: NRlcAmount, address: Address )** => Promise < **TxHash** >
-
-> send some nRLC (1 nRLC = 1\*10^-9 RLC) to the specified address
-
-_Example:_
-
-```js
-const txHash = await iexec.wallet.sendRLC(nRlcAmount, toEthAddress);
-console.log('Transaction hash:', txHash);
-```
+Check the [documentation](./docs/README.md)
-#### iexec.wallet.sendETH
+## [CLI](./CLI.md)
-iexec.**wallet.sendETH ( weiAmount: WeiAmount, address: Address )** => Promise < **TxHash** >
+The iExec SDK comes with a command line interface enabling interactions with the decentralized marketplace from a terminal.
-> send some wei to the specified address
+install
-_Example:_
+```sh
+npm install -g iexec
-```js
-const txHash = await iexec.wallet.sendETH(weiAmount, toEthAddress);
-console.log('Transaction hash:', txHash);
+# check commands
+iexec help
```
-#### iexec.wallet.sweep
-
-iexec.**wallet.sweep ( address: Address )** => Promise < **{ sendNativeTxHash: TxHash, sendERC20TxHash: TxHash, errors }**
+Check the [documentation](./CLI.md)
-> send all the RLC ERC20 (if applicable) and the native token to the specified address
-
-_Example:_
-
-```js
-await iexec.wallet.sweep(toEthAddress);
-```
+## Changelog
-#### iexec.wallet.checkBridgedBalances
+Find changes in the [CHANGELOG](./CHANGELOG.md)
-iexec.**wallet.checkBridgedBalances ( address: Address )** => Promise < **{ nRLC: BN, wei: BN }** >
-
-> check the wallet balance on bridged chain of specified address
-> ie: when connected to mainnet, check the wallet ballance on bellecour
-
-_Example:_
-
-```js
-const balance = await iexec.wallet.checkBridgedBalances(ethAddress);
-console.log('Nano RLC:', balance.nRLC.toString());
-console.log('Eth wei:', balance.wei.toString());
-```
-
-#### iexec.wallet.bridgeToSidechain
-
-iexec.**wallet.bridgeToSidechain ( amount: NRlcAmount )** => Promise < **{ sendTxHash: TxHash \[, receiveTxHash: TxHash \] }**
-
-> send some nRLC (1 nRLC = 1\*10^-9 RLC) to the sidechain.
-> RLC is send to the mainchain bridge smart contract on mainchain then credited on sidechain by the sidechain bridge smart contract
-> The optional `bridgeAddress` is required
-> The optional `bridgedNetworkConf` is required to get the `receiveTxHash` confirmation from the sidechain, if not set `receiveTxHash` will be `undefined`
-> see [Bridge configuration](#Bridge-configuration)
-
-_Example:_
-
-```js
-const { sendTxHash, receiveTxHash } = await sdk.wallet.bridgeToSidechain(
- '1000000000',
-);
-console.log(
- `Sent RLC on mainchain (tx: ${sendTxHash}), wallet credited on sidechain (tx: ${receiveTxHash})`,
-);
-```
-
-#### iexec.wallet.bridgeToMainchain
-
-iexec.**wallet.bridgeToMainchain ( amount: NRlcAmount )** => Promise < **{ sendTxHash: TxHash \[, receiveTxHash: TxHash \] }**
-
-> send some nRLC (1 nRLC = 1\*10^-9 RLC) to the mainchain.
-> RLC is send to the sidechain bridge smart contract on sidechain then credited on mainchain by the mainchain bridge smart contract
-> The optional `bridgeAddress` is required
-> The optional `bridgedNetworkConf` is required to get the `receiveTxHash` confirmation from the mainchain, if not set `receiveTxHash` will be `undefined`
-> see [Bridge configuration](#Bridge-configuration)
-
-_Example:_
-
-```js
-const { sendTxHash, receiveTxHash } = await sdk.wallet.bridgeToMainchain(
- '1000000000',
-);
-console.log(
- `Sent RLC on sidechain (tx: ${sendTxHash}), wallet credited on mainchain (tx: ${receiveTxHash})`,
-);
-```
-
-#### iexec.wallet.wrapEnterpriseRLC
-
-iexec.**wallet.wrapEnterpriseRLC ( amount: NRlcAmount )** => Promise < **wrapTxHash: TxHash**
-
-> wrap some nRLC (1 nRLC = 1\*10^-9 RLC) into neRLC (enterprise nRLC).
-> signer wallet must be authorized by the eRLC contract to perform wrap operation.
-
-_Example:_
-
-```js
-const txHash = await sdk.wallet.wrapEnterpriseRLC('1000000000');
-console.log(`Wrapped 1000000000 nRLC into neRLC (tx: ${txHash})`);
-```
-
-#### iexec.wallet.unwrapEnterpriseRLC
-
-iexec.**wallet.unwrapEnterpriseRLC ( amount: NRlcAmount )** => Promise < **wrapTxHash: TxHash**
-
-> wrap some neRLC (1 neRLC = 1\*10^-9 eRLC) into nRLC.
-> signer wallet must be authorized by the eRLC contract to perform unwrap operation.
-
-_Example:_
-
-```js
-const txHash = await sdk.wallet.unwrapEnterpriseRLC('1000000000');
-console.log(`Unwrapped 1000000000 neRLC into nRLC (tx: ${txHash})`);
-```
-
-### iexec.account
-
-#### iexec.account.checkBalance
-
-iexec.**account.checkBalance ( address: Address )** => Promise < **{ stake: BN, locked: BN }** >
-
-> check the account balance of specified address (stake is availlable nRLC, locked is escowed nRLC)
-
-_Example:_
-
-```js
-const balance = await iexec.account.checkBalance(ethAddress);
-console.log('Nano RLC staked:', balance.stake.toString());
-console.log('Nano RLC locked:', balance.locked.toString());
-```
-
-#### iexec.account.deposit
-
-iexec.**account.deposit ( nRlcAmount: NRlcAmount )** => Promise < **{ amount: BN, txHash: TxHash }** >
-
-> deposit some nRLC (1 nRLC = 1\*10^-9 RLC) from user wallet to user account
-
-_Example:_
-
-```js
-const { amount, txHash } = await iexec.account.deposit('1000000000');
-console.log('Deposited:', amount);
-console.log('tx:', txHash);
-```
-
-#### iexec.account.withdraw
-
-iexec.**account.withdraw ( nRlcAmount: NRlcAmount )** => Promise < **{ amount: BN, txHash: TxHash }** >
-
-> withdraw some nRLC (1 nRLC = 1\*10^-9 RLC) from user account to user wallet
-
-_Example:_
-
-```js
-const { amount, txHash } = await iexec.account.withdraw('1000000000');
-console.log('Withdrawn:', amount);
-console.log('tx:', txHash);
-```
-
-#### iexec.account.checkBridgedBalance
-
-iexec.**account.checkBridgedBalance ( address: Address )** => Promise < **{ stake: BN, locked: BN }** >
-
-> check the account balance on bridged chain of specified address
-> ie: when connected to mainnet, check the account ballance on bellecour
-
-_Example:_
-
-```js
-const balance = await iexec.account.checkBridgedBalance(ethAddress);
-console.log('Nano RLC staked:', balance.stake.toString());
-console.log('Nano RLC locked:', balance.locked.toString());
-```
-
-### iexec.orderbook
-
-#### iexec.orderbook.fetchAppOrderbook
-
-iexec.**orderbook.fetchAppOrderbook ( address: Address, \[, { dataset: Address, workerpool: Address, requester: Address, minTag: Tag, maxTag: Tag, minVolume: Int } \] )** => Promise < **{ count, orders: \[ { order: SignedApporder, orderHash: Bytes32, status: String, remaining: } [, more: Function => Promise] \] }** >
-
-> find the cheapest orders for the specified app
->
-> _Optional:_
->
-> - dataset: include dataset specific orders
-> - workerpool: include workerpool specific orders
-> - requester: include requester specific orders
-> - minVolume: filter on minimum volume remaining
-> - minTag: filter on minimum tag required
-> - maxTag: filter on maximun tag accepted
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchAppOrderbook(
- '0xdBDF1FE51fd3AF9aD94fb63824EbD977518d64b3',
-);
-console.log('best order:', res.appOrders[0].order);
-console.log('total orders:', res.count);
-```
-
-#### iexec.orderbook.fetchDatasetOrderbook
-
-iexec.**orderbook.fetchDatasetOrderbook ( address: Address \[, { app: Address, workerpool: Address, requester: Address, minTag: Tag, maxTag: Tag, minVolume: Int } \] )** => Promise < **{ count, orders: \[ { order: SignedDatasetorder, orderHash: Bytes32, status: String, remaining: } [, more: Function => Promise] \] }** >
-
-> find the cheapest orders for the specified dataset
->
-> _Optional:_
->
-> - app: include app specific orders
-> - workerpool: include workerpool specific orders
-> - requester: include requester specific orders
-> - minVolume: filter on minimum volume remaining
-> - minTag: filter on minimum tag required
-> - maxTag: filter on maximun tag accepted
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchDatasetOrderbook(
- '0xf6b2bA0793C225c28a6E7753f6f67a3C68750bF1',
-);
-console.log('best order:', res.datasetOrders[0].order);
-console.log('total orders:', res.count);
-```
-
-#### iexec.orderbook.fetchWorkerpoolOrderbook
-
-iexec.**orderbook.fetchWorkerpoolOrderbook ( \[ { workerpool: Address, workerpoolOwner: Address, category: Uint256, app: Address, dataset: Address, requester: Address, minTag: Tag, maxTag: Tag, minTrust: Int, minVolume: Int } \] )** => Promise < **{ count, orders: \[ { order: SignedWorkerpoolorde, orderHash: Bytes32, status: String, remaining: } [, more: Function => Promise] \] }** >
-
-> find the cheapest orders for computing resource.
->
-> _Optional:_
->
-> - workerpool: filter on specific workerpool
-> - category: filter on specific category
-> - app: include app specific orders
-> - dataset: include dataset specific orders
-> - requester: include requester specific orders
-> - workerpoolOwner: filter on specific workerpool owner
-> - minTag: filter on minimum tag required
-> - maxTag: filter on maximum tag offered
-> - minTrust: filter on minimum trust required
-> - minVolume: filter on minimum volume remaining
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchWorkerpoolOrderbook();
-console.log('best order:', res.workerpoolOrders[0].order);
-console.log('total orders:', res.count);
-```
-
-#### iexec.orderbook.fetchRequestOrderbook
-
-iexec.**orderbook.fetchRequestOrderbook ( \[, { requester: Address, beneficiary: Address, category: Uint256, app: Address, dataset: Address, workerpool: Address, minTag: Tag, maxTag: Tag, maxTrust: Int, minVolume: Int } \] )** => Promise < **{ count, orders: \[ { order: SignedRequestorde, orderHash: Bytes32, status: String, remaining: } [, more: Function => Promise] \] }** >
-
-> find the best paying request orders for computing resource.
->
-> _Optional:_
->
-> - requester: filter on specific requester
-> - category: filter on specific category
-> - app: include app specific orders
-> - workerpool: include workerpool specific orders
-> - requester: include requester specific orders
-> - beneficiary: filter on specific beneficiary
-> - minTag: filter on minimum tag required
-> - maxTag: filter on maximum tag accepted
-> - maxTrust: filter on maximum trust required
-> - minVolume: filter on minimum volume remaining
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchRequestOrderbook('1');
-console.log('best order:', res.requestOrders[0].order);
-console.log('total orders:', res.count);
-```
-
-#### iexec.orderbook.fetchApporder
-
-iexec.**orderbook.fetchApporder ( orderHash: Bytes32 )** => Promise < **{ order: SignedApporder, status, remaining }** >
-
-> find a published apporder by orderHash
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchApporder(
- '0x5ea856b5169486243c22ac77c778de2bdf8317fa0c52cb86c81eb06ad3854d88',
-);
-console.log('order:', res.order);
-console.log('status:', res.status);
-console.log('remaining:', res.remaining);
-```
-
-#### iexec.orderbook.fetchDatasetorder
-
-iexec.**orderbook.fetchDatasetorder ( orderHash: Bytes32 )** => Promise < **{ order: SignedDatasetorder, status, remaining }** >
-
-> find a published datasetorder by orderHash
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchDatasetorder(
- '0xe001eb5294b88c9998ee43fff116a4f7b0a05a05d4cef9382d811631fdaa7259',
-);
-console.log('order:', res.order);
-console.log('status:', res.status);
-console.log('remaining:', res.remaining);
-```
-
-#### iexec.orderbook.fetchWorkerpoolorder
-
-iexec.**orderbook.fetchWorkerpoolorder ( orderHash: Bytes32 )** => Promise < **{ order: SignedWorkerpoolorder, status, remaining }** >
-
-> find a published workerpoolorder by orderHash
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchWorkerpoolorder(
- '0x0ba665c9ae1578cdb37b89888ae25d65b06e67911f7aef30ed5cad30701f641f',
-);
-console.log('order:', res.order);
-console.log('status:', res.status);
-console.log('remaining:', res.remaining);
-```
-
-#### iexec.orderbook.fetchRequestorder
-
-iexec.**orderbook.fetchRequestorder ( orderHash: Bytes32 )** => Promise < **{ order: SignedRequestorder, status, remaining }** >
-
-> find a published requestorder by orderHash
-
-_Example:_
-
-```js
-const res = await iexec.orderbook.fetchRequestorder(orderHash);
-console.log('order:', res.order);
-console.log('status:', res.status);
-console.log('remaining:', res.remaining);
-```
-
-### iexec.order
-
-#### iexec.order.createApporder
-
-iexec.**order.createApporder ( { app: Address \[, appprice: NRlcAmount, volume: Uint256, tag: Bytes32, datasetrestrict: Address, workerpoolrestrict: Address, requesterrestrict: Address \] } )** => Promise < **Apporder** >
-
-> create an apporder with specified params
->
-> _mandatory values:_
->
-> - `app`: address of the app
->
-> _optional values:_
->
-> - `appprice`: resource price per task, default 0 RLC `"0"`
-> - `volume`: number of tasks to execute, default `"1"`
-> - `tag`: required tags, default no tag required `[]`
-> - `datasetrestrict`: restrict usage to specific dataset address, default no restrict `NULL_ADDRESS`
-> - `workerpoolrestrict`: restrict usage to specific workerpool address, default no restrict `NULL_ADDRESS`
-> - `requesterrestrict`: restrict usage to specific requester address, default no restrict `NULL_ADDRESS`
-
-_Example:_
-
-```js
-const apporderToSign = await iexec.order.createApporder({
- app: '0xdBDF1FE51fd3AF9aD94fb63824EbD977518d64b3',
- appprice: '1000000000',
- volume: '1000',
-});
-```
-
-#### iexec.order.signApporder
-
-iexec.**order.signApporder ( apporderToSign: Apporder )** => Promise < **SignedApporder** >
-
-> sign an apporder to produce a SignedApporder valid for the PoCo.
-
-_Example:_
-
-```js
-const signedApporder = await iexec.order.signApporder(apporderToSign);
-```
-
-#### iexec.order.hashApporder
-
-iexec.**order.hashApporder ( signedorder: SignerdApporder )** => Promise < **orderHash: Bytes32** >
-
-> return the hash of the order
-
-_Example:_
-
-```js
-const hash = await iexec.order.hashApporder(apporder);
-```
-
-#### iexec.order.createDatasetorder
-
-iexec.**order.createDatasetorder ( { dataset: Address \[, datasetprice: NRlcAmount, volume: Uint256, tag: Bytes32, apprestrict: Address, workerpoolrestrict: Address, requesterrestrict: Address \] } )** => Promise < **Datasetorder** >
-
-> create a datasetorder with specified params
->
-> _mandatory values:_
->
-> - `dataset`: address of the dataset
->
-> _optional values:_
->
-> - `datasetprice`: resource price per task, default 0 RLC `"0"`
-> - `volume`: number of tasks to execute, default `"1"`
-> - `tag`: required tags, default no tag required `[]`
-> - `apprestrict`: restrict usage to specific app address, default no restrict `NULL_ADDRESS`
-> - `workerpoolrestrict`: restrict usage to specific workerpool address, default no restrict `NULL_ADDRESS`
-> - `requesterrestrict`: restrict usage to specific requester address, default no restrict `NULL_ADDRESS`
-
-_Example:_
-
-```js
-const datasetorderToSign = await iexec.order.createDatasetorder({
- dataset: '0xf6b2bA0793C225c28a6E7753f6f67a3C68750bF1',
- datasetprice: '1000000000',
- volume: '1000',
-});
-```
-
-#### iexec.order.signDatasetorder
-
-iexec.**order.signDatasetorder ( datasetorderToSign: Datasetorder )** => Promise < **SignedDatasetorder** >
-
-> sign a datasetorder to produce a SignedDatasetorder valid for the PoCo.
-
-_Example:_
-
-```js
-const signedDatasetorder = await iexec.order.signDatasetorder(
- datasetorderToSign,
-);
-```
-
-#### iexec.order.hashDatasetorder
-
-iexec.**order.hashDatasetorder ( signedorder: SignerdDatasetorder )** => Promise < **orderHash: Bytes32** >
-
-> return the hash of the order
-
-_Example:_
-
-```js
-const hash = await iexec.order.hashDatasetorder(datasetorder);
-```
-
-#### iexec.order.createWorkerpoolorder
-
-iexec.**order.createWorkerpoolorder ( { workerpool: Address, category: Uint256 \[, workerpoolprice: NRlcAmount, volume: Uint256, trust: Uint256, tag: Bytes32, apprestrict: Address, datasetrestrict: Address, requesterrestrict: Address \] } )** => Promise < **Workerpoolorder** >
-
-> create a workerpoolorder with specified params
->
-> _mandatory values:_
->
-> - `workerpool`: address of the workerpool
-> - `category`: id of the selected computation category
->
-> _optional values:_
->
-> - `workerpoolprice`: resource price per task, default 0 RLC `"0"`
-> - `volume`: number of tasks to execute, default `"1"`
-> - `tag`: available tags, default no tag `[]`
-> - `trust`: available trust, default minimum trust `"0"`
-> - `apprestrict`: restrict usage to specific app address, default no restrict `NULL_ADDRESS`
-> - `datasetrestrict`: restrict usage to specific dataset address, default no restrict `NULL_ADDRESS`
-> - `requesterrestrict`: restrict usage to specific requester address, default no restrict `NULL_ADDRESS`
-
-_Example:_
-
-```js
-const workerpoolorderToSign = await iexec.order.createWorkerpoolorder({
- workerpool: '0xD34b0356D3A80De34d4fd71eF51346E468fe8cC2',
- workerpoolprice: '1000000000',
- category: '2',
- volume: '1',
-});
-```
-
-#### iexec.order.signWorkerpoolorder
-
-iexec.**order.signWorkerpoolorder ( workerpoolorderToSign: Workerpoolorder )** => Promise < **SignedWorkerpoolorder** >
-
-> sign a workerpoolorder to produce a SignedWorkerpoolorder valid for the PoCo.
-
-_Example:_
-
-```js
-const signedWorkerpoolorder = await iexec.order.signWorkerpoolorder(
- workerpoolorderToSign,
-);
-```
-
-#### iexec.order.hashWorkerpoolorder
-
-iexec.**order.hashWorkerpoolorder ( signedorder: SignerdWorkerpoolorder )** => Promise < **orderHash: Bytes32** >
-
-> return the hash of the order
-
-_Example:_
-
-```js
-const hash = await iexec.order.hashWorkerpoolorder(workerpoolorder);
-```
-
-#### iexec.order.createRequestorder
-
-iexec.**order.createRequestorder ( { app: Address, category: Uint256 \[, appmaxprice: NRlcAmount, workerpoolmaxprice: NRlcAmount, requester: Address, volume: Uint256, workerpool: Address, dataset: Address, datasetmaxprice: NRlcAmount, beneficiary: Address, params: Object, callback: Address, trust: Uint256, tag: Bytes32 \] } )** => Promise < **Requestorder** >
-
-> create a requestorder with specified params
->
-> _mandatory values:_
->
-> - `app`: address of the app to run
-> - `category`: id of the selected computation category
->
-> _optional values:_
->
-> - `params`: object, map of execution params:
-> - `iexec_args`: string arguments to pass to the application
-> - `iexec_input_files`: array of url of input files for the application, default `[]`
-> - `iexec_result_storage_provider`: selected storage provider `"ipfs"|"dropbox"`, default `"ipfs"`
-> - `iexec_result_encryption`: boolean should encrypt the result default `false`
-> - `dataset`: address of the dataset to use, default no dataset `NULL_ADDRESS`
-> - `workerpool`: allow only specific workerpool, default all workerpools allowed `NULL_ADDRESS`
-> - `appmaxprice`: max amount of nRLC allowed to spend per task from requester account to pay for the app, default 0 RLC `"0"`
-> - `workerpoolmaxprice`: max amount of nRLC allowed to spend per task from requester account to pay for the workerpool, default 0 RLC `"0"`
-> - `datasetmaxprice`: max amount of nRLC allowed to spend per task from requester account to pay for the dataset, default 0 RLC `"0"`
-> - `volume`: number of tasks to execute, default `"1"`
-> - `requester`: address paying for the computation, default current wallet address
-> - `beneficiary`: address allowed to get the results, default `requester` or current wallet address
-> - `callback`: smart contract to call after each task execution, default no callback `NULL_ADDRESS`
-> - `tag`: required tags, default no tag required `[]`
-> - `trust`: minimum trust level to reach in the PoCo, default minimum trust `"0"`
-
-_Example:_
-
-```js
-const requestorderToSign = await iexec.order.createRequestorder({
- app: '0xdBDF1FE51fd3AF9aD94fb63824EbD977518d64b3',
- appmaxprice: '0',
- workerpoolmaxprice: '1000000000',
- category: '2',
- volume: '1',
- params: 'ETH USD 9 2019-09-03T08:37:00.000Z',
-});
-```
-
-#### iexec.order.signRequestorder
-
-iexec.**order.signRequestorder ( requestorderToSign: Requestorder \[, options: Object \] )** => Promise < **SignedRequestorder** >
-
-> sign a requestorder to produce a SignedRequestorder valid for the PoCo.
->
-> _options:_
->
-> - `checkRequest`: boolean, default `true`. Perform advanced checks on request and throw if request inconsistency is found (this may prevent creating always failing task).
-
-_Example:_
-
-```js
-const SignedRequestorder = await iexec.order.signRequestorder(
- requestorderToSign,
-);
-```
-
-#### iexec.order.hashRequestorder
-
-iexec.**order.hashRequestorder ( signedorder: SignerdRequestorder )** => Promise < **orderHash: Bytes32** >
-
-> return the hash of the order
-
-_Example:_
-
-```js
-const hash = await iexec.order.hashRequestorder(requestorder);
-```
-
-#### iexec.order.publishApporder
-
-iexec.**order.publishApporder ( order: SignedApporder )** => Promise < **orderHash: Bytes32** >
-
-> publish a SignedApporder on the offchain marketplace, the order will be available for other users
-
-_Example:_
-
-```js
-const orderHash = await iexec.order.publishApporder(signedApporder);
-console.log('order published with orderHash:', orderHash);
-```
-
-#### iexec.order.unpublishApporder
-
-iexec.**order.unpublishApporder ( orderHash: Bytes32 )** => Promise < **orderHash: Bytes32** >
-
-> unpublish a SignedApporder from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishApporder(orderHash);
-```
-
-#### iexec.order.unpublishLastApporder
-
-iexec.**order.unpublishApporder ( appAddress: Address )** => Promise < **orderHash: Bytes32** >
-
-> unpublish the last pulished SignedApporder for specified app signed by the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishLastApporder(appAddess);
-```
-
-#### iexec.order.unpublishAllApporders
-
-iexec.**order.unpublishAllApporders ( appAddress: Address )** => Promise < **[ ...orderHash: Bytes32 ]** >
-
-> unpublish all SignedApporder for specified app signed by the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrders = await iexec.order.unpublishAllApporders(appAddess);
-```
-
-#### iexec.order.cancelApporder
-
-iexec.**order.cancelApporder ( order: SignedApporder )** => Promise < **{ order: SignedApporder, txHash; TxHash }** >
-
-> cancel a SignedApporder on the blockchain.
-
-_Example:_
-
-```js
-await iexec.order.cancelApporder(signedApporder);
-```
-
-#### iexec.order.publishDatasetorder
-
-iexec.**order.publishDatasetorder ( order: SignedDatasetorder )** => Promise < **orderHash: Bytes32** >
-
-> publish a SignedDatasetorder on the offchain marketplace, the order will be available for other users
-
-_Example:_
-
-```js
-const orderHash = await iexec.order.publishDatasetorder(signedDatasetorder);
-console.log('order published with orderHash:', orderHash);
-```
-
-#### iexec.order.unpublishDatasetorder
-
-iexec.**order.unpublishDatasetorder ( orderHash: Bytes32 )** => Promise < **orderHash: Bytes32** >
-
-> unpublish a SignedDatasetorder from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishDatasetorder(orderHash);
-```
-
-#### iexec.order.unpublishLastDatasetorder
-
-iexec.**order.unpublishDatasetorder ( datasetAddress: Address )** => Promise < **orderHash: Bytes32** >
-
-> unpublish the last pulished SignedDatasetorder for specified dataset signed by the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishLastDatasetorder(
- datasetAddess,
-);
-```
-
-#### iexec.order.unpublishAllDatasetorders
-
-iexec.**order.unpublishAllDatasetorders ( datasetAddress: Address )** => Promise < **[ ...orderHash: Bytes32 ]** >
-
-> unpublish all SignedDatasetorder for specified dataset signed by the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrders = await iexec.order.unpublishAllDatasetorders(
- datasetAddess,
-);
-```
-
-#### iexec.order.cancelDatasetorder
-
-iexec.**order.cancelDatasetorder ( order: SignedDatasetorder )** => Promise < **{ order: SignedDatasetorder, txHash; TxHash }** >
-
-> cancel a SignedDatasetorder on the blockchain.
-
-_Example:_
-
-```js
-await iexec.order.cancelDatasetorder(signedDatasetorder);
-```
-
-#### iexec.order.publishWorkerpoolorder
-
-iexec.**order.publishWorkerpoolorder ( order: SignedWorkerpoolorder )** => Promise < **orderHash: Bytes32** >
-
-> publish a SignedWorkerpoolorder on the offchain marketplace, the order will be available for other users
-
-_Example:_
-
-```js
-const orderHash = await iexec.order.publishWorkerpoolorder(
- signedWorkerpoolorder,
-);
-console.log('order published with orderHash:', orderHash);
-```
-
-#### iexec.order.unpublisWorkerpoolorder
-
-iexec.**order.unpublisWorkerpoolorder ( orderHash: Bytes32 )** => Promise < **orderHash: Bytes32** >
-
-> unpublish a SignedWorkerpoolorder from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublisWorkerpoolorder(
- orderHash,
-);
-```
-
-#### iexec.order.unpublishLastWorkerpoolorder
-
-iexec.**order.unpublishWorkerpoolorder ( workerpoolAddress: Address )** => Promise < **orderHash: Bytes32** >
-
-> unpublish the last pulished SignedWorkerpoolorder for specified workerpool signed by the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishLastWorkerpoolorder(
- workerpoolAddess,
-);
-```
-
-#### iexec.order.unpublishAllWorkerpoolorders
-
-iexec.**order.unpublishAllWorkerpoolorders ( workerpoolAddress: Address )** => Promise < **[ ...orderHash: Bytes32 ]** >
-
-> unpublish all SignedWorkerpoolorder for specified workerpool signed by the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrders = await iexec.order.unpublishAllWorkerpoolorders(
- workerpoolAddess,
-);
-```
-
-#### iexec.order.cancelWorkerpoolorder
-
-iexec.**order.cancelWorkerpoolorder ( order: SignedWorkerpoolorder )** => Promise < **{ order: SignedWorkerpoolorder, txHash; TxHash }** >
-
-> cancel a SignedWorkerpoolorder on the blockchain.
-
-_Example:_
-
-```js
-await iexec.order.cancelWorkerpoolorder(signedWorkerpoolorder);
-```
-
-#### iexec.order.publishRequestorder
-
-iexec.**order.publishRequestorder ( order: SignedRequestorder \[, options: Object \] )** => Promise < **orderHash: Bytes32** >
-
-> publish a SignedRequestorder on the offchain marketplace, the order will be available for other users
->
-> _options:_
->
-> - `checkRequest`: boolean, default `true`. Perform advanced checks on request and throw if request inconsistency is found (this may prevent creating always failing task).
-
-_Example:_
-
-```js
-const orderHash = await iexec.order.publishRequestorder(signedRequestorder);
-console.log('order published with orderHash:', orderHash);
-```
-
-#### iexec.order.unpublishRequestorder
-
-iexec.**order.unpublishRequestorder ( orderHash: Bytes32 )** => Promise < **orderHash: Bytes32** >
-
-> unpublish a SignedRequestorder of the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishRequestorder(orderHash);
-```
-
-#### iexec.order.unpublishLastRequestorder
-
-iexec.**order.unpublishRequestorder ( )** => Promise < **orderHash: Bytes32** >
-
-> unpublish the last pulished SignedRequestorder of the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrderHash = await iexec.order.unpublishLastRequestorder();
-```
-
-#### iexec.order.unpublishAllRequestorders
-
-iexec.**order.unpublishAllRequestorders ( )** => Promise < **[ ...orderHash: Bytes32 ]** >
-
-> unpublish all SignedRequestorder of the user from the offchain marketplace, the order still valid but no longer displayed for other users (to invalidate an order on the blockchain, use cancel).
-
-_Example:_
-
-```js
-const unpublishedOrders = await iexec.order.unpublishAllRequestorders();
-```
-
-#### iexec.order.cancelRequestorder
-
-iexec.**order.cancelRequestorder ( order: SignedRequestorder )** => Promise < **{ order: SignedRequestorder, txHash; TxHash }** >
-
-> cancel a SignedRequestorder on the blockchain.
-
-_Example:_
-
-```js
-await iexec.order.cancelRequestorder(signedRequestorder);
-```
-
-#### iexec.order.matchOrders
-
-iexec.**order.matchOrders ( { apporder: SignedApporder, workerpoolorder: SignedWorkerpoolorder, requestorder: SignedRequestorder \[, datasetorder: SignedDatasetorder \]} \[, options: Object \] )** => Promise < **{ dealid: Bytes32, volume: BN, txHash: TxHash }** >
-
-> make a deal on-chain with compatible orders and trigger off-chain computation.
->
-> _options:_
->
-> - `checkRequest`: boolean, default `true`. Perform advanced checks on request and throw if request inconsistency is found (this may prevent creating always failing task).
-
-_Example:_
-
-```js
-const res = await iexec.order.matchOrders({
- apporder,
- workerpoolorder,
- requestorder,
-});
-console.log('deal:', res.dealid);
-```
-
-### iexec.deal
-
-#### iexec.deal.show
-
-iexec.**deal.show ( dealid: Bytes32 )** => Promise < **{ app : { pointer: Address, owner: Address, price: BN }, dataset : { pointer: Address, owner: Address, price: BN }, workerpool : { pointer: Address, owner: Address, price: BN }, trust: BN, category: BN, tag: Tag, requester: Address, beneficiary: Address, callback: Address, params: String, startTime: BN, deadlineReached: Boolean, botFirst: BN, botSize: BN, workerStake: BN, schedulerRewardRatio: BN, tasks: { ...\[ {\[idx\]: taskid] }\] }** >
-
-> show the details of a deal.
-
-_Example:_
-
-```js
-const deal = await iexec.deal.show(
- '0xe0ebfa1177a5997434fe14b5e88897950e07ff82e6976a024b07f30063249a1e',
-);
-console.log('deal:', deal);
-```
-
-#### iexec.deal.obsDeal
-
-iexec.**deal.obsDeal ( dealid: Bytes32 )** => Promise < Observable < **{ subscribe: Function({ next: Function({ message: String, tasksCount: Int, completedTasksCount: Int, failedTasksCount: Int, deal: Deal, tasks: { ...\[ {\[idx\]: task ] }\] } }), error: Function(Error), complete: Function() }) }** > >
-
-> return an observable with subscribe method to monitor the deal status changes.
->
-> - next is called with initial status and after every task status update
-> - error is called once on error and stops the updates
-> - complete is called once on task completion or timeout/fail
->
-> _messages:_
->
-> - `DEAL_UPDATED`: deal status changed (task updated)
-> - `DEAL_COMPLETED`: all tasks are completed
-> - `DEAL_TIMEDOUT`: deal timed out before all tasks completion
-
-_Example:_
-
-```js
-const dealObservable = iexec.deal.obsDeal(
- '0xbae010aa25684354e5dc9bf01b8dc8a05f36ed549a31a353e02917f62a496a43',
-);
-
-const unsubscribe = dealObservable.subscribe({
- next: (data) =>
- console.log(
- data.message,
- `completed tasks ${data.completedTasksCount}/${data.tasksCount}`,
- ),
- error: (e) => console.error(e),
- complete: () => console.log('final state reached'),
-});
-// call unsubscribe() to unsubscribe from dealObservable
-```
-
-#### iexec.deal.computeTaskId
-
-iexec.**deal.computeTaskId ( dealid: Bytes32, taskIdx: Uint256 )** => Promise < **taskid: Bytes32** >
-
-> compute the taskid of the task with index taskIdx of specified deal.
-
-_Example:_
-
-```js
-const taskid = await iexec.deal.computeTaskId(
- '0xe0ebfa1177a5997434fe14b5e88897950e07ff82e6976a024b07f30063249a1e',
- '0',
-);
-console.log('taskid:', taskid);
-```
-
-#### iexec.deal.fetchRequesterDeals
-
-iexec.**deal.fetchRequesterDeals ( requesterAddress: Address, \[ { appAddress: Address, datasetAddress: Address, workerpoolAddress: Address } \] )** => Promise < **{ count, deals: \[ ...Deals \]}** >
-
-> show the last deals of the specified requester.
->
-> _Optional:_ filter by appAddress, datasetAddress, workerpoolAddress.
-
-_Example:_
-
-```js
-const res = await iexec.deal.fetchRequesterDeals(
- await iexec.wallet.getAddress(),
-);
-console.log('deals count:', res.count);
-console.log('last deal:', res.deals[0]);
-```
-
-#### iexec.deal.claim
-
-iexec.**deal.claim ( dealid: Bytes32 )** => Promise < **{ claimed : { ...\[ {\[idx\]: taskid] }\] }, transactions: \[ { txHash: TxHash, type: String } \] }** >
-
-> claim all the failed task from a deal.
-> Depending the number and the status of task to claim, this may involve several transactions in order to fit in the blockchain gasLimit per block.
-> (mainnet actual gas limit is 10000000, this allows to claim 180 initialized task or 40 non-initialized tasks in one block)
-
-_Example:_
-
-```js
-const { claimed, transactions } = await iexec.deal.claim(
- '0xe0ebfa1177a5997434fe14b5e88897950e07ff82e6976a024b07f30063249a1e',
-);
-Object.entries(claimed).forEach((e) => {
- console.log(`claimed task: idx ${e[0]} taskid ${e[1]}`);
-});
-transactions.forEach((e) => {
- console.log(`transaction ${e.type} hash ${e.txHash}`);
-});
-```
-
-### iexec.task
-
-#### iexec.task.show
-
-iexec.**task.show ( taskid: Bytes32 )** => Promise < **{ status: Number(0|1|2|3|4), dealid: Bytes32, idx: BN, timeref: BN, contributionDeadline: BN, revealDeadline: BN, finalDeadline: BN, consensusValue: Bytes32, revealCounter: BN, winnerCounter: BN, contributors: [...Address], resultDigest: Bytes32, results: { storage: String('none'|StorageProviderName) \[, location: String \]}, statusName: String('UNSET'|'ACTIVE'|'REVEALING'|'COMPLETED'|'FAILED'|'TIMEOUT'), taskTimedOut: Boolean }** >
-
-> show the details of a task.
-
-_Example:_
-
-```js
-const task = await iexec.task.show(
- '0x5c959fd2e9ea2d5bdb965d7c2e7271c9cb91dd05b7bdcfa8204c34c52f8c8c19',
-);
-console.log('task:', task);
-```
-
-#### iexec.task.claim
-
-iexec.**task.claim ( taskid: Bytes32 )** => Promise < **TxHash** >
-
-> claim a task not completed after the final deadline (refund RLC for the requester and the workers).
-
-_Example:_
-
-```js
-await iexec.task.claim(
- '0x5c959fd2e9ea2d5bdb965d7c2e7271c9cb91dd05b7bdcfa8204c34c52f8c8c19',
-);
-```
-
-#### iexec.task.fetchResults
-
-iexec.**task.fetchResults ( taskid: Bytes32 )** => Promise < **fetchResponse: Response** >
-
-> download the specified task result. only supported for IPFS stored results
-
-_Example:_
-
-```js
-const res = await iexec.task.fetchResults(
- '0x5c959fd2e9ea2d5bdb965d7c2e7271c9cb91dd05b7bdcfa8204c34c52f8c8c19',
-);
-const binary = await res.blob();
-```
-
-#### iexec.task.obsTask
-
-iexec.**task.obsTask ( taskid: Bytes32 \[, { dealid: Bytes32 }\] )** => Promise < Observable < **{ subscribe: Function({ next: Function({ message: String, task: Task }), error: Function(Error), complete: Function() }) }** > >
-
-> return an observable with subscribe method to monitor the task status changes.
->
-> - `next` is called with initial status and after every status update
-> - `error` is called once on error and stops the updates
-> - `complete` is called once on task completion or timeout/fail
->
-> _Optional:_ specify the dealid of the task, this prevent error to be called when task is not yet initialized (ACTIVE)
->
-> _messages:_
->
-> - `TASK_UPDATED`: task status changed
-> - `TASK_COMPLETED`: task is completed
-> - `TASK_TIMEDOUT`: task timed out
-> - `TASK_FAILED`: task was claimed after timeout
-
-_Example:_
-
-```js
-// log task updtates
-const taskObservable = iexec.task.obsTask(
- '0x5c959fd2e9ea2d5bdb965d7c2e7271c9cb91dd05b7bdcfa8204c34c52f8c8c19',
-);
-
-const unsubscribe = taskObservable.subscribe({
- next: ({ message, task }) => console.log(message, task.statusName),
- error: (e) => console.error(e),
- complete: () => console.log('final state reached'),
-});
-// call unsubscribe() to unsubscribe from taskObservable
-```
-
-```js
-// wait for task completion
-const waitFinalState = (taskid, dealid) =>
- new Promise((resolve, reject) => {
- let taskState;
- iexec.task.obsTask(taskid, { dealid }).subscribe({
- next ({task}) => taskState = task,
- error: e => reject(e),
- complete: () => resolve(taskState),
- });
- });
-
-const task = await waitFinalState(
- '0x3c0ab2de0cd14de2746d0e1b6ae4ad07659c02f61ca24bffba500b1b2a216d30',
- '0xbae010aa25684354e5dc9bf01b8dc8a05f36ed549a31a353e02917f62a496a43',
-);
-```
-
-### iexec.app
-
-#### iexec.app.show
-
-iexec.**app.showApp ( appAddress: Address )** => Promise < **{ objAddress: Address, app: { appName, appMultiaddr, appChecksum, owner, appMREnclave, appType } }** >
-
-> show the details of an app.
-
-_Example:_
-
-```js
-const { app } = await iexec.app.showApp(
- '0x917D71168fF60A10afD684d8D815b4A78097225D',
-);
-console.log('app:', app);
-```
-
-#### iexec.app.countUserApps
-
-iexec.**app.countUserApps ( userAddress: Address )** => Promise < **count: BN** >
-
-> count the apps owned by an address.
-
-_Example:_
-
-```js
-const count = await iexec.app.countUserApps(await iexec.wallet.getAddress());
-console.log('app count:', count);
-```
-
-#### iexec.app.showUserApp
-
-iexec.**app.showUserApp ( index: Integer, userAddress: Address )** => Promise < **{ objAddress: Address, app: { appName, appMultiaddr, appChecksum, owner, appMREnclave, appType } }** >
-
-> show the details of an app.
-
-_Example:_
-
-```js
-const { app } = await iexec.app.showUserApp(0, await iexec.wallet.getAddress());
-console.log('app:', app);
-```
-
-#### iexec.app.deploy
-
-iexec.**app.deployApp ( app: App )** => Promise < **{ address: Address, txHash: TxHash }** >
-
-> deploy an app on the blockchain.
-
-_Example:_
-
-```js
-const { address } = await iexec.app.deployApp({
- owner: await iexec.wallet.getAddress(),
- name: 'My app',
- type: 'DOCKER',
- multiaddr: 'registry.hub.docker.com/iexechub/vanityeth:1.1.1',
- checksum:
- '0x00f51494d7a42a3c1c43464d9f09e06b2a99968e3b978f6cd11ab3410b7bcd14',
-});
-console.log('deployed at', address);
-```
-
-### iexec.dataset
-
-#### iexec.dataset.show
-
-iexec.**dataset.showDataset ( datasetAddress: Address )** => Promise < **{ objAddress: Address, dataset: { datasetName, datasetMultiaddr, datasetChecksum, owner } }** >
-
-> show the details of a dataset.
-
-_Example:_
-
-```js
-const { dataset } = await iexec.dataset.showDataset(
- '0xf6b2bA0793C225c28a6E7753f6f67a3C68750bF1',
-);
-console.log('dataset:', dataset);
-```
-
-#### iexec.dataset.countUserDatasets
-
-iexec.**dataset.countUserDatasets ( userAddress: Address )** => Promise < **count: BN** >
-
-> count the datasets owned by an address.
-
-_Example:_
-
-```js
-const count = await iexec.dataset.countUserDatasets(
- await iexec.wallet.getAddress(),
-);
-console.log('dataset count:', count);
-```
-
-#### iexec.dataset.showUserDataset
-
-iexec.**dataset.showUserDataset ( index: Integer, userAddress: Address )** => Promise < **{ objAddress: Address, dataset: { datasetName, datasetMultiaddr, datasetChecksum, owner } }** >
-
-> show the details of a dataset.
-
-_Example:_
-
-```js
-const { dataset } = await iexec.dataset.showUserDataset(
- 0,
- await iexec.wallet.getAddress(),
-);
-console.log('dataset:', dataset);
-```
-
-#### iexec.dataset.generateEncryptionKey
-
-iexec.**dataset.generateEncryptionKey ()** => String
-
-> generate an encryption key to encrypt a dataset
->
-> _NB:_ This method returns a base64 encoded 256 bits key
-
-_Example:_
-
-```js
-const encryptionKey = iexec.dataset.generateEncryptionKey();
-console.log('encryption key:', encryptionKey);
-```
-
-#### iexec.dataset.encrypt
-
-iexec.**dataset.encrypt (datasetFile: ArrayBuffer|Buffer, key: String )** => Promise < **encryptedDataset: Buffer** >
-
-> encrypt the dataset file with the specified key using AES-256-CBC
->
-> _NB:_
->
-> - the supplied key must be 256 bits base64 encoded
-> - DO NOT leak the key and DO NOT use the same key for encrypting different datasets
-
-_Example:_
-
-```js
-const datasetFile = await readDatasetAsArrayBuffer(); // somehow load the dataset file
-
-const encryptionKey = iexec.dataset.generateEncryptionKey(); // DO NOT leak this key
-const encryptedDataset = await iexec.dataset.encrypt(
- datasetFile,
- encryptionKey,
-);
-
-const binary = new Blob([encryptedDataset]); // the encrypted binary can be shared
-```
-
-#### iexec.dataset.computeEncryptedFileChecksum
-
-iexec.**dataset.computeEncryptedFileChecksum (encryptedDatasetFile: ArrayBuffer|Buffer )** => Promise < **checksum: Bytes32** >
-
-> compute the encrypted dataset file's checksum required for dataset deployment
->
-> - :warning: the dataset checksum is the encrypted file checksum, use this method on the encrypted file but DO NOT use it on the original dataset file
->
-> _NB:_
->
-> - the dataset checksum is the sha256sum of the encrypted dataset file
-> - the checksum is used in the computation workflow to ensure the dataset's integrity
-
-_Example:_
-
-```js
-const encryptedDataset = await iexec.dataset.encrypt(
- datasetFile,
- encryptionKey,
-);
-
-const checksum = await iexec.dataset.computeEncryptedFileChecksum(
- encryptedDataset,
-);
-```
-
-#### iexec.dataset.deploy
-
-iexec.**dataset.deployDataset ( dataset: Dataset )** => Promise < **{ address: Address, txHash: TxHash }** >
-
-> deploy a dataset on the blockchain.
-
-_Example:_
-
-```js
-const { address } = await iexec.dataset.deployDataset({
- owner: await iexec.wallet.getAddress(),
- name: 'My dataset',
- multiaddr: '/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ',
- checksum:
- '0x0000000000000000000000000000000000000000000000000000000000000000',
-});
-console.log('deployed at', address);
-```
-
-#### iexec.dataset.pushDatasetSecret
-
-iexec.**dataset.pushDatasetSecret ( datasetAddress: Address, secret: String )** => Promise < **success: Boolean** >
-
-> push the dataset's key to the SMS
-> :warning: pushed secrets CAN NOT be updated
-
-_Example:_
-
-```js
-const pushed = await iexec.dataset.pushDatasetSecret(
- datasetAddress,
- encryptionKey,
-);
-console.log('secret pushed:', pushed);
-```
-
-#### iexec.dataset.checkDatasetSecretExists
-
-iexec.**dataset.checkDatasetSecretExists ( datasetAddress: Address )** => Promise < **secretExists: Boolean** >
-
-> check if a the dataset secret exists in the SMS
-
-_Example:_
-
-```js
-const isSecretSet = await iexec.dataset.checkDatasetSecretExists(
- datasetAddress,
-);
-console.log('secret exists:', isSecretSet);
-```
-
-### iexec.workerpool
-
-#### iexec.workerpool.show
-
-iexec.**workerpool.showWorkerpool ( workerpoolAddress: Address )** => Promise < **{ objAddress: Address, workerpool: { workerpoolDescription, owner } }** >
-
-> show the details of a workerpool.
-
-_Example:_
-
-```js
-const { workerpool } = await iexec.workerpool.showWorkerpool(
- '0xD34b0356D3A80De34d4fd71eF51346E468fe8cC2',
-);
-console.log('workerpool:', workerpool);
-```
-
-#### iexec.workerpool.countUserWorkerpools
-
-iexec.**workerpool.countUserWorkerpools ( userAddress: Address )** => Promise < **count: BN** >
-
-> count the workerpools owned by an address.
-
-_Example:_
-
-```js
-const count = await iexec.workerpool.countUserWorkerpools(
- await iexec.wallet.getAddress(),
-);
-console.log('workerpool count:', count);
-```
-
-#### iexec.workerpool.showUserWorkerpool
-
-iexec.**workerpool.showUserWorkerpool ( index: Integer, userAddress: Address )** => Promise < **{ objAddress: Address, workerpool: { workerpoolDescription, owner } }** >
-
-> show the details of an workerpool.
-
-_Example:_
-
-```js
-const { workerpool } = await iexec.workerpool.showUserWorkerpool(
- 0,
- await iexec.wallet.getAddress(),
-);
-console.log('workerpool:', workerpool);
-```
-
-#### iexec.workerpool.deploy
-
-iexec.**workerpool.deployWorkerpool ( workerpool: Workerpool )** => Promise < **{ address: Address, txHash: TxHash }** >
-
-> deploy a workerpool on the blockchain.
-
-_Example:_
-
-```js
-const { address } = await iexec.workerpool.deployWorkerpool({
- owner: await iexec.wallet.getAddress(),
- description: 'My workerpool',
-});
-console.log('deployed at', address);
-```
-
-### iexec.result
-
-#### iexec.result.pushResultEncryptionKey
-
-iexec.**result.pushResultEncryptionKey ( rsaPublicKey: String \[, options \])** => Promise < **{ isPushed: Boolean, isUpdated: Boolean }** >
-
-> push an encryption public key to the SMS, this allow results encryption
-> _options:_
->
-> - `forceUpdate: Boolean` update if exists
-
-_Example:_
-
-```js
-const { isPushed } = await iexec.result.pushResultEncryptionKey(
- '-----BEGIN PUBLIC KEY-----
- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0gKRKKNCLe1O+A8nRsOc
- gnnvLwE+rpvmKnjOTzoR8ZBTaIjD1dqlhPyJ3kgUnKyCNqru9ayf0srUddwj+20N
- zdLvhI03cYD+GFYM6rrGvaUekGZ43f309f3wOrQjNkTeGo+K+hloHL/gmuN/XML9
- MST/01+mdCImPdG+dxk4RQAsFS7HE00VXsVjcLGeZ95AKILFJKLbCOJxxvsQ+L1g
- rameEwTUF1Mb5TJnV44YZJiCKYFj6/6zrZ3+pdUjxBSN96iOyE2KiYeNuhEEJbjb
- 4rWl+TpWLmDkLIeyL3TpDTRedaXVx6h7DOOphX5vG63+5UIHol3vJwPbeODiFWH0
- hpFcFVPoW3wQgEpSMhUabg59Hc0rnXfM5nrIRS+SHTzjD7jpbSisGzXKcuHMc69g
- brEHGJsNnxr0A65PzN1RMJGq44lnjeTPZnjWjM7PnnfH72MiWmwVptB38QP5+tao
- UJu9HvZdCr9ZzdHebO5mCWIBKEt9bLRa2LMgAYfWVg21ARfIzjvc9GCwuu+958GR
- O/VhIFB71aaAxpGmK9bX5U5QN6Tpjn/ykRIBEyY0Y6CJUkc33KhVvxXSirIpcZCO
- OY8MsmW8+J2ZJI1JA0DIR2LHingtFWlQprd7lt6AxzcYSizeWVTZzM7trbBExBGq
- VOlIzoTeJjL+SgBZBa+xVC0CAwEAAQ==
- -----END PUBLIC KEY-----',
-);
-console.log('encryption key pushed:', isPushed);
-```
-
-#### iexec.result.checkResultEncryptionKeyExists
-
-iexec.**result.checkResultEncryptionKeyExists ( userAddress: Address )** => Promise < **encryptionKeyExists: Boolean** >
-
-> check if an encryption key exists in the SMS
-
-_Example:_
-
-```js
-const isMyKeySet = await iexec.result.checkResultEncryptionKeyExists(
- await iexec.wallet.getAddress(),
-);
-console.log('encryption key set:', isMyKeySet);
-```
-
-### iexec.storage
-
-#### iexec.storage.defaultStorageLogin
-
-iexec.**storage.defaultStorageLogin ()** => Promise < **token: String** >
-
-> get an authorization token from the default IPFS based remote storage. [Share this token through the SMS](#pushStorageToken) to allows the worker to push your tasks results to the default remote storage.
-
-#### iexec.storage.pushStorageToken
-
-iexec.**storage.pushStorageToken ( token: String \[, options \])** => Promise < **{ isPushed: Boolean, isUpdated: Boolean }** >
-
-> push a storage provider authorization token to the SMS, this allow results storage
->
-> _options:_
->
-> - `provider: String` specify storage provider (supported: `"default", "dropbox"`, )
-> - `forceUpdate: Boolean` update if exists
-
-_Example:_
-
-```js
-const defaultStorageToken = await iexec.storage.defaultStorageLogin();
-const { isPushed } = await iexec.storage.pushStorageToken(defaultStorageToken);
-console.log('default storage initialized:', isPushed);
-```
-
-#### iexec.storage.checkStorageTokenExists
-
-iexec.**storage.checkStorageTokenExists ( userAddress: Address \[, options \] )** => Promise < **storageInitialized: Boolean** >
-
-> check if storage credential exists in the SMS
->
-> _options:_
->
-> - `provider`: string, storage provider name, default `"ipfs"`. supported `"ipfs"`|`"dropbox"`
-
-_Example:_
-
-```js
-const isIpfsStorageInitialized = await iexec.storage.checkStorageTokenExists(
- await iexec.wallet.getAddress(),
-);
-console.log('ipfs storage initialized:', isIpfsStorageInitialized);
-```
-
-### iexec.ens
-
-#### iexec.ens.getOwner
-
-iexec.**ens.getOwner(name)** => Promise< **owner: Address | null** >
-
-> get the address of the ENS name's owner
-
-_Example:_
-
-```js
-const owner = await iexec.ens.getOwner('iexec.eth');
-console.log('iexec.eth owner:', owner);
-```
-
-#### iexec.ens.resolveName
-
-iexec.**ens.resolveName(name)** => Promise< **address: Address | null** >
-
-> resolve the ENS name to an ethereum address if a resolver is configured for the name
-
-_Example:_
-
-```js
-const address = await iexec.ens.resolveName('me.users.iexec.eth');
-console.log('me.users.iexec.eth:', address);
-```
-
-#### iexec.ens.lookupAddress
-
-iexec.**ens.lookupAddress(address)** => Promise< **name: String | null** >
-
-> lookup to find the ENS name of an ethereum address
-
-_Example:_
-
-```js
-const name = await iexec.ens.lookupAddress(await iexec.wallet.getAddress());
-console.log('my ENS name:', name);
-```
-
-#### iexec.ens.claimName
-
-iexec.**ens.claimName(label: String \[, domain: String\])** => Promise< **{ registeredName: String \[, registerTxHash: TxHash \]}** >
-
-> register a subdomain (label) on an ENS FIFSRegistrar
->
-> _Optional:_ the `domain` must be controlled by a [FIFSRegistrar](https://github.com/ensdomains/ens#fifsregistrarsol), default `"users.iexec.eth"`
->
-> _NB:_ if the user already own the domain the register transaction will not occur
-
-_Example:_
-
-```js
-const { name, registerTxHash } = await iexec.ens.claimName(
- 'me',
- 'users.iexec.eth',
-);
-console.log('regitered:', name);
-```
-
-#### iexec.ens.obsConfigureResolution
-
-iexec.**ens.obsConfigureResolution(name: String \[, address: Address\])** => Promise < Observable < **{ subscribe: Function({ next: Function({ message: String, ...additionalEntries }), error: Function(Error), complete: Function() }) }** > >
-
-> create a cold Observable to configure the ENS resolution AND reverse resolution for an owned ENS name
->
-> _Optional:_ the `address` must be an iExec RegistryEntry address (ie: app, dataset or workerpool) or the user address, default user address
->
-> _NB:_ the configuration may require up to 4 transactions, depending on the target type (EOA or RegistryEntry) and the current state, some transaction may or may not occur to complete the configuration
->
-> calling the `subscribe({next, error, complete})` method on the observable will immediately return a cancel `function()` and start the asynchronous ENS configuration.
->
-> the `next` callback is called on every process step with a `message` and additional pieces of data, the values are described in the following table.
->
-> the `error` callback is called when an error occurs, the observable process is also canceled.
->
-> the `complete` callback is called when the process ends without error.
->
-> calling the cancel `function()` will stop the observed process and prevent any further callback call.
-
-| message | sent | additional entries |
-| -------------------------------------- | -------------------------------------------------------------- | ---------------------------------------------------- |
-| DESCRIBE_WORKFLOW | once | addessType: 'EOA' \| 'CONTRACT' steps: String[] |
-| SET_RESOLVER_TX_REQUEST | once if resolver is not set | name: String resolverAddress: Address |
-| SET_RESOLVER_TX_SENT | once if resolver is not set | txHash: TxHash |
-| SET_RESOLVER_SUCCESS | once | name: String resolverAddress: Address |
-| SET_ADDR_TX_REQUEST | once if addr is not set | name: String address: Address |
-| SET_ADDR_TX_SENT | once if addr is not set | txHash: TxHash |
-| SET_ADDR_SUCCESS | once | name: String address: Address |
-| CLAIM_REVERSE_WITH_RESOLVER_TX_REQUEST | once if address type is EAO and reverse address is not claimed | address: Address resolverAddress: Address |
-| CLAIM_REVERSE_WITH_RESOLVER_TX_SENT | once if address type is EAO and reverse address is not claimed | txHash: TxHash |
-| CLAIM_REVERSE_WITH_RESOLVER_SUCCESS | once if address type is EAO | address: Address resolverAddress: Address |
-| SET_NAME_TX_REQUEST | once if name us not set | name: String address: Address |
-| SET_NAME_TX_SENT | once if name us not set | txHash: TxHash |
-| SET_NAME_SUCCESS | once | name: String address: Address |
-
-_Example:_
-
-```js
-const configureResolutionObservable = await iexec.ens.obsConfigureResolution(
- 'me.users.iexec.eth',
-);
-configureResolutionObservable.subscribe({
- error: console.error,
- next: ({ message, ...rest }) =>
- console.log(`${message} ${JSON.strigify(rest)}`),
- completed: () => console.log('resolution configured'),
-});
-```
-
-```js
-const configureResolutionObservable = await iexec.ens.obsConfigureResolution(
- 'my-app.eth',
- appAddress,
-);
-configureResolutionObservable.subscribe({
- error: console.error,
- next: ({ message, ...rest }) =>
- console.log(`${message} ${JSON.strigify(rest)}`),
- completed: () => console.log('resolution configured'),
-});
-```
-
-#### iexec.ens.configureResolution
-
-iexec.**ens.configureResolution(name: String \[, address: Address\])** => Promise< **{ name: String, address: Address \[, setResolverTxHash: TxHash, setAddrTxHash: TxHash, setNameTxHash: TxHash, claimReverseTxHash: TxHash \]}** >
-
-> configure the ENS resolution AND reverse resolution for an owned ENS name, same as `ens.obsConfigureResolution` wrapped in a Promise.
->
-> _Optional:_ the `address` must be an iExec RegistryEntry address (ie: app, dataset or workerpool) or the user address, default user address
->
-> _NB:_ depending on the target type (EOA or RegistryEntry) and the current state, some transaction may or may not occur to complete the configuration
-
-_Example:_
-
-```js
-const { address, name } = await iexec.ens.configureResolution(
- 'me.users.iexec.eth',
-);
-console.log('configured resolution:', address, '<=>', name);
-```
-
-```js
-const { address, name } = await iexec.ens.configureResolution(
- 'my-app.eth',
- appAddress,
-);
-console.log('configured resolution:', address, '<=>', name);
-```
-
-### iexec.network
-
-#### iexec.network.getNetwork
-
-iexec.**network.getNetwork()** => Promise< **{ chainId: String, isSidechain: Boolean }** >
-
-> get information about the connected network
-
-_Example:_
-
-```js
-const { chainId, isSidechain } = await iexec.network.getNetwork();
-console.log('current chain', chainId, '(sidechain:', isSidechain, ')');
-```
-
-### utils
-
-`utils` provides some utility functions for iExec.
-
-#### utils.BN
-
-`BN` is instance of `bn.js` it allows big numbers manipulation in js (see [bn.js](https://www.npmjs.com/package/bn.js)).
-
-_Example:_
-
-```js
-new utils.BN(1);
-```
-
-#### utils.NULL_ADDRESS
-
-Constant: the address 0 represention
-
-_Example:_
-
-```js
-console.log(utils.NULL_ADDRESS);
-```
-
-#### utils.NULL_BYTES32
-
-Constant: an empty bytes32 represention
-
-_Example:_
-
-```js
-console.log(utils.NULL_BYTES32);
-```
-
-#### utils.parseEth
-
-utils.**parseEth (value: String|Number|BN [, defaultUnit: String])** => weiValue: BN
-
-> parse an ether amount and return the value in wei
-> supported units: 'wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether' (or 'eth')
-> default unit 'wei'
-
-_Example:_
-
-```js
-console.log('5 gwei = ' + utils.parseEth('5 gwei') + 'wei');
-```
-
-#### utils.formatEth
-
-utils.**formatEth (weiAmount: BN|Number|String)** => etherAmount: String
-
-> return the display value of a wei amount in ether
-
-_Example:_
-
-```js
-console.log(
- '500000000 wei = ' + utils.formatEth('500000000')) + 'ether',
-);
-```
-
-#### utils.parseRLC
-
-utils.**parseRLC (value: String|Number|BN [, defaultUnit: String])** => nRlcValue: BN
-
-> parse a RLC amount and return the value in nRLC
-> supported units: 'nRLC', 'RLC'
-> default unit 'nRLC'
-
-_Example:_
-
-```js
-console.log('5 RLC = ' + utils.parseEth('5 RLC') + 'nRLC');
-```
-
-#### utils.formatRLC
-
-utils.**formatRLC (nRlcAmount: BN|Number|String)** => RlcAmount: String
-
-> return the display value of a nRLC amount in RLC
-
-_Example:_
-
-```js
-console.log('500000000 nRLC = ' + utils.formatRLC('500000000') + 'RLC');
-```
-
-#### utils.encodeTag
-
-utils.**encodeTag ([...tag: String])** => tag: Bytes32
-
-> encode human readable tag array to the blockchain format Bytes32
-
-_Example:_
-
-```js
-console.log(utils.encodeTag(['tee', 'gpu']));
-```
-
-#### utils.decodeTag
-
-utils.**decodeTag (tag: Bytes32)** => [...tag: String]
-
-> decode Bytes32 tag to human readable tag array
-
-_Example:_
-
-```js
-console.log(
- utils.decodeTag(
- '0x0000000000000000000000000000000000000000000000000000000000000001',
- ),
-);
-```
-
-#### utils.sumTags
-
-utils.**sumTags ([...tag: Bytes32])** => tag: Bytes32
-
-> sum Bytes32 tag array (allow to compute workerpool minimum required tag)
-
-_Example:_
-
-```js
-const appTag =
- '0x0000000000000000000000000000000000000000000000000000000000000100';
-const datasetTag =
- '0x0000000000000000000000000000000000000000000000000000000000000001';
-const requestTag =
- '0x0000000000000000000000000000000000000000000000000000000000000000';
-const workerpoolMinTag = utils.sumTags([appTag, datasetTag, requestTag]);
-console.log('workerpoolMinTag', workerpoolMinTag);
-```
-
-#### utils.decryptResult
-
-utils.**decryptResult ( encryptedZipFile: ArrayBuffer|Buffer, beneficiaryKey: String|Buffer)** => Promise < **decryptedZipFile: Buffer** >
-
-> decrypt en encrypted result with the beneficiary RSA Key.
-
-_Example:_
-
-```js
-const beneficaryKey = await loadBeneficiaryKey(); // somehow load the beneficiary RSA private key
-
-const response = await iexec.task.fetchResults(
- '0x5c959fd2e9ea2d5bdb965d7c2e7271c9cb91dd05b7bdcfa8204c34c52f8c8c19',
-);
-const encFileBuffer = await response.arrayBuffer();
-const decryptedFileBuffer = await utils.decryptResult(
- encFileBuffer,
- beneficaryKey,
-);
-const binary = new Blob([decryptedFileBuffer]);
-```
-
-#### utils.getSignerFromPrivateKey
-
-utils.**getSignerFromPrivateKey ( host: 'goerli'|'mainnet'|Url, privateKey: PrivateKey \[, options \] )** => SignerProvider
-
-> Returns a web3 SignerProvider compliant with `IExec`. Use this only for server side implementation.
->
-> _options:_
->
-> - `providers: Object` specify the option for provider backend when connected to public blockchain (`host: 'goerli'|'mainnet'`).
-> - `alchemy: String` [Alchemy](https://alchemyapi.io/) API Token
-> - `etherscan: String` [Etherscan](https://etherscan.io/) API Token
-> - `infura: String|{ projectId: String, projectSecret: String }` [INFURA](https://infura.io/) Project ID or ProjectID and Project Secret
-> - `quorum: Int` The number of backends that must agree (default: 2 for mainnet, 1 for testnets)
-> - `gasPrice: Uint256` specify the gasPrice to use for transactions
-> - `getTransactionCount: function(address, block) => Promise < nonce: HexString >` specify the function to be called to get the nonce of an account. `block` may be an integer number, or the string `"latest"`, `"earliest"` or `"pending"`.
-
-_Example:_
-
-```js
-const { IExec, utils } = require('iexec');
-const ethProvider = utils.getSignerFromPrivateKey(
- 'http://localhost:8545',
- '0x564a9db84969c8159f7aa3d5393c5ecd014fce6a375842a45b12af6677b12407',
-);
-const iexec = new IExec({
- ethProvider,
-});
-```
-
-### Types
-
-#### BN
-
-`BN` is instance of `bn.js` it allows big numbers manipulation in js (see [bn.js](https://www.npmjs.com/package/bn.js)).
-
-`BN` constructor can be imported from iexec:
-
-```js
-import { utils } from 'iexec';
-const { BN } = utils;
-```
-
-#### Address
-
-`Address` is a "0x" prefixed checksummed ethereum address. Any valid ethereum address can be used as argument of methods requiring `Address` (ENS is not supported).
-
-#### Bytes32
-
-`Bytes32` is a "0x" prefixed hexadecimal string representation of 32 bytes.
-
-#### TxHash
-
-`TxHash` is an ethereum transaction hash.
-
-#### Uint256
-
-`Uint256` is a decimal string representation of a 256 bit unsigned integer.
-
-Accepted:
-
-- Number
-- String
-- BN
-
-#### WeiAmount
-
-`WeiAmount` is a decimal string representation of a wei amount (wei is the smallest sub-division of ether: 1 ether = 1,000,000,000,000,000,000 wei).
-
-Accepted:
-
-- Number
-- String with optional unit (ex: `'1000000'`, `'0.01 ether'`)
- - accepted units: `ether` (`eth`), `finney`, `szabo`, `gwei`, `mwei`, `kwei`, `wei`
- - default unit: `wei`
-- BN
-
-#### NRlcAmount
-
-`NRlcAmount` is a decimal string representation of a nRLC (nano RLC) amount (nRLC is the smallest sub-division of RLC: 1 RLC = 1,000,000,000 RLC).
-
-Accepted:
-
-- Number
-- String with optional unit (ex: `'1000000'`, `'1000000 nRLC'`, `'0.01 RLC'`)
- - accepted units: `RCL`, `nRLC`
- - default unit: `nRLC`
-- BN
-
-#### Tag
-
-`Tag` is task tag representation. A Tag is the encoding of 256 flags under a bytes32.
-
-Accepted:
-
-- Bytes32 encoded tag (ex: `0x0000000000000000000000000000000000000000000000000000000000000001`)
-- Array of tags (ex: `['tee']`)
-
-#### Multiaddress
-
-`Multiaddress` is resource address representation [multiaddr](https://github.com/multiformats/js-multiaddr).
-
-Accepted:
-
-- url as string
-- multiaddr string representation
-- multiaddr buffer
-
-#### App
-
-`App` is an object representation of an app.
-
-```js
-{
- owner: Address,
- name: String,
- type: String, // only "DOCKER" is supported
- multiaddr: Multiaddress, // app image address
- checksum: Bytes32, // app image digest
- mrenclave: ?{ // optional for TEE apps only, specify the TEE protocol to use
- {
- provider: String, // only "SCONE" is supported
- version: String, // provider's protocol version
- entrypoint: String, // app entrypoint path
- heapSize: Number, // dedicated memory in bytes
- fingerprint: String // app tee fingerprint
- }
- },
-}
-```
-
-#### Dataset
-
-`Dataset` is an object representation of a dataset.
-
-```js
-{
- owner: Address,
- name: String,
- multiaddr: Multiaddress, // dataset file download address
- checksum: Bytes32 // sha256sum of the file
-}
-```
-
-#### Workerpool
-
-`Workerpool` is an object representation of a workerpool.
-
-```js
-{
- owner: Address,
- description: String
-}
-```
-
-#### Category
-
-`Category` is an object representation of a category.
-
-```js
-{
- name: String,
- description: String,
- workClockTimeRef: Uint256
-}
-```
-
-#### Apporder
-
-`Apporder` is an object representation of an apporder not signed.
-
-```js
-{
- app: Address,
- appprice: NRlcAmount, // price to pay per task
- volume: Uint256, // number of uses
- tag: Bytes32, // required encoded tags
- datasetrestrict: Address, // allowed dataset default any
- workerpoolrestrict: Address, // allowed workerpool default any
- requesterrestrict: Address // allowed requester default any
-}
-```
-
-#### SignedApporder
-
-`SignedApporder` is an object representation of a signed apporder.
-
-```js
-{
- app: Address,
- appprice: NRlcAmount, // price to pay per task
- volume: Uint256, // number of uses
- tag: Bytes32, // required encoded tags
- datasetrestrict: Address, // allowed dataset default any
- workerpoolrestrict: Address, // allowed workerpool default any
- requesterrestrict: Address // allowed requester default any
- salt: Bytes32, // random salt
- sign: HexString // owner sign
-}
-```
-
-#### Datasetorder
-
-`Datasetorder` is an object representation of a datasetorder not signed.
-
-```js
-{
- dataset: Address,
- datasetprice: NRlcAmount, // price to pay per task
- volume: Uint256, // number of uses
- tag: Bytes32, // required encoded tags
- apprestrict: Address, // allowed app default any
- workerpoolrestrict: Address, // allowed workerpool default any
- requesterrestrict: Address // allowed requester default any
-}
-```
-
-#### SignedDatasetorder
-
-`SignedApporder` is an object representation of a signed datasetorder.
-
-```js
-{
- dataset: Address,
- datasetprice: NRlcAmount, // price to pay per task
- volume: Uint256, // number of uses
- tag: Bytes32, // required encoded tags
- apprestrict: Address, // allowed app default any
- workerpoolrestrict: Address, // allowed workerpool default any
- requesterrestrict: Address // allowed requester default any
- salt: Bytes32, // random salt
- sign: HexString // owner sign
-}
-```
-
-#### Workerpoolorder
-
-`Workerpoolorder` is an object representation of a workerpoolorder not signed.
-
-```js
-{
- workerpool: Address,
- workerpoolprice: NRlcAmount,// price to pay per task
- volume: Uint256, // number of uses
- tag: Bytes32, // available encoded tags
- category: Uint256, // execution category id
- trust: Uint256, // offered execution trust level
- apprestrict: Address, // allowed app default any
- datasetrestrict: Address, // allowed dataset default any
- requesterrestrict: Address // allowed requester default any
-}
-```
-
-#### SignedWorkerpoolorder
-
-`SignedWorkerpoolorder` is an object representation of a signed workerpoolorder.
-
-```js
-{
- workerpool: Address,
- workerpoolprice: NRlcAmount,// price to pay per task
- volume: Uint256, // number of uses
- tag: Bytes32, // available encoded tags
- category: Uint256, // execution category id
- trust: Uint256, // offered execution trust level
- apprestrict: Address, // allowed app default any
- datasetrestrict: Address, // allowed dataset default any
- requesterrestrict: Address // allowed requester default any
- salt: Bytes32, // random salt
- sign: HexString // owner sign
-}
-```
-
-#### Requestorder
-
-`Requestorder` is an object representation of a requestorder not signed.
-
-```js
-{
- app: Address, // app to use
- appmaxprice: NRlcAmount, // max price to pay per task for the app
- dataset: Address, // dataset to use default none
- datasetmaxprice: NRlcAmount, // max price to pay per task for the app
- workerpool: Address, // workerpool to use default any
- workerpoolprice: NRlcAmount, // max price to pay per task for the app
- requester: Address, // paying address
- volume: Uint256, // number of task to execute
- tag: Bytes32, // required encoded tags
- category: Uint256, // execution category id
- trust: Uint256, // required execution trust level
- beneficary: Address, // execution beneficiary default requester
- callback: Address, // smart contract to call on task COMPLETED
- params: {
- iexec_args: String, // args to pass to the app
- iexec_input_files: String[], // array of url to use as input files
- iexec_result_encryption: Boolean, // must encrypt the result with beneficary key default false
- iexec_result_storage_provider: String, // storage provider ('ipfs' | 'dropbox') defaut 'ipfs'
- iexec_result_storage_proxy: String, // url of storage-proxy to use (defaut to iExec's storage proxy)
- iexec_developer_logger: Boolean, // enable app logging default false
- },
-}
-```
-
-#### SignedRequestorder
-
-`SignedRequestorder` is an object representation of a signed requestorder.
-
-```js
-{
- app: Address, // app to use
- appmaxprice: NRlcAmount, // max price to pay per task for the app
- dataset: Address, // dataset to use default none
- datasetmaxprice: NRlcAmount, // max price to pay per task for the app
- workerpool: Address, // workerpool to use default any
- workerpoolprice: NRlcAmount, // max price to pay per task for the app
- requester: Address, // paying address
- volume: Uint256, // number of task to execute
- tag: Bytes32, // required encoded tags
- category: Uint256, // execution category id
- trust: Uint256, // required execution trust level
- beneficary: Address, // execution beneficiary default requester
- callback: Address, // smart contract to call on task COMPLETED
- params: {
- iexec_args: String, // args to pass to the app
- iexec_input_files: String[], // array of url to use as input files
- iexec_result_encryption: Boolean, // must encrypt the result with beneficary key default false
- iexec_result_storage_provider: String, // storage provider ('ipfs' | 'dropbox') defaut 'ipfs'
- iexec_result_storage_proxy: String, // url of storage-proxy to use (defaut to iExec's storage proxy)
- iexec_developer_logger: Boolean, // enable app logging default false
- },
- salt: Bytes32, // random salt
- sign: HexString // requester sign
-}
-```
-
-### Errors
-
-iexec sdk use typed errors, errors constructors are accessible through import.
-
-```js
-import { errors } from 'iexec';
-const {
- BridgeError,
- ObjectNotFoundError,
- ValidationError,
- Web3ProviderError,
- Web3ProviderCallError,
- Web3ProviderSendError,
- Web3ProviderSignMessageError,
-} = errors;
-```
-
-#### BridgeError
-
-`BridgeError` is thrown when sending RLC between mainchain and sidechain fail before the value transfert confirmation.
-
-Specific properties:
-
-- `error.originalError`: the original exception
-- `error.sendTxHash`: the send transaction
-
-#### ObjectNotFoundError
-
-`ObjectNotFoundError` is thrown when trying to access an unexisting resource.
-
-Specific properties:
-
-- `error.objName`: type of object trying to access
-- `error.chainId`: chain id of the blockchain where the object is supposed to be
-- `error.objectId` : id used to find the object
-
-#### ValidationError
-
-`ValidationError` is thrown when a method is called with missing or unexpected parameters.
-
-#### Web3ProviderError
-
-`Web3ProviderError` encapsulate a web3 provider exception.
-
-Specific properties:
-
-- `error.originalError`: the original exception from the web3Provider.
-
-#### Web3ProviderCallError
-
-`Web3ProviderCallError` extends the `Web3ProviderError`, this `Error` is thrown when an exception is catched during a web3 call.
-
-Reasons:
-
-- network failure
-- unexpected args
-
-#### Web3ProviderSendError
-
-`Web3ProviderSendError` extends the `Web3ProviderError`, this `Error` is thrown when an exception is catched during a web3 send transaction.
-
-Reasons:
-
-- user denied tx signature
-- not enough gas
-- transaction revert
-
-#### Web3ProviderSignMessageError
-
-`Web3ProviderSignMessageError` extends the `Web3ProviderError`, this `Error` is thrown when an exception is catched during a web3 message signature.
-
-Reasons:
-
-- user denied message signature
-- method not supported by the web3 provider
-
-# iExec SDK CLI fork/spawn
-
-If your program is not written in javascript, your last option to use the SDK would be to spawn it as a separate process (sometimes called FORK operation). After each SDK run you should check the exit code returned by the SDK to know if the operation was successful or not `echo $?`:
-
-- 0 = successful
-- 1 = error
-
-Finally, you could choose to parse the SDK stdout/stderr to access more information. Use the global option --raw to get json formatted output. ex:
-
-- `iexec wallet show --raw &> out.txt`
-- `iexec wallet show --raw | jq .`
-
-Warning:
+## Resources
-- The stdout/stderr is subject to changes (this is what makes this solution brittle)
-- The node and docker version have some slight differences in their stdout/stderr
+- [iExec main documentation](https://docs.iex.ec/for-developers/)
+- [The iExec Dapp Store](https://dapps.iex.ec)
+- [The iExec Marketplace](https://market.iex.ec)
+- [The iExec Explorer](https://explorer.iex.ec)
+- [The iExec Workerpool registry](https://pools.iex.ec)
+- [The RLC faucet](https://faucet.iex.ec)
diff --git a/cookbook.md b/cookbook.md
deleted file mode 100644
index 5d8f577e..00000000
--- a/cookbook.md
+++ /dev/null
@@ -1,66 +0,0 @@
-# iExec Cookbook
-
-## Encrypted dataset creation
-
-```js
-
-// read the original file
-// exemple with FileReader in browser
-const datasetFileBytes = await new Promise((resolve, reject) => {
- const fileReader = new FileReader();
- fileReader.readAsArrayBuffer(file);
- fileReader.onload = e => resolve(e.target.result);
- fileReader.onerror = () =>
- reject(Error(`Failed to read file: ${fileReader.error}`));
- fileReader.onabort = () => reject(Error(`Failed to read file: aborted`));
-});
-
-// encrypt the file
-const key = iexec.dataset.generateEncryptionKey();
-const encryptedFileBuffer = await iexec.dataset.encrypt(datasetFileBytes, key);
-
-// compute the encrypted file checksum
-const datasetChecksum = await iexec.dataset.computeChecksum(encryptedFileBuffer);
-
-
-// upload the encrypted file and get a direct download uri (formated as standard url or multiaddr)
-// exemple with ipfs package
-const multiaddr = await new Promise((resolve, reject) => {
- try {
- const uploadResult = await ipfs.add(encrypted);
- const { cid } = uploadResult;
- return = `/ipfs/${cid.toSting()}`;
- } catch (e) {
- reject(Error(`Failed to upload encrypted file: ${e}`));
- }
-})
-
-// get the dataset checksum
-const checksum = await iexec.dataset.computeChecksum(encryptedFileBuffer);
-
-
-// deploy the dataset on the blockchain
-const { address } = await iexec.dataset.deployDataset({
- owner: await iexec.wallet.getAddress(), // set the current wallet as owner
- name: file.name,
- multiaddr,
- checksum
-});
-
-// push the dataset decryption key to the SMS
-await iexec.dataset.pushDatasetSecret(datasetAddress, key);
-
-// define usage policy in a datsetorder
-const datasetorder = await iexec.order.signDatasetorder(
- await iexec.order.createDatasetorder({
- dataset: address,
- tag: ['tee'], // use tag tee to ensure your dataset will never be used by apps running outside a Trusted Execution Environment
- datasetprice: 0, // you may want to receive an income when someone use your dataset
- volume: 1000000000, // total number of use of the dataset order
- apprestrict: 'my-trusted-app.eth' // restrict the usage of your dataset to a trusted app (no apprestrict will let any app being able to use your dataset and leave your data unprotected against malicious apps)
- })
-);
-
-// publish the datasetorder to the marketplace
-await iexec.order.publishDatasetorder(datasetorder);
-```
diff --git a/docs/.nojekyll b/docs/.nojekyll
new file mode 100644
index 00000000..e2ac6616
--- /dev/null
+++ b/docs/.nojekyll
@@ -0,0 +1 @@
+TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
\ No newline at end of file
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 00000000..1c848484
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,192 @@
+iexec / [Exports](modules.md)
+
+[< Back home](../README.md)
+
+# iExec SDK Library API
+
+[](https://drone.iex.ec/iExecBlockchainComputing/iexec-sdk)
+[](https://www.npmjs.com/package/iexec) [](https://www.npmjs.com/package/iexec) [](LICENSE)
+
+Use the iExec decentralised marketplace for off-chain computing in your dapp.
+
+## Content
+
+- [Install](#install)
+- [Quick start](#quick-start)
+- [API](#api)
+ - [IExecModules](#iexecmodules)
+ - [utils](#utils)
+ - [errors](#errors)
+- [Live demos](#live-demos)
+
+---
+
+# Install
+
+Install iexec sdk
+
+```bash
+npm install iexec
+```
+
+---
+
+# Quick start
+
+## Front-end integration
+
+```js
+import { IExec } from 'iexec';
+
+// connect injected provider
+const iexec = new IExec({ ethProvider: window.ethereum });
+```
+
+## Back-end integration
+
+```js
+const { IExec, utils } = require('iexec');
+
+const { PRIVATE_KEY } = process.env;
+
+const ethProvider = utils.getSignerFromPrivateKey(
+ 'http://localhost:8545', // blockchain node URL
+ PRIVATE_KEY,
+);
+const iexec = new IExec({
+ ethProvider,
+});
+```
+
+---
+
+# API
+
+## IExecModules
+
+IExec SDK is splitted into [IExecModule](./classes/IExecModule.md)s, each providing a set of methods relatives to a specific field.
+
+Additionaly the [IExec](./classes/IExec.md) module exposes all the following listed modules under the corresponding namespace.
+
+- [IExecAccountModule](./classes/IExecAccountModule.md) exposes **account** methods
+- [IExecAppModule](./classes/IExecAppModule.md) exposes **app** methods
+- [IExecDatasetModule](./classes/IExecDatasetModule.md) exposes **dataset** methods
+- [IExecDealModule](./classes/IExecDealModule.md) exposes **deal** methods
+- [IExecENSModule](./classes/IExecENSModule.md) exposes **ENS** methods
+- [IExecHubModule](./classes/IExecHubModule.md) exposes **hub** methods
+- [IExecNetworkModule](./classes/IExecNetworkModule.md) exposes **network** methods
+- [IExecOrderModule](./classes/IExecOrderModule.md) exposes **order** methods
+- [IExecOrderbookModule](./classes/IExecOrderbookModule.md) exposes **orderbook** methods
+- [IExecResultModule](./classes/IExecResultModule.md) exposes **result** methods
+- [IExecStorageModule](./classes/IExecStorageModule.md) exposes **storage** methods
+- [IExecTaskModule](./classes/IExecTaskModule.md) exposes **task** methods
+- [IExecWalletModule](./classes/IExecWalletModule.md) exposes **wallet** methods
+- [IExecWorkerpoolModule](./classes/IExecWorkerpoolModule.md) exposes **workerpool** methods
+
+### Imports
+
+As your app won't probably use all the features, you may want to import only the modules you need.
+
+Each module is available as an independant package under `iexec/MODULE_NAME` and is exported in the umbrella package.
+
+_example:_
+
+- import from module package
+
+```js
+import IExecWalletModule from 'iexec/IExecWalletModule';
+```
+
+- import from umbrella
+
+```js
+import { IExecWalletModule } from 'iexec';
+```
+
+### Usage
+
+[IExecModule](./classes/IExecModule.md)s are instancied with an [IExecConfig](./classes/IExecConfig.md) providing the configuration to access to a specific instance of the iExec platform.
+
+Once created, an [IExecConfig](./classes/IExecConfig.md) can be shared with any [IExecModule](./classes/IExecModule.md).
+
+_example:_
+
+- standard usage
+
+```js
+import IExecConfig from 'iexec/IExecConfig';
+
+import IExecWalletModule from 'iexec/IExecWalletModule';
+import IExecAccountModule from 'iexec/IExecAccountModule';
+
+// create the config once for the target iExec instance
+const config = new IExecConfig({ ethProvider: window.ethereum });
+
+// share it with all the modules
+const wallet = IExecWalletModule.fromConfig(config);
+const account = IExecAccountModule.fromConfig(config);
+```
+
+- reuse instancied module configuration
+
+```js
+import IExecWalletModule from 'iexec/IExecWalletModule';
+// some IExecModule instance
+import iexecModule from './my-module';
+
+// IExecModules expose their IExecConfig under config
+const wallet = IExecWalletModule.fromConfig(iexecModule.config);
+```
+
+- quick instanciation (shorter but not recommanded)
+
+```js
+import IExecWalletModule from 'iexec/IExecWalletModule';
+
+// the IExecConfig step can be skipped
+const wallet = new IExecWalletModule({ ethProvider: window.ethereum });
+```
+
+## utils
+
+The [utils](./modules/utils.md) namespace exposes some utility methods.
+
+_example_:
+
+```js
+import utils from 'iexec/utils';
+```
+
+Or
+
+```js
+import { utils } from 'iexec';
+```
+
+## errors
+
+The [errors](./modules/errors.md) namespace exposes the errors thrown by the library, use them if you want specific error handling.
+
+_example_:
+
+```js
+import errors from 'iexec/errors';
+```
+
+Or
+
+```js
+import { errors } from 'iexec';
+```
+
+---
+
+# Live demos
+
+- [Buy computation](https://codesandbox.io/embed/876r7?fontsize=14&hidenavigation=1&theme=dark)
+- [Deploy and sell application](https://codesandbox.io/embed/l4hh4?fontsize=14&hidenavigation=1&theme=dark)
+- [Deploy and sell dataset](https://codesandbox.io/embed/micsl?fontsize=14&hidenavigation=1&theme=dark)
+
+---
+
+[< Back home](../README.md)
diff --git a/docs/classes/IExec.md b/docs/classes/IExec.md
new file mode 100644
index 00000000..3cc12739
--- /dev/null
+++ b/docs/classes/IExec.md
@@ -0,0 +1,272 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExec
+
+# Class: IExec
+
+module exposing all the iExec SDK modules
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExec`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExec.md#constructor)
+
+### Properties
+
+- [account](IExec.md#account)
+- [app](IExec.md#app)
+- [config](IExec.md#config)
+- [dataset](IExec.md#dataset)
+- [deal](IExec.md#deal)
+- [ens](IExec.md#ens)
+- [hub](IExec.md#hub)
+- [network](IExec.md#network)
+- [order](IExec.md#order)
+- [orderbook](IExec.md#orderbook)
+- [result](IExec.md#result)
+- [storage](IExec.md#storage)
+- [task](IExec.md#task)
+- [wallet](IExec.md#wallet)
+- [workerpool](IExec.md#workerpool)
+
+### Methods
+
+- [fromConfig](IExec.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExec**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### account
+
+• **account**: [`IExecAccountModule`](IExecAccountModule.md)
+
+account module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L24)
+
+___
+
+### app
+
+• **app**: [`IExecAppModule`](IExecAppModule.md)
+
+app module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:28](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L28)
+
+___
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+___
+
+### dataset
+
+• **dataset**: [`IExecDatasetModule`](IExecDatasetModule.md)
+
+dataset module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:32](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L32)
+
+___
+
+### deal
+
+• **deal**: [`IExecDealModule`](IExecDealModule.md)
+
+deal module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:36](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L36)
+
+___
+
+### ens
+
+• **ens**: [`IExecENSModule`](IExecENSModule.md)
+
+ens module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:40](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L40)
+
+___
+
+### hub
+
+• **hub**: [`IExecHubModule`](IExecHubModule.md)
+
+hub module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:44](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L44)
+
+___
+
+### network
+
+• **network**: [`IExecNetworkModule`](IExecNetworkModule.md)
+
+network module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:48](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L48)
+
+___
+
+### order
+
+• **order**: [`IExecOrderModule`](IExecOrderModule.md)
+
+order module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:52](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L52)
+
+___
+
+### orderbook
+
+• **orderbook**: [`IExecOrderbookModule`](IExecOrderbookModule.md)
+
+orderbook module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:56](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L56)
+
+___
+
+### result
+
+• **result**: [`IExecResultModule`](IExecResultModule.md)
+
+result module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:60](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L60)
+
+___
+
+### storage
+
+• **storage**: [`IExecStorageModule`](IExecStorageModule.md)
+
+storage module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:64](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L64)
+
+___
+
+### task
+
+• **task**: [`IExecTaskModule`](IExecTaskModule.md)
+
+task module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:68](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L68)
+
+___
+
+### wallet
+
+• **wallet**: [`IExecWalletModule`](IExecWalletModule.md)
+
+wallet module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:72](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L72)
+
+___
+
+### workerpool
+
+• **workerpool**: [`IExecWorkerpoolModule`](IExecWorkerpoolModule.md)
+
+workerpool module
+
+#### Defined in
+
+[src/lib/IExec.d.ts:76](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExec.d.ts#L76)
+
+## Methods
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecAccountModule.md b/docs/classes/IExecAccountModule.md
new file mode 100644
index 00000000..662c9937
--- /dev/null
+++ b/docs/classes/IExecAccountModule.md
@@ -0,0 +1,209 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecAccountModule
+
+# Class: IExecAccountModule
+
+module exposing account methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecAccountModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecAccountModule.md#constructor)
+
+### Properties
+
+- [config](IExecAccountModule.md#config)
+
+### Methods
+
+- [checkBalance](IExecAccountModule.md#checkbalance)
+- [checkBridgedBalance](IExecAccountModule.md#checkbridgedbalance)
+- [deposit](IExecAccountModule.md#deposit)
+- [withdraw](IExecAccountModule.md#withdraw)
+- [fromConfig](IExecAccountModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecAccountModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### checkBalance
+
+▸ **checkBalance**(`address`): `Promise`<{ `locked`: `BN` ; `stake`: `BN` }\>
+
+check the account balance of specified address (stake is availlable nRLC, locked is escowed nRLC)
+
+example:
+```js
+const balance = await checkBalance(ethAddress);
+console.log('Nano RLC staked:', balance.stake.toString());
+console.log('Nano RLC locked:', balance.locked.toString());
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `locked`: `BN` ; `stake`: `BN` }\>
+
+#### Defined in
+
+[src/lib/IExecAccountModule.d.ts:40](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAccountModule.d.ts#L40)
+
+___
+
+### checkBridgedBalance
+
+▸ **checkBridgedBalance**(`address`): `Promise`<{ `locked`: `BN` ; `stake`: `BN` }\>
+
+check the account balance on bridged chain of specified address ie: when connected to mainnet, check the account ballance on bellecour
+example:
+```js
+const balance = await checkBridgedBalance(ethAddress);
+console.log('Nano RLC staked:', balance.stake.toString());
+console.log('Nano RLC locked:', balance.locked.toString());
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `locked`: `BN` ; `stake`: `BN` }\>
+
+#### Defined in
+
+[src/lib/IExecAccountModule.d.ts:50](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAccountModule.d.ts#L50)
+
+___
+
+### deposit
+
+▸ **deposit**(`amount`): `Promise`<{ `amount`: `BN` ; `txHash`: `string` }\>
+
+deposit some nRLC (1 nRLC = 1*10^-9 RLC) from user wallet to user account
+
+example:
+```js
+const { amount, txHash } = await deposit('1000000000');
+console.log('Deposited:', amount);
+console.log('tx:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `amount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<{ `amount`: `BN` ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecAccountModule.d.ts:18](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAccountModule.d.ts#L18)
+
+___
+
+### withdraw
+
+▸ **withdraw**(`amount`): `Promise`<{ `amount`: `BN` ; `txHash`: `string` }\>
+
+withdraw some nRLC (1 nRLC = 1*10^-9 RLC) from user account to user wallet
+
+example:
+```js
+const { amount, txHash } = await iexec.account.withdraw('1000000000');
+console.log('Withdrawn:', amount);
+console.log('tx:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `amount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<{ `amount`: `BN` ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecAccountModule.d.ts:29](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAccountModule.d.ts#L29)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecAppModule.md b/docs/classes/IExecAppModule.md
new file mode 100644
index 00000000..beafad69
--- /dev/null
+++ b/docs/classes/IExecAppModule.md
@@ -0,0 +1,224 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecAppModule
+
+# Class: IExecAppModule
+
+module exposing app methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecAppModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecAppModule.md#constructor)
+
+### Properties
+
+- [config](IExecAppModule.md#config)
+
+### Methods
+
+- [countUserApps](IExecAppModule.md#countuserapps)
+- [deployApp](IExecAppModule.md#deployapp)
+- [showApp](IExecAppModule.md#showapp)
+- [showUserApp](IExecAppModule.md#showuserapp)
+- [fromConfig](IExecAppModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecAppModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### countUserApps
+
+▸ **countUserApps**(`userAddress`): `Promise`<`BN`\>
+
+count the apps owned by an address.
+
+example:
+```js
+const count = await countUserApps(userAddress);
+console.log('app count:', count);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `userAddress` | `string` |
+
+#### Returns
+
+`Promise`<`BN`\>
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:127](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L127)
+
+___
+
+### deployApp
+
+▸ **deployApp**(`app`): `Promise`<{ `address`: `string` ; `txHash`: `string` }\>
+
+deploy an app contract on the blockchain
+
+example:
+```js
+const { address } = await deployApp({
+ owner: address,
+ name: 'My app',
+ type: 'DOCKER',
+ multiaddr: 'registry.hub.docker.com/iexechub/vanityeth:1.1.1',
+ checksum: '0x00f51494d7a42a3c1c43464d9f09e06b2a99968e3b978f6cd11ab3410b7bcd14',
+});
+console.log('deployed at', address);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `app` | `Object` | - |
+| `app.checksum` | `string` | app image digest |
+| `app.mrenclave?` | `Object` | optional for TEE apps only, specify the TEE protocol to use |
+| `app.mrenclave.entrypoint` | `string` | app entrypoint path |
+| `app.mrenclave.fingerprint` | `string` | app tee fingerprint |
+| `app.mrenclave.heapSize` | `number` | dedicated memory in bytes |
+| `app.mrenclave.provider` | `string` | only "SCONE" is supported |
+| `app.mrenclave.version` | `string` | provider's protocol version |
+| `app.multiaddr` | [`Multiaddress`](../modules/internal_.md#multiaddress) | app image address |
+| `app.name` | `string` | a name for the app |
+| `app.owner` | `string` | the app owner |
+| `app.type` | `string` | only 'DOCKER' is supported |
+
+#### Returns
+
+`Promise`<{ `address`: `string` ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:61](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L61)
+
+___
+
+### showApp
+
+▸ **showApp**(`appAddress`): `Promise`<{ `app`: [`App`](../interfaces/internal_.App.md) ; `objAddress`: `string` }\>
+
+show a deployed app details
+
+example:
+```js
+const { app } = await showApp('0xb9b56f1c78f39504263835342e7affe96536d1ea');
+console.log('app:', app);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `appAddress` | `string` |
+
+#### Returns
+
+`Promise`<{ `app`: [`App`](../interfaces/internal_.App.md) ; `objAddress`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:117](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L117)
+
+___
+
+### showUserApp
+
+▸ **showUserApp**(`index`, `address`): `Promise`<{ `app`: [`App`](../interfaces/internal_.App.md) ; `objAddress`: `string` }\>
+
+show deployed app details by index for specified user user
+
+example:
+```js
+const { app } = await showUserApp(0, userAddress);
+console.log('app:', app);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `index` | [`BNish`](../modules/internal_.md#bnish) |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `app`: [`App`](../interfaces/internal_.App.md) ; `objAddress`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:137](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L137)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecConfig.md b/docs/classes/IExecConfig.md
new file mode 100644
index 00000000..02733a39
--- /dev/null
+++ b/docs/classes/IExecConfig.md
@@ -0,0 +1,248 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecConfig
+
+# Class: IExecConfig
+
+configuration for IExecModule
+
+example:
+```js
+// create the configurtion
+const config = new IExecConfig({ ethProvider: window.ethereum });
+
+// instanciate iExec SDK
+const iexec = IExec.fromConfig(config);
+
+// or instanciate IExecModules sharing the same configuration
+const account = IExecAccountModule.fromConfig(config);
+const wallet = IExecWalletModule.fromConfig(config);
+```
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecConfig.md#constructor)
+
+### Methods
+
+- [resolveBridgeAddress](IExecConfig.md#resolvebridgeaddress)
+- [resolveBridgedContractsClient](IExecConfig.md#resolvebridgedcontractsclient)
+- [resolveChainId](IExecConfig.md#resolvechainid)
+- [resolveContractsClient](IExecConfig.md#resolvecontractsclient)
+- [resolveEnsPublicResolverAddress](IExecConfig.md#resolveenspublicresolveraddress)
+- [resolveEnterpriseContractsClient](IExecConfig.md#resolveenterprisecontractsclient)
+- [resolveIexecGatewayURL](IExecConfig.md#resolveiexecgatewayurl)
+- [resolveIpfsGatewayURL](IExecConfig.md#resolveipfsgatewayurl)
+- [resolveResultProxyURL](IExecConfig.md#resolveresultproxyurl)
+- [resolveSmsURL](IExecConfig.md#resolvesmsurl)
+- [resolveStandardContractsClient](IExecConfig.md#resolvestandardcontractsclient)
+
+## Constructors
+
+### constructor
+
+• **new IExecConfig**(`args`, `options?`)
+
+Create an IExecConfig instance consumable by IExecModules
+
+example:
+
+- using injected provider client side
+
+```js
+const config = new IExecConfig({ ethProvider: window.ethereum });
+```
+
+- using a private key server side
+
+```js
+const { getSignerFromPrivateKey } = require('iexec/utils');
+const config = new IExecConfig({ ethProvider: getSignerFromPrivateKey('mainnet', privateKey) });
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `args` | [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:127](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L127)
+
+## Methods
+
+### resolveBridgeAddress
+
+▸ **resolveBridgeAddress**(): `Promise`<`string`\>
+
+resolve the current bridge contract address
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:167](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L167)
+
+___
+
+### resolveBridgedContractsClient
+
+▸ **resolveBridgedContractsClient**(): `Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+resolve the current bridged IExecContractsClient
+
+#### Returns
+
+`Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:139](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L139)
+
+___
+
+### resolveChainId
+
+▸ **resolveChainId**(): `Promise`<`number`\>
+
+resolve the current chainId
+
+#### Returns
+
+`Promise`<`number`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:131](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L131)
+
+___
+
+### resolveContractsClient
+
+▸ **resolveContractsClient**(): `Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+resolve the current IExecContractsClient
+
+#### Returns
+
+`Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:135](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L135)
+
+___
+
+### resolveEnsPublicResolverAddress
+
+▸ **resolveEnsPublicResolverAddress**(): `Promise`<`string`\>
+
+resolve the current ENS public resolver contract address
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:171](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L171)
+
+___
+
+### resolveEnterpriseContractsClient
+
+▸ **resolveEnterpriseContractsClient**(): `Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+resolve the current enterprise IExecContractsClient
+
+#### Returns
+
+`Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:147](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L147)
+
+___
+
+### resolveIexecGatewayURL
+
+▸ **resolveIexecGatewayURL**(): `Promise`<`string`\>
+
+resolve the current IExec market URL
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:159](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L159)
+
+___
+
+### resolveIpfsGatewayURL
+
+▸ **resolveIpfsGatewayURL**(): `Promise`<`string`\>
+
+resolve the current IPFS gateway URL
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:163](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L163)
+
+___
+
+### resolveResultProxyURL
+
+▸ **resolveResultProxyURL**(): `Promise`<`string`\>
+
+resolve the current result proxy URL
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:155](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L155)
+
+___
+
+### resolveSmsURL
+
+▸ **resolveSmsURL**(): `Promise`<`string`\>
+
+resolve the current SMS URL
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:151](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L151)
+
+___
+
+### resolveStandardContractsClient
+
+▸ **resolveStandardContractsClient**(): `Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+resolve the current standard IExecContractsClient
+
+#### Returns
+
+`Promise`<[`IExecContractsClient`](internal_.IExecContractsClient.md)\>
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:143](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L143)
diff --git a/docs/classes/IExecDatasetModule.md b/docs/classes/IExecDatasetModule.md
new file mode 100644
index 00000000..6648e7ae
--- /dev/null
+++ b/docs/classes/IExecDatasetModule.md
@@ -0,0 +1,387 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecDatasetModule
+
+# Class: IExecDatasetModule
+
+module exposing dataset methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecDatasetModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecDatasetModule.md#constructor)
+
+### Properties
+
+- [config](IExecDatasetModule.md#config)
+
+### Methods
+
+- [checkDatasetSecretExists](IExecDatasetModule.md#checkdatasetsecretexists)
+- [computeEncryptedFileChecksum](IExecDatasetModule.md#computeencryptedfilechecksum)
+- [countUserDatasets](IExecDatasetModule.md#countuserdatasets)
+- [deployDataset](IExecDatasetModule.md#deploydataset)
+- [encrypt](IExecDatasetModule.md#encrypt)
+- [generateEncryptionKey](IExecDatasetModule.md#generateencryptionkey)
+- [pushDatasetSecret](IExecDatasetModule.md#pushdatasetsecret)
+- [showDataset](IExecDatasetModule.md#showdataset)
+- [showUserDataset](IExecDatasetModule.md#showuserdataset)
+- [fromConfig](IExecDatasetModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecDatasetModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### checkDatasetSecretExists
+
+▸ **checkDatasetSecretExists**(`datasetAddress`): `Promise`<`boolean`\>
+
+check if a the dataset secret exists in the Secret Management Service
+
+example:
+```js
+const isSecretSet = await checkDatasetSecretExists(datasetAddress);
+console.log('secret exists:', isSecretSet);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetAddress` | `string` |
+
+#### Returns
+
+`Promise`<`boolean`\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:175](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L175)
+
+___
+
+### computeEncryptedFileChecksum
+
+▸ **computeEncryptedFileChecksum**(`encryptedFile`): `Promise`<`string`\>
+
+compute the encrypted dataset file's checksum required for dataset deployment
+
+the dataset checksum is the encrypted file checksum, use this method on the encrypted file but DO NOT use it on the original dataset file
+
+_NB_:
+- the dataset checksum is the sha256sum of the encrypted dataset file
+- the checksum is used in the computation workflow to ensure the dataset's integrity
+
+example:
+```js
+const encryptedDataset = await encrypt(
+ datasetFile,
+ encryptionKey,
+);
+const checksum = await computeEncryptedFileChecksum(
+ encryptedDataset,
+);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `encryptedFile` | `Buffer` \| `Uint8Array` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:163](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L163)
+
+___
+
+### countUserDatasets
+
+▸ **countUserDatasets**(`userAddress`): `Promise`<`BN`\>
+
+count the datasets owned by an address.
+
+example:
+```js
+const count = await countUserDatasets(userAddress);
+console.log('dataset count:', count);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `userAddress` | `string` |
+
+#### Returns
+
+`Promise`<`BN`\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:91](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L91)
+
+___
+
+### deployDataset
+
+▸ **deployDataset**(`dataset`): `Promise`<{ `address`: `string` ; `txHash`: `string` }\>
+
+deploy a dataset contract on the blockchain
+
+example:
+```js
+const { address } = await deployDataset({
+ owner: address,
+ name: 'cat.jpeg',
+ multiaddr: '/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u',
+ checksum: '0x84a3f860d54f3f5f65e91df081c8d776e8bcfb5fbc234afce2f0d7e9d26e160d',
+});
+console.log('deployed at', address);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `dataset` | `Object` | - |
+| `dataset.checksum` | `string` | sha256sum of the file |
+| `dataset.multiaddr` | [`Multiaddress`](../modules/internal_.md#multiaddress) | dataset file download address |
+| `dataset.name` | `string` | a name for the dataset |
+| `dataset.owner` | `string` | the dataset owner |
+
+#### Returns
+
+`Promise`<{ `address`: `string` ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:52](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L52)
+
+___
+
+### encrypt
+
+▸ **encrypt**(`datasetFile`, `encyptionKey`): `Promise`<`Buffer`\>
+
+encrypt the dataset file with the specified key using AES-256-CBC
+
+_NB_:
+- the supplied key must be 256 bits base64 encoded
+- DO NOT leak the key and DO NOT use the same key for encrypting different datasets
+
+example:
+```js
+// somehow load the dataset file
+const datasetFile = await readDatasetAsArrayBuffer();
+// generate a key DO NOT leak this key
+const encryptionKey = generateEncryptionKey();
+// encrypt
+const encryptedDataset = await encrypt(
+ datasetFile,
+ encryptionKey,
+);
+// the encrypted binary can be shared
+const binary = new Blob([encryptedDataset]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetFile` | `Buffer` \| `Uint8Array` |
+| `encyptionKey` | `string` |
+
+#### Returns
+
+`Promise`<`Buffer`\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:139](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L139)
+
+___
+
+### generateEncryptionKey
+
+▸ **generateEncryptionKey**(): `string`
+
+generate an encryption key to encrypt a dataset
+
+_NB_: this method returns a base64 encoded 256 bits key
+
+example:
+```js
+const encryptionKey = generateEncryptionKey();
+console.log('encryption key:', encryptionKey);
+```
+
+#### Returns
+
+`string`
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:116](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L116)
+
+___
+
+### pushDatasetSecret
+
+▸ **pushDatasetSecret**(`datasetAddress`, `encryptionKey`): `Promise`<`boolean`\>
+
+**ONLY DATASET OWNER**
+
+push the dataset's encryption key to the Secret Management Service
+
+**WARNING**: pushed secrets CAN NOT be updated
+
+example:
+```js
+const pushed = await pushDatasetSecret(datasetAddress, encryptionKey);
+console.log('secret pushed:', pushed);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetAddress` | `string` |
+| `encryptionKey` | `string` |
+
+#### Returns
+
+`Promise`<`boolean`\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:189](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L189)
+
+___
+
+### showDataset
+
+▸ **showDataset**(`datasetAddress`): `Promise`<{ `dataset`: [`Dataset`](../interfaces/internal_.Dataset.md) ; `objAddress`: `string` }\>
+
+show a deployed dataset details
+
+example:
+```js
+const { dataset } = await showDataset('0xb9b56f1c78f39504263835342e7affe96536d1ea');
+console.log('dataset:', dataset);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetAddress` | `string` |
+
+#### Returns
+
+`Promise`<{ `dataset`: [`Dataset`](../interfaces/internal_.Dataset.md) ; `objAddress`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:79](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L79)
+
+___
+
+### showUserDataset
+
+▸ **showUserDataset**(`index`, `address`): `Promise`<{ `dataset`: [`Dataset`](../interfaces/internal_.Dataset.md) ; `objAddress`: `string` }\>
+
+show deployed dataset details by index for specified user user
+
+example:
+```js
+const { dataset } = await showUserDataset(0, userAddress);
+console.log('dataset:', dataset);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `index` | [`BNish`](../modules/internal_.md#bnish) |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `dataset`: [`Dataset`](../interfaces/internal_.Dataset.md) ; `objAddress`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:101](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L101)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecDealModule.md b/docs/classes/IExecDealModule.md
new file mode 100644
index 00000000..efe765c1
--- /dev/null
+++ b/docs/classes/IExecDealModule.md
@@ -0,0 +1,387 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecDealModule
+
+# Class: IExecDealModule
+
+module exposing deal methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecDealModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecDealModule.md#constructor)
+
+### Properties
+
+- [config](IExecDealModule.md#config)
+
+### Methods
+
+- [claim](IExecDealModule.md#claim)
+- [computeTaskId](IExecDealModule.md#computetaskid)
+- [fetchDealsByApporder](IExecDealModule.md#fetchdealsbyapporder)
+- [fetchDealsByDatasetorder](IExecDealModule.md#fetchdealsbydatasetorder)
+- [fetchDealsByRequestorder](IExecDealModule.md#fetchdealsbyrequestorder)
+- [fetchDealsByWorkerpoolorder](IExecDealModule.md#fetchdealsbyworkerpoolorder)
+- [fetchRequesterDeals](IExecDealModule.md#fetchrequesterdeals)
+- [obsDeal](IExecDealModule.md#obsdeal)
+- [show](IExecDealModule.md#show)
+- [fromConfig](IExecDealModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecDealModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### claim
+
+▸ **claim**(`dealid`): `Promise`<{ `claimed`: `Record`<`number`, `string`\> ; `transactions`: { `txHash`: `string` ; `type`: `string` }[] }\>
+
+claim all the failed task from a deal
+
+depending the number and the status of task to claim, this may involve several transactions in order to fit in the blockchain gasLimit per block. (for example a 10_000_000 gas block size allows to claim 180 initialized task or 40 non-initialized tasks in one block)
+
+example:
+```js
+const { claimed, transactions } = await claim(dealid);
+console.log(`transaction count ${transactions.length}`);
+Object.entries(claimed).forEach(([idx, taskid]) => {
+ console.log(`claimed task: idx ${idx} taskid ${taskid}`);
+});
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `dealid` | `string` |
+
+#### Returns
+
+`Promise`<{ `claimed`: `Record`<`number`, `string`\> ; `transactions`: { `txHash`: `string` ; `type`: `string` }[] }\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:222](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L222)
+
+___
+
+### computeTaskId
+
+▸ **computeTaskId**(`dealid`, `taskIdx`): `Promise`<`string`\>
+
+compute the taskid of the task at specified index of specified deal.
+
+example:
+```js
+const taskid = await computeTaskId('0x4246d0ddf4c4c728cedd850890ee9a6781a88e5d3c46098c0774af3b7963879b', 0);
+console.log('taskid:', taskid)
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `dealid` | `string` |
+| `taskIdx` | [`BNish`](../modules/internal_.md#bnish) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:207](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L207)
+
+___
+
+### fetchDealsByApporder
+
+▸ **fetchDealsByApporder**(`apporderHash`): `Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+fetch the latest deals sealed with a specified apporder.
+
+_NB_: this method can return a subset of the complete result set, in this case, a `more()` method is also returned and enable getting the next subset.
+
+example:
+```js
+const { deals, count } = await fetchDealsByApporder('0x7fbbbf7ab1c4571111db8d4e3f7ba3fe29c1eb916453f9fbdce4b426e05cbbfb');
+console.log('deals count:', count);
+console.log('last deal:', deals[0]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `apporderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:261](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L261)
+
+___
+
+### fetchDealsByDatasetorder
+
+▸ **fetchDealsByDatasetorder**(`datasetorderHash`): `Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+fetch the latest deals sealed with a specified datasetorder.
+
+_NB_: this method can return a subset of the complete result set, in this case, a `more()` method is also returned and enable getting the next subset.
+
+example:
+```js
+const { deals, count } = await fetchDealsByDatasetorder('0x60a810f4876fc9173bac74f7cff3c4cdc86f4aff66a72c2011f6e33e0dc8d3d0');
+console.log('deals count:', count);
+console.log('last deal:', deals[0]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetorderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:274](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L274)
+
+___
+
+### fetchDealsByRequestorder
+
+▸ **fetchDealsByRequestorder**(`requestorderHash`): `Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+fetch the latest deals sealed with a specified requestorder.
+
+_NB_: this method can return a subset of the complete result set, in this case, a `more()` method is also returned and enable getting the next subset.
+
+example:
+```js
+const { deals, count } = await fetchDealsByRequestorder('0x5de0bc9e5604685e96e4031e3815dac55648254fd7b033b59b78c49de8b384b0');
+console.log('deals count:', count);
+console.log('last deal:', deals[0]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requestorderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:304](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L304)
+
+___
+
+### fetchDealsByWorkerpoolorder
+
+▸ **fetchDealsByWorkerpoolorder**(`workerpoolorderHash`): `Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+fetch the latest deals sealed with a specified workerpoolorder.
+
+_NB_: this method can return a subset of the complete result set, in this case, a `more()` method is also returned and enable getting the next subset.
+
+example:
+```js
+const { deals, count } = await fetchDealsByWorkerpoolorder('0x2887965ec57500471593852e10e97e9e99ea81a9a0402be68a24683d6cd2b697');
+console.log('deals count:', count);
+console.log('last deal:', deals[0]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolorderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:289](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L289)
+
+___
+
+### fetchRequesterDeals
+
+▸ **fetchRequesterDeals**(`requesterAddress`, `filters?`): `Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+fetch the latest deals of the requester optionaly filtered by specified filters.
+
+_NB_: this method can return a subset of the complete result set, in this case, a `more()` method is also returned and enable getting the next subset.
+
+example:
+```js
+const { deals, count } = await fetchRequesterDeals(userAddress);
+console.log('deals count:', count);
+console.log('last deal:', deals[0]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requesterAddress` | `string` |
+| `filters?` | `Object` |
+| `filters.appAddress?` | `string` |
+| `filters.datasetAddress?` | `string` |
+| `filters.workerpoolAddress?` | `string` |
+
+#### Returns
+
+`Promise`<[`PaginableDeals`](../interfaces/internal_.PaginableDeals.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:241](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L241)
+
+___
+
+### obsDeal
+
+▸ **obsDeal**(`dealid`): `Promise`<[`DealObservable`](internal_.DealObservable.md)\>
+
+return an Observable with a `subscribe` method to monitor the deal status changes.
+
+example:
+```js
+const dealObservable = await obsDeal('0x4246d0ddf4c4c728cedd850890ee9a6781a88e5d3c46098c0774af3b7963879b');
+const unsubscribe = dealObservable.subscribe({
+ next: (data) =>
+ console.log(
+ data.message,
+ `completed tasks ${data.completedTasksCount}/${data.tasksCount}`,
+ ),
+ error: (e) => console.error(e),
+ complete: () => console.log('final state reached'),
+});
+// call unsubscribe() to unsubscribe from dealObservable
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `dealid` | `string` |
+
+#### Returns
+
+`Promise`<[`DealObservable`](internal_.DealObservable.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:197](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L197)
+
+___
+
+### show
+
+▸ **show**(`dealid`): `Promise`<{ `app`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } ; `beneficiary`: `string` ; `botFirst`: `BN` ; `botSize`: `BN` ; `callback`: `string` ; `category`: `BN` ; `dataset`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } ; `deadlineReached`: `boolean` ; `dealid`: `string` ; `finalTime`: `BN` ; `params`: `string` ; `requester`: `string` ; `schedulerRewardRatio`: `BN` ; `startTime`: `BN` ; `tag`: `string` ; `tasks`: `Record`<`number`, `string`\> ; `trust`: `BN` ; `workerStake`: `BN` ; `workerpool`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } }\>
+
+show the details of a deal.
+
+example:
+```js
+const deal = await show(
+ '0x4246d0ddf4c4c728cedd850890ee9a6781a88e5d3c46098c0774af3b7963879b',
+);
+console.log('deal:', deal);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `dealid` | `string` |
+
+#### Returns
+
+`Promise`<{ `app`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } ; `beneficiary`: `string` ; `botFirst`: `BN` ; `botSize`: `BN` ; `callback`: `string` ; `category`: `BN` ; `dataset`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } ; `deadlineReached`: `boolean` ; `dealid`: `string` ; `finalTime`: `BN` ; `params`: `string` ; `requester`: `string` ; `schedulerRewardRatio`: `BN` ; `startTime`: `BN` ; `tag`: `string` ; `tasks`: `Record`<`number`, `string`\> ; `trust`: `BN` ; `workerStake`: `BN` ; `workerpool`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } }\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:158](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L158)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecENSModule.md b/docs/classes/IExecENSModule.md
new file mode 100644
index 00000000..8149bf6c
--- /dev/null
+++ b/docs/classes/IExecENSModule.md
@@ -0,0 +1,322 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecENSModule
+
+# Class: IExecENSModule
+
+module exposing ENS methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecENSModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecENSModule.md#constructor)
+
+### Properties
+
+- [config](IExecENSModule.md#config)
+
+### Methods
+
+- [claimName](IExecENSModule.md#claimname)
+- [configureResolution](IExecENSModule.md#configureresolution)
+- [getOwner](IExecENSModule.md#getowner)
+- [lookupAddress](IExecENSModule.md#lookupaddress)
+- [obsConfigureResolution](IExecENSModule.md#obsconfigureresolution)
+- [resolveName](IExecENSModule.md#resolvename)
+- [fromConfig](IExecENSModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecENSModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### claimName
+
+▸ **claimName**(`label`, `domain?`): `Promise`<{ `registerTxHash?`: `string` ; `registeredName`: `string` }\>
+
+register a subdomain (label) on an ENS FIFSRegistrar
+
+_NB_:
+- if specifier, the domain must be controlled by a FIFSRegistrar, default "users.iexec.eth"
+- if the user already own the domain, the register transaction will not occur
+
+example:
+```js
+const { name, registerTxHash } = claimName(
+ 'me',
+ 'users.iexec.eth',
+);
+console.log('regitered:', name);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `label` | `string` |
+| `domain?` | `string` |
+
+#### Returns
+
+`Promise`<{ `registerTxHash?`: `string` ; `registeredName`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:128](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L128)
+
+___
+
+### configureResolution
+
+▸ **configureResolution**(`name`, `address?`): `Promise`<{ `address`: `string` ; `claimReverseTxHash?`: `string` ; `name`: `string` ; `setAddrTxHash?`: `string` ; `setNameTxHash?`: `string` ; `setResolverTxHash?`: `string` }\>
+
+**ONLY ENS NAME OWNER**
+
+configure the ENS resolution and reverse resolution for an owned ENS name, same as `obsConfigureResolution` wrapped in a `Promise`.
+
+_NB_:
+- `address` must be an iExec RegistryEntry address (ie: app, dataset or workerpool) or the user address, default user address
+- the configuration may require up to 4 transactions, depending on the target type (EOA or RegistryEntry) and the current state, some transaction may or may not occur to complete the configuration
+
+example:
+- EOA ENS configuration
+```js
+const { address, name } = await configureResolution(
+ 'me.users.iexec.eth',
+);
+console.log('configured resolution:', address, '<=>', name);
+```
+- iExec App contract ENS configuration
+```js
+const { address, name } = await configureResolution(
+ 'my-app.eth',
+ appAddress
+);
+console.log('configured resolution:', address, '<=>', name);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `name` | `string` |
+| `address?` | `string` |
+
+#### Returns
+
+`Promise`<{ `address`: `string` ; `claimReverseTxHash?`: `string` ; `name`: `string` ; `setAddrTxHash?`: `string` ; `setNameTxHash?`: `string` ; `setResolverTxHash?`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:202](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L202)
+
+___
+
+### getOwner
+
+▸ **getOwner**(`name`): `Promise`<`string`\>
+
+get the address of the ENS name's owner.
+
+example:
+```js
+const owner = await getOwner('iexec.eth');
+console.log('iexec.eth owner:', owner);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `name` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:91](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L91)
+
+___
+
+### lookupAddress
+
+▸ **lookupAddress**(`address`): `Promise`<`string`\>
+
+lookup to find the ENS name of an ethereum address
+
+example:
+```js
+const name = await lookupAddress(address);
+console.log('ENS name:', name);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:111](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L111)
+
+___
+
+### obsConfigureResolution
+
+▸ **obsConfigureResolution**(`name`, `address?`): `Promise`<[`ENSConfigurationObservable`](internal_.ENSConfigurationObservable.md)\>
+
+**ONLY ENS NAME OWNER**
+
+return a cold Observable with a `subscribe` method to start and monitor the ENS resolution and reverse resolution configuration.
+
+calling the `subscribe` method on the observable will immediately return a cancel function and start the asynchronous ENS configuration.
+
+calling the returned cancel method will stop the configuration process
+
+_NB_:
+- `address` must be an iExec RegistryEntry address (ie: app, dataset or workerpool) or the user address, default user address
+- the configuration may require up to 4 transactions, depending on the target type (EOA or RegistryEntry) and the current state, some transaction may or may not occur to complete the configuration
+
+example:
+- EOA ENS configuration
+```js
+const configureResolutionObservable = await obsConfigureResolution(
+ 'me.users.iexec.eth',
+);
+configureResolutionObservable.subscribe({
+ error: console.error,
+ next: ({ message, ...rest }) =>
+ console.log(`${message} ${JSON.strigify(rest)}`),
+ completed: () => console.log('resolution configured'),
+});
+```
+- iExec App contract ENS configuration
+```js
+const configureResolutionObservable = await obsConfigureResolution(
+ 'my-app.eth',
+ appAddress
+);
+configureResolutionObservable.subscribe({
+ error: console.error,
+ next: ({ message, ...rest }) =>
+ console.log(`${message} ${JSON.strigify(rest)}`),
+ completed: () => console.log('resolution configured'),
+});
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `name` | `string` |
+| `address?` | `string` |
+
+#### Returns
+
+`Promise`<[`ENSConfigurationObservable`](internal_.ENSConfigurationObservable.md)\>
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:172](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L172)
+
+___
+
+### resolveName
+
+▸ **resolveName**(`name`): `Promise`<`string`\>
+
+resolve the ENS name to an ethereum address if a resolver is configured for the name
+
+example:
+```js
+const owner = await resolveName('me.users.iexec.eth');
+console.log('me.users.iexec.eth:', address);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `name` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:101](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L101)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecHubModule.md b/docs/classes/IExecHubModule.md
new file mode 100644
index 00000000..36c9ceac
--- /dev/null
+++ b/docs/classes/IExecHubModule.md
@@ -0,0 +1,205 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecHubModule
+
+# Class: IExecHubModule
+
+module exposing hub methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecHubModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecHubModule.md#constructor)
+
+### Properties
+
+- [config](IExecHubModule.md#config)
+
+### Methods
+
+- [countCategory](IExecHubModule.md#countcategory)
+- [createCategory](IExecHubModule.md#createcategory)
+- [getTimeoutRatio](IExecHubModule.md#gettimeoutratio)
+- [showCategory](IExecHubModule.md#showcategory)
+- [fromConfig](IExecHubModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecHubModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### countCategory
+
+▸ **countCategory**(): `Promise`<`BN`\>
+
+count the created categories.
+
+example:
+```js
+const count = await countCategory();
+console.log('category count:', count);
+```
+
+#### Returns
+
+`Promise`<`BN`\>
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:65](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L65)
+
+___
+
+### createCategory
+
+▸ **createCategory**(`category`): `Promise`<{ `catid`: `BN` ; `txHash`: `string` }\>
+
+**ONLY IEXEC OWNER**
+
+create a computation category on the iExec contract
+
+example:
+```js
+const { catid } = await createCategory({
+ name: 'Small',
+ description: '5 min',
+ workClockTimeRef: 300,
+});
+console.log('deployed with catid', catid);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `category` | `Object` |
+| `category.description` | `string` |
+| `category.name` | `string` |
+| `category.workClockTimeRef` | [`BNish`](../modules/internal_.md#bnish) |
+
+#### Returns
+
+`Promise`<{ `catid`: `BN` ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:41](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L41)
+
+___
+
+### getTimeoutRatio
+
+▸ **getTimeoutRatio**(): `Promise`<`BN`\>
+
+get the current `TimoutRatio`
+
+`TimoutRatio` is used with the category `workClockTimeRef` to determine the tasks duration (task max duration = TimoutRatio * workClockTimeRef)
+
+example:
+```js
+const timoutRatio = await getTimeoutRatio();
+console.log('timoutRatio:', timoutRatio);
+```
+
+#### Returns
+
+`Promise`<`BN`\>
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:77](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L77)
+
+___
+
+### showCategory
+
+▸ **showCategory**(`catid`): `Promise`<[`Category`](../interfaces/internal_.Category.md)\>
+
+show category with specified catid.
+
+example:
+```js
+const category = await showCategory(0);
+console.log('category:', category);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `catid` | [`BNish`](../modules/internal_.md#bnish) |
+
+#### Returns
+
+`Promise`<[`Category`](../interfaces/internal_.Category.md)\>
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:55](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L55)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecModule.md b/docs/classes/IExecModule.md
new file mode 100644
index 00000000..57eeabeb
--- /dev/null
+++ b/docs/classes/IExecModule.md
@@ -0,0 +1,106 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecModule
+
+# Class: IExecModule
+
+module base
+
+## Hierarchy
+
+- **`IExecModule`**
+
+ ↳ [`IExec`](IExec.md)
+
+ ↳ [`IExecAccountModule`](IExecAccountModule.md)
+
+ ↳ [`IExecAppModule`](IExecAppModule.md)
+
+ ↳ [`IExecDatasetModule`](IExecDatasetModule.md)
+
+ ↳ [`IExecDealModule`](IExecDealModule.md)
+
+ ↳ [`IExecENSModule`](IExecENSModule.md)
+
+ ↳ [`IExecHubModule`](IExecHubModule.md)
+
+ ↳ [`IExecNetworkModule`](IExecNetworkModule.md)
+
+ ↳ [`IExecOrderModule`](IExecOrderModule.md)
+
+ ↳ [`IExecOrderbookModule`](IExecOrderbookModule.md)
+
+ ↳ [`IExecResultModule`](IExecResultModule.md)
+
+ ↳ [`IExecStorageModule`](IExecStorageModule.md)
+
+ ↳ [`IExecTaskModule`](IExecTaskModule.md)
+
+ ↳ [`IExecWalletModule`](IExecWalletModule.md)
+
+ ↳ [`IExecWorkerpoolModule`](IExecWorkerpoolModule.md)
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecModule.md#constructor)
+
+### Properties
+
+- [config](IExecModule.md#config)
+
+### Methods
+
+- [fromConfig](IExecModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecNetworkModule.md b/docs/classes/IExecNetworkModule.md
new file mode 100644
index 00000000..366324be
--- /dev/null
+++ b/docs/classes/IExecNetworkModule.md
@@ -0,0 +1,115 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecNetworkModule
+
+# Class: IExecNetworkModule
+
+module exposing network methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecNetworkModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecNetworkModule.md#constructor)
+
+### Properties
+
+- [config](IExecNetworkModule.md#config)
+
+### Methods
+
+- [getNetwork](IExecNetworkModule.md#getnetwork)
+- [fromConfig](IExecNetworkModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecNetworkModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### getNetwork
+
+▸ **getNetwork**(): `Promise`<{ `chainId`: `number` ; `isNative`: `boolean` }\>
+
+get info about the current iExec network
+
+_NB_: `isNative` is true when the iExec instance use the chain's native token for payment (otherwise the payment token is an ERC20)
+
+example:
+```js
+const { chainId, isNative } = await getNetwork();
+console.log(`working on chain ${chainId}, using native token: ${isNative}`);
+```
+
+#### Returns
+
+`Promise`<{ `chainId`: `number` ; `isNative`: `boolean` }\>
+
+#### Defined in
+
+[src/lib/IExecNetworkModule.d.ts:18](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecNetworkModule.d.ts#L18)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecOrderModule.md b/docs/classes/IExecOrderModule.md
new file mode 100644
index 00000000..d252605d
--- /dev/null
+++ b/docs/classes/IExecOrderModule.md
@@ -0,0 +1,1165 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecOrderModule
+
+# Class: IExecOrderModule
+
+module exposing order methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecOrderModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecOrderModule.md#constructor)
+
+### Properties
+
+- [config](IExecOrderModule.md#config)
+
+### Methods
+
+- [cancelApporder](IExecOrderModule.md#cancelapporder)
+- [cancelDatasetorder](IExecOrderModule.md#canceldatasetorder)
+- [cancelRequestorder](IExecOrderModule.md#cancelrequestorder)
+- [cancelWorkerpoolorder](IExecOrderModule.md#cancelworkerpoolorder)
+- [createApporder](IExecOrderModule.md#createapporder)
+- [createDatasetorder](IExecOrderModule.md#createdatasetorder)
+- [createRequestorder](IExecOrderModule.md#createrequestorder)
+- [createWorkerpoolorder](IExecOrderModule.md#createworkerpoolorder)
+- [hashApporder](IExecOrderModule.md#hashapporder)
+- [hashDatasetorder](IExecOrderModule.md#hashdatasetorder)
+- [hashRequestorder](IExecOrderModule.md#hashrequestorder)
+- [hashWorkerpoolorder](IExecOrderModule.md#hashworkerpoolorder)
+- [matchOrders](IExecOrderModule.md#matchorders)
+- [publishApporder](IExecOrderModule.md#publishapporder)
+- [publishDatasetorder](IExecOrderModule.md#publishdatasetorder)
+- [publishRequestorder](IExecOrderModule.md#publishrequestorder)
+- [publishWorkerpoolorder](IExecOrderModule.md#publishworkerpoolorder)
+- [signApporder](IExecOrderModule.md#signapporder)
+- [signDatasetorder](IExecOrderModule.md#signdatasetorder)
+- [signRequestorder](IExecOrderModule.md#signrequestorder)
+- [signWorkerpoolorder](IExecOrderModule.md#signworkerpoolorder)
+- [unpublishAllApporders](IExecOrderModule.md#unpublishallapporders)
+- [unpublishAllDatasetorders](IExecOrderModule.md#unpublishalldatasetorders)
+- [unpublishAllRequestorders](IExecOrderModule.md#unpublishallrequestorders)
+- [unpublishAllWorkerpoolorders](IExecOrderModule.md#unpublishallworkerpoolorders)
+- [unpublishApporder](IExecOrderModule.md#unpublishapporder)
+- [unpublishDatasetorder](IExecOrderModule.md#unpublishdatasetorder)
+- [unpublishLastApporder](IExecOrderModule.md#unpublishlastapporder)
+- [unpublishLastDatasetorder](IExecOrderModule.md#unpublishlastdatasetorder)
+- [unpublishLastRequestorder](IExecOrderModule.md#unpublishlastrequestorder)
+- [unpublishLastWorkerpoolorder](IExecOrderModule.md#unpublishlastworkerpoolorder)
+- [unpublishRequestorder](IExecOrderModule.md#unpublishrequestorder)
+- [unpublishWorkerpoolorder](IExecOrderModule.md#unpublishworkerpoolorder)
+- [fromConfig](IExecOrderModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecOrderModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### cancelApporder
+
+▸ **cancelApporder**(`apporder`): `Promise`<{ `order`: [`ConsumableApporder`](../interfaces/internal_.ConsumableApporder.md) ; `txHash`: `string` }\>
+
+**ONLY APP OWNER**
+
+cancel an apporder on the blockchain making it invalid
+
+example:
+```js
+const { txHash } = await cancelApporder(apporder);
+console.log('cancel tx:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `apporder` | [`ConsumableApporder`](../interfaces/internal_.ConsumableApporder.md) |
+
+#### Returns
+
+`Promise`<{ `order`: [`ConsumableApporder`](../interfaces/internal_.ConsumableApporder.md) ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:675](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L675)
+
+___
+
+### cancelDatasetorder
+
+▸ **cancelDatasetorder**(`datasetorder`): `Promise`<{ `order`: [`ConsumableDatasetorder`](../interfaces/internal_.ConsumableDatasetorder.md) ; `txHash`: `string` }\>
+
+**ONLY DATASET OWNER**
+
+cancel a datasetorder on the blockchain making it invalid
+
+example:
+```js
+const { txHash } = await cancelDatasetorder(datasetorder);
+console.log('cancel tx:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetorder` | [`ConsumableDatasetorder`](../interfaces/internal_.ConsumableDatasetorder.md) |
+
+#### Returns
+
+`Promise`<{ `order`: [`ConsumableDatasetorder`](../interfaces/internal_.ConsumableDatasetorder.md) ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:689](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L689)
+
+___
+
+### cancelRequestorder
+
+▸ **cancelRequestorder**(`requestorder`): `Promise`<{ `order`: [`ConsumableRequestorder`](../interfaces/internal_.ConsumableRequestorder.md) ; `txHash`: `string` }\>
+
+**ONLY REQUESTER**
+
+cancel a requestorder on the blockchain making it invalid
+
+example:
+```js
+const { txHash } = await cancelRequestorder(requestorder);
+console.log('cancel tx:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requestorder` | [`ConsumableRequestorder`](../interfaces/internal_.ConsumableRequestorder.md) |
+
+#### Returns
+
+`Promise`<{ `order`: [`ConsumableRequestorder`](../interfaces/internal_.ConsumableRequestorder.md) ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:717](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L717)
+
+___
+
+### cancelWorkerpoolorder
+
+▸ **cancelWorkerpoolorder**(`workerpoolorder`): `Promise`<{ `order`: [`ConsumableWorkerpoolorder`](../interfaces/internal_.ConsumableWorkerpoolorder.md) ; `txHash`: `string` }\>
+
+**ONLY WORKERPOOL OWNER**
+
+cancel a workerpoolorder on the blockchain making it invalid
+
+example:
+```js
+const { txHash } = await cancelWorkerpoolorder(workerpoolorder);
+console.log('cancel tx:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolorder` | [`ConsumableWorkerpoolorder`](../interfaces/internal_.ConsumableWorkerpoolorder.md) |
+
+#### Returns
+
+`Promise`<{ `order`: [`ConsumableWorkerpoolorder`](../interfaces/internal_.ConsumableWorkerpoolorder.md) ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:703](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L703)
+
+___
+
+### createApporder
+
+▸ **createApporder**(`overrides`): `Promise`<[`ApporderTemplate`](../interfaces/internal_.ApporderTemplate.md)\>
+
+create an apporder template with specified parameters
+
+example:
+```js
+const apporderTemplate = await createApporder({app: appAddress});
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `overrides` | `Object` | - |
+| `overrides.app` | `string` | - |
+| `overrides.appprice?` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) | price per task default `0` |
+| `overrides.datasetrestrict?` | `string` | restrict usage to a specific dataset default no restrict |
+| `overrides.requesterrestrict?` | `string` | restrict usage to a specific requester default no restrict |
+| `overrides.tag?` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | restrict usage to runtimes with specified tags default `[]` |
+| `overrides.volume?` | [`BNish`](../modules/internal_.md#bnish) | volume of tasks executable with the order default `1` |
+| `overrides.workerpoolrestrict?` | `string` | restrict usage to a specific workerpool default no restrict |
+
+#### Returns
+
+`Promise`<[`ApporderTemplate`](../interfaces/internal_.ApporderTemplate.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:296](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L296)
+
+___
+
+### createDatasetorder
+
+▸ **createDatasetorder**(`overrides`): `Promise`<[`DatasetorderTemplate`](../interfaces/internal_.DatasetorderTemplate.md)\>
+
+create a datasetorder template with specified parameters
+
+example:
+```js
+const datasetorderTemplate = await createDatasetorder({dataset: datasetAddress});
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `overrides` | `Object` | - |
+| `overrides.apprestrict?` | `string` | restrict usage to a specific app default no restrict |
+| `overrides.dataset` | `string` | - |
+| `overrides.datasetprice?` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) | price per task default `0` |
+| `overrides.requesterrestrict?` | `string` | restrict usage to a specific requester default no restrict |
+| `overrides.tag?` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | restrict usage to runtimes with specified tags default `[]` |
+| `overrides.volume?` | [`BNish`](../modules/internal_.md#bnish) | volume of tasks executable with the order default `1` |
+| `overrides.workerpoolrestrict?` | `string` | restrict usage to a specific workerpool default no restrict |
+
+#### Returns
+
+`Promise`<[`DatasetorderTemplate`](../interfaces/internal_.DatasetorderTemplate.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:343](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L343)
+
+___
+
+### createRequestorder
+
+▸ **createRequestorder**(`overrides`): `Promise`<[`RequestorderTemplate`](../interfaces/internal_.RequestorderTemplate.md)\>
+
+create a requestorder template with specified parameters
+
+example:
+```js
+const requestorderTemplate = await createRequestorder({
+ app: appAddress,
+ category: 0,
+ params: { iexec_args: 'hello world'}
+ });
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `overrides` | `Object` | - |
+| `overrides.app` | `string` | app to run |
+| `overrides.appmaxprice?` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) | app max price per task default `0` |
+| `overrides.beneficiary?` | `string` | beneficiary default connected wallet address |
+| `overrides.category` | [`BNish`](../modules/internal_.md#bnish) | computation category |
+| `overrides.dataset?` | `string` | dataset to use default none |
+| `overrides.datasetmaxprice?` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) | dataset max price per task default `0` |
+| `overrides.params?` | `string` \| { `iexec_args?`: `string` ; `iexec_developer_logger?`: `boolean` ; `iexec_input_files?`: `string`[] ; `iexec_result_encryption?`: `boolean` ; `iexec_result_storage_provider?`: `string` ; `iexec_result_storage_proxy?`: `string` } | execution parameters |
+| `overrides.requester?` | `string` | requester default connected wallet address |
+| `overrides.tag?` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | restrict usage to runtimes with specified tags default `[]` |
+| `overrides.trust?` | [`BNish`](../modules/internal_.md#bnish) | required trust default `0` |
+| `overrides.volume?` | [`BNish`](../modules/internal_.md#bnish) | volume of tasks executable with the order default `1` |
+| `overrides.workerpool?` | `string` | run one sprecified workerpool default run on any workerpool |
+| `overrides.workerpoolmaxprice?` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) | workerpool max price per task default `0` |
+
+#### Returns
+
+`Promise`<[`RequestorderTemplate`](../interfaces/internal_.RequestorderTemplate.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:451](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L451)
+
+___
+
+### createWorkerpoolorder
+
+▸ **createWorkerpoolorder**(`overrides`): `Promise`<[`WorkerpoolorderTemplate`](../interfaces/internal_.WorkerpoolorderTemplate.md)\>
+
+create a workerpoolorder template with specified parameters
+
+example:
+```js
+const workerpoolorderTemplate = await createWorkerpoolorder({workerpool: workerpoolAddress, category: 0});
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `overrides` | `Object` | - |
+| `overrides.apprestrict?` | `string` | restrict usage to a specific app default no restrict |
+| `overrides.category` | [`BNish`](../modules/internal_.md#bnish) | computation category |
+| `overrides.datasetrestrict?` | `string` | restrict usage to a specific dataset default no restrict |
+| `overrides.requesterrestrict?` | `string` | restrict usage to a specific requester default no restrict |
+| `overrides.tag?` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | proposed tags default `[]` |
+| `overrides.trust?` | [`BNish`](../modules/internal_.md#bnish) | proposed trust default `0` |
+| `overrides.volume?` | [`BNish`](../modules/internal_.md#bnish) | volume of tasks executable with the order default `1` |
+| `overrides.workerpool` | `string` | - |
+| `overrides.workerpoolprice?` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) | price per task default `0` |
+
+#### Returns
+
+`Promise`<[`WorkerpoolorderTemplate`](../interfaces/internal_.WorkerpoolorderTemplate.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:390](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L390)
+
+___
+
+### hashApporder
+
+▸ **hashApporder**(`apporder`): `Promise`<`string`\>
+
+compute the hash of an apporder
+
+example:
+```js
+const orderHash = await hashApporder(apporder);
+console.log('order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `apporder` | [`HashableApporder`](../interfaces/internal_.HashableApporder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:631](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L631)
+
+___
+
+### hashDatasetorder
+
+▸ **hashDatasetorder**(`datasetorder`): `Promise`<`string`\>
+
+compute the hash of a datasetorder
+
+example:
+```js
+const orderHash = await hashDatasetorder(datasetorder);
+console.log('order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetorder` | [`HashableDatasetorder`](../interfaces/internal_.HashableDatasetorder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:641](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L641)
+
+___
+
+### hashRequestorder
+
+▸ **hashRequestorder**(`requestorder`): `Promise`<`string`\>
+
+compute the hash of a requestorder
+
+example:
+```js
+const orderHash = await hashRequestorder(requestorder);
+console.log('order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requestorder` | [`HashableRequestorder`](../interfaces/internal_.HashableRequestorder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:663](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L663)
+
+___
+
+### hashWorkerpoolorder
+
+▸ **hashWorkerpoolorder**(`workerpoolorder`): `Promise`<`string`\>
+
+compute the hash of a workerpoolorder
+
+example:
+```js
+const orderHash = await hashWorkerpoolorder(workerpoolorder);
+console.log('order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolorder` | [`HashableWorkerpoolorder`](../interfaces/internal_.HashableWorkerpoolorder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:651](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L651)
+
+___
+
+### matchOrders
+
+▸ **matchOrders**(`orders`, `options?`): `Promise`<{ `dealid`: `string` ; `txHash`: `string` ; `volume`: `BN` }\>
+
+make a deal on-chain with compatible orders to trigger the off-chain computation.
+
+_NB_: advanced checks are performed on the requestorder before signing (this helps detecting inconsistancies and prevent creating always failing tasks). these checks can be disabled by passing the option `checkRequest: false`
+
+```js
+const { dealid, txHash } = await matchOrders({
+ apporder,
+ workerpoolorder,
+ requestorder,
+});
+console.log(`created deal ${dealid} in tx ${txHash}`);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `orders` | `Object` |
+| `orders.apporder` | [`ConsumableApporder`](../interfaces/internal_.ConsumableApporder.md) |
+| `orders.datasetorder?` | [`ConsumableDatasetorder`](../interfaces/internal_.ConsumableDatasetorder.md) |
+| `orders.requestorder` | [`ConsumableRequestorder`](../interfaces/internal_.ConsumableRequestorder.md) |
+| `orders.workerpoolorder` | [`ConsumableWorkerpoolorder`](../interfaces/internal_.ConsumableWorkerpoolorder.md) |
+| `options?` | `Object` |
+| `options.checkRequest?` | `boolean` |
+
+#### Returns
+
+`Promise`<{ `dealid`: `string` ; `txHash`: `string` ; `volume`: `BN` }\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:961](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L961)
+
+___
+
+### publishApporder
+
+▸ **publishApporder**(`apporder`): `Promise`<`string`\>
+
+**ONLY APP OWNER**
+
+publish an apporder on the off-chain marketplace making it available for other users
+
+example:
+```js
+const orderHash = await publishApporder(apporder);
+console.log('published order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `apporder` | [`ConsumableApporder`](../interfaces/internal_.ConsumableApporder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:731](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L731)
+
+___
+
+### publishDatasetorder
+
+▸ **publishDatasetorder**(`datasetorder`): `Promise`<`string`\>
+
+**ONLY DATASET OWNER**
+
+publish a datasetorder on the off-chain marketplace making it available for other users
+
+example:
+```js
+const orderHash = await publishDatasetorder(datasetorder);
+console.log('published order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetorder` | [`ConsumableDatasetorder`](../interfaces/internal_.ConsumableDatasetorder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:743](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L743)
+
+___
+
+### publishRequestorder
+
+▸ **publishRequestorder**(`requestorder`, `options?`): `Promise`<`string`\>
+
+**ONLY REQUESTER**
+
+publish a requestorder on the off-chain marketplace making it available for other users
+
+_NB_: advanced checks are performed on the requestorder before signing (this helps detecting inconsistancies and prevent creating always failing tasks). these checks can be disabled by passing the option `checkRequest: false`
+
+example:
+```js
+const orderHash = await publishRequestorder(requestorder);
+console.log('published order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requestorder` | [`ConsumableRequestorder`](../interfaces/internal_.ConsumableRequestorder.md) |
+| `options?` | `Object` |
+| `options.checkRequest?` | `boolean` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:771](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L771)
+
+___
+
+### publishWorkerpoolorder
+
+▸ **publishWorkerpoolorder**(`workerpoolorder`): `Promise`<`string`\>
+
+**ONLY WORKERPOOL OWNER**
+
+publish a workerpoolorder on the off-chain marketplace making it available for other users
+
+example:
+```js
+const orderHash = await publishWorkerpoolorder(workerpoolorder);
+console.log('published order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolorder` | [`ConsumableWorkerpoolorder`](../interfaces/internal_.ConsumableWorkerpoolorder.md) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:755](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L755)
+
+___
+
+### signApporder
+
+▸ **signApporder**(`apporderTemplate`): `Promise`<[`SignedApporder`](../interfaces/internal_.SignedApporder.md)\>
+
+**ONLY APP OWNER**
+
+sign an apporder template to create a valid order
+
+example:
+```js
+const apporderTemplate = await createApporder({app: appAddress});
+const apporder = await signApporder(apporderTemplate);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `apporderTemplate` | [`ApporderTemplate`](../interfaces/internal_.ApporderTemplate.md) |
+
+#### Returns
+
+`Promise`<[`SignedApporder`](../interfaces/internal_.SignedApporder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:573](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L573)
+
+___
+
+### signDatasetorder
+
+▸ **signDatasetorder**(`datasetorderTemplate`): `Promise`<[`SignedDatasetorder`](../interfaces/internal_.SignedDatasetorder.md)\>
+
+**ONLY DATASET OWNER**
+
+sign a datasetorder template to create a valid order
+
+example:
+```js
+const datasetorderTemplate = await createDatasetorder({dataset: datasetAddress});
+const datasetorder = await signDatasetorder(datasetorderTemplate);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetorderTemplate` | [`DatasetorderTemplate`](../interfaces/internal_.DatasetorderTemplate.md) |
+
+#### Returns
+
+`Promise`<[`SignedDatasetorder`](../interfaces/internal_.SignedDatasetorder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:585](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L585)
+
+___
+
+### signRequestorder
+
+▸ **signRequestorder**(`requestorderTemplate`, `options?`): `Promise`<[`SignedRequestorder`](../interfaces/internal_.SignedRequestorder.md)\>
+
+**ONLY REQUESTER**
+
+sign a requestorder template to create a valid order
+
+_NB_: advanced checks are performed on the requestorder before signing (this helps detecting inconsistancies and prevent creating always failing tasks). these checks can be disabled by passing the option `checkRequest: false`
+
+example:
+```js
+const requestorderTemplate = await createRequestorder({
+ app: appAddress,
+ category: 0,
+ params: { iexec_args: 'hello world'}
+ });
+const requestorder = await signRequestorder(requestorderTemplate);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requestorderTemplate` | [`RequestorderTemplate`](../interfaces/internal_.RequestorderTemplate.md) |
+| `options?` | `Object` |
+| `options.checkRequest?` | `boolean` |
+
+#### Returns
+
+`Promise`<[`SignedRequestorder`](../interfaces/internal_.SignedRequestorder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:618](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L618)
+
+___
+
+### signWorkerpoolorder
+
+▸ **signWorkerpoolorder**(`workerpoolorderTemplate`): `Promise`<[`SignedWorkerpoolorder`](../interfaces/internal_.SignedWorkerpoolorder.md)\>
+
+**ONLY WORKERPOOL OWNER**
+
+sign a workerpoolorder template to create a valid order
+
+```js
+const workerpoolorderTemplate = await createWorkerpoolorder({workerpool: workerpoolAddress, category: 0});
+const workerpoolorder = await signWorkerpoolorder(workerpoolorderTemplate);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolorderTemplate` | [`WorkerpoolorderTemplate`](../interfaces/internal_.WorkerpoolorderTemplate.md) |
+
+#### Returns
+
+`Promise`<[`SignedWorkerpoolorder`](../interfaces/internal_.SignedWorkerpoolorder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:598](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L598)
+
+___
+
+### unpublishAllApporders
+
+▸ **unpublishAllApporders**(`appAddress`): `Promise`<`string`[]\>
+
+**ONLY APPORDER SIGNER**
+
+unpublish all the published app's apporders from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHashes = await unpublishAllApporders(appAddress);
+console.log('published orders count:', orderHashes.length);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `appAddress` | `string` |
+
+#### Returns
+
+`Promise`<`string`[]\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:902](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L902)
+
+___
+
+### unpublishAllDatasetorders
+
+▸ **unpublishAllDatasetorders**(`datasetAddress`): `Promise`<`string`[]\>
+
+**ONLY DATASETORDER SIGNER**
+
+unpublish all the published dataset's datasetorders from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHashes = await unpublishAllDatasetorders(datasetAddress);
+console.log('unpublished orders count:', orderHashes.length);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetAddress` | `string` |
+
+#### Returns
+
+`Promise`<`string`[]\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:916](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L916)
+
+___
+
+### unpublishAllRequestorders
+
+▸ **unpublishAllRequestorders**(): `Promise`<`string`[]\>
+
+**ONLY REQUESTER**
+
+unpublish all the published requester's requestorders from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHashes = await unpublishAllRequestorders();
+console.log('unpublished orders count:', orderHashes.length);
+```
+
+#### Returns
+
+`Promise`<`string`[]\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:946](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L946)
+
+___
+
+### unpublishAllWorkerpoolorders
+
+▸ **unpublishAllWorkerpoolorders**(`workerpoolAddress`): `Promise`<`string`[]\>
+
+**ONLY WORKERPOOLORDER SIGNER**
+
+unpublish all the published workerpool's workerpoolorders from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHashes = await unpublishAllWorkerpoolorders(workerpoolAddress);
+console.log('unpublished orders count:', orderHashes.length);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolAddress` | `string` |
+
+#### Returns
+
+`Promise`<`string`[]\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:930](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L930)
+
+___
+
+### unpublishApporder
+
+▸ **unpublishApporder**(`apporderHash`): `Promise`<`string`\>
+
+**ONLY APPORDER SIGNER**
+
+unpublish an apporder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishApporder(apporderHash);
+console.log(unpublished order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `apporderHash` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:788](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L788)
+
+___
+
+### unpublishDatasetorder
+
+▸ **unpublishDatasetorder**(`datasetorderHash`): `Promise`<`string`\>
+
+**ONLY DATASETORDER SIGNER**
+
+unpublish a datasetorder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishDatasetorder(datasetorderHash);
+console.log('unpublished order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetorderHash` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:802](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L802)
+
+___
+
+### unpublishLastApporder
+
+▸ **unpublishLastApporder**(`appAddress`): `Promise`<`string`\>
+
+**ONLY APPORDER SIGNER**
+
+unpublish the last published app's apporder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishLastApporder(appAddress);
+console.log('published order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `appAddress` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:844](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L844)
+
+___
+
+### unpublishLastDatasetorder
+
+▸ **unpublishLastDatasetorder**(`datasetAddress`): `Promise`<`string`\>
+
+**ONLY DATASETORDER SIGNER**
+
+unpublish the last published dataset's datasetorder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishLastDatasetorder(datasetAddress);
+console.log('unpublished order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `datasetAddress` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:858](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L858)
+
+___
+
+### unpublishLastRequestorder
+
+▸ **unpublishLastRequestorder**(): `Promise`<`string`\>
+
+**ONLY REQUESTER**
+
+unpublish the last published requester's requestorder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishLastRequestorder();
+console.log('unpublished order hash:', orderHash);
+```
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:888](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L888)
+
+___
+
+### unpublishLastWorkerpoolorder
+
+▸ **unpublishLastWorkerpoolorder**(`workerpoolAddress`): `Promise`<`string`\>
+
+**ONLY WORKERPOOLORDER SIGNER**
+
+unpublish the last published workerpool's workerpoolorder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishLastWorkerpoolorder(workerpoolAddress);
+console.log('unpublished order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolAddress` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:872](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L872)
+
+___
+
+### unpublishRequestorder
+
+▸ **unpublishRequestorder**(`requestorderHash`): `Promise`<`string`\>
+
+**ONLY REQUESTER**
+
+unpublish a requestorder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishRequestorder(requestorderHash);
+console.log('unpublished order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `requestorderHash` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:830](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L830)
+
+___
+
+### unpublishWorkerpoolorder
+
+▸ **unpublishWorkerpoolorder**(`workerpoolorderHash`): `Promise`<`string`\>
+
+**ONLY WORKERPOOLORDER SIGNER**
+
+unpublish a workerpoolorder from the off-chain marketplace
+
+_NB_: this is a transaction free off-chain operation, unpublished orders are no longer exposed to other users but are still valid, use the cancel method if you want to invalidate them
+
+example:
+```js
+const orderHash = await unpublishWorkerpoolorder(workerpoolorderHash);
+console.log('unpublished order hash:', orderHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolorderHash` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:816](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L816)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecOrderbookModule.md b/docs/classes/IExecOrderbookModule.md
new file mode 100644
index 00000000..96b6ea17
--- /dev/null
+++ b/docs/classes/IExecOrderbookModule.md
@@ -0,0 +1,370 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecOrderbookModule
+
+# Class: IExecOrderbookModule
+
+module exposing orderbook methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecOrderbookModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecOrderbookModule.md#constructor)
+
+### Properties
+
+- [config](IExecOrderbookModule.md#config)
+
+### Methods
+
+- [fetchAppOrderbook](IExecOrderbookModule.md#fetchapporderbook)
+- [fetchApporder](IExecOrderbookModule.md#fetchapporder)
+- [fetchDatasetOrderbook](IExecOrderbookModule.md#fetchdatasetorderbook)
+- [fetchDatasetorder](IExecOrderbookModule.md#fetchdatasetorder)
+- [fetchRequestOrderbook](IExecOrderbookModule.md#fetchrequestorderbook)
+- [fetchRequestorder](IExecOrderbookModule.md#fetchrequestorder)
+- [fetchWorkerpoolOrderbook](IExecOrderbookModule.md#fetchworkerpoolorderbook)
+- [fetchWorkerpoolorder](IExecOrderbookModule.md#fetchworkerpoolorder)
+- [fromConfig](IExecOrderbookModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecOrderbookModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### fetchAppOrderbook
+
+▸ **fetchAppOrderbook**(`appAddress`, `options?`): `Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedApporder`](../interfaces/internal_.PublishedApporder.md)\>\>
+
+find the cheapest orders for the specified app.
+
+_NB_: use `options` to include restricted orders or filter results.
+
+example:
+```js
+const { count, orders } = await fetchAppOrderbook(appAddress);
+console.log('best order:', orders[0]?.order);
+console.log('total orders:', count);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `appAddress` | `string` | - |
+| `options?` | `Object` | - |
+| `options.dataset?` | `string` | include orders restricted to specified dataset |
+| `options.maxTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by maximun tag accepted |
+| `options.minTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by minimum tag required |
+| `options.minVolume?` | [`BNish`](../modules/internal_.md#bnish) | filter by minimum volume remaining |
+| `options.requester?` | `string` | include orders restricted to specified requester |
+| `options.workerpool?` | `string` | include orders restricted to specified workerpool |
+
+#### Returns
+
+`Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedApporder`](../interfaces/internal_.PublishedApporder.md)\>\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:144](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L144)
+
+___
+
+### fetchApporder
+
+▸ **fetchApporder**(`orderHash`): `Promise`<[`PublishedApporder`](../interfaces/internal_.PublishedApporder.md)\>
+
+find a published apporder by orderHash.
+
+example:
+```js
+const { order, remaining } = await fetchApporder(orderHash);
+console.log('order:' order);
+console.log('remaining volume:', remaining);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `orderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PublishedApporder`](../interfaces/internal_.PublishedApporder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:324](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L324)
+
+___
+
+### fetchDatasetOrderbook
+
+▸ **fetchDatasetOrderbook**(`datasetAddress`, `options?`): `Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedDatasetorder`](../interfaces/internal_.PublishedDatasetorder.md)\>\>
+
+find the cheapest orders for the specified dataset.
+
+_NB_: use `options` to include restricted orders or filter results.
+
+example:
+```js
+const { count, orders } = await fetchDatasetOrderbook(datasetAddress);
+console.log('best order:', orders[0]?.order);
+console.log('total orders:', count);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `datasetAddress` | `string` | - |
+| `options?` | `Object` | - |
+| `options.app?` | `string` | include orders restricted to specified app |
+| `options.maxTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by maximun tag accepted |
+| `options.minTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by minimum tag required |
+| `options.minVolume?` | [`BNish`](../modules/internal_.md#bnish) | filter by minimum volume remaining |
+| `options.requester?` | `string` | include orders restricted to specified requester |
+| `options.workerpool?` | `string` | include orders restricted to specified workerpool |
+
+#### Returns
+
+`Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedDatasetorder`](../interfaces/internal_.PublishedDatasetorder.md)\>\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:185](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L185)
+
+___
+
+### fetchDatasetorder
+
+▸ **fetchDatasetorder**(`orderHash`): `Promise`<[`PublishedDatasetorder`](../interfaces/internal_.PublishedDatasetorder.md)\>
+
+find a published datasetorder by orderHash.
+
+example:
+```js
+const { order, remaining } = await fetchDatasetorder(orderHash);
+console.log('order:' order);
+console.log('remaining volume:', remaining);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `orderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PublishedDatasetorder`](../interfaces/internal_.PublishedDatasetorder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:335](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L335)
+
+___
+
+### fetchRequestOrderbook
+
+▸ **fetchRequestOrderbook**(`options?`): `Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedWorkerpoolorder`](../interfaces/internal_.PublishedWorkerpoolorder.md)\>\>
+
+find the best paying request orders for computing resource.
+
+_NB_: use `options` to include restricted orders or filter results.
+
+example:
+```js
+const { count, orders } = await fetchRequestOrderbook();
+console.log('best order:', orders[0]?.order);
+console.log('total orders:', count);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `options?` | `Object` | - |
+| `options.app` | `string` | include orders restricted to specified app |
+| `options.category?` | [`BNish`](../modules/internal_.md#bnish) | filter by category |
+| `options.dataset?` | `string` | include orders restricted to specified dataset |
+| `options.maxTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by maximun tag accepted |
+| `options.maxTrust` | [`BNish`](../modules/internal_.md#bnish) | filter by maximum trust required |
+| `options.minTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by minimum tag required |
+| `options.minVolume?` | [`BNish`](../modules/internal_.md#bnish) | filter by minimum volume remaining |
+| `options.requester?` | `string` | filter by requester |
+| `options.workerpool?` | `string` | include orders restricted to specified workerpool |
+
+#### Returns
+
+`Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedWorkerpoolorder`](../interfaces/internal_.PublishedWorkerpoolorder.md)\>\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:276](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L276)
+
+___
+
+### fetchRequestorder
+
+▸ **fetchRequestorder**(`orderHash`): `Promise`<[`PublishedRequestorder`](../interfaces/internal_.PublishedRequestorder.md)\>
+
+find a published requestorder by orderHash.
+
+example:
+```js
+const { order, remaining } = await fetchRequestorder(orderHash);
+console.log('order:' order);
+console.log('remaining volume:', remaining);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `orderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PublishedRequestorder`](../interfaces/internal_.PublishedRequestorder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:357](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L357)
+
+___
+
+### fetchWorkerpoolOrderbook
+
+▸ **fetchWorkerpoolOrderbook**(`options?`): `Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedWorkerpoolorder`](../interfaces/internal_.PublishedWorkerpoolorder.md)\>\>
+
+find the cheapest orders for the specified computing resource.
+
+_NB_: use `options` to include restricted orders or filter results.
+
+example:
+```js
+const { count, orders } = await fetchWorkerpoolOrderbook();
+console.log('best order:', orders[0]?.order);
+console.log('total orders:', count);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `options?` | `Object` | - |
+| `options.app` | `string` | include orders restricted to specified app |
+| `options.category?` | [`BNish`](../modules/internal_.md#bnish) | filter by category |
+| `options.dataset?` | `string` | include orders restricted to specified dataset |
+| `options.maxTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by maximun tag offered |
+| `options.minTag` | [`Tag`](../modules/internal_.md#tag) \| `string`[] | filter by minimum tag required |
+| `options.minTrust` | [`BNish`](../modules/internal_.md#bnish) | filter by minimum trust required |
+| `options.minVolume?` | [`BNish`](../modules/internal_.md#bnish) | filter by minimum volume remaining |
+| `options.requester?` | `string` | include orders restricted to specified requester |
+| `options.workerpool?` | `string` | filter by workerpool |
+
+#### Returns
+
+`Promise`<[`PaginableOrders`](../interfaces/internal_.PaginableOrders.md)<[`PublishedWorkerpoolorder`](../interfaces/internal_.PublishedWorkerpoolorder.md)\>\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:226](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L226)
+
+___
+
+### fetchWorkerpoolorder
+
+▸ **fetchWorkerpoolorder**(`orderHash`): `Promise`<[`PublishedWorkerpoolorder`](../interfaces/internal_.PublishedWorkerpoolorder.md)\>
+
+find a published workerpoolorder by orderHash.
+
+example:
+```js
+const { order, remaining } = await fetchWorkerpoolorder(orderHash);
+console.log('order:' order);
+console.log('remaining volume:', remaining);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `orderHash` | `string` |
+
+#### Returns
+
+`Promise`<[`PublishedWorkerpoolorder`](../interfaces/internal_.PublishedWorkerpoolorder.md)\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:346](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L346)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecResultModule.md b/docs/classes/IExecResultModule.md
new file mode 100644
index 00000000..d3c9acb1
--- /dev/null
+++ b/docs/classes/IExecResultModule.md
@@ -0,0 +1,169 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecResultModule
+
+# Class: IExecResultModule
+
+module exposing result methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecResultModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecResultModule.md#constructor)
+
+### Properties
+
+- [config](IExecResultModule.md#config)
+
+### Methods
+
+- [checkResultEncryptionKeyExists](IExecResultModule.md#checkresultencryptionkeyexists)
+- [pushResultEncryptionKey](IExecResultModule.md#pushresultencryptionkey)
+- [fromConfig](IExecResultModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecResultModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### checkResultEncryptionKeyExists
+
+▸ **checkResultEncryptionKeyExists**(`beneficiaryAddress`): `Promise`<`boolean`\>
+
+check if a beneficiary result encryption key exists in the Secret Management Service
+
+example:
+```js
+const isEncryptionKeyAvailable = await checkResultEncryptionKeyExists(userAddress);
+console.log('encryption key available:', isEncryptionKeyAvailable);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `beneficiaryAddress` | `string` |
+
+#### Returns
+
+`Promise`<`boolean`\>
+
+#### Defined in
+
+[src/lib/IExecResultModule.d.ts:17](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecResultModule.d.ts#L17)
+
+___
+
+### pushResultEncryptionKey
+
+▸ **pushResultEncryptionKey**(`rsaPublicKey`, `options?`): `Promise`<{ `isPushed`: `boolean` ; `isUpdated`: `boolean` }\>
+
+**ONLY BENEFICIARY**
+
+push a beneficiary result encryption key to the Secret Management Service to allow result encryption
+
+_NB_: this method will throw an error if a beneficiary result encryption key already exists in the Secret Management Service unless the option `forceUpdate: true` is used.
+
+example:
+```js
+const { isPushed } = await pushResultEncryptionKey(
+ `-----BEGIN PUBLIC KEY-----
+ MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0gKRKKNCLe1O+A8nRsOc
+ gnnvLwE+rpvmKnjOTzoR8ZBTaIjD1dqlhPyJ3kgUnKyCNqru9ayf0srUddwj+20N
+ zdLvhI03cYD+GFYM6rrGvaUekGZ43f309f3wOrQjNkTeGo+K+hloHL/gmuN/XML9
+ MST/01+mdCImPdG+dxk4RQAsFS7HE00VXsVjcLGeZ95AKILFJKLbCOJxxvsQ+L1g
+ rameEwTUF1Mb5TJnV44YZJiCKYFj6/6zrZ3+pdUjxBSN96iOyE2KiYeNuhEEJbjb
+ 4rWl+TpWLmDkLIeyL3TpDTRedaXVx6h7DOOphX5vG63+5UIHol3vJwPbeODiFWH0
+ hpFcFVPoW3wQgEpSMhUabg59Hc0rnXfM5nrIRS+SHTzjD7jpbSisGzXKcuHMc69g
+ brEHGJsNnxr0A65PzN1RMJGq44lnjeTPZnjWjM7PnnfH72MiWmwVptB38QP5+tao
+ UJu9HvZdCr9ZzdHebO5mCWIBKEt9bLRa2LMgAYfWVg21ARfIzjvc9GCwuu+958GR
+ O/VhIFB71aaAxpGmK9bX5U5QN6Tpjn/ykRIBEyY0Y6CJUkc33KhVvxXSirIpcZCO
+ OY8MsmW8+J2ZJI1JA0DIR2LHingtFWlQprd7lt6AxzcYSizeWVTZzM7trbBExBGq
+ VOlIzoTeJjL+SgBZBa+xVC0CAwEAAQ==
+ -----END PUBLIC KEY-----`,
+);
+console.log('encryption key pushed:', isPushed);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `rsaPublicKey` | `string` |
+| `options?` | `Object` |
+| `options.forceUpdate?` | `boolean` |
+
+#### Returns
+
+`Promise`<{ `isPushed`: `boolean` ; `isUpdated`: `boolean` }\>
+
+#### Defined in
+
+[src/lib/IExecResultModule.d.ts:48](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecResultModule.d.ts#L48)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecStorageModule.md b/docs/classes/IExecStorageModule.md
new file mode 100644
index 00000000..c2d36b89
--- /dev/null
+++ b/docs/classes/IExecStorageModule.md
@@ -0,0 +1,194 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecStorageModule
+
+# Class: IExecStorageModule
+
+module exposing storage methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecStorageModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecStorageModule.md#constructor)
+
+### Properties
+
+- [config](IExecStorageModule.md#config)
+
+### Methods
+
+- [checkStorageTokenExists](IExecStorageModule.md#checkstoragetokenexists)
+- [defaultStorageLogin](IExecStorageModule.md#defaultstoragelogin)
+- [pushStorageToken](IExecStorageModule.md#pushstoragetoken)
+- [fromConfig](IExecStorageModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecStorageModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### checkStorageTokenExists
+
+▸ **checkStorageTokenExists**(`beneficiaryAddress`, `options?`): `Promise`<`boolean`\>
+
+check if a storage token exists for the beneficiary in the Secret Management Service
+
+_NB_: specify the storage provider with the option `provider` (supported values `'ipfs'`|`'dropbox'` default `'ipfs'`)
+
+example:
+```js
+const isIpfsStorageInitialized = await checkStorageTokenExists(userAddress);
+console.log('IPFS storage initialized:', isIpfsStorageInitialized);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `beneficiaryAddress` | `string` |
+| `options?` | `Object` |
+| `options.provider?` | `string` |
+
+#### Returns
+
+`Promise`<`boolean`\>
+
+#### Defined in
+
+[src/lib/IExecStorageModule.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecStorageModule.d.ts#L19)
+
+___
+
+### defaultStorageLogin
+
+▸ **defaultStorageLogin**(): `Promise`<`string`\>
+
+**ONLY BENEFICIARY**
+
+get an authorization token from the default IPFS based remote storage
+
+example:
+```js
+const token = await defaultStorageLogin();
+const { isPushed } = await pushStorageToken(token);
+console.log('default storage initialized:', isPushed);
+```
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecStorageModule.d.ts:37](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecStorageModule.d.ts#L37)
+
+___
+
+### pushStorageToken
+
+▸ **pushStorageToken**(`token`, `options?`): `Promise`<{ `isPushed`: `boolean` ; `isUpdated`: `boolean` }\>
+
+**ONLY BENEFICIARY**
+
+push a personal storage token to the Secret Management Service to allow result archive upload
+
+_NB_:
+- specify the storage provider with the option `provider` (supported values `'ipfs'`|`'dropbox'` default `'ipfs'`)
+- this method will throw an error if a token already exists for the target storage provider in the Secret Management Service unless the option `forceUpdate: true` is used.
+
+example:
+- init default storage
+```js
+const token = await defaultStorageLogin();
+const { isPushed } = await pushStorageToken(token);
+console.log('default storage initialized:', isPushed);
+```
+- init dropbox storage
+```js
+const { isPushed } = await pushStorageToken(dropboxApiToken, {provider: 'dropbox'});
+console.log('dropbox storage initialized:', isPushed);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `token` | `string` |
+| `options?` | `Object` |
+| `options.forceUpdate?` | `boolean` |
+| `options.provider?` | `string` |
+
+#### Returns
+
+`Promise`<{ `isPushed`: `boolean` ; `isUpdated`: `boolean` }\>
+
+#### Defined in
+
+[src/lib/IExecStorageModule.d.ts:60](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecStorageModule.d.ts#L60)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecTaskModule.md b/docs/classes/IExecTaskModule.md
new file mode 100644
index 00000000..d290cfaf
--- /dev/null
+++ b/docs/classes/IExecTaskModule.md
@@ -0,0 +1,236 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecTaskModule
+
+# Class: IExecTaskModule
+
+module exposing task methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecTaskModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecTaskModule.md#constructor)
+
+### Properties
+
+- [config](IExecTaskModule.md#config)
+
+### Methods
+
+- [claim](IExecTaskModule.md#claim)
+- [fetchResults](IExecTaskModule.md#fetchresults)
+- [obsTask](IExecTaskModule.md#obstask)
+- [show](IExecTaskModule.md#show)
+- [fromConfig](IExecTaskModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecTaskModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### claim
+
+▸ **claim**(`taskid`): `Promise`<`string`\>
+
+claim a task not completed after the final deadline (proceed to refunds).
+
+example:
+```js
+const claimTxHash = await claim(taskid);
+console.log('task claimed:', claimTxHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `taskid` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecTaskModule.d.ts:132](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecTaskModule.d.ts#L132)
+
+___
+
+### fetchResults
+
+▸ **fetchResults**(`taskid`): `Promise`<`Response`\>
+
+**IPFS stored results only**
+
+download the specified task result.
+
+example:
+```js
+const response = await fetchResults('0x668cb3e53ebbcc9999997709586c5af07f502f6120906fa3506ce1f531cedc81');
+cosnt binary = await response.blob();
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `taskid` | `string` |
+
+#### Returns
+
+`Promise`<`Response`\>
+
+#### Defined in
+
+[src/lib/IExecTaskModule.d.ts:144](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecTaskModule.d.ts#L144)
+
+___
+
+### obsTask
+
+▸ **obsTask**(`taskid`, `optional?`): `Promise`<[`TaskObservable`](internal_.TaskObservable.md)\>
+
+return an Observable with a `subscribe` method to monitor the task status changes.
+
+_NB_: specify the `dealid` of the task to allow task monitoring when the task is not yet initialized (ACTIVE)
+
+example:
+- monitor task updates
+```js
+const taskObservable = await obsTask('0xec8045dfb0235d46c2d7ece1eadfe7741728754aed8b7efb716e9890cf3e9a8d');
+const unsubscribe = taskObservable.subscribe({
+ next: ({ message, task }) => console.log(message, task.statusName),
+ error: (e) => console.error(e),
+ complete: () => console.log('final state reached'),
+});
+// call unsubscribe() to unsubscribe from taskObservable
+```
+- wait for task completion
+```js
+const waitFinalState = (taskid, dealid) =>
+ new Promise((resolve, reject) => {
+ let taskState;
+ iexec.task.obsTask(taskid, { dealid }).subscribe({
+ next ({task}) => taskState = task,
+ error: e => reject(e),
+ complete: () => resolve(taskState),
+ });
+ });
+const task = await waitFinalState(
+ '0xec8045dfb0235d46c2d7ece1eadfe7741728754aed8b7efb716e9890cf3e9a8d',
+ '0x4246d0ddf4c4c728cedd850890ee9a6781a88e5d3c46098c0774af3b7963879b',
+);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `taskid` | `string` |
+| `optional?` | `Object` |
+| `optional.dealid?` | `string` |
+
+#### Returns
+
+`Promise`<[`TaskObservable`](internal_.TaskObservable.md)\>
+
+#### Defined in
+
+[src/lib/IExecTaskModule.d.ts:119](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecTaskModule.d.ts#L119)
+
+___
+
+### show
+
+▸ **show**(`taskid`): `Promise`<{ `consensusValue`: `string` ; `contributionDeadline`: `BN` ; `contributors`: `string`[] ; `dealid`: `string` ; `finalDeadline`: `BN` ; `idx`: `BN` ; `resultDigest`: `string` ; `results`: `string` \| { `location?`: `string` ; `storage`: `string` } ; `resultsCallback`: `string` ; `resultsTimestamp`: `BN` ; `revealCounter`: `BN` ; `revealDeadline`: `BN` ; `status`: `number` ; `statusName`: `string` ; `taskTimedOut`: `boolean` ; `taskid`: `string` ; `winnerCounter`: `BN` }\>
+
+show the details of a task.
+
+example:
+```js
+const task = await show(
+ '0xec8045dfb0235d46c2d7ece1eadfe7741728754aed8b7efb716e9890cf3e9a8d',
+);
+console.log('task:', task);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `taskid` | `string` |
+
+#### Returns
+
+`Promise`<{ `consensusValue`: `string` ; `contributionDeadline`: `BN` ; `contributors`: `string`[] ; `dealid`: `string` ; `finalDeadline`: `BN` ; `idx`: `BN` ; `resultDigest`: `string` ; `results`: `string` \| { `location?`: `string` ; `storage`: `string` } ; `resultsCallback`: `string` ; `resultsTimestamp`: `BN` ; `revealCounter`: `BN` ; `revealDeadline`: `BN` ; `status`: `number` ; `statusName`: `string` ; `taskTimedOut`: `boolean` ; `taskid`: `string` ; `winnerCounter`: `BN` }\>
+
+#### Defined in
+
+[src/lib/IExecTaskModule.d.ts:67](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecTaskModule.d.ts#L67)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecWalletModule.md b/docs/classes/IExecWalletModule.md
new file mode 100644
index 00000000..9dbe40d9
--- /dev/null
+++ b/docs/classes/IExecWalletModule.md
@@ -0,0 +1,433 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecWalletModule
+
+# Class: IExecWalletModule
+
+module exposing wallet methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecWalletModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecWalletModule.md#constructor)
+
+### Properties
+
+- [config](IExecWalletModule.md#config)
+
+### Methods
+
+- [bridgeToMainchain](IExecWalletModule.md#bridgetomainchain)
+- [bridgeToSidechain](IExecWalletModule.md#bridgetosidechain)
+- [checkBalances](IExecWalletModule.md#checkbalances)
+- [checkBridgedBalances](IExecWalletModule.md#checkbridgedbalances)
+- [getAddress](IExecWalletModule.md#getaddress)
+- [obsBridgeToMainchain](IExecWalletModule.md#obsbridgetomainchain)
+- [obsBridgeToSidechain](IExecWalletModule.md#obsbridgetosidechain)
+- [sendETH](IExecWalletModule.md#sendeth)
+- [sendRLC](IExecWalletModule.md#sendrlc)
+- [sweep](IExecWalletModule.md#sweep)
+- [unwrapEnterpriseRLC](IExecWalletModule.md#unwrapenterpriserlc)
+- [wrapEnterpriseRLC](IExecWalletModule.md#wrapenterpriserlc)
+- [fromConfig](IExecWalletModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecWalletModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### bridgeToMainchain
+
+▸ **bridgeToMainchain**(`nRLCAmount`): `Promise`<{ `receiveTxHash?`: `string` ; `sendTxHash`: `string` }\>
+
+send some nRLC to the mainchain
+
+_NB_:
+- RLC is send to the sidechain bridge smart contract on sidechain then credited on mainchain by the mainchain bridge smart contract
+- the reception of the value on the mainchain (`receiveTxHash`) will not be monitored if the bridged network configuration is missing
+
+example:
+```js
+const { sendTxHash, receiveTxHash } = await bridgeToSidechain('1000000000');
+console.log(`sent RLC on sidechain (tx: ${sendTxHash}), wallet credited on mainchain (tx: ${receiveTxHash})`);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<{ `receiveTxHash?`: `string` ; `sendTxHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:173](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L173)
+
+___
+
+### bridgeToSidechain
+
+▸ **bridgeToSidechain**(`nRLCAmount`): `Promise`<{ `receiveTxHash?`: `string` ; `sendTxHash`: `string` }\>
+
+send some nRLC to the sidechain
+
+_NB_:
+- RLC is send to the mainchain bridge smart contract on mainchain then credited on sidechain by the sidechain bridge smart contract
+- the reception of the value on the sidechain (`receiveTxHash`) will not be monitored if the bridged network configuration is missing
+
+example:
+```js
+const { sendTxHash, receiveTxHash } = await bridgeToSidechain('1000000000');
+console.log(`sent RLC on mainchain (tx: ${sendTxHash}), wallet credited on sidechain (tx: ${receiveTxHash})`);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<{ `receiveTxHash?`: `string` ; `sendTxHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:157](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L157)
+
+___
+
+### checkBalances
+
+▸ **checkBalances**(`address`): `Promise`<{ `nRLC`: `BN` ; `wei`: `BN` }\>
+
+check the wallet balances (native and iExec token) of specified address
+
+example:
+```js
+const { wei, nRLC } = await checkBalances(address);
+console.log('iExec nano RLC:', nRLC.toString());
+console.log('ethereum wei:', wei.toString());
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `nRLC`: `BN` ; `wei`: `BN` }\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:93](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L93)
+
+___
+
+### checkBridgedBalances
+
+▸ **checkBridgedBalances**(`address`): `Promise`<{ `nRLC`: `BN` ; `wei`: `BN` }\>
+
+check the wallet balances (native and iExec token) of specified address on bridged chain
+
+example:
+```js
+const { wei, nRLC } = await checkBalances(address);
+console.log('iExec nano RLC:', nRLC.toString());
+console.log('ethereum wei:', wei.toString());
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `nRLC`: `BN` ; `wei`: `BN` }\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:107](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L107)
+
+___
+
+### getAddress
+
+▸ **getAddress**(): `Promise`<`string`\>
+
+get the connected wallet address
+
+example:
+```js
+const userAddress = await getAddress();
+console.log('user address:', userAddress);
+```
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:82](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L82)
+
+___
+
+### obsBridgeToMainchain
+
+▸ **obsBridgeToMainchain**(`nRLCAmount`): `Promise`<[`BrigdeObservable`](internal_.BrigdeObservable.md)\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<[`BrigdeObservable`](internal_.BrigdeObservable.md)\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:203](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L203)
+
+___
+
+### obsBridgeToSidechain
+
+▸ **obsBridgeToSidechain**(`nRLCAmount`): `Promise`<[`BrigdeObservable`](internal_.BrigdeObservable.md)\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<[`BrigdeObservable`](internal_.BrigdeObservable.md)\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:189](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L189)
+
+___
+
+### sendETH
+
+▸ **sendETH**(`WeiAmount`, `to`): `Promise`<`string`\>
+
+send some wei to the specified address
+
+example:
+```js
+const txHash = await sendETH(amount, receiverAddress);
+console.log('transaction hash:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `WeiAmount` | [`WeiAmount`](../modules/internal_.md#weiamount) |
+| `to` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:120](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L120)
+
+___
+
+### sendRLC
+
+▸ **sendRLC**(`nRLCAmount`, `to`): `Promise`<`string`\>
+
+send some nRLC to the specified address
+
+example:
+```js
+const txHash = await sendRLC(amount, receiverAddress);
+console.log('transaction hash:', txHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+| `to` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:130](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L130)
+
+___
+
+### sweep
+
+▸ **sweep**(`to`): `Promise`<{ `sendERC20TxHash`: `string` ; `sendNativeTxHash`: `string` }\>
+
+send all the iExec token and the native token owned by the wallet to the specified address
+
+example:
+```js
+const { sendERC20TxHash, sendNativeTxHash } = await sweep(receiverAddress);
+console.log('sweep RLC transaction hash:', sendERC20TxHash);
+console.log('sweep ether transaction hash:', sendNativeTxHash);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `to` | `string` |
+
+#### Returns
+
+`Promise`<{ `sendERC20TxHash`: `string` ; `sendNativeTxHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:141](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L141)
+
+___
+
+### unwrapEnterpriseRLC
+
+▸ **unwrapEnterpriseRLC**(`nRLCAmount`): `Promise`<`string`\>
+
+**ONLY ERLC WHITELISTED ACCOUNTS**
+
+unwrap some neRLC (enterprise nRLC) into nRLC
+
+example:
+```js
+const txHash = await unwrapEnterpriseRLC(amount);
+console.log(`unwrapped ${amount} neRLC into nRLC (tx: ${txHash})`);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:227](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L227)
+
+___
+
+### wrapEnterpriseRLC
+
+▸ **wrapEnterpriseRLC**(`nRLCAmount`): `Promise`<`string`\>
+
+**ONLY ERLC WHITELISTED ACCOUNTS**
+
+wrap some nRLC into neRLC (enterprise nRLC)
+
+example:
+```js
+const txHash = await wrapEnterpriseRLC(amount);
+console.log(`wrapped ${amount} nRLC into neRLC (tx: ${txHash})`);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLCAmount` | [`NRLCAmount`](../modules/internal_.md#nrlcamount) |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:215](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L215)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/IExecWorkerpoolModule.md b/docs/classes/IExecWorkerpoolModule.md
new file mode 100644
index 00000000..d799fe68
--- /dev/null
+++ b/docs/classes/IExecWorkerpoolModule.md
@@ -0,0 +1,212 @@
+[iexec](../README.md) / [Exports](../modules.md) / IExecWorkerpoolModule
+
+# Class: IExecWorkerpoolModule
+
+module exposing workerpool methods
+
+## Hierarchy
+
+- [`IExecModule`](IExecModule.md)
+
+ ↳ **`IExecWorkerpoolModule`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](IExecWorkerpoolModule.md#constructor)
+
+### Properties
+
+- [config](IExecWorkerpoolModule.md#config)
+
+### Methods
+
+- [countUserWorkerpools](IExecWorkerpoolModule.md#countuserworkerpools)
+- [deployWorkerpool](IExecWorkerpoolModule.md#deployworkerpool)
+- [showUserWorkerpool](IExecWorkerpoolModule.md#showuserworkerpool)
+- [showWorkerpool](IExecWorkerpoolModule.md#showworkerpool)
+- [fromConfig](IExecWorkerpoolModule.md#fromconfig)
+
+## Constructors
+
+### constructor
+
+• **new IExecWorkerpoolModule**(`configOrArgs`, `options?`)
+
+Create an IExecModule instance using an IExecConfig like
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `configOrArgs` | [`IExecConfig`](IExecConfig.md) \| [`IExecConfigArgs`](../interfaces/internal_.IExecConfigArgs.md) |
+| `options?` | [`IExecConfigOptions`](../interfaces/internal_.IExecConfigOptions.md) |
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[constructor](IExecModule.md#constructor)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:13](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L13)
+
+## Properties
+
+### config
+
+• **config**: [`IExecConfig`](IExecConfig.md)
+
+current IExecConfig
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[config](IExecModule.md#config)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L20)
+
+## Methods
+
+### countUserWorkerpools
+
+▸ **countUserWorkerpools**(`userAddress`): `Promise`<`BN`\>
+
+count the workerpools owned by an address.
+
+example:
+```js
+const count = await countUserWorkerpools(userAddress);
+console.log('workerpool count:', count);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `userAddress` | `string` |
+
+#### Returns
+
+`Promise`<`BN`\>
+
+#### Defined in
+
+[src/lib/IExecWorkerpoolModule.d.ts:65](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWorkerpoolModule.d.ts#L65)
+
+___
+
+### deployWorkerpool
+
+▸ **deployWorkerpool**(`workerpool`): `Promise`<{ `address`: `string` ; `txHash`: `string` }\>
+
+deploy a workerpool contract on the blockchain
+
+example:
+```js
+const { address } = await deployWorkerpool({
+ owner: address,
+ description: 'My workerpool',
+});
+console.log('deployed at', address);
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `workerpool` | `Object` | - |
+| `workerpool.description` | `string` | a description for the workerpool |
+| `workerpool.owner` | `string` | the workerpool owner |
+
+#### Returns
+
+`Promise`<{ `address`: `string` ; `txHash`: `string` }\>
+
+#### Defined in
+
+[src/lib/IExecWorkerpoolModule.d.ts:34](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWorkerpoolModule.d.ts#L34)
+
+___
+
+### showUserWorkerpool
+
+▸ **showUserWorkerpool**(`index`, `address`): `Promise`<{ `objAddress`: `string` ; `workerpool`: [`Workerpool`](../interfaces/internal_.Workerpool.md) }\>
+
+show deployed workerpool details by index for specified user user
+
+example:
+```js
+const { workerpool } = await showUserWorkerpool(0, userAddress);
+console.log('workerpool:', workerpool);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `index` | [`BNish`](../modules/internal_.md#bnish) |
+| `address` | `string` |
+
+#### Returns
+
+`Promise`<{ `objAddress`: `string` ; `workerpool`: [`Workerpool`](../interfaces/internal_.Workerpool.md) }\>
+
+#### Defined in
+
+[src/lib/IExecWorkerpoolModule.d.ts:75](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWorkerpoolModule.d.ts#L75)
+
+___
+
+### showWorkerpool
+
+▸ **showWorkerpool**(`workerpoolAddress`): `Promise`<{ `objAddress`: `string` ; `workerpool`: [`Workerpool`](../interfaces/internal_.Workerpool.md) }\>
+
+show a deployed workerpool details
+
+example:
+```js
+const { workerpool } = await showWorkerpool('0x86F2102532d9d01DA8084c96c1D1Bdb90e12Bf07');
+console.log('workerpool:', workerpool);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `workerpoolAddress` | `string` |
+
+#### Returns
+
+`Promise`<{ `objAddress`: `string` ; `workerpool`: [`Workerpool`](../interfaces/internal_.Workerpool.md) }\>
+
+#### Defined in
+
+[src/lib/IExecWorkerpoolModule.d.ts:53](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWorkerpoolModule.d.ts#L53)
+
+___
+
+### fromConfig
+
+▸ `Static` **fromConfig**(`config`): [`IExecModule`](IExecModule.md)
+
+Create an IExecModule using an IExecConfig instance
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `config` | [`IExecConfig`](IExecConfig.md) |
+
+#### Returns
+
+[`IExecModule`](IExecModule.md)
+
+#### Inherited from
+
+[IExecModule](IExecModule.md).[fromConfig](IExecModule.md#fromconfig)
+
+#### Defined in
+
+[src/lib/IExecModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecModule.d.ts#L24)
diff --git a/docs/classes/errors.BridgeError.md b/docs/classes/errors.BridgeError.md
new file mode 100644
index 00000000..db6eef5f
--- /dev/null
+++ b/docs/classes/errors.BridgeError.md
@@ -0,0 +1,64 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / BridgeError
+
+# Class: BridgeError
+
+[errors](../modules/errors.md).BridgeError
+
+BridgeError is thrown when bridging RLC between mainchain and sidechain fail before the value transfert confirmation.
+
+## Hierarchy
+
+- `Error`
+
+ ↳ **`BridgeError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.BridgeError.md#constructor)
+
+### Properties
+
+- [originalError](errors.BridgeError.md#originalerror)
+- [sendTxHash](errors.BridgeError.md#sendtxhash)
+
+## Constructors
+
+### constructor
+
+• **new BridgeError**(`message?`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `message?` | `string` |
+
+#### Inherited from
+
+Error.constructor
+
+#### Defined in
+
+node_modules/typescript/lib/lib.es5.d.ts:1028
+
+## Properties
+
+### originalError
+
+• `Optional` **originalError**: `Error`
+
+#### Defined in
+
+[src/lib/errors.d.ts:43](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L43)
+
+___
+
+### sendTxHash
+
+• `Optional` **sendTxHash**: `string`
+
+#### Defined in
+
+[src/lib/errors.d.ts:42](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L42)
diff --git a/docs/classes/errors.ConfigurationError.md b/docs/classes/errors.ConfigurationError.md
new file mode 100644
index 00000000..1618e6e4
--- /dev/null
+++ b/docs/classes/errors.ConfigurationError.md
@@ -0,0 +1,39 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / ConfigurationError
+
+# Class: ConfigurationError
+
+[errors](../modules/errors.md).ConfigurationError
+
+ValidationError is thrown when the current configuration does not allow tu perfome a specific operation
+
+## Hierarchy
+
+- `Error`
+
+ ↳ **`ConfigurationError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.ConfigurationError.md#constructor)
+
+## Constructors
+
+### constructor
+
+• **new ConfigurationError**(`message?`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `message?` | `string` |
+
+#### Inherited from
+
+Error.constructor
+
+#### Defined in
+
+node_modules/typescript/lib/lib.es5.d.ts:1028
diff --git a/docs/classes/errors.ObjectNotFoundError.md b/docs/classes/errors.ObjectNotFoundError.md
new file mode 100644
index 00000000..5ac65462
--- /dev/null
+++ b/docs/classes/errors.ObjectNotFoundError.md
@@ -0,0 +1,77 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / ObjectNotFoundError
+
+# Class: ObjectNotFoundError
+
+[errors](../modules/errors.md).ObjectNotFoundError
+
+ObjectNotFoundError is thrown when trying to access an unknown resource.
+
+## Hierarchy
+
+- `Error`
+
+ ↳ **`ObjectNotFoundError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.ObjectNotFoundError.md#constructor)
+
+### Properties
+
+- [chainId](errors.ObjectNotFoundError.md#chainid)
+- [objId](errors.ObjectNotFoundError.md#objid)
+- [objName](errors.ObjectNotFoundError.md#objname)
+
+## Constructors
+
+### constructor
+
+• **new ObjectNotFoundError**(`objName`, `objId`, `chainId`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `objName` | `string` |
+| `objId` | `string` |
+| `chainId` | `string` |
+
+#### Overrides
+
+Error.constructor
+
+#### Defined in
+
+[src/lib/errors.d.ts:33](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L33)
+
+## Properties
+
+### chainId
+
+• `Optional` **chainId**: `string`
+
+#### Defined in
+
+[src/lib/errors.d.ts:36](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L36)
+
+___
+
+### objId
+
+• `Optional` **objId**: `string`
+
+#### Defined in
+
+[src/lib/errors.d.ts:35](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L35)
+
+___
+
+### objName
+
+• `Optional` **objName**: `string`
+
+#### Defined in
+
+[src/lib/errors.d.ts:34](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L34)
diff --git a/docs/classes/errors.ValidationError.md b/docs/classes/errors.ValidationError.md
new file mode 100644
index 00000000..f29ce1fa
--- /dev/null
+++ b/docs/classes/errors.ValidationError.md
@@ -0,0 +1,42 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / ValidationError
+
+# Class: ValidationError
+
+[errors](../modules/errors.md).ValidationError
+
+ValidationError is thrown when a method is called with missing or unexpected parameters.
+
+## Hierarchy
+
+- `default`
+
+ ↳ **`ValidationError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.ValidationError.md#constructor)
+
+## Constructors
+
+### constructor
+
+• **new ValidationError**(`errorOrErrors`, `value?`, `field?`, `type?`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `errorOrErrors` | `string` \| `default` \| `default`[] |
+| `value?` | `any` |
+| `field?` | `string` |
+| `type?` | `string` |
+
+#### Inherited from
+
+YupValidationError.constructor
+
+#### Defined in
+
+node_modules/yup/lib/ValidationError.d.ts:11
diff --git a/docs/classes/errors.Web3ProviderCallError.md b/docs/classes/errors.Web3ProviderCallError.md
new file mode 100644
index 00000000..c5f82ba5
--- /dev/null
+++ b/docs/classes/errors.Web3ProviderCallError.md
@@ -0,0 +1,58 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / Web3ProviderCallError
+
+# Class: Web3ProviderCallError
+
+[errors](../modules/errors.md).Web3ProviderCallError
+
+Web3ProviderCallError encapsulate an error thrown by the web3 provider during a web3 call.
+
+## Hierarchy
+
+- [`Web3ProviderError`](errors.Web3ProviderError.md)
+
+ ↳ **`Web3ProviderCallError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.Web3ProviderCallError.md#constructor)
+
+### Properties
+
+- [originalError](errors.Web3ProviderCallError.md#originalerror)
+
+## Constructors
+
+### constructor
+
+• **new Web3ProviderCallError**(`message`, `originalError`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `message` | `string` |
+| `originalError` | `Error` |
+
+#### Inherited from
+
+[Web3ProviderError](errors.Web3ProviderError.md).[constructor](errors.Web3ProviderError.md#constructor)
+
+#### Defined in
+
+[src/lib/errors.d.ts:14](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L14)
+
+## Properties
+
+### originalError
+
+• `Optional` **originalError**: `Error`
+
+#### Inherited from
+
+[Web3ProviderError](errors.Web3ProviderError.md).[originalError](errors.Web3ProviderError.md#originalerror)
+
+#### Defined in
+
+[src/lib/errors.d.ts:15](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L15)
diff --git a/docs/classes/errors.Web3ProviderError.md b/docs/classes/errors.Web3ProviderError.md
new file mode 100644
index 00000000..ddea0ee6
--- /dev/null
+++ b/docs/classes/errors.Web3ProviderError.md
@@ -0,0 +1,60 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / Web3ProviderError
+
+# Class: Web3ProviderError
+
+[errors](../modules/errors.md).Web3ProviderError
+
+Web3ProviderError encapsulate an error thrown by the web3 provider.
+
+## Hierarchy
+
+- `Error`
+
+ ↳ **`Web3ProviderError`**
+
+ ↳↳ [`Web3ProviderCallError`](errors.Web3ProviderCallError.md)
+
+ ↳↳ [`Web3ProviderSendError`](errors.Web3ProviderSendError.md)
+
+ ↳↳ [`Web3ProviderSignMessageError`](errors.Web3ProviderSignMessageError.md)
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.Web3ProviderError.md#constructor)
+
+### Properties
+
+- [originalError](errors.Web3ProviderError.md#originalerror)
+
+## Constructors
+
+### constructor
+
+• **new Web3ProviderError**(`message`, `originalError`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `message` | `string` |
+| `originalError` | `Error` |
+
+#### Overrides
+
+Error.constructor
+
+#### Defined in
+
+[src/lib/errors.d.ts:14](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L14)
+
+## Properties
+
+### originalError
+
+• `Optional` **originalError**: `Error`
+
+#### Defined in
+
+[src/lib/errors.d.ts:15](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L15)
diff --git a/docs/classes/errors.Web3ProviderSendError.md b/docs/classes/errors.Web3ProviderSendError.md
new file mode 100644
index 00000000..ed7cbc59
--- /dev/null
+++ b/docs/classes/errors.Web3ProviderSendError.md
@@ -0,0 +1,58 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / Web3ProviderSendError
+
+# Class: Web3ProviderSendError
+
+[errors](../modules/errors.md).Web3ProviderSendError
+
+Web3ProviderSendError encapsulate an error thrown by the web3 provider during a transaction.
+
+## Hierarchy
+
+- [`Web3ProviderError`](errors.Web3ProviderError.md)
+
+ ↳ **`Web3ProviderSendError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.Web3ProviderSendError.md#constructor)
+
+### Properties
+
+- [originalError](errors.Web3ProviderSendError.md#originalerror)
+
+## Constructors
+
+### constructor
+
+• **new Web3ProviderSendError**(`message`, `originalError`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `message` | `string` |
+| `originalError` | `Error` |
+
+#### Inherited from
+
+[Web3ProviderError](errors.Web3ProviderError.md).[constructor](errors.Web3ProviderError.md#constructor)
+
+#### Defined in
+
+[src/lib/errors.d.ts:14](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L14)
+
+## Properties
+
+### originalError
+
+• `Optional` **originalError**: `Error`
+
+#### Inherited from
+
+[Web3ProviderError](errors.Web3ProviderError.md).[originalError](errors.Web3ProviderError.md#originalerror)
+
+#### Defined in
+
+[src/lib/errors.d.ts:15](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L15)
diff --git a/docs/classes/errors.Web3ProviderSignMessageError.md b/docs/classes/errors.Web3ProviderSignMessageError.md
new file mode 100644
index 00000000..abc034cc
--- /dev/null
+++ b/docs/classes/errors.Web3ProviderSignMessageError.md
@@ -0,0 +1,58 @@
+[iexec](../README.md) / [Exports](../modules.md) / [errors](../modules/errors.md) / Web3ProviderSignMessageError
+
+# Class: Web3ProviderSignMessageError
+
+[errors](../modules/errors.md).Web3ProviderSignMessageError
+
+Web3ProviderSignMessageError encapsulate an error thrown by the web3 provider during a message signature.
+
+## Hierarchy
+
+- [`Web3ProviderError`](errors.Web3ProviderError.md)
+
+ ↳ **`Web3ProviderSignMessageError`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](errors.Web3ProviderSignMessageError.md#constructor)
+
+### Properties
+
+- [originalError](errors.Web3ProviderSignMessageError.md#originalerror)
+
+## Constructors
+
+### constructor
+
+• **new Web3ProviderSignMessageError**(`message`, `originalError`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `message` | `string` |
+| `originalError` | `Error` |
+
+#### Inherited from
+
+[Web3ProviderError](errors.Web3ProviderError.md).[constructor](errors.Web3ProviderError.md#constructor)
+
+#### Defined in
+
+[src/lib/errors.d.ts:14](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L14)
+
+## Properties
+
+### originalError
+
+• `Optional` **originalError**: `Error`
+
+#### Inherited from
+
+[Web3ProviderError](errors.Web3ProviderError.md).[originalError](errors.Web3ProviderError.md#originalerror)
+
+#### Defined in
+
+[src/lib/errors.d.ts:15](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/errors.d.ts#L15)
diff --git a/docs/classes/internal_.BrigdeObservable.md b/docs/classes/internal_.BrigdeObservable.md
new file mode 100644
index 00000000..aa646e37
--- /dev/null
+++ b/docs/classes/internal_.BrigdeObservable.md
@@ -0,0 +1,96 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / BrigdeObservable
+
+# Class: BrigdeObservable
+
+[{internal}](../modules/internal_.md).BrigdeObservable
+
+## Hierarchy
+
+- [`Observable`](internal_.Observable.md)
+
+ ↳ **`BrigdeObservable`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](internal_.BrigdeObservable.md#constructor)
+
+### Methods
+
+- [subscribe](internal_.BrigdeObservable.md#subscribe)
+
+## Constructors
+
+### constructor
+
+• **new BrigdeObservable**()
+
+#### Inherited from
+
+[Observable](internal_.Observable.md).[constructor](internal_.Observable.md#constructor)
+
+## Methods
+
+### subscribe
+
+▸ **subscribe**(`callbacks`): () => `void`
+
+subscribe and start the bridge process to transfer tokens from one chain to another until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned cancel method.
+
+return the `cancel: () => void` method.
+
+data:
+| message | comment | additional entries |
+| --- | --- | --- |
+| `CHECK_BRIDGE_POLICY` | sent once | |
+| `BRIDGE_POLICY_CHECKED` | sent once | `minPerTx`,`maxPerTx`,`dailyLimit` |
+| `CHECK_BRIDGE_LIMIT` | sent once | |
+| `BRIDGE_LIMIT_CHECKED` | sent once | `totalSpentPerDay` |
+| `SEND_TO_BRIDGE_TX_REQUEST` | sent once | `bridgeAddress` |
+| `SEND_TO_BRIDGE_TX_SUCCESS` | sent once | `txHash` |
+| `WAIT_RECEIVE_TX` | sent once if the bridged chain is configured | `bridgeAddress` |
+| `RECEIVE_TX_SUCCESS` | sent once if the bridged chain is configured | `txHash` |
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `callbacks` | `Object` |
+| `callbacks.complete` | () => `any` |
+| `callbacks.error` | (`error`: `Error`) => `any` |
+| `callbacks.next` | (`data`: { `bridgeAddress?`: `string` ; `dailyLimit?`: `BN` ; `maxPerTx?`: `BN` ; `message`: `string` ; `minPerTx?`: `BN` ; `totalSpentPerDay?`: `BN` ; `txHash?`: `string` }) => `any` |
+
+#### Returns
+
+`fn`
+
+▸ (): `void`
+
+subscribe and start the bridge process to transfer tokens from one chain to another until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned cancel method.
+
+return the `cancel: () => void` method.
+
+data:
+| message | comment | additional entries |
+| --- | --- | --- |
+| `CHECK_BRIDGE_POLICY` | sent once | |
+| `BRIDGE_POLICY_CHECKED` | sent once | `minPerTx`,`maxPerTx`,`dailyLimit` |
+| `CHECK_BRIDGE_LIMIT` | sent once | |
+| `BRIDGE_LIMIT_CHECKED` | sent once | `totalSpentPerDay` |
+| `SEND_TO_BRIDGE_TX_REQUEST` | sent once | `bridgeAddress` |
+| `SEND_TO_BRIDGE_TX_SUCCESS` | sent once | `txHash` |
+| `WAIT_RECEIVE_TX` | sent once if the bridged chain is configured | `bridgeAddress` |
+| `RECEIVE_TX_SUCCESS` | sent once if the bridged chain is configured | `txHash` |
+
+##### Returns
+
+`void`
+
+#### Overrides
+
+[Observable](internal_.Observable.md).[subscribe](internal_.Observable.md#subscribe)
+
+#### Defined in
+
+[src/lib/IExecWalletModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWalletModule.d.ts#L24)
diff --git a/docs/classes/internal_.DealObservable.md b/docs/classes/internal_.DealObservable.md
new file mode 100644
index 00000000..55633b41
--- /dev/null
+++ b/docs/classes/internal_.DealObservable.md
@@ -0,0 +1,86 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / DealObservable
+
+# Class: DealObservable
+
+[{internal}](../modules/internal_.md).DealObservable
+
+## Hierarchy
+
+- [`Observable`](internal_.Observable.md)
+
+ ↳ **`DealObservable`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](internal_.DealObservable.md#constructor)
+
+### Methods
+
+- [subscribe](internal_.DealObservable.md#subscribe)
+
+## Constructors
+
+### constructor
+
+• **new DealObservable**()
+
+#### Inherited from
+
+[Observable](internal_.Observable.md).[constructor](internal_.Observable.md#constructor)
+
+## Methods
+
+### subscribe
+
+▸ **subscribe**(`callbacks`): () => `void`
+
+subscribe to deal updates via an Observer until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned unsubscribe method.
+
+return the `unsubscribe: () => void` method.
+
+data:
+| message | comment |
+| --- | --- |
+| `DEAL_UPDATED` | sent every time a task status changes |
+| `DEAL_COMPLETED` | sent once all tasks are complteted |
+| `DEAL_TIMEDOUT` | sent once the timeout is reached before all tasks completion |
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `callbacks` | `Object` |
+| `callbacks.complete` | () => `any` |
+| `callbacks.error` | (`error`: `Error`) => `any` |
+| `callbacks.next` | (`data`: { `completedTasksCount`: `number` ; `deal`: { `app`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } ; `beneficiary`: `string` ; `botFirst`: `BN` ; `botSize`: `BN` ; `callback`: `string` ; `category`: `BN` ; `dataset`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } ; `deadlineReached`: `boolean` ; `dealid`: `string` ; `finalTime`: `BN` ; `params`: `string` ; `requester`: `string` ; `schedulerRewardRatio`: `BN` ; `startTime`: `BN` ; `tag`: `string` ; `tasks`: `string`[] ; `trust`: `BN` ; `workerStake`: `BN` ; `workerpool`: { `owner`: `string` ; `pointer`: `string` ; `price`: `BN` } } ; `failedTaksCount`: `number` ; `message`: `string` ; `taskCount`: `number` ; `tasks`: { `consensusValue`: `string` ; `contributionDeadline`: `BN` ; `contributors`: `string`[] ; `dealid`: `string` ; `finalDeadline`: `BN` ; `idx`: `BN` ; `resultDigest`: `string` ; `results`: `string` \| { `location?`: `string` ; `storage`: `string` } ; `resultsCallback`: `string` ; `resultsTimestamp`: `BN` ; `revealCounter`: `BN` ; `revealDeadline`: `BN` ; `status`: `number` ; `statusName`: `string` ; `taskTimedOut`: `boolean` ; `taskid`: `string` ; `winnerCounter`: `BN` }[] }) => `any` |
+
+#### Returns
+
+`fn`
+
+▸ (): `void`
+
+subscribe to deal updates via an Observer until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned unsubscribe method.
+
+return the `unsubscribe: () => void` method.
+
+data:
+| message | comment |
+| --- | --- |
+| `DEAL_UPDATED` | sent every time a task status changes |
+| `DEAL_COMPLETED` | sent once all tasks are complteted |
+| `DEAL_TIMEDOUT` | sent once the timeout is reached before all tasks completion |
+
+##### Returns
+
+`void`
+
+#### Overrides
+
+[Observable](internal_.Observable.md).[subscribe](internal_.Observable.md#subscribe)
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:30](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L30)
diff --git a/docs/classes/internal_.ENSConfigurationObservable.md b/docs/classes/internal_.ENSConfigurationObservable.md
new file mode 100644
index 00000000..17484065
--- /dev/null
+++ b/docs/classes/internal_.ENSConfigurationObservable.md
@@ -0,0 +1,106 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / ENSConfigurationObservable
+
+# Class: ENSConfigurationObservable
+
+[{internal}](../modules/internal_.md).ENSConfigurationObservable
+
+## Hierarchy
+
+- [`Observable`](internal_.Observable.md)
+
+ ↳ **`ENSConfigurationObservable`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](internal_.ENSConfigurationObservable.md#constructor)
+
+### Methods
+
+- [subscribe](internal_.ENSConfigurationObservable.md#subscribe)
+
+## Constructors
+
+### constructor
+
+• **new ENSConfigurationObservable**()
+
+#### Inherited from
+
+[Observable](internal_.Observable.md).[constructor](internal_.Observable.md#constructor)
+
+## Methods
+
+### subscribe
+
+▸ **subscribe**(`callbacks`): () => `void`
+
+subscribe and start the ENS configuration process until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned cancel method.
+
+return the `cancel: () => void` method.
+
+data:
+| message | comment | additional entries |
+| --- | --- | --- |
+| `DESCRIBE_WORKFLOW` | sent once | `addressType`,`steps` |
+| `SET_RESOLVER_TX_REQUEST` | sent once if resolver is not set | `name`,`resolverAddress` |
+| `SET_RESOLVER_TX_SENT` | sent once if resolver is not set | `txHash` |
+| `SET_RESOLVER_SUCCESS` | sent once | `name`,`resolverAddress` |
+| `SET_ADDR_TX_REQUEST` | sent once if addr is not set | `name`,`address` |
+| `SET_ADDR_TX_SENT` | sent once if addr is not set | `txHash` |
+| `SET_ADDR_SUCCESS` | sent once | `name`,`address` |
+| `CLAIM_REVERSE_WITH_RESOLVER_TX_REQUEST` | sent once if address type is EAO and reverse address is not claimed | `address`,`resolverAddress` |
+| `CLAIM_REVERSE_WITH_RESOLVER_TX_SENT` | sent once if address type is EAO and reverse address is not claimed | `txHash` |
+| `CLAIM_REVERSE_WITH_RESOLVER_SUCCESS` | sent once if address type is EAO | `address`,`resolverAddress` |
+| `SET_NAME_TX_REQUEST` | sent once if the name is not set | `name`,`address` |
+| `SET_NAME_TX_SENT` | sent once if the name is not set | `txHash` |
+| `SET_NAME_SUCCESS` | sent once | `name`,`address` |
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `callbacks` | `Object` |
+| `callbacks.complete` | () => `any` |
+| `callbacks.error` | (`error`: `Error`) => `any` |
+| `callbacks.next` | (`data`: { `address?`: `string` ; `addressType?`: `string` ; `message`: `string` ; `name?`: `string` ; `resolverAddress?`: `string` ; `steps?`: `string`[] ; `txHash?`: `string` }) => `any` |
+
+#### Returns
+
+`fn`
+
+▸ (): `void`
+
+subscribe and start the ENS configuration process until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned cancel method.
+
+return the `cancel: () => void` method.
+
+data:
+| message | comment | additional entries |
+| --- | --- | --- |
+| `DESCRIBE_WORKFLOW` | sent once | `addressType`,`steps` |
+| `SET_RESOLVER_TX_REQUEST` | sent once if resolver is not set | `name`,`resolverAddress` |
+| `SET_RESOLVER_TX_SENT` | sent once if resolver is not set | `txHash` |
+| `SET_RESOLVER_SUCCESS` | sent once | `name`,`resolverAddress` |
+| `SET_ADDR_TX_REQUEST` | sent once if addr is not set | `name`,`address` |
+| `SET_ADDR_TX_SENT` | sent once if addr is not set | `txHash` |
+| `SET_ADDR_SUCCESS` | sent once | `name`,`address` |
+| `CLAIM_REVERSE_WITH_RESOLVER_TX_REQUEST` | sent once if address type is EAO and reverse address is not claimed | `address`,`resolverAddress` |
+| `CLAIM_REVERSE_WITH_RESOLVER_TX_SENT` | sent once if address type is EAO and reverse address is not claimed | `txHash` |
+| `CLAIM_REVERSE_WITH_RESOLVER_SUCCESS` | sent once if address type is EAO | `address`,`resolverAddress` |
+| `SET_NAME_TX_REQUEST` | sent once if the name is not set | `name`,`address` |
+| `SET_NAME_TX_SENT` | sent once if the name is not set | `txHash` |
+| `SET_NAME_SUCCESS` | sent once | `name`,`address` |
+
+##### Returns
+
+`void`
+
+#### Overrides
+
+[Observable](internal_.Observable.md).[subscribe](internal_.Observable.md#subscribe)
+
+#### Defined in
+
+[src/lib/IExecENSModule.d.ts:28](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecENSModule.d.ts#L28)
diff --git a/docs/classes/internal_.IExecContractsClient.md b/docs/classes/internal_.IExecContractsClient.md
new file mode 100644
index 00000000..8c664e4b
--- /dev/null
+++ b/docs/classes/internal_.IExecContractsClient.md
@@ -0,0 +1,322 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / IExecContractsClient
+
+# Class: IExecContractsClient
+
+[{internal}](../modules/internal_.md).IExecContractsClient
+
+## Table of contents
+
+### Constructors
+
+- [constructor](internal_.IExecContractsClient.md#constructor)
+
+### Properties
+
+- [chainId](internal_.IExecContractsClient.md#chainid)
+- [confirms](internal_.IExecContractsClient.md#confirms)
+- [flavour](internal_.IExecContractsClient.md#flavour)
+- [hubAddress](internal_.IExecContractsClient.md#hubaddress)
+- [isNative](internal_.IExecContractsClient.md#isnative)
+- [pocoVersion](internal_.IExecContractsClient.md#pocoversion)
+- [provider](internal_.IExecContractsClient.md#provider)
+- [signer](internal_.IExecContractsClient.md#signer)
+- [txOptions](internal_.IExecContractsClient.md#txoptions)
+
+### Methods
+
+- [fetchRegistryAddress](internal_.IExecContractsClient.md#fetchregistryaddress)
+- [fetchRegistryContract](internal_.IExecContractsClient.md#fetchregistrycontract)
+- [fetchTokenAddress](internal_.IExecContractsClient.md#fetchtokenaddress)
+- [fetchTokenContract](internal_.IExecContractsClient.md#fetchtokencontract)
+- [getContract](internal_.IExecContractsClient.md#getcontract)
+- [getIExecContract](internal_.IExecContractsClient.md#getiexeccontract)
+- [setSigner](internal_.IExecContractsClient.md#setsigner)
+
+## Constructors
+
+### constructor
+
+• **new IExecContractsClient**(`args`)
+
+Create a client for IExec contracts
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `args` | `Object` | - |
+| `args.chainId` | `string` \| `number` | id of the chain to use (used to resolve IExec contract address) |
+| `args.confirms?` | `number` | number of block to wait for transactions confirmation (default 1) |
+| `args.flavour?` | `string` | flavour to use (default standard) |
+| `args.hubAddress?` | `string` | override the IExec contract address to target a custom instance |
+| `args.isNative?` | `boolean` | true if IExec contract use the chain native token |
+| `args.provider` | `Provider` | ethers Provider |
+| `args.signer?` | `Signer` | ethers Signer, required to sign transactions and messages |
+| `args.useGas?` | `boolean` | if false set the gasPrice to 0 (default true) |
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:9](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L9)
+
+## Properties
+
+### chainId
+
+• **chainId**: `string`
+
+current chainId
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:54](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L54)
+
+___
+
+### confirms
+
+• **confirms**: `number`
+
+number of block to wait for transactions confirmation
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:83](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L83)
+
+___
+
+### flavour
+
+• **flavour**: `string`
+
+current IExec flavour
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:62](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L62)
+
+___
+
+### hubAddress
+
+• **hubAddress**: `string`
+
+current IExec contract address
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:66](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L66)
+
+___
+
+### isNative
+
+• **isNative**: `string`
+
+true if current instance use native token
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:58](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L58)
+
+___
+
+### pocoVersion
+
+• **pocoVersion**: `string`
+
+IExec PoCo ABI version
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:70](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L70)
+
+___
+
+### provider
+
+• **provider**: `Provider`
+
+current Provider
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:46](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L46)
+
+___
+
+### signer
+
+• `Optional` **signer**: `Signer`
+
+current Signer
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:50](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L50)
+
+___
+
+### txOptions
+
+• **txOptions**: `Object`
+
+transaction options
+
+#### Type declaration
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `gasPrice?` | `string` | gasPrice override |
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:74](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L74)
+
+## Methods
+
+### fetchRegistryAddress
+
+▸ **fetchRegistryAddress**(`resourceName`): `Promise`<`string`\>
+
+fetch the IExec registry contract address of specified resource
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `resourceName` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:103](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L103)
+
+___
+
+### fetchRegistryContract
+
+▸ **fetchRegistryContract**(`resourceName`): `Promise`<`Contract`\>
+
+fetch the IExec registry Contract instance of specified resource
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `resourceName` | `string` |
+
+#### Returns
+
+`Promise`<`Contract`\>
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:99](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L99)
+
+___
+
+### fetchTokenAddress
+
+▸ **fetchTokenAddress**(`resourceName`): `Promise`<`string`\>
+
+fetch the IExec token contract address, not available when isNative is true
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `resourceName` | `string` |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:111](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L111)
+
+___
+
+### fetchTokenContract
+
+▸ `Optional` **fetchTokenContract**(`resourceName`): `Promise`<`Contract`\>
+
+fetch the IExec token Contract instance, not available when isNative is true
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `resourceName` | `string` |
+
+#### Returns
+
+`Promise`<`Contract`\>
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:107](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L107)
+
+___
+
+### getContract
+
+▸ **getContract**(`name`, `address`): `Contract`
+
+get a known Contract instance at specified address
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `name` | `string` |
+| `address` | `string` |
+
+#### Returns
+
+`Contract`
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:91](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L91)
+
+___
+
+### getIExecContract
+
+▸ **getIExecContract**(): `Contract`
+
+get the IExec Contract instance
+
+#### Returns
+
+`Contract`
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:95](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L95)
+
+___
+
+### setSigner
+
+▸ **setSigner**(`signer`): `void`
+
+set the signer
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `signer` | `Signer` |
+
+#### Returns
+
+`void`
+
+#### Defined in
+
+[src/common/utils/IExecContractsClient.d.ts:87](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/IExecContractsClient.d.ts#L87)
diff --git a/docs/classes/internal_.Observable.md b/docs/classes/internal_.Observable.md
new file mode 100644
index 00000000..6511fb60
--- /dev/null
+++ b/docs/classes/internal_.Observable.md
@@ -0,0 +1,70 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / Observable
+
+# Class: Observable
+
+[{internal}](../modules/internal_.md).Observable
+
+## Hierarchy
+
+- **`Observable`**
+
+ ↳ [`DealObservable`](internal_.DealObservable.md)
+
+ ↳ [`ENSConfigurationObservable`](internal_.ENSConfigurationObservable.md)
+
+ ↳ [`TaskObservable`](internal_.TaskObservable.md)
+
+ ↳ [`BrigdeObservable`](internal_.BrigdeObservable.md)
+
+## Table of contents
+
+### Constructors
+
+- [constructor](internal_.Observable.md#constructor)
+
+### Methods
+
+- [subscribe](internal_.Observable.md#subscribe)
+
+## Constructors
+
+### constructor
+
+• **new Observable**()
+
+## Methods
+
+### subscribe
+
+▸ **subscribe**(`callbacks`): () => `void`
+
+subscribe to a data source events via an Observer until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned unsubscribe method.
+
+return the `unsubscribe: () => void` method.
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `callbacks` | `Object` |
+| `callbacks.complete` | () => `any` |
+| `callbacks.error` | (`error`: `Error`) => `any` |
+| `callbacks.next` | (`data`: `any`) => `any` |
+
+#### Returns
+
+`fn`
+
+▸ (): `void`
+
+subscribe to a data source events via an Observer until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned unsubscribe method.
+
+return the `unsubscribe: () => void` method.
+
+##### Returns
+
+`void`
+
+#### Defined in
+
+[src/common/utils/reactive.d.ts:7](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/common/utils/reactive.d.ts#L7)
diff --git a/docs/classes/internal_.TaskObservable.md b/docs/classes/internal_.TaskObservable.md
new file mode 100644
index 00000000..b549bb13
--- /dev/null
+++ b/docs/classes/internal_.TaskObservable.md
@@ -0,0 +1,88 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / TaskObservable
+
+# Class: TaskObservable
+
+[{internal}](../modules/internal_.md).TaskObservable
+
+## Hierarchy
+
+- [`Observable`](internal_.Observable.md)
+
+ ↳ **`TaskObservable`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](internal_.TaskObservable.md#constructor)
+
+### Methods
+
+- [subscribe](internal_.TaskObservable.md#subscribe)
+
+## Constructors
+
+### constructor
+
+• **new TaskObservable**()
+
+#### Inherited from
+
+[Observable](internal_.Observable.md).[constructor](internal_.Observable.md#constructor)
+
+## Methods
+
+### subscribe
+
+▸ **subscribe**(`callbacks`): () => `void`
+
+subscribe to task updates via an Observer until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned unsubscribe method.
+
+return the `unsubscribe: () => void` method.
+
+data:
+| message | comment |
+| --- | --- |
+| `TASK_UPDATED` | sent with every time the task status changes |
+| `TASK_COMPLETED` | sent once when the task is completed |
+| `TASK_TIMEDOUT` | sent once when the deadline is reached before completion|
+| `TASK_FAILED` | sent once when the task is claimed after a timeout |
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `callbacks` | `Object` |
+| `callbacks.complete` | () => `any` |
+| `callbacks.error` | (`error`: `Error`) => `any` |
+| `callbacks.next` | (`data`: { `message`: `string` }) => `any` |
+
+#### Returns
+
+`fn`
+
+▸ (): `void`
+
+subscribe to task updates via an Observer until either `complete()` or `error(error: Error)` is called on the Observer or the subscribtion is canceled by calling the retruned unsubscribe method.
+
+return the `unsubscribe: () => void` method.
+
+data:
+| message | comment |
+| --- | --- |
+| `TASK_UPDATED` | sent with every time the task status changes |
+| `TASK_COMPLETED` | sent once when the task is completed |
+| `TASK_TIMEDOUT` | sent once when the deadline is reached before completion|
+| `TASK_FAILED` | sent once when the task is claimed after a timeout |
+
+##### Returns
+
+`void`
+
+#### Overrides
+
+[Observable](internal_.Observable.md).[subscribe](internal_.Observable.md#subscribe)
+
+#### Defined in
+
+[src/lib/IExecTaskModule.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecTaskModule.d.ts#L19)
diff --git a/docs/classes/utils.BN.md b/docs/classes/utils.BN.md
new file mode 100644
index 00000000..2d6b7423
--- /dev/null
+++ b/docs/classes/utils.BN.md
@@ -0,0 +1,68 @@
+[iexec](../README.md) / [Exports](../modules.md) / [utils](../modules/utils.md) / BN
+
+# Class: BN
+
+[utils](../modules/utils.md).BN
+
+class used for big numbers manipulation
+
+example:
+```js
+const one = new BN(1);
+const two = new BN('2');
+
+// work above Number.MAX_SAFE_INTEGER limit
+const maxSafeInteger = new BN(Number.MAX_SAFE_INTEGER);
+const maxSafeIntegerPlusOne = maxSafeInteger.add(one);
+```
+
+## Hierarchy
+
+- `BN`
+
+ ↳ **`BN`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](utils.BN.md#constructor)
+
+## Constructors
+
+### constructor
+
+• **new BN**(`number`, `base?`, `endian?`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `number` | `string` \| `number` \| `BN` \| `Buffer` \| `Uint8Array` \| `number`[] |
+| `base?` | `number` \| ``"hex"`` |
+| `endian?` | `Endianness` |
+
+#### Inherited from
+
+BNJS.constructor
+
+#### Defined in
+
+node_modules/@types/bn.js/index.d.ts:32
+
+• **new BN**(`number`, `endian?`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `number` | `string` \| `number` \| `BN` \| `Buffer` \| `Uint8Array` \| `number`[] |
+| `endian?` | `Endianness` |
+
+#### Inherited from
+
+BNJS.constructor
+
+#### Defined in
+
+node_modules/@types/bn.js/index.d.ts:37
diff --git a/docs/classes/utils.EnhancedWallet.md b/docs/classes/utils.EnhancedWallet.md
new file mode 100644
index 00000000..6dcd7d2b
--- /dev/null
+++ b/docs/classes/utils.EnhancedWallet.md
@@ -0,0 +1,67 @@
+[iexec](../README.md) / [Exports](../modules.md) / [utils](../modules/utils.md) / EnhancedWallet
+
+# Class: EnhancedWallet
+
+[utils](../modules/utils.md).EnhancedWallet
+
+## Hierarchy
+
+- `Wallet`
+
+ ↳ **`EnhancedWallet`**
+
+## Table of contents
+
+### Constructors
+
+- [constructor](utils.EnhancedWallet.md#constructor)
+
+### Methods
+
+- [signTypedData](utils.EnhancedWallet.md#signtypeddata)
+
+## Constructors
+
+### constructor
+
+• **new EnhancedWallet**(`privateKey`, `provider?`, `options?`)
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `privateKey` | `BytesLike` \| `ExternallyOwnedAccount` \| `SigningKey` |
+| `provider?` | `Provider` |
+| `options?` | `Object` |
+| `options.gasPrice?` | `string` |
+| `options.getTransactionCount?` | (`blockTag?`: `BlockTag`) => `Promise`<`number`\> |
+
+#### Overrides
+
+Wallet.constructor
+
+#### Defined in
+
+[src/lib/utils.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L20)
+
+## Methods
+
+### signTypedData
+
+▸ **signTypedData**(`domain`, `types`, `value`): `Promise`<`string`\>
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `domain` | `TypedDataDomain` |
+| `types` | `Record`<`string`, `TypedDataField`[]\> |
+| `value` | `Record`<`string`, `any`\> |
+
+#### Returns
+
+`Promise`<`string`\>
+
+#### Defined in
+
+[src/lib/utils.d.ts:29](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L29)
diff --git a/docs/interfaces/internal_.App.md b/docs/interfaces/internal_.App.md
new file mode 100644
index 00000000..30ac44ed
--- /dev/null
+++ b/docs/interfaces/internal_.App.md
@@ -0,0 +1,90 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / App
+
+# Interface: App
+
+[{internal}](../modules/internal_.md).App
+
+IExec app
+
+## Table of contents
+
+### Properties
+
+- [checksum](internal_.App.md#checksum)
+- [mrenclave](internal_.App.md#mrenclave)
+- [multiaddr](internal_.App.md#multiaddr)
+- [name](internal_.App.md#name)
+- [owner](internal_.App.md#owner)
+- [type](internal_.App.md#type)
+
+## Properties
+
+### checksum
+
+• **checksum**: `string`
+
+app image digest
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:35](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L35)
+
+___
+
+### mrenclave
+
+• `Optional` **mrenclave**: `string`
+
+optional for TEE apps only, specify the TEE protocol to use
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:39](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L39)
+
+___
+
+### multiaddr
+
+• **multiaddr**: [`Multiaddress`](../modules/internal_.md#multiaddress)
+
+app image address
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:31](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L31)
+
+___
+
+### name
+
+• **name**: `string`
+
+a name for the app
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:23](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L23)
+
+___
+
+### owner
+
+• **owner**: `string`
+
+the app owner
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L19)
+
+___
+
+### type
+
+• **type**: `string`
+
+only 'DOCKER' is supported
+
+#### Defined in
+
+[src/lib/IExecAppModule.d.ts:27](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecAppModule.d.ts#L27)
diff --git a/docs/interfaces/internal_.ApporderTemplate.md b/docs/interfaces/internal_.ApporderTemplate.md
new file mode 100644
index 00000000..4ce35350
--- /dev/null
+++ b/docs/interfaces/internal_.ApporderTemplate.md
@@ -0,0 +1,89 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / ApporderTemplate
+
+# Interface: ApporderTemplate
+
+[{internal}](../modules/internal_.md).ApporderTemplate
+
+sell order for an app
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.ApporderTemplate.md#app)
+- [appprice](internal_.ApporderTemplate.md#appprice)
+- [datasetrestrict](internal_.ApporderTemplate.md#datasetrestrict)
+- [requesterrestrict](internal_.ApporderTemplate.md#requesterrestrict)
+- [tag](internal_.ApporderTemplate.md#tag)
+- [volume](internal_.ApporderTemplate.md#volume)
+- [workerpoolrestrict](internal_.ApporderTemplate.md#workerpoolrestrict)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:21](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L21)
+
+___
+
+### appprice
+
+• **appprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:22](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L22)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:25](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L25)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:27](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L27)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:24](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L24)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:23](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L23)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:26](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L26)
diff --git a/docs/interfaces/internal_.Category.md b/docs/interfaces/internal_.Category.md
new file mode 100644
index 00000000..d0aa98af
--- /dev/null
+++ b/docs/interfaces/internal_.Category.md
@@ -0,0 +1,51 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / Category
+
+# Interface: Category
+
+[{internal}](../modules/internal_.md).Category
+
+IExec category
+
+## Table of contents
+
+### Properties
+
+- [description](internal_.Category.md#description)
+- [name](internal_.Category.md#name)
+- [workClockTimeRef](internal_.Category.md#workclocktimeref)
+
+## Properties
+
+### description
+
+• **description**: `string`
+
+a description of the category
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:15](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L15)
+
+___
+
+### name
+
+• **name**: `string`
+
+a name for the category
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:11](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L11)
+
+___
+
+### workClockTimeRef
+
+• **workClockTimeRef**: [`BNish`](../modules/internal_.md#bnish)
+
+time base (in sec) for the category (tasks of this category must be completed under 10 * workClockTimeRef)
+
+#### Defined in
+
+[src/lib/IExecHubModule.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecHubModule.d.ts#L19)
diff --git a/docs/interfaces/internal_.ConsumableApporder.md b/docs/interfaces/internal_.ConsumableApporder.md
new file mode 100644
index 00000000..db669fb9
--- /dev/null
+++ b/docs/interfaces/internal_.ConsumableApporder.md
@@ -0,0 +1,111 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / ConsumableApporder
+
+# Interface: ConsumableApporder
+
+[{internal}](../modules/internal_.md).ConsumableApporder
+
+signed sell order for an app
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.ConsumableApporder.md#app)
+- [appprice](internal_.ConsumableApporder.md#appprice)
+- [datasetrestrict](internal_.ConsumableApporder.md#datasetrestrict)
+- [requesterrestrict](internal_.ConsumableApporder.md#requesterrestrict)
+- [salt](internal_.ConsumableApporder.md#salt)
+- [sign](internal_.ConsumableApporder.md#sign)
+- [tag](internal_.ConsumableApporder.md#tag)
+- [volume](internal_.ConsumableApporder.md#volume)
+- [workerpoolrestrict](internal_.ConsumableApporder.md#workerpoolrestrict)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:63](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L63)
+
+___
+
+### appprice
+
+• **appprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:64](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L64)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:67](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L67)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:69](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L69)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:70](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L70)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:71](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L71)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:66](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L66)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:65](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L65)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:68](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L68)
diff --git a/docs/interfaces/internal_.ConsumableDatasetorder.md b/docs/interfaces/internal_.ConsumableDatasetorder.md
new file mode 100644
index 00000000..d991f26b
--- /dev/null
+++ b/docs/interfaces/internal_.ConsumableDatasetorder.md
@@ -0,0 +1,111 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / ConsumableDatasetorder
+
+# Interface: ConsumableDatasetorder
+
+[{internal}](../modules/internal_.md).ConsumableDatasetorder
+
+signed sell order for a dataset
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.ConsumableDatasetorder.md#apprestrict)
+- [dataset](internal_.ConsumableDatasetorder.md#dataset)
+- [datasetprice](internal_.ConsumableDatasetorder.md#datasetprice)
+- [requesterrestrict](internal_.ConsumableDatasetorder.md#requesterrestrict)
+- [salt](internal_.ConsumableDatasetorder.md#salt)
+- [sign](internal_.ConsumableDatasetorder.md#sign)
+- [tag](internal_.ConsumableDatasetorder.md#tag)
+- [volume](internal_.ConsumableDatasetorder.md#volume)
+- [workerpoolrestrict](internal_.ConsumableDatasetorder.md#workerpoolrestrict)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:124](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L124)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:120](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L120)
+
+___
+
+### datasetprice
+
+• **datasetprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:121](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L121)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:126](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L126)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:127](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L127)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:128](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L128)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:123](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L123)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:122](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L122)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:125](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L125)
diff --git a/docs/interfaces/internal_.ConsumableRequestorder.md b/docs/interfaces/internal_.ConsumableRequestorder.md
new file mode 100644
index 00000000..c8d36298
--- /dev/null
+++ b/docs/interfaces/internal_.ConsumableRequestorder.md
@@ -0,0 +1,177 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / ConsumableRequestorder
+
+# Interface: ConsumableRequestorder
+
+[{internal}](../modules/internal_.md).ConsumableRequestorder
+
+signed buy order for computing tasks
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.ConsumableRequestorder.md#app)
+- [appmaxprice](internal_.ConsumableRequestorder.md#appmaxprice)
+- [beneficiary](internal_.ConsumableRequestorder.md#beneficiary)
+- [callback](internal_.ConsumableRequestorder.md#callback)
+- [category](internal_.ConsumableRequestorder.md#category)
+- [dataset](internal_.ConsumableRequestorder.md#dataset)
+- [datasetmaxprice](internal_.ConsumableRequestorder.md#datasetmaxprice)
+- [params](internal_.ConsumableRequestorder.md#params)
+- [salt](internal_.ConsumableRequestorder.md#salt)
+- [sign](internal_.ConsumableRequestorder.md#sign)
+- [tag](internal_.ConsumableRequestorder.md#tag)
+- [trust](internal_.ConsumableRequestorder.md#trust)
+- [volume](internal_.ConsumableRequestorder.md#volume)
+- [workerpool](internal_.ConsumableRequestorder.md#workerpool)
+- [workerpoolmaxprice](internal_.ConsumableRequestorder.md#workerpoolmaxprice)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:267](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L267)
+
+___
+
+### appmaxprice
+
+• **appmaxprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:268](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L268)
+
+___
+
+### beneficiary
+
+• **beneficiary**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:277](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L277)
+
+___
+
+### callback
+
+• **callback**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:278](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L278)
+
+___
+
+### category
+
+• **category**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:275](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L275)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:269](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L269)
+
+___
+
+### datasetmaxprice
+
+• **datasetmaxprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:270](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L270)
+
+___
+
+### params
+
+• **params**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:279](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L279)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:280](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L280)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:281](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L281)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:274](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L274)
+
+___
+
+### trust
+
+• **trust**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:276](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L276)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:273](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L273)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:271](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L271)
+
+___
+
+### workerpoolmaxprice
+
+• **workerpoolmaxprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:272](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L272)
diff --git a/docs/interfaces/internal_.ConsumableWorkerpoolorder.md b/docs/interfaces/internal_.ConsumableWorkerpoolorder.md
new file mode 100644
index 00000000..6df77597
--- /dev/null
+++ b/docs/interfaces/internal_.ConsumableWorkerpoolorder.md
@@ -0,0 +1,133 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / ConsumableWorkerpoolorder
+
+# Interface: ConsumableWorkerpoolorder
+
+[{internal}](../modules/internal_.md).ConsumableWorkerpoolorder
+
+signed sell order for computing power
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.ConsumableWorkerpoolorder.md#apprestrict)
+- [category](internal_.ConsumableWorkerpoolorder.md#category)
+- [datasetrestrict](internal_.ConsumableWorkerpoolorder.md#datasetrestrict)
+- [requesterrestrict](internal_.ConsumableWorkerpoolorder.md#requesterrestrict)
+- [salt](internal_.ConsumableWorkerpoolorder.md#salt)
+- [sign](internal_.ConsumableWorkerpoolorder.md#sign)
+- [tag](internal_.ConsumableWorkerpoolorder.md#tag)
+- [trust](internal_.ConsumableWorkerpoolorder.md#trust)
+- [volume](internal_.ConsumableWorkerpoolorder.md#volume)
+- [workerpool](internal_.ConsumableWorkerpoolorder.md#workerpool)
+- [workerpoolprice](internal_.ConsumableWorkerpoolorder.md#workerpoolprice)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:189](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L189)
+
+___
+
+### category
+
+• **category**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:187](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L187)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:190](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L190)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:191](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L191)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:192](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L192)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:193](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L193)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:186](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L186)
+
+___
+
+### trust
+
+• **trust**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:188](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L188)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:185](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L185)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:183](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L183)
+
+___
+
+### workerpoolprice
+
+• **workerpoolprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:184](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L184)
diff --git a/docs/interfaces/internal_.Dataset.md b/docs/interfaces/internal_.Dataset.md
new file mode 100644
index 00000000..0f27c2c6
--- /dev/null
+++ b/docs/interfaces/internal_.Dataset.md
@@ -0,0 +1,64 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / Dataset
+
+# Interface: Dataset
+
+[{internal}](../modules/internal_.md).Dataset
+
+IExec dataset
+
+## Table of contents
+
+### Properties
+
+- [checksum](internal_.Dataset.md#checksum)
+- [multiaddr](internal_.Dataset.md#multiaddr)
+- [name](internal_.Dataset.md#name)
+- [owner](internal_.Dataset.md#owner)
+
+## Properties
+
+### checksum
+
+• **checksum**: `string`
+
+sha256sum of the file
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:31](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L31)
+
+___
+
+### multiaddr
+
+• **multiaddr**: [`Multiaddress`](../modules/internal_.md#multiaddress)
+
+dataset file download address
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:27](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L27)
+
+___
+
+### name
+
+• **name**: `string`
+
+a name for the dataset
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:23](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L23)
+
+___
+
+### owner
+
+• **owner**: `string`
+
+the dataset owner
+
+#### Defined in
+
+[src/lib/IExecDatasetModule.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDatasetModule.d.ts#L19)
diff --git a/docs/interfaces/internal_.DatasetorderTemplate.md b/docs/interfaces/internal_.DatasetorderTemplate.md
new file mode 100644
index 00000000..2a244fa3
--- /dev/null
+++ b/docs/interfaces/internal_.DatasetorderTemplate.md
@@ -0,0 +1,89 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / DatasetorderTemplate
+
+# Interface: DatasetorderTemplate
+
+[{internal}](../modules/internal_.md).DatasetorderTemplate
+
+sell order for a dataset
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.DatasetorderTemplate.md#apprestrict)
+- [dataset](internal_.DatasetorderTemplate.md#dataset)
+- [datasetprice](internal_.DatasetorderTemplate.md#datasetprice)
+- [requesterrestrict](internal_.DatasetorderTemplate.md#requesterrestrict)
+- [tag](internal_.DatasetorderTemplate.md#tag)
+- [volume](internal_.DatasetorderTemplate.md#volume)
+- [workerpoolrestrict](internal_.DatasetorderTemplate.md#workerpoolrestrict)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:82](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L82)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:78](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L78)
+
+___
+
+### datasetprice
+
+• **datasetprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:79](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L79)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:84](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L84)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:81](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L81)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:80](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L80)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:83](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L83)
diff --git a/docs/interfaces/internal_.HashableApporder.md b/docs/interfaces/internal_.HashableApporder.md
new file mode 100644
index 00000000..f0899387
--- /dev/null
+++ b/docs/interfaces/internal_.HashableApporder.md
@@ -0,0 +1,100 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / HashableApporder
+
+# Interface: HashableApporder
+
+[{internal}](../modules/internal_.md).HashableApporder
+
+sell order for an app
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.HashableApporder.md#app)
+- [appprice](internal_.HashableApporder.md#appprice)
+- [datasetrestrict](internal_.HashableApporder.md#datasetrestrict)
+- [requesterrestrict](internal_.HashableApporder.md#requesterrestrict)
+- [salt](internal_.HashableApporder.md#salt)
+- [tag](internal_.HashableApporder.md#tag)
+- [volume](internal_.HashableApporder.md#volume)
+- [workerpoolrestrict](internal_.HashableApporder.md#workerpoolrestrict)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:34](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L34)
+
+___
+
+### appprice
+
+• **appprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:35](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L35)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:38](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L38)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:40](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L40)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:41](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L41)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:37](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L37)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:36](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L36)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:39](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L39)
diff --git a/docs/interfaces/internal_.HashableDatasetorder.md b/docs/interfaces/internal_.HashableDatasetorder.md
new file mode 100644
index 00000000..435fdcdb
--- /dev/null
+++ b/docs/interfaces/internal_.HashableDatasetorder.md
@@ -0,0 +1,100 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / HashableDatasetorder
+
+# Interface: HashableDatasetorder
+
+[{internal}](../modules/internal_.md).HashableDatasetorder
+
+sell order for a dataset
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.HashableDatasetorder.md#apprestrict)
+- [dataset](internal_.HashableDatasetorder.md#dataset)
+- [datasetprice](internal_.HashableDatasetorder.md#datasetprice)
+- [requesterrestrict](internal_.HashableDatasetorder.md#requesterrestrict)
+- [salt](internal_.HashableDatasetorder.md#salt)
+- [tag](internal_.HashableDatasetorder.md#tag)
+- [volume](internal_.HashableDatasetorder.md#volume)
+- [workerpoolrestrict](internal_.HashableDatasetorder.md#workerpoolrestrict)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:95](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L95)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:91](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L91)
+
+___
+
+### datasetprice
+
+• **datasetprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:92](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L92)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:97](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L97)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:98](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L98)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:94](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L94)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:93](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L93)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:96](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L96)
diff --git a/docs/interfaces/internal_.HashableRequestorder.md b/docs/interfaces/internal_.HashableRequestorder.md
new file mode 100644
index 00000000..03e72296
--- /dev/null
+++ b/docs/interfaces/internal_.HashableRequestorder.md
@@ -0,0 +1,166 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / HashableRequestorder
+
+# Interface: HashableRequestorder
+
+[{internal}](../modules/internal_.md).HashableRequestorder
+
+buy order for computing tasks
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.HashableRequestorder.md#app)
+- [appmaxprice](internal_.HashableRequestorder.md#appmaxprice)
+- [beneficiary](internal_.HashableRequestorder.md#beneficiary)
+- [callback](internal_.HashableRequestorder.md#callback)
+- [category](internal_.HashableRequestorder.md#category)
+- [dataset](internal_.HashableRequestorder.md#dataset)
+- [datasetmaxprice](internal_.HashableRequestorder.md#datasetmaxprice)
+- [params](internal_.HashableRequestorder.md#params)
+- [salt](internal_.HashableRequestorder.md#salt)
+- [tag](internal_.HashableRequestorder.md#tag)
+- [trust](internal_.HashableRequestorder.md#trust)
+- [volume](internal_.HashableRequestorder.md#volume)
+- [workerpool](internal_.HashableRequestorder.md#workerpool)
+- [workerpoolmaxprice](internal_.HashableRequestorder.md#workerpoolmaxprice)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:226](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L226)
+
+___
+
+### appmaxprice
+
+• **appmaxprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:227](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L227)
+
+___
+
+### beneficiary
+
+• **beneficiary**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:236](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L236)
+
+___
+
+### callback
+
+• **callback**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:237](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L237)
+
+___
+
+### category
+
+• **category**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:234](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L234)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:228](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L228)
+
+___
+
+### datasetmaxprice
+
+• **datasetmaxprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:229](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L229)
+
+___
+
+### params
+
+• **params**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:238](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L238)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:239](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L239)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:233](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L233)
+
+___
+
+### trust
+
+• **trust**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:235](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L235)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:232](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L232)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:230](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L230)
+
+___
+
+### workerpoolmaxprice
+
+• **workerpoolmaxprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:231](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L231)
diff --git a/docs/interfaces/internal_.HashableWorkerpoolorder.md b/docs/interfaces/internal_.HashableWorkerpoolorder.md
new file mode 100644
index 00000000..d30820be
--- /dev/null
+++ b/docs/interfaces/internal_.HashableWorkerpoolorder.md
@@ -0,0 +1,122 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / HashableWorkerpoolorder
+
+# Interface: HashableWorkerpoolorder
+
+[{internal}](../modules/internal_.md).HashableWorkerpoolorder
+
+sell order for computing power
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.HashableWorkerpoolorder.md#apprestrict)
+- [category](internal_.HashableWorkerpoolorder.md#category)
+- [datasetrestrict](internal_.HashableWorkerpoolorder.md#datasetrestrict)
+- [requesterrestrict](internal_.HashableWorkerpoolorder.md#requesterrestrict)
+- [salt](internal_.HashableWorkerpoolorder.md#salt)
+- [tag](internal_.HashableWorkerpoolorder.md#tag)
+- [trust](internal_.HashableWorkerpoolorder.md#trust)
+- [volume](internal_.HashableWorkerpoolorder.md#volume)
+- [workerpool](internal_.HashableWorkerpoolorder.md#workerpool)
+- [workerpoolprice](internal_.HashableWorkerpoolorder.md#workerpoolprice)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:156](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L156)
+
+___
+
+### category
+
+• **category**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:154](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L154)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:157](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L157)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:158](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L158)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:159](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L159)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:153](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L153)
+
+___
+
+### trust
+
+• **trust**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:155](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L155)
+
+___
+
+### volume
+
+• **volume**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:152](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L152)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:150](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L150)
+
+___
+
+### workerpoolprice
+
+• **workerpoolprice**: [`BNish`](../modules/internal_.md#bnish)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:151](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L151)
diff --git a/docs/interfaces/internal_.IExecConfigArgs.md b/docs/interfaces/internal_.IExecConfigArgs.md
new file mode 100644
index 00000000..50992c13
--- /dev/null
+++ b/docs/interfaces/internal_.IExecConfigArgs.md
@@ -0,0 +1,36 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / IExecConfigArgs
+
+# Interface: IExecConfigArgs
+
+[{internal}](../modules/internal_.md).IExecConfigArgs
+
+## Table of contents
+
+### Properties
+
+- [ethProvider](internal_.IExecConfigArgs.md#ethprovider)
+- [flavour](internal_.IExecConfigArgs.md#flavour)
+
+## Properties
+
+### ethProvider
+
+• **ethProvider**: `ExternalProvider`
+
+A web3 Eth provider
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:8](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L8)
+
+___
+
+### flavour
+
+• `Optional` **flavour**: `string`
+
+flavour to use (default standard)
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:12](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L12)
diff --git a/docs/interfaces/internal_.IExecConfigOptions.md b/docs/interfaces/internal_.IExecConfigOptions.md
new file mode 100644
index 00000000..41a5ec1e
--- /dev/null
+++ b/docs/interfaces/internal_.IExecConfigOptions.md
@@ -0,0 +1,194 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / IExecConfigOptions
+
+# Interface: IExecConfigOptions
+
+[{internal}](../modules/internal_.md).IExecConfigOptions
+
+## Table of contents
+
+### Properties
+
+- [bridgeAddress](internal_.IExecConfigOptions.md#bridgeaddress)
+- [bridgedNetworkConf](internal_.IExecConfigOptions.md#bridgednetworkconf)
+- [confirms](internal_.IExecConfigOptions.md#confirms)
+- [ensPublicResolverAddress](internal_.IExecConfigOptions.md#enspublicresolveraddress)
+- [ensRegistryAddress](internal_.IExecConfigOptions.md#ensregistryaddress)
+- [enterpriseSwapConf](internal_.IExecConfigOptions.md#enterpriseswapconf)
+- [hubAddress](internal_.IExecConfigOptions.md#hubaddress)
+- [iexecGatewayURL](internal_.IExecConfigOptions.md#iexecgatewayurl)
+- [ipfsGatewayURL](internal_.IExecConfigOptions.md#ipfsgatewayurl)
+- [isNative](internal_.IExecConfigOptions.md#isnative)
+- [resultProxyURL](internal_.IExecConfigOptions.md#resultproxyurl)
+- [smsURL](internal_.IExecConfigOptions.md#smsurl)
+- [useGas](internal_.IExecConfigOptions.md#usegas)
+
+## Properties
+
+### bridgeAddress
+
+• `Optional` **bridgeAddress**: `string`
+
+override the bridge contract address to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:39](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L39)
+
+___
+
+### bridgedNetworkConf
+
+• `Optional` **bridgedNetworkConf**: `Object`
+
+override the bridged network configuration
+
+#### Type declaration
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `bridgeAddress?` | `string` | bridge contract address on bridgde network |
+| `chainId?` | `string` \| `number` | bridged network chainId |
+| `hubAddress?` | `string` | IExec contract address on bridgde network |
+| `rpcURL?` | `string` | bridged network node url |
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:43](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L43)
+
+___
+
+### confirms
+
+• `Optional` **confirms**: `boolean`
+
+number of block to wait for transactions confirmation (default 1)
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:89](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L89)
+
+___
+
+### ensPublicResolverAddress
+
+• `Optional` **ensPublicResolverAddress**: `string`
+
+override the ENS public resolver contract address to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:35](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L35)
+
+___
+
+### ensRegistryAddress
+
+• `Optional` **ensRegistryAddress**: `string`
+
+override the ENS registry contract address to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:31](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L31)
+
+___
+
+### enterpriseSwapConf
+
+• `Optional` **enterpriseSwapConf**: `Object`
+
+override the enterprise configuration
+
+#### Type declaration
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `hubAddress?` | `string` | IExec enerprise contract address |
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:64](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L64)
+
+___
+
+### hubAddress
+
+• `Optional` **hubAddress**: `string`
+
+override the IExec contract address to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:27](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L27)
+
+___
+
+### iexecGatewayURL
+
+• `Optional` **iexecGatewayURL**: `string`
+
+override the IExec market URL to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:85](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L85)
+
+___
+
+### ipfsGatewayURL
+
+• `Optional` **ipfsGatewayURL**: `string`
+
+override the IPFS gateway URL to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:81](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L81)
+
+___
+
+### isNative
+
+• `Optional` **isNative**: `boolean`
+
+true if IExec contract use the chain native token (default false)
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L19)
+
+___
+
+### resultProxyURL
+
+• `Optional` **resultProxyURL**: `string`
+
+override the result proxy URL to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:73](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L73)
+
+___
+
+### smsURL
+
+• `Optional` **smsURL**: `string`
+
+override the SMS URL to target a custom instance
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:77](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L77)
+
+___
+
+### useGas
+
+• `Optional` **useGas**: `boolean`
+
+if false set the gasPrice to 0 (default true)
+
+#### Defined in
+
+[src/lib/IExecConfig.d.ts:23](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecConfig.d.ts#L23)
diff --git a/docs/interfaces/internal_.PaginableDeals.md b/docs/interfaces/internal_.PaginableDeals.md
new file mode 100644
index 00000000..45e3351c
--- /dev/null
+++ b/docs/interfaces/internal_.PaginableDeals.md
@@ -0,0 +1,56 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / PaginableDeals
+
+# Interface: PaginableDeals
+
+[{internal}](../modules/internal_.md).PaginableDeals
+
+## Table of contents
+
+### Properties
+
+- [count](internal_.PaginableDeals.md#count)
+- [deals](internal_.PaginableDeals.md#deals)
+
+### Methods
+
+- [more](internal_.PaginableDeals.md#more)
+
+## Properties
+
+### count
+
+• **count**: `number`
+
+total count
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:136](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L136)
+
+___
+
+### deals
+
+• **deals**: { `app`: { `owner`: `string` ; `pointer`: `string` ; `price`: `number` } ; `appHash`: `string` ; `beneficiary`: `string` ; `botFirst`: `number` ; `botSize`: `number` ; `callback`: `string` ; `category`: `number` ; `dataset`: { `owner`: `string` ; `pointer`: `string` ; `price`: `number` } ; `datasetHash`: `string` ; `dealid`: `string` ; `params`: `string` ; `requestHash`: `string` ; `requester`: `string` ; `schedulerRewardRatio`: `number` ; `startTime`: `number` ; `tag`: `string` ; `trust`: `number` ; `workerStake`: `number` ; `workerpool`: { `owner`: `string` ; `pointer`: `string` ; `price`: `number` } ; `workerpoolHash`: `string` }[]
+
+deal page (this may be a partial result)
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:111](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L111)
+
+## Methods
+
+### more
+
+▸ `Optional` **more**(): `Promise`<[`PaginableDeals`](internal_.PaginableDeals.md)\>
+
+when a partial result is returned, `more()` can be called to get the next page.
+
+#### Returns
+
+`Promise`<[`PaginableDeals`](internal_.PaginableDeals.md)\>
+
+#### Defined in
+
+[src/lib/IExecDealModule.d.ts:140](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecDealModule.d.ts#L140)
diff --git a/docs/interfaces/internal_.PaginableOrders.md b/docs/interfaces/internal_.PaginableOrders.md
new file mode 100644
index 00000000..f7758534
--- /dev/null
+++ b/docs/interfaces/internal_.PaginableOrders.md
@@ -0,0 +1,62 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / PaginableOrders
+
+# Interface: PaginableOrders
+
+[{internal}](../modules/internal_.md).PaginableOrders
+
+## Type parameters
+
+| Name |
+| :------ |
+| `OT` |
+
+## Table of contents
+
+### Properties
+
+- [count](internal_.PaginableOrders.md#count)
+- [orders](internal_.PaginableOrders.md#orders)
+
+### Methods
+
+- [more](internal_.PaginableOrders.md#more)
+
+## Properties
+
+### count
+
+• **count**: `number`
+
+total count
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:121](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L121)
+
+___
+
+### orders
+
+• **orders**: `OT`[]
+
+order page (this may be a partial result)
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:117](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L117)
+
+## Methods
+
+### more
+
+▸ `Optional` **more**(): `Promise`<[`PaginableOrders`](internal_.PaginableOrders.md)<`OT`\>\>
+
+when a partial result is returned, `more()` can be called to get the next page.
+
+#### Returns
+
+`Promise`<[`PaginableOrders`](internal_.PaginableOrders.md)<`OT`\>\>
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:125](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L125)
diff --git a/docs/interfaces/internal_.PublishedApporder.md b/docs/interfaces/internal_.PublishedApporder.md
new file mode 100644
index 00000000..1d7c38e0
--- /dev/null
+++ b/docs/interfaces/internal_.PublishedApporder.md
@@ -0,0 +1,103 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / PublishedApporder
+
+# Interface: PublishedApporder
+
+[{internal}](../modules/internal_.md).PublishedApporder
+
+published sell order for an app
+
+## Table of contents
+
+### Properties
+
+- [chainId](internal_.PublishedApporder.md#chainid)
+- [order](internal_.PublishedApporder.md#order)
+- [orderHash](internal_.PublishedApporder.md#orderhash)
+- [publicationTimestamp](internal_.PublishedApporder.md#publicationtimestamp)
+- [remaining](internal_.PublishedApporder.md#remaining)
+- [signer](internal_.PublishedApporder.md#signer)
+- [status](internal_.PublishedApporder.md#status)
+
+## Properties
+
+### chainId
+
+• **chainId**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:18](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L18)
+
+___
+
+### order
+
+• **order**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `app` | `string` |
+| `appprice` | `number` |
+| `datasetrestrict` | `string` |
+| `requesterrestrict` | `string` |
+| `salt` | `string` |
+| `sign` | `string` |
+| `tag` | [`Tag`](../modules/internal_.md#tag) |
+| `volume` | `number` |
+| `workerpoolrestrict` | `string` |
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:23](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L23)
+
+___
+
+### orderHash
+
+• **orderHash**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:17](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L17)
+
+___
+
+### publicationTimestamp
+
+• **publicationTimestamp**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:22](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L22)
+
+___
+
+### remaining
+
+• **remaining**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:19](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L19)
+
+___
+
+### signer
+
+• **signer**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:21](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L21)
+
+___
+
+### status
+
+• **status**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:20](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L20)
diff --git a/docs/interfaces/internal_.PublishedDatasetorder.md b/docs/interfaces/internal_.PublishedDatasetorder.md
new file mode 100644
index 00000000..30e51bea
--- /dev/null
+++ b/docs/interfaces/internal_.PublishedDatasetorder.md
@@ -0,0 +1,103 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / PublishedDatasetorder
+
+# Interface: PublishedDatasetorder
+
+[{internal}](../modules/internal_.md).PublishedDatasetorder
+
+published sell order for a dataset
+
+## Table of contents
+
+### Properties
+
+- [chainId](internal_.PublishedDatasetorder.md#chainid)
+- [order](internal_.PublishedDatasetorder.md#order)
+- [orderHash](internal_.PublishedDatasetorder.md#orderhash)
+- [publicationTimestamp](internal_.PublishedDatasetorder.md#publicationtimestamp)
+- [remaining](internal_.PublishedDatasetorder.md#remaining)
+- [signer](internal_.PublishedDatasetorder.md#signer)
+- [status](internal_.PublishedDatasetorder.md#status)
+
+## Properties
+
+### chainId
+
+• **chainId**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:41](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L41)
+
+___
+
+### order
+
+• **order**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `apprestrict` | `string` |
+| `dataset` | `string` |
+| `datasetprice` | `number` |
+| `requesterrestrict` | `string` |
+| `salt` | `string` |
+| `sign` | `string` |
+| `tag` | [`Tag`](../modules/internal_.md#tag) |
+| `volume` | `number` |
+| `workerpoolrestrict` | `string` |
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:46](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L46)
+
+___
+
+### orderHash
+
+• **orderHash**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:40](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L40)
+
+___
+
+### publicationTimestamp
+
+• **publicationTimestamp**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:45](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L45)
+
+___
+
+### remaining
+
+• **remaining**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:42](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L42)
+
+___
+
+### signer
+
+• **signer**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:44](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L44)
+
+___
+
+### status
+
+• **status**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:43](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L43)
diff --git a/docs/interfaces/internal_.PublishedRequestorder.md b/docs/interfaces/internal_.PublishedRequestorder.md
new file mode 100644
index 00000000..5ec261c5
--- /dev/null
+++ b/docs/interfaces/internal_.PublishedRequestorder.md
@@ -0,0 +1,109 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / PublishedRequestorder
+
+# Interface: PublishedRequestorder
+
+[{internal}](../modules/internal_.md).PublishedRequestorder
+
+published buy order for computing tasks
+
+## Table of contents
+
+### Properties
+
+- [chainId](internal_.PublishedRequestorder.md#chainid)
+- [order](internal_.PublishedRequestorder.md#order)
+- [orderHash](internal_.PublishedRequestorder.md#orderhash)
+- [publicationTimestamp](internal_.PublishedRequestorder.md#publicationtimestamp)
+- [remaining](internal_.PublishedRequestorder.md#remaining)
+- [signer](internal_.PublishedRequestorder.md#signer)
+- [status](internal_.PublishedRequestorder.md#status)
+
+## Properties
+
+### chainId
+
+• **chainId**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:89](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L89)
+
+___
+
+### order
+
+• **order**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `app` | `string` |
+| `appmaxprice` | `number` |
+| `beneficiary` | `string` |
+| `callback` | `string` |
+| `category` | `number` |
+| `dataset` | `string` |
+| `datasetmaxprice` | `number` |
+| `params` | `string` |
+| `salt` | `string` |
+| `sign` | `string` |
+| `tag` | [`Tag`](../modules/internal_.md#tag) |
+| `trust` | `number` |
+| `volume` | `number` |
+| `workerpool` | `string` |
+| `workerpoolmaxprice` | `number` |
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:94](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L94)
+
+___
+
+### orderHash
+
+• **orderHash**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:88](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L88)
+
+___
+
+### publicationTimestamp
+
+• **publicationTimestamp**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:93](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L93)
+
+___
+
+### remaining
+
+• **remaining**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:90](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L90)
+
+___
+
+### signer
+
+• **signer**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:92](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L92)
+
+___
+
+### status
+
+• **status**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:91](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L91)
diff --git a/docs/interfaces/internal_.PublishedWorkerpoolorder.md b/docs/interfaces/internal_.PublishedWorkerpoolorder.md
new file mode 100644
index 00000000..45789391
--- /dev/null
+++ b/docs/interfaces/internal_.PublishedWorkerpoolorder.md
@@ -0,0 +1,105 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / PublishedWorkerpoolorder
+
+# Interface: PublishedWorkerpoolorder
+
+[{internal}](../modules/internal_.md).PublishedWorkerpoolorder
+
+published sell order for computing power
+
+## Table of contents
+
+### Properties
+
+- [chainId](internal_.PublishedWorkerpoolorder.md#chainid)
+- [order](internal_.PublishedWorkerpoolorder.md#order)
+- [orderHash](internal_.PublishedWorkerpoolorder.md#orderhash)
+- [publicationTimestamp](internal_.PublishedWorkerpoolorder.md#publicationtimestamp)
+- [remaining](internal_.PublishedWorkerpoolorder.md#remaining)
+- [signer](internal_.PublishedWorkerpoolorder.md#signer)
+- [status](internal_.PublishedWorkerpoolorder.md#status)
+
+## Properties
+
+### chainId
+
+• **chainId**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:64](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L64)
+
+___
+
+### order
+
+• **order**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `apprestrict` | `string` |
+| `category` | `number` |
+| `datasetrestrict` | `string` |
+| `requesterrestrict` | `string` |
+| `salt` | `string` |
+| `sign` | `string` |
+| `tag` | [`Tag`](../modules/internal_.md#tag) |
+| `trust` | `number` |
+| `volume` | `number` |
+| `workerpool` | `string` |
+| `workerpoolprice` | `number` |
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:69](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L69)
+
+___
+
+### orderHash
+
+• **orderHash**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:63](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L63)
+
+___
+
+### publicationTimestamp
+
+• **publicationTimestamp**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:68](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L68)
+
+___
+
+### remaining
+
+• **remaining**: `number`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:65](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L65)
+
+___
+
+### signer
+
+• **signer**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:67](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L67)
+
+___
+
+### status
+
+• **status**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderbookModule.d.ts:66](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderbookModule.d.ts#L66)
diff --git a/docs/interfaces/internal_.RequestorderTemplate.md b/docs/interfaces/internal_.RequestorderTemplate.md
new file mode 100644
index 00000000..2ca98c4d
--- /dev/null
+++ b/docs/interfaces/internal_.RequestorderTemplate.md
@@ -0,0 +1,166 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / RequestorderTemplate
+
+# Interface: RequestorderTemplate
+
+[{internal}](../modules/internal_.md).RequestorderTemplate
+
+buy order for computing tasks
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.RequestorderTemplate.md#app)
+- [appmaxprice](internal_.RequestorderTemplate.md#appmaxprice)
+- [beneficiary](internal_.RequestorderTemplate.md#beneficiary)
+- [callback](internal_.RequestorderTemplate.md#callback)
+- [category](internal_.RequestorderTemplate.md#category)
+- [dataset](internal_.RequestorderTemplate.md#dataset)
+- [datasetmaxprice](internal_.RequestorderTemplate.md#datasetmaxprice)
+- [params](internal_.RequestorderTemplate.md#params)
+- [tag](internal_.RequestorderTemplate.md#tag)
+- [trust](internal_.RequestorderTemplate.md#trust)
+- [volume](internal_.RequestorderTemplate.md#volume)
+- [workerpool](internal_.RequestorderTemplate.md#workerpool)
+- [workerpoolmaxprice](internal_.RequestorderTemplate.md#workerpoolmaxprice)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:200](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L200)
+
+___
+
+### appmaxprice
+
+• **appmaxprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:201](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L201)
+
+___
+
+### beneficiary
+
+• **beneficiary**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:210](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L210)
+
+___
+
+### callback
+
+• **callback**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:211](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L211)
+
+___
+
+### category
+
+• **category**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:208](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L208)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:202](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L202)
+
+___
+
+### datasetmaxprice
+
+• **datasetmaxprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:203](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L203)
+
+___
+
+### params
+
+• **params**: `Object`
+
+#### Type declaration
+
+| Name | Type |
+| :------ | :------ |
+| `iexec_args?` | `string` |
+| `iexec_developer_logger?` | `boolean` |
+| `iexec_input_files?` | `string`[] |
+| `iexec_result_encryption?` | `boolean` |
+| `iexec_result_storage_provider?` | `string` |
+| `iexec_result_storage_proxy?` | `string` |
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:212](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L212)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:207](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L207)
+
+___
+
+### trust
+
+• **trust**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:209](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L209)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:206](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L206)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:204](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L204)
+
+___
+
+### workerpoolmaxprice
+
+• **workerpoolmaxprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:205](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L205)
diff --git a/docs/interfaces/internal_.SignedApporder.md b/docs/interfaces/internal_.SignedApporder.md
new file mode 100644
index 00000000..6443b782
--- /dev/null
+++ b/docs/interfaces/internal_.SignedApporder.md
@@ -0,0 +1,111 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / SignedApporder
+
+# Interface: SignedApporder
+
+[{internal}](../modules/internal_.md).SignedApporder
+
+signed sell order for an app
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.SignedApporder.md#app)
+- [appprice](internal_.SignedApporder.md#appprice)
+- [datasetrestrict](internal_.SignedApporder.md#datasetrestrict)
+- [requesterrestrict](internal_.SignedApporder.md#requesterrestrict)
+- [salt](internal_.SignedApporder.md#salt)
+- [sign](internal_.SignedApporder.md#sign)
+- [tag](internal_.SignedApporder.md#tag)
+- [volume](internal_.SignedApporder.md#volume)
+- [workerpoolrestrict](internal_.SignedApporder.md#workerpoolrestrict)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:48](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L48)
+
+___
+
+### appprice
+
+• **appprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:49](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L49)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:52](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L52)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:54](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L54)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:55](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L55)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:56](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L56)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:51](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L51)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:50](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L50)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:53](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L53)
diff --git a/docs/interfaces/internal_.SignedDatasetorder.md b/docs/interfaces/internal_.SignedDatasetorder.md
new file mode 100644
index 00000000..2e3fdeae
--- /dev/null
+++ b/docs/interfaces/internal_.SignedDatasetorder.md
@@ -0,0 +1,111 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / SignedDatasetorder
+
+# Interface: SignedDatasetorder
+
+[{internal}](../modules/internal_.md).SignedDatasetorder
+
+signed sell order for a dataset
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.SignedDatasetorder.md#apprestrict)
+- [dataset](internal_.SignedDatasetorder.md#dataset)
+- [datasetprice](internal_.SignedDatasetorder.md#datasetprice)
+- [requesterrestrict](internal_.SignedDatasetorder.md#requesterrestrict)
+- [salt](internal_.SignedDatasetorder.md#salt)
+- [sign](internal_.SignedDatasetorder.md#sign)
+- [tag](internal_.SignedDatasetorder.md#tag)
+- [volume](internal_.SignedDatasetorder.md#volume)
+- [workerpoolrestrict](internal_.SignedDatasetorder.md#workerpoolrestrict)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:109](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L109)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:105](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L105)
+
+___
+
+### datasetprice
+
+• **datasetprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:106](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L106)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:111](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L111)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:112](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L112)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:113](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L113)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:108](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L108)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:107](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L107)
+
+___
+
+### workerpoolrestrict
+
+• **workerpoolrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:110](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L110)
diff --git a/docs/interfaces/internal_.SignedRequestorder.md b/docs/interfaces/internal_.SignedRequestorder.md
new file mode 100644
index 00000000..90778e72
--- /dev/null
+++ b/docs/interfaces/internal_.SignedRequestorder.md
@@ -0,0 +1,177 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / SignedRequestorder
+
+# Interface: SignedRequestorder
+
+[{internal}](../modules/internal_.md).SignedRequestorder
+
+signed buy order for computing tasks
+
+## Table of contents
+
+### Properties
+
+- [app](internal_.SignedRequestorder.md#app)
+- [appmaxprice](internal_.SignedRequestorder.md#appmaxprice)
+- [beneficiary](internal_.SignedRequestorder.md#beneficiary)
+- [callback](internal_.SignedRequestorder.md#callback)
+- [category](internal_.SignedRequestorder.md#category)
+- [dataset](internal_.SignedRequestorder.md#dataset)
+- [datasetmaxprice](internal_.SignedRequestorder.md#datasetmaxprice)
+- [params](internal_.SignedRequestorder.md#params)
+- [salt](internal_.SignedRequestorder.md#salt)
+- [sign](internal_.SignedRequestorder.md#sign)
+- [tag](internal_.SignedRequestorder.md#tag)
+- [trust](internal_.SignedRequestorder.md#trust)
+- [volume](internal_.SignedRequestorder.md#volume)
+- [workerpool](internal_.SignedRequestorder.md#workerpool)
+- [workerpoolmaxprice](internal_.SignedRequestorder.md#workerpoolmaxprice)
+
+## Properties
+
+### app
+
+• **app**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:246](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L246)
+
+___
+
+### appmaxprice
+
+• **appmaxprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:247](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L247)
+
+___
+
+### beneficiary
+
+• **beneficiary**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:256](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L256)
+
+___
+
+### callback
+
+• **callback**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:257](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L257)
+
+___
+
+### category
+
+• **category**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:254](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L254)
+
+___
+
+### dataset
+
+• **dataset**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:248](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L248)
+
+___
+
+### datasetmaxprice
+
+• **datasetmaxprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:249](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L249)
+
+___
+
+### params
+
+• **params**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:258](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L258)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:259](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L259)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:260](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L260)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:253](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L253)
+
+___
+
+### trust
+
+• **trust**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:255](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L255)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:252](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L252)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:250](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L250)
+
+___
+
+### workerpoolmaxprice
+
+• **workerpoolmaxprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:251](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L251)
diff --git a/docs/interfaces/internal_.SignedWorkerpoolorder.md b/docs/interfaces/internal_.SignedWorkerpoolorder.md
new file mode 100644
index 00000000..ecba509e
--- /dev/null
+++ b/docs/interfaces/internal_.SignedWorkerpoolorder.md
@@ -0,0 +1,133 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / SignedWorkerpoolorder
+
+# Interface: SignedWorkerpoolorder
+
+[{internal}](../modules/internal_.md).SignedWorkerpoolorder
+
+signed sell order for computing power
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.SignedWorkerpoolorder.md#apprestrict)
+- [category](internal_.SignedWorkerpoolorder.md#category)
+- [datasetrestrict](internal_.SignedWorkerpoolorder.md#datasetrestrict)
+- [requesterrestrict](internal_.SignedWorkerpoolorder.md#requesterrestrict)
+- [salt](internal_.SignedWorkerpoolorder.md#salt)
+- [sign](internal_.SignedWorkerpoolorder.md#sign)
+- [tag](internal_.SignedWorkerpoolorder.md#tag)
+- [trust](internal_.SignedWorkerpoolorder.md#trust)
+- [volume](internal_.SignedWorkerpoolorder.md#volume)
+- [workerpool](internal_.SignedWorkerpoolorder.md#workerpool)
+- [workerpoolprice](internal_.SignedWorkerpoolorder.md#workerpoolprice)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:172](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L172)
+
+___
+
+### category
+
+• **category**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:170](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L170)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:173](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L173)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:174](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L174)
+
+___
+
+### salt
+
+• **salt**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:175](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L175)
+
+___
+
+### sign
+
+• **sign**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:176](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L176)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:169](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L169)
+
+___
+
+### trust
+
+• **trust**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:171](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L171)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:168](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L168)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:166](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L166)
+
+___
+
+### workerpoolprice
+
+• **workerpoolprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:167](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L167)
diff --git a/docs/interfaces/internal_.Workerpool.md b/docs/interfaces/internal_.Workerpool.md
new file mode 100644
index 00000000..e5135221
--- /dev/null
+++ b/docs/interfaces/internal_.Workerpool.md
@@ -0,0 +1,38 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / Workerpool
+
+# Interface: Workerpool
+
+[{internal}](../modules/internal_.md).Workerpool
+
+IExec workerpool
+
+## Table of contents
+
+### Properties
+
+- [description](internal_.Workerpool.md#description)
+- [owner](internal_.Workerpool.md#owner)
+
+## Properties
+
+### description
+
+• **description**: `string`
+
+a description of the workerpool
+
+#### Defined in
+
+[src/lib/IExecWorkerpoolModule.d.ts:15](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWorkerpoolModule.d.ts#L15)
+
+___
+
+### owner
+
+• **owner**: `string`
+
+the workerpool owner
+
+#### Defined in
+
+[src/lib/IExecWorkerpoolModule.d.ts:11](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecWorkerpoolModule.d.ts#L11)
diff --git a/docs/interfaces/internal_.WorkerpoolorderTemplate.md b/docs/interfaces/internal_.WorkerpoolorderTemplate.md
new file mode 100644
index 00000000..f5392895
--- /dev/null
+++ b/docs/interfaces/internal_.WorkerpoolorderTemplate.md
@@ -0,0 +1,111 @@
+[iexec](../README.md) / [Exports](../modules.md) / [{internal}](../modules/internal_.md) / WorkerpoolorderTemplate
+
+# Interface: WorkerpoolorderTemplate
+
+[{internal}](../modules/internal_.md).WorkerpoolorderTemplate
+
+sell order for computing power
+
+## Table of contents
+
+### Properties
+
+- [apprestrict](internal_.WorkerpoolorderTemplate.md#apprestrict)
+- [category](internal_.WorkerpoolorderTemplate.md#category)
+- [datasetrestrict](internal_.WorkerpoolorderTemplate.md#datasetrestrict)
+- [requesterrestrict](internal_.WorkerpoolorderTemplate.md#requesterrestrict)
+- [tag](internal_.WorkerpoolorderTemplate.md#tag)
+- [trust](internal_.WorkerpoolorderTemplate.md#trust)
+- [volume](internal_.WorkerpoolorderTemplate.md#volume)
+- [workerpool](internal_.WorkerpoolorderTemplate.md#workerpool)
+- [workerpoolprice](internal_.WorkerpoolorderTemplate.md#workerpoolprice)
+
+## Properties
+
+### apprestrict
+
+• **apprestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:141](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L141)
+
+___
+
+### category
+
+• **category**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:139](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L139)
+
+___
+
+### datasetrestrict
+
+• **datasetrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:142](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L142)
+
+___
+
+### requesterrestrict
+
+• **requesterrestrict**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:143](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L143)
+
+___
+
+### tag
+
+• **tag**: [`Tag`](../modules/internal_.md#tag)
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:138](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L138)
+
+___
+
+### trust
+
+• **trust**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:140](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L140)
+
+___
+
+### volume
+
+• **volume**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:137](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L137)
+
+___
+
+### workerpool
+
+• **workerpool**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:135](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L135)
+
+___
+
+### workerpoolprice
+
+• **workerpoolprice**: `string`
+
+#### Defined in
+
+[src/lib/IExecOrderModule.d.ts:136](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/IExecOrderModule.d.ts#L136)
diff --git a/docs/modules.md b/docs/modules.md
new file mode 100644
index 00000000..fbb62e02
--- /dev/null
+++ b/docs/modules.md
@@ -0,0 +1,31 @@
+[iexec](README.md) / Exports
+
+# iexec
+
+## Table of contents
+
+### Namespaces
+
+- [errors](modules/errors.md)
+- [utils](modules/utils.md)
+- [{internal}](modules/internal_.md)
+
+### Classes
+
+- [IExec](classes/IExec.md)
+- [IExecAccountModule](classes/IExecAccountModule.md)
+- [IExecAppModule](classes/IExecAppModule.md)
+- [IExecConfig](classes/IExecConfig.md)
+- [IExecDatasetModule](classes/IExecDatasetModule.md)
+- [IExecDealModule](classes/IExecDealModule.md)
+- [IExecENSModule](classes/IExecENSModule.md)
+- [IExecHubModule](classes/IExecHubModule.md)
+- [IExecModule](classes/IExecModule.md)
+- [IExecNetworkModule](classes/IExecNetworkModule.md)
+- [IExecOrderModule](classes/IExecOrderModule.md)
+- [IExecOrderbookModule](classes/IExecOrderbookModule.md)
+- [IExecResultModule](classes/IExecResultModule.md)
+- [IExecStorageModule](classes/IExecStorageModule.md)
+- [IExecTaskModule](classes/IExecTaskModule.md)
+- [IExecWalletModule](classes/IExecWalletModule.md)
+- [IExecWorkerpoolModule](classes/IExecWorkerpoolModule.md)
diff --git a/docs/modules/errors.md b/docs/modules/errors.md
new file mode 100644
index 00000000..0c98421d
--- /dev/null
+++ b/docs/modules/errors.md
@@ -0,0 +1,16 @@
+[iexec](../README.md) / [Exports](../modules.md) / errors
+
+# Namespace: errors
+
+## Table of contents
+
+### Classes
+
+- [BridgeError](../classes/errors.BridgeError.md)
+- [ConfigurationError](../classes/errors.ConfigurationError.md)
+- [ObjectNotFoundError](../classes/errors.ObjectNotFoundError.md)
+- [ValidationError](../classes/errors.ValidationError.md)
+- [Web3ProviderCallError](../classes/errors.Web3ProviderCallError.md)
+- [Web3ProviderError](../classes/errors.Web3ProviderError.md)
+- [Web3ProviderSendError](../classes/errors.Web3ProviderSendError.md)
+- [Web3ProviderSignMessageError](../classes/errors.Web3ProviderSignMessageError.md)
diff --git a/docs/modules/internal_.md b/docs/modules/internal_.md
new file mode 100644
index 00000000..5e677eb2
--- /dev/null
+++ b/docs/modules/internal_.md
@@ -0,0 +1,193 @@
+[iexec](../README.md) / [Exports](../modules.md) / {internal}
+
+# Namespace: {internal}
+
+## Table of contents
+
+### Classes
+
+- [BrigdeObservable](../classes/internal_.BrigdeObservable.md)
+- [DealObservable](../classes/internal_.DealObservable.md)
+- [ENSConfigurationObservable](../classes/internal_.ENSConfigurationObservable.md)
+- [IExecContractsClient](../classes/internal_.IExecContractsClient.md)
+- [Observable](../classes/internal_.Observable.md)
+- [TaskObservable](../classes/internal_.TaskObservable.md)
+
+### Interfaces
+
+- [App](../interfaces/internal_.App.md)
+- [ApporderTemplate](../interfaces/internal_.ApporderTemplate.md)
+- [Category](../interfaces/internal_.Category.md)
+- [ConsumableApporder](../interfaces/internal_.ConsumableApporder.md)
+- [ConsumableDatasetorder](../interfaces/internal_.ConsumableDatasetorder.md)
+- [ConsumableRequestorder](../interfaces/internal_.ConsumableRequestorder.md)
+- [ConsumableWorkerpoolorder](../interfaces/internal_.ConsumableWorkerpoolorder.md)
+- [Dataset](../interfaces/internal_.Dataset.md)
+- [DatasetorderTemplate](../interfaces/internal_.DatasetorderTemplate.md)
+- [HashableApporder](../interfaces/internal_.HashableApporder.md)
+- [HashableDatasetorder](../interfaces/internal_.HashableDatasetorder.md)
+- [HashableRequestorder](../interfaces/internal_.HashableRequestorder.md)
+- [HashableWorkerpoolorder](../interfaces/internal_.HashableWorkerpoolorder.md)
+- [IExecConfigArgs](../interfaces/internal_.IExecConfigArgs.md)
+- [IExecConfigOptions](../interfaces/internal_.IExecConfigOptions.md)
+- [PaginableDeals](../interfaces/internal_.PaginableDeals.md)
+- [PaginableOrders](../interfaces/internal_.PaginableOrders.md)
+- [PublishedApporder](../interfaces/internal_.PublishedApporder.md)
+- [PublishedDatasetorder](../interfaces/internal_.PublishedDatasetorder.md)
+- [PublishedRequestorder](../interfaces/internal_.PublishedRequestorder.md)
+- [PublishedWorkerpoolorder](../interfaces/internal_.PublishedWorkerpoolorder.md)
+- [RequestorderTemplate](../interfaces/internal_.RequestorderTemplate.md)
+- [SignedApporder](../interfaces/internal_.SignedApporder.md)
+- [SignedDatasetorder](../interfaces/internal_.SignedDatasetorder.md)
+- [SignedRequestorder](../interfaces/internal_.SignedRequestorder.md)
+- [SignedWorkerpoolorder](../interfaces/internal_.SignedWorkerpoolorder.md)
+- [Workerpool](../interfaces/internal_.Workerpool.md)
+- [WorkerpoolorderTemplate](../interfaces/internal_.WorkerpoolorderTemplate.md)
+
+### Type aliases
+
+- [BNish](internal_.md#bnish)
+- [Bytes32](internal_.md#bytes32)
+- [HumanSingleTag](internal_.md#humansingletag)
+- [Multiaddress](internal_.md#multiaddress)
+- [NRLCAmount](internal_.md#nrlcamount)
+- [Tag](internal_.md#tag)
+- [WeiAmount](internal_.md#weiamount)
+
+## Type aliases
+
+### BNish
+
+Ƭ **BNish**: `BN` \| `string` \| `number`
+
+big number like
+
+#### Defined in
+
+[src/lib/types.d.ts:6](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L6)
+
+___
+
+### Bytes32
+
+Ƭ **Bytes32**: `string`
+
+bytes 32 hex string
+
+example:
+```js
+const bytes32 = '0x800e8dca929fd7b6ced10b5f84487c49f7be79b2eed662827eccba258ef883c6';
+```
+
+#### Defined in
+
+[src/lib/types.d.ts:46](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L46)
+
+___
+
+### HumanSingleTag
+
+Ƭ **HumanSingleTag**: `string`
+
+human redable task tag
+
+example:
+```js
+const teeTag = 'tee';
+```
+
+#### Defined in
+
+[src/lib/types.d.ts:115](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L115)
+
+___
+
+### Multiaddress
+
+Ƭ **Multiaddress**: `string` \| `Buffer`
+
+multiaddress
+
+example:
+```js
+const url = 'https://example.com/foo.bar'
+const ipfs = '/ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ'
+```
+
+#### Defined in
+
+[src/lib/types.d.ts:135](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L135)
+
+___
+
+### NRLCAmount
+
+Ƭ **NRLCAmount**: `number` \| `string` \| `BN`
+
+nRLC amount (nRLC stands for nano RLC, the smallest sub-division of the RLC token: 1 RLC = 1,000,000,000 RLC).
+
+named units ('nRLC', 'RLC') can be used with the format `${amount} ${unit}`
+
+examples:
+```js
+// number
+const oneNRLC = 1;
+const tenRLC = 1000000000;
+// string (works for amounts above `Number.MAX_SAFE_INTEGER`)
+const tenMillionRLC = '10000000000000000';
+// string with unit
+const fiveRLC = '5 RLC';
+const zeroPointOneRLC = '0.1 RLC';
+// BN (from utils)
+const tenNRLC = new BN(10);
+```
+
+#### Defined in
+
+[src/lib/types.d.ts:106](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L106)
+
+___
+
+### Tag
+
+Ƭ **Tag**: [`Bytes32`](internal_.md#bytes32) \| [`HumanSingleTag`](internal_.md#humansingletag)[]
+
+task tag used to specify the runtime
+
+example:
+```js
+const onlyTeeTag = ['tee'];
+const teePlusGpuTags = ['tee','gpu'];
+```
+
+#### Defined in
+
+[src/lib/types.d.ts:125](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L125)
+
+___
+
+### WeiAmount
+
+Ƭ **WeiAmount**: `number` \| `string` \| `BN`
+
+wei amount (wei is the smallest sub-division of ether: 1 ether = 1,000,000,000,000,000,000 wei).
+
+named units ('wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether' or 'eth') can be used with the format `${amount} ${unit}`
+
+examples:
+```js
+// number
+const oneWei = 1;
+const tenGigaWei = 1000000000;
+// string (works for amounts above `Number.MAX_SAFE_INTEGER`)
+const oneEth = '1000000000000000000';
+// string with unit
+const fiveGigaWei = '5 gwei';
+const zeroPointOneEth = '0.1 ether';
+// BN (from utils)
+const tenWei = new BN(10);
+```
+
+#### Defined in
+
+[src/lib/types.d.ts:86](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/types.d.ts#L86)
diff --git a/docs/modules/utils.md b/docs/modules/utils.md
new file mode 100644
index 00000000..cdb30090
--- /dev/null
+++ b/docs/modules/utils.md
@@ -0,0 +1,318 @@
+[iexec](../README.md) / [Exports](../modules.md) / utils
+
+# Namespace: utils
+
+## Table of contents
+
+### Classes
+
+- [BN](../classes/utils.BN.md)
+- [EnhancedWallet](../classes/utils.EnhancedWallet.md)
+
+### Variables
+
+- [NULL\_ADDRESS](utils.md#null_address)
+- [NULL\_BYTES32](utils.md#null_bytes32)
+
+### Functions
+
+- [decodeTag](utils.md#decodetag)
+- [decryptResult](utils.md#decryptresult)
+- [encodeTag](utils.md#encodetag)
+- [formatEth](utils.md#formateth)
+- [formatRLC](utils.md#formatrlc)
+- [getSignerFromPrivateKey](utils.md#getsignerfromprivatekey)
+- [parseEth](utils.md#parseeth)
+- [parseRLC](utils.md#parserlc)
+- [sumTags](utils.md#sumtags)
+
+## Variables
+
+### NULL\_ADDRESS
+
+• `Const` **NULL\_ADDRESS**: `string`
+
+ethereum null/zero address
+
+#### Defined in
+
+[src/lib/utils.d.ts:87](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L87)
+
+___
+
+### NULL\_BYTES32
+
+• `Const` **NULL\_BYTES32**: `string`
+
+null bytes32
+
+#### Defined in
+
+[src/lib/utils.d.ts:91](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L91)
+
+## Functions
+
+### decodeTag
+
+▸ **decodeTag**(`tag`): `string`[]
+
+decode a bytes32 tag in an array of human readable tags
+
+example:
+```js
+console.log(decodeTag('0x0000000000000000000000000000000000000000000000000000000000000001'));
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `tag` | `string` |
+
+#### Returns
+
+`string`[]
+
+#### Defined in
+
+[src/lib/utils.d.ts:151](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L151)
+
+___
+
+### decryptResult
+
+▸ **decryptResult**(`encrypted`, `beneficiaryKey`): `Promise`<`Buffer`\>
+
+decrypt an encrypted result file
+
+example:
+```js
+// somehow load the beneficiary RSA private key
+const beneficaryKey = await loadBeneficiaryKey();
+const response = await iexec.task.fetchResults('0x5c959fd2e9ea2d5bdb965d7c2e7271c9cb91dd05b7bdcfa8204c34c52f8c8c19');
+const encFileBuffer = await response.arrayBuffer();
+const decryptedFileBuffer = await decryptResult(encFileBuffer, beneficaryKey);
+const binary = new Blob([decryptedFileBuffer]);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `encrypted` | `string` \| `Buffer` \| `Uint8Array` |
+| `beneficiaryKey` | `string` |
+
+#### Returns
+
+`Promise`<`Buffer`\>
+
+#### Defined in
+
+[src/lib/utils.d.ts:178](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L178)
+
+___
+
+### encodeTag
+
+▸ **encodeTag**(`tags`): `string`
+
+encode an array of human readable tags in a bytes32 tag readable by iExec's smart contracts
+
+example:
+```js
+console.log(encodeTag(['tee', 'gpu']));
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `tags` | `string`[] |
+
+#### Returns
+
+`string`
+
+#### Defined in
+
+[src/lib/utils.d.ts:142](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L142)
+
+___
+
+### formatEth
+
+▸ **formatEth**(`wei`): `string`
+
+format a wei amount in Eth
+
+example:
+```js
+console.log('500000000 wei =' + formatEth('500000000')) + 'ether');
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `wei` | [`WeiAmount`](internal_.md#weiamount) |
+
+#### Returns
+
+`string`
+
+#### Defined in
+
+[src/lib/utils.d.ts:124](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L124)
+
+___
+
+### formatRLC
+
+▸ **formatRLC**(`nRLC`): `string`
+
+format a nRLC amount in RLC
+
+ * example:
+```js
+console.log('500000000 nRLC =' + formatRLC('500000000') + 'RLC');
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `nRLC` | [`NRLCAmount`](internal_.md#nrlcamount) |
+
+#### Returns
+
+`string`
+
+#### Defined in
+
+[src/lib/utils.d.ts:133](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L133)
+
+___
+
+### getSignerFromPrivateKey
+
+▸ **getSignerFromPrivateKey**(`host`, `privateKey`, `options?`): [`EnhancedWallet`](../classes/utils.EnhancedWallet.md)
+
+create a signer connected to the specified blockchain host from a private key
+
+example:
+```js
+const ethProvider = getSignerFromPrivateKey('http://localhost:8545', '0x564a9db84969c8159f7aa3d5393c5ecd014fce6a375842a45b12af6677b12407');
+const iexec = new IExec({ ethProvider });
+```
+
+#### Parameters
+
+| Name | Type | Description |
+| :------ | :------ | :------ |
+| `host` | `string` | - |
+| `privateKey` | `string` | - |
+| `options?` | `Object` | - |
+| `options.gasPrice?` | `string` | gas price override |
+| `options.providers` | `any` | providers options |
+| `options.getTransactionCount?` | (`blockTag?`: `BlockTag`) => `Promise`<`number`\> | - |
+
+#### Returns
+
+[`EnhancedWallet`](../classes/utils.EnhancedWallet.md)
+
+#### Defined in
+
+[src/lib/utils.d.ts:45](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L45)
+
+___
+
+### parseEth
+
+▸ **parseEth**(`value`, `defaultUnit?`): `BN`
+
+parse a string formatted Eht value in wei big number
+
+supported units: 'wei', 'kwei', 'mwei', 'gwei', 'szabo', 'finney', 'ether' (or 'eth') default unit 'wei'
+
+example:
+```js
+console.log('5 gwei =' + parseEth('5 gwei') + 'wei');
+console.log('5 gwei =' + parseEth(5, 'gwei') + 'wei');
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `value` | `string` |
+| `defaultUnit?` | `string` |
+
+#### Returns
+
+`BN`
+
+#### Defined in
+
+[src/lib/utils.d.ts:103](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L103)
+
+___
+
+### parseRLC
+
+▸ **parseRLC**(`value`, `defaultUnit?`): `BN`
+
+parse a string formatted RLC value in nRLC big number
+
+supported units: 'nRLC', 'RLC' default unit 'nRLC'
+
+example:
+```js
+console.log('5 RLC =' + parseEth('5 RLC') + 'nRLC');
+console.log('5 RLC =' + parseEth(5, 'RLC') + 'nRLC');
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `value` | `string` |
+| `defaultUnit?` | `string` |
+
+#### Returns
+
+`BN`
+
+#### Defined in
+
+[src/lib/utils.d.ts:115](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L115)
+
+___
+
+### sumTags
+
+▸ **sumTags**(`tags`): `string`
+
+sum an array of bytes32 tags
+
+example:
+```js
+const appTag = '0x0000000000000000000000000000000000000000000000000000000000000100';
+const datasetTag = '0x0000000000000000000000000000000000000000000000000000000000000001';
+const requestTag = '0x0000000000000000000000000000000000000000000000000000000000000000';
+const workerpoolMinTag = sumTags([appTag, datasetTag, requestTag]);
+console.log('workerpoolMinTag', workerpoolMinTag);
+```
+
+#### Parameters
+
+| Name | Type |
+| :------ | :------ |
+| `tags` | `string`[] |
+
+#### Returns
+
+`string`
+
+#### Defined in
+
+[src/lib/utils.d.ts:164](https://github.com/iExecBlockchainComputing/iexec-sdk/blob/92c9bf6/src/lib/utils.d.ts#L164)
diff --git a/package-lock.json b/package-lock.json
index 978c02f6..3e7fef31 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3748,6 +3748,27 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz",
"integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ=="
},
+ "handlebars": {
+ "version": "4.7.7",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+ "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.0",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4",
+ "wordwrap": "^1.0.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -5111,6 +5132,12 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true
+ },
"node-fetch": {
"version": "2.6.7",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
@@ -6168,12 +6195,40 @@
"shiki": "^0.10.0"
}
},
+ "typedoc-plugin-markdown": {
+ "version": "3.11.14",
+ "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-3.11.14.tgz",
+ "integrity": "sha512-lh47OQvl0079nB18YL9wuTRRhMpjo300SZKfx/xpQY8qG+GINeSxTod95QBELeI0NP81sNtUbemRDrn5nyef4Q==",
+ "dev": true,
+ "requires": {
+ "handlebars": "^4.7.7"
+ }
+ },
+ "typedoc-plugin-missing-exports": {
+ "version": "0.22.6",
+ "resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-0.22.6.tgz",
+ "integrity": "sha512-1uguGQqa+c5f33nWS3v1mm0uAx4Ii1lw4Kx2zQksmYFKNEWTmrmMXbMNBoBg4wu0p4dFCNC7JIWPoRzpNS6pFA==",
+ "dev": true
+ },
+ "typedoc-plugin-rename-defaults": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/typedoc-plugin-rename-defaults/-/typedoc-plugin-rename-defaults-0.4.0.tgz",
+ "integrity": "sha512-7m7MbNZKcxCA4Z+0MW06sFEmuQ+he1xfc+rLRtvvQcQypPTd3fgFmkEJKVu42t8mONC+kKS/WkbmqwzsiqI1YQ==",
+ "dev": true
+ },
"typescript": {
"version": "4.5.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz",
"integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==",
"dev": true
},
+ "uglify-js": {
+ "version": "3.15.2",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.2.tgz",
+ "integrity": "sha512-peeoTk3hSwYdoc9nrdiEJk+gx1ALCtTjdYuKSXMTDqq7n1W7dHPqWDdSi+BPL0ni2YMeHD7hKUSdbj3TZauY2A==",
+ "dev": true,
+ "optional": true
+ },
"uint8arrays": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz",
@@ -6387,6 +6442,12 @@
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+ "dev": true
+ },
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
diff --git a/package.json b/package.json
index 83cf53b0..2ca0c064 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,10 @@
"types": "dist/lib/index.d.ts",
"scripts": {
"test": "jest --coverage --runInBand --detectOpenHandles --forceExit",
- "build": "./node_modules/.bin/babel src --out-dir dist --copy-files && node generatePackages.js"
+ "build": "npm run generate-dist && npm run generate-packages && npm run generate-doc",
+ "generate-dist": "./node_modules/.bin/babel src --out-dir dist --copy-files",
+ "generate-packages": "node generatePackages.js",
+ "generate-doc": "./node_modules/typedoc/bin/typedoc --tsconfig tsconfig.doc.json"
},
"bin": {
"iexec": "./dist/cli/cmd/iexec.js"
@@ -82,6 +85,9 @@
"jest": "^27.4.7",
"prettier": "^2.5.1",
"typedoc": "^0.22.12",
+ "typedoc-plugin-markdown": "^3.11.14",
+ "typedoc-plugin-missing-exports": "^0.22.6",
+ "typedoc-plugin-rename-defaults": "^0.4.0",
"typescript": "^4.5.5"
},
"babel": {
diff --git a/tsconfig.doc.json b/tsconfig.doc.json
new file mode 100644
index 00000000..daa31476
--- /dev/null
+++ b/tsconfig.doc.json
@@ -0,0 +1,17 @@
+{
+ "compilerOptions": {
+ "esModuleInterop": true
+ },
+ "typedocOptions": {
+ "entryPoints": ["src/lib/index.d.ts"],
+ "out": "docs",
+ "plugin": [
+ "typedoc-plugin-missing-exports",
+ "typedoc-plugin-rename-defaults",
+ "typedoc-plugin-markdown"
+ ],
+ "readme": "typedoc_readme.md",
+ "internalNamespace": "{internal}",
+ "excludeExternals": true
+ }
+}
diff --git a/typedoc_readme.md b/typedoc_readme.md
new file mode 100644
index 00000000..96675305
--- /dev/null
+++ b/typedoc_readme.md
@@ -0,0 +1,190 @@
+[< Back home](../README.md)
+
+# iExec SDK Library API
+
+[](https://drone.iex.ec/iExecBlockchainComputing/iexec-sdk)
+[](https://www.npmjs.com/package/iexec) [](https://www.npmjs.com/package/iexec) [](LICENSE)
+
+Use the iExec decentralised marketplace for off-chain computing in your dapp.
+
+## Content
+
+- [Install](#install)
+- [Quick start](#quick-start)
+- [API](#api)
+ - [IExecModules](#iexecmodules)
+ - [utils](#utils)
+ - [errors](#errors)
+- [Live demos](#live-demos)
+
+---
+
+# Install
+
+Install iexec sdk
+
+```bash
+npm install iexec
+```
+
+---
+
+# Quick start
+
+## Front-end integration
+
+```js
+import { IExec } from 'iexec';
+
+// connect injected provider
+const iexec = new IExec({ ethProvider: window.ethereum });
+```
+
+## Back-end integration
+
+```js
+const { IExec, utils } = require('iexec');
+
+const { PRIVATE_KEY } = process.env;
+
+const ethProvider = utils.getSignerFromPrivateKey(
+ 'http://localhost:8545', // blockchain node URL
+ PRIVATE_KEY,
+);
+const iexec = new IExec({
+ ethProvider,
+});
+```
+
+---
+
+# API
+
+## IExecModules
+
+IExec SDK is splitted into [IExecModule](./classes/IExecModule.md)s, each providing a set of methods relatives to a specific field.
+
+Additionaly the [IExec](./classes/IExec.md) module exposes all the following listed modules under the corresponding namespace.
+
+- [IExecAccountModule](./classes/IExecAccountModule.md) exposes **account** methods
+- [IExecAppModule](./classes/IExecAppModule.md) exposes **app** methods
+- [IExecDatasetModule](./classes/IExecDatasetModule.md) exposes **dataset** methods
+- [IExecDealModule](./classes/IExecDealModule.md) exposes **deal** methods
+- [IExecENSModule](./classes/IExecENSModule.md) exposes **ENS** methods
+- [IExecHubModule](./classes/IExecHubModule.md) exposes **hub** methods
+- [IExecNetworkModule](./classes/IExecNetworkModule.md) exposes **network** methods
+- [IExecOrderModule](./classes/IExecOrderModule.md) exposes **order** methods
+- [IExecOrderbookModule](./classes/IExecOrderbookModule.md) exposes **orderbook** methods
+- [IExecResultModule](./classes/IExecResultModule.md) exposes **result** methods
+- [IExecStorageModule](./classes/IExecStorageModule.md) exposes **storage** methods
+- [IExecTaskModule](./classes/IExecTaskModule.md) exposes **task** methods
+- [IExecWalletModule](./classes/IExecWalletModule.md) exposes **wallet** methods
+- [IExecWorkerpoolModule](./classes/IExecWorkerpoolModule.md) exposes **workerpool** methods
+
+### Imports
+
+As your app won't probably use all the features, you may want to import only the modules you need.
+
+Each module is available as an independant package under `iexec/MODULE_NAME` and is exported in the umbrella package.
+
+_example:_
+
+- import from module package
+
+```js
+import IExecWalletModule from 'iexec/IExecWalletModule';
+```
+
+- import from umbrella
+
+```js
+import { IExecWalletModule } from 'iexec';
+```
+
+### Usage
+
+[IExecModule](./classes/IExecModule.md)s are instancied with an [IExecConfig](./classes/IExecConfig.md) providing the configuration to access to a specific instance of the iExec platform.
+
+Once created, an [IExecConfig](./classes/IExecConfig.md) can be shared with any [IExecModule](./classes/IExecModule.md).
+
+_example:_
+
+- standard usage
+
+```js
+import IExecConfig from 'iexec/IExecConfig';
+
+import IExecWalletModule from 'iexec/IExecWalletModule';
+import IExecAccountModule from 'iexec/IExecAccountModule';
+
+// create the config once for the target iExec instance
+const config = new IExecConfig({ ethProvider: window.ethereum });
+
+// share it with all the modules
+const wallet = IExecWalletModule.fromConfig(config);
+const account = IExecAccountModule.fromConfig(config);
+```
+
+- reuse instancied module configuration
+
+```js
+import IExecWalletModule from 'iexec/IExecWalletModule';
+// some IExecModule instance
+import iexecModule from './my-module';
+
+// IExecModules expose their IExecConfig under config
+const wallet = IExecWalletModule.fromConfig(iexecModule.config);
+```
+
+- quick instanciation (shorter but not recommanded)
+
+```js
+import IExecWalletModule from 'iexec/IExecWalletModule';
+
+// the IExecConfig step can be skipped
+const wallet = new IExecWalletModule({ ethProvider: window.ethereum });
+```
+
+## utils
+
+The [utils](./modules/utils.md) namespace exposes some utility methods.
+
+_example_:
+
+```js
+import utils from 'iexec/utils';
+```
+
+Or
+
+```js
+import { utils } from 'iexec';
+```
+
+## errors
+
+The [errors](./modules/errors.md) namespace exposes the errors thrown by the library, use them if you want specific error handling.
+
+_example_:
+
+```js
+import errors from 'iexec/errors';
+```
+
+Or
+
+```js
+import { errors } from 'iexec';
+```
+
+---
+
+# Live demos
+
+- [Buy computation](https://codesandbox.io/embed/876r7?fontsize=14&hidenavigation=1&theme=dark)
+- [Deploy and sell application](https://codesandbox.io/embed/l4hh4?fontsize=14&hidenavigation=1&theme=dark)
+- [Deploy and sell dataset](https://codesandbox.io/embed/micsl?fontsize=14&hidenavigation=1&theme=dark)
+
+---
+
+[< Back home](../README.md)