import { Task, TaskInstance, EncapsulatedTask, EncapsulatedTaskProperty, EncapsulatedTaskState, task, taskGroup, } from 'ember-concurrency'; declare module 'ember-concurrency' { export type AsyncTaskFunction = (...args: Args) => Promise; export type AsyncTaskFunctionArgs> = T extends (...args: infer A) => Promise ? A : []; export type AsyncTaskFunctionReturnType> = T extends (...args: any[]) => Promise ? R : unknown; export type TaskForAsyncTaskFunction> = Task, AsyncTaskFunctionArgs>; export type TaskInstanceForAsyncTaskFunction> = TaskInstance>; export interface AsyncEncapsulatedTaskDescriptor { perform(...args: Args): Promise; } export type AsyncEncapsulatedTaskDescriptorArgs> = T extends { perform(...args: infer A): Promise } ? A : []; export type AsyncEncapsulatedTaskDescriptorReturnType> = T extends { perform(...args: any[]): Promise } ? R : unknown; export type AsyncEncapsulatedTaskState = EncapsulatedTaskState; export type TaskForAsyncEncapsulatedTaskDescriptor> = EncapsulatedTask< AsyncEncapsulatedTaskDescriptorReturnType, AsyncEncapsulatedTaskDescriptorArgs, AsyncEncapsulatedTaskState >; export type TaskInstanceForAsyncEncapsulatedTaskDescriptor> = TaskInstance> & AsyncEncapsulatedTaskDescriptorArgs; function task>(taskFn: T): TaskProperty, AsyncTaskFunctionArgs>; function task>(taskFn: T): EncapsulatedTaskProperty< AsyncEncapsulatedTaskDescriptorReturnType, AsyncEncapsulatedTaskDescriptorArgs, AsyncEncapsulatedTaskState >; }