import type { DefineComponent } from "vue";

/**
 * @interface DeactivateMenu - function that sets the value of an input
 * @function DeactivateMenu(value:void):void
 */
interface DeactivateMenu {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  (value: void): void;
}
export type { DeactivateMenu };

/**
 * @interface ToggleMenu - function that sets the value of an input
 * @function ToggleMenu(value:void):void
 */
interface ToggleMenu {
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  (option?: boolean): void;
}

export type { ToggleMenu };

/**
 * @interface TopMenuContainerProps - Container props
 */
interface TopMenuContainerProps {
  /** wether the menu is currently active or not */
  active?: boolean;
  /** the breakpoint to show the toggle */
  breakpoint?: number;
  /** position the toggle left instead of right */
  leftToggle?: boolean;
  /** fix the menu to the top of the page */
  fixed?: boolean;
}
/**
 * @interface TopMenuContainerProps - Container props
 */
interface TopMenuElementProps {
  /** wether the element is currently active or not */
  active?: boolean;
}

export type { TopMenuContainerProps, TopMenuElementProps };

declare module "@toolsie/top-menu" {
  const TopMenuContainer: DefineComponent<TopMenuContainerProps>;
  const TopMenuElement: DefineComponent<TopMenuElementProps>;
}

declare module "*.ts";
