import { TimeStamp } from "@synnaxlabs/x";
import { z } from "zod";
import { aether } from '../../aether/aether';
import { type CrudeSpec } from './types';
export declare const aggregatorStateZ: z.ZodObject<{
    statuses: z.ZodArray<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.ZodObject<{
            value: z.ZodBigInt;
        }, "strip", z.ZodTypeAny, {
            value: bigint;
        }, {
            value: bigint;
        }>, TimeStamp, {
            value: bigint;
        }>, z.ZodEffects<z.ZodString, TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, TimeStamp, Number>, z.ZodEffects<z.ZodNumber, TimeStamp, number>, z.ZodType<TimeStamp, z.ZodTypeDef, TimeStamp>]>;
        data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        message: string;
        key: string;
        time: TimeStamp;
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    }, {
        message: string;
        key: string;
        time: string | number | Number | TimeStamp | {
            value: bigint;
        } | (string & Number) | (string & TimeStamp) | (string & {
            value: bigint;
        }) | (number & Number) | (number & TimeStamp) | (number & {
            value: bigint;
        }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
            value: bigint;
        }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
            value: bigint;
        } & string) | ({
            value: bigint;
        } & number) | ({
            value: bigint;
        } & Number);
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    statuses: {
        message: string;
        key: string;
        time: TimeStamp;
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    }[];
}, {
    statuses: {
        message: string;
        key: string;
        time: string | number | Number | TimeStamp | {
            value: bigint;
        } | (string & Number) | (string & TimeStamp) | (string & {
            value: bigint;
        }) | (number & Number) | (number & TimeStamp) | (number & {
            value: bigint;
        }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
            value: bigint;
        }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
            value: bigint;
        } & string) | ({
            value: bigint;
        } & number) | ({
            value: bigint;
        } & Number);
        variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
        description?: string | undefined;
        data?: Record<string, unknown> | undefined;
    }[];
}>;
export type Aggregate = (spec: CrudeSpec) => void;
export declare class Aggregator extends aether.Composite<typeof aggregatorStateZ> {
    static readonly TYPE: string;
    schema: z.ZodObject<{
        statuses: z.ZodArray<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.ZodObject<{
                value: z.ZodBigInt;
            }, "strip", z.ZodTypeAny, {
                value: bigint;
            }, {
                value: bigint;
            }>, TimeStamp, {
                value: bigint;
            }>, z.ZodEffects<z.ZodString, TimeStamp, string>, z.ZodEffects<z.ZodType<Number, z.ZodTypeDef, Number>, TimeStamp, Number>, z.ZodEffects<z.ZodNumber, TimeStamp, number>, z.ZodType<TimeStamp, z.ZodTypeDef, TimeStamp>]>;
            data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, "strip", z.ZodTypeAny, {
            message: string;
            key: string;
            time: TimeStamp;
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        }, {
            message: string;
            key: string;
            time: string | number | Number | TimeStamp | {
                value: bigint;
            } | (string & Number) | (string & TimeStamp) | (string & {
                value: bigint;
            }) | (number & Number) | (number & TimeStamp) | (number & {
                value: bigint;
            }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
                value: bigint;
            }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
                value: bigint;
            } & string) | ({
                value: bigint;
            } & number) | ({
                value: bigint;
            } & Number);
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        statuses: {
            message: string;
            key: string;
            time: TimeStamp;
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        }[];
    }, {
        statuses: {
            message: string;
            key: string;
            time: string | number | Number | TimeStamp | {
                value: bigint;
            } | (string & Number) | (string & TimeStamp) | (string & {
                value: bigint;
            }) | (number & Number) | (number & TimeStamp) | (number & {
                value: bigint;
            }) | (Number & string) | (Number & number) | (Number & TimeStamp) | (Number & {
                value: bigint;
            }) | (TimeStamp & string) | (TimeStamp & number) | (TimeStamp & Number) | ({
                value: bigint;
            } & string) | ({
                value: bigint;
            } & number) | ({
                value: bigint;
            } & Number);
            variant: "disabled" | "loading" | "error" | "success" | "warning" | "info";
            description?: string | undefined;
            data?: Record<string, unknown> | undefined;
        }[];
    }>;
    afterUpdate(): Promise<void>;
    add(spec: CrudeSpec): void;
}
export declare const useAggregate: (ctx: aether.Context) => Aggregate;
export declare const useOptionalAggregate: (ctx: aether.Context) => Aggregate;
export declare const REGISTRY: aether.ComponentRegistry;
