// Code generated by protoc-gen-go. DO NOT EDIT.
// source: exchange.proto

package types

import (
	context "context"
	fmt "fmt"
	math "math"

	proto "github.com/golang/protobuf/proto"
	grpc "google.golang.org/grpc"
)

// 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.ProtoPackageIsVersion3 // please upgrade the proto package

type Exchange struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Exchange) Reset()         { *m = Exchange{} }
func (m *Exchange) String() string { return proto.CompactTextString(m) }
func (*Exchange) ProtoMessage()    {}
func (*Exchange) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{0}
}

func (m *Exchange) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Exchange.Unmarshal(m, b)
}
func (m *Exchange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Exchange.Marshal(b, m, deterministic)
}
func (m *Exchange) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Exchange.Merge(m, src)
}
func (m *Exchange) XXX_Size() int {
	return xxx_messageInfo_Exchange.Size(m)
}
func (m *Exchange) XXX_DiscardUnknown() {
	xxx_messageInfo_Exchange.DiscardUnknown(m)
}

var xxx_messageInfo_Exchange proto.InternalMessageInfo

type ExchangeAction struct {
	// Types that are valid to be assigned to Value:
	//	*ExchangeAction_LimitOrder
	//	*ExchangeAction_MarketOrder
	//	*ExchangeAction_RevokeOrder
	Value                isExchangeAction_Value `protobuf_oneof:"value"`
	Ty                   int32                  `protobuf:"varint,6,opt,name=ty,proto3" json:"ty,omitempty"`
	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
	XXX_unrecognized     []byte                 `json:"-"`
	XXX_sizecache        int32                  `json:"-"`
}

func (m *ExchangeAction) Reset()         { *m = ExchangeAction{} }
func (m *ExchangeAction) String() string { return proto.CompactTextString(m) }
func (*ExchangeAction) ProtoMessage()    {}
func (*ExchangeAction) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{1}
}

func (m *ExchangeAction) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ExchangeAction.Unmarshal(m, b)
}
func (m *ExchangeAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ExchangeAction.Marshal(b, m, deterministic)
}
func (m *ExchangeAction) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ExchangeAction.Merge(m, src)
}
func (m *ExchangeAction) XXX_Size() int {
	return xxx_messageInfo_ExchangeAction.Size(m)
}
func (m *ExchangeAction) XXX_DiscardUnknown() {
	xxx_messageInfo_ExchangeAction.DiscardUnknown(m)
}

var xxx_messageInfo_ExchangeAction proto.InternalMessageInfo

type isExchangeAction_Value interface {
	isExchangeAction_Value()
}

type ExchangeAction_LimitOrder struct {
	LimitOrder *LimitOrder `protobuf:"bytes,1,opt,name=limitOrder,proto3,oneof"`
}

type ExchangeAction_MarketOrder struct {
	MarketOrder *MarketOrder `protobuf:"bytes,2,opt,name=marketOrder,proto3,oneof"`
}

type ExchangeAction_RevokeOrder struct {
	RevokeOrder *RevokeOrder `protobuf:"bytes,3,opt,name=revokeOrder,proto3,oneof"`
}

func (*ExchangeAction_LimitOrder) isExchangeAction_Value() {}

func (*ExchangeAction_MarketOrder) isExchangeAction_Value() {}

func (*ExchangeAction_RevokeOrder) isExchangeAction_Value() {}

func (m *ExchangeAction) GetValue() isExchangeAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *ExchangeAction) GetLimitOrder() *LimitOrder {
	if x, ok := m.GetValue().(*ExchangeAction_LimitOrder); ok {
		return x.LimitOrder
	}
	return nil
}

func (m *ExchangeAction) GetMarketOrder() *MarketOrder {
	if x, ok := m.GetValue().(*ExchangeAction_MarketOrder); ok {
		return x.MarketOrder
	}
	return nil
}

func (m *ExchangeAction) GetRevokeOrder() *RevokeOrder {
	if x, ok := m.GetValue().(*ExchangeAction_RevokeOrder); ok {
		return x.RevokeOrder
	}
	return nil
}

func (m *ExchangeAction) GetTy() int32 {
	if m != nil {
		return m.Ty
	}
	return 0
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*ExchangeAction) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*ExchangeAction_LimitOrder)(nil),
		(*ExchangeAction_MarketOrder)(nil),
		(*ExchangeAction_RevokeOrder)(nil),
	}
}

