/**
 * GitHub Issue types
 */
export type CreateIssueParams = {
    owner: string;
    repo: string;
    title: string;
    body?: string;
    labels?: string[];
    assignees?: string[];
    milestone?: number;
};
export type UpdateIssueParams = {
    owner: string;
    repo: string;
    issue_number: number;
    title?: string;
    body?: string;
    state?: 'open' | 'closed';
    labels?: string[];
    assignees?: string[];
    milestone?: number | null;
};
export type ListIssuesParams = {
    owner: string;
    repo: string;
    state?: 'open' | 'closed' | 'all';
    sort?: 'created' | 'updated' | 'comments';
    direction?: 'asc' | 'desc';
    since?: string;
    per_page?: number;
    page?: number;
    labels?: string[];
    assignee?: string;
    creator?: string;
    mentioned?: string;
    milestone?: string;
};
export type AddIssueCommentParams = {
    owner: string;
    repo: string;
    issue_number: number;
    body: string;
};
export type GetIssueParams = {
    owner: string;
    repo: string;
    issue_number: number;
};
/**
 * GitHub Milestone types
 */
export type CreateMilestoneParams = {
    owner: string;
    repo: string;
    title: string;
    description?: string;
    due_on?: string;
    state?: 'open' | 'closed';
};
export type UpdateMilestoneParams = {
    owner: string;
    repo: string;
    milestone_number: number;
    title?: string;
    description?: string;
    due_on?: string;
    state?: 'open' | 'closed';
};
export type ListMilestonesParams = {
    owner: string;
    repo: string;
    state?: 'open' | 'closed' | 'all';
    sort?: 'due_on' | 'completeness';
    direction?: 'asc' | 'desc';
    per_page?: number;
    page?: number;
};
export type GetMilestoneParams = {
    owner: string;
    repo: string;
    milestone_number: number;
};
/**
 * GitHub Pull Request types
 */
export type CreatePullRequestParams = {
    owner: string;
    repo: string;
    title: string;
    body?: string;
    head: string;
    base: string;
    draft?: boolean;
    maintainer_can_modify?: boolean;
};
export type UpdatePullRequestParams = {
    owner: string;
    repo: string;
    pull_number: number;
    title?: string;
    body?: string;
    state?: 'open' | 'closed';
    base?: string;
    maintainer_can_modify?: boolean;
};
export type ListPullRequestsParams = {
    owner: string;
    repo: string;
    state?: 'open' | 'closed' | 'all';
    head?: string;
    base?: string;
    sort?: 'created' | 'updated' | 'popularity' | 'long-running';
    direction?: 'asc' | 'desc';
    per_page?: number;
    page?: number;
};
export type GetPullRequestParams = {
    owner: string;
    repo: string;
    pull_number: number;
};
export type MergePullRequestParams = {
    owner: string;
    repo: string;
    pull_number: number;
    commit_title?: string;
    commit_message?: string;
    merge_method?: 'merge' | 'squash' | 'rebase';
};
export type CreatePullRequestReviewParams = {
    owner: string;
    repo: string;
    pull_number: number;
    body?: string;
    event?: 'APPROVE' | 'REQUEST_CHANGES' | 'COMMENT';
    comments?: Array<{
        path: string;
        position: number;
        body: string;
    }>;
};
export type ListPullRequestReviewsParams = {
    owner: string;
    repo: string;
    pull_number: number;
    per_page?: number;
    page?: number;
};
export type CreatePullRequestReviewCommentParams = {
    owner: string;
    repo: string;
    pull_number: number;
    body: string;
    commit_id?: string;
    path?: string;
    position?: number;
    in_reply_to?: number;
};
export type ListPullRequestReviewCommentsParams = {
    owner: string;
    repo: string;
    pull_number: number;
    sort?: 'created' | 'updated';
    direction?: 'asc' | 'desc';
    since?: string;
    per_page?: number;
    page?: number;
};
export type RequestReviewersParams = {
    owner: string;
    repo: string;
    pull_number: number;
    reviewers?: string[];
    team_reviewers?: string[];
};
export type UpdatePullRequestBranchParams = {
    owner: string;
    repo: string;
    pull_number: number;
    expected_head_sha?: string;
};
/**
 * GitHub Project v2 types
 */
export type CreateProjectParams = {
    owner: string;
    name: string;
    body?: string;
};
export type AddProjectItemParams = {
    projectId: string;
    contentId: string;
};
export type UpdateProjectItemParams = {
    projectId: string;
    itemId: string;
    fieldId?: string;
    columnId?: string;
    position?: 'top' | 'bottom' | number;
};
export type ListProjectsParams = {
    owner: string;
    first?: number;
};
export type ListProjectItemsParams = {
    projectId: string;
    columnId?: string;
    first?: number;
};
export type GraphQLResponse<T> = {
    data?: T;
    errors?: Array<{
        message: string;
        locations?: Array<{
            line: number;
            column: number;
        }>;
        path?: string[];
        extensions?: Record<string, any>;
    }>;
};
export type GitHubApiError = {
    status: number;
    message: string;
    documentation_url?: string;
};
export type GetProjectFieldsParams = {
    projectId: string;
};
export type ProjectField = {
    id: string;
    name: string;
    type: string;
    options?: Array<{
        id: string;
        name: string;
    }>;
};
export type GetProjectColumnsParams = {
    projectId: string;
};
export type ProjectColumn = {
    id: string;
    name: string;
};
export type AddProjectItemWithColumnParams = {
    projectId: string;
    contentId: string;
    fieldId: string;
    columnId: string;
};
