package exchain

import (
	"github.com/ethereum/go-ethereum/common"
	"github.com/holiman/uint256"
)

// ChainRPC define all rpc that provide the info on chain.
type ChainRPC interface {
	// Account Reference
	GetAccount(address common.Address) AccountInfo

	// Block Reference
	GetHeaderByNumber(number *uint256.Int)
	GetBlockByNumber(number *uint256.Int)
	GetBlockByHash(hash common.Hash)

	// Tx Reference
	SendRawTransaction(tx []byte) (common.Hash, error)
	GetTransactionByHash(hash common.Hash) (Transaction, error)
	GetTransactionReceipt(hash common.Hash) (TransactionReceipt, error)
}
