import { render } from '../../render';
import { FindResult } from '../../line/aether/line';
import { Draw2D } from '../../draw2d';
import { Theme } from '../../../theming/core/theme';
import { color } from '../../../color/core';
import { aether } from '../../../aether/aether';
import { z } from 'zod';
import { box, xy } from '@synnaxlabs/x';

export declare const measureStateZ: z.ZodObject<{
    one: z.ZodNullable<z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>>;
    two: z.ZodNullable<z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>>;
    hover: z.ZodNullable<z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>>;
    color: z.ZodDefault<z.ZodOptional<z.ZodUnion<[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]>, z.ZodObject<{
        verticalLine: z.ZodDefault<z.ZodOptional<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]>>>;
        horizontalLine: z.ZodDefault<z.ZodOptional<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]>>>;
        obliqueLine: z.ZodDefault<z.ZodOptional<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, {
        verticalLine: color.Color;
        horizontalLine: color.Color;
        obliqueLine: color.Color;
    }, {
        verticalLine?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        horizontalLine?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        obliqueLine?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
    }>]>>>;
    strokeWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    strokeDash: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, "strip", z.ZodTypeAny, {
    color: (color.Color | {
        verticalLine: color.Color;
        horizontalLine: color.Color;
        obliqueLine: color.Color;
    }) & (color.Color | {
        verticalLine: color.Color;
        horizontalLine: color.Color;
        obliqueLine: color.Color;
    } | undefined);
    strokeWidth: number;
    hover: {
        x: number;
        y: number;
    } | null;
    one: {
        x: number;
        y: number;
    } | null;
    two: {
        x: number;
        y: number;
    } | null;
    strokeDash: number;
}, {
    hover: {
        x: number;
        y: number;
    } | null;
    one: {
        x: number;
        y: number;
    } | null;
    two: {
        x: number;
        y: number;
    } | null;
    color?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | {
        verticalLine?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        horizontalLine?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        obliqueLine?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
    } | undefined;
    strokeWidth?: number | undefined;
    strokeDash?: number | undefined;
}>;
interface InternalState {
    render: render.Context;
    theme: Theme;
    draw: Draw2D;
    dataOne: xy.XY | null;
    dataTwo: xy.XY | null;
}
export interface MeasureProps {
    findByXDecimal: (target: number) => Promise<FindResult[]>;
    findByXValue: (target: number) => Promise<FindResult[]>;
    region: box.Box;
}
export declare class Measure extends aether.Leaf<typeof measureStateZ, InternalState> {
    static readonly TYPE = "measure";
    schema: z.ZodObject<{
        one: z.ZodNullable<z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>>;
        two: z.ZodNullable<z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>>;
        hover: z.ZodNullable<z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>>;
        color: z.ZodDefault<z.ZodOptional<z.ZodUnion<[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]>, z.ZodObject<{
            verticalLine: z.ZodDefault<z.ZodOptional<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]>>>;
            horizontalLine: z.ZodDefault<z.ZodOptional<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]>>>;
            obliqueLine: z.ZodDefault<z.ZodOptional<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, {
            verticalLine: color.Color;
            horizontalLine: color.Color;
            obliqueLine: color.Color;
        }, {
            verticalLine?: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | color.Color | [number, number, number] | undefined;
            horizontalLine?: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | color.Color | [number, number, number] | undefined;
            obliqueLine?: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | color.Color | [number, number, number] | undefined;
        }>]>>>;
        strokeWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        strokeDash: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        color: (color.Color | {
            verticalLine: color.Color;
            horizontalLine: color.Color;
            obliqueLine: color.Color;
        }) & (color.Color | {
            verticalLine: color.Color;
            horizontalLine: color.Color;
            obliqueLine: color.Color;
        } | undefined);
        strokeWidth: number;
        hover: {
            x: number;
            y: number;
        } | null;
        one: {
            x: number;
            y: number;
        } | null;
        two: {
            x: number;
            y: number;
        } | null;
        strokeDash: number;
    }, {
        hover: {
            x: number;
            y: number;
        } | null;
        one: {
            x: number;
            y: number;
        } | null;
        two: {
            x: number;
            y: number;
        } | null;
        color?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | {
            verticalLine?: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | color.Color | [number, number, number] | undefined;
            horizontalLine?: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | color.Color | [number, number, number] | undefined;
            obliqueLine?: string | [number, number, number, number] | {
                rgba255: [number, number, number, number];
            } | color.Color | [number, number, number] | undefined;
        } | undefined;
        strokeWidth?: number | undefined;
        strokeDash?: number | undefined;
    }>;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    private get verticalLineColor();
    private get horizontalLineColor();
    private get obliqueLineColor();
    private find;
    private renderHover;
    render(props: MeasureProps): Promise<void>;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
//# sourceMappingURL=measure.d.ts.map