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

/**
 * @summary The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).
 *
 * @description The mutation observer will report changes to the content it wraps through the `cx-mutation` event.
 * When emitted, a collection of [MutationRecord](https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord)
 * objects will be attached to `event.detail` that contains information about how it changed.
 *
 * @event {{ mutationList: MutationRecord[] }} cx-mutation - Emitted when a mutation occurs.
 *
 * @slot (default) - The content to watch for mutations.
 */
export default class CxMutationObserver extends CortexElement {
    static styles: CSSResultGroup;
    private mutationObserver;
    mutationSlot: HTMLSlotElement;
    /**
     * Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.
     * `attr="class id title"`. To watch all attributes, use `*`.
     */
    attr: string;
    /** Indicates whether or not the attribute's previous value should be recorded when monitoring changes. */
    attrOldValue: boolean;
    /** Watches for changes to the character data contained within the node. */
    charData: boolean;
    /** Indicates whether or not the previous value of the node's text should be recorded. */
    charDataOldValue: boolean;
    /** Watches for the addition or removal of new child nodes. */
    childList: boolean;
    /** Disables the observer. */
    disabled: boolean;
    connectedCallback(): void;
    disconnectedCallback(): void;
    private handleMutation;
    private startObserver;
    private stopObserver;
    handleDisabledChange(): void;
    private handleSlotChange;
    handleChange(): void;
    render(): import('lit').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'cx-mutation-observer': CxMutationObserver;
    }
}
