import { default as CortexElement } from '../../../../base/src/cortex-element.ts';
import { CSSResultGroup } from 'lit';
import { default as CxButton } from '../button/button';

/**
 * @summary A component that allows you to clamp the number of elements shown in a container, with a button to toggle
 *
 * @slot (default) - The details’ main content.
 *
 * @csspart base - The component’s base wrapper.
 * @csspart content - The details content.
 *
 * @animation element-clamp.show - The animation to use when showing details. You can use `height: auto` with this animation.
 * @animation element-clamp.hide - The animation to use when hiding details. You can use `height: auto` with this animation.
 *
 * @event cx-show - Emitted when the details opens.
 * @event cx-after-show - Emitted after the details opens and all animations are complete.
 * @event cx-hide - Emitted when the details closes.
 * @event cx-after-hide - Emitted after the details closes and all animations are complete.
 */
export default class CxElementClamp extends CortexElement {
    static readonly styles: CSSResultGroup;
    static readonly dependencies: {
        'cx-button': typeof CxButton;
    };
    private readonly localize;
    private resizeObserver;
    body: HTMLElement;
    /**
     * Indicates whether or not the details is open. You can toggle this attribute to show and hide the details, or you
     * can use the `show()` and `hide()` methods and this attribute will reflect the details' open state.
     */
    open: boolean;
    /**
     * Disables the details so it can't be toggled.
     */
    disabled: boolean;
    /**
     * The number of elements to show before clamping.
     */
    elements: number;
    /**
     * The root element to use for the intersection observer.
     */
    root: string;
    /**
     * Whether to animate the opening and closing of the details.
     */
    animation: boolean;
    /**
     * Whether to show the show more button.
     */
    showMore: boolean;
    /**
     * The text to show on the show more button.
     */
    showMoreText: string;
    /**
     * The text to show on the show less button.
     */
    showLessText: string;
    /**
     * The event to listen to for rerendering the component
     */
    rerenderEvent: string;
    /**
     * Whether to show the show more button.
     */
    private showButton;
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    private handleClick;
    private replaceRootId;
    getCollapsedHeight(): number;
    handleChange(): Promise<void>;
    handleOpenChange(): Promise<void>;
    /** Shows the details. */
    show(): Promise<void>;
    /** Hides the details */
    hide(): Promise<void>;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-element-clamp': CxElementClamp;
    }
}
