/** * OECD SDMX API Client * Based on OECD Data API documentation (May 2024) * Base URL: https://sdmx.oecd.org/public/rest/ */ export declare const OECD_SDMX_BASE = "https://sdmx.oecd.org/public/rest"; export declare const OECD_AGENCY = "OECD"; export interface SDMXDataflow { id: string; version: string; name: string; description?: string; agencyID: string; } export interface SDMXDimension { id: string; name: string; values: Array<{ id: string; name: string; }>; } export interface SDMXDataStructure { dataflowId: string; dimensions: SDMXDimension[]; attributes: Array<{ id: string; name: string; }>; } export interface SDMXObservation { dimensions: Record; value: number | string; attributes?: Record; } export declare class OECDSDMXClient { private baseUrl; private agency; private lastRequestTime; private readonly MIN_REQUEST_INTERVAL_MS; constructor(baseUrl?: string, agency?: string); /** * Rate limiting: Ensure minimum delay between API requests * OECD SDMX API has strict per-IP rate limiting (~20-30 rapid requests trigger blocking) */ private enforceRateLimit; /** * List all dataflows (datasets) * NOTE: Uses curated list of known working dataflows due to OECD SDMX API limitations */ listDataflows(): Promise; /** * Get dataflow structure (metadata) * NOTE: OECD SDMX API does not provide full structure definitions * Returns simplified structure based on known dataflows */ getDataStructure(dataflowId: string, version?: string): Promise; /** * Query data * GET /data/{agencyID},{DSD_ID}@{DF_ID},{version}/{filter} * ?format=jsondata&startPeriod=...&endPeriod=... */ queryData(dataflowId: string, filter?: string, options?: { startPeriod?: string; endPeriod?: string; lastNObservations?: number; version?: string; }): Promise; /** * Search dataflows by keyword */ searchDataflows(query: string): Promise; /** * Generate OECD Data Explorer URL */ getDataExplorerUrl(dataflowId: string, filter?: string): string; private parseDataObservations; private parseSeriesKey; } //# sourceMappingURL=sdmx-client.d.ts.map