import type { AsyncBuffer, BloomFilter, ByteRange, FileMetaData, PageLocation, PageRanges, ParquetParsers, ParquetQueryFilter, ParquetReadOptions, QueryPlan, SchemaElement } from '../src/types.js'; /** * Plan which byte ranges to read to satisfy a read request. * Metadata must be non-null. * * @param {ParquetReadOptions & { bloomFiltersByGroup?: Record[], schemaElements?: Record, pageRangesByGroup?: (PageRanges | undefined)[], pageLocationsByGroup?: Record[] }} options * @returns {QueryPlan} */ export declare function parquetPlan({ metadata, rowStart, rowEnd, columns, filter, filterStrict, useOffsetIndex, bloomFiltersByGroup, schemaElements, pageRangesByGroup, pageLocationsByGroup }: ParquetReadOptions & { bloomFiltersByGroup?: Record[]; schemaElements?: Record; pageRangesByGroup?: (PageRanges | undefined)[]; pageLocationsByGroup?: Record[]; }): QueryPlan; /** * Fetch bloom filters for $eq / $in columns of row groups not already provably * skippable by statistics alone. Returns an array indexed by row-group ordinal; * each entry maps top-level column name → BloomFilter for any chunk whose * bloom filter we were able to parse. Adds one round-trip when at least one * bloom filter is fetched; otherwise returns synchronously. * * @param {object} options * @param {AsyncBuffer} options.file * @param {FileMetaData} options.metadata * @param {ParquetQueryFilter} options.filter * @param {boolean} [options.filterStrict] * @returns {Promise[]>} */ export declare function prefetchBloomFilters({ file, metadata, filter, filterStrict }: { file: AsyncBuffer; metadata: FileMetaData; filter: ParquetQueryFilter; filterStrict?: boolean; }): Promise[]>; /** * Fetch page indexes (column index + offset index) for filter columns of row * groups that survive row-group-level pruning, and compute candidate row * ranges per group from the per-page min/max statistics. * * Returns pageRangesByGroup indexed by row-group ordinal: sorted disjoint * [start, end) row ranges (relative to the group) that could match the filter. * An empty array means the group provably contains no matching rows; undefined * means no page-level information was available for that group. * Also returns pageLocationsByGroup, mapping row-group ordinals and physical * leaf paths to page locations, so the read path can reuse the parsed offset * indexes without refetching them. * * @param {object} options * @param {AsyncBuffer} options.file * @param {FileMetaData} options.metadata * @param {ParquetQueryFilter} [options.filter] * @param {boolean} [options.filterStrict] * @param {number} [options.rowStart] * @param {number} [options.rowEnd] * @param {string[]} [options.columns] * @param {Record[]} [options.bloomFiltersByGroup] * @param {Record} [options.schemaElements] * @param {ParquetParsers} [options.parsers] * @returns {Promise<{pageRangesByGroup: (PageRanges | undefined)[], pageLocationsByGroup: Record[]}>} */ export declare function prefetchPageIndexes({ file, metadata, filter, filterStrict, rowStart, rowEnd, columns, bloomFiltersByGroup, schemaElements, parsers }: { file: AsyncBuffer; metadata: FileMetaData; filter?: ParquetQueryFilter; filterStrict?: boolean; rowStart?: number; rowEnd?: number; columns?: string[]; bloomFiltersByGroup?: Record[]; schemaElements?: Record; parsers?: ParquetParsers; }): Promise<{ pageRangesByGroup: (PageRanges | undefined)[]; pageLocationsByGroup: Record[]; }>; /** * Prefetch byte ranges from an AsyncBuffer. * * @param {AsyncBuffer} file * @param {{fetches: ByteRange[]}} options * @returns {AsyncBuffer} */ export declare function prefetchAsyncBuffer(file: AsyncBuffer, { fetches }: { fetches: ByteRange[]; }): AsyncBuffer; //# sourceMappingURL=plan.d.ts.map