//! Outbound notification channels for VAPORA.
//!
//! Delivers workflow events and agent completion signals to external team
//! communication platforms. All three providers use HTTP webhooks / Bot API —
//! no vendor SDKs are required.
//!
//! # Supported Channels
//!
//! - **Slack** — Incoming Webhooks (POST JSON with `attachments`)
//! - **Discord** — Incoming Webhooks (POST JSON with `embeds`, 204 response)
//! - **Telegram** — Bot API `sendMessage` with HTML `parse_mode`
//!
//! # Quick Start
//!
//! ```toml
//! # vapora.toml  (under your [channels] section)
//! [channels.team-slack]
//! type = "slack"
//! webhook_url = "https://hooks.slack.com/services/…"
//!
//! [channels.ops-discord]
//! type = "discord"
//! webhook_url = "https://discord.com/api/webhooks/…"
//!
//! [channels.alerts]
//! type = "telegram"
//! bot_token = "123456:ABC-DEF…"
//! chat_id   = "-1001234567890"
//! ```
//!
//! ```rust,ignore
//! let config: ChannelsConfig = toml::from_str(toml_str)?;
//! let registry = ChannelRegistry::from_config(config)?;
//!
//! registry.send("team-slack", Message::success(
//!     "Deploy complete",
//!     "v1.2.0 is live on production",
//! )).await?;
//! ```

pub mod channel;
pub mod config;
pub mod discord;
pub mod error;
pub mod message;
pub mod registry;
pub mod slack;
pub mod telegram;

pub use channel::NotificationChannel;
pub use config::{ChannelConfig, ChannelsConfig, DiscordConfig, SlackConfig, TelegramConfig};
pub use error::{ChannelError, Result};
pub use message::{Message, MessageLevel};
pub use registry::ChannelRegistry;
