import { ActionType, ConfigExtender, ConfigurableTaskDefinition, EnvironmentExtender, TaskArguments } from "../../../types";
import * as argumentTypes from "../params/argument-types";
/**
 * Creates a task, overriding any previous task with the same name.
 *
 * @remarks The action must await every async call made within it.
 *
 * @param name The task's name.
 * @param description The task's description.
 * @param action The task's action.
 * @returns A task definition.
 */
export declare function task<ArgsT extends TaskArguments>(name: string, description?: string, action?: ActionType<ArgsT>): ConfigurableTaskDefinition;
/**
 * Creates a task without description, overriding any previous task
 * with the same name.
 *
 * @remarks The action must await every async call made within it.
 *
 * @param name The task's name.
 * @param action The task's action.
 *
 * @returns A task definition.
 */
export declare function task<ArgsT extends TaskArguments>(name: string, action: ActionType<ArgsT>): ConfigurableTaskDefinition;
/**
 * Creates a internaltask, overriding any previous task with the same name.
 *
 * @remarks The internaltasks won't be displayed in the CLI help messages.
 * @remarks The action must await every async call made within it.
 *
 * @param name The task's name.
 * @param description The task's description.
 * @param action The task's action.
 * @returns A task definition.
 */
export declare function internalTask<ArgsT extends TaskArguments>(name: string, description?: string, action?: ActionType<ArgsT>): ConfigurableTaskDefinition;
/**
 * Creates a internaltask without description, overriding any previous
 * task with the same name.
 *
 * @remarks The internaltasks won't be displayed in the CLI help messages.
 * @remarks The action must await every async call made within it.
 *
 * @param name The task's name.
 * @param action The task's action.
 * @returns A task definition.
 */
export declare function internalTask<ArgsT extends TaskArguments>(name: string, action: ActionType<ArgsT>): ConfigurableTaskDefinition;
export declare const types: typeof argumentTypes;
/**
 * Register an environment extender what will be run after the
 * WasmKit Runtime Environment is initialized.
 *
 * @param extender A function that receives the WasmKit Runtime
 * Environment.
 */
export declare function extendEnvironment(extender: EnvironmentExtender): void;
export declare function extendConfig(extender: ConfigExtender): void;
/**
 * Loads a WasmKit plugin
 * @param pluginName The plugin name.
 */
export declare function usePlugin(pluginName: string): void;
