import { Destructor, status } from '@synnaxlabs/x';
import { z } from 'zod';
import { aether } from '../../../aether/aether';
import { telem } from '../../aether';
export declare const chipStatusDetailsZ: z.ZodDefault<z.ZodObject<{
    authority: z.ZodOptional<z.ZodInt>;
    valid: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strip>>;
export type ChipStatusDetails = z.infer<typeof chipStatusDetailsZ>;
export declare const chipStateZ: z.ZodObject<{
    triggered: z.ZodBoolean;
    status: 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.ZodDefault<z.ZodObject<{
            authority: z.ZodOptional<z.ZodInt>;
            valid: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>>;
    }, z.core.$strip>;
    sink: z.ZodDefault<z.ZodOptional<z.ZodObject<{
        type: z.ZodString;
        props: z.ZodAny;
        transfer: z.ZodOptional<z.ZodArray<z.ZodCustom<ArrayBuffer, ArrayBuffer>>>;
        variant: z.ZodLiteral<"sink">;
        valueType: z.ZodLiteral<"boolean">;
    }, z.core.$strip>>>;
    source: 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<"status">;
    }, z.core.$strip>>>;
}, z.core.$strip>;
interface InternalState {
    source: telem.StatusSource<ChipStatusDetails>;
    sink: telem.BooleanSink;
    stopListening: Destructor;
}
export declare class Chip extends aether.Leaf<typeof chipStateZ, InternalState> {
    static readonly TYPE = "Chip";
    schema: z.ZodObject<{
        triggered: z.ZodBoolean;
        status: 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.ZodDefault<z.ZodObject<{
                authority: z.ZodOptional<z.ZodInt>;
                valid: z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strip>>;
        }, z.core.$strip>;
        sink: z.ZodDefault<z.ZodOptional<z.ZodObject<{
            type: z.ZodString;
            props: z.ZodAny;
            transfer: z.ZodOptional<z.ZodArray<z.ZodCustom<ArrayBuffer, ArrayBuffer>>>;
            variant: z.ZodLiteral<"sink">;
            valueType: z.ZodLiteral<"boolean">;
        }, z.core.$strip>>>;
        source: 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<"status">;
        }, z.core.$strip>>>;
    }, z.core.$strip>;
    afterUpdate(ctx: aether.Context): void;
    private updateEnabledState;
    afterDelete(): void;
    render(): void;
}
export {};
//# sourceMappingURL=chip.d.ts.map