export interface RepoSpec {
    /**
     * The name of this repository on a Sourcegraph instance,
     * as affected by `repositoryPathPattern`.
     *
     * Example: `sourcegraph/sourcegraph`
     */
    repoName: string;
}
export interface RawRepoSpec {
    /**
     * The name of this repository, unaffected by `repositoryPathPattern`.
     *
     * Example: `github.com/sourcegraph/sourcegraph`
     */
    rawRepoName: string;
}
export interface RevisionSpec {
    /**
     * a revision string (like 'master' or 'my-branch' or '24fca303ac6da784b9e8269f724ddeb0b2eea5e7')
     */
    revision: string;
}
export interface ResolvedRevisionSpec {
    /**
     * a 40 character commit SHA
     */
    commitID: string;
}
export interface FileSpec {
    /**
     * a path to a directory or file
     */
    filePath: string;
}
interface ComparisonSpec {
    /**
     * a diff specifier with optional base and comparison. Examples:
     * - "master..." (implicitly: "master...HEAD")
     * - "...my-branch" (implicitly: "HEAD...my-branch")
     * - "master...my-branch"
     */
    commitRange: string;
}
/**
 * 1-indexed position in a blob.
 * Positions in URLs are 1-indexed.
 */
interface UIPosition {
    /** 1-indexed line number */
    line: number;
    /** 1-indexed character number */
    character: number;
}
/**
 * 1-indexed range in a blob.
 * Ranges in URLs are 1-indexed.
 */
interface UIRange {
    start: UIPosition;
    end: UIPosition;
}
export interface UIPositionSpec {
    /**
     * A 1-indexed point in the blob
     */
    position: UIPosition;
}
export interface UIRangeSpec {
    /**
     * A 1-indexed range in the blob
     */
    range: UIRange;
}
/**
 * Properties of a RepoURI (like git://github.com/gorilla/mux#mux.go) or a URL (like https://sourcegraph.com/github.com/gorilla/mux/-/blob/mux.go)
 */
export interface ParsedRepoURI extends RepoSpec, Partial<RevisionSpec>, Partial<ResolvedRevisionSpec>, Partial<FileSpec>, Partial<ComparisonSpec>, Partial<UIPositionSpec>, Partial<UIRangeSpec> {
}
declare type RepoURI = string;
export interface Position {
    /** Zero-based line number. */
    readonly line: number;
    /** Zero-based character on a line. */
    readonly character: number;
}
/**
 * Parses the properties of a legacy Git URI like git://github.com/gorilla/mux#mux.go.
 *
 * These URIs were used when communicating with language servers over LSP and with extensions. They are being
 * phased out in favor of URLs to resources in the Sourcegraph raw API, which do not require out-of-band
 * information to fetch the contents of.
 *
 * @deprecated Migrate to using URLs to the Sourcegraph raw API (or other concrete URLs) instead.
 */
export declare function parseRepoURI(uri: RepoURI): ParsedRepoURI;
export {};
