import { z } from "zod";
import { aether } from '../../../aether/aether';
import { color } from '../../../color/core';
import { telem } from '../../aether';
export declare const indicatorStateZ: z.ZodObject<{
    statusSource: z.ZodDefault<z.ZodOptional<z.ZodObject<{
        type: z.ZodString;
        props: z.ZodAny;
        variant: z.ZodLiteral<"source">;
        transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
        valueType: z.ZodLiteral<"status">;
    }, "strip", z.ZodTypeAny, {
        type: string;
        valueType: "status";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    }, {
        type: string;
        valueType: "status";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    }>>>;
    colorSource: z.ZodDefault<z.ZodOptional<z.ZodObject<{
        type: z.ZodString;
        props: z.ZodAny;
        variant: z.ZodLiteral<"source">;
        transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
        valueType: z.ZodLiteral<"color">;
    }, "strip", z.ZodTypeAny, {
        type: string;
        valueType: "color";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    }, {
        type: string;
        valueType: "color";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    }>>>;
    status: z.ZodObject<{
        key: z.ZodString;
        variant: z.ZodEnum<["success", "error", "warning", "info", "loading", "disabled"]>;
        message: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        time: z.ZodUnion<[z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import("@synnaxlabs/x").TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import("@synnaxlabs/x").TimeStamp, number>, z.ZodType<import("@synnaxlabs/x").TimeStamp, z.ZodTypeDef, import("@synnaxlabs/x").TimeStamp>]>;
        data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        message: string;
        key: string;
        time: import("@synnaxlabs/x").TimeStamp;
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    }, {
        message: string;
        key: string;
        time: (number | Number | import("@synnaxlabs/x").TimeStamp) & (number | Number | import("@synnaxlabs/x").TimeStamp | undefined);
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    }>;
    color: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodType<color.Color, z.ZodTypeDef, color.Color>, z.ZodObject<{
        rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
    }, "strip", z.ZodTypeAny, {
        rgba255: [number, number, number, number];
    }, {
        rgba255: [number, number, number, number];
    }>]>, color.Color, string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number]>>;
}, "strip", z.ZodTypeAny, {
    status: {
        message: string;
        key: string;
        time: import("@synnaxlabs/x").TimeStamp;
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    };
    statusSource: {
        type: string;
        valueType: "status";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    };
    colorSource: {
        type: string;
        valueType: "color";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    };
    color?: color.Color | undefined;
}, {
    status: {
        message: string;
        key: string;
        time: (number | Number | import("@synnaxlabs/x").TimeStamp) & (number | Number | import("@synnaxlabs/x").TimeStamp | undefined);
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    };
    statusSource?: {
        type: string;
        valueType: "status";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    } | undefined;
    colorSource?: {
        type: string;
        valueType: "color";
        variant: "source";
        props?: any;
        transfer?: ArrayBuffer[] | undefined;
    } | undefined;
    color?: string | [number, number, number, number] | {
        rgba255: [number, number, number, number];
    } | color.Color | [number, number, number] | undefined;
}>;
interface InternalState {
    statusSource: telem.StatusSource;
    colorSource: telem.ColorSource;
}
export declare class Indicator extends aether.Leaf<typeof indicatorStateZ, InternalState> {
    static readonly TYPE = "Indicator";
    schema: z.ZodObject<{
        statusSource: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            type: z.ZodString;
            props: z.ZodAny;
            variant: z.ZodLiteral<"source">;
            transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
            valueType: z.ZodLiteral<"status">;
        }, "strip", z.ZodTypeAny, {
            type: string;
            valueType: "status";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }, {
            type: string;
            valueType: "status";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }>>>;
        colorSource: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            type: z.ZodString;
            props: z.ZodAny;
            variant: z.ZodLiteral<"source">;
            transfer: z.ZodOptional<z.ZodArray<z.ZodType<ArrayBuffer, z.ZodTypeDef, ArrayBuffer>, "many">>;
            valueType: z.ZodLiteral<"color">;
        }, "strip", z.ZodTypeAny, {
            type: string;
            valueType: "color";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }, {
            type: string;
            valueType: "color";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        }>>>;
        status: z.ZodObject<{
            key: z.ZodString;
            variant: z.ZodEnum<["success", "error", "warning", "info", "loading", "disabled"]>;
            message: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            time: z.ZodUnion<[z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, import("@synnaxlabs/x").TimeStamp, Number>, z.ZodEffects<z.ZodNumber, import("@synnaxlabs/x").TimeStamp, number>, z.ZodType<import("@synnaxlabs/x").TimeStamp, z.ZodTypeDef, import("@synnaxlabs/x").TimeStamp>]>;
            data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, "strip", z.ZodTypeAny, {
            message: string;
            key: string;
            time: import("@synnaxlabs/x").TimeStamp;
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        }, {
            message: string;
            key: string;
            time: (number | Number | import("@synnaxlabs/x").TimeStamp) & (number | Number | import("@synnaxlabs/x").TimeStamp | undefined);
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        }>;
        color: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodString, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>, z.ZodType<color.Color, z.ZodTypeDef, color.Color>, z.ZodObject<{
            rgba255: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
        }, "strip", z.ZodTypeAny, {
            rgba255: [number, number, number, number];
        }, {
            rgba255: [number, number, number, number];
        }>]>, color.Color, string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number]>>;
    }, "strip", z.ZodTypeAny, {
        status: {
            message: string;
            key: string;
            time: import("@synnaxlabs/x").TimeStamp;
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        };
        statusSource: {
            type: string;
            valueType: "status";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        };
        colorSource: {
            type: string;
            valueType: "color";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        };
        color?: color.Color | undefined;
    }, {
        status: {
            message: string;
            key: string;
            time: (number | Number | import("@synnaxlabs/x").TimeStamp) & (number | Number | import("@synnaxlabs/x").TimeStamp | undefined);
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        };
        statusSource?: {
            type: string;
            valueType: "status";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        } | undefined;
        colorSource?: {
            type: string;
            valueType: "color";
            variant: "source";
            props?: any;
            transfer?: ArrayBuffer[] | undefined;
        } | undefined;
        color?: string | [number, number, number, number] | {
            rgba255: [number, number, number, number];
        } | color.Color | [number, number, number] | undefined;
    }>;
    stopListeningStatus?: () => void;
    stopListeningColor?: () => void;
    afterUpdate(): Promise<void>;
    afterDelete(): Promise<void>;
    private internalAfterDelete;
    render(): Promise<void>;
    updateState(): Promise<void>;
}
export {};
