import { z } from "zod";
export declare const NotifyConfigSchema: z.ZodObject<{
    telegram: z.ZodOptional<z.ZodObject<{
        botToken: z.ZodString;
        chatId: z.ZodString;
    }, z.core.$strip>>;
    discord: z.ZodOptional<z.ZodObject<{
        webhookUrl: z.ZodString;
    }, z.core.$strip>>;
    slack: z.ZodOptional<z.ZodObject<{
        webhookUrl: z.ZodString;
    }, z.core.$strip>>;
}, z.core.$strip>;
export type NotifyConfig = z.infer<typeof NotifyConfigSchema>;
export interface ChannelResult {
    channel: "telegram" | "discord" | "slack";
    success: boolean;
    error?: string;
}
export declare function loadNotifyConfig(): NotifyConfig;
export declare function sendTelegram(botToken: string, chatId: string, text: string): Promise<{
    success: boolean;
    error?: string;
}>;
export declare function sendDiscord(webhookUrl: string, content: string): Promise<{
    success: boolean;
    error?: string;
}>;
export declare function sendSlack(webhookUrl: string, text: string): Promise<{
    success: boolean;
    error?: string;
}>;
export declare function dispatchNotification(message: string, config?: NotifyConfig): Promise<ChannelResult[]>;
export declare function loadCooldownState(): Record<string, string>;
export declare function saveCooldownState(state: Record<string, string>): void;
export declare function dispatchWithCooldown(serverName: string, findingType: string, message: string): Promise<{
    skipped: boolean;
    results: ChannelResult[];
}>;
export interface AddChannelOptions {
    force?: boolean;
    botToken?: string;
    chatId?: string;
    webhookUrl?: string;
}
export declare function addChannel(channelName: string, options: AddChannelOptions): Promise<void>;
export declare function removeChannel(channelName: string): void;
export declare function testChannel(channelName: string): Promise<void>;
//# sourceMappingURL=notify.d.ts.map