package mcp

// GitHubGetIssueParams describes issue read operation in adapter.
type GitHubGetIssueParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
}

// GitHubGetPullRequestParams describes pull request read operation in adapter.
type GitHubGetPullRequestParams struct {
	Token             string
	Owner             string
	Repository        string
	PullRequestNumber int
}

// GitHubListIssueCommentsParams describes issue comments list operation in adapter.
type GitHubListIssueCommentsParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
	Limit       int
}

// GitHubGetIssueCommentParams describes issue comment read operation in adapter.
type GitHubGetIssueCommentParams struct {
	Token      string
	Owner      string
	Repository string
	CommentID  int64
}

// GitHubListIssueReactionsParams describes issue reactions list operation in adapter.
type GitHubListIssueReactionsParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
	Limit       int
}

// GitHubListIssueLabelsParams describes issue labels list operation in adapter.
type GitHubListIssueLabelsParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
}

// GitHubListBranchesParams describes branches list operation in adapter.
type GitHubListBranchesParams struct {
	Token      string
	Owner      string
	Repository string
	Limit      int
}

// GitHubEnsureBranchParams describes branch create/sync operation in adapter.
type GitHubEnsureBranchParams struct {
	Token      string
	Owner      string
	Repository string
	BranchName string
	BaseBranch string
	BaseSHA    string
	Force      bool
}

// GitHubUpsertPullRequestParams describes create/update PR operation in adapter.
type GitHubUpsertPullRequestParams struct {
	Token             string
	Owner             string
	Repository        string
	PullRequestNumber int
	Title             string
	Body              string
	HeadBranch        string
	BaseBranch        string
	Draft             bool
}

// GitHubCreateIssueCommentParams describes issue/PR comment create operation in adapter.
type GitHubCreateIssueCommentParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
	Body        string
}

// GitHubEditIssueCommentParams describes issue/PR comment update operation in adapter.
type GitHubEditIssueCommentParams struct {
	Token      string
	Owner      string
	Repository string
	CommentID  int64
	Body       string
}

// GitHubDeleteIssueCommentParams describes issue/PR comment delete operation in adapter.
type GitHubDeleteIssueCommentParams struct {
	Token      string
	Owner      string
	Repository string
	CommentID  int64
}

// GitHubCreateIssueReactionParams describes issue reaction create operation in adapter.
type GitHubCreateIssueReactionParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
	Content     string
}

// GitHubMutateLabelsParams describes labels add/remove operation in adapter.
type GitHubMutateLabelsParams struct {
	Token       string
	Owner       string
	Repository  string
	IssueNumber int
	Labels      []string
}
