import type { CSSTransitionClassNames, CSSTransitionClassNamesObject, CSSTransitionHookReturnValue, PreconfiguredCSSTransitionOptions, TransitionTimeoutObject } from "./types.js";
/**
 * The default {@link CSSTransitionClassNames} for a horizontal scale
 * transition.
 *
 * @remarks
 * \@since 2.0.0
 * \@since 6.0.0 The class names were updated to be prefixed with
 * `rmd-scale-transition`
 */
export declare const SCALE_CLASSNAMES: Readonly<CSSTransitionClassNamesObject>;
/**
 * The default {@link CSSTransitionClassNames} for a vertical scale transition.
 *
 * @remarks
 * \@since 2.0.0
 * \@since 6.0.0 The class names were updated to be prefixed with
 * `rmd-scale-y-transition` and merged with the {@link SCALE_CLASSNAMES}
 */
export declare const SCALE_Y_CLASSNAMES: Readonly<CSSTransitionClassNamesObject>;
/**
 * The default {@link TransitionTimeout} to use for horizontal and vertical
 * scale transitions.
 *
 * @remarks \@since 2.0.0
 */
export declare const SCALE_TIMEOUT: Readonly<TransitionTimeoutObject>;
/**
 * @typeParam E - The HTMLElement type used or the ref required for the
 * transition.
 * @remarks \@since 4.0.0
 */
export interface ScaleTransitionHookOptions<E extends HTMLElement> extends PreconfiguredCSSTransitionOptions<E> {
    /**
     * Boolean if the scale transition should be vertical instead of horizontal.
     * This really only changes the default value for the {@link classNames}.
     *
     * @defaultValue `false`
     */
    vertical?: boolean;
    /**
     * @see {@link PreconfiguredCSSTransitionOptions.temporary}
     * @defaultValue `true`
     */
    temporary?: boolean;
    /**
     * @see {@link vertical}
     * @see {@link SCALE_CLASSNAMES}
     * @see {@link SCALE_Y_CLASSNAMES}
     * @defaultValue `vertical ? SCALE_Y_CLASSNAMES : SCALE_CLASSNAMES`
     */
    classNames?: CSSTransitionClassNames;
}
/**
 * Implements a scale transition that should generally be used for temporary
 * elements that are positioned via `position: absolute` or `position: fixed`.
 *
 * @example
 * Dropdown Menu Example
 * ```tsx
 * import { ReactElement, useRef, useState } from "react";
 * import { Button, useFixedPositioning, useScaleTransition } from "@react-md/core";
 *
 * function Example(): ReactElement {
 *   const buttonRef = useRef<HTMLButtonElement>(null);
 *   const [transitionIn, setTransitionIn] = useState(false);
 *   const { style, transitionOptions } = useFixedPositioning({
 *     fixedTo: buttonRef,
 *   });
 *   const { elementProps, rendered } = useScaleTransition({
 *     ...transitionOptions,
 *     transitionIn,
 *     vertical: true,
 *   });
 *
 *   return (
 *     <>
 *       <Button ref={buttonRef} onClick={() => setTransitionIn(!transitionIn)}>
 *         Toggle
 *       </Button>
 *       {rendered && (
 *         <div {...elementProps} style={style}>
 *           Some content within a menu
 *         </div>
 *       )}
 *     </>
 *   );
 * }
 * ```
 *
 * @typeParam E - The HTMLElement type used or the ref required for the
 * transition.
 * @remarks \@since 4.0.0
 */
export declare function useScaleTransition<E extends HTMLElement>(options: ScaleTransitionHookOptions<E>): CSSTransitionHookReturnValue<E>;
