import { type ReactiveController, type ReactiveControllerHost } from 'lit';
type ResizeControllerCallback = (...args: Parameters<ResizeObserverCallback>) => unknown;
/** Configuration for initializing a resize controller. */
export interface ResizeControllerConfig {
    /** The callback function to run when a resize mutation is triggered. */
    callback: ResizeControllerCallback;
    /** Configuration options passed to the underlying ResizeObserver. */
    options?: ResizeObserverOptions;
    /**
     * The initial target element to observe for resize mutations.
     *
     * If not provided, the host element will be set as initial target.
     * Pass in `null` to skip setting an initial target.
     */
    target?: Element | null;
}
declare class ResizeController implements ReactiveController {
    private readonly _host;
    private readonly _targets;
    private readonly _observer;
    private readonly _config;
    constructor(host: ReactiveControllerHost & Element, config: ResizeControllerConfig);
    /** Starts observing the `targe` element. */
    observe(target: Element): void;
    /** Stops observing the `target` element. */
    unobserve(target: Element): void;
    /** @internal */
    hostConnected(): void;
    /** @internal */
    hostDisconnected(): void;
}
/**
 * Creates a new resize controller bound to the given `host`
 * with {@link ResizeControllerConfig | `config`}.
 */
export declare function createResizeController(host: ReactiveControllerHost & Element, config: ResizeControllerConfig): ResizeController;
export {};
