/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
import {parse as parseYaml} from 'yaml';

export interface PullApproveGroupConfig {
  conditions?: string[];
  reviewers?: {
    users: string[],
    teams?: string[],
  }|{
    teams: string[],
  };
}

export interface PullApproveConfig {
  version: number;
  github_api_version?: string;
  pullapprove_conditions?: {
    condition: string,
    unmet_status: string,
    explanation: string,
  }[];
  groups: {
    [key: string]: PullApproveGroupConfig,
  };
}

export function parsePullApproveYaml(rawYaml: string): PullApproveConfig {
  return parseYaml(rawYaml, {merge: true}) as PullApproveConfig;
}
