import { color, Destructor, MultiSeries } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../aether/aether';
import { telem } from '../../telem/aether';
import { theming } from '../../theming/aether';
import { render } from '../../vis/render';
export declare const logState: z.ZodObject<{
    region: z.ZodObject<{
        one: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, z.core.$strip>;
        two: z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, z.core.$strip>;
        root: z.ZodObject<{
            x: z.ZodEnum<{
                right: "right";
                left: "left";
            }>;
            y: z.ZodEnum<{
                top: "top";
                bottom: "bottom";
            }>;
        }, z.core.$strip>;
    }, z.core.$strip>;
    wheelPos: z.ZodNumber;
    scrolling: z.ZodBoolean;
    empty: z.ZodBoolean;
    visible: z.ZodBoolean;
    telem: z.ZodDefault<z.ZodOptional<z.ZodObject<{
        type: z.ZodString;
        props: z.ZodAny;
        transfer: z.ZodOptional<z.ZodArray<z.ZodCustom<ArrayBuffer, ArrayBuffer>>>;
        variant: z.ZodLiteral<"source">;
        valueType: z.ZodLiteral<"series">;
    }, z.core.$strip>>>;
    font: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
        small: "small";
        h1: "h1";
        h2: "h2";
        h3: "h3";
        h4: "h4";
        h5: "h5";
        p: "p";
    }>>>;
    color: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
        rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
    }, z.core.$strip>]>, z.ZodTransform<[number, number, number, number], string | [number, number, number] | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    }>>>>;
    overshoot: z.ZodDefault<z.ZodOptional<z.ZodObject<{
        x: z.ZodNumber;
        y: z.ZodNumber;
    }, z.core.$strip>>>;
}, z.core.$strip>;
interface InternalState {
    theme: theming.Theme;
    render: render.Context;
    telem: telem.SeriesSource;
    textColor: color.Color;
    stopListeningTelem?: Destructor;
}
interface ScrollbackState {
    offset: bigint;
    offsetRef: bigint;
    scrollRef: number;
}
export declare class Log extends aether.Leaf<typeof logState, InternalState> {
    static readonly TYPE = "log";
    static readonly z: z.ZodObject<{
        region: z.ZodObject<{
            one: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, z.core.$strip>;
            two: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, z.core.$strip>;
            root: z.ZodObject<{
                x: z.ZodEnum<{
                    right: "right";
                    left: "left";
                }>;
                y: z.ZodEnum<{
                    top: "top";
                    bottom: "bottom";
                }>;
            }, z.core.$strip>;
        }, z.core.$strip>;
        wheelPos: z.ZodNumber;
        scrolling: z.ZodBoolean;
        empty: z.ZodBoolean;
        visible: z.ZodBoolean;
        telem: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            type: z.ZodString;
            props: z.ZodAny;
            transfer: z.ZodOptional<z.ZodArray<z.ZodCustom<ArrayBuffer, ArrayBuffer>>>;
            variant: z.ZodLiteral<"source">;
            valueType: z.ZodLiteral<"series">;
        }, z.core.$strip>>>;
        font: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
            small: "small";
            h1: "h1";
            h2: "h2";
            h3: "h3";
            h4: "h4";
            h5: "h5";
            p: "p";
        }>>>;
        color: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
            rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
        }, z.core.$strip>]>, z.ZodTransform<[number, number, number, number], string | [number, number, number] | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        }>>>>;
        overshoot: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>;
    schema: z.ZodObject<{
        region: z.ZodObject<{
            one: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, z.core.$strip>;
            two: z.ZodObject<{
                x: z.ZodNumber;
                y: z.ZodNumber;
            }, z.core.$strip>;
            root: z.ZodObject<{
                x: z.ZodEnum<{
                    right: "right";
                    left: "left";
                }>;
                y: z.ZodEnum<{
                    top: "top";
                    bottom: "bottom";
                }>;
            }, z.core.$strip>;
        }, z.core.$strip>;
        wheelPos: z.ZodNumber;
        scrolling: z.ZodBoolean;
        empty: z.ZodBoolean;
        visible: z.ZodBoolean;
        telem: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            type: z.ZodString;
            props: z.ZodAny;
            transfer: z.ZodOptional<z.ZodArray<z.ZodCustom<ArrayBuffer, ArrayBuffer>>>;
            variant: z.ZodLiteral<"source">;
            valueType: z.ZodLiteral<"series">;
        }, z.core.$strip>>>;
        font: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
            small: "small";
            h1: "h1";
            h2: "h2";
            h3: "h3";
            h4: "h4";
            h5: "h5";
            p: "p";
        }>>>;
        color: z.ZodDefault<z.ZodOptional<z.ZodPipe<z.ZodUnion<readonly [z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodObject<{
            rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
        }, z.core.$strip>]>, z.ZodTransform<[number, number, number, number], string | [number, number, number] | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        }>>>>;
        overshoot: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            x: z.ZodNumber;
            y: z.ZodNumber;
        }, z.core.$strip>>>;
    }, z.core.$strip>;
    values: MultiSeries;
    scrollState: ScrollbackState;
    afterUpdate(ctx: aether.Context): void;
    private checkEmpty;
    afterDelete(): void;
    private requestRender;
    get lineHeight(): number;
    get totalHeight(): number;
    get visibleLineCount(): number;
    render(): render.Cleanup | undefined;
    private renderScrollbar;
    private renderElements;
}
export declare const REGISTRY: aether.ComponentRegistry;
export {};
//# sourceMappingURL=Log.d.ts.map