/** * Types for Pull Request API */ export type PullRequestState = 'open' | 'closed' | 'all'; export interface PullRequest { id: number; number: number; state: 'open' | 'closed'; title: string; body?: string; created_at: string; updated_at: string; closed_at?: string; merged_at?: string; head: { ref: string; sha: string; repo: { id: number; name: string; full_name: string; }; }; base: { ref: string; sha: string; repo: { id: number; name: string; full_name: string; }; }; user: { id: number; login: string; avatar_url?: string; }; merged: boolean; mergeable?: boolean; mergeable_state?: string; comments: number; commits: number; additions: number; deletions: number; changed_files: number; } export interface ListPullRequestsParams { owner: string; repo: string; state?: PullRequestState; sort?: 'created' | 'updated' | 'popularity' | 'long-running'; direction?: 'asc' | 'desc'; page?: number; per_page?: number; } export interface GetPullRequestParams { owner: string; repo: string; pull_number: number; } export interface CreatePullRequestParams { owner: string; repo: string; title: string; head: string; base: string; body?: string; draft?: boolean; maintainer_can_modify?: boolean; } export interface UpdatePullRequestParams { owner: string; repo: string; pull_number: number; title?: string; body?: string; state?: 'open' | 'closed'; base?: string; maintainer_can_modify?: boolean; } export interface MergePullRequestParams { owner: string; repo: string; pull_number: number; commit_title?: string; commit_message?: string; merge_method?: 'merge' | 'squash' | 'rebase'; } export interface MergePullRequestResponse { sha: string; merged: boolean; message: string; }