/** Shimmer bar height (px) used across list table skeletons */
export declare const LIST_TABLE_LOADER_HEIGHT_PX = 14;
/** Alternating bar widths: wide first cell, uniform rest */
export declare function getAlternatingRowWidths(columnCount: number): {
    widthsA: number[];
    widthsB: number[];
};
/** Bar widths for one skeleton row (matches `ListTableSkeleton` row parity). */
export declare function getListTableRowBarWidths(columnCount: number, rowIndex: number): number[];
export type ListTableSkeletonRowVariant = "desktop" | "small";
export type ListTableSkeletonRowProps = {
    colPcts: readonly number[];
    rowIndex: number;
    variant: ListTableSkeletonRowVariant;
};
/**
 * Single row primitive used by `ListTableSkeleton` and by any caller that
 * needs to inject a placeholder row into an already-populated table (e.g.
 * an AI-CFO-triggered bulk create that has not yet resolved). Row markup,
 * bar widths, and parity logic are owned here so the full-table skeleton
 * and ad-hoc injected rows can never visually drift apart.
 */
export declare function ListTableSkeletonRow({ colPcts, rowIndex, variant, }: ListTableSkeletonRowProps): JSX.Element;
export type ListTableSkeletonProps = {
    colPcts: readonly number[];
    rowCount?: number;
    /** When provided, `small` window size uses these column percentages */
    smallColPcts?: readonly number[];
};
/**
 * Generic table-style skeleton: header row + N data rows.
 * First column is left-aligned, rest are right-aligned.
 * Alternates loader widths between rows for visual variety.
 */
export declare function ListTableSkeleton({ colPcts, rowCount, smallColPcts, }: ListTableSkeletonProps): JSX.Element;
