# 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`**](/kyberswap-solutions/limit-order.md)
* [**`Aggregator`**](/kyberswap-solutions/kyberswap-aggregator.md)
  {% 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: Querying This Documentation

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

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

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

The question should be specific, self-contained, and written in natural language.
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.
