import type { DisruptionData } from '../types/index.js';
import { HttpClient } from './http-client.js';
/**
 * Client for interacting with the BODS Disruptions API
 *
 * The Disruptions API provides information about current and planned
 * disruptions to bus services in SIRI-SX format (XML).
 * Data is updated as new information becomes available.
 */
export declare class DisruptionsClient {
    private httpClient;
    constructor(httpClient: HttpClient);
    /**
     * Get all current service disruptions in SIRI-SX format
     *
     * @returns Promise resolving to SIRI-SX XML data containing all disruptions
     *
     * @example
     * ```typescript
     * // Get all current disruptions
     * const disruptions = await client.disruptions.getAll();
     * console.log('Disruptions XML:', disruptions.xmlData);
     *
     * // You would typically parse the XML to extract specific disruption details
     * const parser = new DOMParser();
     * const doc = parser.parseFromString(disruptions.xmlData, 'text/xml');
     * ```
     */
    getAll(): Promise<DisruptionData>;
    /**
     * Get current service disruptions (alias for getAll)
     *
     * @returns Promise resolving to SIRI-SX XML data containing current disruptions
     *
     * @example
     * ```typescript
     * const currentDisruptions = await client.disruptions.getCurrent();
     * ```
     */
    getCurrent(): Promise<DisruptionData>;
    /**
     * Helper method to parse SIRI-SX XML and extract basic disruption information
     * Note: This is a basic parser. For production use, consider a more robust XML parsing solution.
     * Requires a DOM environment (browser) or a polyfill like jsdom in Node.js.
     *
     * @param xmlData - Raw SIRI-SX XML data
     * @returns Array of parsed disruption objects
     *
     * @example
     * ```typescript
     * const disruptions = await client.disruptions.getAll();
     * const parsed = client.disruptions.parseDisruptions(disruptions.xmlData);
     *
     * parsed.forEach(disruption => {
     *   console.log(`${disruption.summary}: ${disruption.description}`);
     * });
     * ```
     */
    parseDisruptions(xmlData: string): Array<{
        situationNumber?: string;
        participantRef?: string;
        summary?: string;
        description?: string;
        severity?: string;
        startTime?: string;
        endTime?: string;
        planned?: boolean;
    }>;
    /**
     * Get and parse current disruptions in one call
     *
     * @returns Promise resolving to array of parsed disruption objects
     *
     * @example
     * ```typescript
     * const disruptions = await client.disruptions.getCurrentParsed();
     *
     * disruptions.forEach(disruption => {
     *   if (disruption.planned) {
     *     console.log(`Planned disruption: ${disruption.summary}`);
     *   } else {
     *     console.log(`Unplanned disruption: ${disruption.summary}`);
     *   }
     * });
     * ```
     */
    getCurrentParsed(): Promise<Array<{
        situationNumber?: string;
        participantRef?: string;
        summary?: string;
        description?: string;
        severity?: string;
        startTime?: string;
        endTime?: string;
        planned?: boolean;
    }>>;
    /**
     * Filter parsed disruptions by criteria
     *
     * @param disruptions - Array of parsed disruptions
     * @param filters - Filter criteria
     * @returns Filtered array of disruptions
     *
     * @example
     * ```typescript
     * const allDisruptions = await client.disruptions.getCurrentParsed();
     *
     * // Get only unplanned disruptions
     * const unplanned = client.disruptions.filterDisruptions(allDisruptions, {
     *   planned: false
     * });
     *
     * // Get disruptions from specific participant
     * const tfgmDisruptions = client.disruptions.filterDisruptions(allDisruptions, {
     *   participantRef: 'TfGM'
     * });
     * ```
     */
    filterDisruptions(disruptions: Array<{
        situationNumber?: string;
        participantRef?: string;
        summary?: string;
        description?: string;
        severity?: string;
        startTime?: string;
        endTime?: string;
        planned?: boolean;
    }>, filters: {
        planned?: boolean;
        participantRef?: string;
        severity?: string;
    }): Array<{
        situationNumber?: string;
        participantRef?: string;
        summary?: string;
        description?: string;
        severity?: string;
        startTime?: string;
        endTime?: string;
        planned?: boolean;
    }>;
}
//# sourceMappingURL=disruptions-client.d.ts.map