package consensus

import "dejo_node/internal/transactions"

// Engine representa um mecanismo de consenso pluggable.
type Engine interface {
	// CanPropose determina se o nó atual pode propor um novo bloco
	CanPropose() bool

	// Finalize valida e finaliza o bloco antes de ser adicionado na cadeia
	Finalize(block *transactions.Block) error

	// Name retorna o nome do mecanismo de consenso ativo
	Name() string
}