// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.26.0
// 	protoc        v3.9.1
// source: mix.proto

package types

import (
	context "context"
	reflect "reflect"
	sync "sync"

	types "github.com/33cn/chain33/types"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

//区分不同的验证电路
type VerifyType int32

const (
	VerifyType_DEPOSIT        VerifyType = 0
	VerifyType_WITHDRAW       VerifyType = 1
	VerifyType_TRANSFERINPUT  VerifyType = 2
	VerifyType_TRANSFEROUTPUT VerifyType = 3
	VerifyType_AUTHORIZE      VerifyType = 4
)

// Enum value maps for VerifyType.
var (
	VerifyType_name = map[int32]string{
		0: "DEPOSIT",
		1: "WITHDRAW",
		2: "TRANSFERINPUT",
		3: "TRANSFEROUTPUT",
		4: "AUTHORIZE",
	}
	VerifyType_value = map[string]int32{
		"DEPOSIT":        0,
		"WITHDRAW":       1,
		"TRANSFERINPUT":  2,
		"TRANSFEROUTPUT": 3,
		"AUTHORIZE":      4,
	}
)

func (x VerifyType) Enum() *VerifyType {
	p := new(VerifyType)
	*p = x
	return p
}

func (x VerifyType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (VerifyType) Descriptor() protoreflect.EnumDescriptor {
	return file_mix_proto_enumTypes[0].Descriptor()
}

func (VerifyType) Type() protoreflect.EnumType {
	return &file_mix_proto_enumTypes[0]
}

func (x VerifyType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use VerifyType.Descriptor instead.
func (VerifyType) EnumDescriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{0}
}

type MixConfigType int32

const (
	MixConfigType_Verify MixConfigType = 0
	//register unify authorize pubkey
	MixConfigType_Auth MixConfigType = 1
	//for spender's pay pubkey register,DH secret
	//spender注册自己的payment公钥, 用来生成DiffHellman秘钥
	MixConfigType_Payment MixConfigType = 2
)

// Enum value maps for MixConfigType.
var (
	MixConfigType_name = map[int32]string{
		0: "Verify",
		1: "Auth",
		2: "Payment",
	}
	MixConfigType_value = map[string]int32{
		"Verify":  0,
		"Auth":    1,
		"Payment": 2,
	}
)

func (x MixConfigType) Enum() *MixConfigType {
	p := new(MixConfigType)
	*p = x
	return p
}

func (x MixConfigType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MixConfigType) Descriptor() protoreflect.EnumDescriptor {
	return file_mix_proto_enumTypes[1].Descriptor()
}

func (MixConfigType) Type() protoreflect.EnumType {
	return &file_mix_proto_enumTypes[1]
}

func (x MixConfigType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MixConfigType.Descriptor instead.
func (MixConfigType) EnumDescriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{1}
}

type MixConfigAct int32

const (
	MixConfigAct_Add    MixConfigAct = 0
	MixConfigAct_Delete MixConfigAct = 1
)

// Enum value maps for MixConfigAct.
var (
	MixConfigAct_name = map[int32]string{
		0: "Add",
		1: "Delete",
	}
	MixConfigAct_value = map[string]int32{
		"Add":    0,
		"Delete": 1,
	}
)

func (x MixConfigAct) Enum() *MixConfigAct {
	p := new(MixConfigAct)
	*p = x
	return p
}

func (x MixConfigAct) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MixConfigAct) Descriptor() protoreflect.EnumDescriptor {
	return file_mix_proto_enumTypes[2].Descriptor()
}

func (MixConfigAct) Type() protoreflect.EnumType {
	return &file_mix_proto_enumTypes[2]
}

func (x MixConfigAct) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MixConfigAct.Descriptor instead.
func (MixConfigAct) EnumDescriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{2}
}

type NoteStatus int32

const (
	NoteStatus_UNDEF    NoteStatus = 0
	NoteStatus_VALID    NoteStatus = 1 //已授权可使用 相对消费者
	NoteStatus_USED     NoteStatus = 2 //已使用
	NoteStatus_FROZEN   NoteStatus = 3 //未授权
	NoteStatus_UNFROZEN NoteStatus = 4 //已授权 相对授权者
)

// Enum value maps for NoteStatus.
var (
	NoteStatus_name = map[int32]string{
		0: "UNDEF",
		1: "VALID",
		2: "USED",
		3: "FROZEN",
		4: "UNFROZEN",
	}
	NoteStatus_value = map[string]int32{
		"UNDEF":    0,
		"VALID":    1,
		"USED":     2,
		"FROZEN":   3,
		"UNFROZEN": 4,
	}
)

func (x NoteStatus) Enum() *NoteStatus {
	p := new(NoteStatus)
	*p = x
	return p
}

func (x NoteStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (NoteStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_mix_proto_enumTypes[3].Descriptor()
}

func (NoteStatus) Type() protoreflect.EnumType {
	return &file_mix_proto_enumTypes[3]
}

func (x NoteStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use NoteStatus.Descriptor instead.
func (NoteStatus) EnumDescriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{3}
}

type MixWalletRescanStatus int32

const (
	MixWalletRescanStatus_IDLE     MixWalletRescanStatus = 0
	MixWalletRescanStatus_SCANNING MixWalletRescanStatus = 1
	MixWalletRescanStatus_FINISHED MixWalletRescanStatus = 2
)

// Enum value maps for MixWalletRescanStatus.
var (
	MixWalletRescanStatus_name = map[int32]string{
		0: "IDLE",
		1: "SCANNING",
		2: "FINISHED",
	}
	MixWalletRescanStatus_value = map[string]int32{
		"IDLE":     0,
		"SCANNING": 1,
		"FINISHED": 2,
	}
)

func (x MixWalletRescanStatus) Enum() *MixWalletRescanStatus {
	p := new(MixWalletRescanStatus)
	*p = x
	return p
}

func (x MixWalletRescanStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (MixWalletRescanStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_mix_proto_enumTypes[4].Descriptor()
}

func (MixWalletRescanStatus) Type() protoreflect.EnumType {
	return &file_mix_proto_enumTypes[4]
}

func (x MixWalletRescanStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use MixWalletRescanStatus.Descriptor instead.
func (MixWalletRescanStatus) EnumDescriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{4}
}

type ZkVerifyKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Type  VerifyType `protobuf:"varint,1,opt,name=type,proto3,enum=types.VerifyType" json:"type,omitempty"`
	Value string     `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}

func (x *ZkVerifyKey) Reset() {
	*x = ZkVerifyKey{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZkVerifyKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZkVerifyKey) ProtoMessage() {}

func (x *ZkVerifyKey) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[0]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZkVerifyKey.ProtoReflect.Descriptor instead.
func (*ZkVerifyKey) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{0}
}

func (x *ZkVerifyKey) GetType() VerifyType {
	if x != nil {
		return x.Type
	}
	return VerifyType_DEPOSIT
}

func (x *ZkVerifyKey) GetValue() string {
	if x != nil {
		return x.Value
	}
	return ""
}

type ZkVerifyKeys struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Data []*ZkVerifyKey `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"`
}

func (x *ZkVerifyKeys) Reset() {
	*x = ZkVerifyKeys{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZkVerifyKeys) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZkVerifyKeys) ProtoMessage() {}

func (x *ZkVerifyKeys) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[1]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZkVerifyKeys.ProtoReflect.Descriptor instead.
func (*ZkVerifyKeys) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{1}
}

func (x *ZkVerifyKeys) GetData() []*ZkVerifyKey {
	if x != nil {
		return x.Data
	}
	return nil
}

type AuthKeys struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"`
}

func (x *AuthKeys) Reset() {
	*x = AuthKeys{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AuthKeys) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AuthKeys) ProtoMessage() {}

func (x *AuthKeys) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[2]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AuthKeys.ProtoReflect.Descriptor instead.
func (*AuthKeys) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{2}
}

func (x *AuthKeys) GetKeys() []string {
	if x != nil {
		return x.Keys
	}
	return nil
}

type NoteAccountKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	//链上地址
	Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	//支票收款地址
	NoteReceiveAddr string `protobuf:"bytes,2,opt,name=noteReceiveAddr,proto3" json:"noteReceiveAddr,omitempty"`
	//note秘密信息接收key
	SecretReceiveKey string `protobuf:"bytes,3,opt,name=secretReceiveKey,proto3" json:"secretReceiveKey,omitempty"`
}

func (x *NoteAccountKey) Reset() {
	*x = NoteAccountKey{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *NoteAccountKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NoteAccountKey) ProtoMessage() {}

func (x *NoteAccountKey) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[3]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use NoteAccountKey.ProtoReflect.Descriptor instead.
func (*NoteAccountKey) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{3}
}

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

func (x *NoteAccountKey) GetNoteReceiveAddr() string {
	if x != nil {
		return x.NoteReceiveAddr
	}
	return ""
}

func (x *NoteAccountKey) GetSecretReceiveKey() string {
	if x != nil {
		return x.SecretReceiveKey
	}
	return ""
}

type TokenTxFeeAddrReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetExec   string `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
}

func (x *TokenTxFeeAddrReq) Reset() {
	*x = TokenTxFeeAddrReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TokenTxFeeAddrReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TokenTxFeeAddrReq) ProtoMessage() {}

func (x *TokenTxFeeAddrReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[4]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TokenTxFeeAddrReq.ProtoReflect.Descriptor instead.
func (*TokenTxFeeAddrReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{4}
}

func (x *TokenTxFeeAddrReq) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *TokenTxFeeAddrReq) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

//config verify parameter for proof
//当前authPk=mimc_hash(prikey),没有X,Y值
type MixConfigAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ty     MixConfigType `protobuf:"varint,1,opt,name=Ty,proto3,enum=types.MixConfigType" json:"Ty,omitempty"`
	Action MixConfigAct  `protobuf:"varint,2,opt,name=Action,proto3,enum=types.MixConfigAct" json:"Action,omitempty"`
	// Types that are assignable to Value:
	//	*MixConfigAction_VerifyKey
	//	*MixConfigAction_AuthKey
	//	*MixConfigAction_NoteAccountKey
	Value isMixConfigAction_Value `protobuf_oneof:"value"`
}

func (x *MixConfigAction) Reset() {
	*x = MixConfigAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixConfigAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixConfigAction) ProtoMessage() {}

func (x *MixConfigAction) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[5]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixConfigAction.ProtoReflect.Descriptor instead.
func (*MixConfigAction) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{5}
}

func (x *MixConfigAction) GetTy() MixConfigType {
	if x != nil {
		return x.Ty
	}
	return MixConfigType_Verify
}

func (x *MixConfigAction) GetAction() MixConfigAct {
	if x != nil {
		return x.Action
	}
	return MixConfigAct_Add
}

func (m *MixConfigAction) GetValue() isMixConfigAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *MixConfigAction) GetVerifyKey() *ZkVerifyKey {
	if x, ok := x.GetValue().(*MixConfigAction_VerifyKey); ok {
		return x.VerifyKey
	}
	return nil
}

func (x *MixConfigAction) GetAuthKey() string {
	if x, ok := x.GetValue().(*MixConfigAction_AuthKey); ok {
		return x.AuthKey
	}
	return ""
}

func (x *MixConfigAction) GetNoteAccountKey() *NoteAccountKey {
	if x, ok := x.GetValue().(*MixConfigAction_NoteAccountKey); ok {
		return x.NoteAccountKey
	}
	return nil
}

type isMixConfigAction_Value interface {
	isMixConfigAction_Value()
}

type MixConfigAction_VerifyKey struct {
	VerifyKey *ZkVerifyKey `protobuf:"bytes,3,opt,name=verifyKey,proto3,oneof"`
}

type MixConfigAction_AuthKey struct {
	AuthKey string `protobuf:"bytes,4,opt,name=authKey,proto3,oneof"`
}

type MixConfigAction_NoteAccountKey struct {
	NoteAccountKey *NoteAccountKey `protobuf:"bytes,5,opt,name=noteAccountKey,proto3,oneof"`
}

func (*MixConfigAction_VerifyKey) isMixConfigAction_Value() {}

func (*MixConfigAction_AuthKey) isMixConfigAction_Value() {}

func (*MixConfigAction_NoteAccountKey) isMixConfigAction_Value() {}

//DH one time pubkey with secret
type DHSecret struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	OneTimePubKey string `protobuf:"bytes,1,opt,name=oneTimePubKey,proto3" json:"oneTimePubKey,omitempty"`
	Secret        string `protobuf:"bytes,2,opt,name=secret,proto3" json:"secret,omitempty"`
}

func (x *DHSecret) Reset() {
	*x = DHSecret{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DHSecret) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DHSecret) ProtoMessage() {}

func (x *DHSecret) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[6]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DHSecret.ProtoReflect.Descriptor instead.
func (*DHSecret) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{6}
}

func (x *DHSecret) GetOneTimePubKey() string {
	if x != nil {
		return x.OneTimePubKey
	}
	return ""
}

func (x *DHSecret) GetSecret() string {
	if x != nil {
		return x.Secret
	}
	return ""
}

//Diff-Helman 加密group, for spender, returner, authorizer to decrypt
type DHSecretGroup struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Receiver  string `protobuf:"bytes,1,opt,name=receiver,proto3" json:"receiver,omitempty"`
	Returner  string `protobuf:"bytes,2,opt,name=returner,proto3" json:"returner,omitempty"`
	Authorize string `protobuf:"bytes,3,opt,name=authorize,proto3" json:"authorize,omitempty"`
}

func (x *DHSecretGroup) Reset() {
	*x = DHSecretGroup{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DHSecretGroup) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DHSecretGroup) ProtoMessage() {}

func (x *DHSecretGroup) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[7]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DHSecretGroup.ProtoReflect.Descriptor instead.
func (*DHSecretGroup) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{7}
}

func (x *DHSecretGroup) GetReceiver() string {
	if x != nil {
		return x.Receiver
	}
	return ""
}

func (x *DHSecretGroup) GetReturner() string {
	if x != nil {
		return x.Returner
	}
	return ""
}

func (x *DHSecretGroup) GetAuthorize() string {
	if x != nil {
		return x.Authorize
	}
	return ""
}

type ZkProofInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Proof       string         `protobuf:"bytes,1,opt,name=proof,proto3" json:"proof,omitempty"`
	PublicInput string         `protobuf:"bytes,2,opt,name=publicInput,proto3" json:"publicInput,omitempty"`
	Secrets     *DHSecretGroup `protobuf:"bytes,3,opt,name=secrets,proto3" json:"secrets,omitempty"`
}

func (x *ZkProofInfo) Reset() {
	*x = ZkProofInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ZkProofInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ZkProofInfo) ProtoMessage() {}

func (x *ZkProofInfo) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[8]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ZkProofInfo.ProtoReflect.Descriptor instead.
func (*ZkProofInfo) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{8}
}

func (x *ZkProofInfo) GetProof() string {
	if x != nil {
		return x.Proof
	}
	return ""
}

func (x *ZkProofInfo) GetPublicInput() string {
	if x != nil {
		return x.PublicInput
	}
	return ""
}

func (x *ZkProofInfo) GetSecrets() *DHSecretGroup {
	if x != nil {
		return x.Secrets
	}
	return nil
}

type MixDepositAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetExec   string         `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string         `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Proofs      []*ZkProofInfo `protobuf:"bytes,3,rep,name=proofs,proto3" json:"proofs,omitempty"`
}

func (x *MixDepositAction) Reset() {
	*x = MixDepositAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixDepositAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixDepositAction) ProtoMessage() {}

func (x *MixDepositAction) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[9]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixDepositAction.ProtoReflect.Descriptor instead.
func (*MixDepositAction) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{9}
}

func (x *MixDepositAction) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *MixDepositAction) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *MixDepositAction) GetProofs() []*ZkProofInfo {
	if x != nil {
		return x.Proofs
	}
	return nil
}

type MixTransferAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetExec   string         `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string         `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Inputs      []*ZkProofInfo `protobuf:"bytes,3,rep,name=inputs,proto3" json:"inputs,omitempty"`
	Output      *ZkProofInfo   `protobuf:"bytes,4,opt,name=output,proto3" json:"output,omitempty"`
	Change      *ZkProofInfo   `protobuf:"bytes,5,opt,name=change,proto3" json:"change,omitempty"`
}

func (x *MixTransferAction) Reset() {
	*x = MixTransferAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixTransferAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixTransferAction) ProtoMessage() {}

func (x *MixTransferAction) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[10]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixTransferAction.ProtoReflect.Descriptor instead.
func (*MixTransferAction) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{10}
}

func (x *MixTransferAction) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *MixTransferAction) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *MixTransferAction) GetInputs() []*ZkProofInfo {
	if x != nil {
		return x.Inputs
	}
	return nil
}

func (x *MixTransferAction) GetOutput() *ZkProofInfo {
	if x != nil {
		return x.Output
	}
	return nil
}

func (x *MixTransferAction) GetChange() *ZkProofInfo {
	if x != nil {
		return x.Change
	}
	return nil
}

type MixWithdrawAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetExec   string         `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string         `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Amount      uint64         `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"`
	Proofs      []*ZkProofInfo `protobuf:"bytes,4,rep,name=proofs,proto3" json:"proofs,omitempty"`
}

