import { IArchbaseDataSourceBase } from '@archbase/data';
export type ArchbaseResourceTimelineViewMode = 'day' | 'week' | 'month' | 'quarter';
export interface ArchbaseResourceTimelineProps<TResource, TEvent, ID = any> {
    /** DataSource for resources (groups/rows). */
    resourceDataSource?: IArchbaseDataSourceBase<TResource>;
    /** Field that holds the resource id. */
    resourceIdField?: string;
    /** Field that holds the resource display label. */
    resourceLabelField?: string;
    /** DataSource for events (items). */
    eventDataSource?: IArchbaseDataSourceBase<TEvent>;
    /** Field that holds the event start date. */
    eventStartField?: string;
    /** Field that holds the event end date. */
    eventEndField?: string;
    /** Field that links the event to a resource. */
    eventResourceIdField?: string;
    /** Field that holds the event display label. */
    eventLabelField?: string;
    /** Optional field that holds a CSS color for the event. */
    eventColorField?: string;
    /** Standalone resource array (used when no resourceDataSource). */
    resources?: TResource[];
    /** Standalone event array (used when no eventDataSource). */
    events?: TEvent[];
    /** Visible range start. */
    startDate?: Date;
    /** Visible range end. */
    endDate?: Date;
    /** Zoom / time-axis granularity preset. */
    viewMode?: ArchbaseResourceTimelineViewMode;
    /** Allow drag & resize of events. */
    editable?: boolean;
    /** Fired when the user clicks an event. */
    onEventClick?: (event: TEvent) => void;
    /** Fired after an event is moved (drag). */
    onEventMove?: (event: TEvent, newStart: Date, newEnd: Date, newResourceId: any) => void;
    /** Fired after an event is resized. */
    onEventResize?: (event: TEvent, newStart: Date, newEnd: Date) => void;
    /** Fired when the user clicks on an empty slot. */
    onSlotClick?: (resourceId: any, date: Date) => void;
    /** Fired when a new event range is selected via drag on an empty area. */
    onCreateEvent?: (resourceId: any, start: Date, end: Date) => void;
    /** Input.Wrapper label. */
    label?: string;
    /** Input.Wrapper description. */
    description?: string;
    /** Height of the timeline container. */
    height?: string | number;
    /** Custom inline style for the outer wrapper. */
    style?: React.CSSProperties;
    /** Custom CSS class for the outer wrapper. */
    className?: string;
    /** Width of the outer wrapper. */
    width?: string | number;
}
declare function ArchbaseResourceTimeline<TResource, TEvent, ID = any>({ resourceDataSource, resourceIdField, resourceLabelField, eventDataSource, eventStartField, eventEndField, eventResourceIdField, eventLabelField, eventColorField, resources: resourcesProp, events: eventsProp, startDate, endDate, viewMode, editable, onEventClick, onEventMove, onEventResize, onSlotClick, onCreateEvent, label, description, height, style, className, width, }: ArchbaseResourceTimelineProps<TResource, TEvent, ID>): import("react/jsx-runtime").JSX.Element;
declare namespace ArchbaseResourceTimeline {
    var displayName: string;
}
export { ArchbaseResourceTimeline };
