import { ComponentOptionsMixin, DefineComponent } from 'vue';
import { Router } from 'zmp-core/modules/router';
import { Icon } from 'zmp-core/types';

declare const Button: DefineComponent<
  {
    typeName?: 'primary' | 'secondary' | 'destructive' | 'tertiary' | 'ghost';
    responsive?: boolean;
    text?: string;
    tabLink?: boolean | string;
    tabLinkActive?: boolean;
    type?: string;
    target?: string;
    round?: boolean;
    roundMd?: boolean;
    roundIos?: boolean;
    roundAurora?: boolean;
    fill?: boolean;
    fillMd?: boolean;
    fillIos?: boolean;
    fillAurora?: boolean;
    large?: boolean;
    largeMd?: boolean;
    largeIos?: boolean;
    largeAurora?: boolean;
    small?: boolean;
    smallMd?: boolean;
    smallIos?: boolean;
    smallAurora?: boolean;
    raised?: boolean;
    raisedMd?: boolean;
    raisedIos?: boolean;
    raisedAurora?: boolean;
    outline?: boolean;
    outlineMd?: boolean;
    outlineIos?: boolean;
    outlineAurora?: boolean;
    active?: boolean;
    disabled?: boolean;
    tooltip?: string;
    tooltipTrigger?: string;
    preloader?: boolean;
    preloaderSize?: number | string;
    preloaderColor?: string;
    loading?: boolean;
    href?: string | boolean;
    iconZmp?: Icon.IconZMP;
    iconMaterial?: string;
    iconF7?: string;
    iconIos?: string;
    iconMd?: string;
    iconAurora?: string;
    iconColor?: string;
    iconSize?: string | number;
    color?: string;
    colorTheme?: string;
    textColor?: string;
    bgColor?: string;
    borderColor?: string;
    rippleColor?: string;
    themeDark?: boolean;
    searchbarEnable?: boolean | string;
    searchbarDisable?: boolean | string;
    searchbarClear?: boolean | string;
    searchbarToggle?: boolean | string;
    panelOpen?: boolean | string;
    panelClose?: boolean | string;
    panelToggle?: boolean | string;
    popupOpen?: boolean | string;
    popupClose?: boolean | string;
    actionsOpen?: boolean | string;
    actionsClose?: boolean | string;
    popoverOpen?: boolean | string;
    popoverClose?: boolean | string;
    loginScreenOpen?: boolean | string;
    loginScreenClose?: boolean | string;
    sheetOpen?: boolean | string;
    sheetClose?: boolean | string;
    sortableEnable?: boolean | string;
    sortableDisable?: boolean | string;
    sortableToggle?: boolean | string;
    cardOpen?: boolean | string;
    cardPreventOpen?: boolean | string;
    cardClose?: boolean | string;
    menuClose?: boolean | string;
    back?: boolean;
    external?: boolean;
    force?: boolean;
    animate?: boolean;
    ignoreCache?: boolean;
    reloadCurrent?: boolean;
    reloadAll?: boolean;
    reloadPrevious?: boolean;
    reloadDetail?: boolean;
    routeTabId?: string;
    view?: string;
    routeProps?: any;
    preventRouter?: boolean;
    transition?: Router.Transition;
    openIn?: string;
  },
  () => JSX.Element,
  unknown,
  {},
  {},
  ComponentOptionsMixin,
  ComponentOptionsMixin
>;

export default Button;
