import { VegaSlimmer } from '../../vega-slimmer/vega-slimmer-core';
import { ClassPrototype } from '../../types/class.type';
import { DynamicMapFromClass } from './types';
/** DeprecatedPropertySlimmer compares new property with default value, if they are different, return new property; otherwise, return old property */
export declare class DeprecatedPropertySlimmerBase<T> extends VegaSlimmer {
  host: HTMLElement;
  newPropertyName: string;
  oldPropertyName: string;
  defaultValue: T;
  constructor({ newPropertyName, oldPropertyName, defaultValue, }: {
    newPropertyName: string;
    oldPropertyName: string;
    defaultValue: T;
  });
  /**
   * The `getValue` function returns either the old property or the new property based on a deep equality
   * check.
   *
   * @typedef T generic type
   * @returns {T} The `getValue` method returns either the `oldProperty` or `newProperty` based on the result
   * of the `deepEqual` comparison between them. If `newProperty` is deeply equal to `oldProperty`, then
   * `oldProperty` is returned; otherwise, `newProperty` is returned.
   */
  getValue(): T;
}
/**
 * Create dynamic deprecated property slimmer
 *
 * @typedef K generic type
 * @param {ClassPrototype} mapFromClass - It represents the class that you want to map from.
 * @param {string} newPropertyName - The new prop name or name path
 * @param {string} oldPropertyName - The old prop name or name path
 * @param {unknown} defaultValue - The default value of the prop
 * @returns {DeprecatedPropertySlimmerBase<K>} - deprecated property slimmer
 */
export declare function createDeprecatedPropertySlimmer<T extends DynamicMapFromClass, K>(mapFromClass: ClassPrototype<T>, newPropertyName: string, oldPropertyName: string, defaultValue: unknown): DeprecatedPropertySlimmerBase<K>;