func (x *MixWithdrawAction) Reset() {
	*x = MixWithdrawAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixWithdrawAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixWithdrawAction) ProtoMessage() {}

func (x *MixWithdrawAction) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[11]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixWithdrawAction.ProtoReflect.Descriptor instead.
func (*MixWithdrawAction) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{11}
}

func (x *MixWithdrawAction) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *MixWithdrawAction) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *MixWithdrawAction) GetAmount() uint64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *MixWithdrawAction) GetProofs() []*ZkProofInfo {
	if x != nil {
		return x.Proofs
	}
	return nil
}

type MixAuthorizeAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	AssetExec   string       `protobuf:"bytes,1,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string       `protobuf:"bytes,2,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	ProofInfo   *ZkProofInfo `protobuf:"bytes,3,opt,name=proofInfo,proto3" json:"proofInfo,omitempty"`
}

func (x *MixAuthorizeAction) Reset() {
	*x = MixAuthorizeAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixAuthorizeAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixAuthorizeAction) ProtoMessage() {}

func (x *MixAuthorizeAction) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[12]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixAuthorizeAction.ProtoReflect.Descriptor instead.
func (*MixAuthorizeAction) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{12}
}

func (x *MixAuthorizeAction) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *MixAuthorizeAction) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *MixAuthorizeAction) GetProofInfo() *ZkProofInfo {
	if x != nil {
		return x.ProofInfo
	}
	return nil
}

type MixAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ty int32 `protobuf:"varint,1,opt,name=ty,proto3" json:"ty,omitempty"`
	// Types that are assignable to Value:
	//	*MixAction_Config
	//	*MixAction_Deposit
	//	*MixAction_Withdraw
	//	*MixAction_Transfer
	//	*MixAction_Authorize
	Value isMixAction_Value `protobuf_oneof:"value"`
}

func (x *MixAction) Reset() {
	*x = MixAction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixAction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixAction) ProtoMessage() {}

func (x *MixAction) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[13]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixAction.ProtoReflect.Descriptor instead.
func (*MixAction) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{13}
}

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

func (m *MixAction) GetValue() isMixAction_Value {
	if m != nil {
		return m.Value
	}
	return nil
}

func (x *MixAction) GetConfig() *MixConfigAction {
	if x, ok := x.GetValue().(*MixAction_Config); ok {
		return x.Config
	}
	return nil
}

func (x *MixAction) GetDeposit() *MixDepositAction {
	if x, ok := x.GetValue().(*MixAction_Deposit); ok {
		return x.Deposit
	}
	return nil
}

func (x *MixAction) GetWithdraw() *MixWithdrawAction {
	if x, ok := x.GetValue().(*MixAction_Withdraw); ok {
		return x.Withdraw
	}
	return nil
}

func (x *MixAction) GetTransfer() *MixTransferAction {
	if x, ok := x.GetValue().(*MixAction_Transfer); ok {
		return x.Transfer
	}
	return nil
}

func (x *MixAction) GetAuthorize() *MixAuthorizeAction {
	if x, ok := x.GetValue().(*MixAction_Authorize); ok {
		return x.Authorize
	}
	return nil
}

type isMixAction_Value interface {
	isMixAction_Value()
}

type MixAction_Config struct {
	Config *MixConfigAction `protobuf:"bytes,2,opt,name=config,proto3,oneof"`
}

type MixAction_Deposit struct {
	Deposit *MixDepositAction `protobuf:"bytes,3,opt,name=deposit,proto3,oneof"`
}

type MixAction_Withdraw struct {
	Withdraw *MixWithdrawAction `protobuf:"bytes,4,opt,name=withdraw,proto3,oneof"`
}

type MixAction_Transfer struct {
	Transfer *MixTransferAction `protobuf:"bytes,5,opt,name=transfer,proto3,oneof"`
}

type MixAction_Authorize struct {
	Authorize *MixAuthorizeAction `protobuf:"bytes,6,opt,name=authorize,proto3,oneof"`
}

func (*MixAction_Config) isMixAction_Value() {}

func (*MixAction_Deposit) isMixAction_Value() {}

func (*MixAction_Withdraw) isMixAction_Value() {}

func (*MixAction_Transfer) isMixAction_Value() {}

func (*MixAction_Authorize) isMixAction_Value() {}

type VerifyProofInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ty    VerifyType   `protobuf:"varint,1,opt,name=ty,proto3,enum=types.VerifyType" json:"ty,omitempty"`
	Proof *ZkProofInfo `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
}

func (x *VerifyProofInfo) Reset() {
	*x = VerifyProofInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *VerifyProofInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VerifyProofInfo) ProtoMessage() {}

func (x *VerifyProofInfo) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[14]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use VerifyProofInfo.ProtoReflect.Descriptor instead.
func (*VerifyProofInfo) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{14}
}

func (x *VerifyProofInfo) GetTy() VerifyType {
	if x != nil {
		return x.Ty
	}
	return VerifyType_DEPOSIT
}

func (x *VerifyProofInfo) GetProof() *ZkProofInfo {
	if x != nil {
		return x.Proof
	}
	return nil
}

//nullifer 存在value
type ExistValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Nullifier string `protobuf:"bytes,1,opt,name=nullifier,proto3" json:"nullifier,omitempty"`
	Exist     bool   `protobuf:"varint,2,opt,name=exist,proto3" json:"exist,omitempty"`
}

func (x *ExistValue) Reset() {
	*x = ExistValue{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ExistValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExistValue) ProtoMessage() {}

func (x *ExistValue) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[15]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ExistValue.ProtoReflect.Descriptor instead.
func (*ExistValue) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{15}
}

func (x *ExistValue) GetNullifier() string {
	if x != nil {
		return x.Nullifier
	}
	return ""
}

func (x *ExistValue) GetExist() bool {
	if x != nil {
		return x.Exist
	}
	return false
}

//子树用高度和hash描述，2^10=1024个叶子节点，子树高度不会超过10
type CommitSubTree struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height int32  `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Hash   []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
}

func (x *CommitSubTree) Reset() {
	*x = CommitSubTree{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommitSubTree) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommitSubTree) ProtoMessage() {}

func (x *CommitSubTree) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[16]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommitSubTree.ProtoReflect.Descriptor instead.
func (*CommitSubTree) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{16}
}

func (x *CommitSubTree) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *CommitSubTree) GetHash() []byte {
	if x != nil {
		return x.Hash
	}
	return nil
}

//merkel tree由子树和叶子组成，三种场景:1,初始只一个叶子, 2,全是子树, 3,子树加一个叶子，不会有两个叶子，两个叶子一定构成子树
type CommitSubTrees struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubTrees []*CommitSubTree `protobuf:"bytes,1,rep,name=subTrees,proto3" json:"subTrees,omitempty"`
}

func (x *CommitSubTrees) Reset() {
	*x = CommitSubTrees{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommitSubTrees) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommitSubTrees) ProtoMessage() {}

func (x *CommitSubTrees) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[17]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommitSubTrees.ProtoReflect.Descriptor instead.
func (*CommitSubTrees) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{17}
}

func (x *CommitSubTrees) GetSubTrees() []*CommitSubTree {
	if x != nil {
		return x.SubTrees
	}
	return nil
}

//描述当前commitTree的状态
//一颗merkel树1024叶子，考虑数据库读取原因，每个叶子都会存到相应seq db，待第1024次时候归档，重新开始新的merkle树，
type CommitTreeStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubTrees *CommitSubTrees `protobuf:"bytes,1,opt,name=subTrees,proto3" json:"subTrees,omitempty"`
	//1~1024叶子的归档
	SubLeavesSeq int32 `protobuf:"varint,2,opt,name=subLeavesSeq,proto3" json:"subLeavesSeq,omitempty"`
	//root的归档 从1开始,数据库占位，不然全空会往前搜索
	ArchiveRootsSeq uint64 `protobuf:"varint,3,opt,name=archiveRootsSeq,proto3" json:"archiveRootsSeq,omitempty"`
	AssetExec       string `protobuf:"bytes,4,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol     string `protobuf:"bytes,5,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
}

func (x *CommitTreeStatus) Reset() {
	*x = CommitTreeStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommitTreeStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommitTreeStatus) ProtoMessage() {}

func (x *CommitTreeStatus) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[18]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommitTreeStatus.ProtoReflect.Descriptor instead.
func (*CommitTreeStatus) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{18}
}

func (x *CommitTreeStatus) GetSubTrees() *CommitSubTrees {
	if x != nil {
		return x.SubTrees
	}
	return nil
}

func (x *CommitTreeStatus) GetSubLeavesSeq() int32 {
	if x != nil {
		return x.SubLeavesSeq
	}
	return 0
}

func (x *CommitTreeStatus) GetArchiveRootsSeq() uint64 {
	if x != nil {
		return x.ArchiveRootsSeq
	}
	return 0
}

func (x *CommitTreeStatus) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *CommitTreeStatus) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

type ReceiptCommitTreeStatus struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Prev    *CommitTreeStatus `protobuf:"bytes,1,opt,name=prev,proto3" json:"prev,omitempty"`
	Current *CommitTreeStatus `protobuf:"bytes,2,opt,name=current,proto3" json:"current,omitempty"`
}

func (x *ReceiptCommitTreeStatus) Reset() {
	*x = ReceiptCommitTreeStatus{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptCommitTreeStatus) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptCommitTreeStatus) ProtoMessage() {}

func (x *ReceiptCommitTreeStatus) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[19]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptCommitTreeStatus.ProtoReflect.Descriptor instead.
func (*ReceiptCommitTreeStatus) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{19}
}

func (x *ReceiptCommitTreeStatus) GetPrev() *CommitTreeStatus {
	if x != nil {
		return x.Prev
	}
	return nil
}

func (x *ReceiptCommitTreeStatus) GetCurrent() *CommitTreeStatus {
	if x != nil {
		return x.Current
	}
	return nil
}

