import { ActionResult } from "../../action/ActionResult"; import { Configurable } from "../../project/git/Configurable"; import { ProjectOperationCredentials } from "./ProjectOperationCredentials"; /** * Identifies a git repo */ export interface RepoId { owner: string; repo: string; /** * Entire url of the repo. Can be a file URL if this is local. */ url: string; } export declare class SimpleRepoId implements RepoId { readonly owner: string; readonly repo: string; readonly url: string; constructor(owner: string, repo: string, url?: string); } /** * Identifies a version of a git repo containing a potential project */ export interface RepoRef extends RepoId { sha?: string; /** * Path from root, using / syntax. If undefined or the empty string, use the root of the repo. */ path?: string; branch?: string; } export declare enum ProviderType { bitbucket_cloud = 0, github_com = 1, ghe = 2, bitbucket = 3 } /** * Identifies a git repo with a remote. * Also defines behavior for working with remote, such as * raising a pull request or equivalent */ export interface RemoteRepoRef extends RepoRef { /** * Remote base */ readonly remoteBase: string; readonly providerType: ProviderType; /** * Return the clone URL for this to pass to git clone * @param {ProjectOperationCredentials} creds * @return {string} */ cloneUrl(creds: ProjectOperationCredentials): string; createRemote(creds: ProjectOperationCredentials, description: string, visibility: "private" | "public"): Promise>; /** * Configure the local remote based on information from remote * @param {ProjectOperationCredentials} credentials * @param {Configurable} configurable * @return {Promise>} */ setUserConfig(credentials: ProjectOperationCredentials, configurable: Configurable): Promise>; raisePullRequest(credentials: ProjectOperationCredentials, title: string, body: string, head: string, base: string): Promise>; deleteRemote(creds: ProjectOperationCredentials): Promise>; } export declare function isRemoteRepoRef(r: RepoRef): r is RemoteRepoRef; /** * Identifies a git repo checked out in a local directory. * A RepoRef can be both Remote and Local */ export interface LocalRepoRef extends RepoRef { baseDir: string; } export declare function isLocalRepoRef(r: RepoRef): r is LocalRepoRef;