package repository

import (
	"context"

	"github.com/genex/chain-indexer/internal/domain/entity"
)

// ChainClient defines the contract for interacting with the blockchain node.
// Infrastructure layer (e.g. go-ethereum ethclient) provides the concrete implementation.
type ChainClient interface {
	// GetLatestBlockNumber returns the current head block number on the chain.
	GetLatestBlockNumber(ctx context.Context) (int64, error)

	// GetBlockByNumber fetches a block and its transactions from the chain.
	GetBlockByNumber(ctx context.Context, height int64) (*entity.Block, []*entity.ChainTransaction, error)

	// Close releases any underlying connections.
	Close()
}
