/**
* Copyright Super iPaaS Integration LLC, an IBM Company 2024
*/
import { BranchNode } from "../models/branch-node.model.js";
import { CommitInput } from "../models/commit-input.model.js";
import { CommitResponse } from "../models/commit-response.model.js";
import { FileBlobResponse } from "../models/file-blob-response.model.js";
import { OAuthDeviceExchange, OAuthDeviceInfo, OAuthExchange } from "../models/oauth-exchange.model.js";
import { OAuthTokenResponse } from "../models/oauth-token-response.model.js";
import { RepositoryNode } from "../models/repository-node.model.js";
import { RepositoryTreeResponse } from "../models/repository-tree-response.model.js";
import { Repository, RepositoryBranch, RepositoryTree, FetchFileBlob, CreateBranch } from "../models/repository.model.js";
import { UserInfo } from "../models/user-info.model.js";
import { VCSConfig } from "../models/vcs-config.model.js";
/**
 * Copyright Super iPaaS Integration LLC, an IBM Company 2024
 */
export interface IVcsStrategy {
    getAllRepository(data: VCSConfig): Promise<RepositoryNode[]>;
    getRepositoryByName(data: Repository): Promise<RepositoryNode | null>;
    getLatestCommitIdForBranch(data: RepositoryBranch): Promise<string | undefined>;
    fetchRepositoryTree(data: RepositoryTree): Promise<RepositoryTreeResponse | undefined>;
    fetchBlobContent(data: FetchFileBlob): Promise<FileBlobResponse | undefined>;
    getRepositoryBranches(data: RepositoryBranch): Promise<BranchNode[]>;
    getProviderOAuthURL(): string;
    handleOAuthTokenExchange(data: OAuthExchange): Promise<OAuthTokenResponse>;
    handleOAuthDeviceTokenExchange(data: OAuthDeviceExchange): Promise<OAuthTokenResponse>;
    getOAuthDeviceToken(clientID: string): Promise<OAuthDeviceInfo>;
    getProviderEnterpriseCloudURL(): string;
    getUserInfo(token: string, serverUrl?: string): Promise<UserInfo>;
    createRepositoryBranch(data: CreateBranch): Promise<void>;
    deleteRepositoryBranch(data: RepositoryBranch): Promise<void>;
    commitToRemoteRepository(data: CommitInput): Promise<CommitResponse>;
}
//# sourceMappingURL=vcs-strategy.interface.d.ts.map