/**
 * @hidden
 */
export declare function injectReactiveSubscribe(object: Record<string, any>): void;
/**
 * @description `ReactiveSubscribe` is a class decorator and adds `.subscribe` and `.unsubscribe` methods.
 * @category Reactive-Decorator
 * @see Observe
 * @example
 * ```ts
import { ReactiveSubscribe, Observe } from "@cfcs/core";

@ReactiveSubscribe
class Component {
  @Observe value1 = 1;

  constructor() {
    requestAnimationFrame(() => {
      this.value1 = 2;
    });
  }
}

interface Component extends ReactiveSubscribe<{
  value1: number;
  value2: number;
}> {}

const component = new Component();

// 1
console.log(component.value1);

component.subscribe("value1", nextValue => {
  // When the change event occurs => (2, 2)
  console.log(nextValue, component.value2);
});
```
 */
export declare function ReactiveSubscribe(Constructor: any): void;
/**
 * `ReactiveSubscribe` is a class decorator and adds `.subscribe` and `.unsubscribe` methods.
 * @category Reactive
 */
export interface ReactiveSubscribe<State extends Record<string, any>> {
    /**
     * When the value of the property changes, the callback function is called.
     */
    subscribe<Name extends keyof State = keyof State>(name: Name, callback: (value: State[Name]) => void): void;
    /**
     * Unregister the callback function corresponding to the property.
     */
    unsubscribe<Name extends keyof State = keyof State>(name?: Name, callback?: (value: State[Name]) => void): void;
}