type ReceiptCommitSubLeaves struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Seq  int32  `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"`
	Leaf string `protobuf:"bytes,2,opt,name=leaf,proto3" json:"leaf,omitempty"`
}

func (x *ReceiptCommitSubLeaves) Reset() {
	*x = ReceiptCommitSubLeaves{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptCommitSubLeaves) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptCommitSubLeaves) ProtoMessage() {}

func (x *ReceiptCommitSubLeaves) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[20]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptCommitSubLeaves.ProtoReflect.Descriptor instead.
func (*ReceiptCommitSubLeaves) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{20}
}

func (x *ReceiptCommitSubLeaves) GetSeq() int32 {
	if x != nil {
		return x.Seq
	}
	return 0
}

func (x *ReceiptCommitSubLeaves) GetLeaf() string {
	if x != nil {
		return x.Leaf
	}
	return ""
}

type ReceiptCommitSubRoots struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Seq  int32  `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"`
	Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"`
}

func (x *ReceiptCommitSubRoots) Reset() {
	*x = ReceiptCommitSubRoots{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptCommitSubRoots) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptCommitSubRoots) ProtoMessage() {}

func (x *ReceiptCommitSubRoots) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[21]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptCommitSubRoots.ProtoReflect.Descriptor instead.
func (*ReceiptCommitSubRoots) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{21}
}

func (x *ReceiptCommitSubRoots) GetSeq() int32 {
	if x != nil {
		return x.Seq
	}
	return 0
}

func (x *ReceiptCommitSubRoots) GetRoot() string {
	if x != nil {
		return x.Root
	}
	return ""
}

type ReceiptArchiveLeaves struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Count    int32  `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"`
	RootHash string `protobuf:"bytes,2,opt,name=rootHash,proto3" json:"rootHash,omitempty"`
	LastLeaf string `protobuf:"bytes,3,opt,name=lastLeaf,proto3" json:"lastLeaf,omitempty"`
}

func (x *ReceiptArchiveLeaves) Reset() {
	*x = ReceiptArchiveLeaves{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptArchiveLeaves) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptArchiveLeaves) ProtoMessage() {}

func (x *ReceiptArchiveLeaves) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[22]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptArchiveLeaves.ProtoReflect.Descriptor instead.
func (*ReceiptArchiveLeaves) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{22}
}

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

func (x *ReceiptArchiveLeaves) GetRootHash() string {
	if x != nil {
		return x.RootHash
	}
	return ""
}

func (x *ReceiptArchiveLeaves) GetLastLeaf() string {
	if x != nil {
		return x.LastLeaf
	}
	return ""
}

type ReceiptArchiveTreeRoot struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Seq      uint64 `protobuf:"varint,1,opt,name=seq,proto3" json:"seq,omitempty"`
	RootHash string `protobuf:"bytes,2,opt,name=rootHash,proto3" json:"rootHash,omitempty"`
}

func (x *ReceiptArchiveTreeRoot) Reset() {
	*x = ReceiptArchiveTreeRoot{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReceiptArchiveTreeRoot) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReceiptArchiveTreeRoot) ProtoMessage() {}

func (x *ReceiptArchiveTreeRoot) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[23]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReceiptArchiveTreeRoot.ProtoReflect.Descriptor instead.
func (*ReceiptArchiveTreeRoot) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{23}
}

func (x *ReceiptArchiveTreeRoot) GetSeq() uint64 {
	if x != nil {
		return x.Seq
	}
	return 0
}

func (x *ReceiptArchiveTreeRoot) GetRootHash() string {
	if x != nil {
		return x.RootHash
	}
	return ""
}

type CommitTreeLeaves struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Leaves [][]byte `protobuf:"bytes,1,rep,name=leaves,proto3" json:"leaves,omitempty"`
}

func (x *CommitTreeLeaves) Reset() {
	*x = CommitTreeLeaves{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommitTreeLeaves) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommitTreeLeaves) ProtoMessage() {}

func (x *CommitTreeLeaves) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[24]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommitTreeLeaves.ProtoReflect.Descriptor instead.
func (*CommitTreeLeaves) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{24}
}

func (x *CommitTreeLeaves) GetLeaves() [][]byte {
	if x != nil {
		return x.Leaves
	}
	return nil
}

type CommitTreeRoots struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Roots [][]byte `protobuf:"bytes,1,rep,name=roots,proto3" json:"roots,omitempty"`
}

func (x *CommitTreeRoots) Reset() {
	*x = CommitTreeRoots{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommitTreeRoots) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommitTreeRoots) ProtoMessage() {}

func (x *CommitTreeRoots) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[25]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommitTreeRoots.ProtoReflect.Descriptor instead.
func (*CommitTreeRoots) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{25}
}

func (x *CommitTreeRoots) GetRoots() [][]byte {
	if x != nil {
		return x.Roots
	}
	return nil
}

type CommitTreeProve struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	RootHash   string   `protobuf:"bytes,1,opt,name=rootHash,proto3" json:"rootHash,omitempty"`
	ProofSet   []string `protobuf:"bytes,2,rep,name=proofSet,proto3" json:"proofSet,omitempty"`
	ProofIndex uint32   `protobuf:"varint,3,opt,name=proofIndex,proto3" json:"proofIndex,omitempty"`
	NumLeaves  uint32   `protobuf:"varint,4,opt,name=numLeaves,proto3" json:"numLeaves,omitempty"`
	Helpers    []uint32 `protobuf:"varint,5,rep,packed,name=helpers,proto3" json:"helpers,omitempty"`
}

func (x *CommitTreeProve) Reset() {
	*x = CommitTreeProve{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CommitTreeProve) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CommitTreeProve) ProtoMessage() {}

func (x *CommitTreeProve) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[26]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CommitTreeProve.ProtoReflect.Descriptor instead.
func (*CommitTreeProve) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{26}
}

func (x *CommitTreeProve) GetRootHash() string {
	if x != nil {
		return x.RootHash
	}
	return ""
}

func (x *CommitTreeProve) GetProofSet() []string {
	if x != nil {
		return x.ProofSet
	}
	return nil
}

func (x *CommitTreeProve) GetProofIndex() uint32 {
	if x != nil {
		return x.ProofIndex
	}
	return 0
}

func (x *CommitTreeProve) GetNumLeaves() uint32 {
	if x != nil {
		return x.NumLeaves
	}
	return 0
}

func (x *CommitTreeProve) GetHelpers() []uint32 {
	if x != nil {
		return x.Helpers
	}
	return nil
}

type TreeInfoReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	RootHash    string `protobuf:"bytes,1,opt,name=rootHash,proto3" json:"rootHash,omitempty"`
	LeafHash    string `protobuf:"bytes,2,opt,name=leafHash,proto3" json:"leafHash,omitempty"`
	AssetExec   string `protobuf:"bytes,3,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol string `protobuf:"bytes,4,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	RootHeight  uint64 `protobuf:"varint,5,opt,name=rootHeight,proto3" json:"rootHeight,omitempty"`
}

func (x *TreeInfoReq) Reset() {
	*x = TreeInfoReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TreeInfoReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TreeInfoReq) ProtoMessage() {}

func (x *TreeInfoReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[27]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TreeInfoReq.ProtoReflect.Descriptor instead.
func (*TreeInfoReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{27}
}

func (x *TreeInfoReq) GetRootHash() string {
	if x != nil {
		return x.RootHash
	}
	return ""
}

func (x *TreeInfoReq) GetLeafHash() string {
	if x != nil {
		return x.LeafHash
	}
	return ""
}

func (x *TreeInfoReq) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *TreeInfoReq) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *TreeInfoReq) GetRootHeight() uint64 {
	if x != nil {
		return x.RootHeight
	}
	return 0
}

type TreeListResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Leaves []string `protobuf:"bytes,1,rep,name=leaves,proto3" json:"leaves,omitempty"`
}

func (x *TreeListResp) Reset() {
	*x = TreeListResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TreeListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TreeListResp) ProtoMessage() {}

func (x *TreeListResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[28]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TreeListResp.ProtoReflect.Descriptor instead.
func (*TreeListResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{28}
}

func (x *TreeListResp) GetLeaves() []string {
	if x != nil {
		return x.Leaves
	}
	return nil
}

type RootListResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Roots []string `protobuf:"bytes,1,rep,name=roots,proto3" json:"roots,omitempty"`
}

func (x *RootListResp) Reset() {
	*x = RootListResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *RootListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RootListResp) ProtoMessage() {}

func (x *RootListResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[29]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use RootListResp.ProtoReflect.Descriptor instead.
func (*RootListResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{29}
}

func (x *RootListResp) GetRoots() []string {
	if x != nil {
		return x.Roots
	}
	return nil
}

type SubTreeResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Height int32  `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"`
	Hash   string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
}

func (x *SubTreeResp) Reset() {
	*x = SubTreeResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SubTreeResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SubTreeResp) ProtoMessage() {}

func (x *SubTreeResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[30]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SubTreeResp.ProtoReflect.Descriptor instead.
func (*SubTreeResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{30}
}

func (x *SubTreeResp) GetHeight() int32 {
	if x != nil {
		return x.Height
	}
	return 0
}

func (x *SubTreeResp) GetHash() string {
	if x != nil {
		return x.Hash
	}
	return ""
}

type TreeStatusResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	SubLeavesSeq    int32          `protobuf:"varint,1,opt,name=subLeavesSeq,proto3" json:"subLeavesSeq,omitempty"`
	ArchiveRootsSeq uint64         `protobuf:"varint,2,opt,name=archiveRootsSeq,proto3" json:"archiveRootsSeq,omitempty"`
	SubTrees        []*SubTreeResp `protobuf:"bytes,3,rep,name=subTrees,proto3" json:"subTrees,omitempty"`
}

func (x *TreeStatusResp) Reset() {
	*x = TreeStatusResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TreeStatusResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TreeStatusResp) ProtoMessage() {}

func (x *TreeStatusResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[31]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TreeStatusResp.ProtoReflect.Descriptor instead.
func (*TreeStatusResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{31}
}

func (x *TreeStatusResp) GetSubLeavesSeq() int32 {
	if x != nil {
		return x.SubLeavesSeq
	}
	return 0
}

func (x *TreeStatusResp) GetArchiveRootsSeq() uint64 {
	if x != nil {
		return x.ArchiveRootsSeq
	}
	return 0
}

func (x *TreeStatusResp) GetSubTrees() []*SubTreeResp {
	if x != nil {
		return x.SubTrees
	}
	return nil
}

// mix wallet part
// receiverPubKey = hash(spendPriKey) for zk-snark note spend
type PaymentKeyPair struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReceiveKey string `protobuf:"bytes,1,opt,name=receiveKey,proto3" json:"receiveKey,omitempty"`
	SpendKey   string `protobuf:"bytes,2,opt,name=spendKey,proto3" json:"spendKey,omitempty"`
}

func (x *PaymentKeyPair) Reset() {
	*x = PaymentKeyPair{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PaymentKeyPair) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PaymentKeyPair) ProtoMessage() {}

func (x *PaymentKeyPair) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[32]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PaymentKeyPair.ProtoReflect.Descriptor instead.
func (*PaymentKeyPair) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{32}
}

func (x *PaymentKeyPair) GetReceiveKey() string {
	if x != nil {
		return x.ReceiveKey
	}
	return ""
}

func (x *PaymentKeyPair) GetSpendKey() string {
	if x != nil {
		return x.SpendKey
	}
	return ""
}

// pub = priv*G for diff-helman crypto
// out: take spender's tempPrikey*pubkey as password, tempPubkey show in note
// spender: take self prikey*tempPubkey as password to decode
type EncryptKeyPair struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PrivKey string `protobuf:"bytes,1,opt,name=privKey,proto3" json:"privKey,omitempty"`
	PubKey  string `protobuf:"bytes,2,opt,name=pubKey,proto3" json:"pubKey,omitempty"`
}

func (x *EncryptKeyPair) Reset() {
	*x = EncryptKeyPair{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EncryptKeyPair) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EncryptKeyPair) ProtoMessage() {}

func (x *EncryptKeyPair) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[33]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EncryptKeyPair.ProtoReflect.Descriptor instead.
func (*EncryptKeyPair) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{33}
}

func (x *EncryptKeyPair) GetPrivKey() string {
	if x != nil {
		return x.PrivKey
	}
	return ""
}

func (x *EncryptKeyPair) GetPubKey() string {
	if x != nil {
		return x.PubKey
	}
	return ""
}

//spend pair for note proof
//crypt pair for DH crypt/decrypt
type AccountPrivacyKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PaymentKey *PaymentKeyPair `protobuf:"bytes,1,opt,name=paymentKey,proto3" json:"paymentKey,omitempty"`
	EncryptKey *EncryptKeyPair `protobuf:"bytes,2,opt,name=encryptKey,proto3" json:"encryptKey,omitempty"`
}

func (x *AccountPrivacyKey) Reset() {
	*x = AccountPrivacyKey{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AccountPrivacyKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AccountPrivacyKey) ProtoMessage() {}

func (x *AccountPrivacyKey) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[34]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AccountPrivacyKey.ProtoReflect.Descriptor instead.
func (*AccountPrivacyKey) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{34}
}

func (x *AccountPrivacyKey) GetPaymentKey() *PaymentKeyPair {
	if x != nil {
		return x.PaymentKey
	}
	return nil
}

func (x *AccountPrivacyKey) GetEncryptKey() *EncryptKeyPair {
	if x != nil {
		return x.EncryptKey
	}
	return nil
}

