import { GridEntrySpec } from './aether/grid';
import { lineplot } from './aether';
import { Viewport } from '../../viewport';
import { Color } from '../../color';
import { z } from 'zod';
import { Destructor } from '@synnaxlabs/x';
import { CSSProperties, DetailedHTMLProps, HTMLAttributes, PropsWithChildren } from 'react';

type HTMLDivProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
export interface LinePlotContextValue {
    setGridEntry: (meta: GridEntrySpec) => 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) => LinePlotContextValue;
export declare const useViewport: (handle: Viewport.UseHandler) => void;
export declare const useGridEntry: (meta: GridEntrySpec, 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;
    onHold?: (hold: boolean) => void;
}
export declare const LinePlot: import('react').FC<LinePlotProps & {
    aetherKey?: string | undefined;
}>;
export {};
//# sourceMappingURL=LinePlot.d.ts.map