import { ReactNode } from 'react';

declare interface Breakpoints {
    mobile: number;
    laptop: number;
}

declare interface Category {
    color?: string;
    name: string;
}

declare type ColorValueHex = `#${string}`;

declare interface Devices {
    mobileMin: string;
    laptopMax: string;
    laptopMin: string;
}

declare interface Goal {
    category?: Category;
    description: string;
    finishDate?: Date;
    images: string[];
    name: string;
    shortDescription?: string;
    startDate?: Date;
    status: string;
    tags: Tag[];
    updateDate: Date;
}

export declare interface IReactRoadmapMilestones {
    milestones: Milestone[];
    name: string;
}

export declare type ITheme = Partial<Theme>;

declare interface Milestone {
    finishDate?: Date;
    goals?: Goal[];
    name: string;
    startDate?: Date;
    status: string;
}

declare interface Palette {
    background: {
        default: ColorValueHex;
    };
    category: {
        background: {
            default: ColorValueHex;
        };
        border: {
            default: ColorValueHex;
        };
        expandIcon: {
            default: ColorValueHex;
        };
    };
    milestone: {
        background: {
            default: ColorValueHex;
        };
        expandIcon: {
            default: ColorValueHex;
        };
        finishDate: {
            font: {
                default: ColorValueHex;
            };
        };
        status: {
            border: {
                default: ColorValueHex;
            };
            font: {
                default: ColorValueHex;
            };
        };
    };
    oldMilestones: {
        background: {
            default: ColorValueHex;
        };
        border: {
            default: ColorValueHex;
        };
    };
    scrollBar: {
        default: ColorValueHex;
        hover: ColorValueHex;
    };
}

declare interface PreviousButton {
    hidePrevious: string;
    showPrevious: string;
}

export declare function ReactRoadmapMilestones({ className, roadmapMilestonesData, theme: partialTheme, translation, }: RoadmapMilestonesProps): ReactNode;

declare interface RoadmapMilestonesProps {
    readonly className?: string;
    readonly roadmapMilestonesData?: IReactRoadmapMilestones;
    readonly theme?: ITheme;
    readonly translation?: Translation;
}

declare interface Tag {
    color?: string;
    name: string;
}

declare interface Theme {
    breakpoints: Breakpoints;
    devices: Devices;
    palette: Palette;
}

declare interface Translation {
    previousButton: PreviousButton;
}

export { }
