package consensus

import "dejo_node/internal/transactions"

// ConsensusEngine define a interface para algoritmos de consenso.
type ConsensusEngine interface {
	// ValidateBlock verifica se o bloco atende aos critérios do consenso.
	ValidateBlock(block *transactions.Block) error

	// SelectProposer retorna o ID do validador responsável por propor o próximo bloco.
	SelectProposer(height uint64) (string, error)

	// FinalizeBlock aplica qualquer regra de finalização (ex: selar, assinar, etc).
	FinalizeBlock(block *transactions.Block) error
}