import { type scale } from "@synnaxlabs/x";
import { z } from "zod";
export interface Tick {
    position: number;
    label: string;
}
export interface TickFactory {
    generate: (ctx: TickFactoryContext) => Tick[];
}
export declare const tickType: z.ZodEnum<["linear", "time"]>;
export type TickType = z.infer<typeof tickType>;
export declare const tickFactoryProps: z.ZodObject<{
    tickSpacing: z.ZodDefault<z.ZodNumber>;
    type: z.ZodDefault<z.ZodOptional<z.ZodEnum<["linear", "time"]>>>;
}, "strip", z.ZodTypeAny, {
    type: "time" | "linear";
    tickSpacing: number;
}, {
    tickSpacing?: number | undefined;
    type?: "time" | "linear" | undefined;
}>;
export type TickFactoryProps = z.input<typeof tickFactoryProps>;
export interface TickFactoryContext {
    /**
     * Scale takes a value in decimal space and returns the corresponding data value.
     */
    decimalToDataScale: scale.Scale;
    /**
     * Size is the length of the axis in pixels.
     */
    size: number;
}
export declare const newTickFactory: (props: TickFactoryProps) => TickFactory;
