/**
 * @typedef {import("./element-style-observer.js").StyleObserverCallback} StyleObserverCallback
 */
/**
 * @typedef { Object } StyleObserverOptions
 * @property {string | string[]} [properties] - The properties to observe.
 * @property {Element | Element[]} [targets] - The elements to observe.
 */
export default class StyleObserver {
    /**
     * @param {StyleObserverCallback} callback
     * @param {StyleObserverOptions | string | string[]} [options]
     */
    constructor(callback: StyleObserverCallback, options?: StyleObserverOptions | string | string[]);
    /**
     * @type { WeakMap<Element, ElementStyleObserver> }
     */
    elementObservers: WeakMap<Element, ElementStyleObserver>;
    callback: import("./element-style-observer.js").StyleObserverCallback;
    options: StyleObserverOptions;
    changed(records: import("./element-style-observer.js").Record[]): void;
    /**
     * Observe one or more targets for changes to one or more CSS properties.
     *
     * @overload
     * @param {Element | Element[]} targets
     * @param {string | string[]} properties
     * @returns {void}
     *
     * @overload
     * @param {string | string[]} properties
     * @param {Element | Element[]} targets
     * @returns {void}
     *
     * @overload
     * @param {...(string | Element | (string | Element)[]) } propertiesOrTargets
     * @returns {void}
     */
    observe(targets: Element | Element[], properties: string | string[]): void;
    /**
     * Observe one or more targets for changes to one or more CSS properties.
     *
     * @overload
     * @param {Element | Element[]} targets
     * @param {string | string[]} properties
     * @returns {void}
     *
     * @overload
     * @param {string | string[]} properties
     * @param {Element | Element[]} targets
     * @returns {void}
     *
     * @overload
     * @param {...(string | Element | (string | Element)[]) } propertiesOrTargets
     * @returns {void}
     */
    observe(properties: string | string[], targets: Element | Element[]): void;
    /**
     * Observe one or more targets for changes to one or more CSS properties.
     *
     * @overload
     * @param {Element | Element[]} targets
     * @param {string | string[]} properties
     * @returns {void}
     *
     * @overload
     * @param {string | string[]} properties
     * @param {Element | Element[]} targets
     * @returns {void}
     *
     * @overload
     * @param {...(string | Element | (string | Element)[]) } propertiesOrTargets
     * @returns {void}
     */
    observe(...propertiesOrTargets: (string | Element | (string | Element)[])[]): void;
    /**
     * Stop observing one or more targets for changes to one or more CSS properties.
     *
     * @overload
     * @param {Element | Element[]} targets
     * @param {string | string[]} properties
     * @returns {void}
     *
     * @overload
     * @param {string | string[]} properties
     * @param {Element | Element[]} targets
     * @returns {void}
     *
     * @overload
     * @param {...(string | Element | (string | Element)[]) } propertiesOrTargets
     * @returns {void}
     */
    unobserve(targets: Element | Element[], properties: string | string[]): void;
    /**
     * Stop observing one or more targets for changes to one or more CSS properties.
     *
     * @overload
     * @param {Element | Element[]} targets
     * @param {string | string[]} properties
     * @returns {void}
     *
     * @overload
     * @param {string | string[]} properties
     * @param {Element | Element[]} targets
     * @returns {void}
     *
     * @overload
     * @param {...(string | Element | (string | Element)[]) } propertiesOrTargets
     * @returns {void}
     */
    unobserve(properties: string | string[], targets: Element | Element[]): void;
    /**
     * Stop observing one or more targets for changes to one or more CSS properties.
     *
     * @overload
     * @param {Element | Element[]} targets
     * @param {string | string[]} properties
     * @returns {void}
     *
     * @overload
     * @param {string | string[]} properties
     * @param {Element | Element[]} targets
     * @returns {void}
     *
     * @overload
     * @param {...(string | Element | (string | Element)[]) } propertiesOrTargets
     * @returns {void}
     */
    unobserve(...propertiesOrTargets: (string | Element | (string | Element)[])[]): void;
    /**
     * Update the transition for one or more targets.
     * @param {Element | Element[]} targets
     * @returns {void}
     */
    updateTransition(targets: Element | Element[]): void;
}
export type StyleObserverCallback = import("./element-style-observer.js").StyleObserverCallback;
export type StyleObserverOptions = {
    /**
     * - The properties to observe.
     */
    properties?: string | string[];
    /**
     * - The elements to observe.
     */
    targets?: Element | Element[];
};
import ElementStyleObserver from "./element-style-observer.js";
