// Hand-written declaration for the plain-JS Gitea/Forgejo REST v1 client // (client.js). Kept in sync with the client's public surface; the web package // type-checks the gitea live-test harness which imports this module. export interface GiteaClientPageInfo { page: number | null; next: string | null; total: number | null; hasMore: boolean; nextUrl?: string; } export interface GiteaClientResponse { status: number; headers: Record; data: unknown; page: GiteaClientPageInfo | null; error?: string; } export type GiteaQuery = Record; export interface GiteaRequestOptions { method?: string; query?: GiteaQuery; body?: unknown; signal?: AbortSignal; raw?: boolean; } export interface GiteaClient { baseUrl: string; request: (path: string, options?: GiteaRequestOptions) => Promise; user: () => Promise; repo: (owner: string, repo: string) => Promise; issues: (owner: string, repo: string, params?: GiteaQuery) => Promise; issue: (owner: string, repo: string, number: number) => Promise; issueComments: (owner: string, repo: string, number: number, params?: GiteaQuery) => Promise; createIssueComment: (owner: string, repo: string, number: number, body: string) => Promise; createIssue: (owner: string, repo: string, params: Record) => Promise; updateIssue: (owner: string, repo: string, number: number, params: Record) => Promise; milestones: (owner: string, repo: string, params?: GiteaQuery) => Promise; repoLabels: (owner: string, repo: string, params?: GiteaQuery) => Promise; pullRequests: (owner: string, repo: string, params?: GiteaQuery) => Promise; pullRequest: (owner: string, repo: string, number: number) => Promise; pullRequestDiff: (owner: string, repo: string, number: number) => Promise; pullRequestFiles: (owner: string, repo: string, number: number, params?: GiteaQuery) => Promise; pullRequestCommits: (owner: string, repo: string, number: number, params?: GiteaQuery) => Promise; pullRequestReviews: (owner: string, repo: string, number: number, params?: GiteaQuery) => Promise; createPullReview: (owner: string, repo: string, number: number, params: Record) => Promise; commitStatuses: (owner: string, repo: string, sha: string, params?: GiteaQuery) => Promise; createPullRequest: (owner: string, repo: string, body: Record) => Promise; updatePullRequest: (owner: string, repo: string, number: number, body: Record) => Promise; mergePullRequest: (owner: string, repo: string, number: number, body: Record) => Promise; branches: (owner: string, repo: string, params?: GiteaQuery) => Promise; assignees: (owner: string, repo: string, params?: GiteaQuery) => Promise; tags: (owner: string, repo: string, params?: GiteaQuery) => Promise; } export function createGiteaClient(options: { token: string; baseUrl: string }): GiteaClient; export function getGiteaClientOrNull(directory?: string): GiteaClient | null; export function isGiteaRateLimited(): boolean; export function noteGiteaRateLimit(error: unknown): void;