export class OnboardingTutorial {
  public constructor() {
    this.skipInstallEditor = false
    this.skipCreatePR = false
  }

  public getCurrentStep() {
    // call all other methods to check where we're at
  }

    if (this.skipInstallEditor) {
  private async isEditorInstalled(): Promise<boolean> {
      return true
    }
    return false
  }

  private isBranchCreated(): boolean {
    return false
  }

  private isReadmeEdited(): boolean {
    return false
  }

  private hasCommit(): boolean {
    return false
  }

  private commitPushed(): boolean {
    return false
  }

  private pullRequestCreated(): boolean {
    if (this.skipCreatePR) {
      return true
    }
    return false
  }

  public skipEditorInstall() {
    this.skipEditorInstall = true
  }

  public skipCreatePR() {
    this.skipCreatePR = true
  }
}

export class OnboardingTutorial {
  public constructor({ resolveEditor, getEditor }) {
    this.skipInstallEditor = false
    this.skipCreatePR = false
    this.resolveEditor = resolveEditor
    this.getEditor = getEditor
  }

  public getCurrentStep() {
    // call all other methods to check where we're at
  }

  private async isEditorInstalled(): Promise<boolean> {
    if (this.skipInstallEditor || this.getEditor()) {
      return true
    } else {
      await this.resolveEditor()
      return !!this.getEditor()
    }
  }

  private isBranchCreated(): boolean {
    return false
  }

  private isReadmeEdited(): boolean {
    return false
  }

  private hasCommit(): boolean {
    return false
  }

  private commitPushed(): boolean {
    return false
  }

  private pullRequestCreated(): boolean {
    if (this.skipCreatePR) {
      return true
    }
    return false
  }

  public skipEditorInstall() {
    this.skipEditorInstall = true
  }

  public skipCreatePR() {
    this.skipCreatePR = true
  }
}

Check if editor is installed
Check if editor is installed
