/** * @copyright Sister Software * @license AGPL-3.0 * @author Teffen Ellis, et al. */ import { PathBuilder, type PathBuilderLike } from "path-ts"; /** * Metadata for a repository source. */ export interface RepositorySource { name: string; owner: string; url: string; } export declare function prepareRepositoryDirectories({ name, owner }: RepositorySource, localRepoDirectory: PathBuilderLike): Promise<{ ownerDirectory: PathBuilder<`${string}/${string}`>; repoDirectory: PathBuilder<`${string}/${string}/${string}`>; exists: import("node:fs").Stats | null; }>; /** * What a synchronization did, so a caller can report it. * * A clone and a pull differ by orders of magnitude in both time and bytes — reporting them as one "synchronized" makes * a first-time clone indistinguishable from a no-op refresh while it holds the progress display still. */ export type SynchronizeAction = "cloned" | "pulled" | "skipped"; /** * Synchronize a repository source, i.e. clone or pull the repository. */ export declare function synchronizeRepo(source: RepositorySource, localRepoDirectory: PathBuilderLike): Promise; //# sourceMappingURL=git.d.ts.map