import { Observable, Subscription } from 'rxjs';
import { Expression, Tracker, Trackers } from './core';
/**
 * Function to track Observable inside rxjs-autorun expressions
 *
 * Also provides `.weak`, `.normal` (default), and `.strong` types of tracking
 */
export declare const $: Trackers;
/**
 * Function to read latest Observable value (w/o tracking it) inside rxjs-autorun expressions
 *
 * Also provides `.weak`, `.normal` (default), and `.strong` types of tracking
 */
export declare const _: Trackers;
/**
 * Automatically run `fn` when tracked inner Observables emit
 *
 * ```js
 * autorun(() => _(a) + $(b))
 * ```
 *
 * @param fn Function that uses tracked (`$`) or untracked (`_`) Observables
 * @returns RxJS Subscription of distinct execution results
 */
export declare function autorun<T>(fn: Expression<T>): Subscription;
/**
 * Automatically run `fn` when tracked inner Observables emit
 *
 * ```js
 * combined(() => _(a) + $(b))
 * ```
 *
 * @param fn Function that uses tracked (`$`) or untracked (`_`) Observables
 * @returns Observable of execution results
 */
export declare function combined<T>(fn: Expression<T>): Observable<T>;
/**
 * Automatically run `fn` when tracked inner Observables emit a **distinct value**
 *
 * ```js
 * computed(() => _(a) + $(b))
 * ```
 *
 * @param fn Function that uses tracked (`$`) or untracked (`_`) Observables
 * @returns Observable of distinct execution results
 */
export declare function computed<T>(fn: Expression<T>): Observable<T>;
export { Expression, Trackers, Tracker };
//# sourceMappingURL=index.d.ts.map