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

# Types

> Core types and config used by the Kaleido SDK

## Overview

The SDK ships generated API models plus a thin handwritten client layer.

* TypeScript exports its request and response types from `kaleido-sdk`
* Python exports Pydantic models from `kaleido_sdk`

## Client Config

### TypeScript

```typescript theme={null}
import type { KaleidoConfig } from 'kaleido-sdk';

const config: KaleidoConfig = {
  baseUrl: 'https://api.regtest.kaleidoswap.com',
  nodeUrl: 'http://localhost:3001',
  apiKey: process.env.KALEIDO_API_KEY,
  timeout: 30,
  logLevel: 'info',
  logger: console,
};
```

`KaleidoConfig` currently supports:

* `baseUrl?`
* `nodeUrl?`
* `apiKey?`
* `timeout?`
* `logLevel?`
* `logger?`

### Python

Python does not expose a separate constructor object for normal use. Configure the client via `KaleidoClient.create(...)`:

```python theme={null}
import logging
from kaleido_sdk import KaleidoClient

client = KaleidoClient.create(
    base_url="https://api.regtest.kaleidoswap.com",
    node_url="http://localhost:3001",
    api_key=None,
    timeout=30.0,
    max_retries=3,
    cache_ttl=60,
    log_level=logging.INFO,
)
```

## Common Enums and Models

<CodeGroup>
  ```typescript TypeScript theme={null}
  import type {
    Asset,
    CreateSwapOrderRequest,
    PairQuoteRequest,
    PairQuoteResponse,
    SwapOrderStatusRequest,
    TradingPair,
  } from 'kaleido-sdk';
  import { Layer, ReceiverAddressFormat } from 'kaleido-sdk';
  ```

  ```python Python theme={null}
  from kaleido_sdk import (
      Asset,
      CreateSwapOrderRequest,
      Layer,
      PairQuoteRequest,
      PairQuoteResponse,
      ReceiverAddressFormat,
      SwapOrderStatusRequest,
      TradingPair,
  )
  ```
</CodeGroup>

## Layers

The SDK uses the shared `Layer` enum for routing assets across supported networks.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { Layer } from 'kaleido-sdk';

  const fromLayer = Layer.BTC_LN;
  const toLayer = Layer.RGB_LN;
  ```

  ```python Python theme={null}
  from kaleido_sdk import Layer

  from_layer = Layer.BTC_LN
  to_layer = Layer.RGB_LN
  ```
</CodeGroup>

## Receiver Address Formats

Use `ReceiverAddressFormat` when creating order-based swaps that need a destination.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { ReceiverAddressFormat } from 'kaleido-sdk';

  const format = ReceiverAddressFormat.BOLT11;
  ```

  ```python Python theme={null}
  from kaleido_sdk import ReceiverAddressFormat

  format = ReceiverAddressFormat.BOLT11
  ```
</CodeGroup>

## Quote Models

<CodeGroup>
  ```typescript TypeScript theme={null}
  import type { PairQuoteRequest, PairQuoteResponse } from 'kaleido-sdk';

  const request: PairQuoteRequest = {
    from_asset: { asset_id: 'BTC', layer: Layer.BTC_LN, amount: 100000 },
    to_asset: { asset_id: 'USDT', layer: Layer.RGB_LN },
  };

  const response: PairQuoteResponse = await client.maker.getQuote(request);
  ```

  ```python Python theme={null}
  from kaleido_sdk import Layer, PairQuoteRequest, SwapLegInput

  request = PairQuoteRequest(
      from_asset=SwapLegInput(asset_id="BTC", layer=Layer.BTC_LN, amount=100000),
      to_asset=SwapLegInput(asset_id="USDT", layer=Layer.RGB_LN),
  )

  response = await client.maker.get_quote(request)
  ```
</CodeGroup>

## Order Models

<CodeGroup>
  ```typescript TypeScript theme={null}
  import type {
    CreateSwapOrderRequest,
    SwapOrder,
    SwapOrderStatusRequest,
    SwapOrderStatusResponse,
  } from 'kaleido-sdk';
  ```

  ```python Python theme={null}
  from kaleido_sdk import (
      CreateSwapOrderRequest,
      SwapOrder,
      SwapOrderStatusRequest,
      SwapOrderStatusResponse,
  )
  ```
</CodeGroup>

Notable fields used by the current client implementations:

* `CreateSwapOrderRequest`: `rfq_id`, `from_asset`, `to_asset`, `receiver_address`, `min_onchain_conf?`
* `CreateSwapOrderResponse`: `id`, `rfq_id`, `status`, `access_token`, `deposit_address?`
* `SwapOrderStatusRequest`: `order_id`, `access_token?`

## Utility Types

TypeScript also exports WebSocket and logging-related types from the package root:

```typescript theme={null}
import type { QuoteResponse, LogLevelValue, SdkLogger, SwapCompletionOptions } from 'kaleido-sdk';
```

Python exposes the polling helper type used by `wait_for_swap_completion(...)`:

```python theme={null}
from kaleido_sdk import SwapCompletionOptions
```
