/**
 * Built-in chat notification sounds.
 *
 * Sounds are inlined as base64 data URLs inside each `./sounds/<name>.ts`
 * module — no `.mp3` loader / `*.d.ts` shim required on the consumer
 * side. Total ≈ 136KB bundled into the lazy Chat chunk.
 *
 * To re-encode after a source edit:
 *   1. Drop the new mp3 next to this file (e.g. `./sounds/sent.source.mp3`).
 *   2. `base64 -i sent.source.mp3` and paste into `./sounds/sent.ts`.
 *   3. Delete the temporary source mp3 — only the `.ts` ships.
 *
 * Encoding cheat-sheet:
 *   ffmpeg -i in.mp3 -ac 2 -ar 44100 -b:a 128k \
 *     -af 'atrim=0:1.4,afade=t=out:st=1.22:d=0.18' out.mp3
 */

import sent from './sounds/sent';
import received from './sounds/received';
import start from './sounds/start';
import errorSound from './sounds/error';
import mention from './sounds/mention';
import notification from './sounds/notification';

import type { ChatAudioSounds } from './types';

/**
 * Default chat notification sounds. Pass to `useChatAudio` (or spread
 * into a custom map) so hosts don't have to ship assets themselves.
 *
 * @example
 * ```tsx
 * const audio = useChatAudio({ sounds: DEFAULT_CHAT_SOUNDS });
 *
 * // Override one event:
 * const audio = useChatAudio({
 *   sounds: { ...DEFAULT_CHAT_SOUNDS, mention: '/custom-mention.mp3' },
 * });
 * ```
 */
export const DEFAULT_CHAT_SOUNDS: ChatAudioSounds = {
  messageSent: sent,
  messageReceived: received,
  streamStart: start,
  error: errorSound,
  mention,
  notification,
};
