import type { Source as PMTilesSource } from 'pmtiles';
/** Low-level interface for reading byte ranges natively to fulfil RANGE_REQUEST messages from the web runtime. */
export interface NativeRangeReader {
readRange: (params: {
offset: number;
length: number;
etag?: string;
}) => Promise<{
base64Data: string;
etag?: string;
expires?: string;
cacheControl?: string;
}>;
}
export type RangeRequestMessage = {
type: 'RANGE_REQUEST';
id: string;
offset: number;
length: number;
etag?: string;
};
export type RangeResponseMessage = {
type: 'RANGE_RESPONSE';
id: string;
base64Data: string;
etag?: string;
expires?: string;
cacheControl?: string;
};
/**
* Wraps a PMTiles `Source` object as a `NativeRangeReader` so that
* RANGE_REQUEST messages from the WebView can be fulfilled by calling
* `source.getBytes()` directly on the native side without requiring a
* separate `offlineReader` prop.
*
* @example
* ```ts
* const source = new PMTiles('/path/to/archive.pmtiles');
* const reader = pmtilesSourceToReader(source);
*
* ```
*/
export declare function pmtilesSourceToReader(source: PMTilesSource): NativeRangeReader;
/**
* Fulfils a RANGE_REQUEST bridge message by delegating to the native reader.
*
* @throws {Error} When `offlineReader` is not provided.
*/
export declare function handleRangeRequest(request: RangeRequestMessage, offlineReader?: NativeRangeReader): Promise;
//# sourceMappingURL=range-reader.d.ts.map