import { ranger, Synnax } from '@synnaxlabs/client';
import { box, Destructor, scale, TimeRange, TimeSpan } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../../aether/aether';
import { status } from '../../../status/aether';
import { Draw2D } from '../../../vis/draw2d';
import { render } from '../../../vis/render';
export declare const selectedStateZ: z.ZodObject<{
    key: z.ZodUUID;
    name: z.ZodString;
    timeRange: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
        start: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
        end: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
    }, z.core.$strip>, z.ZodTransform<TimeRange, {
        start: import('@synnaxlabs/x').TimeStamp;
        end: import('@synnaxlabs/x').TimeStamp;
    }>>, z.ZodCustom<TimeRange, TimeRange>]>;
    color: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodObject<{
        key: z.ZodUUID;
        name: z.ZodString;
        color: z.ZodString;
    }, z.core.$strip>>, z.ZodPipe<z.ZodNull, z.ZodTransform<undefined, null>>]>>;
    parent: z.ZodUnion<readonly [z.ZodNull, typeof ranger.payloadZ]>;
    viewport: z.ZodObject<{
        lower: z.ZodNumber;
        upper: z.ZodNumber;
    }, z.core.$strip>;
}, z.core.$strip>;
export type SelectedState = z.infer<typeof selectedStateZ>;
export declare const providerStateZ: z.ZodObject<{
    cursor: z.ZodUnion<[z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, z.core.$strip>, z.ZodNull]>;
    hovered: z.ZodUnion<[z.ZodObject<{
        key: z.ZodUUID;
        name: z.ZodString;
        timeRange: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
            start: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
                value: z.ZodBigInt;
            }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
                value: bigint;
            }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
            end: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
                value: z.ZodBigInt;
            }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
                value: bigint;
            }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
        }, z.core.$strip>, z.ZodTransform<TimeRange, {
            start: import('@synnaxlabs/x').TimeStamp;
            end: import('@synnaxlabs/x').TimeStamp;
        }>>, z.ZodCustom<TimeRange, TimeRange>]>;
        color: z.ZodOptional<z.ZodString>;
        labels: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodObject<{
            key: z.ZodUUID;
            name: z.ZodString;
            color: z.ZodString;
        }, z.core.$strip>>, z.ZodPipe<z.ZodNull, z.ZodTransform<undefined, null>>]>>;
        parent: z.ZodUnion<readonly [z.ZodNull, typeof ranger.payloadZ]>;
        viewport: z.ZodObject<{
            lower: z.ZodNumber;
            upper: z.ZodNumber;
        }, z.core.$strip>;
    }, z.core.$strip>, z.ZodNull]>;
    count: z.ZodNumber;
}, z.core.$strip>;
interface InternalState {
    ranges: Map<string, ranger.Range>;
    client: Synnax | null;
    render: render.Context;
    requestRender: render.Requestor;
    draw: Draw2D;
    runAsync: status.ErrorHandler;
    removeListener: Destructor | null;
}
interface ProviderProps {
    dataToDecimalScale: scale.Scale;
    viewport: box.Box;
    region: box.Box;
    timeRange: TimeRange;
}
export declare class Provider extends aether.Leaf<typeof providerStateZ, InternalState> {
    static readonly TYPE = "range-provider";
    schema: z.ZodObject<{
        cursor: z.ZodUnion<[z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, z.core.$strip>, z.ZodNull]>;
        hovered: z.ZodUnion<[z.ZodObject<{
            key: z.ZodUUID;
            name: z.ZodString;
            timeRange: z.ZodUnion<readonly [z.ZodPipe<z.ZodObject<{
                start: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
                    value: z.ZodBigInt;
                }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
                    value: bigint;
                }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
                end: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
                    value: z.ZodBigInt;
                }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
                    value: bigint;
                }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
            }, z.core.$strip>, z.ZodTransform<TimeRange, {
                start: import('@synnaxlabs/x').TimeStamp;
                end: import('@synnaxlabs/x').TimeStamp;
            }>>, z.ZodCustom<TimeRange, TimeRange>]>;
            color: z.ZodOptional<z.ZodString>;
            labels: z.ZodOptional<z.ZodUnion<[z.ZodArray<z.ZodObject<{
                key: z.ZodUUID;
                name: z.ZodString;
                color: z.ZodString;
            }, z.core.$strip>>, z.ZodPipe<z.ZodNull, z.ZodTransform<undefined, null>>]>>;
            parent: z.ZodUnion<readonly [z.ZodNull, typeof ranger.payloadZ]>;
            viewport: z.ZodObject<{
                lower: z.ZodNumber;
                upper: z.ZodNumber;
            }, z.core.$strip>;
        }, z.core.$strip>, z.ZodNull]>;
        count: z.ZodNumber;
    }, z.core.$strip>;
    fetchedInitial: TimeRange;
    afterUpdate(ctx: aether.Context): void;
    private fetchInitial;
    render(props: ProviderProps): void;
}
export {};
//# sourceMappingURL=provider.d.ts.map