import type { Json, MaybeArray, CommandName, CommandArgs, UserConfig, PluginInfo, ContextOptions, TaskConfig, UserConfigArgs, CliOptionArgs, GetAllPlugin, RegisterTask, EmptyObject } from './types.js';
import type { Config } from '@jest/types';
/**
 * Build Scripts Context
 *
 * @class Context
 * @template T Task Config
 * @template U Type of extendsPluginAPI
 * @template K User Config
 */
declare class Context<T = {}, U = EmptyObject, K = EmptyObject> {
    command: CommandName;
    commandArgs: CommandArgs;
    extendsPluginAPI: U;
    rootDir: string;
    pkg: Json;
    userConfig: UserConfig<K>;
    originalUserConfig: UserConfig;
    plugins: Array<PluginInfo<T, U>>;
    logger: {
        info(...args: string[]): void;
        error(...args: string[]): void;
        warn(...args: string[]): void;
        debug(...args: string[]): void;
    };
    configFile: string | string[];
    configFilePath: string;
    private options;
    private configArr;
    private modifyConfigFns;
    private modifyJestConfig;
    private modifyConfigRegistrationCallbacks;
    private modifyCliRegistrationCallbacks;
    private eventHooks;
    private internalValue;
    private userConfigRegistration;
    private cliOptionRegistration;
    private methodRegistration;
    private cancelTaskNames;
    constructor(options: ContextOptions<U>);
    runJestConfig: (jestConfig: Config.InitialOptions) => Config.InitialOptions;
    getTaskConfig: () => Array<TaskConfig<T>>;
    setup: () => Promise<Array<TaskConfig<T>>>;
    getAllTask: () => string[];
    getAllPlugin: GetAllPlugin<T, U>;
    resolveUserConfig: () => Promise<UserConfig<K>>;
    resolvePlugins: () => Promise<Array<PluginInfo<T, U>>>;
    applyHook: (key: string, opts?: {}) => Promise<void>;
    registerTask: RegisterTask<T>;
    registerConfig: (type: string, args: MaybeArray<UserConfigArgs<T>> | MaybeArray<CliOptionArgs<T>>, parseName?: (name: string) => string) => void;
    private runSetConfig;
    private onHook;
    private runPlugins;
    private runConfigModification;
    private validateUserConfig;
    private runCliOption;
    private runOnGetConfigFn;
    private cancelTask;
    private registerMethod;
    private applyMethod;
    private hasMethod;
    private modifyUserConfig;
    private modifyConfigRegistration;
    private modifyCliRegistration;
    private onGetConfig;
    private onGetJestConfig;
    private setValue;
    private getValue;
    private registerUserConfig;
    private hasRegistration;
    private registerCliOption;
}
export default Context;
export declare const createContext: <T, U, K>(args: ContextOptions<U>) => Promise<Context<T, U, K>>;
