import { box, location, scale } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../../aether/aether';
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.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
        rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
    }, z.core.$strip>]>, z.ZodTransform<[number, number, number, number], string | [number, number, number] | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    }>>;
}, z.core.$strip>;
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.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
            rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
        }, z.core.$strip>]>, z.ZodTransform<[number, number, number, number], string | [number, number, number] | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        }>>;
    }, z.core.$strip>;
    lastUpdateRef: number | null;
    afterUpdate(ctx: aether.Context): void;
    afterDelete(ctx: aether.Context): void;
    updatePositions({ decimalToDataScale: scale, plot }: RuleProps): number;
    render(props: RuleProps): void;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
//# sourceMappingURL=aether.d.ts.map