<?php
declare(strict_types=1);
namespace GitList\SCM;
use GitList\SCM\Commit\Criteria;
interface System
{
public function isValidRepository(Repository $repository): bool;
public function getDescription(Repository $repository): string;
public function getDefaultBranch(Repository $repository): string;
public function getBranches(Repository $repository): array;
public function getTags(Repository $repository): array;
public function getTree(Repository $repository, ?string $hash = null): Tree;
public function getRecursiveTree(Repository $repository, ?string $hash = null): Tree;
public function getPathTree(Repository $repository, string $path, ?string $hash = null): Tree;
public function getCommit(Repository $repository, ?string $hash = null): Commit;
public function getCommits(Repository $repository, ?string $hash = null, int $page = 1, int $perPage = 10): array;
public function getCommitsFromPath(Repository $repository, string $path, ?string $hash = null, int $page = 1, int $perPage = 10): array;
public function getSpecificCommits(Repository $repository, array $hashes): array;
public function getBlame(Repository $repository, string $hash, string $path): Blame;
public function getBlob(Repository $repository, string $hash, string $path): Blob;
public function searchCommits(Repository $repository, Criteria $criteria, ?string $hash = null): array;
public function archive(Repository $repository, string $format, string $hash, string $path): string;
}