package tm

import (
	"context"
)

// TaskManager defines the interface for task management operations
type TaskManager interface {
	// Task operations
	CreateTask(ctx context.Context, req *TaskCreateRequest) (*Task, error)
	GetTask(ctx context.Context, id string) (*Task, error)
	UpdateTask(ctx context.Context, id string, req *TaskUpdateRequest) (*Task, error)
	ArchiveTask(ctx context.Context, id string) error
	ListTasks(ctx context.Context, filter *TaskFilter, page, pageSize int) (*TaskList, error)

	// Task status operations
	StartTask(ctx context.Context, id string) (*Task, error)
	CompleteTask(ctx context.Context, id string) (*Task, error)

	// Task queries
	GetTasksByOwner(ctx context.Context, ownerID string, page, pageSize int) (*TaskList, error)
	GetTasksByStatus(ctx context.Context, status TaskStatus, page, pageSize int) (*TaskList, error)
	GetTasksByPriority(ctx context.Context, priority TaskPriority, page, pageSize int) (*TaskList, error)
}
