<!-- source-hash: e5e5528221514a1a868f47ffbc324b0c -->
Auto-generated type definitions for the Flamingo/OpenFrame Supabase database schema, providing fully-typed `Row`, `Insert`, and `Update` interfaces for all public tables along with their foreign key relationships.

## Key Components

### `Json` Type
A recursive union type representing any valid JSON value — `string`, `number`, `boolean`, `null`, nested objects, or arrays.

### `Database` Type
The root type exported for use with the Supabase client. Contains a `public` schema with the following tables:

| Table | Description |
|---|---|
| `announcement_assets` | File attachments (images, docs) linked to announcements |
| `announcements` | Platform announcements with icon, color, and active state |
| `slack_channels` | Synced Slack workspace channels |
| `slack_messages` | Slack messages with threading and reply support |
| `slack_users` | Slack workspace user profiles |
| `podcast_episodes` | Podbean podcast episodes linked to platforms |
| `webinars` | Livestorm webinar events linked to platforms |

Each table exposes three operation shapes:
- **`Row`** — full record shape returned by `SELECT`
- **`Insert`** — shape for `INSERT` (required fields enforced, optional fields use `?`)
- **`Update`** — shape for `UPDATE` (all fields optional)

## Usage Example

```typescript
import { createClient } from '@supabase/supabase-js'
import type { Database } from './supabase'

const supabase = createClient<Database>(
  process.env.SUPABASE_URL!,
  process.env.SUPABASE_ANON_KEY!
)

// Fully typed query — row shape inferred automatically
const { data: episodes } = await supabase
  .from('podcast_episodes')
  .select('id, title, audio_url, published_at')
  .eq('platform_id', 'abc-123')

// Typed insert
const { error } = await supabase
  .from('announcements')
  .insert({
    title: 'New Feature',
    description: 'Check out what is new!',
    platform_id: 'abc-123',
  })
```