package channel

import (
	"context"

	"github.com/tidbcloud/AgentTeam/internal/api/daemon"
	"github.com/tidbcloud/AgentTeam/internal/store/agent"
)

// ThreadReviewHub forwards review requests to the owning daemon.
type ThreadReviewHub interface {
	GetAgentReviewSummary(ctx context.Context, machineID string, agentID string, targetPath string, baseRef string, headRef string, comparisonMode string) (agent.AgentReviewSummary, error)
	GetAgentReviewSnapshot(ctx context.Context, machineID string, agentID string, targetPath string, baseRef string, headRef string, comparisonMode string) (agent.AgentReviewSnapshot, error)
	GetAgentReviewFingerprint(ctx context.Context, machineID string, agentID string, targetPath string, baseRef string, headRef string, comparisonMode string) (agent.AgentReviewFingerprint, error)
	ListAgentReviewFiles(ctx context.Context, machineID string, agentID string, targetPath string, scope string, baseRef string, headRef string, comparisonMode string) ([]agent.AgentReviewFile, error)
	GetAgentReviewDiff(ctx context.Context, machineID string, agentID string, targetPath string, scope string, path string, baseRef string, headRef string, comparisonMode string) (agent.AgentReviewDiff, error)
	GetAgentReviewDiffBatch(ctx context.Context, machineID string, agentID string, targetPath string, scope string, paths []string, baseRef string, headRef string, comparisonMode string) (map[string]daemon.AgentReviewDiffBatchResult, error)
	ListAgentOutputTargetFiles(ctx context.Context, machineID string, agentID string, targetPath string, dirPath string) ([]agent.WorkspaceFile, error)
	ListAgentOutputTargetFilesPage(ctx context.Context, machineID string, agentID string, targetPath string, dirPath string, opts agent.WorkspaceListOptions) (agent.WorkspaceFilePage, error)
	ReadAgentOutputTargetFile(ctx context.Context, machineID string, agentID string, targetPath string, path string) (agent.WorkspaceFileContent, error)
}
