// Code generated by fidlgen; DO NOT EDIT.

package drivertwoway

import (
	_bindings "syscall/zx/fidl"
)

type twoWayWithCtxAddRequest struct {
	_       struct{} `fidl:"s" fidl_size_v2:"4" fidl_alignment_v2:"2"`
	Addend1 uint16   `fidl_offset_v2:"0"`
	Addend2 uint16   `fidl_offset_v2:"2"`
}

var _mtwoWayWithCtxAddRequest = _bindings.CreateLazyMarshaler(twoWayWithCtxAddRequest{})

func (msg *twoWayWithCtxAddRequest) Marshaler() _bindings.Marshaler {
	return _mtwoWayWithCtxAddRequest
}

type twoWayWithCtxAddResponse struct {
	_   struct{} `fidl:"s" fidl_size_v2:"2" fidl_alignment_v2:"2"`
	Sum uint16   `fidl_offset_v2:"0"`
}

var _mtwoWayWithCtxAddResponse = _bindings.CreateLazyMarshaler(twoWayWithCtxAddResponse{})

func (msg *twoWayWithCtxAddResponse) Marshaler() _bindings.Marshaler {
	return _mtwoWayWithCtxAddResponse
}
