import { RunTree, RunnableConfigLike } from "../run_trees.js"; import { ROOT } from "./traceable.js"; import { _LC_CONTEXT_VARIABLES_KEY } from "./constants.js"; type SmartPromise = T extends AsyncIterable ? T : T extends Promise ? T : Promise; type WrapArgReturnPair = Pair extends [ infer Args extends any[], infer Return ] ? Args extends [RunTree, ...infer RestArgs] ? { (runTree: RunTree | typeof ROOT, ...args: RestArgs): SmartPromise; /** @deprecated Will be removed in 0.4 */ (config: RunnableConfigLike, ...args: RestArgs): SmartPromise; } : { (...args: Args): SmartPromise; (runTree: RunTree | typeof ROOT, ...rest: Args): SmartPromise; /** @deprecated Will be removed in 0.4 */ (config: RunnableConfigLike, ...args: Args): SmartPromise; } : never; type UnionToIntersection = (U extends any ? (x: U) => void : never) extends (x: infer I) => void ? I : never; export type TraceableFunction any> = (Func extends { (...args: infer A1): infer R1; (...args: infer A2): infer R2; (...args: infer A3): infer R3; (...args: infer A4): infer R4; (...args: infer A5): infer R5; } ? UnionToIntersection> : Func extends { (...args: infer A1): infer R1; (...args: infer A2): infer R2; (...args: infer A3): infer R3; (...args: infer A4): infer R4; } ? UnionToIntersection> : Func extends { (...args: infer A1): infer R1; (...args: infer A2): infer R2; (...args: infer A3): infer R3; } ? UnionToIntersection> : Func extends { (...args: infer A1): infer R1; (...args: infer A2): infer R2; } ? UnionToIntersection> : Func extends { (...args: infer A1): infer R1; } ? UnionToIntersection> : never) & { [K in keyof Func]: Func[K]; }; export type RunTreeLike = RunTree; export type ContextPlaceholder = { [_LC_CONTEXT_VARIABLES_KEY]?: Record; tracingEnabled?: boolean; }; export {};