import { ComponentOptionsMixin, DefineComponent } from 'vue';
import { Calendar } from 'zmp-core/components/calendar';
import { ColorPicker } from 'zmp-core/components/color-picker';
import { TextEditor } from 'zmp-core/components/text-editor';

declare const Input: DefineComponent<
  {
    type: string;
    name?: string;
    value?: string | number | Array<any> | Date | Object;
    defaultValue?: string | number | Array<any>;
    inputmode?: string;
    placeholder?: string;
    size?: string | number;
    accept?: string | number;
    autocomplete?: string;
    autocorrect?: string;
    autocapitalize?: string;
    spellcheck?: string;
    autofocus?: boolean;
    autosave?: string;
    checked?: boolean;
    disabled?: boolean;
    max?: string | number;
    min?: string | number;
    step?: string | number;
    maxlength?: string | number;
    minlength?: string | number;
    multiple?: boolean;
    readonly?: boolean;
    required?: boolean;
    pattern?: string;
    validate?: boolean | string;
    validateOnBlur?: boolean;
    onValidate?: Function;
    tabindex?: string | number;
    resizable?: boolean;
    minRows?: number;
    maxRows?: number;
    clearButton?: boolean;
    noFormStoreData?: boolean;
    noStoreData?: boolean;
    ignoreStoreData?: boolean;
    errorMessage?: string;
    errorMessageForce?: boolean;
    info?: string;
    label?: string;
    outline?: boolean;
    wrap?: boolean;
    dropdown?: string | boolean;
    calendarParams?: Calendar.Parameters;
    colorPickerParams?: ColorPicker.Parameters;
    textEditorParams?: TextEditor.Parameters;
    inputStyle?: Partial<CSSStyleDeclaration>;
    color?: string;
    colorTheme?: string;
    textColor?: string;
    bgColor?: string;
    borderColor?: string;
    rippleColor?: string;
    themeDark?: boolean;
  },
  () => JSX.Element,
  unknown,
  {},
  {},
  ComponentOptionsMixin,
  ComponentOptionsMixin,
  (
    | 'input'
    | 'focus'
    | 'blur'
    | 'change'
    | 'textarea:resize'
    | 'input:notempty'
    | 'input:empty'
    | 'input:clear'
    | 'texteditor:change'
    | 'calendar:change'
    | 'colorpicker:change'
    | 'update:value'
  )[],
  | 'input'
  | 'focus'
  | 'blur'
  | 'change'
  | 'textarea:resize'
  | 'input:notempty'
  | 'input:empty'
  | 'input:clear'
  | 'texteditor:change'
  | 'calendar:change'
  | 'colorpicker:change'
  | 'update:value'
>;

export default Input;
