import { HandlerContext } from "@atomist/automation-client/lib/HandlerContext";
import { ParameterStyle } from "../registration/CommandRegistration";
import { ParametersObjectValue } from "../registration/ParametersDefinition";
/**
 * Object with properties defining parameters. Useful for combination via spreads.
 */
export declare type ParametersPromptObject<PARAMS, K extends keyof PARAMS = keyof PARAMS> = Record<K, ParametersObjectValue & {
    force?: boolean;
}>;
/**
 * Factory to create a ParameterPrompt
 */
export declare type ParameterPromptFactory<PARAMS> = (ctx: HandlerContext) => ParameterPrompt<PARAMS>;
/**
 * Options to configure the parameter prompt
 */
export interface ParameterPromptOptions {
    /** Optional thread identifier to send this message to or true to send
     * this to the message that triggered this command.
     */
    thread?: boolean | string;
    /**
     * Configure strategy on how to ask for parameters in chat or web
     */
    parameterStyle?: ParameterStyle;
    /**
     * Configure auto submit strategy for when all required parameters are collected
     */
    autoSubmit?: boolean;
}
/**
 * ParameterPrompts let the caller prompt for the provided parameters
 */
export declare type ParameterPrompt<PARAMS> = (parameters: ParametersPromptObject<PARAMS>, options?: ParameterPromptOptions) => Promise<PARAMS>;
/**
 * No-op NoParameterPrompt implementation that never prompts for new parameters
 * @constructor
 */
export declare const NoParameterPrompt: ParameterPrompt<any>;
export declare const AtomistContinuationMimeType = "application/x-atomist-continuation+json";
/**
 * Default ParameterPromptFactory that uses the WebSocket connection to send parameter prompts to the backend.
 * @param ctx
 */
export declare function commandRequestParameterPromptFactory<T>(ctx: HandlerContext): ParameterPrompt<T>;
//# sourceMappingURL=parameterPrompt.d.ts.map