import { z } from 'zod';
import { TimeStamp, box, scale } from '@synnaxlabs/x';
import { render } from '../../../render';
import { Draw2D } from '../../../draw2d';
import { aether } from '../../../../aether/aether';

export declare const annotationStateZ: z.ZodObject<{
    start: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
        value: z.ZodBigInt;
    }, "strip", z.ZodTypeAny, {
        value: bigint;
    }, {
        value: bigint;
    }>, TimeStamp, {
        value: bigint;
    }>, z.ZodEffects<z.ZodString, TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, TimeStamp, Number>, z.ZodEffects<z.ZodNumber, TimeStamp, number>, z.ZodType<TimeStamp, z.ZodTypeDef, TimeStamp>]>;
    end: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
        value: z.ZodBigInt;
    }, "strip", z.ZodTypeAny, {
        value: bigint;
    }, {
        value: bigint;
    }>, TimeStamp, {
        value: bigint;
    }>, z.ZodEffects<z.ZodString, TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, TimeStamp, Number>, z.ZodEffects<z.ZodNumber, TimeStamp, number>, z.ZodType<TimeStamp, z.ZodTypeDef, TimeStamp>]>;
}, "strip", z.ZodTypeAny, {
    start: TimeStamp;
    end: TimeStamp;
}, {
    start: string | number | Number | TimeStamp | {
        value: bigint;
    } | (string & Number) | (string & TimeStamp) | (string & {
        value: bigint;
    }) | (number & Number) | (number & TimeStamp) | (number & {
        value: bigint;
    }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
        value: bigint;
    }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
        value: bigint;
    } & string) | ({
        value: bigint;
    } & number) | ({
        value: bigint;
    } & Number);
    end: string | number | Number | TimeStamp | {
        value: bigint;
    } | (string & Number) | (string & TimeStamp) | (string & {
        value: bigint;
    }) | (number & Number) | (number & TimeStamp) | (number & {
        value: bigint;
    }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
        value: bigint;
    }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
        value: bigint;
    } & string) | ({
        value: bigint;
    } & number) | ({
        value: bigint;
    } & Number);
}>;
interface AnnotationProps {
    dataToDecimalScale: scale.Scale;
    region: box.Box;
}
interface InternalState {
    render: render.Context;
    draw: Draw2D;
}
export declare class Annotation extends aether.Leaf<typeof annotationStateZ, InternalState> {
    static readonly TYPE = "range-annotation";
    schema: z.ZodObject<{
        start: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
            value: z.ZodBigInt;
        }, "strip", z.ZodTypeAny, {
            value: bigint;
        }, {
            value: bigint;
        }>, TimeStamp, {
            value: bigint;
        }>, z.ZodEffects<z.ZodString, TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, TimeStamp, Number>, z.ZodEffects<z.ZodNumber, TimeStamp, number>, z.ZodType<TimeStamp, z.ZodTypeDef, TimeStamp>]>;
        end: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
            value: z.ZodBigInt;
        }, "strip", z.ZodTypeAny, {
            value: bigint;
        }, {
            value: bigint;
        }>, TimeStamp, {
            value: bigint;
        }>, z.ZodEffects<z.ZodString, TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, TimeStamp, Number>, z.ZodEffects<z.ZodNumber, TimeStamp, number>, z.ZodType<TimeStamp, z.ZodTypeDef, TimeStamp>]>;
    }, "strip", z.ZodTypeAny, {
        start: TimeStamp;
        end: TimeStamp;
    }, {
        start: string | number | Number | TimeStamp | {
            value: bigint;
        } | (string & Number) | (string & TimeStamp) | (string & {
            value: bigint;
        }) | (number & Number) | (number & TimeStamp) | (number & {
            value: bigint;
        }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
            value: bigint;
        }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
            value: bigint;
        } & string) | ({
            value: bigint;
        } & number) | ({
            value: bigint;
        } & Number);
        end: string | number | Number | TimeStamp | {
            value: bigint;
        } | (string & Number) | (string & TimeStamp) | (string & {
            value: bigint;
        }) | (number & Number) | (number & TimeStamp) | (number & {
            value: bigint;
        }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
            value: bigint;
        }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
            value: bigint;
        } & string) | ({
            value: bigint;
        } & number) | ({
            value: bigint;
        } & Number);
    }>;
    afterUpdate(): Promise<void>;
    render(props: AnnotationProps): Promise<void>;
}
export {};
//# sourceMappingURL=annotation.d.ts.map