import { scale } from '@synnaxlabs/x/spatial';
import { z } from 'zod';
import { aether } from '../../../aether/aether';
import { color } from '../../../color/core';
import { telem } from '../../../telem/aether';
import { theming } from '../../../theming/aether';
import { Element } from '../../diagram/aether/Diagram';
import { render } from '../../render';
declare const valueState: z.ZodObject<{
    box: z.ZodObject<{
        one: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>;
        two: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>;
        root: z.ZodObject<{
            x: z.ZodEnum<["left", "right"]>;
            y: z.ZodEnum<["top", "bottom"]>;
        }, "strip", z.ZodTypeAny, {
            x: "right" | "left";
            y: "top" | "bottom";
        }, {
            x: "right" | "left";
            y: "top" | "bottom";
        }>;
    }, "strip", z.ZodTypeAny, {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "right" | "left";
            y: "top" | "bottom";
        };
    }, {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "right" | "left";
            y: "top" | "bottom";
        };
    }>;
    telem: z.ZodDefault<z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
        type: z.ZodString;
        variant: z.ZodEnum<["source", "sink", "source-transformer", "sink-transformer"]>;
        valueType: z.ZodString;
        props: z.ZodAny;
        transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
    }, {
        variant: z.ZodLiteral<"source">;
    }>, {
        valueType: z.ZodLiteral<"string">;
    }>, "strip", z.ZodTypeAny, {
        type: string;
        valueType: "string";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    }, {
        type: string;
        valueType: "string";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    }>>>;
    font: z.ZodDefault<z.ZodOptional<z.ZodEnum<["h1", "h2", "h3", "h4", "h5", "p", "small"]>>>;
    color: 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]>>>;
    precision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    minWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    width: z.ZodOptional<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    color: color.Color;
    minWidth: number;
    font: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p";
    precision: number;
    telem: {
        type: string;
        valueType: "string";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    };
    box: {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "right" | "left";
            y: "top" | "bottom";
        };
    };
    width?: number | undefined;
}, {
    box: {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "right" | "left";
            y: "top" | "bottom";
        };
    };
    color?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | undefined;
    minWidth?: number | undefined;
    width?: number | undefined;
    font?: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p" | undefined;
    precision?: number | undefined;
    telem?: {
        type: string;
        valueType: "string";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    } | undefined;
}>;
export interface ValueProps {
    scale?: scale.XY;
}
interface InternalState {
    theme: theming.Theme;
    render: render.Context;
    telem: telem.StringSource;
    requestRender: render.RequestF | null;
    textColor: color.Color;
}
export declare class Value extends aether.Leaf<typeof valueState, InternalState> implements Element {
    static readonly TYPE = "value";
    static readonly z: z.ZodObject<{
        box: z.ZodObject<{
            one: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            two: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            root: z.ZodObject<{
                x: z.ZodEnum<["left", "right"]>;
                y: z.ZodEnum<["top", "bottom"]>;
            }, "strip", z.ZodTypeAny, {
                x: "right" | "left";
                y: "top" | "bottom";
            }, {
                x: "right" | "left";
                y: "top" | "bottom";
            }>;
        }, "strip", z.ZodTypeAny, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        }, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        }>;
        telem: z.ZodDefault<z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
            type: z.ZodString;
            variant: z.ZodEnum<["source", "sink", "source-transformer", "sink-transformer"]>;
            valueType: z.ZodString;
            props: z.ZodAny;
            transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
        }, {
            variant: z.ZodLiteral<"source">;
        }>, {
            valueType: z.ZodLiteral<"string">;
        }>, "strip", z.ZodTypeAny, {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }, {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }>>>;
        font: z.ZodDefault<z.ZodOptional<z.ZodEnum<["h1", "h2", "h3", "h4", "h5", "p", "small"]>>>;
        color: 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]>>>;
        precision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        minWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        width: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        color: color.Color;
        minWidth: number;
        font: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p";
        precision: number;
        telem: {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        };
        box: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        };
        width?: number | undefined;
    }, {
        box: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        };
        color?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        minWidth?: number | undefined;
        width?: number | undefined;
        font?: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p" | undefined;
        precision?: number | undefined;
        telem?: {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        } | undefined;
    }>;
    schema: z.ZodObject<{
        box: z.ZodObject<{
            one: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            two: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            root: z.ZodObject<{
                x: z.ZodEnum<["left", "right"]>;
                y: z.ZodEnum<["top", "bottom"]>;
            }, "strip", z.ZodTypeAny, {
                x: "right" | "left";
                y: "top" | "bottom";
            }, {
                x: "right" | "left";
                y: "top" | "bottom";
            }>;
        }, "strip", z.ZodTypeAny, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        }, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        }>;
        telem: z.ZodDefault<z.ZodOptional<z.ZodObject<z.objectUtil.extendShape<z.objectUtil.extendShape<{
            type: z.ZodString;
            variant: z.ZodEnum<["source", "sink", "source-transformer", "sink-transformer"]>;
            valueType: z.ZodString;
            props: z.ZodAny;
            transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
        }, {
            variant: z.ZodLiteral<"source">;
        }>, {
            valueType: z.ZodLiteral<"string">;
        }>, "strip", z.ZodTypeAny, {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }, {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }>>>;
        font: z.ZodDefault<z.ZodOptional<z.ZodEnum<["h1", "h2", "h3", "h4", "h5", "p", "small"]>>>;
        color: 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]>>>;
        precision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        minWidth: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        width: z.ZodOptional<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        color: color.Color;
        minWidth: number;
        font: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p";
        precision: number;
        telem: {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        };
        box: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        };
        width?: number | undefined;
    }, {
        box: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "right" | "left";
                y: "top" | "bottom";
            };
        };
        color?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
        minWidth?: number | undefined;
        width?: number | undefined;
        font?: "small" | "h1" | "h2" | "h3" | "h4" | "h5" | "p" | undefined;
        precision?: number | undefined;
        telem?: {
            type: string;
            valueType: "string";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        } | undefined;
    }>;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    private requestRender;
    render({ viewportScale }: {
        viewportScale?: scale.XY | undefined;
    }): Promise<void>;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
//# sourceMappingURL=value.d.ts.map