import { SelectorsCache } from '@state-adapt/core'; import { StoreLike } from '@state-adapt/rxjs'; /** * A shared, memoized value created with {@link derive}. Call it for its current * value, or pass it to {@link useDerived}. * * @hidden */ export interface Derived { (): Value; /** @internal */ __: { fullSelector: (globalState?: any, cache?: SelectorsCache) => Value; }; } export interface DerivedConsumer { consume(store: StoreLike): void; } export declare const withDerivedConsumer: (consumer: DerivedConsumer, read: () => Value) => Value; export declare const createStoreSelectorReader: (store: StoreLike, fullSelector: (globalState: any, cache?: SelectorsCache) => any, isUnavailable?: () => boolean) => () => any; /** * Creates a shared, memoized value derived from stores created with * {@link adapt}. Call it for its current value, or subscribe a component to it * with {@link useDerived}. * * Define it outside your components: * * ```tsx * import { adapt, derive, useDerived } from '@state-adapt/react'; * * const priceStore = adapt(20); * const quantityStore = adapt(3); * * const deriveSubtotal = derive(() => priceStore() * quantityStore()); * const deriveTotal = derive(() => deriveSubtotal() + 5); * * function Total() { * const total = useDerived(deriveTotal); * * return

Total: {total}

; * } * ``` */ export declare function derive(projector: () => Value): Derived;