/** * Minimal hand-rolled Slack Web API client. The repo norm is hand-rolled * `fetch` over a vendor SDK (only Telegram pulls in grammy), so there is NO * `@slack/web-api` dependency: each method POSTs JSON to * `https://slack.com/api/` with `Authorization: Bearer ` and * throws on a non-`ok` Slack response. */ export interface SlackClientOptions { readonly token: string; /** Override the API base (tests). */ readonly baseUrl?: string; /** Injectable fetch (tests). Defaults to the global `fetch`. */ readonly fetchImpl?: typeof fetch; } export interface AuthTestResult { /** The bot's own user id — used to drop the bot's own messages. */ readonly botUserId: string; readonly teamId?: string; readonly team?: string; readonly url?: string; } export interface PostMessageResult { readonly channel: string; /** The new message ts — used as the edit target for streaming. */ readonly ts: string; } export declare class SlackClient { private readonly token; private readonly baseUrl; private readonly fetchImpl; constructor(opts: SlackClientOptions); private call; /** Validate the token and capture the bot's own user id. */ authTest(): Promise; /** Post a message into a channel/thread. Returns the channel + new ts. */ postMessage(args: { channel: string; text: string; threadTs?: string; }): Promise; /** Edit an existing message (the streaming-update path). */ updateMessage(args: { channel: string; ts: string; text: string; }): Promise; /** Optional: read a thread's replies (unused by v1 streaming, exposed for tools). */ conversationsReplies(args: { channel: string; ts: string; }): Promise>>; } //# sourceMappingURL=slack-client.d.ts.map