//限价订单
type LimitOrder struct {
	//交易对
	LeftAsset *Asset `protobuf:"bytes,1,opt,name=leftAsset,proto3" json:"leftAsset,omitempty"`
	//交易对
	RightAsset *Asset `protobuf:"bytes,2,opt,name=rightAsset,proto3" json:"rightAsset,omitempty"`
	//价格
	Price int64 `protobuf:"varint,3,opt,name=price,proto3" json:"price,omitempty"`
	//总量
	Amount int64 `protobuf:"varint,4,opt,name=amount,proto3" json:"amount,omitempty"`
	//操作， 1为买，2为卖
	Op                   int32    `protobuf:"varint,5,opt,name=op,proto3" json:"op,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *LimitOrder) Reset()         { *m = LimitOrder{} }
func (m *LimitOrder) String() string { return proto.CompactTextString(m) }
func (*LimitOrder) ProtoMessage()    {}
func (*LimitOrder) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{2}
}

func (m *LimitOrder) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_LimitOrder.Unmarshal(m, b)
}
func (m *LimitOrder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_LimitOrder.Marshal(b, m, deterministic)
}
func (m *LimitOrder) XXX_Merge(src proto.Message) {
	xxx_messageInfo_LimitOrder.Merge(m, src)
}
func (m *LimitOrder) XXX_Size() int {
	return xxx_messageInfo_LimitOrder.Size(m)
}
func (m *LimitOrder) XXX_DiscardUnknown() {
	xxx_messageInfo_LimitOrder.DiscardUnknown(m)
}

var xxx_messageInfo_LimitOrder proto.InternalMessageInfo

func (m *LimitOrder) GetLeftAsset() *Asset {
	if m != nil {
		return m.LeftAsset
	}
	return nil
}

func (m *LimitOrder) GetRightAsset() *Asset {
	if m != nil {
		return m.RightAsset
	}
	return nil
}

func (m *LimitOrder) GetPrice() int64 {
	if m != nil {
		return m.Price
	}
	return 0
}

func (m *LimitOrder) GetAmount() int64 {
	if m != nil {
		return m.Amount
	}
	return 0
}

func (m *LimitOrder) GetOp() int32 {
	if m != nil {
		return m.Op
	}
	return 0
}

//市价委托
type MarketOrder struct {
	//资产1
	LeftAsset *Asset `protobuf:"bytes,1,opt,name=leftAsset,proto3" json:"leftAsset,omitempty"`
	//资产2
	RightAsset *Asset `protobuf:"bytes,2,opt,name=rightAsset,proto3" json:"rightAsset,omitempty"`
	//总量
	Amount int64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
	//操作， 1为买，2为卖
	Op                   int32    `protobuf:"varint,4,opt,name=op,proto3" json:"op,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *MarketOrder) Reset()         { *m = MarketOrder{} }
func (m *MarketOrder) String() string { return proto.CompactTextString(m) }
func (*MarketOrder) ProtoMessage()    {}
func (*MarketOrder) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{3}
}

func (m *MarketOrder) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MarketOrder.Unmarshal(m, b)
}
func (m *MarketOrder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MarketOrder.Marshal(b, m, deterministic)
}
func (m *MarketOrder) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MarketOrder.Merge(m, src)
}
func (m *MarketOrder) XXX_Size() int {
	return xxx_messageInfo_MarketOrder.Size(m)
}
func (m *MarketOrder) XXX_DiscardUnknown() {
	xxx_messageInfo_MarketOrder.DiscardUnknown(m)
}

var xxx_messageInfo_MarketOrder proto.InternalMessageInfo

func (m *MarketOrder) GetLeftAsset() *Asset {
	if m != nil {
		return m.LeftAsset
	}
	return nil
}

func (m *MarketOrder) GetRightAsset() *Asset {
	if m != nil {
		return m.RightAsset
	}
	return nil
}

func (m *MarketOrder) GetAmount() int64 {
	if m != nil {
		return m.Amount
	}
	return 0
}

func (m *MarketOrder) GetOp() int32 {
	if m != nil {
		return m.Op
	}
	return 0
}

//撤回订单
type RevokeOrder struct {
	//订单号
	OrderID              int64    `protobuf:"varint,1,opt,name=orderID,proto3" json:"orderID,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *RevokeOrder) Reset()         { *m = RevokeOrder{} }
func (m *RevokeOrder) String() string { return proto.CompactTextString(m) }
func (*RevokeOrder) ProtoMessage()    {}
func (*RevokeOrder) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{4}
}

func (m *RevokeOrder) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_RevokeOrder.Unmarshal(m, b)
}
func (m *RevokeOrder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_RevokeOrder.Marshal(b, m, deterministic)
}
func (m *RevokeOrder) XXX_Merge(src proto.Message) {
	xxx_messageInfo_RevokeOrder.Merge(m, src)
}
func (m *RevokeOrder) XXX_Size() int {
	return xxx_messageInfo_RevokeOrder.Size(m)
}
func (m *RevokeOrder) XXX_DiscardUnknown() {
	xxx_messageInfo_RevokeOrder.DiscardUnknown(m)
}

var xxx_messageInfo_RevokeOrder proto.InternalMessageInfo

func (m *RevokeOrder) GetOrderID() int64 {
	if m != nil {
		return m.OrderID
	}
	return 0
}

//资产类型
type Asset struct {
	Execer               string   `protobuf:"bytes,1,opt,name=execer,proto3" json:"execer,omitempty"`
	Symbol               string   `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Asset) Reset()         { *m = Asset{} }
func (m *Asset) String() string { return proto.CompactTextString(m) }
func (*Asset) ProtoMessage()    {}
func (*Asset) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{5}
}

