import type { JSXBase } from '../stencil-public-runtime';
import type { DimensionCols, ColumnRegular, ViewPortScrollEvent, ViewportState, Cell, SelectionStoreState } from "./index";
import type { DimensionStoreCollection, ViewportStoreCollection, DSourceState } from "../store/index";
import type { Observable } from '../utils';
import type { RowDataSources } from '../services/data.provider';
import type { JSX } from '..';
export type SlotType = 'content' | 'header' | 'footer';
export interface ElementScroll {
    noHorizontalScrollTransfer?: boolean;
    changeScroll?(e: ViewPortScrollEvent, silent?: boolean): Promise<ViewPortScrollEvent | undefined>;
    setScroll?(e: ViewPortScrollEvent): Promise<void>;
}
export type ElementsScroll = {
    [key: string]: ElementScroll[];
};
export type HeaderProperties = JSX.RevogrHeader;
export type ViewportProperties = JSX.RevogrViewportScroll & {
    noHorizontalScrollTransfer?: boolean;
} & JSXBase.HTMLAttributes<HTMLRevogrViewportScrollElement>;
export type ViewportColumn = {
    colType: DimensionCols;
    position: Cell;
    fixWidth?: boolean;
    viewports: ViewportStoreCollection;
    dimensions: DimensionStoreCollection;
    rowStores: RowDataSources;
    colStore: Observable<DSourceState<ColumnRegular, DimensionCols>>;
} & Partial<JSX.RevogrViewportScroll> & {
    noHorizontalScrollTransfer?: boolean;
} & Partial<JSX.RevogrHeader>;
export type ViewportData = {
    /** Slot to put data */
    slot: SlotType;
    style?: {
        [key: string]: string;
    };
} & JSX.RevogrOverlaySelection & (Pick<JSXBase.HTMLAttributes<HTMLRevogrOverlaySelectionElement>, 'ref'> & Pick<JSXBase.HTMLAttributes<HTMLRevogrDataElement>, 'ref'>) & JSX.RevogrData;
export type ViewportProps = {
    prop: JSX.RevogrViewportScroll & JSXBase.HTMLAttributes<HTMLRevogrViewportScrollElement>;
    position: Cell;
    type: DimensionCols;
    /** Cols dataset */
    viewportCol: Observable<ViewportState>;
    /** header container props */
    headerProp: HeaderProperties;
    /** parent selector link */
    /** viewport rows */
    dataPorts: ViewportData[];
    columnSelectionStore: Observable<SelectionStoreState>;
};
