import { type TAnyFeature } from 'feature-core'; import type { TState } from 'feature-state'; import React from 'react'; /** * Derives a computed value from one state or a tuple of states. * * Re-renders only when the computed result changes (`Object.is` by default). * Pass `deps` for any values `compute` reads outside the subscribed states. * Pass a custom `isEqual` to use structural comparison, or `false` to re-render on every * source change regardless of the computed value. Keep `compute` and `isEqual` pure: * React may call them outside a render. */ export declare function useCompute(state: GState, compute: (value: TComputeValue) => GComputed, deps?: React.DependencyList, isEqual?: TComputeIsEqual): GComputed; export declare function useCompute(states: GStates, compute: (values: TComputeValues) => GComputed, deps?: React.DependencyList, isEqual?: TComputeIsEqual): GComputed; /** Compares next and current computed values, or disables equality checks when set to `false`. */ export type TComputeIsEqual = ((next: GComputed, current: GComputed) => boolean) | false; type TComputeValues = { readonly [GIndex in keyof GStates]: TComputeValue; }; type TComputeValue = GState extends TState ? GValue : null; type TAnyComputeState = TState | null | undefined; export {};