async showInputBox<P extends InputBoxParameters>(
        { title, step, totalSteps, value, prompt, validate, buttons, shouldResume }: P
    ): Promise<string | (P extends { buttons: (infer I)[]; } ? I : never)> {
        const disposable: Disposable[] = [];