/// <reference types="react" />
import { ReactElement } from '../../@declares';
import { Records } from 'jmini';
import { InputTypes } from '.';
declare namespace Drum {
    type Input<T = Value> = InputTypes.CoreInput<T> & React.DOMAttributes<HTMLInputElement> & {
        tabIndex?: number;
        id?: string;
        disabled?: boolean;
        isHorizontal?: boolean;
        value?: T;
        options: (Option<T> | null)[];
    };
    type Value<T = any> = T extends infer V ? V : string | number | boolean | Records | void | null;
    type Option<T = Value> = {
        type?: 'selector';
        id?: string;
        value: T;
        label?: ReactElement;
    } | {
        type: 'label';
        id?: string;
        value?: T;
        label?: ReactElement;
    };
    type WrapperStates = {
        rootStates: Input & {
            value: Value[];
        };
        val_status: InputTypes.Status<Value>;
        set_status: React.Dispatch<React.SetStateAction<InputTypes.Status>>;
    };
    type Component = {
        <T = Value>(p: Input<Value<T>>): React.JSX.Element;
    };
}
declare const Drum: Drum.Component;
export { Drum, Drum as default };
