import type { EmptyObject, SingleOrArray } from 'react-bindings'; import type { UseWaitableArgs } from '../../use-waitable/types/args'; import type { Waitable } from '../../waitable/types/waitable'; import type { WaitableDependencies } from '../../waitable/types/waitable-dependencies'; import type { UseDerivedWaitableNamedTransformers, UseDerivedWaitableRequiredValuesTransformer } from './types/transformers'; /** * A derived waitable is a waitable derived from zero or more other waitables and bindings. The value of a derived waitable is computed * using the specified transformers. * * The general usage pattern is something like: * * ``` * const myWaitable = useDerivedWaitable( * { someWaitable, someBinding }, * [({ someWaitable, someBinding }) => someWaitable + someBinding, { ifLoading: () => 'loading' }], * { id: 'myWaitable' } * ); * ``` * * An unnamed transformer is the same as `{ ifLoaded: … }` * * Named transformer meanings: * - `'ifLoaded'` - None of the waitables have undefined values * - `'ifError'` - At least one waitable has a defined error * - `'ifLoading'` - At least one waitable has an undefined value but no waitables have defined errors * - `'ifErrorOrLoading'` - At least one waitable has an undefined value or at least one waitable has a defined error * - `'always'` - Always applicable * * @param dependencies - The waitables and bindings depended upon. If waitables or bindings are named, their values will be extracted and * passed to the first applicable transformer function. * @param options - `useWaitable` options. * @param transformers - An ordered list of transformers. The first applicable one is applied. If multiple named rules are specified in a * single object, they are evaluated in the order: `ifLoaded`, `ifError`, `ifLoading`, `ifErrorOrLoading`, `always` */ export declare const useDerivedWaitable: (dependencies: DependenciesT | undefined, transformers: SingleOrArray | UseDerivedWaitableNamedTransformers>, args: UseWaitableArgs) => Waitable & ExtraFieldsT; //# sourceMappingURL=use-derived-waitable.d.ts.map