import { z } from 'zod';
import { status } from '../../status/aether';
import { Factory } from './factory';
import { BooleanSink, BooleanSinkSpec, BooleanSource, BooleanSourceSpec, MultiSourceTransformer, NumberSourceSpec, Spec, StringSourceSpec, Telem, UnarySinkTransformer, UnarySourceTransformer } from './telem';
export declare class TransformerFactory implements Factory {
    type: string;
    create(spec: Spec): Telem | null;
}
declare const setpointProps: z.ZodObject<{
    truthy: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    falsy: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, "strip", z.ZodTypeAny, {
    truthy: number;
    falsy: number;
}, {
    truthy?: number | undefined;
    falsy?: number | undefined;
}>;
export type SetpointProps = z.infer<typeof setpointProps>;
export declare const setpoint: (props: SetpointProps) => BooleanSinkSpec;
export declare class SetPoint extends UnarySinkTransformer<boolean, number, typeof setpointProps> implements BooleanSink {
    static readonly TYPE = "boolean-numeric-converter-sink";
    static readonly propsZ: z.ZodObject<{
        truthy: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        falsy: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        truthy: number;
        falsy: number;
    }, {
        truthy?: number | undefined;
        falsy?: number | undefined;
    }>;
    schema: z.ZodObject<{
        truthy: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        falsy: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        truthy: number;
        falsy: number;
    }, {
        truthy?: number | undefined;
        falsy?: number | undefined;
    }>;
    transform(value: boolean): number;
}
declare const withinBoundsProps: z.ZodObject<{
    trueBound: z.ZodObject<{
        lower: z.ZodNumber;
        upper: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        lower: number;
        upper: number;
    }, {
        lower: number;
        upper: number;
    }>;
}, "strip", z.ZodTypeAny, {
    trueBound: {
        lower: number;
        upper: number;
    };
}, {
    trueBound: {
        lower: number;
        upper: number;
    };
}>;
export type WithinBoundsProps = z.infer<typeof withinBoundsProps>;
export declare const withinBounds: (props: WithinBoundsProps) => BooleanSourceSpec;
export declare class WithinBounds extends UnarySourceTransformer<number, boolean, typeof withinBoundsProps> implements BooleanSource {
    static readonly TYPE = "boolean-source";
    static readonly propsZ: z.ZodObject<{
        trueBound: z.ZodObject<{
            lower: z.ZodNumber;
            upper: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            lower: number;
            upper: number;
        }, {
            lower: number;
            upper: number;
        }>;
    }, "strip", z.ZodTypeAny, {
        trueBound: {
            lower: number;
            upper: number;
        };
    }, {
        trueBound: {
            lower: number;
            upper: number;
        };
    }>;
    schema: z.ZodObject<{
        trueBound: z.ZodObject<{
            lower: z.ZodNumber;
            upper: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            lower: number;
            upper: number;
        }, {
            lower: number;
            upper: number;
        }>;
    }, "strip", z.ZodTypeAny, {
        trueBound: {
            lower: number;
            upper: number;
        };
    }, {
        trueBound: {
            lower: number;
            upper: number;
        };
    }>;
    curr: boolean | null;
    protected shouldNotify(value: number): boolean;
    protected transform(value: number): boolean;
}
declare const meanProps: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
export declare class Mean extends MultiSourceTransformer<number, number, typeof meanProps> {
    static readonly TYPE = "mean";
    static readonly propsZ: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    schema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    protected transform(values: Record<string, number>): number;
}
export declare const mean: (props: z.input<typeof meanProps>) => BooleanSourceSpec;
export declare const booleanStatusProps: z.ZodObject<{
    trueVariant: z.ZodDefault<z.ZodOptional<z.ZodEnum<["success", "error", "warning", "info", "loading", "disabled", "secondary"]>>>;
}, "strip", z.ZodTypeAny, {
    trueVariant: "disabled" | "loading" | "error" | "secondary" | "warning" | "success" | "info";
}, {
    trueVariant?: "disabled" | "loading" | "error" | "secondary" | "warning" | "success" | "info" | undefined;
}>;
export declare class BooleanStatus extends UnarySourceTransformer<status.Spec, boolean, typeof booleanStatusProps> {
    static readonly TYPE = "boolean-status";
    static readonly propsZ: z.ZodObject<{
        trueVariant: z.ZodDefault<z.ZodOptional<z.ZodEnum<["success", "error", "warning", "info", "loading", "disabled", "secondary"]>>>;
    }, "strip", z.ZodTypeAny, {
        trueVariant: "disabled" | "loading" | "error" | "secondary" | "warning" | "success" | "info";
    }, {
        trueVariant?: "disabled" | "loading" | "error" | "secondary" | "warning" | "success" | "info" | undefined;
    }>;
    schema: z.ZodObject<{
        trueVariant: z.ZodDefault<z.ZodOptional<z.ZodEnum<["success", "error", "warning", "info", "loading", "disabled", "secondary"]>>>;
    }, "strip", z.ZodTypeAny, {
        trueVariant: "disabled" | "loading" | "error" | "secondary" | "warning" | "success" | "info";
    }, {
        trueVariant?: "disabled" | "loading" | "error" | "secondary" | "warning" | "success" | "info" | undefined;
    }>;
    protected transform(value: status.Spec): boolean;
}
export declare const booleanStatus: (props: z.input<typeof booleanStatusProps>) => BooleanSourceSpec;
export declare const stringifyNumberProps: z.ZodObject<{
    precision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    prefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    suffix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    prefix: string;
    precision: number;
    suffix: string;
}, {
    prefix?: string | undefined;
    precision?: number | undefined;
    suffix?: string | undefined;
}>;
export declare class StringifyNumber extends UnarySourceTransformer<number, string, typeof stringifyNumberProps> {
    static readonly TYPE = "stringify-number";
    static readonly propsZ: z.ZodObject<{
        precision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        prefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        suffix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        prefix: string;
        precision: number;
        suffix: string;
    }, {
        prefix?: string | undefined;
        precision?: number | undefined;
        suffix?: string | undefined;
    }>;
    schema: z.ZodObject<{
        precision: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
        prefix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
        suffix: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    }, "strip", z.ZodTypeAny, {
        prefix: string;
        precision: number;
        suffix: string;
    }, {
        prefix?: string | undefined;
        precision?: number | undefined;
        suffix?: string | undefined;
    }>;
    protected transform(value: number): string;
}
export declare const stringifyNumber: (props: z.input<typeof stringifyNumberProps>) => StringSourceSpec;
export declare const rollingAverageProps: z.ZodObject<{
    windowSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
}, "strip", z.ZodTypeAny, {
    windowSize: number;
}, {
    windowSize?: number | undefined;
}>;
export declare class RollingAverage extends UnarySourceTransformer<number, number, typeof rollingAverageProps> {
    static readonly TYPE = "rolling-average";
    static readonly propsZ: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
    schema: z.ZodObject<{
        windowSize: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
    }, "strip", z.ZodTypeAny, {
        windowSize: number;
    }, {
        windowSize?: number | undefined;
    }>;
    private values;
    protected transform(value: number): number;
    protected shouldNotify(value: number): boolean;
}
export declare const rollingAverage: (props: z.input<typeof rollingAverageProps>) => NumberSourceSpec;
export {};
//# sourceMappingURL=transformers.d.ts.map