import type { ReactNode, RefObject } from 'react';
import type { SharedValue } from 'react-native-reanimated';
export * from './schedule/components/schedule/index';
export * from './schedule/utils';
export * from './schedule/hooks/useTableItem';
export interface IColors {
    background: string;
    card: string;
    title: string;
    text: string;
    text_inverted: string;
    border: string;
    notification: string;
    primary: string;
    primary_active: string;
}
export interface IData {
    id?: string;
    title?: string;
    /**
     * @description ISOString
     */
    date: string;
    duration: number;
    color?: string;
}
export type OnDataPress<T> = (value: T) => void;
export type ScrollOnDrag = (destination: number) => void;
export type OnDragEnd<T> = (value: {
    time: number;
    day: number;
    date: string;
    item: T;
}) => void;
export type OnSlotPress = (value: {
    day: number;
    time: string;
    date?: string;
}) => void;
export interface IRenderTimeColumnProps {
    hours: string[];
}
export type RenderTimeColumn = (props: IRenderTimeColumnProps) => ReactNode;
export interface IRenderGridProps {
    dates?: string[];
    hours: string[];
    onSlotPress?: (value: {
        day: number;
        time: string;
        date?: string;
    }) => void;
}
export type RenderGrid = (props: IRenderGridProps) => ReactNode;
export interface IRenderItemProps<T extends IData> {
    overlappingIds: Array<string | undefined>;
    item: T;
    currentItem?: T;
    dataKey: keyof T;
    titleKey: keyof T;
    scrollY: SharedValue<number>;
    contentHeight: number;
    onPress?: (value: T) => void;
    scrollOnDrag: (destination: number) => void;
    onDragEnd?: OnDragEnd<T>;
}
export type RenderItem = <T extends IData>(props: IRenderItemProps<T>) => ReactNode;
export interface IRenderHeaderProps {
    dates?: string[];
    weekDays: string[];
}
export type RenderHeader = (props: IRenderHeaderProps) => ReactNode;
export interface IScheduleProps<T extends IData> {
    isTodayColumnShown?: boolean;
    /**
     * @description ISOString
     */
    date?: string;
    /**
     * @default id
     */
    dataKey?: keyof T;
    /**
     * @default title
     */
    titleKey?: keyof T;
    colors?: {
        [key in keyof IColors]?: string;
    };
    tableOffset: RefObject<number>;
    /**
     * @description
     * @date - ISOString
     */
    data: T[];
    currentItem?: T;
    onSlotPress?: OnSlotPress;
    onDataPress?: OnDataPress<T>;
    onDragEnd?: OnDragEnd<T>;
    renderItem?: RenderItem;
    renderTimeColumn?: RenderTimeColumn;
    renderGrid?: RenderGrid;
    renderHeader?: RenderHeader;
}
//# sourceMappingURL=index.d.ts.map