func (m *Asset) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Asset.Unmarshal(m, b)
}
func (m *Asset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Asset.Marshal(b, m, deterministic)
}
func (m *Asset) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Asset.Merge(m, src)
}
func (m *Asset) XXX_Size() int {
	return xxx_messageInfo_Asset.Size(m)
}
func (m *Asset) XXX_DiscardUnknown() {
	xxx_messageInfo_Asset.DiscardUnknown(m)
}

var xxx_messageInfo_Asset proto.InternalMessageInfo

func (m *Asset) GetExecer() string {
	if m != nil {
		return m.Execer
	}
	return ""
}

func (m *Asset) GetSymbol() string {
	if m != nil {
		return m.Symbol
	}
	return ""
}

//订单信息
type Order struct {
	OrderID int64 `protobuf:"varint,1,opt,name=orderID,proto3" json:"orderID,omitempty"`
	// Types that are valid to be assigned to Value:
	//	*Order_LimitOrder
	//	*Order_MarketOrder
	Value isOrder_Value `protobuf_oneof:"value"`
	//挂单类型
	Ty int32 `protobuf:"varint,4,opt,name=ty,proto3" json:"ty,omitempty"`
	//已经成交的数量
	Executed int64 `protobuf:"varint,5,opt,name=executed,proto3" json:"executed,omitempty"`
	//成交均价
	AVGPrice int64 `protobuf:"varint,6,opt,name=AVG_price,json=AVGPrice,proto3" json:"AVG_price,omitempty"`
	//余额
	Balance int64 `protobuf:"varint,7,opt,name=balance,proto3" json:"balance,omitempty"`
	//状态,0 挂单中ordered， 1 完成completed， 2撤回 revoked
	Status int32 `protobuf:"varint,8,opt,name=status,proto3" json:"status,omitempty"`
	//用户地址
	Addr string `protobuf:"bytes,9,opt,name=addr,proto3" json:"addr,omitempty"`
	//更新时间
	UpdateTime int64 `protobuf:"varint,10,opt,name=updateTime,proto3" json:"updateTime,omitempty"`
	//索引
	Index                int64    `protobuf:"varint,11,opt,name=index,proto3" json:"index,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Order) Reset()         { *m = Order{} }
func (m *Order) String() string { return proto.CompactTextString(m) }
func (*Order) ProtoMessage()    {}
func (*Order) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{6}
}

func (m *Order) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Order.Unmarshal(m, b)
}
func (m *Order) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Order.Marshal(b, m, deterministic)
}
func (m *Order) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Order.Merge(m, src)
}
func (m *Order) XXX_Size() int {
	return xxx_messageInfo_Order.Size(m)
}
func (m *Order) XXX_DiscardUnknown() {
	xxx_messageInfo_Order.DiscardUnknown(m)
}

var xxx_messageInfo_Order proto.InternalMessageInfo

func (m *Order) GetOrderID() int64 {
	if m != nil {
		return m.OrderID
	}
	return 0
}

type isOrder_Value interface {
	isOrder_Value()
}

type Order_LimitOrder struct {
	LimitOrder *LimitOrder `protobuf:"bytes,2,opt,name=limitOrder,proto3,oneof"`
}

type Order_MarketOrder struct {
	MarketOrder *MarketOrder `protobuf:"bytes,3,opt,name=marketOrder,proto3,oneof"`
}

func (*Order_LimitOrder) isOrder_Value() {}

func (*Order_MarketOrder) isOrder_Value() {}

func (m *Order) GetValue() isOrder_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *Order) GetLimitOrder() *LimitOrder {
	if x, ok := m.GetValue().(*Order_LimitOrder); ok {
		return x.LimitOrder
	}
	return nil
}

func (m *Order) GetMarketOrder() *MarketOrder {
	if x, ok := m.GetValue().(*Order_MarketOrder); ok {
		return x.MarketOrder
	}
	return nil
}

func (m *Order) GetTy() int32 {
	if m != nil {
		return m.Ty
	}
	return 0
}

func (m *Order) GetExecuted() int64 {
	if m != nil {
		return m.Executed
	}
	return 0
}

func (m *Order) GetAVGPrice() int64 {
	if m != nil {
		return m.AVGPrice
	}
	return 0
}

func (m *Order) GetBalance() int64 {
	if m != nil {
		return m.Balance
	}
	return 0
}

func (m *Order) GetStatus() int32 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *Order) GetAddr() string {
	if m != nil {
		return m.Addr
	}
	return ""
}

func (m *Order) GetUpdateTime() int64 {
	if m != nil {
		return m.UpdateTime
	}
	return 0
}

func (m *Order) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

// XXX_OneofWrappers is for the internal use of the proto package.
func (*Order) XXX_OneofWrappers() []interface{} {
	return []interface{}{
		(*Order_LimitOrder)(nil),
		(*Order_MarketOrder)(nil),
	}
}

//查询接口
type QueryMarketDepth struct {
	//资产1
	LeftAsset *Asset `protobuf:"bytes,1,opt,name=leftAsset,proto3" json:"leftAsset,omitempty"`
	//资产2
	RightAsset *Asset `protobuf:"bytes,2,opt,name=rightAsset,proto3" json:"rightAsset,omitempty"`
	//操作， 1为买，2为卖
	Op int32 `protobuf:"varint,3,opt,name=op,proto3" json:"op,omitempty"`
	// 这里用价格作为索引值
	PrimaryKey string `protobuf:"bytes,4,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
	//单页返回多少条记录，默认返回10条,为了系统安全最多单次只能返回20条
	Count                int32    `protobuf:"varint,5,opt,name=count,proto3" json:"count,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *QueryMarketDepth) Reset()         { *m = QueryMarketDepth{} }
func (m *QueryMarketDepth) String() string { return proto.CompactTextString(m) }
func (*QueryMarketDepth) ProtoMessage()    {}
func (*QueryMarketDepth) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{7}
}

func (m *QueryMarketDepth) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_QueryMarketDepth.Unmarshal(m, b)
}
func (m *QueryMarketDepth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_QueryMarketDepth.Marshal(b, m, deterministic)
}
func (m *QueryMarketDepth) XXX_Merge(src proto.Message) {
	xxx_messageInfo_QueryMarketDepth.Merge(m, src)
}
func (m *QueryMarketDepth) XXX_Size() int {
	return xxx_messageInfo_QueryMarketDepth.Size(m)
}
func (m *QueryMarketDepth) XXX_DiscardUnknown() {
	xxx_messageInfo_QueryMarketDepth.DiscardUnknown(m)
}

var xxx_messageInfo_QueryMarketDepth proto.InternalMessageInfo

func (m *QueryMarketDepth) GetLeftAsset() *Asset {
	if m != nil {
		return m.LeftAsset
	}
	return nil
}

func (m *QueryMarketDepth) GetRightAsset() *Asset {
	if m != nil {
		return m.RightAsset
	}
	return nil
}

func (m *QueryMarketDepth) GetOp() int32 {
	if m != nil {
		return m.Op
	}
	return 0
}

func (m *QueryMarketDepth) GetPrimaryKey() string {
	if m != nil {
		return m.PrimaryKey
	}
	return ""
}

func (m *QueryMarketDepth) GetCount() int32 {
	if m != nil {
		return m.Count
	}
	return 0
}

//市场深度
type MarketDepth struct {
	//资产1
	LeftAsset *Asset `protobuf:"bytes,1,opt,name=leftAsset,proto3" json:"leftAsset,omitempty"`
	//资产2
	RightAsset *Asset `protobuf:"bytes,2,opt,name=rightAsset,proto3" json:"rightAsset,omitempty"`
	//价格
	Price int64 `protobuf:"varint,3,opt,name=price,proto3" json:"price,omitempty"`
	//总量
	Amount int64 `protobuf:"varint,4,opt,name=amount,proto3" json:"amount,omitempty"`
	//操作， 1为买，2为卖
	Op                   int32    `protobuf:"varint,5,opt,name=op,proto3" json:"op,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *MarketDepth) Reset()         { *m = MarketDepth{} }
func (m *MarketDepth) String() string { return proto.CompactTextString(m) }
func (*MarketDepth) ProtoMessage()    {}
func (*MarketDepth) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{8}
}

