# PolymarketNotify v0.1.0 - Table of Contents

> Notification controls (per-category x per-strategy) plus pluggable channels (Telegram/Discord/webhook/log) for Elixir trading bots. Best-effort delivery, injectable HTTP, no processes or database.

## Pages

- [PolymarketNotify](readme.md)
- [Changelog](changelog.md)

## Modules

- [PolymarketNotify](PolymarketNotify.md): Notification **controls + channels** for the Polymarket bot.
- [PolymarketNotify.Channel](PolymarketNotify.Channel.md): Behaviour for a delivery channel — `deliver/2` ships a plain-text
message somewhere and returns `:ok` or `{:error, reason}`. May raise;
`PolymarketNotify.notify/3` isolates callers from that.

- [PolymarketNotify.Controls](PolymarketNotify.Controls.md): The notification **control model** — what the user wants to see and
where, as per-category defaults plus per-strategy overrides. Pure data
+ pure resolution; no I/O, so it's trivially testable and a UI/editor
can read & write it later.
- [PolymarketNotify.Discord](PolymarketNotify.Discord.md): Discord channel — POSTs `%{"content" => message}` to a Discord
webhook URL (`:webhook_url`, or `{:system, "VAR"}`). `:http`
injectable like `Telegram`. No url ⇒ `{:error, :not_configured}`.

- [PolymarketNotify.Log](PolymarketNotify.Log.md): Channel that logs the message (default-safe, zero-config).
- [PolymarketNotify.Multi](PolymarketNotify.Multi.md): Fan-out channel: deliver to several `{channel, opts}` targets. One
target failing/raising never stops the others; `:ok` if any succeeds,
else the last error.

- [PolymarketNotify.Telegram](PolymarketNotify.Telegram.md): Telegram channel — posts `message` to a chat via `sendMessage`.
- [PolymarketNotify.Webhook](PolymarketNotify.Webhook.md): Generic webhook channel — POSTs `%{"text" => message}` (+ any
`:extra`) as JSON to `:url`. `:http` injectable.

