import type { RuntimeEventBus } from '../runtime/events/index.js';
/**
 * WebhookNotifier — sends HTTP POST notifications to configured webhook URLs.
 *
 * Defaults to ntfy.sh-compatible format: plain text body, no auth required.
 * Works with any service that accepts a plain POST with a text/plain body,
 * including ntfy.sh, generic webhooks, and custom endpoints.
 *
 * Usage:
 *   const notifier = new WebhookNotifier(['https://ntfy.sh/my-topic']);
 *   notifier.attachToRuntimeBus(runtimeBus);
 */
export declare class WebhookNotifier {
    private urls;
    private unsubscribers;
    constructor(urls?: string[]);
    /**
     * Create a WebhookNotifier from a list of URLs (e.g. from persisted config).
     */
    static fromConfig(urls: string[]): WebhookNotifier;
    /** Add a webhook URL. Ignores duplicates. Throws on invalid URL. */
    addUrl(url: string): void;
    /** Remove a webhook URL. */
    removeUrl(url: string): boolean;
    /** Replace all webhook URLs. */
    setUrls(urls: string[]): void;
    /** Get a copy of all configured webhook URLs. */
    getUrls(): string[];
    /** Returns true if at least one URL is configured. */
    isConfigured(): boolean;
    /**
     * Send a plain-text notification to all configured webhooks.
     *
     * Uses ntfy.sh format by default: POST with text/plain body.
     * All URLs are fired in parallel; individual failures are logged but do not
     * throw — remaining URLs still receive the notification.
     */
    send(text: string): Promise<void>;
    /**
     * Send a test notification to all configured webhooks.
     */
    test(): Promise<{
        url: string;
        ok: boolean;
        error?: string;
    }[]>;
    attachToRuntimeBus(bus: RuntimeEventBus): void;
    /** Remove all webhook subscriptions. */
    detach(): void;
    private postOne;
}
//# sourceMappingURL=webhooks.d.ts.map