export interface NtfyPublishOptions {
    readonly title?: string;
    readonly priority?: 1 | 2 | 3 | 4 | 5;
    readonly tags?: readonly string[];
    readonly click?: string;
    readonly attach?: string;
    readonly actions?: readonly string[];
}
export interface NtfyMessage {
    readonly id?: string;
    readonly time?: number;
    readonly event: 'open' | 'keepalive' | 'message' | 'message_delete' | 'message_clear' | 'poll_request' | string;
    readonly topic?: string;
    readonly message?: string;
    readonly title?: string;
    readonly priority?: number;
    readonly tags?: readonly string[];
    readonly click?: string;
    readonly actions?: readonly unknown[];
    readonly [key: string]: unknown;
}
export interface NtfySubscribeOptions {
    readonly since?: string;
    readonly scheduled?: boolean;
    readonly poll?: boolean;
    readonly filters?: Record<string, string | number | boolean | readonly string[]>;
    readonly signal?: AbortSignal;
}
export interface NtfyWebSocketOptions extends NtfySubscribeOptions {
    readonly WebSocketImpl?: typeof WebSocket;
}
export declare class NtfyIntegration {
    private readonly baseUrl;
    private readonly token?;
    constructor(baseUrl?: string, token?: string | undefined);
    publish(topic: string, message: string, options?: NtfyPublishOptions): Promise<void>;
    buildSubscribeUrl(topic: string, mode?: 'json' | 'sse' | 'raw' | 'ws', options?: NtfySubscribeOptions): string;
    poll(topic: string, options?: Omit<NtfySubscribeOptions, 'poll'>): Promise<NtfyMessage[]>;
    subscribeJsonStream(topic: string, onMessage: (message: NtfyMessage) => void | Promise<void>, options?: NtfySubscribeOptions): Promise<void>;
    connectWebSocket(topic: string, onMessage: (message: NtfyMessage) => void | Promise<void>, options?: NtfyWebSocketOptions): WebSocket;
    private buildAuthHeaders;
}
//# sourceMappingURL=ntfy.d.ts.map