//#region src/hooks/use-disclosure/use-disclosure.d.ts
type DisclosureCallback<Y, M> = [Y] extends [never] ? () => M : undefined extends Y ? (value?: Y) => M : (value: Y) => M;
interface UseDisclosureProps<Y = never, M = never, D = Promise<void> | void, H = Promise<void> | void> {
  /**
   * If `true`, the element will be initially opened.
   */
  defaultOpen?: boolean;
  /**
   * If `true`, the element will be opened.
   */
  open?: boolean;
  /**
   * The timing of the open and close.
   *
   * @default 'after'
   */
  timing?: "after" | "before";
  /**
   * Callback invoked to close the element.
   */
  onClose?: DisclosureCallback<M, H>;
  /**
   * Callback invoked to open the element.
   */
  onOpen?: DisclosureCallback<Y, D>;
}
/**
 * `useDisclosure` is a custom hook that helps handle common open/close or toggle scenarios.
 * It can be used to control components such as `Modal`, `Dialog`, `Drawer`, etc.
 *
 * @see https://yamada-ui.com/docs/hooks/use-disclosure
 */
declare const useDisclosure: <Y = never, M = never, D = Promise<void> | void, H = Promise<void> | void>({
  defaultOpen,
  open: controlledOpen,
  timing,
  onClose: onCloseProp,
  onOpen: onOpenProp
}?: UseDisclosureProps<Y, M, D, H>) => {
  open: boolean;
  onClose: DisclosureCallback<M, H>;
  onOpen: DisclosureCallback<Y, D>;
  onToggle: DisclosureCallback<M, H> | DisclosureCallback<Y, D>;
};
type UseDisclosureReturn<Y = never, M = never, D = Promise<void> | void, H = Promise<void> | void> = ReturnType<typeof useDisclosure<Y, M, D, H>>;
//#endregion
export { DisclosureCallback, UseDisclosureProps, UseDisclosureReturn, useDisclosure };
//# sourceMappingURL=use-disclosure.d.ts.map