/**
 * Copyright IBM Corp. 2024, 2025
 */

import { VCSConfigData } from '../models/vcs-config-data.model.js';
import { VCSRepoData } from '../models/vcs-repo-data.model.js';
import { Response } from '../../common/models/response-wrapper.js';
import { TreeEntry } from '../../common/models/tree-entry.model.js';

export interface IVcsRepoHandler {
  getVcsConfig(): Promise<Response<null | VCSConfigData>>;
  setVcsConfig(vcsConfig: VCSConfigData): Promise<void>;
  addRepositories(
    repoInfo: VCSRepoData[],
  ): Promise<Response<void | VCSRepoData[]>>;
  getAllRepositories(): Promise<Response<VCSRepoData[] | void>>;
  getRepository(rootDirAlias: string): Promise<Response<VCSRepoData | null>>;
  deleteRepository(name: string): Promise<void>;
  getRepositoryContent(repoNameWithOwner: string): Promise<TreeEntry[] | void>;
}
