import type { Schema } from '@coveo/bueno';
import type { ReactiveController, ReactiveControllerHost } from 'lit';
/**
 * A reactive controller that validates the props of a Lit component against a
 * provided Bueno schema.
 *
 * It validates the props when the host is connected to the DOM and whenever
 * the host updates, re-validating only if the props have changed since the last
 * validation.
 *
 * If validation fails, the controller either sets the `error` property on the host
 * or logs a warning, depending on the `throwOnError` configuration.
 */
export declare class ValidatePropsController<TProps extends Record<string, unknown>> implements ReactiveController {
    private host;
    private getProps;
    private schema;
    private throwOnError;
    private currentProps?;
    private previousProps?;
    private lastValidationError?;
    /**
     * Creates a `ValidatePropsController`.
     *
     * @param host The host element.
     * @param getProps A function that returns the current props to validate.
     * @param schema The Bueno schema to validate the props against.
     * @param throwOnError Whether to throw an error (true) or log a warning (false) when validation fails. Defaults to true.
     */
    constructor(host: ReactiveControllerHost & HTMLElement & {
        error: Error;
    }, getProps: () => TProps, schema: Schema<TProps>, throwOnError?: boolean);
    hostConnected(): void;
    hostUpdate(): void;
    private validateProps;
}
