export interface User {
id: number;
username: string;
email: string;
displayName: string | null;
bio: string | null;
createdAt: string;
}
export interface Repository {
id: number;
name: string;
description: string | null;
visibility: "public" | "private";
defaultChannel: string;
owner: Pick<User, "id" | "username" | "displayName">;
createdAt: string;
updatedAt: string;
}
export interface ChangeMeta {
hash: string;
message: string;
authors: Array<{ name: string; email?: string }>;
timestamp: string;
}
export interface TreeEntry {
name: string;
kind: "file" | "dir";
path: string;
}
export interface ChangeDetail extends ChangeMeta {
diff: string;
}