///
import { ScaleBand, ScaleLinear } from 'd3-scale';
import { Domain, LaneDisplayMode, TimelineEvent, TimelineEventCluster, TimelineLane } from '../model';
import { ZoomLevels } from '../shared/ZoomScale';
export type TimelineLayerType = 'grid' | 'axes' | 'interaction' | 'marks';
export interface CustomLayerProps> {
width: number;
height: number;
events: ReadonlyArray;
eventClusters: ReadonlyArray>;
lanes: ReadonlyArray>;
laneDisplayMode?: LaneDisplayMode;
xScale: ScaleLinear;
yScale: ScaleBand;
domain: Domain;
maxDomain: Domain;
maxDomainStart: number;
maxDomainEnd: number;
currentZoomScale: ZoomLevels;
nextSmallerZoomScale: ZoomLevels;
isAnimationInProgress: boolean;
}
export type CustomLayer = >(props: CustomLayerProps) => React.ReactNode;
export type TimelineLayer = TimelineLayerType | CustomLayer;