import { Observable } from 'rxjs';
import { IStorageBase } from '../../../core';
/**
 * Конвертирует хранилище (IStorageBase) в Observable потока состояния.
 *
 * Без `selector` поток эмитит всё состояние `T` на каждое изменение хранилища.
 * С `selector` поток эмитит только выбранный срез и через `distinctUntilChanged`
 * пропускает повторы (по умолчанию сравнение по `Object.is`, либо переданным
 * `equals`) — компонент/эффект получает значение только когда срез реально менялся.
 *
 * @example
 * ```ts
 * import { toObservable } from 'synapse-storage/reactive'
 *
 * const auth$ = toObservable(authStorage)
 *
 * // Использование в createEffectConfig
 * createEffectConfig: () => ({
 *   externalStates: { auth: auth$ },
 * })
 *
 * // Поток только по срезу (эмитит лишь при изменении user.id):
 * const userId$ = toObservable(authStorage, (s) => s.user.id)
 * ```
 */
export declare function toObservable<T extends Record<string, any>>(storage: IStorageBase<T>): Observable<T>;
export declare function toObservable<T extends Record<string, any>, R>(storage: IStorageBase<T>, selector: (state: T) => R, equals?: (a: R, b: R) => boolean): Observable<R>;
/**
 * Проверяет, является ли значение хранилищем (IStorageBase)
 */
export declare function isStorage(value: any): value is IStorageBase<any>;
