import { Color } from '../../../color';
import { dimensions, location, direction, xy } from '@synnaxlabs/x';
import { ComponentPropsWithoutRef, ReactElement, PropsWithChildren, MouseEventHandler } from 'react';

export interface OrientableProps {
    orientation?: location.Outer;
}
export interface SVGBasedPrimitiveProps extends OrientableProps {
    color?: Color.Crude;
    scale?: number;
}
export interface DivProps extends Omit<ComponentPropsWithoutRef<"div">, "color" | "onResize">, OrientableProps {
}
interface ToggleProps extends Omit<ComponentPropsWithoutRef<"button">, "color" | "value"> {
    triggered?: boolean;
    enabled?: boolean;
    color?: Color.Crude;
}
export interface SmartHandlesProps extends PropsWithChildren<{}>, OrientableProps {
}
export interface InternalSVGProps extends SVGBasedPrimitiveProps, Omit<ComponentPropsWithoutRef<"svg">, "direction" | "color" | "orientation"> {
    dimensions: dimensions.Dimensions;
    color?: Color.Crude;
    scale?: number;
}
export interface FourWayValveProps extends ToggleProps, SVGBasedPrimitiveProps {
}
export declare const FourWayValve: ({ className, orientation, scale, color, ...props }: FourWayValveProps) => ReactElement;
export interface ThreeWayValveProps extends ToggleProps, SVGBasedPrimitiveProps {
}
export declare const ThreeWayValve: ({ color, orientation, scale, ...props }: ThreeWayValveProps) => ReactElement;
export interface ValveProps extends ToggleProps, SVGBasedPrimitiveProps {
}
export declare const Valve: ({ orientation, color, scale, ...props }: ValveProps) => ReactElement;
export interface SolenoidValveProps extends ToggleProps, SVGBasedPrimitiveProps {
    normallyOpen?: boolean;
}
export declare const SolenoidValve: ({ className, color, orientation, normallyOpen, scale, ...props }: SolenoidValveProps) => ReactElement;
export interface ReliefValveProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const ReliefValve: ({ className, orientation, color, scale, ...props }: ReliefValveProps) => ReactElement;
export interface CheckValveProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const CheckValve: ({ className, orientation, color, scale, ...props }: CheckValveProps) => ReactElement;
export interface AngledValveProps extends ToggleProps, SVGBasedPrimitiveProps {
}
export declare const AngledValve: ({ color, className, orientation, scale, ...props }: AngledValveProps) => ReactElement;
export declare const Tag: () => ReactElement;
export interface ReduceFittingProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const ReduceFitting: ({ className, orientation, color, scale, ...props }: ReduceFittingProps) => ReactElement;
export interface PumpProps extends ToggleProps, SVGBasedPrimitiveProps {
}
export declare const Pump: ({ color, className, orientation, scale, ...props }: PumpProps) => ReactElement;
export interface BurstDiscProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const BurstDisc: ({ className, color, orientation, scale, ...props }: BurstDiscProps) => ReactElement;
export interface CapProps extends SVGBasedPrimitiveProps, DivProps {
}
export declare const Cap: ({ className, orientation, color, scale, ...props }: CapProps) => ReactElement;
export interface ManualValveProps extends SVGBasedPrimitiveProps, DivProps {
}
export declare const ManualValve: ({ className, orientation, color, scale, ...props }: ManualValveProps) => ReactElement;
export interface FilterProps extends SVGBasedPrimitiveProps, DivProps {
}
export declare const Filter: ({ className, orientation, color, scale, ...props }: FilterProps) => ReactElement;
type DetailedBorderRadius = Record<location.CornerXYString, xy.XY>;
type BorderRadius = number | Record<direction.Direction, number> | Record<location.CornerXYString, number> | DetailedBorderRadius;
export interface TankProps extends DivProps {
    dimensions?: dimensions.Dimensions;
    borderRadius?: BorderRadius;
    color?: Color.Crude;
    onResize?: (dimensions: dimensions.Dimensions) => void;
}
export declare const Tank: ({ className, dimensions, borderRadius, color, onResize, ...props }: TankProps) => ReactElement;
export interface RegulatorProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const Regulator: ({ className, orientation, color, scale, ...props }: RegulatorProps) => ReactElement;
export interface OrificeProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const Orifice: ({ className, orientation, scale, color, ...props }: OrificeProps) => ReactElement;
export interface NeedleValveProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const NeedleValve: ({ className, orientation, color, scale, ...props }: NeedleValveProps) => ReactElement;
export interface AngledReliefValveProps extends DivProps, SVGBasedPrimitiveProps {
}
export declare const AngledReliefValve: ({ className, orientation, color, scale, ...props }: AngledReliefValveProps) => ReactElement;
export interface ValueProps extends DivProps {
    dimensions?: dimensions.Dimensions;
    color?: Color.Crude;
    units?: string;
}
export declare const Value: ({ className, color, dimensions, orientation, units, children, ...props }: ValueProps) => ReactElement;
export interface SwitchProps extends Omit<ToggleProps, "onClick">, OrientableProps {
    onClick?: MouseEventHandler<HTMLInputElement>;
}
export declare const Switch: ({ enabled, onClick, orientation, }: SwitchProps) => ReactElement;
export interface ButtonProps extends Omit<DivProps, "onClick"> {
    label?: string;
    onClick?: MouseEventHandler<HTMLButtonElement>;
}
export declare const Button: ({ onClick, orientation, label, }: ButtonProps) => ReactElement;
export {};
//# sourceMappingURL=Primitives.d.ts.map