func (m *MarketDepth) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MarketDepth.Unmarshal(m, b)
}
func (m *MarketDepth) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MarketDepth.Marshal(b, m, deterministic)
}
func (m *MarketDepth) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MarketDepth.Merge(m, src)
}
func (m *MarketDepth) XXX_Size() int {
	return xxx_messageInfo_MarketDepth.Size(m)
}
func (m *MarketDepth) XXX_DiscardUnknown() {
	xxx_messageInfo_MarketDepth.DiscardUnknown(m)
}

var xxx_messageInfo_MarketDepth proto.InternalMessageInfo

func (m *MarketDepth) GetLeftAsset() *Asset {
	if m != nil {
		return m.LeftAsset
	}
	return nil
}

func (m *MarketDepth) GetRightAsset() *Asset {
	if m != nil {
		return m.RightAsset
	}
	return nil
}

func (m *MarketDepth) GetPrice() int64 {
	if m != nil {
		return m.Price
	}
	return 0
}

func (m *MarketDepth) GetAmount() int64 {
	if m != nil {
		return m.Amount
	}
	return 0
}

func (m *MarketDepth) GetOp() int32 {
	if m != nil {
		return m.Op
	}
	return 0
}

//查询接口返回的市场深度列表
type MarketDepthList struct {
	List                 []*MarketDepth `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	PrimaryKey           string         `protobuf:"bytes,2,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *MarketDepthList) Reset()         { *m = MarketDepthList{} }
func (m *MarketDepthList) String() string { return proto.CompactTextString(m) }
func (*MarketDepthList) ProtoMessage()    {}
func (*MarketDepthList) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{9}
}

func (m *MarketDepthList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_MarketDepthList.Unmarshal(m, b)
}
func (m *MarketDepthList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_MarketDepthList.Marshal(b, m, deterministic)
}
func (m *MarketDepthList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_MarketDepthList.Merge(m, src)
}
func (m *MarketDepthList) XXX_Size() int {
	return xxx_messageInfo_MarketDepthList.Size(m)
}
func (m *MarketDepthList) XXX_DiscardUnknown() {
	xxx_messageInfo_MarketDepthList.DiscardUnknown(m)
}

