import type { DataFromStep, ExecutionDetails, ExecutionExtra, StepOptimizeOptions, UnbatchedExecutionExtra } from "../interfaces.ts"; import type { Step } from "../step.ts"; import { UnbatchedStep } from "../step.ts"; import { ConstantStep } from "./constant.ts"; export type DataFromObjectSteps = { [key in keyof TSteps]: DataFromStep; }; type Results = Array<[ Array[keyof TSteps]>, DataFromObjectSteps ]>; export interface ObjectPlanMeta { results: Results; } interface ObjectStepCacheConfig { identifier?: string; cacheSize?: number; } /** * A plan that represents an object using the keys given and the values being * the results of the associated plans. */ export declare class ObjectStep extends UnbatchedStep> { static $$export: { moduleName: string; exportName: string; }; isSyncAndSafe: boolean; allowMultipleOptimizations: boolean; private readonly keys; optimizeMetaKey: string; private cacheSize; private cacheConfig?; constructor(obj: TPlans, cacheConfig?: ObjectStepCacheConfig); private _setKeys; /** * This key doesn't get typed, but it can be added later which can be quite * handy. */ set(key: TKey, plan: TPlans[TKey]): void; getStepForKey(key: TKey): TPlans[TKey]; getStepForKey(key: TKey, allowMissing: true): TPlans[TKey] | null; toStringMeta(): string; tupleToObjectJIT(callback: (fn: (extra: ExecutionExtra, ...tuple: Array[keyof TPlans]>) => DataFromObjectSteps) => void): void; finalize(): void; execute({ indexMap, values, extra, }: ExecutionDetails[keyof TPlans]>>): ReadonlyArray>; unbatchedExecute(_extra: UnbatchedExecutionExtra, ..._values: any[]): any; deduplicate(peers: ObjectStep[]): ObjectStep[]; optimize(opts: StepOptimizeOptions): ConstantStep | this | ConstantStep>; __inferGet?: TPlans; /** * Get the original plan with the given key back again. */ get(key: TKey): TPlans[TKey]; } /** * A plan that represents an object using the keys given and the values being * the results of the associated plans. */ export declare function object(obj: TPlans, cacheConfig?: ObjectStepCacheConfig): ObjectStep; export {}; //# sourceMappingURL=object.d.ts.map