import { color, Destructor } from '@synnaxlabs/x';
import { CSSProperties, DetailedHTMLProps, HTMLAttributes, PropsWithChildren, ReactElement } from 'react';
import { z } from 'zod';
import { Aether } from '../aether';
import { lineplot } from './aether';
import { Viewport } from '../viewport';
import { grid } from '../vis/grid';
type HTMLDivProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
export interface ContextValue {
    id: string;
    setGridEntry: (meta: grid.Region) => void;
    removeGridEntry: (key: string) => void;
    setLine: (meta: LineSpec) => void;
    removeLine: (key: string) => void;
    lines: LineSpec[];
    setViewport: (viewport: Viewport.UseEvent) => void;
    addViewportHandler: (handler: Viewport.UseHandler) => Destructor;
    setHold: (hold: boolean) => void;
}
export declare const useContext: (component: string) => ContextValue;
export declare const useViewport: (handle: Viewport.UseHandler) => void;
export declare const useGridEntry: (meta: grid.Region, component: string) => CSSProperties;
export interface LineSpec {
    key: string;
    legendGroup: string;
    color: color.Crude;
    label: string;
    visible: boolean;
}
export interface LinePlotProps extends PropsWithChildren, Partial<Pick<z.input<typeof lineplot.linePlotStateZ>, "clearOverScan" | "hold" | "visible">>, HTMLDivProps, Aether.ComponentProps {
    resizeDebounce?: number;
    onHold?: (hold: boolean) => void;
}
export declare const LinePlot: ({ aetherKey, style, resizeDebounce: debounce, clearOverScan, children, hold, onHold, visible, ...rest }: LinePlotProps) => ReactElement;
export {};
//# sourceMappingURL=LinePlot.d.ts.map