type WalletAddrPrivacy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Privacy *AccountPrivacyKey `protobuf:"bytes,1,opt,name=privacy,proto3" json:"privacy,omitempty"`
	Addr    string             `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`
}

func (x *WalletAddrPrivacy) Reset() {
	*x = WalletAddrPrivacy{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletAddrPrivacy) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletAddrPrivacy) ProtoMessage() {}

func (x *WalletAddrPrivacy) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[35]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletAddrPrivacy.ProtoReflect.Descriptor instead.
func (*WalletAddrPrivacy) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{35}
}

func (x *WalletAddrPrivacy) GetPrivacy() *AccountPrivacyKey {
	if x != nil {
		return x.Privacy
	}
	return nil
}

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

type SecretData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReceiverKey  string `protobuf:"bytes,1,opt,name=receiverKey,proto3" json:"receiverKey,omitempty"`
	ReturnKey    string `protobuf:"bytes,2,opt,name=returnKey,proto3" json:"returnKey,omitempty"`
	AuthorizeKey string `protobuf:"bytes,3,opt,name=authorizeKey,proto3" json:"authorizeKey,omitempty"`
	Amount       string `protobuf:"bytes,4,opt,name=amount,proto3" json:"amount,omitempty"`
	NoteRandom   string `protobuf:"bytes,5,opt,name=noteRandom,proto3" json:"noteRandom,omitempty"`
	AssetExec    string `protobuf:"bytes,6,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol  string `protobuf:"bytes,7,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
}

func (x *SecretData) Reset() {
	*x = SecretData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *SecretData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SecretData) ProtoMessage() {}

func (x *SecretData) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[36]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SecretData.ProtoReflect.Descriptor instead.
func (*SecretData) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{36}
}

func (x *SecretData) GetReceiverKey() string {
	if x != nil {
		return x.ReceiverKey
	}
	return ""
}

func (x *SecretData) GetReturnKey() string {
	if x != nil {
		return x.ReturnKey
	}
	return ""
}

func (x *SecretData) GetAuthorizeKey() string {
	if x != nil {
		return x.AuthorizeKey
	}
	return ""
}

func (x *SecretData) GetAmount() string {
	if x != nil {
		return x.Amount
	}
	return ""
}

func (x *SecretData) GetNoteRandom() string {
	if x != nil {
		return x.NoteRandom
	}
	return ""
}

func (x *SecretData) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *SecretData) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

type EncryptSecretData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Secret  string `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"`
	PeerKey string `protobuf:"bytes,2,opt,name=peerKey,proto3" json:"peerKey,omitempty"`
}

func (x *EncryptSecretData) Reset() {
	*x = EncryptSecretData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *EncryptSecretData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EncryptSecretData) ProtoMessage() {}

func (x *EncryptSecretData) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[37]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use EncryptSecretData.ProtoReflect.Descriptor instead.
func (*EncryptSecretData) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{37}
}

func (x *EncryptSecretData) GetSecret() string {
	if x != nil {
		return x.Secret
	}
	return ""
}

func (x *EncryptSecretData) GetPeerKey() string {
	if x != nil {
		return x.PeerKey
	}
	return ""
}

type DecryptSecretData struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Secret  string `protobuf:"bytes,1,opt,name=secret,proto3" json:"secret,omitempty"`
	PriKey  string `protobuf:"bytes,2,opt,name=priKey,proto3" json:"priKey,omitempty"`
	PeerKey string `protobuf:"bytes,3,opt,name=peerKey,proto3" json:"peerKey,omitempty"`
}

func (x *DecryptSecretData) Reset() {
	*x = DecryptSecretData{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DecryptSecretData) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DecryptSecretData) ProtoMessage() {}

func (x *DecryptSecretData) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[38]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DecryptSecretData.ProtoReflect.Descriptor instead.
func (*DecryptSecretData) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{38}
}

func (x *DecryptSecretData) GetSecret() string {
	if x != nil {
		return x.Secret
	}
	return ""
}

func (x *DecryptSecretData) GetPriKey() string {
	if x != nil {
		return x.PriKey
	}
	return ""
}

func (x *DecryptSecretData) GetPeerKey() string {
	if x != nil {
		return x.PeerKey
	}
	return ""
}

//支持同时存入多个地址，多个地址具有相同的returnAddr和AuthorizeAddr,如果不同，则单个来存
type DepositInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ReceiverAddrs string `protobuf:"bytes,1,opt,name=receiverAddrs,proto3" json:"receiverAddrs,omitempty"`
	ReturnAddr    string `protobuf:"bytes,2,opt,name=returnAddr,proto3" json:"returnAddr,omitempty"`
	AuthorizeAddr string `protobuf:"bytes,3,opt,name=authorizeAddr,proto3" json:"authorizeAddr,omitempty"`
	Amounts       string `protobuf:"bytes,4,opt,name=amounts,proto3" json:"amounts,omitempty"`
}

func (x *DepositInfo) Reset() {
	*x = DepositInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DepositInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DepositInfo) ProtoMessage() {}

func (x *DepositInfo) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[39]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DepositInfo.ProtoReflect.Descriptor instead.
func (*DepositInfo) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{39}
}

func (x *DepositInfo) GetReceiverAddrs() string {
	if x != nil {
		return x.ReceiverAddrs
	}
	return ""
}

func (x *DepositInfo) GetReturnAddr() string {
	if x != nil {
		return x.ReturnAddr
	}
	return ""
}

func (x *DepositInfo) GetAuthorizeAddr() string {
	if x != nil {
		return x.AuthorizeAddr
	}
	return ""
}

func (x *DepositInfo) GetAmounts() string {
	if x != nil {
		return x.Amounts
	}
	return ""
}

//钱包生成deposit tx
type DepositTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Deposit *DepositInfo `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"`
	ZkPath  string       `protobuf:"bytes,2,opt,name=zkPath,proto3" json:"zkPath,omitempty"`
}

func (x *DepositTxReq) Reset() {
	*x = DepositTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DepositTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DepositTxReq) ProtoMessage() {}

func (x *DepositTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[40]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DepositTxReq.ProtoReflect.Descriptor instead.
func (*DepositTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{40}
}

func (x *DepositTxReq) GetDeposit() *DepositInfo {
	if x != nil {
		return x.Deposit
	}
	return nil
}

func (x *DepositTxReq) GetZkPath() string {
	if x != nil {
		return x.ZkPath
	}
	return ""
}

type DepositProofResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NoteHash string         `protobuf:"bytes,1,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
	Proof    *SecretData    `protobuf:"bytes,2,opt,name=proof,proto3" json:"proof,omitempty"`
	Secrets  *DHSecretGroup `protobuf:"bytes,3,opt,name=secrets,proto3" json:"secrets,omitempty"`
}

func (x *DepositProofResp) Reset() {
	*x = DepositProofResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *DepositProofResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DepositProofResp) ProtoMessage() {}

func (x *DepositProofResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[41]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DepositProofResp.ProtoReflect.Descriptor instead.
func (*DepositProofResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{41}
}

func (x *DepositProofResp) GetNoteHash() string {
	if x != nil {
		return x.NoteHash
	}
	return ""
}

func (x *DepositProofResp) GetProof() *SecretData {
	if x != nil {
		return x.Proof
	}
	return nil
}

func (x *DepositProofResp) GetSecrets() *DHSecretGroup {
	if x != nil {
		return x.Secrets
	}
	return nil
}

type TreePathProof struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TreeRootHash string   `protobuf:"bytes,1,opt,name=treeRootHash,proto3" json:"treeRootHash,omitempty"`
	TreePath     []string `protobuf:"bytes,2,rep,name=treePath,proto3" json:"treePath,omitempty"`
	Helpers      []uint32 `protobuf:"varint,3,rep,packed,name=helpers,proto3" json:"helpers,omitempty"`
}

func (x *TreePathProof) Reset() {
	*x = TreePathProof{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TreePathProof) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TreePathProof) ProtoMessage() {}

func (x *TreePathProof) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[42]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TreePathProof.ProtoReflect.Descriptor instead.
func (*TreePathProof) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{42}
}

func (x *TreePathProof) GetTreeRootHash() string {
	if x != nil {
		return x.TreeRootHash
	}
	return ""
}

func (x *TreePathProof) GetTreePath() []string {
	if x != nil {
		return x.TreePath
	}
	return nil
}

func (x *TreePathProof) GetHelpers() []uint32 {
	if x != nil {
		return x.Helpers
	}
	return nil
}

//可withdraw 多个note
type WithdrawTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TotalAmount uint64 `protobuf:"varint,1,opt,name=totalAmount,proto3" json:"totalAmount,omitempty"`
	NoteHashs   string `protobuf:"bytes,2,opt,name=noteHashs,proto3" json:"noteHashs,omitempty"` // seperate by ","
	ZkPath      string `protobuf:"bytes,3,opt,name=zkPath,proto3" json:"zkPath,omitempty"`
}

func (x *WithdrawTxReq) Reset() {
	*x = WithdrawTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WithdrawTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WithdrawTxReq) ProtoMessage() {}

func (x *WithdrawTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[43]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WithdrawTxReq.ProtoReflect.Descriptor instead.
func (*WithdrawTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{43}
}

func (x *WithdrawTxReq) GetTotalAmount() uint64 {
	if x != nil {
		return x.TotalAmount
	}
	return 0
}

func (x *WithdrawTxReq) GetNoteHashs() string {
	if x != nil {
		return x.NoteHashs
	}
	return ""
}

func (x *WithdrawTxReq) GetZkPath() string {
	if x != nil {
		return x.ZkPath
	}
	return ""
}

//只授权一个note，超过一个，toAddr不好设置
type AuthTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NoteHash        string `protobuf:"bytes,1,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
	AuthorizeToAddr string `protobuf:"bytes,3,opt,name=authorizeToAddr,proto3" json:"authorizeToAddr,omitempty"`
	ZkPath          string `protobuf:"bytes,4,opt,name=zkPath,proto3" json:"zkPath,omitempty"`
}

func (x *AuthTxReq) Reset() {
	*x = AuthTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *AuthTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AuthTxReq) ProtoMessage() {}

func (x *AuthTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[44]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use AuthTxReq.ProtoReflect.Descriptor instead.
func (*AuthTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{44}
}

func (x *AuthTxReq) GetNoteHash() string {
	if x != nil {
		return x.NoteHash
	}
	return ""
}

func (x *AuthTxReq) GetAuthorizeToAddr() string {
	if x != nil {
		return x.AuthorizeToAddr
	}
	return ""
}

func (x *AuthTxReq) GetZkPath() string {
	if x != nil {
		return x.ZkPath
	}
	return ""
}

type TransferInputTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NoteHashs string `protobuf:"bytes,1,opt,name=noteHashs,proto3" json:"noteHashs,omitempty"`
}

func (x *TransferInputTxReq) Reset() {
	*x = TransferInputTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TransferInputTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TransferInputTxReq) ProtoMessage() {}

func (x *TransferInputTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[45]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TransferInputTxReq.ProtoReflect.Descriptor instead.
func (*TransferInputTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{45}
}

func (x *TransferInputTxReq) GetNoteHashs() string {
	if x != nil {
		return x.NoteHashs
	}
	return ""
}

type TransferOutputTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Deposit *DepositInfo `protobuf:"bytes,1,opt,name=deposit,proto3" json:"deposit,omitempty"`
}

func (x *TransferOutputTxReq) Reset() {
	*x = TransferOutputTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TransferOutputTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TransferOutputTxReq) ProtoMessage() {}

func (x *TransferOutputTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[46]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TransferOutputTxReq.ProtoReflect.Descriptor instead.
func (*TransferOutputTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{46}
}

func (x *TransferOutputTxReq) GetDeposit() *DepositInfo {
	if x != nil {
		return x.Deposit
	}
	return nil
}

type TransferTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Input  *TransferInputTxReq  `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	Output *TransferOutputTxReq `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"`
	ZkPath string               `protobuf:"bytes,3,opt,name=zkPath,proto3" json:"zkPath,omitempty"`
}

func (x *TransferTxReq) Reset() {
	*x = TransferTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *TransferTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*TransferTxReq) ProtoMessage() {}

func (x *TransferTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[47]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use TransferTxReq.ProtoReflect.Descriptor instead.
func (*TransferTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{47}
}

func (x *TransferTxReq) GetInput() *TransferInputTxReq {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *TransferTxReq) GetOutput() *TransferOutputTxReq {
	if x != nil {
		return x.Output
	}
	return nil
}

func (x *TransferTxReq) GetZkPath() string {
	if x != nil {
		return x.ZkPath
	}
	return ""
}

type CreateZkKeyFileReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Ty       int32  `protobuf:"varint,1,opt,name=ty,proto3" json:"ty,omitempty"`
	SavePath string `protobuf:"bytes,2,opt,name=savePath,proto3" json:"savePath,omitempty"`
}

func (x *CreateZkKeyFileReq) Reset() {
	*x = CreateZkKeyFileReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateZkKeyFileReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateZkKeyFileReq) ProtoMessage() {}

func (x *CreateZkKeyFileReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[48]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateZkKeyFileReq.ProtoReflect.Descriptor instead.
func (*CreateZkKeyFileReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{48}
}

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

func (x *CreateZkKeyFileReq) GetSavePath() string {
	if x != nil {
		return x.SavePath
	}
	return ""
}

//加密了的input/output amount
type ShieldAmount struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	X string `protobuf:"bytes,1,opt,name=X,proto3" json:"X,omitempty"`
	Y string `protobuf:"bytes,2,opt,name=Y,proto3" json:"Y,omitempty"`
}

