import type { SheetView } from '../excelHelpers';
export type CellValue = string | number | boolean | null;
export type SheetRows = Map<number, Map<number, CellValue>>;
export declare function parseSharedStrings(xml: string): string[];
export interface WorkbookIndex {
    /** Map of user-facing sheet name → zip entry path (e.g. "xl/worksheets/sheet1.xml") */
    sheetPath: Map<string, string>;
}
export declare function parseWorkbookIndex(workbookXml: string, relsXml: string): WorkbookIndex;
/**
 * Parse an xlsx worksheet XML into a sparse {row → {col → value}} map.
 * Only rows up to MAX_DATA_ROWS + a small header buffer are retained.
 */
export declare function parseWorksheet(xml: string, sharedStrings: string[], maxRow?: number): SheetRows;
export declare function sheetViewFromRows(rows: SheetRows): SheetView;
export type ParseFileStreamInput = Uint8Array | ArrayBuffer | Blob | ReadableStream<Uint8Array>;
export declare function toUint8Array(input: ParseFileStreamInput): Promise<Uint8Array>;
/**
 * Two-pass loader:
 *  1. Decompress workbook.xml + rels to discover which worksheet entries we actually need.
 *  2. Decompress only the needed worksheets (plus sharedStrings.xml).
 *
 * Returns a function `takeWorksheet(path)` that returns and *removes* a sheet's
 * decompressed XML — the caller is expected to parse and drop it before
 * requesting the next, so peak memory stays bounded by a single sheet's XML.
 */
export declare function loadWorkbookEntries(data: Uint8Array, neededSheetPaths: (workbookXml: string, relsXml: string) => Set<string>): {
    workbookXml: string;
    relsXml: string;
    sharedStrings: string[];
    takeWorksheet(path: string): string | undefined;
};
//# sourceMappingURL=xlsxStream.d.ts.map