import { TaskManagerCore } from "task-manager-core";
import { StateManager } from "./state-manager";
import type { HydratedEntry } from "./center";
import type { TypeStateManagerConfigs } from "./state-manager";
import type { RequestConfigBase, RequestDataRecordType, TaskManagerCoreConfig } from "task-manager-core";
export declare class TaskManager<Task extends (...args: any) => Promise<any>, DataManager extends StateManager<Awaited<ReturnType<Task>> | null>, ErrorManager extends StateManager<TaskError | null>, IsProcessingManager extends StateManager<boolean>, RequestParamsManager extends StateManager<RequestDataRecordType<Task>>, TaskError = any, Meta = Record<string, any>> extends TaskManagerCore<Task, TaskError, Meta> {
    protected _initializeManager<Manager>({ name, initialValue, configs, }: {
        name: string;
        initialValue: any;
        configs: StateManagerConfigs<any>;
    }): Manager;
    protected _uid: string;
    readonly state: DataManager;
    readonly error: ErrorManager;
    readonly isProcessing: IsProcessingManager;
    protected _requestDetails_: RequestParamsManager;
    get uid(): string;
    get requestDetails(): Readonly<{
        value: RequestDataRecordType<Task>;
    }>;
    protected _setRequestDetails(updater: (prev: RequestDataRecordType<Task>) => RequestDataRecordType<Task>): void;
    constructor({ uid, stateConfig, errorConfig, isProcessingConfig, requestParamsConfig, ...configs }: TaskManagerConfig<Task, TaskError, Meta>);
    reset(): this;
    protected _isPrevented({ hash, config, }: {
        hash: string;
        config: RequestConfigBase<Task, TaskError, Meta>;
    }): boolean;
    hydrate(...parameters: Parameters<Task>): Promise<HydratedEntry>;
}
export type StateManagerConfigs<StateType> = {
    initialValue?: StateType;
} & Omit<TypeStateManagerConfigs<StateType>, "uid">;
export type TaskManagerConfig<Task extends (...args: any) => Promise<any>, TaskError = any, Meta = Record<string, any>> = {
    uid?: string;
    stateConfig?: StateManagerConfigs<Awaited<ReturnType<Task>> | undefined | null>;
    errorConfig?: StateManagerConfigs<TaskError | undefined>;
    isProcessingConfig?: StateManagerConfigs<boolean>;
    requestParamsConfig?: StateManagerConfigs<RequestDataRecordType<Task>>;
} & TaskManagerCoreConfig<Task, TaskError, Meta>;
export type { RequestConfigBase, RequestConfigs, RequestDataRecordType, RequestEventHandlersType, RequestStatus, SharedConfigs, TaskManagerCoreConfig, TaskManagerInterceptorsType, } from "task-manager-core";
