import { render } from '../../render';
import { measure } from '../../measure/aether';
import { tooltip } from '../tooltip/aether';
import { XAxis } from './XAxis';
import { FindResult } from '../../line/aether/line';
import { status } from '../../../status/aether';
import { aether } from '../../../aether/aether';
import { z } from 'zod';
import { Instrumentation } from '@synnaxlabs/alamos';

export declare const linePlotStateZ: z.ZodObject<{
    container: z.ZodObject<{
        one: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>;
        two: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>;
        root: z.ZodObject<{
            x: z.ZodEnum<["left", "right"]>;
            y: z.ZodEnum<["top", "bottom"]>;
        }, "strip", z.ZodTypeAny, {
            x: "left" | "right";
            y: "bottom" | "top";
        }, {
            x: "left" | "right";
            y: "bottom" | "top";
        }>;
    }, "strip", z.ZodTypeAny, {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    }, {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    }>;
    viewport: z.ZodObject<{
        one: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>;
        two: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>;
        root: z.ZodObject<{
            x: z.ZodEnum<["left", "right"]>;
            y: z.ZodEnum<["top", "bottom"]>;
        }, "strip", z.ZodTypeAny, {
            x: "left" | "right";
            y: "bottom" | "top";
        }, {
            x: "left" | "right";
            y: "bottom" | "top";
        }>;
    }, "strip", z.ZodTypeAny, {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    }, {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    }>;
    hold: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    grid: z.ZodRecord<z.ZodString, z.ZodObject<{
        key: z.ZodString;
        size: z.ZodNumber;
        order: z.ZodEnum<["first", "last"]>;
        loc: z.ZodEnum<["top", "right", "bottom", "left"]>;
    }, "strip", z.ZodTypeAny, {
        order: "last" | "first";
        key: string;
        size: number;
        loc: "bottom" | "left" | "right" | "top";
    }, {
        order: "last" | "first";
        key: string;
        size: number;
        loc: "bottom" | "left" | "right" | "top";
    }>>;
    clearOverScan: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        x: number;
        y: number;
    }, {
        x: number;
        y: number;
    }>, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
        width: z.ZodNumber;
        height: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        width: number;
        height: number;
    }, {
        width: number;
        height: number;
    }>, z.ZodObject<{
        signedWidth: z.ZodNumber;
        signedHeight: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        signedWidth: number;
        signedHeight: number;
    }, {
        signedWidth: number;
        signedHeight: number;
    }>, z.ZodObject<{
        clientX: z.ZodNumber;
        clientY: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        clientX: number;
        clientY: number;
    }, {
        clientX: number;
        clientY: number;
    }>]>>>;
}, "strip", z.ZodTypeAny, {
    container: {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    };
    grid: Record<string, {
        order: "last" | "first";
        key: string;
        size: number;
        loc: "bottom" | "left" | "right" | "top";
    }>;
    viewport: {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    };
    hold: boolean;
    clearOverScan: (number | [number, number] | {
        x: number;
        y: number;
    } | {
        width: number;
        height: number;
    } | {
        signedWidth: number;
        signedHeight: number;
    } | {
        clientX: number;
        clientY: number;
    }) & (number | [number, number] | {
        x: number;
        y: number;
    } | {
        width: number;
        height: number;
    } | {
        signedWidth: number;
        signedHeight: number;
    } | {
        clientX: number;
        clientY: number;
    } | undefined);
}, {
    container: {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    };
    grid: Record<string, {
        order: "last" | "first";
        key: string;
        size: number;
        loc: "bottom" | "left" | "right" | "top";
    }>;
    viewport: {
        one: {
            x: number;
            y: number;
        };
        two: {
            x: number;
            y: number;
        };
        root: {
            x: "left" | "right";
            y: "bottom" | "top";
        };
    };
    hold?: boolean | undefined;
    clearOverScan?: number | [number, number] | {
        x: number;
        y: number;
    } | {
        width: number;
        height: number;
    } | {
        signedWidth: number;
        signedHeight: number;
    } | {
        clientX: number;
        clientY: number;
    } | undefined;
}>;
interface InternalState {
    instrumentation: Instrumentation;
    aggregate: status.Aggregate;
    renderCtx: render.Context;
}
type Children = XAxis | tooltip.Tooltip | measure.Measure;
export declare class LinePlot extends aether.Composite<typeof linePlotStateZ, InternalState, Children> {
    static readonly TYPE: string;
    private readonly eraser;
    schema: z.ZodObject<{
        container: z.ZodObject<{
            one: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            two: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            root: z.ZodObject<{
                x: z.ZodEnum<["left", "right"]>;
                y: z.ZodEnum<["top", "bottom"]>;
            }, "strip", z.ZodTypeAny, {
                x: "left" | "right";
                y: "bottom" | "top";
            }, {
                x: "left" | "right";
                y: "bottom" | "top";
            }>;
        }, "strip", z.ZodTypeAny, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        }, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        }>;
        viewport: z.ZodObject<{
            one: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            two: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, "strip", z.ZodTypeAny, {
                x: number;
                y: number;
            }, {
                x: number;
                y: number;
            }>;
            root: z.ZodObject<{
                x: z.ZodEnum<["left", "right"]>;
                y: z.ZodEnum<["top", "bottom"]>;
            }, "strip", z.ZodTypeAny, {
                x: "left" | "right";
                y: "bottom" | "top";
            }, {
                x: "left" | "right";
                y: "bottom" | "top";
            }>;
        }, "strip", z.ZodTypeAny, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        }, {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        }>;
        hold: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
        grid: z.ZodRecord<z.ZodString, z.ZodObject<{
            key: z.ZodString;
            size: z.ZodNumber;
            order: z.ZodEnum<["first", "last"]>;
            loc: z.ZodEnum<["top", "right", "bottom", "left"]>;
        }, "strip", z.ZodTypeAny, {
            order: "last" | "first";
            key: string;
            size: number;
            loc: "bottom" | "left" | "right" | "top";
        }, {
            order: "last" | "first";
            key: string;
            size: number;
            loc: "bottom" | "left" | "right" | "top";
        }>>;
        clearOverScan: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            x: number;
            y: number;
        }, {
            x: number;
            y: number;
        }>, z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
            width: z.ZodNumber;
            height: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            width: number;
            height: number;
        }, {
            width: number;
            height: number;
        }>, z.ZodObject<{
            signedWidth: z.ZodNumber;
            signedHeight: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            signedWidth: number;
            signedHeight: number;
        }, {
            signedWidth: number;
            signedHeight: number;
        }>, z.ZodObject<{
            clientX: z.ZodNumber;
            clientY: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            clientX: number;
            clientY: number;
        }, {
            clientX: number;
            clientY: number;
        }>]>>>;
    }, "strip", z.ZodTypeAny, {
        container: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        };
        grid: Record<string, {
            order: "last" | "first";
            key: string;
            size: number;
            loc: "bottom" | "left" | "right" | "top";
        }>;
        viewport: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        };
        hold: boolean;
        clearOverScan: (number | [number, number] | {
            x: number;
            y: number;
        } | {
            width: number;
            height: number;
        } | {
            signedWidth: number;
            signedHeight: number;
        } | {
            clientX: number;
            clientY: number;
        }) & (number | [number, number] | {
            x: number;
            y: number;
        } | {
            width: number;
            height: number;
        } | {
            signedWidth: number;
            signedHeight: number;
        } | {
            clientX: number;
            clientY: number;
        } | undefined);
    }, {
        container: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        };
        grid: Record<string, {
            order: "last" | "first";
            key: string;
            size: number;
            loc: "bottom" | "left" | "right" | "top";
        }>;
        viewport: {
            one: {
                x: number;
                y: number;
            };
            two: {
                x: number;
                y: number;
            };
            root: {
                x: "left" | "right";
                y: "bottom" | "top";
            };
        };
        hold?: boolean | undefined;
        clearOverScan?: number | [number, number] | {
            x: number;
            y: number;
        } | {
            width: number;
            height: number;
        } | {
            signedWidth: number;
            signedHeight: number;
        } | {
            clientX: number;
            clientY: number;
        } | undefined;
    }>;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    findByXDecimal(x: number): Promise<FindResult[]>;
    findByXValue(x: number): Promise<FindResult[]>;
    private get axes();
    private get tooltips();
    private get measures();
    private renderAxes;
    private renderTooltips;
    private renderMeasures;
    private calculatePlot;
    private render;
    requestRender(priority: render.Priority, reason: string): void;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
//# sourceMappingURL=LinePlot.d.ts.map