package sync

import (
	"context"
	"fmt"

	"dejo_node/internal/storage"

	host "github.com/libp2p/go-libp2p/core/host"
)

const SyncProtocolID = "/dejo/sync/1.0.0"

// SyncManager coordena o processo de sincronização de blocos com outros peers.
type SyncManager struct {
	Ctx        context.Context
	Host       host.Host
	BlockStore *storage.BlockStore
}

// NewSyncManager cria um novo gerenciador de sincronização.
func NewSyncManager(ctx context.Context, h host.Host, bs *storage.BlockStore) *SyncManager {
	manager := &SyncManager{
		Ctx:        ctx,
		Host:       h,
		BlockStore: bs,
	}

	h.SetStreamHandler(SyncProtocolID, manager.handleStream)
	fmt.Println("🔄 Handler de sync registrado para protocolo:", SyncProtocolID)

	return manager
}