/// <reference types="react" />
import { AnimationChild } from './AnimationChild';
/**
 * The arguments that are passed to the life-cycle hooks.
 */
export interface AnimationEventArguments {
    /**
     * The element that is currently being animated.
     */
    animatedElement: HTMLElement;
    /**
     * The AnimationChild component which controls the animation.
     */
    target: AnimationChild;
}
/**
 * Inherited by all Animations. Represents the properties which can be set to an Animation.
 */
export interface AnimationInterface {
    /**
     * @hidden
     */
    children?: React.ReactNode;
    /**
     * Specifies the CSS class names which are set to each of the animated children elements.
     */
    componentChildClassName?: string;
    /**
     * Specifies the styles which are set to each of the animated children elements.
     */
    componentChildStyle?: any;
    /**
     * Called when a component is added to an existing Animation component and the Animation has not started yet ([more information and example]({% slug lifecyclehooks_animation %}#toc-adding-child-elements)).
     */
    onEnter?: (event: AnimationEventArguments) => void;
    /**
     * Called when a component is added to an existing Animation component and the Animation is now happening ([more information and example]({% slug lifecyclehooks_animation %}#toc-adding-child-elements)).
     */
    onEntering?: (event: AnimationEventArguments) => void;
    /**
     * Called when a component is added to an existing Animation component and the Animation is now finished ([more information and example]({% slug lifecyclehooks_animation %}#toc-adding-child-elements)).
     */
    onEntered?: (event: AnimationEventArguments) => void;
    /**
     * An event that is called after the Animation has reached its exit state ([more information and example]({% slug lifecyclehooks_animation %}#toc-removing-child-elements)).
     */
    onExit?: (event: AnimationEventArguments) => void;
    /**
     * An event that is called after the Animation has reached its exiting state ([more information and example]({% slug lifecyclehooks_animation %}#toc-removing-child-elements)).
     */
    onExiting?: (event: AnimationEventArguments) => void;
    /**
     * An event that is called after the Animation has reached its exited state ([more information and example]({% slug lifecyclehooks_animation %}#toc-removing-child-elements)).
     */
    onExited?: (event: AnimationEventArguments) => void;
    /**
     * @hidden
     * This event is always triggered in contrast to `onExited` which TransitionGroup prevents when target element is not removed from DOM.
     */
    onAfterExited?: (event: AnimationEventArguments) => void;
    /**
     * Defines whether a transition should happen on the first mount. Defaults to `false`.
     */
    appear?: boolean;
    /**
     * Specifies whether to animate the entering (showing) element ([see example]({% slug disabledstate_animation %})). Defaults to `true`.
     */
    enter?: boolean;
    /**
     * Specifies whether to animate a leaving (disappearing) element ([see example]({% slug disabledstate_animation %})). Defaults to `true`.
     */
    exit?: boolean;
    /**
     * Specifies the duration of the transition for the entering (`animation in`) Animation ([see example]({% slug duration_animation %})). After the time runs out, the Animation is terminated. Defaults to `300ms`.
     */
    transitionEnterDuration?: number;
    /**
     * Specifies the duration of the transition for the exiting (`animation out`) Animation ([see example]({% slug duration_animation %})). After the time runs out, the Animation is terminated. Defaults to `300ms`.
     */
    transitionExitDuration?: number;
    /**
     * Specifies if the Animation will use lazy-mounting on the first `in={true}`. Defaults to `false`.
     */
    mountOnEnter?: boolean;
    /**
     * Specifies if the Animation will unmount after it reaches its exited state. Defaults to `false`.
     */
    unmountOnExit?: boolean;
}
