package transactions

import (
	"sync"
)

// SeenTracker registra hashes de transações já vistas (para evitar replay).
type SeenTracker struct {
	mu    sync.RWMutex
	hashes map[string]struct{}
}

// NewSeenTracker cria um novo tracker de transações vistas
func NewSeenTracker() *SeenTracker {
	return &SeenTracker{
		hashes: make(map[string]struct{}),
	}
}

// Seen verifica se uma transação já foi vista
func (s *SeenTracker) Seen(hash string) bool {
	s.mu.RLock()
	defer s.mu.RUnlock()
	_, exists := s.hashes[hash]
	return exists
}

// Mark marca uma transação como vista
func (s *SeenTracker) Mark(hash string) {
	s.mu.Lock()
	defer s.mu.Unlock()
	s.hashes[hash] = struct{}{}
}