import React from 'react';
import { TooltipProps } from '../Tooltip/Tooltip';
import { ButtonProps } from '../Button/Button.models';
export default function Picker<OptionGeneric extends RequiredOptionKeys<OptionGeneric['value']>, StateGeneric>({ options, state, callout, stateName, customClass, valuesAreBooleans, disabled, }: StateAndStateNameProps<OptionGeneric, StateGeneric>): JSX.Element;
export default function Picker<OptionGeneric extends RequiredOptionKeys<OptionGeneric['value']>, StateGeneric>({ options, selected, callout, customClass, valuesAreBooleans, disabled, }: SelectedProps<OptionGeneric, StateGeneric>): JSX.Element;
/**
 *  pass in an array of options to select that will be mapped out and styled for you
 *  - then pass in what value is currently selected in state or pass in a state object
 *  w/ fieldName and the component will show that option as selected - state needs to
 *  be managed outside of this component and in the file you are consuming it in.
 **/
interface RequiredOptionKeys<ValueTypeGeneric> {
    id?: number;
    text?: string;
    value: ValueTypeGeneric;
}
type Selected = string | number | boolean;
type PickerBaseProps<OptionGeneric extends RequiredOptionKeys<OptionGeneric['value']>> = {
    options: OptionGeneric[];
    customClass?: string;
    valuesAreBooleans?: boolean;
    disabled?: boolean;
    labelText?: string;
    rightLabel?: React.ReactNode;
    labelTooltip?: Omit<TooltipProps, 'children'>;
    required?: boolean;
    error?: boolean;
};
type StateAndStateNameCallout<Param2Generic> = (param1: string, param2: Param2Generic) => void;
type StateAndStateNameProps<OptionGeneric extends RequiredOptionKeys<OptionGeneric['value']>, StateGeneric> = PickerBaseProps<OptionGeneric> & {
    state: StateGeneric;
    stateName: string;
    selected?: Selected;
    callout: StateAndStateNameCallout<OptionGeneric['value']>;
    tooltip?: ButtonProps['tooltip'];
};
type SelectedPropsCallout<Param1Generic> = (param1: Param1Generic) => void;
type SelectedProps<OptionGeneric extends RequiredOptionKeys<OptionGeneric['value']>, StateGeneric> = PickerBaseProps<OptionGeneric> & {
    state?: StateGeneric;
    stateName?: string;
    selected?: Selected;
    callout: SelectedPropsCallout<OptionGeneric['value']>;
    tooltip?: ButtonProps['tooltip'];
};
export type PickerProps<OptionGeneric extends RequiredOptionKeys<OptionGeneric['value']>, StateGeneric> = SelectedProps<OptionGeneric, StateGeneric> | StateAndStateNameProps<OptionGeneric, StateGeneric>;
export {};