func (x *ShieldAmount) Reset() {
	*x = ShieldAmount{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ShieldAmount) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ShieldAmount) ProtoMessage() {}

func (x *ShieldAmount) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[49]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ShieldAmount.ProtoReflect.Descriptor instead.
func (*ShieldAmount) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{49}
}

func (x *ShieldAmount) GetX() string {
	if x != nil {
		return x.X
	}
	return ""
}

func (x *ShieldAmount) GetY() string {
	if x != nil {
		return x.Y
	}
	return ""
}

type ShieldAmountRst struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	InputRandoms []string        `protobuf:"bytes,1,rep,name=inputRandoms,proto3" json:"inputRandoms,omitempty"`
	OutputRandom string          `protobuf:"bytes,2,opt,name=outputRandom,proto3" json:"outputRandom,omitempty"`
	ChangeRandom string          `protobuf:"bytes,3,opt,name=changeRandom,proto3" json:"changeRandom,omitempty"`
	Inputs       []*ShieldAmount `protobuf:"bytes,4,rep,name=inputs,proto3" json:"inputs,omitempty"`
	Output       *ShieldAmount   `protobuf:"bytes,5,opt,name=output,proto3" json:"output,omitempty"`
	Change       *ShieldAmount   `protobuf:"bytes,6,opt,name=change,proto3" json:"change,omitempty"`
}

func (x *ShieldAmountRst) Reset() {
	*x = ShieldAmountRst{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ShieldAmountRst) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ShieldAmountRst) ProtoMessage() {}

func (x *ShieldAmountRst) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[50]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ShieldAmountRst.ProtoReflect.Descriptor instead.
func (*ShieldAmountRst) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{50}
}

func (x *ShieldAmountRst) GetInputRandoms() []string {
	if x != nil {
		return x.InputRandoms
	}
	return nil
}

func (x *ShieldAmountRst) GetOutputRandom() string {
	if x != nil {
		return x.OutputRandom
	}
	return ""
}

func (x *ShieldAmountRst) GetChangeRandom() string {
	if x != nil {
		return x.ChangeRandom
	}
	return ""
}

func (x *ShieldAmountRst) GetInputs() []*ShieldAmount {
	if x != nil {
		return x.Inputs
	}
	return nil
}

func (x *ShieldAmountRst) GetOutput() *ShieldAmount {
	if x != nil {
		return x.Output
	}
	return nil
}

func (x *ShieldAmountRst) GetChange() *ShieldAmount {
	if x != nil {
		return x.Change
	}
	return nil
}

type CreateRawTxReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	ActionTy      int32  `protobuf:"varint,1,opt,name=actionTy,proto3" json:"actionTy,omitempty"`
	Data          []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
	AssetExec     string `protobuf:"bytes,2,opt,name=assetExec,proto3" json:"assetExec,omitempty"`
	AssetSymbol   string `protobuf:"bytes,3,opt,name=assetSymbol,proto3" json:"assetSymbol,omitempty"`
	Title         string `protobuf:"bytes,6,opt,name=title,proto3" json:"title,omitempty"`                  //平行链名字
	ZkProof       string `protobuf:"bytes,7,opt,name=zkProof,proto3" json:"zkProof,omitempty"`              //输入证明内容,方便测试，空:读pk文件产生proof
	VerifyOnChain bool   `protobuf:"varint,8,opt,name=verifyOnChain,proto3" json:"verifyOnChain,omitempty"` //true:链上验证,false:本地验证
}

func (x *CreateRawTxReq) Reset() {
	*x = CreateRawTxReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *CreateRawTxReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CreateRawTxReq) ProtoMessage() {}

func (x *CreateRawTxReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[51]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use CreateRawTxReq.ProtoReflect.Descriptor instead.
func (*CreateRawTxReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{51}
}

func (x *CreateRawTxReq) GetActionTy() int32 {
	if x != nil {
		return x.ActionTy
	}
	return 0
}

func (x *CreateRawTxReq) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *CreateRawTxReq) GetAssetExec() string {
	if x != nil {
		return x.AssetExec
	}
	return ""
}

func (x *CreateRawTxReq) GetAssetSymbol() string {
	if x != nil {
		return x.AssetSymbol
	}
	return ""
}

func (x *CreateRawTxReq) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *CreateRawTxReq) GetZkProof() string {
	if x != nil {
		return x.ZkProof
	}
	return ""
}

func (x *CreateRawTxReq) GetVerifyOnChain() bool {
	if x != nil {
		return x.VerifyOnChain
	}
	return false
}

type PaymentKeysReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	PrivKey string `protobuf:"bytes,1,opt,name=privKey,proto3" json:"privKey,omitempty"` //user wallet priv key
	Addr    string `protobuf:"bytes,2,opt,name=addr,proto3" json:"addr,omitempty"`       //user addr
	Detail  int32  `protobuf:"varint,3,opt,name=detail,proto3" json:"detail,omitempty"`  //获取私钥信息
}

func (x *PaymentKeysReq) Reset() {
	*x = PaymentKeysReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PaymentKeysReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PaymentKeysReq) ProtoMessage() {}

func (x *PaymentKeysReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[52]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PaymentKeysReq.ProtoReflect.Descriptor instead.
func (*PaymentKeysReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{52}
}

func (x *PaymentKeysReq) GetPrivKey() string {
	if x != nil {
		return x.PrivKey
	}
	return ""
}

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

func (x *PaymentKeysReq) GetDetail() int32 {
	if x != nil {
		return x.Detail
	}
	return 0
}

type WalletNoteInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NoteHash           string      `protobuf:"bytes,1,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
	Nullifier          string      `protobuf:"bytes,2,opt,name=nullifier,proto3" json:"nullifier,omitempty"`
	AuthorizeSpendHash string      `protobuf:"bytes,3,opt,name=authorizeSpendHash,proto3" json:"authorizeSpendHash,omitempty"`
	AuthorizeHash      string      `protobuf:"bytes,4,opt,name=authorizeHash,proto3" json:"authorizeHash,omitempty"`
	Account            string      `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"` //账户地址
	Status             NoteStatus  `protobuf:"varint,6,opt,name=status,proto3,enum=types.NoteStatus" json:"status,omitempty"`
	Secret             *SecretData `protobuf:"bytes,7,opt,name=secret,proto3" json:"secret,omitempty"`
}

func (x *WalletNoteInfo) Reset() {
	*x = WalletNoteInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletNoteInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletNoteInfo) ProtoMessage() {}

func (x *WalletNoteInfo) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[53]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletNoteInfo.ProtoReflect.Descriptor instead.
func (*WalletNoteInfo) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{53}
}

func (x *WalletNoteInfo) GetNoteHash() string {
	if x != nil {
		return x.NoteHash
	}
	return ""
}

func (x *WalletNoteInfo) GetNullifier() string {
	if x != nil {
		return x.Nullifier
	}
	return ""
}

func (x *WalletNoteInfo) GetAuthorizeSpendHash() string {
	if x != nil {
		return x.AuthorizeSpendHash
	}
	return ""
}

func (x *WalletNoteInfo) GetAuthorizeHash() string {
	if x != nil {
		return x.AuthorizeHash
	}
	return ""
}

func (x *WalletNoteInfo) GetAccount() string {
	if x != nil {
		return x.Account
	}
	return ""
}

func (x *WalletNoteInfo) GetStatus() NoteStatus {
	if x != nil {
		return x.Status
	}
	return NoteStatus_UNDEF
}

func (x *WalletNoteInfo) GetSecret() *SecretData {
	if x != nil {
		return x.Secret
	}
	return nil
}

type WalletDbMixInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Info    *WalletNoteInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
	TxIndex string          `protobuf:"bytes,2,opt,name=txIndex,proto3" json:"txIndex,omitempty"`
}

func (x *WalletDbMixInfo) Reset() {
	*x = WalletDbMixInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletDbMixInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletDbMixInfo) ProtoMessage() {}

func (x *WalletDbMixInfo) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[54]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletDbMixInfo.ProtoReflect.Descriptor instead.
func (*WalletDbMixInfo) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{54}
}

func (x *WalletDbMixInfo) GetInfo() *WalletNoteInfo {
	if x != nil {
		return x.Info
	}
	return nil
}

func (x *WalletDbMixInfo) GetTxIndex() string {
	if x != nil {
		return x.TxIndex
	}
	return ""
}

type WalletMixIndexReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	NoteHash           string `protobuf:"bytes,1,opt,name=noteHash,proto3" json:"noteHash,omitempty"`
	Nullifier          string `protobuf:"bytes,2,opt,name=nullifier,proto3" json:"nullifier,omitempty"`
	AuthorizeSpendHash string `protobuf:"bytes,3,opt,name=authorizeSpendHash,proto3" json:"authorizeSpendHash,omitempty"`
	AuthorizeHash      string `protobuf:"bytes,4,opt,name=authorizeHash,proto3" json:"authorizeHash,omitempty"`
	Account            string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
	Status             int32  `protobuf:"varint,6,opt,name=status,proto3" json:"status,omitempty"`
	Count              int32  `protobuf:"varint,7,opt,name=count,proto3" json:"count,omitempty"`
	Direction          int32  `protobuf:"varint,8,opt,name=direction,proto3" json:"direction,omitempty"`
}

func (x *WalletMixIndexReq) Reset() {
	*x = WalletMixIndexReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletMixIndexReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletMixIndexReq) ProtoMessage() {}

func (x *WalletMixIndexReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[55]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletMixIndexReq.ProtoReflect.Descriptor instead.
func (*WalletMixIndexReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{55}
}

func (x *WalletMixIndexReq) GetNoteHash() string {
	if x != nil {
		return x.NoteHash
	}
	return ""
}

func (x *WalletMixIndexReq) GetNullifier() string {
	if x != nil {
		return x.Nullifier
	}
	return ""
}

func (x *WalletMixIndexReq) GetAuthorizeSpendHash() string {
	if x != nil {
		return x.AuthorizeSpendHash
	}
	return ""
}

func (x *WalletMixIndexReq) GetAuthorizeHash() string {
	if x != nil {
		return x.AuthorizeHash
	}
	return ""
}

func (x *WalletMixIndexReq) GetAccount() string {
	if x != nil {
		return x.Account
	}
	return ""
}

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

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

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

type WalletNoteResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Notes []*WalletNoteInfo `protobuf:"bytes,1,rep,name=notes,proto3" json:"notes,omitempty"`
}

func (x *WalletNoteResp) Reset() {
	*x = WalletNoteResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletNoteResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletNoteResp) ProtoMessage() {}

func (x *WalletNoteResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[56]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletNoteResp.ProtoReflect.Descriptor instead.
func (*WalletNoteResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{56}
}

func (x *WalletNoteResp) GetNotes() []*WalletNoteInfo {
	if x != nil {
		return x.Notes
	}
	return nil
}

type WalletEnablePrivacyRst struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	IsOK bool   `protobuf:"varint,2,opt,name=isOK,proto3" json:"isOK,omitempty"`
	Msg  string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
}

func (x *WalletEnablePrivacyRst) Reset() {
	*x = WalletEnablePrivacyRst{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletEnablePrivacyRst) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletEnablePrivacyRst) ProtoMessage() {}

func (x *WalletEnablePrivacyRst) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[57]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletEnablePrivacyRst.ProtoReflect.Descriptor instead.
func (*WalletEnablePrivacyRst) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{57}
}

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

func (x *WalletEnablePrivacyRst) GetIsOK() bool {
	if x != nil {
		return x.IsOK
	}
	return false
}

func (x *WalletEnablePrivacyRst) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

type WalletEnablePrivacyResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Resps []*WalletEnablePrivacyRst `protobuf:"bytes,1,rep,name=resps,proto3" json:"resps,omitempty"`
}

func (x *WalletEnablePrivacyResp) Reset() {
	*x = WalletEnablePrivacyResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *WalletEnablePrivacyResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WalletEnablePrivacyResp) ProtoMessage() {}

func (x *WalletEnablePrivacyResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[58]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use WalletEnablePrivacyResp.ProtoReflect.Descriptor instead.
func (*WalletEnablePrivacyResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{58}
}

func (x *WalletEnablePrivacyResp) GetResps() []*WalletEnablePrivacyRst {
	if x != nil {
		return x.Resps
	}
	return nil
}

type LocalMixTx struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Hash   string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
	Height int64  `protobuf:"varint,2,opt,name=height,proto3" json:"height,omitempty"`
	Index  int64  `protobuf:"varint,3,opt,name=index,proto3" json:"index,omitempty"`
}

func (x *LocalMixTx) Reset() {
	*x = LocalMixTx{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *LocalMixTx) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*LocalMixTx) ProtoMessage() {}

func (x *LocalMixTx) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[59]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use LocalMixTx.ProtoReflect.Descriptor instead.
func (*LocalMixTx) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{59}
}

func (x *LocalMixTx) GetHash() string {
	if x != nil {
		return x.Hash
	}
	return ""
}

func (x *LocalMixTx) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

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

type MixTxListReq struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	TxIndex   string `protobuf:"bytes,1,opt,name=txIndex,proto3" json:"txIndex,omitempty"` //primary direct query
	Hash      string `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"`
	Height    int64  `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"`
	Index     int64  `protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"`
	Count     int32  `protobuf:"varint,5,opt,name=count,proto3" json:"count,omitempty"`
	Direction int32  `protobuf:"varint,6,opt,name=direction,proto3" json:"direction,omitempty"`
}

func (x *MixTxListReq) Reset() {
	*x = MixTxListReq{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixTxListReq) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixTxListReq) ProtoMessage() {}

