export type TypeOrPromiseLike = T | PromiseLike; export type Validate = (input: any) => TypeOrPromiseLike; export interface Options { isGroup?: boolean; message: string; type?: string; name: string; default?: T; when?: Record; choices?: Array<{ name: string; value: T; }>; options?: Array>; validate?: Validate; } export interface ParsedAskOptions extends Options { shouldPrompt?: (answers: Record) => boolean; } /** * @summary Flatten form groups * @function * @protected * * @param {Object[]} form - form description * @returns {Object[]} flattened form description * * @example * questions = utils.flatten [ * isGroup: true * name: 'network' * message: 'Network' * isCollapsible: true * collapsed: false * options: [ * message: 'Network Connection' * name: 'network' * type: 'list' * choices: [ 'ethernet', 'wifi' ] * , * message: 'Processor' * name: 'processorType' * type: 'list' * choices: [ 'Z7010', 'Z7020' ] * ] */ export declare const flatten: (form: Array>) => Array>; /** * @summary Parse a form definition * @function * @protected * * @param {Object[]} form - form description * @returns {Object[]} parsed questions * * @example * questions = utils.parse [ * message: 'Processor' * name: 'processorType' * type: 'list' * choices: [ 'Z7010', 'Z7020' ] * , * message: 'Coprocessor cores' * name: 'coprocessorCore' * type: 'list' * values: [ '16', '64' ] * ] */ export declare const parse: (form: Array>) => ParsedAskOptions[]; /** * @summary Prompt a questions form * @function * @protected * * @param {Object[]} questions - form questions * @returns {Promise} answers * * @example * utils.prompt [ * message: 'Processor' * name: 'processorType' * type: 'list' * choices: [ 'Z7010', 'Z7020' ] * , * message: 'Coprocessor cores' * name: 'coprocessorCore' * type: 'list' * values: [ '16', '64' ] * ] * .then (answers) -> * console.log(answers.processorType) * console.log(answers.coprocessorCore) */ export declare const prompt: (questions: Array>) => Promise;