go-ethereum/suave/builder/api/api_client.go
Ferran Borreguero cf687c0379 Merge conflicts
2024-03-14 14:49:02 +00:00

73 lines
2.3 KiB
Go

package api
import (
"context"
"math/big"
"github.com/attestantio/go-eth2-client/spec/phase0"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rpc"
)
var _ API = (*APIClient)(nil)
type APIClient struct {
rpc rpcClient
}
func NewClient(endpoint string) (*APIClient, error) {
clt, err := rpc.Dial(endpoint)
if err != nil {
return nil, err
}
return NewClientFromRPC(clt), nil
}
type rpcClient interface {
CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error
}
func NewClientFromRPC(rpc rpcClient) *APIClient {
return &APIClient{rpc: rpc}
}
func (a *APIClient) NewSession(ctx context.Context, args *BuildBlockArgs) (string, error) {
var id string
err := a.rpc.CallContext(ctx, &id, "suavex_newSession", args)
return id, err
}
func (a *APIClient) AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error) {
var receipt *SimulateTransactionResult
err := a.rpc.CallContext(ctx, &receipt, "suavex_addTransaction", sessionId, tx)
return receipt, err
}
func (a *APIClient) AddTransactions(ctx context.Context, sessionId string, txs types.Transactions) ([]*SimulateTransactionResult, error) {
var receipt []*SimulateTransactionResult
err := a.rpc.CallContext(ctx, &receipt, "suavex_addTransactions", sessionId, txs)
return receipt, err
}
func (a *APIClient) AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
var receipt []*SimulateBundleResult
err := a.rpc.CallContext(ctx, &receipt, "suavex_addBundles", sessionId, bundles)
return receipt, err
}
func (a *APIClient) BuildBlock(ctx context.Context, sessionId string) error {
return a.rpc.CallContext(ctx, nil, "suavex_buildBlock", sessionId)
}
func (a *APIClient) Bid(ctx context.Context, sessioId string, blsPubKey phase0.BLSPubKey) (*SubmitBlockRequest, error) {
var req *SubmitBlockRequest
err := a.rpc.CallContext(ctx, &req, "suavex_bid", sessioId, blsPubKey)
return req, err
}
func (a *APIClient) GetBalance(ctx context.Context, sessionId string, addr common.Address) (*big.Int, error) {
var balance *big.Int
err := a.rpc.CallContext(ctx, &balance, "suavex_getBalance", sessionId, addr)
return balance, err
}