//#region src/model/layout.d.ts
type FileTreeLayoutRow = {
  ancestorPaths: readonly string[];
  isExpanded: boolean;
  kind: 'directory' | 'file';
  path: string;
};
type FileTreeLayoutMetrics = {
  itemHeight: number;
  overscan: number;
  scrollTop: number;
  viewportHeight: number;
  stickyRows?: readonly FileTreeLayoutStickyRow[];
  totalRowCount?: number;
};
type FileTreeLayoutRange = {
  endIndex: number;
  startIndex: number;
};
declare const EMPTY_FILE_TREE_LAYOUT_RANGE: FileTreeLayoutRange;
type FileTreeLayoutStickyRow<Row extends FileTreeLayoutRow = FileTreeLayoutRow> = {
  row: Row;
  top: number;
};
type FileTreeLayoutSnapshot<Row extends FileTreeLayoutRow = FileTreeLayoutRow> = {
  occlusion: {
    firstOccludedIndex: number;
    lastOccludedIndex: number;
    occludedCount: number;
  };
  physical: {
    itemHeight: number;
    maxScrollTop: number;
    overscan: number;
    scrollTop: number;
    totalHeight: number;
    totalRowCount: number;
    viewportHeight: number;
  };
  projected: {
    contentHeight: number;
    paneHeight: number;
    paneTop: number;
  };
  sticky: {
    height: number;
    rows: readonly FileTreeLayoutStickyRow<Row>[];
  };
  visible: FileTreeLayoutRange;
  window: {
    endIndex: number;
    height: number;
    offsetTop: number;
    startIndex: number;
  };
};
declare function computeStickyRows<Row extends FileTreeLayoutRow>(rows: readonly Row[], scrollTop: number, itemHeight: number): readonly FileTreeLayoutStickyRow<Row>[];
declare function computeFileTreeLayout<Row extends FileTreeLayoutRow>(rows: readonly Row[], metrics: FileTreeLayoutMetrics): FileTreeLayoutSnapshot<Row>;
//#endregion
export { EMPTY_FILE_TREE_LAYOUT_RANGE, FileTreeLayoutMetrics, FileTreeLayoutRange, FileTreeLayoutRow, FileTreeLayoutSnapshot, FileTreeLayoutStickyRow, computeFileTreeLayout, computeStickyRows };
//# sourceMappingURL=layout.d.ts.map