import { box, xy } from '@synnaxlabs/x';
import { z } from 'zod';
import { color } from '../../color/core';
import { TickFactoryContext } from './ticks';
export interface RenderResult {
    size: number;
}
export declare const axisStateZ: z.ZodObject<z.objectUtil.extendShape<{
    tickSpacing: z.ZodDefault<z.ZodNumber>;
    type: z.ZodDefault<z.ZodOptional<z.ZodEnum<["linear", "time"]>>>;
}, {
    color: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodType<color.Color, z.ZodTypeDef, color.Color>, z.ZodObject<{
        rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
    }, "strip", z.ZodTypeAny, {
        rgba255: [number, number, number, number];
    }, {
        rgba255: [number, number, number, number];
    }>]>, color.Color, string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number]>;
    type: z.ZodDefault<z.ZodOptional<z.ZodEnum<["linear", "time"]>>>;
    font: z.ZodString;
    showGrid: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    location: z.ZodEnum<["top", "right", "bottom", "left"]>;
    gridColor: z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodType<color.Color, z.ZodTypeDef, color.Color>, z.ZodObject<{
        rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
    }, "strip", z.ZodTypeAny, {
        rgba255: [number, number, number, number];
    }, {
        rgba255: [number, number, number, number];
    }>]>, color.Color, string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number]>;
}>, "strip", z.ZodTypeAny, {
    color: color.Color;
    font: string;
    type: "time" | "linear";
    location: "bottom" | "left" | "right" | "top";
    tickSpacing: number;
    showGrid: boolean;
    gridColor: color.Color;
}, {
    color: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number];
    font: string;
    location: "bottom" | "left" | "right" | "top";
    gridColor: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number];
    type?: "time" | "linear" | undefined;
    tickSpacing?: number | undefined;
    showGrid?: boolean | undefined;
}>;
export type AxisState = z.input<typeof axisStateZ>;
export type ParsedAxisState = z.output<typeof axisStateZ>;
export interface AxisProps extends Omit<TickFactoryContext, "size"> {
    plot: box.Box;
    position: xy.XY;
    size: number;
}
export interface Axis {
    setState: (state: AxisState) => void;
    render: (props: AxisProps) => RenderResult;
}
//# sourceMappingURL=axis.d.ts.map