import { type CSSProperties, type DetailedHTMLProps, type HTMLAttributes, type PropsWithChildren } from "react";
import { type Destructor } from "@synnaxlabs/x";
import { type z } from "zod";
import { type Color } from '../../color';
import { type Viewport } from '../../viewport';
import { lineplot } from './aether';
import { type GridPositionSpec } from './aether/grid';
type HTMLDivProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
export interface LinePlotContextValue {
    setAxis: (meta: GridPositionSpec) => void;
    removeAxis: (key: string) => void;
    setLine: (meta: LineSpec) => void;
    removeLine: (key: string) => void;
    lines: LineSpec[];
    setViewport: (viewport: Viewport.UseEvent) => void;
    addViewportHandler: (handler: Viewport.UseHandler) => Destructor;
}
export declare const useContext: (component: string) => LinePlotContextValue;
export declare const useViewport: (handle: Viewport.UseHandler) => void;
export declare const useGridPosition: (meta: GridPositionSpec, component: string) => CSSProperties;
export interface LineSpec {
    key: string;
    color: Color.Crude;
    label: string;
}
export interface LinePlotProps extends PropsWithChildren, Pick<z.input<typeof lineplot.linePlotStateZ>, "clearOverscan" | "hold">, HTMLDivProps {
    resizeDebounce?: number;
}
export declare const LinePlot: import("react").FC<LinePlotProps & {
    aetherKey?: string | undefined;
}>;
export {};
