/**
 * @zync/notifications — system-communications-notifications.
 *
 * Public surface:
 *  - deliverNotification: fan-out across all registered adapters
 *  - Individual adapters: EmailNotificationAdapter, TelegramNotificationAdapter, WebPushNotificationAdapter
 *  - sendEmail: locale-aware Resend email sender
 *  - pushOverWebSocket: best-effort DO WebSocket forward
 *  - saveAdapterCredential / loadAdapterCredential: encrypted credential storage
 *  - Telegram helpers: setTelegramWebhook, deleteTelegramWebhook, validateBotToken, createTelegramAdapter
 */

// Delivery fanout
export { deliverNotification } from './deliver'
export {
  buildNotificationDedupKey,
  buildPlatformNotificationRecipients,
  buildTelegramPayload,
  createNotificationDedupStore,
  createNotificationPreferenceStore,
  createTelegramChannelAdapter,
  createWebPushChannelAdapter,
  deliverPlatformNotification,
} from './platform'

// WebSocket push seam
export { pushOverWebSocket } from './ws-push'

// Adapters
export { EmailNotificationAdapter } from './adapters/email'
export { TelegramNotificationAdapter } from './adapters/telegram'
export { WebPushNotificationAdapter } from './adapters/web-push'

// Email
export { buildMailMessage, sendEmail } from './email/send-email'
export { renderEmailTemplate } from './email/render'
export { sendViaResend } from './email/resend'
export type { ResendResponse } from './email/resend'

// Credentials
export { saveAdapterCredential, loadAdapterCredential } from './credentials'

// Telegram comms helpers
export {
  createTelegramAdapter,
  setTelegramWebhook,
  deleteTelegramWebhook,
  validateBotToken,
} from './comms/telegram'

// Web push
export { sendWebPush } from './web-push/send'
export { buildVapidJwt, encryptWebPushPayload } from './web-push/vapid'
