import { NotifyTransport, GapPolicy, Logger, BaseNotifyAdapter, NotifyManifest } from '@lonca/baron-core'; /** * The Slack provider id. Kept in its own leaf module (no imports) so the transport module can read it * WITHOUT importing `index.ts` — `index.ts` re-exports the transport, so referencing an `index.ts` * const at the transport's module top-level would hit a circular temporal-dead-zone error under real * ESM evaluation order (the same fix the other adapters use). */ declare const SLACK_PROVIDER = "slack"; interface SlackNotifyTransportOptions { /** Slack bot token (xoxb-…). Read from env / secret-manager by the caller; never committed. */ readonly token: string; /** Default channel id/name used when a message does not specify one. */ readonly defaultChannel?: string; } /** * Live `notify` transport over the Slack Web API (`chat.postMessage`) using global fetch — no SDK * dependency. Threads ride on Slack's `thread_ts` (returned as the message `ts`, which Baron surfaces * as the opaque `threadKey`). Slack's `ok:false` responses are surfaced as a BaronError, never silent. */ declare function createSlackNotifyTransport(options: SlackNotifyTransportOptions): NotifyTransport; /** Slack supports channels, threaded replies (`thread_ts`), and mrkdwn rich text. */ declare const slackNotifyManifest: NotifyManifest; /** * Builds the Slack `notify` port. The adapter contributes only the manifest; the shared * {@link BaseNotifyAdapter} carries the capability-gap negotiation. */ declare function defineSlackNotifyAdapter(transport: NotifyTransport, gapPolicy?: GapPolicy, logger?: Logger): BaseNotifyAdapter; export { SLACK_PROVIDER, type SlackNotifyTransportOptions, createSlackNotifyTransport, defineSlackNotifyAdapter, slackNotifyManifest };