// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: atomone/dynamicfee/v1/params.proto

package types

import (
	cosmossdk_io_math "cosmossdk.io/math"
	fmt "fmt"
	_ "github.com/cosmos/cosmos-proto"
	_ "github.com/cosmos/gogoproto/gogoproto"
	proto "github.com/cosmos/gogoproto/proto"
	io "io"
	math "math"
	math_bits "math/bits"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package

// Params contains the required set of parameters for the EIP1559 dynamic fee
// pricing implementation.
type Params struct {
	// Alpha is the amount we additively increase the learning rate
	// when it is above or below the target +/- threshold.
	//
	// Must be > 0.
	Alpha cosmossdk_io_math.LegacyDec `protobuf:"bytes,1,opt,name=alpha,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"alpha"`
	// Beta is the amount we multiplicatively decrease the learning rate
	// when it is within the target +/- threshold.
	//
	// Must be [0, 1].
	Beta cosmossdk_io_math.LegacyDec `protobuf:"bytes,2,opt,name=beta,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"beta"`
	// Gamma is the threshold for the learning rate. If the learning rate is
	// above or below the target +/- threshold, we additively increase the
	// learning rate by Alpha. Otherwise, we multiplicatively decrease the
	// learning rate by Beta.
	//
	// Must be [0, 0.5].
	Gamma cosmossdk_io_math.LegacyDec `protobuf:"bytes,3,opt,name=gamma,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"gamma"`
	// MinBaseGasPrice determines the initial gas price of the module and the
	// global minimum for the network.
	MinBaseGasPrice cosmossdk_io_math.LegacyDec `protobuf:"bytes,5,opt,name=min_base_gas_price,json=minBaseGasPrice,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_base_gas_price"`
	// TargetBlockUtilization is the target block utilization expressed as a
	// decimal value between 0 and 1. It is the target percentage utilization
	// of the block in relation to the consensus_params.block.max_gas parameter.
	TargetBlockUtilization cosmossdk_io_math.LegacyDec `protobuf:"bytes,6,opt,name=target_block_utilization,json=targetBlockUtilization,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"target_block_utilization"`
	// DefaultMaxBlockGas is the default max block gas.
	// This parameter is used by the dynamicfee module
	// in the case consensus_params.block.max_gas returns 0 or -1.
	DefaultMaxBlockGas uint64 `protobuf:"varint,7,opt,name=default_max_block_gas,json=defaultMaxBlockGas,proto3" json:"default_max_block_gas,omitempty"`
	// MinLearningRate is the lower bound for the learning rate.
	MinLearningRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,8,opt,name=min_learning_rate,json=minLearningRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"min_learning_rate"`
	// MaxLearningRate is the upper bound for the learning rate.
	MaxLearningRate cosmossdk_io_math.LegacyDec `protobuf:"bytes,9,opt,name=max_learning_rate,json=maxLearningRate,proto3,customtype=cosmossdk.io/math.LegacyDec" json:"max_learning_rate"`
	// Window defines the window size for calculating an adaptive learning rate
	// over a moving window of blocks.
	Window uint64 `protobuf:"varint,10,opt,name=window,proto3" json:"window,omitempty"`
	// FeeDenom is the denom that will be used for all fee payments.
	FeeDenom string `protobuf:"bytes,11,opt,name=fee_denom,json=feeDenom,proto3" json:"fee_denom,omitempty"`
	// Enabled is a boolean that determines whether the EIP1559 dynamic fee
	// pricing is enabled.
	Enabled bool `protobuf:"varint,12,opt,name=enabled,proto3" json:"enabled,omitempty"`
}

func (m *Params) Reset()         { *m = Params{} }
func (m *Params) String() string { return proto.CompactTextString(m) }
func (*Params) ProtoMessage()    {}
func (*Params) Descriptor() ([]byte, []int) {
	return fileDescriptor_3558bf83bd0cd3fd, []int{0}
}
func (m *Params) XXX_Unmarshal(b []byte) error {
	return m.Unmarshal(b)
}
func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	if deterministic {
		return xxx_messageInfo_Params.Marshal(b, m, deterministic)
	} else {
		b = b[:cap(b)]
		n, err := m.MarshalToSizedBuffer(b)
		if err != nil {
			return nil, err
		}
		return b[:n], nil
	}
}
func (m *Params) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Params.Merge(m, src)
}
func (m *Params) XXX_Size() int {
	return m.Size()
}
func (m *Params) XXX_DiscardUnknown() {
	xxx_messageInfo_Params.DiscardUnknown(m)
}

var xxx_messageInfo_Params proto.InternalMessageInfo

func (m *Params) GetDefaultMaxBlockGas() uint64 {
	if m != nil {
		return m.DefaultMaxBlockGas
	}
	return 0
}

func (m *Params) GetWindow() uint64 {
	if m != nil {
		return m.Window
	}
	return 0
}

func (m *Params) GetFeeDenom() string {
	if m != nil {
		return m.FeeDenom
	}
	return ""
}

func (m *Params) GetEnabled() bool {
	if m != nil {
		return m.Enabled
	}
	return false
}

func init() {
	proto.RegisterType((*Params)(nil), "atomone.dynamicfee.v1.Params")
}

func init() {
	proto.RegisterFile("atomone/dynamicfee/v1/params.proto", fileDescriptor_3558bf83bd0cd3fd)
}

var fileDescriptor_3558bf83bd0cd3fd = []byte{
	// 449 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x93, 0xcf, 0x6a, 0xdb, 0x40,
	0x10, 0xc6, 0xad, 0x36, 0x76, 0xec, 0x6d, 0xa1, 0x74, 0x69, 0xc2, 0x36, 0x01, 0xc5, 0xe4, 0xe4,
	0x4b, 0x24, 0x44, 0xdf, 0xc0, 0xb8, 0xf8, 0xd0, 0x14, 0x82, 0xa0, 0x97, 0x42, 0x2b, 0x46, 0xd2,
	0x78, 0xbd, 0x58, 0xbb, 0x6b, 0xb4, 0xab, 0x44, 0xee, 0x53, 0xf4, 0x61, 0xfa, 0x10, 0x39, 0x86,
	0x9e, 0x4a, 0x0f, 0xa1, 0xd8, 0xf7, 0x3e, 0x43, 0xd1, 0x9f, 0xe0, 0xb6, 0x47, 0xe5, 0xb6, 0xdf,
	0x68, 0xbe, 0xdf, 0x37, 0x23, 0x18, 0x72, 0x0e, 0x56, 0x4b, 0xad, 0xd0, 0x4f, 0x37, 0x0a, 0xa4,
	0x48, 0x16, 0x88, 0xfe, 0x75, 0xe0, 0xaf, 0x21, 0x07, 0x69, 0xbc, 0x75, 0xae, 0xad, 0xa6, 0x47,
	0x6d, 0x8f, 0xb7, 0xef, 0xf1, 0xae, 0x83, 0x93, 0xd7, 0x89, 0x36, 0x52, 0x9b, 0xa8, 0x6e, 0xf2,
	0x1b, 0xd1, 0x38, 0x4e, 0x5e, 0x71, 0xcd, 0x75, 0x53, 0xaf, 0x5e, 0x4d, 0xf5, 0xfc, 0x77, 0x9f,
	0x0c, 0xae, 0x6a, 0x30, 0x9d, 0x93, 0x3e, 0x64, 0xeb, 0x25, 0x30, 0x67, 0xec, 0x4c, 0x46, 0xd3,
	0xe0, 0xf6, 0xfe, 0xac, 0xf7, 0xf3, 0xfe, 0xec, 0xb4, 0xa1, 0x98, 0x74, 0xe5, 0x09, 0xed, 0x4b,
	0xb0, 0x4b, 0xef, 0x12, 0x39, 0x24, 0x9b, 0x19, 0x26, 0xdf, 0xbf, 0x5d, 0x90, 0x36, 0x64, 0x86,
	0x49, 0xd8, 0xf8, 0xe9, 0x5b, 0x72, 0x10, 0xa3, 0x05, 0xf6, 0xa4, 0x2b, 0xa7, 0xb6, 0x57, 0xf3,
	0x70, 0x90, 0x12, 0xd8, 0xd3, 0xce, 0xf3, 0xd4, 0x7e, 0xfa, 0x99, 0x50, 0x29, 0x54, 0x14, 0x83,
	0xc1, 0x88, 0x43, 0xf5, 0x73, 0x44, 0x82, 0xac, 0xdf, 0x95, 0xfa, 0x42, 0x0a, 0x35, 0x05, 0x83,
	0x73, 0x30, 0x57, 0x15, 0x89, 0xae, 0x08, 0xb3, 0x90, 0x73, 0xb4, 0x51, 0x9c, 0xe9, 0x64, 0x15,
	0x15, 0x56, 0x64, 0xe2, 0x0b, 0x58, 0xa1, 0x15, 0x1b, 0x74, 0x4d, 0x39, 0x6e, 0x90, 0xd3, 0x8a,
	0xf8, 0x61, 0x0f, 0xa4, 0x01, 0x39, 0x4a, 0x71, 0x01, 0x45, 0x66, 0x23, 0x09, 0x65, 0x9b, 0xc8,
	0xc1, 0xb0, 0xc3, 0xb1, 0x33, 0x39, 0x08, 0x69, 0xfb, 0xf1, 0x3d, 0x94, 0xb5, 0x75, 0x0e, 0x86,
	0x7e, 0x22, 0x2f, 0xab, 0xfd, 0x33, 0x84, 0x5c, 0x09, 0xc5, 0xa3, 0x1c, 0x2c, 0xb2, 0xe1, 0x63,
	0xd6, 0xbf, 0x6c, 0x51, 0x21, 0x58, 0xac, 0xf1, 0x50, 0xfe, 0x87, 0x1f, 0x75, 0xc7, 0x43, 0xf9,
	0x0f, 0xfe, 0x98, 0x0c, 0x6e, 0x84, 0x4a, 0xf5, 0x0d, 0x23, 0xf5, 0x86, 0xad, 0xa2, 0xa7, 0x64,
	0xb4, 0x40, 0x8c, 0x52, 0x54, 0x5a, 0xb2, 0x67, 0x55, 0x5c, 0x38, 0x5c, 0x20, 0xce, 0x2a, 0x4d,
	0x19, 0x39, 0x44, 0x05, 0x71, 0x86, 0x29, 0x7b, 0x3e, 0x76, 0x26, 0xc3, 0xf0, 0x41, 0x4e, 0xdf,
	0xdd, 0x6e, 0x5d, 0xe7, 0x6e, 0xeb, 0x3a, 0xbf, 0xb6, 0xae, 0xf3, 0x75, 0xe7, 0xf6, 0xee, 0x76,
	0x6e, 0xef, 0xc7, 0xce, 0xed, 0x7d, 0x0c, 0xb8, 0xb0, 0xcb, 0x22, 0xf6, 0x12, 0x2d, 0xfd, 0xf6,
	0xba, 0x2e, 0x96, 0x45, 0xfc, 0xf0, 0xf6, 0xcb, 0xbf, 0xef, 0xd1, 0x6e, 0xd6, 0x68, 0xe2, 0x41,
	0x7d, 0x44, 0x6f, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x93, 0x78, 0x96, 0x0b, 0xb2, 0x03, 0x00,
	0x00,
}

func (m *Params) Marshal() (dAtA []byte, err error) {
	size := m.Size()
	dAtA = make([]byte, size)
	n, err := m.MarshalToSizedBuffer(dAtA[:size])
	if err != nil {
		return nil, err
	}
	return dAtA[:n], nil
}

func (m *Params) MarshalTo(dAtA []byte) (int, error) {
	size := m.Size()
	return m.MarshalToSizedBuffer(dAtA[:size])
}

func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) {
	i := len(dAtA)
	_ = i
	var l int
	_ = l
	if m.Enabled {
		i--
		if m.Enabled {
			dAtA[i] = 1
		} else {
			dAtA[i] = 0
		}
		i--
		dAtA[i] = 0x60
	}
	if len(m.FeeDenom) > 0 {
		i -= len(m.FeeDenom)
		copy(dAtA[i:], m.FeeDenom)
		i = encodeVarintParams(dAtA, i, uint64(len(m.FeeDenom)))
		i--
		dAtA[i] = 0x5a
	}
	if m.Window != 0 {
		i = encodeVarintParams(dAtA, i, uint64(m.Window))
		i--
		dAtA[i] = 0x50
	}
	{
		size := m.MaxLearningRate.Size()
		i -= size
		if _, err := m.MaxLearningRate.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x4a
	{
		size := m.MinLearningRate.Size()
		i -= size
		if _, err := m.MinLearningRate.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x42
	if m.DefaultMaxBlockGas != 0 {
		i = encodeVarintParams(dAtA, i, uint64(m.DefaultMaxBlockGas))
		i--
		dAtA[i] = 0x38
	}
	{
		size := m.TargetBlockUtilization.Size()
		i -= size
		if _, err := m.TargetBlockUtilization.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x32
	{
		size := m.MinBaseGasPrice.Size()
		i -= size
		if _, err := m.MinBaseGasPrice.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x2a
	{
		size := m.Gamma.Size()
		i -= size
		if _, err := m.Gamma.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x1a
	{
		size := m.Beta.Size()
		i -= size
		if _, err := m.Beta.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x12
	{
		size := m.Alpha.Size()
		i -= size
		if _, err := m.Alpha.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintParams(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0xa
	return len(dAtA) - i, nil
}

func encodeVarintParams(dAtA []byte, offset int, v uint64) int {
	offset -= sovParams(v)
	base := offset
	for v >= 1<<7 {
		dAtA[offset] = uint8(v&0x7f | 0x80)
		v >>= 7
		offset++
	}
	dAtA[offset] = uint8(v)
	return base
}
func (m *Params) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = m.Alpha.Size()
	n += 1 + l + sovParams(uint64(l))
	l = m.Beta.Size()
	n += 1 + l + sovParams(uint64(l))
	l = m.Gamma.Size()
	n += 1 + l + sovParams(uint64(l))
	l = m.MinBaseGasPrice.Size()
	n += 1 + l + sovParams(uint64(l))
	l = m.TargetBlockUtilization.Size()
	n += 1 + l + sovParams(uint64(l))
	if m.DefaultMaxBlockGas != 0 {
		n += 1 + sovParams(uint64(m.DefaultMaxBlockGas))
	}
	l = m.MinLearningRate.Size()
	n += 1 + l + sovParams(uint64(l))
	l = m.MaxLearningRate.Size()
	n += 1 + l + sovParams(uint64(l))
	if m.Window != 0 {
		n += 1 + sovParams(uint64(m.Window))
	}
	l = len(m.FeeDenom)
	if l > 0 {
		n += 1 + l + sovParams(uint64(l))
	}
	if m.Enabled {
		n += 2
	}
	return n
}

func sovParams(x uint64) (n int) {
	return (math_bits.Len64(x|1) + 6) / 7
}
func sozParams(x uint64) (n int) {
	return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63))))
}
func (m *Params) Unmarshal(dAtA []byte) error {
	l := len(dAtA)
	iNdEx := 0
	for iNdEx < l {
		preIndex := iNdEx
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return ErrIntOverflowParams
			}
			if iNdEx >= l {
				return io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= uint64(b&0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		fieldNum := int32(wire >> 3)
		wireType := int(wire & 0x7)
		if wireType == 4 {
			return fmt.Errorf("proto: Params: wiretype end group for non-group")
		}
		if fieldNum <= 0 {
			return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire)
		}
		switch fieldNum {
		case 1:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Alpha", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.Alpha.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Beta", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.Beta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Gamma", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.Gamma.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 5:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field MinBaseGasPrice", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.MinBaseGasPrice.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 6:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field TargetBlockUtilization", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.TargetBlockUtilization.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 7:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field DefaultMaxBlockGas", wireType)
			}
			m.DefaultMaxBlockGas = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.DefaultMaxBlockGas |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 8:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field MinLearningRate", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.MinLearningRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 9:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field MaxLearningRate", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.MaxLearningRate.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 10:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Window", wireType)
			}
			m.Window = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.Window |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 11:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field FeeDenom", wireType)
			}
			var stringLen uint64
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				stringLen |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			intStringLen := int(stringLen)
			if intStringLen < 0 {
				return ErrInvalidLengthParams
			}
			postIndex := iNdEx + intStringLen
			if postIndex < 0 {
				return ErrInvalidLengthParams
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			m.FeeDenom = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 12:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType)
			}
			var v int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowParams
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				v |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			m.Enabled = bool(v != 0)
		default:
			iNdEx = preIndex
			skippy, err := skipParams(dAtA[iNdEx:])
			if err != nil {
				return err
			}
			if (skippy < 0) || (iNdEx+skippy) < 0 {
				return ErrInvalidLengthParams
			}
			if (iNdEx + skippy) > l {
				return io.ErrUnexpectedEOF
			}
			iNdEx += skippy
		}
	}

	if iNdEx > l {
		return io.ErrUnexpectedEOF
	}
	return nil
}
func skipParams(dAtA []byte) (n int, err error) {
	l := len(dAtA)
	iNdEx := 0
	depth := 0
	for iNdEx < l {
		var wire uint64
		for shift := uint(0); ; shift += 7 {
			if shift >= 64 {
				return 0, ErrIntOverflowParams
			}
			if iNdEx >= l {
				return 0, io.ErrUnexpectedEOF
			}
			b := dAtA[iNdEx]
			iNdEx++
			wire |= (uint64(b) & 0x7F) << shift
			if b < 0x80 {
				break
			}
		}
		wireType := int(wire & 0x7)
		switch wireType {
		case 0:
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowParams
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				iNdEx++
				if dAtA[iNdEx-1] < 0x80 {
					break
				}
			}
		case 1:
			iNdEx += 8
		case 2:
			var length int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return 0, ErrIntOverflowParams
				}
				if iNdEx >= l {
					return 0, io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				length |= (int(b) & 0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if length < 0 {
				return 0, ErrInvalidLengthParams
			}
			iNdEx += length
		case 3:
			depth++
		case 4:
			if depth == 0 {
				return 0, ErrUnexpectedEndOfGroupParams
			}
			depth--
		case 5:
			iNdEx += 4
		default:
			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
		}
		if iNdEx < 0 {
			return 0, ErrInvalidLengthParams
		}
		if depth == 0 {
			return iNdEx, nil
		}
	}
	return 0, io.ErrUnexpectedEOF
}

var (
	ErrInvalidLengthParams        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowParams          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group")
)
