> ## Documentation Index
> Fetch the complete documentation index at: https://docs.panofx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Every chain the relay serves, with contracts, tokens, minimums and the relay's settings.

<ResponseField name="chains" type="object[]">
  Every chain served. An EVM entry carries `kind: "evm"`; a Solana entry `kind: "solana"`.

  <Expandable title="EVM entry">
    <ResponseField name="chainId" type="number" />

    <ResponseField name="name" type="string" />

    <ResponseField name="executor" type="address">PanofxExecutor.</ResponseField>
    <ResponseField name="reactor" type="address">LimitOrderReactor.</ResponseField>
    <ResponseField name="validation" type="address">PanofxValidation.</ResponseField>

    <ResponseField name="permit2" type="address" />

    <ResponseField name="feeController" type="address" />

    <ResponseField name="tokens" type="object[]">`{ symbol, address, decimals, minimum }`. `minimum` is the smallest sell amount in base units, or null.</ResponseField>
    <ResponseField name="gasFee" type="object">`{ fixed, token }`: the fallback gas fee and the token it is charged in (null means the buy token of each quote).</ResponseField>
  </Expandable>

  <Expandable title="Solana entry">
    <ResponseField name="cluster" type="string">`devnet`, `testnet` or `mainnet-beta`.</ResponseField>
    <ResponseField name="program" type="string">The order-engine program. `executor` repeats it.</ResponseField>

    <ResponseField name="treasury" type="string" />

    <ResponseField name="keeper" type="string">The fee payer.</ResponseField>
    <ResponseField name="tokens" type="object[]">`{ symbol, address, tokenProgram, decimals, minimum }`.</ResponseField>
    <ResponseField name="fee" type="object">`{ token, tokens, bps }`. `tokens` are the fee mints in priority order; `token` is the first.</ResponseField>

    <ResponseField name="computeUnitLimit" type="number" />

    <ResponseField name="computeUnitPrice" type="string">Micro-lamports per compute unit.</ResponseField>
    <ResponseField name="gasFee" type="object">`{ fixed, token }`.</ResponseField>
    <ResponseField name="pairs" type="string[][]">The corridors quoted, as `[mintA, mintB]`. Either may be sold.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="chainId, executor, reactor, validation, permit2, feeController, tokens, gasFee">The first EVM chain's fields inline.</ResponseField>
<ResponseField name="rfqWindowMs" type="number">How long resolvers have to reply. 1500 by default.</ResponseField>
<ResponseField name="requireTakerProof" type="boolean">Whether `POST /v1/quotes` needs a [taker proof](/integrators/taker-proof).</ResponseField>
<ResponseField name="requireRegistration" type="boolean">Whether only registered resolvers may connect.</ResponseField>
<ResponseField name="maxOutstandingRfqs" type="number">In-flight RFQs allowed per taker.</ResponseField>
<ResponseField name="limitOrders" type="object | null">`{ minExpirySeconds, maxExpirySeconds, maxOpenPerTaker }`, or null when limit orders are off.</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "chains": [
      {
        "kind": "evm", "chainId": 84532, "name": "Base Sepolia",
        "executor": "0x64DcA68A0186c6aa632088fBE90b630e0c9D6b32",
        "reactor": "0x6228F9505647Df94838397A0ED03b158e3C8c59C",
        "validation": "0x42c1E8Aa00C0D48338494CC5a631169E4F2a4E7E",
        "permit2": "0x000000000022D473030F116dDEE9F6B43aC78BA3",
        "feeController": "0xAFfB63E5a0B9168E04678668137F4F9b1C265aA8",
        "tokens": [
          { "symbol": "cNGN", "address": "0xe2387F04d3858e7Cb64Ef5Ed6617f9B2fcEEAfa2", "decimals": 6, "minimum": "1000000000" },
          { "symbol": "USDC", "address": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "decimals": 6, "minimum": "1000000" }
        ],
        "gasFee": { "fixed": "0", "token": "0x036CbD53842c5426634e7929541eC2318f3dCF7e" }
      },
      {
        "kind": "solana", "chainId": 103, "name": "Solana devnet", "cluster": "devnet",
        "program": "PFXzwLoUsUAC1eNBGVxbgpsrhduaMFVmqLy9oge4N5n", "executor": "PFXzwLoUsUAC1eNBGVxbgpsrhduaMFVmqLy9oge4N5n",
        "treasury": "HNxotR7XfmwVxq85hemdnTmwrgmyQTZir9S2U9Cq2kDn", "keeper": "6XVEMkczPazR48FspJneiVdE7GYJ77PofQBtcfVAq8YB",
        "tokens": [
          { "symbol": "cNGN", "address": "6RFnYruxidpR1m9L91bs8cZKjmigEpxXB2Wv2rR8m2pu", "tokenProgram": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb", "decimals": 6, "minimum": "1000000000" },
          { "symbol": "USDC", "address": "72GtYU66mCGJV311qh12EVGyQGkAb8TJVpxSXMPSghKx", "tokenProgram": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", "decimals": 6, "minimum": "1000000" },
          { "symbol": "USDT", "address": "An2RV3ZgsyXspuWLY2TgmjwR5UY1iYNgymrsLCTaPpCN", "tokenProgram": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", "decimals": 6, "minimum": "1000000" }
        ],
        "fee": { "token": "72GtYU66mCGJV311qh12EVGyQGkAb8TJVpxSXMPSghKx", "tokens": ["72GtYU66mCGJV311qh12EVGyQGkAb8TJVpxSXMPSghKx", "An2RV3ZgsyXspuWLY2TgmjwR5UY1iYNgymrsLCTaPpCN"], "bps": 5 },
        "computeUnitLimit": 200000, "computeUnitPrice": "10000",
        "gasFee": { "fixed": "20000", "token": "72GtYU66mCGJV311qh12EVGyQGkAb8TJVpxSXMPSghKx" },
        "pairs": [
          ["6RFnYruxidpR1m9L91bs8cZKjmigEpxXB2Wv2rR8m2pu", "72GtYU66mCGJV311qh12EVGyQGkAb8TJVpxSXMPSghKx"],
          ["6RFnYruxidpR1m9L91bs8cZKjmigEpxXB2Wv2rR8m2pu", "An2RV3ZgsyXspuWLY2TgmjwR5UY1iYNgymrsLCTaPpCN"]
        ]
      }
    ],
    "chainId": 84532,
    "executor": "0x64DcA68A0186c6aa632088fBE90b630e0c9D6b32",
    "rfqWindowMs": 1500,
    "requireTakerProof": true,
    "requireRegistration": true,
    "maxOutstandingRfqs": 4,
    "limitOrders": { "minExpirySeconds": 300, "maxExpirySeconds": 2592000, "maxOpenPerTaker": 20 }
  }
  ```
</ResponseExample>