func (x *MixTxListReq) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[60]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixTxListReq.ProtoReflect.Descriptor instead.
func (*MixTxListReq) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{60}
}

func (x *MixTxListReq) GetTxIndex() string {
	if x != nil {
		return x.TxIndex
	}
	return ""
}

func (x *MixTxListReq) GetHash() string {
	if x != nil {
		return x.Hash
	}
	return ""
}

func (x *MixTxListReq) GetHeight() int64 {
	if x != nil {
		return x.Height
	}
	return 0
}

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

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

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

type MixTxListResp struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Txs []*LocalMixTx `protobuf:"bytes,1,rep,name=txs,proto3" json:"txs,omitempty"`
}

func (x *MixTxListResp) Reset() {
	*x = MixTxListResp{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *MixTxListResp) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MixTxListResp) ProtoMessage() {}

func (x *MixTxListResp) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[61]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use MixTxListResp.ProtoReflect.Descriptor instead.
func (*MixTxListResp) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{61}
}

func (x *MixTxListResp) GetTxs() []*LocalMixTx {
	if x != nil {
		return x.Txs
	}
	return nil
}

type PrivacyAddrResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Addr string `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	IsOK bool   `protobuf:"varint,2,opt,name=isOK,proto3" json:"isOK,omitempty"`
	Msg  string `protobuf:"bytes,3,opt,name=msg,proto3" json:"msg,omitempty"`
}

func (x *PrivacyAddrResult) Reset() {
	*x = PrivacyAddrResult{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *PrivacyAddrResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PrivacyAddrResult) ProtoMessage() {}

func (x *PrivacyAddrResult) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[62]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PrivacyAddrResult.ProtoReflect.Descriptor instead.
func (*PrivacyAddrResult) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{62}
}

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

func (x *PrivacyAddrResult) GetIsOK() bool {
	if x != nil {
		return x.IsOK
	}
	return false
}

func (x *PrivacyAddrResult) GetMsg() string {
	if x != nil {
		return x.Msg
	}
	return ""
}

type ReqEnablePrivacyRst struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Results []*PrivacyAddrResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
}

func (x *ReqEnablePrivacyRst) Reset() {
	*x = ReqEnablePrivacyRst{}
	if protoimpl.UnsafeEnabled {
		mi := &file_mix_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

func (x *ReqEnablePrivacyRst) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ReqEnablePrivacyRst) ProtoMessage() {}

func (x *ReqEnablePrivacyRst) ProtoReflect() protoreflect.Message {
	mi := &file_mix_proto_msgTypes[63]
	if protoimpl.UnsafeEnabled && x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ReqEnablePrivacyRst.ProtoReflect.Descriptor instead.
func (*ReqEnablePrivacyRst) Descriptor() ([]byte, []int) {
	return file_mix_proto_rawDescGZIP(), []int{63}
}

func (x *ReqEnablePrivacyRst) GetResults() []*PrivacyAddrResult {
	if x != nil {
		return x.Results
	}
	return nil
}

var File_mix_proto protoreflect.FileDescriptor

var file_mix_proto_rawDesc = []byte{
	0x0a, 0x09, 0x6d, 0x69, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x1a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
	0x1a, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x0b, 0x5a, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4b,
	0x65, 0x79, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
	0x36, 0x0a, 0x0c, 0x5a, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4b, 0x65, 0x79, 0x73, 0x12,
	0x26, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4b, 0x65,
	0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x1e, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x4b,
	0x65, 0x79, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x7a, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x65, 0x41,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x28, 0x0a,
	0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x41, 0x64, 0x64, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x63, 0x65,
	0x69, 0x76, 0x65, 0x41, 0x64, 0x64, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x73, 0x65, 0x63, 0x72, 0x65,
	0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x10, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
	0x4b, 0x65, 0x79, 0x22, 0x53, 0x0a, 0x11, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x54, 0x78, 0x46, 0x65,
	0x65, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x22, 0xfe, 0x01, 0x0a, 0x0f, 0x4d, 0x69, 0x78,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x02,
	0x54, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x4d, 0x69, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02,
	0x54, 0x79, 0x12, 0x2b, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0e, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x52, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12,
	0x32, 0x0a, 0x09, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x56, 0x65, 0x72,
	0x69, 0x66, 0x79, 0x4b, 0x65, 0x79, 0x48, 0x00, 0x52, 0x09, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
	0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x12,
	0x3f, 0x0a, 0x0e, 0x6e, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x65,
	0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x4e, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x48, 0x00,
	0x52, 0x0e, 0x6e, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x65, 0x79,
	0x42, 0x07, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x48, 0x0a, 0x08, 0x44, 0x48, 0x53,
	0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65,
	0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x6e,
	0x65, 0x54, 0x69, 0x6d, 0x65, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73,
	0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63,
	0x72, 0x65, 0x74, 0x22, 0x65, 0x0a, 0x0d, 0x44, 0x48, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72,
	0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x22, 0x75, 0x0a, 0x0b, 0x5a, 0x6b,
	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x6f,
	0x6f, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12,
	0x20, 0x0a, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6e, 0x70, 0x75,
	0x74, 0x12, 0x2e, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x48, 0x53, 0x65, 0x63,
	0x72, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
	0x73, 0x22, 0x7e, 0x0a, 0x10, 0x4d, 0x69, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78,
	0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45,
	0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62,
	0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53,
	0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b,
	0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x70, 0x72, 0x6f, 0x6f, 0x66,
	0x73, 0x22, 0xd7, 0x01, 0x0a, 0x11, 0x4d, 0x69, 0x78, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
	0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79,
	0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65,
	0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x2a, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x72,
	0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12,
	0x2a, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x11,
	0x4d, 0x69, 0x78, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12,
	0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f,
	0x6c, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x06, 0x70, 0x72, 0x6f,
	0x6f, 0x66, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x70,
	0x72, 0x6f, 0x6f, 0x66, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x12, 0x4d, 0x69, 0x78, 0x41, 0x75, 0x74,
	0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x30, 0x0a, 0x09,
	0x70, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49,
	0x6e, 0x66, 0x6f, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb6,
	0x02, 0x0a, 0x09, 0x4d, 0x69, 0x78, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02,
	0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x12, 0x30, 0x0a, 0x06,
	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x33,
	0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73,
	0x69, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f,
	0x73, 0x69, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x69,
	0x78, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48,
	0x00, 0x52, 0x08, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x12, 0x36, 0x0a, 0x08, 0x74,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x69, 0x78, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65,
	0x72, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x74, 0x72, 0x61, 0x6e, 0x73,
	0x66, 0x65, 0x72, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65,
	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
	0x69, 0x78, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x48, 0x00, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x42, 0x07,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5e, 0x0a, 0x0f, 0x56, 0x65, 0x72, 0x69, 0x66,
	0x79, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x02, 0x74, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x56,
	0x65, 0x72, 0x69, 0x66, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x74, 0x79, 0x12, 0x28, 0x0a,
	0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x5a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x66, 0x6f,
	0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x22, 0x40, 0x0a, 0x0a, 0x45, 0x78, 0x69, 0x73, 0x74,
	0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66, 0x69,
	0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69, 0x66,
	0x69, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x05, 0x65, 0x78, 0x69, 0x73, 0x74, 0x22, 0x3b, 0x0a, 0x0d, 0x43, 0x6f, 0x6d,
	0x6d, 0x69, 0x74, 0x53, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65,
	0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67,
	0x68, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c,
	0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x42, 0x0a, 0x0e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
	0x53, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x54,
	0x72, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70,
	0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65,
	0x52, 0x08, 0x73, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65, 0x73, 0x22, 0xd3, 0x01, 0x0a, 0x10, 0x43,
	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
	0x31, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
	0x53, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65, 0x73, 0x52, 0x08, 0x73, 0x75, 0x62, 0x54, 0x72, 0x65,
	0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x53,
	0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x4c, 0x65, 0x61,
	0x76, 0x65, 0x73, 0x53, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76,
	0x65, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x53, 0x65, 0x71, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52,
	0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x53, 0x65, 0x71,
	0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20,
	0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x05, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c,
	0x22, 0x79, 0x0a, 0x17, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69,
	0x74, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x70,
	0x72, 0x65, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x04, 0x70, 0x72, 0x65, 0x76, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x75, 0x72, 0x72,
	0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x79, 0x70, 0x65,
	0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x52, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x22, 0x3e, 0x0a, 0x16, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x62, 0x4c,
	0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x65, 0x61, 0x66, 0x22, 0x3d, 0x0a, 0x15, 0x52,
	0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x75, 0x62, 0x52,
	0x6f, 0x6f, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x64, 0x0a, 0x14, 0x52, 0x65,
	0x63, 0x65, 0x69, 0x70, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x61, 0x76,
	0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74,
	0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x65, 0x61, 0x66,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x4c, 0x65, 0x61, 0x66,
	0x22, 0x46, 0x0a, 0x16, 0x52, 0x65, 0x63, 0x65, 0x69, 0x70, 0x74, 0x41, 0x72, 0x63, 0x68, 0x69,
	0x76, 0x65, 0x54, 0x72, 0x65, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x65,
	0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08,
	0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
	0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x2a, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d,
	0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x16, 0x0a, 0x06,
	0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x06, 0x6c, 0x65,
	0x61, 0x76, 0x65, 0x73, 0x22, 0x27, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72,
	0x65, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73,
	0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x22, 0xa1, 0x01,
	0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x54, 0x72, 0x65, 0x65, 0x50, 0x72, 0x6f, 0x76,
	0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a,
	0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x65, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
	0x08, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x53, 0x65, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x6f,
	0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70,
	0x72, 0x6f, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x75, 0x6d,
	0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6e, 0x75,
	0x6d, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x6c, 0x70, 0x65,
	0x72, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72,
	0x73, 0x22, 0xa5, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x65, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
	0x71, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1a, 0x0a,
	0x08, 0x6c, 0x65, 0x61, 0x66, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x6c, 0x65, 0x61, 0x66, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73,
	0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74,
	0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x6f, 0x6f,
	0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x72,
	0x6f, 0x6f, 0x74, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x26, 0x0a, 0x0c, 0x54, 0x72, 0x65,
	0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x61,
	0x76, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x65, 0x61, 0x76, 0x65,
	0x73, 0x22, 0x24, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73,
	0x70, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
	0x52, 0x05, 0x72, 0x6f, 0x6f, 0x74, 0x73, 0x22, 0x39, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x54, 0x72,
	0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x12,
	0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61,
	0x73, 0x68, 0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x65, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x4c, 0x65, 0x61, 0x76,
	0x65, 0x73, 0x53, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x75, 0x62,
	0x4c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x53, 0x65, 0x71, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x72, 0x63,
	0x68, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x73, 0x53, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x04, 0x52, 0x0f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x73,
	0x53, 0x65, 0x71, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x54, 0x72, 0x65, 0x65, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x75,
	0x62, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x52, 0x08, 0x73, 0x75, 0x62, 0x54, 0x72,
	0x65, 0x65, 0x73, 0x22, 0x4c, 0x0a, 0x0e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65,
	0x79, 0x50, 0x61, 0x69, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
	0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x63, 0x65, 0x69,
	0x76, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65,
	0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x4b, 0x65,
	0x79, 0x22, 0x42, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x50,
	0x61, 0x69, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a,
	0x06, 0x70, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70,
	0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x70,
	0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b,
	0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b,
	0x65, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x45,
	0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x65,
	0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x4b, 0x65, 0x79, 0x22, 0x5b, 0x0a, 0x11, 0x57, 0x61, 0x6c,
	0x6c, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x32,
	0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61,
	0x63, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x22, 0xe8, 0x01, 0x0a, 0x0a, 0x53, 0x65, 0x63, 0x72, 0x65,
	0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65,
	0x72, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x65,
	0x69, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x74, 0x75, 0x72,
	0x6e, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x74, 0x75,
	0x72, 0x6e, 0x4b, 0x65, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
	0x7a, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x75, 0x74,
	0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x6e, 0x6f, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18,
	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x65, 0x52, 0x61, 0x6e, 0x64, 0x6f,
	0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x06,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12,
	0x20, 0x0a, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x07,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f,
	0x6c, 0x22, 0x45, 0x0a, 0x11, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72,
	0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x18,
	0x0a, 0x07, 0x70, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x07, 0x70, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x22, 0x5d, 0x0a, 0x11, 0x44, 0x65, 0x63, 0x72,
	0x79, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73,
	0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x4b, 0x65, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x72, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x18, 0x0a,
	0x07, 0x70, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x70, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x22, 0x93, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x70, 0x6f,
	0x73, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x69,
	0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x73, 0x12, 0x1e, 0x0a,
	0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x24, 0x0a,
	0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x41,
	0x64, 0x64, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x54, 0x0a,
	0x0c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a,
	0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x49, 0x6e,
	0x66, 0x6f, 0x52, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x7a,
	0x6b, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6b, 0x50,
	0x61, 0x74, 0x68, 0x22, 0x87, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50,
	0x72, 0x6f, 0x6f, 0x66, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x65,
	0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x65,
	0x48, 0x61, 0x73, 0x68, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x72,
	0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x70, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x2e, 0x0a,
	0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x44, 0x48, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x47,
	0x72, 0x6f, 0x75, 0x70, 0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x69, 0x0a,
	0x0d, 0x54, 0x72, 0x65, 0x65, 0x50, 0x61, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x22,
	0x0a, 0x0c, 0x74, 0x72, 0x65, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x72, 0x65, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x48, 0x61,
	0x73, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x74, 0x72, 0x65, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x65, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18,
	0x0a, 0x07, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0d, 0x52,
	0x07, 0x68, 0x65, 0x6c, 0x70, 0x65, 0x72, 0x73, 0x22, 0x67, 0x0a, 0x0d, 0x57, 0x69, 0x74, 0x68,
	0x64, 0x72, 0x61, 0x77, 0x54, 0x78, 0x52, 0x65, 0x71, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x6f, 0x74,
	0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b,
	0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e,
	0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x7a, 0x6b, 0x50,
	0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6b, 0x50, 0x61, 0x74,
	0x68, 0x22, 0x69, 0x0a, 0x09, 0x41, 0x75, 0x74, 0x68, 0x54, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1a,
	0x0a, 0x08, 0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x08, 0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x75,
	0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x54, 0x6f,
	0x41, 0x64, 0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x7a, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x22, 0x32, 0x0a, 0x12,
	0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x78, 0x52,
	0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x73, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x73,
	0x22, 0x43, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x54, 0x78, 0x52, 0x65, 0x71, 0x12, 0x2c, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x6f, 0x73,
	0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x64, 0x65,
	0x70, 0x6f, 0x73, 0x69, 0x74, 0x22, 0x8c, 0x01, 0x0a, 0x0d, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
	0x65, 0x72, 0x54, 0x78, 0x52, 0x65, 0x71, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x54,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x78, 0x52, 0x65,
	0x71, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x32, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70,
	0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54,
	0x78, 0x52, 0x65, 0x71, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06,
	0x7a, 0x6b, 0x50, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x7a, 0x6b,
	0x50, 0x61, 0x74, 0x68, 0x22, 0x40, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5a, 0x6b,
	0x4b, 0x65, 0x79, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x79,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x61,
	0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x61,
	0x76, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x2a, 0x0a, 0x0c, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64,
	0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x58, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x01, 0x58, 0x12, 0x0c, 0x0a, 0x01, 0x59, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x01, 0x59, 0x22, 0x84, 0x02, 0x0a, 0x0f, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x6d, 0x6f,
	0x75, 0x6e, 0x74, 0x52, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x52,
	0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x12, 0x22,
	0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x03,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x61, 0x6e, 0x64,
	0x6f, 0x6d, 0x12, 0x2b, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x68, 0x69, 0x65, 0x6c,
	0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12,
	0x2b, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x6d,
	0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x06,
	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x68, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x6d, 0x6f, 0x75, 0x6e,
	0x74, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xd6, 0x01, 0x0a, 0x0e, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x52, 0x61, 0x77, 0x54, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08,
	0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09,
	0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x45, 0x78, 0x65, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x73,
	0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0b, 0x61, 0x73, 0x73, 0x65, 0x74, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x12, 0x14, 0x0a, 0x05,
	0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74,
	0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x7a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x18, 0x07, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x7a, 0x6b, 0x50, 0x72, 0x6f, 0x6f, 0x66, 0x12, 0x24, 0x0a, 0x0d,
	0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x18, 0x08, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x43, 0x68, 0x61,
	0x69, 0x6e, 0x22, 0x56, 0x0a, 0x0e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x4b, 0x65, 0x79,
	0x73, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x69, 0x76, 0x4b, 0x65, 0x79, 0x12, 0x12,
	0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01,
	0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x90, 0x02, 0x0a, 0x0e, 0x57,
	0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a,
	0x08, 0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x08, 0x6e, 0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x75, 0x6c,
	0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x75,
	0x6c, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f,
	0x72, 0x69, 0x7a, 0x65, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x70,
	0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f,
	0x72, 0x69, 0x7a, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
	0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a,
	0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
	0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x4e, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
	0x75, 0x73, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65,
	0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x56, 0x0a,
	0x0f, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x44, 0x62, 0x4d, 0x69, 0x78, 0x49, 0x6e, 0x66, 0x6f,
	0x12, 0x29, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4e, 0x6f, 0x74,
	0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x74,
	0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x78,
	0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x89, 0x02, 0x0a, 0x11, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74,
	0x4d, 0x69, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x12, 0x1a, 0x0a, 0x08, 0x6e,
	0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6e,
	0x6f, 0x74, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x69,
	0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c,
	0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
	0x7a, 0x65, 0x53, 0x70, 0x65, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x70, 0x65, 0x6e,
	0x64, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
	0x7a, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x75,
	0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x61,
	0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x63,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18,
	0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a,
	0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f,
	0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x22, 0x3d, 0x0a, 0x0e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x65, 0x52,
	0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x15, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65,
	0x74, 0x4e, 0x6f, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x6e, 0x6f, 0x74, 0x65, 0x73,
	0x22, 0x52, 0x0a, 0x16, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65,
	0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x52, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x64,
	0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x64, 0x64, 0x72, 0x12, 0x12,
	0x0a, 0x04, 0x69, 0x73, 0x4f, 0x4b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x73,
	0x4f, 0x4b, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6d, 0x73, 0x67, 0x22, 0x4e, 0x0a, 0x17, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x45, 0x6e,
	0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x52, 0x65, 0x73, 0x70, 0x12,
	0x33, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d,
	0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x45, 0x6e, 0x61,
	0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x52, 0x73, 0x74, 0x52, 0x05, 0x72,
	0x65, 0x73, 0x70, 0x73, 0x22, 0x4e, 0x0a, 0x0a, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x4d, 0x69, 0x78,
	0x54, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69,
	0x6e, 0x64, 0x65, 0x78, 0x22, 0x9e, 0x01, 0x0a, 0x0c, 0x4d, 0x69, 0x78, 0x54, 0x78, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12,
	0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68,
	0x61, 0x73, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x03, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69,
	0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65,
	0x78, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, 0x0d, 0x4d, 0x69, 0x78, 0x54, 0x78, 0x4c, 0x69,
	0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x23, 0x0a, 0x03, 0x74, 0x78, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61,
	0x6c, 0x4d, 0x69, 0x78, 0x54, 0x78, 0x52, 0x03, 0x74, 0x78, 0x73, 0x22, 0x4d, 0x0a, 0x11, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x61, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
	0x61, 0x64, 0x64, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x73, 0x4f, 0x4b, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x04, 0x69, 0x73, 0x4f, 0x4b, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x49, 0x0a, 0x13, 0x52, 0x65,
	0x71, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x52, 0x73,
	0x74, 0x12, 0x32, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61,
	0x63, 0x79, 0x41, 0x64, 0x64, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x73, 0x2a, 0x5d, 0x0a, 0x0a, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x10, 0x00,
	0x12, 0x0c, 0x0a, 0x08, 0x57, 0x49, 0x54, 0x48, 0x44, 0x52, 0x41, 0x57, 0x10, 0x01, 0x12, 0x11,
	0x0a, 0x0d, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x49, 0x4e, 0x50, 0x55, 0x54, 0x10,
	0x02, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x4f, 0x55, 0x54,
	0x50, 0x55, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49,
	0x5a, 0x45, 0x10, 0x04, 0x2a, 0x32, 0x0a, 0x0d, 0x4d, 0x69, 0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69,
	0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x10,
	0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x75, 0x74, 0x68, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50,
	0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0x23, 0x0a, 0x0c, 0x4d, 0x69, 0x78, 0x43,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x41, 0x63, 0x74, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x64, 0x10,
	0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x10, 0x01, 0x2a, 0x46, 0x0a,
	0x0a, 0x4e, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x55,
	0x4e, 0x44, 0x45, 0x46, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10,
	0x01, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x53, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x46,
	0x52, 0x4f, 0x5a, 0x45, 0x4e, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x4e, 0x46, 0x52, 0x4f,
	0x5a, 0x45, 0x4e, 0x10, 0x04, 0x2a, 0x3d, 0x0a, 0x15, 0x4d, 0x69, 0x78, 0x57, 0x61, 0x6c, 0x6c,
	0x65, 0x74, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08,
	0x0a, 0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x43, 0x41, 0x4e,
	0x4e, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48,
	0x45, 0x44, 0x10, 0x02, 0x32, 0xb4, 0x01, 0x0a, 0x0a, 0x6d, 0x69, 0x78, 0x50, 0x72, 0x69, 0x76,
	0x61, 0x63, 0x79, 0x12, 0x34, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x63, 0x61, 0x6e,
	0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52,
	0x65, 0x71, 0x4e, 0x69, 0x6c, 0x1a, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65,
	0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x00, 0x12, 0x30, 0x0a, 0x0b, 0x52, 0x65, 0x73,
	0x63, 0x61, 0x6e, 0x4e, 0x6f, 0x74, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73,
	0x2e, 0x52, 0x65, 0x71, 0x4e, 0x69, 0x6c, 0x1a, 0x10, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x52, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0d, 0x45,
	0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x12, 0x0f, 0x2e, 0x74,
	0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x41, 0x64, 0x64, 0x72, 0x73, 0x1a, 0x1a, 0x2e,
	0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x71, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x50,
	0x72, 0x69, 0x76, 0x61, 0x63, 0x79, 0x52, 0x73, 0x74, 0x22, 0x00, 0x42, 0x0a, 0x5a, 0x08, 0x2e,
	0x2e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}

var (
	file_mix_proto_rawDescOnce sync.Once
	file_mix_proto_rawDescData = file_mix_proto_rawDesc
)

func file_mix_proto_rawDescGZIP() []byte {
	file_mix_proto_rawDescOnce.Do(func() {
		file_mix_proto_rawDescData = protoimpl.X.CompressGZIP(file_mix_proto_rawDescData)
	})
	return file_mix_proto_rawDescData
}

var file_mix_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
var file_mix_proto_msgTypes = make([]protoimpl.MessageInfo, 64)
var file_mix_proto_goTypes = []interface{}{
	(VerifyType)(0),                 // 0: types.VerifyType
	(MixConfigType)(0),              // 1: types.MixConfigType
	(MixConfigAct)(0),               // 2: types.MixConfigAct
	(NoteStatus)(0),                 // 3: types.NoteStatus
	(MixWalletRescanStatus)(0),      // 4: types.MixWalletRescanStatus
	(*ZkVerifyKey)(nil),             // 5: types.ZkVerifyKey
	(*ZkVerifyKeys)(nil),            // 6: types.ZkVerifyKeys
	(*AuthKeys)(nil),                // 7: types.AuthKeys
	(*NoteAccountKey)(nil),          // 8: types.NoteAccountKey
	(*TokenTxFeeAddrReq)(nil),       // 9: types.TokenTxFeeAddrReq
	(*MixConfigAction)(nil),         // 10: types.MixConfigAction
	(*DHSecret)(nil),                // 11: types.DHSecret
	(*DHSecretGroup)(nil),           // 12: types.DHSecretGroup
	(*ZkProofInfo)(nil),             // 13: types.ZkProofInfo
	(*MixDepositAction)(nil),        // 14: types.MixDepositAction
	(*MixTransferAction)(nil),       // 15: types.MixTransferAction
	(*MixWithdrawAction)(nil),       // 16: types.MixWithdrawAction
	(*MixAuthorizeAction)(nil),      // 17: types.MixAuthorizeAction
	(*MixAction)(nil),               // 18: types.MixAction
	(*VerifyProofInfo)(nil),         // 19: types.VerifyProofInfo
	(*ExistValue)(nil),              // 20: types.ExistValue
	(*CommitSubTree)(nil),           // 21: types.CommitSubTree
	(*CommitSubTrees)(nil),          // 22: types.CommitSubTrees
	(*CommitTreeStatus)(nil),        // 23: types.CommitTreeStatus
	(*ReceiptCommitTreeStatus)(nil), // 24: types.ReceiptCommitTreeStatus
	(*ReceiptCommitSubLeaves)(nil),  // 25: types.ReceiptCommitSubLeaves
	(*ReceiptCommitSubRoots)(nil),   // 26: types.ReceiptCommitSubRoots
	(*ReceiptArchiveLeaves)(nil),    // 27: types.ReceiptArchiveLeaves
	(*ReceiptArchiveTreeRoot)(nil),  // 28: types.ReceiptArchiveTreeRoot
	(*CommitTreeLeaves)(nil),        // 29: types.CommitTreeLeaves
	(*CommitTreeRoots)(nil),         // 30: types.CommitTreeRoots
	(*CommitTreeProve)(nil),         // 31: types.CommitTreeProve
	(*TreeInfoReq)(nil),             // 32: types.TreeInfoReq
	(*TreeListResp)(nil),            // 33: types.TreeListResp
	(*RootListResp)(nil),            // 34: types.RootListResp
	(*SubTreeResp)(nil),             // 35: types.SubTreeResp
	(*TreeStatusResp)(nil),          // 36: types.TreeStatusResp
	(*PaymentKeyPair)(nil),          // 37: types.PaymentKeyPair
	(*EncryptKeyPair)(nil),          // 38: types.EncryptKeyPair
	(*AccountPrivacyKey)(nil),       // 39: types.AccountPrivacyKey
	(*WalletAddrPrivacy)(nil),       // 40: types.WalletAddrPrivacy
	(*SecretData)(nil),              // 41: types.SecretData
	(*EncryptSecretData)(nil),       // 42: types.EncryptSecretData
	(*DecryptSecretData)(nil),       // 43: types.DecryptSecretData
	(*DepositInfo)(nil),             // 44: types.DepositInfo
	(*DepositTxReq)(nil),            // 45: types.DepositTxReq
	(*DepositProofResp)(nil),        // 46: types.DepositProofResp
	(*TreePathProof)(nil),           // 47: types.TreePathProof
	(*WithdrawTxReq)(nil),           // 48: types.WithdrawTxReq
	(*AuthTxReq)(nil),               // 49: types.AuthTxReq
	(*TransferInputTxReq)(nil),      // 50: types.TransferInputTxReq
	(*TransferOutputTxReq)(nil),     // 51: types.TransferOutputTxReq
	(*TransferTxReq)(nil),           // 52: types.TransferTxReq
	(*CreateZkKeyFileReq)(nil),      // 53: types.CreateZkKeyFileReq
	(*ShieldAmount)(nil),            // 54: types.ShieldAmount
	(*ShieldAmountRst)(nil),         // 55: types.ShieldAmountRst
	(*CreateRawTxReq)(nil),          // 56: types.CreateRawTxReq
	(*PaymentKeysReq)(nil),          // 57: types.PaymentKeysReq
	(*WalletNoteInfo)(nil),          // 58: types.WalletNoteInfo
	(*WalletDbMixInfo)(nil),         // 59: types.WalletDbMixInfo
	(*WalletMixIndexReq)(nil),       // 60: types.WalletMixIndexReq
	(*WalletNoteResp)(nil),          // 61: types.WalletNoteResp
	(*WalletEnablePrivacyRst)(nil),  // 62: types.WalletEnablePrivacyRst
	(*WalletEnablePrivacyResp)(nil), // 63: types.WalletEnablePrivacyResp
	(*LocalMixTx)(nil),              // 64: types.LocalMixTx
	(*MixTxListReq)(nil),            // 65: types.MixTxListReq
	(*MixTxListResp)(nil),           // 66: types.MixTxListResp
	(*PrivacyAddrResult)(nil),       // 67: types.PrivacyAddrResult
	(*ReqEnablePrivacyRst)(nil),     // 68: types.ReqEnablePrivacyRst
	(*types.ReqNil)(nil),            // 69: types.ReqNil
	(*types.ReqAddrs)(nil),          // 70: types.ReqAddrs
	(*types.ReqString)(nil),         // 71: types.ReqString
}
var file_mix_proto_depIdxs = []int32{
	0,  // 0: types.ZkVerifyKey.type:type_name -> types.VerifyType
	5,  // 1: types.ZkVerifyKeys.data:type_name -> types.ZkVerifyKey
	1,  // 2: types.MixConfigAction.Ty:type_name -> types.MixConfigType
	2,  // 3: types.MixConfigAction.Action:type_name -> types.MixConfigAct
	5,  // 4: types.MixConfigAction.verifyKey:type_name -> types.ZkVerifyKey
	8,  // 5: types.MixConfigAction.noteAccountKey:type_name -> types.NoteAccountKey
	12, // 6: types.ZkProofInfo.secrets:type_name -> types.DHSecretGroup
	13, // 7: types.MixDepositAction.proofs:type_name -> types.ZkProofInfo
	13, // 8: types.MixTransferAction.inputs:type_name -> types.ZkProofInfo
	13, // 9: types.MixTransferAction.output:type_name -> types.ZkProofInfo
	13, // 10: types.MixTransferAction.change:type_name -> types.ZkProofInfo
	13, // 11: types.MixWithdrawAction.proofs:type_name -> types.ZkProofInfo
	13, // 12: types.MixAuthorizeAction.proofInfo:type_name -> types.ZkProofInfo
	10, // 13: types.MixAction.config:type_name -> types.MixConfigAction
	14, // 14: types.MixAction.deposit:type_name -> types.MixDepositAction
	16, // 15: types.MixAction.withdraw:type_name -> types.MixWithdrawAction
	15, // 16: types.MixAction.transfer:type_name -> types.MixTransferAction
	17, // 17: types.MixAction.authorize:type_name -> types.MixAuthorizeAction
	0,  // 18: types.VerifyProofInfo.ty:type_name -> types.VerifyType
	13, // 19: types.VerifyProofInfo.proof:type_name -> types.ZkProofInfo
	21, // 20: types.CommitSubTrees.subTrees:type_name -> types.CommitSubTree
	22, // 21: types.CommitTreeStatus.subTrees:type_name -> types.CommitSubTrees
	23, // 22: types.ReceiptCommitTreeStatus.prev:type_name -> types.CommitTreeStatus
	23, // 23: types.ReceiptCommitTreeStatus.current:type_name -> types.CommitTreeStatus
	35, // 24: types.TreeStatusResp.subTrees:type_name -> types.SubTreeResp
	37, // 25: types.AccountPrivacyKey.paymentKey:type_name -> types.PaymentKeyPair
	38, // 26: types.AccountPrivacyKey.encryptKey:type_name -> types.EncryptKeyPair
	39, // 27: types.WalletAddrPrivacy.privacy:type_name -> types.AccountPrivacyKey
	44, // 28: types.DepositTxReq.deposit:type_name -> types.DepositInfo
	41, // 29: types.DepositProofResp.proof:type_name -> types.SecretData
	12, // 30: types.DepositProofResp.secrets:type_name -> types.DHSecretGroup
	44, // 31: types.TransferOutputTxReq.deposit:type_name -> types.DepositInfo
	50, // 32: types.TransferTxReq.input:type_name -> types.TransferInputTxReq
	51, // 33: types.TransferTxReq.output:type_name -> types.TransferOutputTxReq
	54, // 34: types.ShieldAmountRst.inputs:type_name -> types.ShieldAmount
	54, // 35: types.ShieldAmountRst.output:type_name -> types.ShieldAmount
	54, // 36: types.ShieldAmountRst.change:type_name -> types.ShieldAmount
	3,  // 37: types.WalletNoteInfo.status:type_name -> types.NoteStatus
	41, // 38: types.WalletNoteInfo.secret:type_name -> types.SecretData
	58, // 39: types.WalletDbMixInfo.info:type_name -> types.WalletNoteInfo
	58, // 40: types.WalletNoteResp.notes:type_name -> types.WalletNoteInfo
	62, // 41: types.WalletEnablePrivacyResp.resps:type_name -> types.WalletEnablePrivacyRst
	64, // 42: types.MixTxListResp.txs:type_name -> types.LocalMixTx
	67, // 43: types.ReqEnablePrivacyRst.results:type_name -> types.PrivacyAddrResult
	69, // 44: types.mixPrivacy.GetRescanStatus:input_type -> types.ReqNil
	69, // 45: types.mixPrivacy.RescanNotes:input_type -> types.ReqNil
	70, // 46: types.mixPrivacy.EnablePrivacy:input_type -> types.ReqAddrs
	71, // 47: types.mixPrivacy.GetRescanStatus:output_type -> types.ReqString
	71, // 48: types.mixPrivacy.RescanNotes:output_type -> types.ReqString
	68, // 49: types.mixPrivacy.EnablePrivacy:output_type -> types.ReqEnablePrivacyRst
	47, // [47:50] is the sub-list for method output_type
	44, // [44:47] is the sub-list for method input_type
	44, // [44:44] is the sub-list for extension type_name
	44, // [44:44] is the sub-list for extension extendee
	0,  // [0:44] is the sub-list for field type_name
}

func init() { file_mix_proto_init() }
func file_mix_proto_init() {
	if File_mix_proto != nil {
		return
	}
	if !protoimpl.UnsafeEnabled {
		file_mix_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkVerifyKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkVerifyKeys); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AuthKeys); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NoteAccountKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TokenTxFeeAddrReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixConfigAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DHSecret); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DHSecretGroup); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ZkProofInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixDepositAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixTransferAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixWithdrawAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixAuthorizeAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*VerifyProofInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ExistValue); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommitSubTree); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommitSubTrees); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommitTreeStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptCommitTreeStatus); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptCommitSubLeaves); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptCommitSubRoots); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptArchiveLeaves); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReceiptArchiveTreeRoot); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommitTreeLeaves); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommitTreeRoots); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommitTreeProve); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TreeInfoReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TreeListResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RootListResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubTreeResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TreeStatusResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PaymentKeyPair); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EncryptKeyPair); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AccountPrivacyKey); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletAddrPrivacy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SecretData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*EncryptSecretData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DecryptSecretData); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DepositInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DepositTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*DepositProofResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TreePathProof); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithdrawTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AuthTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransferInputTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransferOutputTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransferTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateZkKeyFileReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ShieldAmount); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ShieldAmountRst); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CreateRawTxReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PaymentKeysReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletNoteInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletDbMixInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletMixIndexReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletNoteResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletEnablePrivacyRst); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WalletEnablePrivacyResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalMixTx); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixTxListReq); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MixTxListResp); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PrivacyAddrResult); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_mix_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ReqEnablePrivacyRst); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_mix_proto_msgTypes[5].OneofWrappers = []interface{}{
		(*MixConfigAction_VerifyKey)(nil),
		(*MixConfigAction_AuthKey)(nil),
		(*MixConfigAction_NoteAccountKey)(nil),
	}
	file_mix_proto_msgTypes[13].OneofWrappers = []interface{}{
		(*MixAction_Config)(nil),
		(*MixAction_Deposit)(nil),
		(*MixAction_Withdraw)(nil),
		(*MixAction_Transfer)(nil),
		(*MixAction_Authorize)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_mix_proto_rawDesc,
			NumEnums:      5,
			NumMessages:   64,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_mix_proto_goTypes,
		DependencyIndexes: file_mix_proto_depIdxs,
		EnumInfos:         file_mix_proto_enumTypes,
		MessageInfos:      file_mix_proto_msgTypes,
	}.Build()
	File_mix_proto = out.File
	file_mix_proto_rawDesc = nil
	file_mix_proto_goTypes = nil
	file_mix_proto_depIdxs = nil
}

// 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

// MixPrivacyClient is the client API for MixPrivacy service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type MixPrivacyClient interface {
	// 扫描UTXO以及获取扫描UTXO后的状态
	GetRescanStatus(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.ReqString, error)
	// 使能隐私账户
	RescanNotes(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.ReqString, error)
	// 创建隐私交易
	EnablePrivacy(ctx context.Context, in *types.ReqAddrs, opts ...grpc.CallOption) (*ReqEnablePrivacyRst, error)
}

type mixPrivacyClient struct {
	cc grpc.ClientConnInterface
}

func NewMixPrivacyClient(cc grpc.ClientConnInterface) MixPrivacyClient {
	return &mixPrivacyClient{cc}
}

func (c *mixPrivacyClient) GetRescanStatus(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.ReqString, error) {
	out := new(types.ReqString)
	err := c.cc.Invoke(ctx, "/types.mixPrivacy/GetRescanStatus", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *mixPrivacyClient) RescanNotes(ctx context.Context, in *types.ReqNil, opts ...grpc.CallOption) (*types.ReqString, error) {
	out := new(types.ReqString)
	err := c.cc.Invoke(ctx, "/types.mixPrivacy/RescanNotes", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *mixPrivacyClient) EnablePrivacy(ctx context.Context, in *types.ReqAddrs, opts ...grpc.CallOption) (*ReqEnablePrivacyRst, error) {
	out := new(ReqEnablePrivacyRst)
	err := c.cc.Invoke(ctx, "/types.mixPrivacy/EnablePrivacy", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// MixPrivacyServer is the server API for MixPrivacy service.
type MixPrivacyServer interface {
	// 扫描UTXO以及获取扫描UTXO后的状态
	GetRescanStatus(context.Context, *types.ReqNil) (*types.ReqString, error)
	// 使能隐私账户
	RescanNotes(context.Context, *types.ReqNil) (*types.ReqString, error)
	// 创建隐私交易
	EnablePrivacy(context.Context, *types.ReqAddrs) (*ReqEnablePrivacyRst, error)
}

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

func (*UnimplementedMixPrivacyServer) GetRescanStatus(context.Context, *types.ReqNil) (*types.ReqString, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetRescanStatus not implemented")
}
func (*UnimplementedMixPrivacyServer) RescanNotes(context.Context, *types.ReqNil) (*types.ReqString, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RescanNotes not implemented")
}
func (*UnimplementedMixPrivacyServer) EnablePrivacy(context.Context, *types.ReqAddrs) (*ReqEnablePrivacyRst, error) {
	return nil, status.Errorf(codes.Unimplemented, "method EnablePrivacy not implemented")
}

func RegisterMixPrivacyServer(s *grpc.Server, srv MixPrivacyServer) {
	s.RegisterService(&_MixPrivacy_serviceDesc, srv)
}

func _MixPrivacy_GetRescanStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(types.ReqNil)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MixPrivacyServer).GetRescanStatus(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.mixPrivacy/GetRescanStatus",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MixPrivacyServer).GetRescanStatus(ctx, req.(*types.ReqNil))
	}
	return interceptor(ctx, in, info, handler)
}

func _MixPrivacy_RescanNotes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(types.ReqNil)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MixPrivacyServer).RescanNotes(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.mixPrivacy/RescanNotes",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MixPrivacyServer).RescanNotes(ctx, req.(*types.ReqNil))
	}
	return interceptor(ctx, in, info, handler)
}

func _MixPrivacy_EnablePrivacy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(types.ReqAddrs)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(MixPrivacyServer).EnablePrivacy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/types.mixPrivacy/EnablePrivacy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(MixPrivacyServer).EnablePrivacy(ctx, req.(*types.ReqAddrs))
	}
	return interceptor(ctx, in, info, handler)
}

var _MixPrivacy_serviceDesc = grpc.ServiceDesc{
	ServiceName: "types.mixPrivacy",
	HandlerType: (*MixPrivacyServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "GetRescanStatus",
			Handler:    _MixPrivacy_GetRescanStatus_Handler,
		},
		{
			MethodName: "RescanNotes",
			Handler:    _MixPrivacy_RescanNotes_Handler,
		},
		{
			MethodName: "EnablePrivacy",
			Handler:    _MixPrivacy_EnablePrivacy_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "mix.proto",
}
