import type { ChannelAdapter, IncomingMessage, OutgoingMessage } from "./types.js";
interface SlackOptions {
    /** Slack bot token (xoxb-...) — used to send messages. */
    botToken: string;
    /** Slack signing secret — used to verify inbound webhooks. */
    signingSecret: string;
    /** HTTP port for Slack Events API webhook. */
    port: number;
    /** Optional allow-list of Slack channel IDs (e.g. ["C0123456"]). */
    allowedChannelIds?: string[];
    /** Optional allow-list of Slack user IDs. */
    allowedUserIds?: string[];
}
/**
 * Slack adapter using the Events API (HTTPS webhook with signing-secret auth).
 *
 * To wire up:
 *   1. Create a Slack app, enable bot token scopes: chat:write, im:history, im:write,
 *      app_mentions:read, channels:history (whatever channels you want).
 *   2. Install to your workspace; get xoxb-... bot token.
 *   3. Enable Event Subscriptions; point Request URL at https://<your-ngrok>/<port>/.
 *   4. Subscribe to bot events: message.im, app_mention.
 *   5. Drop botToken + signingSecret in ~/.lisa/channels.json.
 *
 * Lisa runs the HTTP receiver locally — exposing it publicly is up to you
 * (ngrok, cloudflare tunnel, your own proxy).
 */
export declare class SlackChannel implements ChannelAdapter {
    readonly name = "slack";
    private opts;
    private server?;
    private handler?;
    private seenEventIds;
    constructor(opts: SlackOptions);
    start(handler: (msg: IncomingMessage) => Promise<void>): Promise<void>;
    stop(): Promise<void>;
    send(msg: OutgoingMessage): Promise<void>;
    private onRequest;
    private handleEvent;
    private verify;
}
export {};
//# sourceMappingURL=slack.d.ts.map