package test

import "github.com/ethereum/go-ethereum/common"
import "github.com/ethereum/go-ethereum/eth"
import "github.com/ethereum/go-ethereum/rlp"
import "io"
import eth1 "github.com/ethereum/go-ethereum/eth/protocols/eth"

func (obj *Test) EncodeRLP(_w io.Writer) error {
	w := rlp.NewEncoderBuffer(_w)
	_tmp0 := w.List()
	_tmp1 := w.List()
	w.ListEnd(_tmp1)
	_tmp2 := w.List()
	w.WriteUint64(obj.B.RequestId)
	_tmp3 := w.List()
	for _, _tmp4 := range obj.B.GetReceiptsRequest {
		w.WriteBytes(_tmp4[:])
	}
	w.ListEnd(_tmp3)
	w.ListEnd(_tmp2)
	w.ListEnd(_tmp0)
	return w.Flush()
}

func (obj *Test) DecodeRLP(dec *rlp.Stream) error {
	var _tmp0 Test
	{
		if _, err := dec.List(); err != nil {
			return err
		}
		// A:
		var _tmp1 eth.MinerAPI
		{
			if _, err := dec.List(); err != nil {
				return err
			}
			if err := dec.ListEnd(); err != nil {
				return err
			}
		}
		_tmp0.A = _tmp1
		// B:
		var _tmp2 eth1.GetReceiptsPacket
		{
			if _, err := dec.List(); err != nil {
				return err
			}
			// RequestId:
			_tmp3, err := dec.Uint64()
			if err != nil {
				return err
			}
			_tmp2.RequestId = _tmp3
			// GetReceiptsRequest:
			var _tmp4 []common.Hash
			if _, err := dec.List(); err != nil {
				return err
			}
			for dec.MoreDataInList() {
				var _tmp5 common.Hash
				if err := dec.ReadBytes(_tmp5[:]); err != nil {
					return err
				}
				_tmp4 = append(_tmp4, _tmp5)
			}
			if err := dec.ListEnd(); err != nil {
				return err
			}
			_tmp2.GetReceiptsRequest = _tmp4
			if err := dec.ListEnd(); err != nil {
				return err
			}
		}
		_tmp0.B = _tmp2
		if err := dec.ListEnd(); err != nil {
			return err
		}
	}
	*obj = _tmp0
	return nil
}
