import { box } from "@synnaxlabs/x";
import { z } from "zod";
import { aether } from '../../../../aether/aether';
import { color } from '../../../../color/core';
import { Draw2D } from '../../../draw2d';
import { type FindResult } from '../../../line/aether/line';
import { render } from '../../../render';
export declare const tooltipStateZ: z.ZodObject<{
    position: z.ZodUnion<[z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>, z.ZodNull]>;
    textColor: 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]>>>;
    backgroundColor: 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]>>>;
    borderColor: 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]>>>;
    ruleColor: 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]>>>;
    ruleStrokeWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    ruleStrokeDash: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    backgroundColor: color.Color;
    position: {
        x: number;
        y: number;
    } | null;
    borderColor: color.Color;
    textColor: color.Color;
    ruleColor: color.Color;
    ruleStrokeWidth: number;
    ruleStrokeDash: number;
}, {
    position: {
        x: number;
        y: number;
    } | null;
    textColor?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | undefined;
    backgroundColor?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | undefined;
    borderColor?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | undefined;
    ruleColor?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | undefined;
    ruleStrokeWidth?: number | undefined;
    ruleStrokeDash?: number | undefined;
}>;
interface InternalState {
    render: render.Context;
    draw: Draw2D;
    dotColor: color.Color;
    dotColorContrast: color.Color;
}
export interface TooltipProps {
    findByXDecimal: (position: number) => Promise<FindResult[]>;
    region: box.Box;
}
export declare class Tooltip extends aether.Leaf<typeof tooltipStateZ, InternalState> {
    static readonly TYPE = "tooltip";
    schema: z.ZodObject<{
        position: z.ZodUnion<[z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>, z.ZodNull]>;
        textColor: 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]>>>;
        backgroundColor: 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]>>>;
        borderColor: 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]>>>;
        ruleColor: 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]>>>;
        ruleStrokeWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        ruleStrokeDash: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        backgroundColor: color.Color;
        position: {
            x: number;
            y: number;
        } | null;
        borderColor: color.Color;
        textColor: color.Color;
        ruleColor: color.Color;
        ruleStrokeWidth: number;
        ruleStrokeDash: number;
    }, {
        position: {
            x: number;
            y: number;
        } | null;
        textColor?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        backgroundColor?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        borderColor?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        ruleColor?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        ruleStrokeWidth?: number | undefined;
        ruleStrokeDash?: number | undefined;
    }>;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    render(props: TooltipProps): Promise<void>;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
