import { box, location, scale } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../../aether/aether';
import { color } from '../../../color/core';
import { Draw2D } from '../../draw2d';
import { render } from '../../render';
export declare const ruleStateZ: z.ZodObject<{
    position: z.ZodOptional<z.ZodNumber>;
    pixelPosition: z.ZodOptional<z.ZodNumber>;
    dragging: z.ZodBoolean;
    lineWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    lineDash: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    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]>;
}, "strip", z.ZodTypeAny, {
    color: color.Color;
    lineWidth: number;
    lineDash: number;
    dragging: boolean;
    position?: number | undefined;
    pixelPosition?: number | undefined;
}, {
    color: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number];
    dragging: boolean;
    position?: number | undefined;
    lineWidth?: number | undefined;
    lineDash?: number | undefined;
    pixelPosition?: number | undefined;
}>;
export interface RuleProps {
    location: location.Location;
    decimalToDataScale: scale.Scale;
    plot: box.Box;
    container: box.Box;
}
interface InternalState {
    renderCtx: render.Context;
    draw: Draw2D;
}
export declare class Rule extends aether.Leaf<typeof ruleStateZ, InternalState> {
    static readonly TYPE = "Rule";
    schema: z.ZodObject<{
        position: z.ZodOptional<z.ZodNumber>;
        pixelPosition: z.ZodOptional<z.ZodNumber>;
        dragging: z.ZodBoolean;
        lineWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        lineDash: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        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]>;
    }, "strip", z.ZodTypeAny, {
        color: color.Color;
        lineWidth: number;
        lineDash: number;
        dragging: boolean;
        position?: number | undefined;
        pixelPosition?: number | undefined;
    }, {
        color: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number];
        dragging: boolean;
        position?: number | undefined;
        lineWidth?: number | undefined;
        lineDash?: number | undefined;
        pixelPosition?: number | undefined;
    }>;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    updatePositions({ decimalToDataScale: scale, plot, container }: RuleProps): number;
    render(props: RuleProps): Promise<void>;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
//# sourceMappingURL=aether.d.ts.map