import type { Commit } from './git.js';
import type { RequiredOptions, RequiredTheme } from './options.js';
interface Drawable {
    draw: (id: string, theme: RequiredTheme) => string;
}
type Point = Drawable & {
    x: number;
    y: number;
    color: string;
};
type Line = Drawable & {
    from: Point | {
        x: number;
        y: number;
    };
    to: Point;
    color: string;
};
type MergeLine = Line;
type Svg = Drawable & {
    id: string;
    width: number;
    height: number;
    points: Point[];
    lines: Line[];
    mergeLines: MergeLine[];
    errors: Drawable[];
};
declare function newPoint(hash: string, x: number, y: number, color: string): Point;
declare function newLine(from: Point | {
    x: number;
    y: number;
}, to: Point, color: string): Line;
declare function newMergeLine(from: Point, to: Point, color: string): MergeLine;
declare function getSvg(idx: number, commits: Commit[], options: RequiredOptions): Svg;
export { Drawable, getSvg, Line, MergeLine, newLine, newMergeLine, newPoint, Point, Svg, };