var xxx_messageInfo_MarketDepthList proto.InternalMessageInfo

func (m *MarketDepthList) GetList() []*MarketDepth {
	if m != nil {
		return m.List
	}
	return nil
}

func (m *MarketDepthList) GetPrimaryKey() string {
	if m != nil {
		return m.PrimaryKey
	}
	return ""
}

//查询最新得成交信息,外部接口
type QueryHistoryOrderList struct {
	//资产1
	LeftAsset *Asset `protobuf:"bytes,1,opt,name=leftAsset,proto3" json:"leftAsset,omitempty"`
	//资产2
	RightAsset *Asset `protobuf:"bytes,2,opt,name=rightAsset,proto3" json:"rightAsset,omitempty"`
	// 索引值
	PrimaryKey string `protobuf:"bytes,3,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
	//单页返回多少条记录，默认返回10条,为了系统安全最多单次只能返回20条
	Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	// 0降序，1升序，默认降序
	Direction            int32    `protobuf:"varint,5,opt,name=direction,proto3" json:"direction,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *QueryHistoryOrderList) Reset()         { *m = QueryHistoryOrderList{} }
func (m *QueryHistoryOrderList) String() string { return proto.CompactTextString(m) }
func (*QueryHistoryOrderList) ProtoMessage()    {}
func (*QueryHistoryOrderList) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{10}
}

func (m *QueryHistoryOrderList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_QueryHistoryOrderList.Unmarshal(m, b)
}
func (m *QueryHistoryOrderList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_QueryHistoryOrderList.Marshal(b, m, deterministic)
}
func (m *QueryHistoryOrderList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_QueryHistoryOrderList.Merge(m, src)
}
func (m *QueryHistoryOrderList) XXX_Size() int {
	return xxx_messageInfo_QueryHistoryOrderList.Size(m)
}
func (m *QueryHistoryOrderList) XXX_DiscardUnknown() {
	xxx_messageInfo_QueryHistoryOrderList.DiscardUnknown(m)
}

var xxx_messageInfo_QueryHistoryOrderList proto.InternalMessageInfo

func (m *QueryHistoryOrderList) GetLeftAsset() *Asset {
	if m != nil {
		return m.LeftAsset
	}
	return nil
}

func (m *QueryHistoryOrderList) GetRightAsset() *Asset {
	if m != nil {
		return m.RightAsset
	}
	return nil
}

func (m *QueryHistoryOrderList) GetPrimaryKey() string {
	if m != nil {
		return m.PrimaryKey
	}
	return ""
}

func (m *QueryHistoryOrderList) GetCount() int32 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *QueryHistoryOrderList) GetDirection() int32 {
	if m != nil {
		return m.Direction
	}
	return 0
}

//根据orderID去查询订单信息
type QueryOrder struct {
	OrderID              int64    `protobuf:"varint,1,opt,name=orderID,proto3" json:"orderID,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *QueryOrder) Reset()         { *m = QueryOrder{} }
func (m *QueryOrder) String() string { return proto.CompactTextString(m) }
func (*QueryOrder) ProtoMessage()    {}
func (*QueryOrder) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{11}
}

func (m *QueryOrder) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_QueryOrder.Unmarshal(m, b)
}
func (m *QueryOrder) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_QueryOrder.Marshal(b, m, deterministic)
}
func (m *QueryOrder) XXX_Merge(src proto.Message) {
	xxx_messageInfo_QueryOrder.Merge(m, src)
}
func (m *QueryOrder) XXX_Size() int {
	return xxx_messageInfo_QueryOrder.Size(m)
}
func (m *QueryOrder) XXX_DiscardUnknown() {
	xxx_messageInfo_QueryOrder.DiscardUnknown(m)
}

var xxx_messageInfo_QueryOrder proto.InternalMessageInfo

func (m *QueryOrder) GetOrderID() int64 {
	if m != nil {
		return m.OrderID
	}
	return 0
}

//根据地址，状态查询用户自己的挂单信息
type QueryOrderList struct {
	//挂单状态必填(默认是0,只查询ordered挂单中的)
	Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status,omitempty"`
	//用户地址信息，必填
	Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	// 主键索引
	PrimaryKey string `protobuf:"bytes,3,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
	//单页返回多少条记录，默认返回10条,为了系统安全最多单次只能返回20条
	Count int32 `protobuf:"varint,4,opt,name=count,proto3" json:"count,omitempty"`
	// 0降序，1升序，默认降序
	Direction            int32    `protobuf:"varint,5,opt,name=direction,proto3" json:"direction,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *QueryOrderList) Reset()         { *m = QueryOrderList{} }
func (m *QueryOrderList) String() string { return proto.CompactTextString(m) }
func (*QueryOrderList) ProtoMessage()    {}
func (*QueryOrderList) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{12}
}

func (m *QueryOrderList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_QueryOrderList.Unmarshal(m, b)
}
func (m *QueryOrderList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_QueryOrderList.Marshal(b, m, deterministic)
}
func (m *QueryOrderList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_QueryOrderList.Merge(m, src)
}
func (m *QueryOrderList) XXX_Size() int {
	return xxx_messageInfo_QueryOrderList.Size(m)
}
func (m *QueryOrderList) XXX_DiscardUnknown() {
	xxx_messageInfo_QueryOrderList.DiscardUnknown(m)
}

