import { VegaSlimmer } from '../../../vega-slimmer/vega-slimmer-core';
import { Subject } from '../../change-manager/subject/subject-interface';
export declare type NotifyObserverPayload<T> = {
  host: HTMLElement;
  detail: T;
  eventName?: string;
};
export declare type NotifyObserverCallback = (input?: NotifyObserverPayload<unknown>) => void;
export declare type CustomAcceptableType = (input?: NotifyObserverPayload<unknown>) => boolean;
/** The `ChildNodesNotifyObserverSlimmer` class is a TypeScript class that acts as a slimmed-down version of a notify observer for child nodes, allowing for add and remove of observers and handling of observer payloads. */
export declare class ChildNodesNotifyObserverSlimmer<T> extends VegaSlimmer {
  host: HTMLElement;
  private subject;
  private callback;
  private customAcceptableHandle;
  private notifyObserver;
  private acceptableResultMap;
  /**
   * Initialize the notify observer.
   */
  connectedCallback(): void;
  /**
   * Unregister the observer when disconnectedCallback
   */
  disconnectedCallback(): void;
  /**
   * The constructor function initializes the subject and notifyObserverEntry properties of the class.
   *
   * @param {Subject} subject - The `subject` parameter is an instance of the `Subject` class. It represents the subject that the observer will be observing.
   * @param {NotifyObserverCallback} callback - It is typically called by the subject when it undergoes a change and needs to notify its observers.
   * @param {CustomAcceptableType} [customAcceptableHandle] - It is typically called by the subject when it undergoes a change and needs to notify its observers.
   */
  constructor(subject: Subject, callback: NotifyObserverCallback, customAcceptableHandle?: CustomAcceptableType);
  /**
   * It is used to determine whether a given observer payload is acceptable for the observer.
   *
   * @param {NotifyObserverPayload<unknown>} input input payload
   * @returns {boolean} true or false
   */
  private isAcceptableObserverPayload;
  /**
   * trigger the callback function
   *
   * @param {NotifyObserverPayload<unknown>} input input payload
   */
  private handleObserver;
}
