import { Subject, Observable, OperatorFunction } from 'rxjs'; /** * A factory function returning an object to handle the process of merging Observable next notifications into one * Observable. This API takes away the clumsy handling of static values and Observable, reduces the number of * emissions by: * - only merging distinct Observables * - only emit distinct values of the merged result * * You can next a Observable of `U` multiple times and merge them into the Observable exposed under one optimized * `values$` * */ declare function coerceAllFactory(subjectFactory?: () => Subject | U>, flattenOperator?: OperatorFunction, R>): { values$: Observable; next(observable: Observable | U): void; }; /** * This Observable factory creates an Observable out of a static value or an Observable. * It forwards only distinct values from distinct incoming Observables or values. * This comes in handy in any environment where you handle processing of incoming dynamic values and their state. * * Optionally you can pass a flatten strategy to get find grained control of the flattening process. E.g. mergeAll, switchAll * * @param o$ - The Observable to coerce and map to a Observable with distinct values * @param flattenOperator - determines the flattening strategy e.g. mergeAll, concatAll, exhaust, switchAll. default is switchAll */ declare function coerceDistinctObservable(o$: Observable | T>, flattenOperator?: OperatorFunction, T>): Observable; /** * This operator takes an Observable of values ot Observables aof values and * It forwards only distinct values from distinct incoming Observables or values. * This comes in handy in any environment where you handle processing of incoming dynamic values and their state. * * Optionally you can pass a flatten strategy to get find grained control of the flattening process. E.g. mergeAll, switchAll * * @param flattenOperator - determines the flattening strategy e.g. mergeAll, concatAll, exhaust, switchAll. default is switchAll * */ declare function coerceDistinctWith(flattenOperator?: OperatorFunction, T>): (o$: Observable | T>) => Observable; /** * This Observable factory creates an Observable out of a static value or an Observable. * * @param o - the value to coerce */ declare function coerceObservable(o: Observable | T): Observable; /** * This operator maps an Observable out of a static value or an Observable. * */ declare function coerceObservableWith(): OperatorFunction | T | null | undefined, Observable>; export { coerceAllFactory, coerceDistinctObservable, coerceDistinctWith, coerceObservable, coerceObservableWith };