import { status } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../aether/aether';
import { Adder, ErrorHandler } from './errorHandler';
import { AsyncErrorHandler } from '../Aggregator';
export declare const aggregatorStateZ: z.ZodObject<{
    statuses: z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        variant: typeof status.variantZ;
        message: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        time: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
        details: z.ZodOptional<z.ZodUnknown>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export interface AggregatorState extends z.infer<typeof aggregatorStateZ> {
}
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: typeof status.variantZ;
            message: z.ZodString;
            description: z.ZodOptional<z.ZodString>;
            time: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
                value: z.ZodBigInt;
            }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
                value: bigint;
            }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number, number] | [number] | [number, number, number]>>]>;
            details: z.ZodOptional<z.ZodUnknown>;
        }, z.core.$strip>>;
    }, z.core.$strip>;
    afterUpdate(ctx: aether.Context): void;
    private add;
}
export declare const useAdder: (ctx: aether.Context) => Adder;
export declare const useOptionalAdder: (ctx: aether.Context) => Adder;
export declare const useErrorHandler: (ctx: aether.Context) => ErrorHandler;
export declare const useAsyncErrorHandler: (ctx: aether.Context) => AsyncErrorHandler;
export declare const REGISTRY: aether.ComponentRegistry;
//# sourceMappingURL=aggregator.d.ts.map