import { Timeline as ChakraTimeline } from '@chakra-ui/react';
import { ReactNode } from 'react';
import { IconName } from '../utils/get-icon';
export declare const Timeline: typeof ChakraTimeline;
export type TimelineDoc = {
    items: Item[];
};
export type Item = {
    id?: string;
    timestamp?: string;
    indicator?: Indicator;
    title: TitleSegment[];
    blocks?: Block[];
    expandable?: boolean;
};
export type Indicator = {
    type: "icon";
    icon: IconName;
    color?: string;
} | {
    type: "avatar";
    src: string;
    alt?: string;
} | {
    type: "none";
};
export type TitleSegment = {
    kind: "text";
    text: string;
    bold?: boolean;
    muted?: boolean;
} | {
    kind: "avatar";
    src: string;
    alt?: string;
} | {
    kind: "diff";
    fileName: string;
    filePath?: string;
    additions?: number;
    deletions?: number;
} | {
    kind: "link";
    text: string;
    href?: string;
    filePath?: string;
    bold?: boolean;
    muted?: boolean;
    variant?: "default" | "bubble";
};
export type Block = {
    type: "comment";
    text: string;
    reactions?: {
        clap?: number;
    };
} | {
    type: "code";
    language: string;
    code: string;
    editable?: boolean;
} | {
    type: "diff";
    language?: string;
    original: string;
    modified: string;
    sideBySide?: boolean;
} | {
    type: "input";
    placeholder?: string;
} | {
    type: "text";
    text: string;
} | {
    type: "references";
    references: string[];
} | {
    type: "component";
    render: (ctx: {
        onOpenFile?: (filePath: string) => void;
    }) => ReactNode;
};
export declare function TimelineFromJSON({ data, onOpenFile }: {
    data: TimelineDoc;
    onOpenFile?: (filePath: string) => void;
}): import("react/jsx-runtime").JSX.Element;
