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

# Types

> TypeScript type definitions for the Gatelit SDK.

All types are exported from `@gatelit/sdk`.

## `GatelitClientConfig`

```ts theme={null}
interface GatelitClientConfig {
  gatewayUrl: string
  getToken: () => Promise<{
    token: string
    scheme: TokenScheme
  }>
}
```

| Field        | Type                               | Description                                          |
| ------------ | ---------------------------------- | ---------------------------------------------------- |
| `gatewayUrl` | `string`                           | Base URL of your deployed gateway                    |
| `getToken`   | `() => Promise<{ token, scheme }>` | Called before each request to get a fresh auth token |

## `TokenScheme`

```ts theme={null}
type TokenScheme = "Bearer" | "GatelitSigned" | "GatelitKey"
```

## `ChatOptions`

```ts theme={null}
interface ChatOptions {
  model: string                    // "provider/model-id"
  messages: ChatMessage[]          // At least one message
  maxTokens?: number               // Max output tokens
  temperature?: number             // 0–2
  signal?: AbortSignal             // For cancellation
  outputSchema?: {                 // Structured output config
    mode: "json_object" | "json_schema"
    [key: string]: unknown
  } | null
  promptId?: string                // Link to a saved prompt (UUID)
  endUserId?: string               // End-user ID for log filtering
  requestSource?: "api" | "dashboard" | "eval"
}
```

## `ChatMessage`

```ts theme={null}
interface ChatMessage {
  role: "system" | "user" | "assistant"
  content: string
}
```

## `ChatResponse`

```ts theme={null}
interface ChatResponse {
  content: string
  model: string
  usage: Usage | null
  finishReason: string | null
  meta: GatelitMeta
}
```

## `StreamChunk`

```ts theme={null}
interface StreamChunk {
  delta: string
  model: string | undefined
  finishReason: string | null
  usage: Usage | null
}
```

## `Usage`

```ts theme={null}
interface Usage {
  inputTokens: number
  outputTokens: number
  totalTokens: number
}
```

## `GatelitMeta`

```ts theme={null}
interface GatelitMeta {
  requestId: string
  model: string
}
```

## `GatelitError`

```ts theme={null}
class GatelitError extends Error {
  code: string      // "unauthorized" | "gateway_error" | "provider_error" | "invalid_json"
  message: string
  status: number    // HTTP status
}
```

## `SignedTokenOptions`

```ts theme={null}
interface SignedTokenOptions {
  sub: string
  orgId?: string
  model?: string
  maxTokens?: number
  ttl?: number
  endUserId?: string
  requestSource?: "api" | "dashboard" | "eval"
}
```

## `ConversationOptions`

```ts theme={null}
interface ConversationOptions {
  model: string
  systemPrompt?: string
  maxTokens?: number
  temperature?: number
}
```
