import { WorkspaceFolder } from 'vscode-languageserver-protocol'; import { URI } from 'vscode-uri'; import { DirectoryWalker, EmptyFileResolver } from '../fs'; import { DefaultVirtualFileSystemService } from '../fs/virtual_file_system_service'; import { FsClient } from '../fs/fs'; import { GetFileOptions, Repository, RepositoryFile } from './repository'; type RepoUriString = string; type FolderUriString = string; type RepositoryMap = Map; export interface RepositoryService extends DefaultRepositoryService { } export declare const RepositoryService: import("@gitlab-org/di").InterfaceId; /** * RepositoryService is responsible for managing and detecting repositories in a workspace. * This is considered the SSOT (Single Source of Truth) for repository state in a workspace. * TODO: Migrate `DuoProjectAccessCache` and `DuoProjectAccessService` to this service. * * @see `Repository` - Stateful class representing a git repository. * @see `GitIgnoreManager` - Manages gitignore files for a repository. */ export declare class DefaultRepositoryService { #private; constructor(virtualFileSystemService: DefaultVirtualFileSystemService, fileResolver: EmptyFileResolver, directoryWalker: DirectoryWalker, fsClient: FsClient); /** * ------------------------------ * CLIENT FACING METHODS * ------------------------------ */ getMatchingRepository(fileUri: URI, workspaceFolderUri: FolderUriString): Repository | undefined; getRepositoryFileForUri(fileUri: URI, repositoryUri: URI, workspaceFolder: WorkspaceFolder): RepositoryFile | null; getCurrentFilesForRepository(repositoryUri: URI, workspaceFolderUri: FolderUriString, options?: GetFileOptions): RepositoryFile[]; getCurrentFilesForWorkspace(workspaceFolderUri: FolderUriString, options?: GetFileOptions): RepositoryFile[]; getRepositoriesForWorkspace(workspaceFolderUri: FolderUriString): RepositoryMap; getRepositoryForWorkspace(workspaceFolderUri: FolderUriString, repositoryUri: URI): Repository | undefined; } export {};