/**
 * Discord Outreach Publisher
 *
 * Publishes outreach messages drafted by the contributor pipeline to Discord
 * via the Discord REST API directly (no SDK — one POST endpoint per message).
 * The bot token is sourced from the existing config loader — typically
 * `process.env.DISCORD_BOT_TOKEN` — and is NEVER logged at any level.
 *
 * Posting itself is gated upstream through `ISupervisorAgent.evaluate(...)`.
 */
import { type IOutreachPublisher, type OutreachResult } from '../../../application/ports/output/services/outreach-publisher.interface.js';
/**
 * Resolves the Discord bot token. May return `undefined` when the token is
 * not configured — the publisher will surface a clean error in that case.
 */
export type DiscordTokenResolver = () => string | undefined;
/**
 * Subset of the global `fetch` shape this adapter touches. Defining our own
 * type so tests can stub without pulling Node's full lib.
 */
export type DiscordHttpFetch = (url: string, init: {
    method: string;
    headers: Record<string, string>;
    body: string;
}) => Promise<{
    ok: boolean;
    status: number;
    text(): Promise<string>;
    json(): Promise<unknown>;
}>;
export declare class DiscordOutreachPublisher implements IOutreachPublisher {
    private readonly tokenResolver;
    private readonly httpFetch;
    constructor(tokenResolver?: DiscordTokenResolver, httpFetch?: DiscordHttpFetch);
    publishToDiscord(channelId: string, body: string): Promise<OutreachResult>;
}
//# sourceMappingURL=discord-outreach-publisher.service.d.ts.map