import type { ExecutionContext } from '../../../../../framework-types/execution-context/ExecutionContext';
import type { AnyNamedTask, AnyParameterTask, AnyTask, NamedTask, TaskParam } from '../../../../../framework-types/task/Types';
import type { EmptyObject } from '../../../../Types';
import type { IsStateAtom } from '../Types';
export type ParameterizedTask<P, S extends NamedTask<AnyTask>> = S extends NamedTask<AnyParameterTask<P>> ? S : NamedTask<AnyParameterTask<P>>;
export type TaskParameter<Atom, Task extends ParameterizedTask<Atom, NamedTask<AnyTask>>> = IsStateAtom<TaskParam<Task>> extends true ? TaskParam<Task> : never;
export type ErrorCallback = (error: Error) => boolean;
export type SubscriberTuple = [ExecutionContext<EmptyObject, EmptyObject>, AnyNamedTask, ErrorCallback];
