import { ObservableInputTuple } from 'rxjs';
import { Builder, BuilderState, CacheStrategy } from '../types';
/**
 * The factory function is a powerful tool for creating complex builders.
 * It should be used when you need to build something based on the results of multiple other builders.
 * @param tag - A string that identifies the builder.
 * @param builders - An array of Observables of BuilderState.
 * @param buildFn - A function that takes the results of the successful Observables and returns a Promise.
 * @param cacheStrategy - An optional CacheStrategy object.
 * @returns An Observable of BuilderState.
 */
export declare function factory<T, R, TCacheData>(tag: string, builders: readonly [...ObservableInputTuple<Array<BuilderState<T>>>], buildFn: (...args: T[]) => Promise<R> | R, cacheStrategy?: CacheStrategy<TCacheData, R>): Builder<R>;
