import React from 'react';
import PropTypes from 'prop-types';
import { StandardProps } from '../../util/component-types';
export interface ICollapsibleProps extends StandardProps {
    /** Indicates that the component is in the "expanded" state when true and in
     * the "unexpanded" state when false. */
    isExpanded: boolean;
    /** Show an animated transition for alternating values of \`isExpanded\`. */
    isAnimated: boolean;
    /** If true, do not render children when fully collapsed. */
    isMountControlled: boolean;
    /** If \isMountControlled\ is true, this value sets is the minimum height
     * the container needs to reach to not render any children. */
    mountControlThreshold: number;
    /** Pass in a custom root element type. */
    rootType: any;
    /** Pass in a callback to be called after ExpanderPanel has came to a rest. */
    onRest?: () => void;
}
export interface ICollapsibleState {
    maxHeight: number;
}
declare class Collapsible extends React.Component<ICollapsibleProps, ICollapsibleState, {}> {
    static displayName: string;
    static peek: {
        description: string;
        categories: string[];
    };
    static propTypes: {
        /**
            Expandable content.
        */
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        /**
            Appended to the component-specific class names set on the root element.
        */
        className: PropTypes.Requireable<string>;
        /**
            Indicates that the component is in the "expanded" state when true and in
            the "unexpanded" state when false.
        */
        isExpanded: PropTypes.Requireable<boolean>;
        /**
            Show an animated transition for alternating values of \`isExpanded\`.
        */
        isAnimated: PropTypes.Requireable<boolean>;
        /**
            If true, do not render children when fully collapsed.
        */
        isMountControlled: PropTypes.Requireable<boolean>;
        /**
            If \`isMountControlled\` is true, this value sets is the minimum height
            the container needs to reach to not render any children.
        */
        mountControlThreshold: PropTypes.Requireable<number>;
        /**
            Optional. The callback that fires when the animation comes to a rest.
        */
        onRest: PropTypes.Requireable<(...args: any[]) => any>;
        /**
            Pass in a custom root element type.
        */
        rootType: PropTypes.Requireable<any>;
    };
    private rootRef;
    isAnimated: boolean | undefined;
    delayTimer: number | null;
    _isMounted: boolean;
    static defaultProps: {
        isExpanded: boolean;
        isAnimated: boolean;
        isMountControlled: boolean;
        mountControlThreshold: number;
        rootType: string;
    };
    state: {
        maxHeight: number;
    };
    UNSAFE_componentWillMount(): void;
    componentDidMount(): void;
    componentDidUpdate(): void;
    componentWillUnmount(): void;
    render(): React.ReactNode;
}
export default Collapsible;
//# sourceMappingURL=Collapsible.d.ts.map