/** * @typedef {Object} GeoParquetExtractorOptions * @property {import('./duckdb_adapter.js').DuckDBClient} duckdb - Pre-initialized DuckDB client * @property {import('./source_resolver.js').SourceResolver} [sourceResolver] - Optional source resolver * @property {import('./parquet_bbox_reader.js').ParquetBboxReader} [bboxReader] - Optional parquet bbox reader * @property {string} [gpkgWorkerUrl] - URL for GeoPackage worker (or Worker instance) * @property {Worker} [gpkgWorker] - Pre-constructed GeoPackage Worker instance * @property {number} [memoryLimitMB] - DuckDB memory limit in MB */ /** * @typedef {Object} ExtractOptions * @property {string[]} [urls] - Direct parquet URLs (skip source resolution) * @property {string} [sourceUrl] - Source URL for source resolution * @property {number[]} bbox - [west, south, east, north] bounding box * @property {string} format - Output format (csv, geojson, geojsonseq, geoparquet, geoparquet2, geopackage, shapefile, kml, dxf) * @property {string} [baseName] - Base filename for download (without extension) * @property {boolean} [flattenStructs] - Flatten STRUCT columns into separate columns * @property {(pct: number) => void} [onProgress] - Progress callback (0–100) * @property {(msg: string) => void} [onStatus] - Status message callback */ export class GeoParquetExtractor { static getDownloadBaseName(sourceName: any, bbox: any): string; static cleanupOrphanedFiles(): Promise; /** * @param {GeoParquetExtractorOptions} options */ constructor(options: GeoParquetExtractorOptions); _duckdb: import("./duckdb_adapter.js").DuckDBClient; _sourceResolver: SourceResolver; _bboxReader: ParquetBboxReader; _gpkgWorkerUrl: string; _gpkgWorker: Worker; _memoryLimitMB: number; _sizeGetter: SizeGetter; _formatHandler: import("./index.js").FormatHandler; _cancelled: boolean; _rejectCancel: (reason?: any) => void; _cancelPromise: Promise; _abortController: AbortController; _initialized: boolean; _sessionId: string; _lockName: string; _lockReady: Promise; init(onStatus: any): Promise; /** * Resolve parquet files from source resolver for a given source + bbox. * @param {string} sourceUrl * @param {number[]} bbox - [west, south, east, north] * @param {(msg: string) => void} [onStatus] * @returns {Promise<{ id: string, url: string, bbox?: number[] | null }[]>} */ resolveFiles(sourceUrl: string, bbox: number[], onStatus?: (msg: string) => void): Promise<{ id: string; url: string; bbox?: number[] | null; }[]>; /** * Estimate download size based on file sizes and bbox overlap. * @param {{ id: string, url: string, bbox?: number[] | null }[]} files * @param {number[]} bbox - [west, south, east, north] * @returns {Promise} */ estimateSize(files: { id: string; url: string; bbox?: number[] | null; }[], bbox: number[]): Promise; /** * Prepare for download: resolve URLs, estimate size, create format handler. * Returns the format handler so the caller can inspect warnings/estimates. * @param {ExtractOptions} options * @returns {Promise} */ prepare(options: ExtractOptions): Promise; download(formatHandler: any, { baseName, onProgress, onStatus }: { baseName: any; onProgress: any; onStatus: any; }): Promise; extract(options: any): Promise; cancel(): void; _throwIfCancelled(): void; } export type GeoParquetExtractorOptions = { /** * - Pre-initialized DuckDB client */ duckdb: import("./duckdb_adapter.js").DuckDBClient; /** * - Optional source resolver */ sourceResolver?: import("./source_resolver.js").SourceResolver; /** * - Optional parquet bbox reader */ bboxReader?: import("./parquet_bbox_reader.js").ParquetBboxReader; /** * - URL for GeoPackage worker (or Worker instance) */ gpkgWorkerUrl?: string; /** * - Pre-constructed GeoPackage Worker instance */ gpkgWorker?: Worker; /** * - DuckDB memory limit in MB */ memoryLimitMB?: number; }; export type ExtractOptions = { /** * - Direct parquet URLs (skip source resolution) */ urls?: string[]; /** * - Source URL for source resolution */ sourceUrl?: string; /** * - [west, south, east, north] bounding box */ bbox: number[]; /** * - Output format (csv, geojson, geojsonseq, geoparquet, geoparquet2, geopackage, shapefile, kml, dxf) */ format: string; /** * - Base filename for download (without extension) */ baseName?: string; /** * - Flatten STRUCT columns into separate columns */ flattenStructs?: boolean; /** * - Progress callback (0–100) */ onProgress?: (pct: number) => void; /** * - Status message callback */ onStatus?: (msg: string) => void; }; import { SourceResolver } from './source_resolver.js'; import { ParquetBboxReader } from './parquet_bbox_reader.js'; import { SizeGetter } from './size_getter.js';