/**
 * @module PushNotificationService
 * @description Service for managing and sending push notifications for task events
 *
 * This module provides functionality for configuring and sending push notifications
 * for task-related events in the A2A protocol server. It allows clients to receive
 * real-time updates about task status changes and other events.
 */
import type { PushNotificationConfig } from '@dexwox-labs/a2a-core';
/**
 * Service for managing and sending push notifications
 *
 * The PushNotificationService handles the configuration and delivery of push
 * notifications for task-related events. It maintains a store of notification
 * configurations for each task and provides methods for sending notifications
 * when events occur.
 *
 * @example
 * ```typescript
 * // Create a push notification service
 * const pushService = new PushNotificationService();
 *
 * // Configure push notifications for a task
 * await pushService.setConfig('task-123', {
 *   enabled: true,
 *   endpoint: 'https://example.com/webhooks/a2a',
 *   authToken: 'secret-token',
 *   events: ['taskCompleted', 'taskFailed']
 * });
 *
 * // Send a notification
 * await pushService.notify('task-123', 'taskCompleted', {
 *   taskId: 'task-123',
 *   status: 'completed',
 *   timestamp: Date.now()
 * });
 * ```
 */
export declare class PushNotificationService {
    /**
     * Notifies subscribers about a task status change
     *
     * This method sends a notification when a task's status changes.
     * It's a convenience wrapper around the notify method.
     *
     * @param taskId - ID of the task whose status changed
     * @param status - New status of the task
     * @returns Promise that resolves when the notification is sent
     *
     * @example
     * ```typescript
     * await pushService.notifyStatusChange('task-123', 'completed');
     * ```
     */
    notifyStatusChange(taskId: string, status: string): Promise<void>;
    /** Store of push notification configurations by task ID */
    private configStore;
    /**
     * Sets the push notification configuration for a task
     *
     * This method stores a push notification configuration for a specific task.
     * The configuration includes settings like the endpoint URL, authentication
     * token, and which events to send notifications for.
     *
     * @param taskId - ID of the task to configure notifications for
     * @param config - Push notification configuration
     * @returns Promise that resolves when the configuration is stored
     *
     * @example
     * ```typescript
     * await pushService.setConfig('task-123', {
     *   enabled: true,
     *   endpoint: 'https://example.com/webhooks/a2a',
     *   authToken: 'secret-token',
     *   events: ['taskCompleted', 'taskFailed']
     * });
     * ```
     */
    setConfig(taskId: string, config: PushNotificationConfig): Promise<void>;
    /**
     * Gets the push notification configuration for a task
     *
     * This method retrieves the push notification configuration for a specific task.
     * If no configuration is found, it throws an error.
     *
     * @param taskId - ID of the task to get the configuration for
     * @returns Promise resolving to the push notification configuration
     * @throws Error with code -32005 if the configuration is not found
     *
     * @example
     * ```typescript
     * try {
     *   const config = await pushService.getConfig('task-123');
     *   console.log('Push notifications enabled:', config.enabled);
     *   console.log('Endpoint:', config.endpoint);
     * } catch (error) {
     *   console.error('Failed to get push config:', error.message);
     * }
     * ```
     */
    getConfig(taskId: string): Promise<PushNotificationConfig>;
    /**
     * Sends a push notification for a task event
     *
     * This method sends a push notification for a specific event related to a task.
     * It checks if notifications are enabled for the task and if the event is
     * included in the list of events to send notifications for.
     *
     * @param taskId - ID of the task the event is related to
     * @param event - Name of the event (e.g., 'taskCompleted', 'taskFailed')
     * @param data - Data to include in the notification
     * @returns Promise that resolves when the notification is sent
     *
     * @example
     * ```typescript
     * await pushService.notify('task-123', 'taskCompleted', {
     *   taskId: 'task-123',
     *   status: 'completed',
     *   timestamp: Date.now(),
     *   result: { data: 'Task output' }
     * });
     * ```
     */
    notify(taskId: string, event: string, data: unknown): Promise<void>;
}
//# sourceMappingURL=push-service.d.ts.map