import * as _yamada_ui_motion from '@yamada-ui/motion';
import { MotionProps } from '@yamada-ui/motion';
import { ThemeProps } from '@yamada-ui/core';
import { Merge } from '@yamada-ui/utils';
import { ReactElement } from 'react';

type RotateIdent = "from" | "to";
interface RotateOptions {
    /**
     * Passing React elements to "from" is required.
     */
    from: ReactElement;
    /**
     * Passing React elements to "to" is required.
     */
    to: ReactElement;
    /**
     * You can set the initial state.
     *
     * @default 'from'
     */
    defaultValue?: RotateIdent;
    /**
     *　The animation delay.
     *
     * @default 0
     */
    delay?: number;
    /**
     * If `true`, the component is disabled.
     *
     * @default false
     */
    disabled?: boolean;
    /**
     * The animation duration.
     *
     * @default 0.4
     */
    duration?: number;
    /**
     * If `true`, the component is disabled.
     *
     * @default false
     * @deprecated Use `disabled` instead.
     */
    isDisabled?: boolean;
    /**
     * If `true`, the component is readonly.
     *
     * @default false
     * @deprecated Use `readOnly` instead.
     */
    isReadOnly?: boolean;
    /**
     * If `true`, the component is readonly.
     *
     * @default false
     */
    readOnly?: boolean;
    /**
     * The animation rotation.
     *
     * @default 45
     */
    rotate?: number;
    /**
     * Use this when you want to control the animation from outside the component.
     */
    value?: RotateIdent;
    /**
     * This is a callback function that is called when the animation state changes.
     */
    onChange?: (value: RotateIdent) => void;
}
interface RotateProps extends Merge<MotionProps<"button">, RotateOptions>, ThemeProps<"Rotate"> {
}
/**
 * `Rotate` is an animation component that alternately rotates two elements as they switch.
 *
 * @see Docs https://yamada-ui.com/components/transitions/rotate
 */
declare const Rotate: _yamada_ui_motion.MotionComponent<"button", RotateProps>;

export { Rotate, type RotateIdent, type RotateProps };