var xxx_messageInfo_QueryOrderList proto.InternalMessageInfo

func (m *QueryOrderList) GetStatus() int32 {
	if m != nil {
		return m.Status
	}
	return 0
}

func (m *QueryOrderList) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *QueryOrderList) GetPrimaryKey() string {
	if m != nil {
		return m.PrimaryKey
	}
	return ""
}

func (m *QueryOrderList) GetCount() int32 {
	if m != nil {
		return m.Count
	}
	return 0
}

func (m *QueryOrderList) GetDirection() int32 {
	if m != nil {
		return m.Direction
	}
	return 0
}

//订单列表
type OrderList struct {
	List                 []*Order `protobuf:"bytes,1,rep,name=list,proto3" json:"list,omitempty"`
	PrimaryKey           string   `protobuf:"bytes,2,opt,name=primaryKey,proto3" json:"primaryKey,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *OrderList) Reset()         { *m = OrderList{} }
func (m *OrderList) String() string { return proto.CompactTextString(m) }
func (*OrderList) ProtoMessage()    {}
func (*OrderList) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{13}
}

func (m *OrderList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_OrderList.Unmarshal(m, b)
}
func (m *OrderList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_OrderList.Marshal(b, m, deterministic)
}
func (m *OrderList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_OrderList.Merge(m, src)
}
func (m *OrderList) XXX_Size() int {
	return xxx_messageInfo_OrderList.Size(m)
}
func (m *OrderList) XXX_DiscardUnknown() {
	xxx_messageInfo_OrderList.DiscardUnknown(m)
}

var xxx_messageInfo_OrderList proto.InternalMessageInfo

func (m *OrderList) GetList() []*Order {
	if m != nil {
		return m.List
	}
	return nil
}

func (m *OrderList) GetPrimaryKey() string {
	if m != nil {
		return m.PrimaryKey
	}
	return ""
}

// exchange执行票据日志
type ReceiptExchange struct {
	Order                *Order   `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"`
	MatchOrders          []*Order `protobuf:"bytes,2,rep,name=matchOrders,proto3" json:"matchOrders,omitempty"`
	Index                int64    `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ReceiptExchange) Reset()         { *m = ReceiptExchange{} }
func (m *ReceiptExchange) String() string { return proto.CompactTextString(m) }
func (*ReceiptExchange) ProtoMessage()    {}
func (*ReceiptExchange) Descriptor() ([]byte, []int) {
	return fileDescriptor_e0328a4f16f87ea1, []int{14}
}

func (m *ReceiptExchange) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ReceiptExchange.Unmarshal(m, b)
}
func (m *ReceiptExchange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ReceiptExchange.Marshal(b, m, deterministic)
}
func (m *ReceiptExchange) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ReceiptExchange.Merge(m, src)
}
func (m *ReceiptExchange) XXX_Size() int {
	return xxx_messageInfo_ReceiptExchange.Size(m)
}
func (m *ReceiptExchange) XXX_DiscardUnknown() {
	xxx_messageInfo_ReceiptExchange.DiscardUnknown(m)
}

var xxx_messageInfo_ReceiptExchange proto.InternalMessageInfo

func (m *ReceiptExchange) GetOrder() *Order {
	if m != nil {
		return m.Order
	}
	return nil
}

func (m *ReceiptExchange) GetMatchOrders() []*Order {
	if m != nil {
		return m.MatchOrders
	}
	return nil
}

func (m *ReceiptExchange) GetIndex() int64 {
	if m != nil {
		return m.Index
	}
	return 0
}

func init() {
	proto.RegisterType((*Exchange)(nil), "types.Exchange")
	proto.RegisterType((*ExchangeAction)(nil), "types.ExchangeAction")
	proto.RegisterType((*LimitOrder)(nil), "types.LimitOrder")
	proto.RegisterType((*MarketOrder)(nil), "types.MarketOrder")
	proto.RegisterType((*RevokeOrder)(nil), "types.RevokeOrder")
	proto.RegisterType((*Asset)(nil), "types.asset")
	proto.RegisterType((*Order)(nil), "types.Order")
	proto.RegisterType((*QueryMarketDepth)(nil), "types.QueryMarketDepth")
	proto.RegisterType((*MarketDepth)(nil), "types.MarketDepth")
	proto.RegisterType((*MarketDepthList)(nil), "types.MarketDepthList")
	proto.RegisterType((*QueryHistoryOrderList)(nil), "types.QueryHistoryOrderList")
	proto.RegisterType((*QueryOrder)(nil), "types.QueryOrder")
	proto.RegisterType((*QueryOrderList)(nil), "types.QueryOrderList")
	proto.RegisterType((*OrderList)(nil), "types.OrderList")
	proto.RegisterType((*ReceiptExchange)(nil), "types.ReceiptExchange")
}

func init() {
	proto.RegisterFile("exchange.proto", fileDescriptor_e0328a4f16f87ea1)
}

var fileDescriptor_e0328a4f16f87ea1 = []byte{
	// 667 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0xdd, 0x6e, 0xd3, 0x4a,
	0x10, 0xae, 0xed, 0x38, 0xa9, 0x27, 0x47, 0xe9, 0x39, 0xab, 0x73, 0x8e, 0x2c, 0x40, 0xa8, 0xf2,
	0x45, 0xa9, 0x10, 0xca, 0x45, 0x2b, 0xc1, 0x75, 0x50, 0x51, 0x8b, 0x68, 0x05, 0xac, 0x50, 0x25,
	0xae, 0x90, 0x6b, 0x0f, 0xcd, 0xaa, 0x49, 0x6c, 0xad, 0x37, 0x55, 0x2d, 0x1e, 0x82, 0x3b, 0x9e,
	0x00, 0x5e, 0x80, 0x77, 0xe0, 0x96, 0x27, 0xe0, 0x61, 0xd0, 0xce, 0xae, 0xe3, 0x4d, 0x5b, 0xd4,
	0x0a, 0x94, 0x3b, 0x7f, 0xf3, 0xb3, 0xfe, 0x66, 0xe6, 0x9b, 0x5d, 0x18, 0xe0, 0x45, 0x36, 0x4e,
	0x67, 0xa7, 0x38, 0x2c, 0x65, 0xa1, 0x0a, 0x16, 0xaa, 0xba, 0xc4, 0x2a, 0x01, 0x58, 0x7f, 0x66,
	0x1d, 0xc9, 0x77, 0x0f, 0x06, 0x0d, 0x18, 0x65, 0x4a, 0x14, 0x33, 0xb6, 0x0b, 0x30, 0x11, 0x53,
	0xa1, 0x5e, 0xca, 0x1c, 0x65, 0xec, 0x6d, 0x7a, 0xdb, 0xfd, 0x9d, 0x7f, 0x86, 0x94, 0x3a, 0x3c,
	0x5c, 0x38, 0x0e, 0xd6, 0xb8, 0x13, 0xc6, 0x1e, 0x43, 0x7f, 0x9a, 0xca, 0x33, 0xb4, 0x59, 0x3e,
	0x65, 0x31, 0x9b, 0x75, 0xd4, 0x7a, 0x0e, 0xd6, 0xb8, 0x1b, 0xa8, 0xf3, 0x24, 0x9e, 0x17, 0x67,
	0x68, 0xf2, 0x82, 0xa5, 0x3c, 0xde, 0x7a, 0x74, 0x9e, 0x13, 0xc8, 0x06, 0xe0, 0xab, 0x3a, 0xee,
	0x6e, 0x7a, 0xdb, 0x21, 0xf7, 0x55, 0xfd, 0xb4, 0x07, 0xe1, 0x79, 0x3a, 0x99, 0x63, 0xf2, 0xd9,
	0x03, 0x68, 0x59, 0xb2, 0x87, 0x10, 0x4d, 0xf0, 0xbd, 0x1a, 0x55, 0x15, 0x2a, 0x5b, 0xcb, 0x5f,
	0xf6, 0xf4, 0x54, 0xdb, 0x78, 0xeb, 0x66, 0x8f, 0x00, 0xa4, 0x38, 0x1d, 0xdb, 0x60, 0xff, 0x9a,
	0x60, 0xc7, 0xcf, 0xfe, 0x85, 0xb0, 0x94, 0x22, 0x43, 0xe2, 0x1c, 0x70, 0x03, 0xd8, 0xff, 0xd0,
	0x4d, 0xa7, 0xc5, 0x7c, 0xa6, 0xe2, 0x0e, 0x99, 0x2d, 0xd2, 0x7c, 0x8b, 0x32, 0x0e, 0x0d, 0xdf,
	0xa2, 0x4c, 0x3e, 0x7a, 0xd0, 0x77, 0xda, 0xb2, 0x42, 0x9e, 0x2d, 0xa3, 0xe0, 0x1a, 0x46, 0x9d,
	0x05, 0xa3, 0x07, 0xd0, 0x77, 0xfa, 0xcd, 0x62, 0xe8, 0x15, 0xfa, 0xe3, 0xf9, 0x1e, 0xd1, 0x09,
	0x78, 0x03, 0x93, 0x27, 0x10, 0xa6, 0xcd, 0xc9, 0x78, 0x81, 0x99, 0x15, 0x49, 0xc4, 0x2d, 0xd2,
	0xf6, 0xaa, 0x9e, 0x9e, 0x14, 0x13, 0xe2, 0x16, 0x71, 0x8b, 0x92, 0x1f, 0x3e, 0x84, 0x37, 0x1c,
	0x7e, 0x49, 0x7c, 0xfe, 0x6f, 0x89, 0x2f, 0xb8, 0xad, 0xf8, 0x8c, 0x88, 0x3a, 0x8d, 0x88, 0xd8,
	0x1d, 0x58, 0xd7, 0x25, 0xcc, 0x15, 0xe6, 0x34, 0xaa, 0x80, 0x2f, 0x30, 0xbb, 0x0b, 0xd1, 0xe8,
	0x78, 0xff, 0x9d, 0x19, 0x79, 0xd7, 0x38, 0x47, 0xc7, 0xfb, 0xaf, 0x68, 0xea, 0x31, 0xf4, 0x4e,
	0xd2, 0x49, 0x3a, 0xcb, 0x30, 0xee, 0x99, 0x7a, 0x2c, 0xa4, 0x5e, 0xa8, 0x54, 0xcd, 0xab, 0x78,
	0x9d, 0x7e, 0x63, 0x11, 0x63, 0xd0, 0x49, 0xf3, 0x5c, 0xc6, 0x11, 0x75, 0x88, 0xbe, 0xd9, 0x7d,
	0x80, 0x79, 0x99, 0xa7, 0x0a, 0xdf, 0x88, 0x29, 0xc6, 0x40, 0x07, 0x39, 0x16, 0xad, 0x38, 0x31,
	0xcb, 0xf1, 0x22, 0xee, 0x1b, 0xc5, 0x11, 0x68, 0x95, 0xff, 0xd5, 0x83, 0xbf, 0x5f, 0xcf, 0x51,
	0xd6, 0xa6, 0xe2, 0x3d, 0x2c, 0xd5, 0x78, 0x85, 0xba, 0x32, 0xfa, 0x09, 0x1a, 0xfd, 0x68, 0xf6,
	0xa5, 0x14, 0xd3, 0x54, 0xd6, 0x2f, 0xd0, 0x34, 0x35, 0xe2, 0x8e, 0x45, 0xb3, 0xcf, 0x48, 0x86,
	0x66, 0x09, 0x0c, 0x48, 0xbe, 0x2c, 0xf6, 0x60, 0xd5, 0x7c, 0xff, 0x6c, 0x5f, 0xdf, 0xc2, 0x86,
	0x43, 0xf3, 0x50, 0x54, 0x8a, 0x6d, 0x41, 0x67, 0x22, 0x2a, 0xcd, 0x32, 0xb8, 0x22, 0x37, 0x8a,
	0xe2, 0xe4, 0xbf, 0xd4, 0x18, 0xff, 0x72, 0x63, 0x92, 0x6f, 0x1e, 0xfc, 0x47, 0x73, 0x3b, 0x10,
	0x95, 0x2a, 0x64, 0x4d, 0xda, 0xa4, 0x3f, 0xac, 0xae, 0x19, 0xcb, 0x9c, 0x82, 0x5f, 0x0f, 0xab,
	0xe3, 0x0c, 0x8b, 0xdd, 0x83, 0x28, 0x17, 0x12, 0xe9, 0x99, 0xb0, 0xbd, 0x69, 0x0d, 0xc9, 0x16,
	0x00, 0x95, 0x71, 0xd3, 0xfd, 0xf1, 0xc9, 0x83, 0x41, 0x1b, 0x48, 0x85, 0xb6, 0x5b, 0xe2, 0x2d,
	0x6d, 0x49, 0x0c, 0x3d, 0xbd, 0x19, 0x58, 0x55, 0xb6, 0x6f, 0x0d, 0x5c, 0x49, 0x01, 0x47, 0x10,
	0xb5, 0x94, 0x36, 0x97, 0xa6, 0xdb, 0x74, 0x92, 0xfc, 0xb7, 0x9c, 0xeb, 0x07, 0xd8, 0xe0, 0x98,
	0xa1, 0x28, 0x55, 0xf3, 0xc0, 0xb2, 0x04, 0xc2, 0xc2, 0x79, 0x55, 0x97, 0x4f, 0x35, 0x2e, 0x36,
	0xd4, 0x97, 0x99, 0xca, 0xc6, 0x64, 0xd4, 0x75, 0x5f, 0xfd, 0xbf, 0x1b, 0xd0, 0xde, 0x0a, 0x81,
	0x73, 0x2b, 0xec, 0x80, 0xbe, 0xca, 0xcc, 0x5f, 0x4f, 0xba, 0xf4, 0xfa, 0xef, 0xfe, 0x0c, 0x00,
	0x00, 0xff, 0xff, 0xf2, 0x3c, 0xac, 0xed, 0x0f, 0x08, 0x00, 0x00,
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// ExchangeClient is the client API for Exchange service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type ExchangeClient interface {
}

type exchangeClient struct {
	cc grpc.ClientConnInterface
}

func NewExchangeClient(cc grpc.ClientConnInterface) ExchangeClient {
	return &exchangeClient{cc}
}

// ExchangeServer is the server API for Exchange service.
type ExchangeServer interface {
}

// UnimplementedExchangeServer can be embedded to have forward compatible implementations.
type UnimplementedExchangeServer struct {
}

func RegisterExchangeServer(s *grpc.Server, srv ExchangeServer) {
	s.RegisterService(&_Exchange_serviceDesc, srv)
}

var _Exchange_serviceDesc = grpc.ServiceDesc{
	ServiceName: "types.exchange",
	HandlerType: (*ExchangeServer)(nil),
	Methods:     []grpc.MethodDesc{},
	Streams:     []grpc.StreamDesc{},
	Metadata:    "exchange.proto",
}
