import { Abortable } from '../abortable/Abortable'; import type { AnyRecord, UnionToIntersection } from '../BaseTypes'; import type { EffectFactory } from '../effect/Types'; import type { Registry } from '../registry/Registry'; import type { RegistryInterface } from '../registry/RegistryInterface'; import type { NamedTask, Task, TaskParam, TaskReturn } from '../task/Types'; import type { Thread } from '../thread/Thread'; export type ContextualizedTask, S extends NamedTask>> = S extends NamedTask> ? C extends CC ? S : CC extends ExecutionContext ? C extends ExecutionContext ? [CE, CRM] extends [E, RM] ? S : NamedTask> : never : never : NamedTask>; export type AnyExecutionContext = ExecutionContext; type FactoriesEffects, AnyRecord>[]> = FactoryEffect; type FactoryEffect = T extends EffectFactory, infer V> ? V : never; export declare class ExecutionContext { private readonly parentThread; private registryInstance; private readonly effectFactories; effects: T; private removeEffectFunctions; readonly abortSignal: AbortSignal; readonly registry: RegistryInterface; private readonly componentsToRemove; constructor(parentThread: Thread, registryInstance: Registry, effectFactories?: EffectFactory[], parentContext?: ExecutionContext, RegistryMap>); private getRegistryApi; private attachToThread; private applyEffects; using: , AnyRecord>[]>(...factories: U) => ExecutionContext>, RegistryMap>; fork: >>(task: ContextualizedTask, NP>, parameter: TaskParam, handleError?: ((error: Error) => boolean) | undefined) => Abortable>; branchDependencies(): ExecutionContext; } export {};