export declare const GOODVIBES_NTFY_ORIGIN = "goodvibes-sdk";
export declare const GOODVIBES_NTFY_ORIGIN_HEADER = "X-Goodvibes-Origin";
export declare const GOODVIBES_NTFY_OUTBOUND_TAG = "goodvibes-sdk-outbound";
export declare const GOODVIBES_NTFY_CHAT_TOPIC = "goodvibes-chat";
export declare const GOODVIBES_NTFY_AGENT_TOPIC = "goodvibes-agent";
export declare const GOODVIBES_NTFY_REMOTE_TOPIC = "goodvibes-ntfy";
export declare const GOODVIBES_NTFY_DEFAULT_TOPICS: readonly ["goodvibes-chat", "goodvibes-agent", "goodvibes-ntfy"];
export interface GoodVibesNtfyTopicConfig {
    readonly chatTopic?: string | null | undefined;
    readonly agentTopic?: string | null | undefined;
    readonly remoteTopic?: string | null | undefined;
}
export interface GoodVibesNtfyTopics {
    readonly chatTopic: string;
    readonly agentTopic: string;
    readonly remoteTopic: string;
    readonly all: readonly string[];
}
export declare function resolveGoodVibesNtfyTopics(config?: GoodVibesNtfyTopicConfig): GoodVibesNtfyTopics;
export declare function createNtfyLiveSubscriptionSince(nowMs?: number): string;
export interface NtfyPublishOptions {
    readonly title?: string | undefined;
    readonly priority?: 1 | 2 | 3 | 4 | 5 | undefined;
    readonly tags?: readonly string[] | undefined;
    readonly click?: string | undefined;
    readonly attach?: string | undefined;
    readonly actions?: readonly string[] | undefined;
    readonly markGoodVibesOrigin?: boolean | undefined;
}
export interface NtfyMessage {
    readonly id?: string | undefined;
    readonly time?: number | undefined;
    readonly event: 'open' | 'keepalive' | 'message' | 'message_delete' | 'message_clear' | 'poll_request' | string;
    readonly topic?: string | undefined;
    readonly message?: string | undefined;
    readonly title?: string | undefined;
    readonly priority?: number | undefined;
    readonly tags?: readonly string[] | undefined;
    readonly click?: string | undefined;
    readonly actions?: readonly unknown[] | undefined;
    readonly [key: string]: unknown;
}
export interface NtfySubscribeOptions {
    readonly since?: string | undefined;
    readonly scheduled?: boolean | undefined;
    readonly poll?: boolean | undefined;
    readonly filters?: Record<string, string | number | boolean | readonly string[]> | undefined;
    readonly signal?: AbortSignal | undefined;
    readonly reconnect?: boolean | undefined;
    readonly reconnectDelayMs?: number | undefined;
}
export interface NtfyWebSocketOptions extends NtfySubscribeOptions {
    readonly WebSocketImpl?: typeof WebSocket | undefined;
}
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;
}
export declare function isGoodVibesNtfyDeliveryEcho(message: Record<string, unknown>): boolean;
//# sourceMappingURL=ntfy.d.ts.map