import { ranger, signals, Synnax } from '@synnaxlabs/client';
import { box, scale, TimeRange } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../../../ether';
import { Draw2D } from '../../../draw2d';
import { render } from '../../../render';
export declare const selectedStateZ: z.ZodObject<z.objectUtil.extendShape<{
    key: z.ZodString;
    name: z.ZodString;
    timeRange: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
        start: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
            value: z.ZodBigInt;
        }, "strip", z.ZodTypeAny, {
            value: bigint;
        }, {
            value: bigint;
        }>, import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>, z.ZodEffects<z.ZodString, import('@synnaxlabs/x').TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import('@synnaxlabs/x').TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import('@synnaxlabs/x').TimeStamp, number>, z.ZodType<import('@synnaxlabs/x').TimeStamp, z.ZodTypeDef, import('@synnaxlabs/x').TimeStamp>]>;
        end: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
            value: z.ZodBigInt;
        }, "strip", z.ZodTypeAny, {
            value: bigint;
        }, {
            value: bigint;
        }>, import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>, z.ZodEffects<z.ZodString, import('@synnaxlabs/x').TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import('@synnaxlabs/x').TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import('@synnaxlabs/x').TimeStamp, number>, z.ZodType<import('@synnaxlabs/x').TimeStamp, z.ZodTypeDef, import('@synnaxlabs/x').TimeStamp>]>;
    }, "strip", z.ZodTypeAny, {
        start: import('@synnaxlabs/x').TimeStamp;
        end: import('@synnaxlabs/x').TimeStamp;
    }, {
        start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
            value: bigint;
        };
        end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
            value: bigint;
        };
    }>, TimeRange, {
        start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
            value: bigint;
        };
        end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
            value: bigint;
        };
    }>, z.ZodType<TimeRange, z.ZodTypeDef, TimeRange>]>;
    color: z.ZodOptional<z.ZodString>;
}, {
    viewport: z.ZodObject<{
        lower: z.ZodNumber;
        upper: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        lower: number;
        upper: number;
    }, {
        lower: number;
        upper: number;
    }>;
}>, "strip", z.ZodTypeAny, {
    key: string;
    name: string;
    timeRange: TimeRange;
    viewport: {
        lower: number;
        upper: number;
    };
    color?: string | undefined;
}, {
    key: string;
    name: string;
    timeRange: TimeRange | {
        start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
            value: bigint;
        };
        end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
            value: bigint;
        };
    };
    viewport: {
        lower: number;
        upper: number;
    };
    color?: string | undefined;
}>;
export type SelectedState = z.infer<typeof selectedStateZ>;
export declare const providerStateZ: z.ZodObject<{
    cursor: z.ZodUnion<[z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>, z.ZodNull]>;
    hovered: z.ZodUnion<[z.ZodObject<z.objectUtil.extendShape<{
        key: z.ZodString;
        name: z.ZodString;
        timeRange: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
            start: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
                value: z.ZodBigInt;
            }, "strip", z.ZodTypeAny, {
                value: bigint;
            }, {
                value: bigint;
            }>, import('@synnaxlabs/x').TimeStamp, {
                value: bigint;
            }>, z.ZodEffects<z.ZodString, import('@synnaxlabs/x').TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import('@synnaxlabs/x').TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import('@synnaxlabs/x').TimeStamp, number>, z.ZodType<import('@synnaxlabs/x').TimeStamp, z.ZodTypeDef, import('@synnaxlabs/x').TimeStamp>]>;
            end: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
                value: z.ZodBigInt;
            }, "strip", z.ZodTypeAny, {
                value: bigint;
            }, {
                value: bigint;
            }>, import('@synnaxlabs/x').TimeStamp, {
                value: bigint;
            }>, z.ZodEffects<z.ZodString, import('@synnaxlabs/x').TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import('@synnaxlabs/x').TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import('@synnaxlabs/x').TimeStamp, number>, z.ZodType<import('@synnaxlabs/x').TimeStamp, z.ZodTypeDef, import('@synnaxlabs/x').TimeStamp>]>;
        }, "strip", z.ZodTypeAny, {
            start: import('@synnaxlabs/x').TimeStamp;
            end: import('@synnaxlabs/x').TimeStamp;
        }, {
            start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
            end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
        }>, TimeRange, {
            start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
            end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
        }>, z.ZodType<TimeRange, z.ZodTypeDef, TimeRange>]>;
        color: z.ZodOptional<z.ZodString>;
    }, {
        viewport: z.ZodObject<{
            lower: z.ZodNumber;
            upper: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            lower: number;
            upper: number;
        }, {
            lower: number;
            upper: number;
        }>;
    }>, "strip", z.ZodTypeAny, {
        key: string;
        name: string;
        timeRange: TimeRange;
        viewport: {
            lower: number;
            upper: number;
        };
        color?: string | undefined;
    }, {
        key: string;
        name: string;
        timeRange: TimeRange | {
            start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
            end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
        };
        viewport: {
            lower: number;
            upper: number;
        };
        color?: string | undefined;
    }>, z.ZodNull]>;
    count: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    cursor: {
        x: number;
        y: number;
    } | null;
    count: number;
    hovered: {
        key: string;
        name: string;
        timeRange: TimeRange;
        viewport: {
            lower: number;
            upper: number;
        };
        color?: string | undefined;
    } | null;
}, {
    cursor: {
        x: number;
        y: number;
    } | null;
    count: number;
    hovered: {
        key: string;
        name: string;
        timeRange: TimeRange | {
            start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
            end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                value: bigint;
            };
        };
        viewport: {
            lower: number;
            upper: number;
        };
        color?: string | undefined;
    } | null;
}>;
interface InternalState {
    ranges: Map<string, ranger.Range>;
    client: Synnax | null;
    render: render.Context;
    draw: Draw2D;
    tracker: signals.Observable<string, ranger.Range>;
}
interface AnnotationProps {
    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;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>, z.ZodNull]>;
        hovered: z.ZodUnion<[z.ZodObject<z.objectUtil.extendShape<{
            key: z.ZodString;
            name: z.ZodString;
            timeRange: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
                start: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
                    value: z.ZodBigInt;
                }, "strip", z.ZodTypeAny, {
                    value: bigint;
                }, {
                    value: bigint;
                }>, import('@synnaxlabs/x').TimeStamp, {
                    value: bigint;
                }>, z.ZodEffects<z.ZodString, import('@synnaxlabs/x').TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import('@synnaxlabs/x').TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import('@synnaxlabs/x').TimeStamp, number>, z.ZodType<import('@synnaxlabs/x').TimeStamp, z.ZodTypeDef, import('@synnaxlabs/x').TimeStamp>]>;
                end: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
                    value: z.ZodBigInt;
                }, "strip", z.ZodTypeAny, {
                    value: bigint;
                }, {
                    value: bigint;
                }>, import('@synnaxlabs/x').TimeStamp, {
                    value: bigint;
                }>, z.ZodEffects<z.ZodString, import('@synnaxlabs/x').TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import('@synnaxlabs/x').TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import('@synnaxlabs/x').TimeStamp, number>, z.ZodType<import('@synnaxlabs/x').TimeStamp, z.ZodTypeDef, import('@synnaxlabs/x').TimeStamp>]>;
            }, "strip", z.ZodTypeAny, {
                start: import('@synnaxlabs/x').TimeStamp;
                end: import('@synnaxlabs/x').TimeStamp;
            }, {
                start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
                end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
            }>, TimeRange, {
                start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
                end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
            }>, z.ZodType<TimeRange, z.ZodTypeDef, TimeRange>]>;
            color: z.ZodOptional<z.ZodString>;
        }, {
            viewport: z.ZodObject<{
                lower: z.ZodNumber;
                upper: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                lower: number;
                upper: number;
            }, {
                lower: number;
                upper: number;
            }>;
        }>, "strip", z.ZodTypeAny, {
            key: string;
            name: string;
            timeRange: TimeRange;
            viewport: {
                lower: number;
                upper: number;
            };
            color?: string | undefined;
        }, {
            key: string;
            name: string;
            timeRange: TimeRange | {
                start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
                end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
            };
            viewport: {
                lower: number;
                upper: number;
            };
            color?: string | undefined;
        }>, z.ZodNull]>;
        count: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        cursor: {
            x: number;
            y: number;
        } | null;
        count: number;
        hovered: {
            key: string;
            name: string;
            timeRange: TimeRange;
            viewport: {
                lower: number;
                upper: number;
            };
            color?: string | undefined;
        } | null;
    }, {
        cursor: {
            x: number;
            y: number;
        } | null;
        count: number;
        hovered: {
            key: string;
            name: string;
            timeRange: TimeRange | {
                start: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
                end: string | number | Number | import('@synnaxlabs/x').TimeStamp | {
                    value: bigint;
                };
            };
            viewport: {
                lower: number;
                upper: number;
            };
            color?: string | undefined;
        } | null;
    }>;
    fetchedInitial: TimeRange;
    afterUpdate(): Promise<void>;
    private fetchInitial;
    render(props: AnnotationProps): Promise<void>;
}
export {};
//# sourceMappingURL=provider.d.ts.map