import { location, UnknownRecord, xy } from '@synnaxlabs/x';
import { ReactElement } from 'react';
import { Align } from '../../align';
import { Color } from '../../color';
import { Control } from '../../telem/control';
import { Button as CoreButton } from '../button';
import { LabelExtensionProps } from './Labeled';
import { Primitives } from './primitives';
import { Setpoint as CoreSetpoint } from '../setpoint';
import { Toggle } from '../toggle';
import { Value as CoreValue } from '../value';
export interface ControlStateProps extends Omit<Align.SpaceProps, "direction"> {
    showChip?: boolean;
    showIndicator?: boolean;
    chip?: Control.ChipProps;
    indicator?: Control.IndicatorProps;
    orientation?: location.Outer;
}
export declare const ControlState: ({ showChip, showIndicator, indicator, orientation, chip, children, ...props }: ControlStateProps) => ReactElement;
export type SymbolProps<P extends object = UnknownRecord> = P & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: P) => void;
};
export interface ThreeWayValveProps extends Primitives.ThreeWayValveProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const ThreeWayValve: import('react').FC<ThreeWayValveProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: ThreeWayValveProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const ThreeWayValvePreview: (props: ThreeWayValveProps) => ReactElement;
export interface ValveProps extends Primitives.ValveProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const Valve: import('react').FC<ValveProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: ValveProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const ValvePreview: (props: ValveProps) => ReactElement;
export interface SolenoidValveProps extends Primitives.SolenoidValveProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const SolenoidValve: import('react').FC<SolenoidValveProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: SolenoidValveProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const SolenoidValvePreview: (props: SolenoidValveProps) => ReactElement;
export interface FourWayValveProps extends Primitives.FourWayValveProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const FourWayValve: import('react').FC<FourWayValveProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: FourWayValveProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const FourWayValvePreview: (props: FourWayValveProps) => ReactElement;
export interface AngledValveProps extends Primitives.AngledValveProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const AngledValve: import('react').FC<AngledValveProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: AngledValveProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const AngledValvePreview: (props: AngledValveProps) => ReactElement;
export interface PumpProps extends Primitives.PumpProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const Pump: import('react').FC<PumpProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: PumpProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const PumpPreview: (props: PumpProps) => ReactElement;
export interface TankProps extends Primitives.TankProps {
    label?: LabelExtensionProps;
}
export declare const Tank: import('react').FC<TankProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: TankProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const TankPreview: (props: TankProps) => ReactElement;
export interface BoxProps extends Omit<TankProps, "borderRadius"> {
}
export declare const Box: import('react').FC<BoxProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: BoxProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const BoxPreview: (props: BoxProps) => ReactElement;
export interface ReliefValveProps extends Primitives.ReliefValveProps {
    label?: LabelExtensionProps;
}
export declare const ReliefValve: ({ label, onChange, orientation, color, }: SymbolProps<ReliefValveProps>) => ReactElement;
export declare const ReliefValvePreview: (props: ReliefValveProps) => ReactElement;
export interface RegulatorProps extends Primitives.RegulatorProps {
    label?: LabelExtensionProps;
}
export declare const Regulator: ({ label, onChange, orientation, color, }: SymbolProps<RegulatorProps>) => ReactElement;
export declare const RegulatorPreview: (props: RegulatorProps) => ReactElement;
export interface ElectricRegulatorProps extends Primitives.ElectricRegulatorProps {
    label?: LabelExtensionProps;
}
export declare const ElectricRegulator: ({ label, onChange, orientation, color, }: SymbolProps<ElectricRegulatorProps>) => ReactElement;
export declare const ElectricRegulatorPreview: (props: ElectricRegulatorProps) => ReactElement;
export interface BurstDiscProps extends Primitives.BurstDiscProps {
    label?: LabelExtensionProps;
}
export declare const BurstDisc: ({ label, onChange, orientation, color, }: SymbolProps<BurstDiscProps>) => ReactElement;
export declare const BurstDiscPreview: (props: BurstDiscProps) => ReactElement;
export interface CapProps extends Primitives.CapProps {
    label?: LabelExtensionProps;
}
export declare const Cap: ({ label, onChange, orientation, color, }: SymbolProps<CapProps>) => ReactElement;
export declare const CapPreview: (props: CapProps) => ReactElement;
export interface ManualValveProps extends Primitives.ManualValveProps {
    label?: LabelExtensionProps;
}
export declare const ManualValve: ({ label, onChange, orientation, color, }: SymbolProps<ManualValveProps>) => ReactElement;
export declare const ManualValvePreview: (props: ManualValveProps) => ReactElement;
export interface SetpointProps extends Omit<Primitives.SetpointProps, "value" | "onChange">, Omit<CoreSetpoint.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const Setpoint: import('react').FC<SetpointProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: SetpointProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const SetpointPreview: (props: SetpointProps) => ReactElement;
export interface FilterProps extends Primitives.FilterProps {
    label?: LabelExtensionProps;
}
export declare const Filter: ({ label, onChange, orientation, color, }: SymbolProps<FilterProps>) => ReactElement;
export declare const FilterPreview: (props: FilterProps) => ReactElement;
export interface NeedleValveProps extends Primitives.NeedleValveProps {
    label?: LabelExtensionProps;
}
export declare const NeedleValve: ({ label, onChange, orientation, color, }: SymbolProps<NeedleValveProps>) => ReactElement;
export declare const NeedleValvePreview: (props: NeedleValveProps) => ReactElement;
export interface CheckValveProps extends Primitives.CheckValveProps {
    label?: LabelExtensionProps;
}
export declare const CheckValve: ({ label, onChange, orientation, color, }: SymbolProps<CheckValveProps>) => ReactElement;
export declare const CheckValvePreview: (props: CheckValveProps) => ReactElement;
export interface OrificeProps extends Primitives.OrificeProps {
    label?: LabelExtensionProps;
}
export declare const Orifice: ({ label, onChange, orientation, color, }: SymbolProps<OrificeProps>) => ReactElement;
export declare const OrificePreview: (props: OrificeProps) => ReactElement;
export interface AngledReliefValveProps extends Primitives.AngledReliefValveProps {
    label?: LabelExtensionProps;
}
export declare const AngledReliefValve: ({ label, onChange, orientation, color, }: SymbolProps<AngledReliefValveProps>) => ReactElement;
export declare const AngledReliefValvePreview: (props: Primitives.AngledReliefValveProps) => ReactElement;
export interface ValueProps extends Omit<CoreValue.UseProps, "box" | "aetherKey">, Primitives.ValueProps {
    position?: xy.XY;
    label?: LabelExtensionProps;
    color?: Color.Crude;
    textColor?: Color.Crude;
    tooltip?: string[];
}
export declare const Value: import('react').FC<ValueProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: ValueProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const ValuePreview: ({ color }: ValueProps) => ReactElement;
export interface SwitchProps extends Primitives.SwitchProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const Switch: import('react').FC<SwitchProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: SwitchProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const SwitchPreview: (props: SwitchProps) => ReactElement;
export interface ButtonProps extends Omit<Primitives.ButtonProps, "label" | "onClick">, Omit<CoreButton.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const Button: import('react').FC<ButtonProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: ButtonProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const ButtonPreview: ({ label: _, ...props }: ButtonProps) => ReactElement;
export interface ScrewPumpProps extends Primitives.ScrewPumpProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const ScrewPump: import('react').FC<ScrewPumpProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: ScrewPumpProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const ScrewPumpPreview: (props: ScrewPumpProps) => ReactElement;
export interface VacuumPumpProps extends Primitives.VacuumPumpProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const VacuumPump: import('react').FC<VacuumPumpProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: VacuumPumpProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const VacuumPumpPreview: (props: VacuumPumpProps) => ReactElement;
export interface CavityPumpProps extends Primitives.CavityPumpProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const CavityPump: import('react').FC<CavityPumpProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: CavityPumpProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const CavityPumpPreview: (props: CavityPumpProps) => ReactElement;
export interface PistonPumpProps extends Primitives.PistonPumpProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const PistonPump: import('react').FC<PistonPumpProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: PistonPumpProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const PistonPumpPreview: (props: PistonPumpProps) => ReactElement;
export interface StaticMixerProps extends Primitives.StaticMixerProps {
    label?: LabelExtensionProps;
}
export declare const StaticMixer: import('react').FC<StaticMixerProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: StaticMixerProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const StaticMixerPreview: (props: StaticMixerProps) => ReactElement;
export interface RotaryMixerProps extends Primitives.RotaryMixerProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
    control?: ControlStateProps;
}
export declare const RotaryMixer: import('react').FC<RotaryMixerProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: RotaryMixerProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const RotaryMixerPreview: (props: RotaryMixerProps) => ReactElement;
export interface LightProps extends Primitives.LightProps, Omit<Toggle.UseProps, "aetherKey"> {
    label?: LabelExtensionProps;
}
export declare const Light: import('react').FC<LightProps & {
    symbolKey: string;
    position: xy.XY;
    selected: boolean;
    onChange: (value: LightProps) => void;
} & {
    aetherKey?: string;
}>;
export declare const LightPreview: (props: LightProps) => ReactElement;
//# sourceMappingURL=Symbols.d.ts.map