import { ScheduleSubTabType } from '@zeniai/client-epic-state';
import { ResponsiveSized, WindowSize } from '../../../../../context/windowSizeProvider';
/** Root class for schedule list data rows (sticky column hover matches parent). */
export declare const SCHEDULE_LIST_ROW_ROOT_CLASS = "schedule-list-table-row-root";
export declare const HEADER_HEIGHT: number;
export declare const HEADER_HEIGHT_MOBILE = 45;
export declare const OVERSCAN_COUNT = 1;
/** Skeleton row count while schedule list fetch is in progress with no rows yet. */
export declare const SCHEDULE_LIST_LOADING_PLACEHOLDER_ROWS = 3;
export declare const rowDimensions: {
    rowHeight: ResponsiveSized;
    rowGap: ResponsiveSized;
    nameLogoWidth: ResponsiveSized;
    nameLogoHeight: ResponsiveSized;
    ownerLogoWidth: ResponsiveSized;
    ownerLogoHeight: ResponsiveSized;
    logoToValueGap: ResponsiveSized;
    smallLogoToValueGap: ResponsiveSized;
    webkitLineClamp: ResponsiveSized;
};
export declare const headerDimensions: {
    headerHeight: ResponsiveSized;
};
/**
 * Height subtracted from the page `containerHeight` passed into schedule list tables.
 * Matches chrome above the embedded list (vendor nav / tab strip) so scroll math and
 * `isScheduleListScrollable` use the same viewport height as the rendered list.
 */
export declare const SCHEDULE_LIST_CONTAINER_NAV_OFFSET_PX = 86;
/** Available vertical space for the list after subtracting {@link SCHEDULE_LIST_CONTAINER_NAV_OFFSET_PX}. */
export declare function getScheduleListViewportHeightPx(containerHeight: number): number;
/**
 * Pixel height of the list block: sticky column header + virtualized data rows + optional totals row.
 * Matches `stickyElement` (header uses `headerHeight`, totals row uses `rowHeight`).
 * Totals row is omitted while loading skeleton rows (`showLoading`).
 */
export declare function getScheduleListNaturalTableHeightPx(windowSize: WindowSize, showLoading: boolean, dataRowCount: number, loadingPlaceholderRows: number): number;
/** True when table content is taller than the available list viewport (list scrolls vertically). */
export declare function isScheduleListScrollable(windowSize: WindowSize, containerHeight: number, showLoading: boolean, rowCount: number, showLoadingSkeletonRowCount: number): boolean;
/** Merges persisted per-sub-tab offsets with defaults so `initialScrollOffset` is never `undefined`. */
export declare function getInitialScrollOffsetForScheduleSubTab(scrollYOffset: Partial<Record<ScheduleSubTabType, number>> | undefined, currentSubTab: ScheduleSubTabType): number;
