> For the complete documentation index, see [llms.txt](https://docs.kyberswap.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kyberswap.com/reference/legacy/api-abi/misc-contracts/orderbookreservelister.md).

# OrderbookReserveLister

{% hint style="warning" %}
You are referring to the **`Legacy`** version of KyberSwap docs.

For the most updated information, please refer to:

* [**`Classic`**](https://github.com/KyberNetwork/kyberswap-documentation/blob/main/reference/legacy/api-abi/misc-contracts/broken-reference/README.md)
* [**`Elastic`**](/reference/legacy/kyberswap-elastic.md)
* [**`Limit Order`**](broken://pages/DCqb2Gq8yk2f2UIjmGEs)
* [**`Aggregator`**](broken://pages/P4AAjSd0nrbC42bSddka)
  {% endhint %}

## contract PermissionlessOrderbookReserveLister

imports [OrderbookReserve](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-orderbookreserve.md), [FeeBurnerInterface](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-feeburnerinterface.md)

*Source*: [PermissionlessOrderbookReserveLister.sol](https://github.com/KyberNetwork/smart-contracts/blob/master/contracts/reserves/orderBookReserve/permissionless/PermissionlessOrderbookReserveLister.sol)

The Permissionless Orderbook Reserve Lister is used for creating, initialising and listing new Permissionless Orderbook Reserves.

***

### INDEX[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#index) <a href="#index" id="index"></a>

\<AUTOGENERATED\_TABLE\_OF\_CONTENTS>

### REFERENCE[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#reference) <a href="#reference" id="reference"></a>

#### Events[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#events) <a href="#events" id="events"></a>

#### `TokenOrderbookListingStage`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#tokenorderbooklistingstage) <a href="#tokenorderbooklistingstage" id="tokenorderbooklistingstage"></a>

Event for logging of the listing stage of an orderbook reserve for a particular ERC20 token.

***

event **TokenOrderbookListingStage**(ERC20 token, ListingStage stage) | Parameter | Type | Description | | --------- |:-----:|:----------------------------:| | `token` | ERC20 | ERC20 token contract address | | `stage` | enum ListingStage | Takes 1 of the following values: {NO\_RESERVE, RESERVE\_ADDED, RESERVE\_INIT, RESERVE\_LISTED} |\\

#### Functions[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#functions) <a href="#functions" id="functions"></a>

#### `PermissionlessOrderbookReserveLister`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#permissionlessorderbookreservelister) <a href="#permissionlessorderbookreservelister" id="permissionlessorderbookreservelister"></a>

Contract constructor. Note that constructor methods are called exactly once during contract instantiation and cannot be called again.

***

function **PermissionlessOrderbookReserveLister**(InternalNetworkInterface kyber, OrderListFactoryInterface factory, MedianizerInterface medianizer, ERC20 knc, uint maxOrders, uint minOrderValueUsd) public | Parameter | Type | Description | | -----------------|:------------------------:|:--------------------------------:| | `kyber` | InternalNetworkInterface | KyberNetwork contract address | | `factory` | OrderListFactoryInterface | OrderListFactory contract address | | `medianizer` | MedianizerInterface | Medianizer contract address | | `knc` | ERC20 | KNC token contract address | | `maxOrders` | uint | Maximum number of orders to traverse for 1 trade | | `minOrderValueUsd` | uint | Minimum USD amount needed to create a new order on a permissionless orderbook reserve |

***

\\

#### `addOrderbookContract`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#addorderbookcontract) <a href="#addorderbookcontract" id="addorderbookcontract"></a>

The first step for creating an orderbook reserve for a specified ERC20 token.

***

function **addOrderbookContract**(ERC20 token) public returns (bool) | Parameter | Type | Description | | ----------|:-----:|:------------------------------------------:| | `token` | ERC20 | ERC20 token contract address | **Returns:**\ True if the function was executed successfully.

***

Web3 Example:

```
// DISCLAIMER: Code snippets in this guide are just examples and you
// should always do your own testing. If you have questions, visit our
// https://t.me/KyberDeveloper.

transactionData = PermissionlessOrderbookReserveLister.methods
  .addOrderbookContract(token)
  .encodeABI();

txReceipt = await web3.eth.sendTransaction({
  from: ADMIN_ADDRESS,
  to: PERMISSIONLESS_ORDERBOOK_RESERVE_LISTER_ADDRESS,
  data: transactionData,
});
```

\\

#### `getOrderbookListingStage`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#getorderbooklistingstage) <a href="#getorderbooklistingstage" id="getorderbooklistingstage"></a>

Get the current listing stage for a specified ERC20 token.

***

function **getOrderbookListingStage**(ERC20 token) public view returns (address, ListingStage) | Parameter | Type | Description | | ----------|:-----:|:------------------------------------------:| | `token` | ERC20 | ERC20 token contract address |

**Returns:**\ | Parameter | Type | Description | | ----------|:-----:|:------------------------------------------:| | `address` | address | Orderbook reserve contract address for specified ERC20 token | | `ListingStage` | ListingStage | Latest successful stage |

***

Web3 Example:

```
// DISCLAIMER: Code snippets in this guide are just examples and you
// should always do your own testing. If you have questions, visit our
// https://t.me/KyberDeveloper.

const token = '0xe41d2489571d322189246dafa5ebde1f4699f498'; // ZRX
result = await OrderbookReserve.methods.getOrderbookListingStage(token).call();
```

\\

#### `initOrderbookContract`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#initorderbookcontract) <a href="#initorderbookcontract" id="initorderbookcontract"></a>

The second step for creating an orderbook reserve for a specified ERC20 token.

***

function **initOrderbookContract**(ERC20 token) public returns (bool) | Parameter | Type | Description | | ----------|:-----:|:------------------------------------------:| | `token` | ERC20 | ERC20 token contract address | **Returns:**\ True if the function was executed successfully.

***

Web3 Example:

```
// DISCLAIMER: Code snippets in this guide are just examples and you
// should always do your own testing. If you have questions, visit our
// https://t.me/KyberDeveloper.

transactionData = PermissionlessOrderbookReserveLister.methods
  .initOrderbookContract(token)
  .encodeABI();

txReceipt = await web3.eth.sendTransaction({
  from: ADMIN_ADDRESS,
  to: PERMISSIONLESS_ORDERBOOK_RESERVE_LISTER_ADDRESS,
  data: transactionData,
});
```

\\

#### `listOrderbookContract`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#listorderbookcontract) <a href="#listorderbookcontract" id="listorderbookcontract"></a>

The third and final step for creating an orderbook reserve for a specified ERC20 token.

***

function **listOrderbookContract**(ERC20 token) public returns (bool) | Parameter | Type | Description | | ----------|:-----:|:------------------------------------------:| | `token` | ERC20 | ERC20 token contract address | **Returns:**\ True if the function was executed successfully.

***

Web3 Example:

```
// DISCLAIMER: Code snippets in this guide are just examples and you
// should always do your own testing. If you have questions, visit our
// https://t.me/KyberDeveloper.

transactionData = PermissionlessOrderbookReserveLister.methods
  .listOrderbookContract(token)
  .encodeABI();

txReceipt = await web3.eth.sendTransaction({
  from: ADMIN_ADDRESS,
  to: PERMISSIONLESS_ORDERBOOK_RESERVE_LISTER_ADDRESS,
  data: transactionData,
});
```

\\

#### `unlistOrderbookContract`[​](https://docs.kyberswap.com/Legacy/api-abi/misc/api_abi-permissionlessorderbookreservelister#unlistorderbookcontract) <a href="#unlistorderbookcontract" id="unlistorderbookcontract"></a>

Unlist an orderbook reserve for a specified ERC20 token.

***

function **unlistOrderbookContract**(ERC20 token, uint hintReserveIndex) public returns (bool) | Parameter | Type | Description | | ----------|:-----:|:------------------------------------------:| | `token` | ERC20 | ERC20 token contract address | | `hintReserveIndex` | uint | index in Kyber Network reserve array | **Returns:**\ True if the reserve was successfully removed.

***

Web3 Example:

```
// DISCLAIMER: Code snippets in this guide are just examples and you
// should always do your own testing. If you have questions, visit our
// https://t.me/KyberDeveloper.

transactionData = PermissionlessOrderbookReserveLister.methods
  .unlistOrderbookContract(token, hintReserveIndex)
  .encodeABI();

txReceipt = await web3.eth.sendTransaction({
  from: ADMIN_ADDRESS,
  to: PERMISSIONLESS_ORDERBOOK_RESERVE_LISTER_ADDRESS,
  data: transactionData,
});
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.kyberswap.com/reference/legacy/api-abi/misc-contracts/orderbookreservelister.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
