diff --git a/boltzrpc/autoswaprpc/autoswaprpc.pb.go b/boltzrpc/autoswaprpc/autoswaprpc.pb.go index b66294a2..23f32ae6 100644 --- a/boltzrpc/autoswaprpc/autoswaprpc.pb.go +++ b/boltzrpc/autoswaprpc/autoswaprpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.33.0 +// protoc-gen-go v1.30.0 // protoc v5.26.0 // source: autoswaprpc/autoswaprpc.proto diff --git a/boltzrpc/boltzrpc.pb.go b/boltzrpc/boltzrpc.pb.go index d344d341..feb59485 100644 --- a/boltzrpc/boltzrpc.pb.go +++ b/boltzrpc/boltzrpc.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.33.0 +// protoc-gen-go v1.30.0 // protoc v5.26.0 // source: boltzrpc.proto @@ -273,6 +273,64 @@ func (IncludeSwaps) EnumDescriptor() ([]byte, []int) { return file_boltzrpc_proto_rawDescGZIP(), []int{4} } +type TransactionType int32 + +const ( + TransactionType_ANY TransactionType = 0 + TransactionType_LOCKUP TransactionType = 1 + TransactionType_REFUND TransactionType = 2 + TransactionType_CLAIM TransactionType = 3 + TransactionType_RECEIVE TransactionType = 4 + TransactionType_SEND TransactionType = 5 +) + +// Enum value maps for TransactionType. +var ( + TransactionType_name = map[int32]string{ + 0: "ANY", + 1: "LOCKUP", + 2: "REFUND", + 3: "CLAIM", + 4: "RECEIVE", + 5: "SEND", + } + TransactionType_value = map[string]int32{ + "ANY": 0, + "LOCKUP": 1, + "REFUND": 2, + "CLAIM": 3, + "RECEIVE": 4, + "SEND": 5, + } +) + +func (x TransactionType) Enum() *TransactionType { + p := new(TransactionType) + *p = x + return p +} + +func (x TransactionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TransactionType) Descriptor() protoreflect.EnumDescriptor { + return file_boltzrpc_proto_enumTypes[5].Descriptor() +} + +func (TransactionType) Type() protoreflect.EnumType { + return &file_boltzrpc_proto_enumTypes[5] +} + +func (x TransactionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TransactionType.Descriptor instead. +func (TransactionType) EnumDescriptor() ([]byte, []int) { + return file_boltzrpc_proto_rawDescGZIP(), []int{5} +} + type CreateTenantRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4763,6 +4821,258 @@ func (x *GetWalletRequest) GetId() uint64 { return 0 } +type ListWalletTransactionsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + ExcludeSwapRelated *bool `protobuf:"varint,2,opt,name=exclude_swap_related,json=excludeSwapRelated,proto3,oneof" json:"exclude_swap_related,omitempty"` +} + +func (x *ListWalletTransactionsRequest) Reset() { + *x = ListWalletTransactionsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_boltzrpc_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListWalletTransactionsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListWalletTransactionsRequest) ProtoMessage() {} + +func (x *ListWalletTransactionsRequest) ProtoReflect() protoreflect.Message { + mi := &file_boltzrpc_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 ListWalletTransactionsRequest.ProtoReflect.Descriptor instead. +func (*ListWalletTransactionsRequest) Descriptor() ([]byte, []int) { + return file_boltzrpc_proto_rawDescGZIP(), []int{60} +} + +func (x *ListWalletTransactionsRequest) GetId() uint64 { + if x != nil { + return x.Id + } + return 0 +} + +func (x *ListWalletTransactionsRequest) GetExcludeSwapRelated() bool { + if x != nil && x.ExcludeSwapRelated != nil { + return *x.ExcludeSwapRelated + } + return false +} + +type WalletTransaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TxId string `protobuf:"bytes,1,opt,name=tx_id,json=txId,proto3" json:"tx_id,omitempty"` + TotalAmount uint64 `protobuf:"varint,2,opt,name=total_amount,json=totalAmount,proto3" json:"total_amount,omitempty"` + Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Outputs []*TransactionOutput `protobuf:"bytes,4,rep,name=outputs,proto3" json:"outputs,omitempty"` + BlockHeight uint32 `protobuf:"varint,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + SwapId *string `protobuf:"bytes,6,opt,name=swap_id,json=swapId,proto3,oneof" json:"swap_id,omitempty"` + Type TransactionType `protobuf:"varint,7,opt,name=type,proto3,enum=boltzrpc.TransactionType" json:"type,omitempty"` +} + +func (x *WalletTransaction) Reset() { + *x = WalletTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_boltzrpc_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WalletTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WalletTransaction) ProtoMessage() {} + +func (x *WalletTransaction) ProtoReflect() protoreflect.Message { + mi := &file_boltzrpc_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 WalletTransaction.ProtoReflect.Descriptor instead. +func (*WalletTransaction) Descriptor() ([]byte, []int) { + return file_boltzrpc_proto_rawDescGZIP(), []int{61} +} + +func (x *WalletTransaction) GetTxId() string { + if x != nil { + return x.TxId + } + return "" +} + +func (x *WalletTransaction) GetTotalAmount() uint64 { + if x != nil { + return x.TotalAmount + } + return 0 +} + +func (x *WalletTransaction) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *WalletTransaction) GetOutputs() []*TransactionOutput { + if x != nil { + return x.Outputs + } + return nil +} + +func (x *WalletTransaction) GetBlockHeight() uint32 { + if x != nil { + return x.BlockHeight + } + return 0 +} + +func (x *WalletTransaction) GetSwapId() string { + if x != nil && x.SwapId != nil { + return *x.SwapId + } + return "" +} + +func (x *WalletTransaction) GetType() TransactionType { + if x != nil { + return x.Type + } + return TransactionType_ANY +} + +type TransactionOutput struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Amount uint64 `protobuf:"varint,2,opt,name=amount,proto3" json:"amount,omitempty"` +} + +func (x *TransactionOutput) Reset() { + *x = TransactionOutput{} + if protoimpl.UnsafeEnabled { + mi := &file_boltzrpc_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TransactionOutput) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TransactionOutput) ProtoMessage() {} + +func (x *TransactionOutput) ProtoReflect() protoreflect.Message { + mi := &file_boltzrpc_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 TransactionOutput.ProtoReflect.Descriptor instead. +func (*TransactionOutput) Descriptor() ([]byte, []int) { + return file_boltzrpc_proto_rawDescGZIP(), []int{62} +} + +func (x *TransactionOutput) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +func (x *TransactionOutput) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +type ListWalletTransactionsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transactions []*WalletTransaction `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` +} + +func (x *ListWalletTransactionsResponse) Reset() { + *x = ListWalletTransactionsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_boltzrpc_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListWalletTransactionsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListWalletTransactionsResponse) ProtoMessage() {} + +func (x *ListWalletTransactionsResponse) ProtoReflect() protoreflect.Message { + mi := &file_boltzrpc_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 ListWalletTransactionsResponse.ProtoReflect.Descriptor instead. +func (*ListWalletTransactionsResponse) Descriptor() ([]byte, []int) { + return file_boltzrpc_proto_rawDescGZIP(), []int{63} +} + +func (x *ListWalletTransactionsResponse) GetTransactions() []*WalletTransaction { + if x != nil { + return x.Transactions + } + return nil +} + type GetWalletCredentialsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4775,7 +5085,7 @@ type GetWalletCredentialsRequest struct { func (x *GetWalletCredentialsRequest) Reset() { *x = GetWalletCredentialsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[60] + mi := &file_boltzrpc_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4788,7 +5098,7 @@ func (x *GetWalletCredentialsRequest) String() string { func (*GetWalletCredentialsRequest) ProtoMessage() {} func (x *GetWalletCredentialsRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[60] + mi := &file_boltzrpc_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4801,7 +5111,7 @@ func (x *GetWalletCredentialsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetWalletCredentialsRequest.ProtoReflect.Descriptor instead. func (*GetWalletCredentialsRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{60} + return file_boltzrpc_proto_rawDescGZIP(), []int{64} } func (x *GetWalletCredentialsRequest) GetId() uint64 { @@ -4829,7 +5139,7 @@ type RemoveWalletRequest struct { func (x *RemoveWalletRequest) Reset() { *x = RemoveWalletRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[61] + mi := &file_boltzrpc_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4842,7 +5152,7 @@ func (x *RemoveWalletRequest) String() string { func (*RemoveWalletRequest) ProtoMessage() {} func (x *RemoveWalletRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[61] + mi := &file_boltzrpc_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4855,7 +5165,7 @@ func (x *RemoveWalletRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveWalletRequest.ProtoReflect.Descriptor instead. func (*RemoveWalletRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{61} + return file_boltzrpc_proto_rawDescGZIP(), []int{65} } func (x *RemoveWalletRequest) GetId() uint64 { @@ -4880,7 +5190,7 @@ type WalletSendRequest struct { func (x *WalletSendRequest) Reset() { *x = WalletSendRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[62] + mi := &file_boltzrpc_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4893,7 +5203,7 @@ func (x *WalletSendRequest) String() string { func (*WalletSendRequest) ProtoMessage() {} func (x *WalletSendRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[62] + mi := &file_boltzrpc_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4906,7 +5216,7 @@ func (x *WalletSendRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WalletSendRequest.ProtoReflect.Descriptor instead. func (*WalletSendRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{62} + return file_boltzrpc_proto_rawDescGZIP(), []int{66} } func (x *WalletSendRequest) GetId() uint64 { @@ -4948,7 +5258,7 @@ type WalletSendResponse struct { func (x *WalletSendResponse) Reset() { *x = WalletSendResponse{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[63] + mi := &file_boltzrpc_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4961,7 +5271,7 @@ func (x *WalletSendResponse) String() string { func (*WalletSendResponse) ProtoMessage() {} func (x *WalletSendResponse) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[63] + mi := &file_boltzrpc_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4974,7 +5284,7 @@ func (x *WalletSendResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WalletSendResponse.ProtoReflect.Descriptor instead. func (*WalletSendResponse) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{63} + return file_boltzrpc_proto_rawDescGZIP(), []int{67} } func (x *WalletSendResponse) GetTxId() string { @@ -4995,7 +5305,7 @@ type WalletReceiveRequest struct { func (x *WalletReceiveRequest) Reset() { *x = WalletReceiveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[64] + mi := &file_boltzrpc_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5008,7 +5318,7 @@ func (x *WalletReceiveRequest) String() string { func (*WalletReceiveRequest) ProtoMessage() {} func (x *WalletReceiveRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[64] + mi := &file_boltzrpc_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5021,7 +5331,7 @@ func (x *WalletReceiveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WalletReceiveRequest.ProtoReflect.Descriptor instead. func (*WalletReceiveRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{64} + return file_boltzrpc_proto_rawDescGZIP(), []int{68} } func (x *WalletReceiveRequest) GetId() uint64 { @@ -5042,7 +5352,7 @@ type WalletReceiveResponse struct { func (x *WalletReceiveResponse) Reset() { *x = WalletReceiveResponse{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[65] + mi := &file_boltzrpc_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5055,7 +5365,7 @@ func (x *WalletReceiveResponse) String() string { func (*WalletReceiveResponse) ProtoMessage() {} func (x *WalletReceiveResponse) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[65] + mi := &file_boltzrpc_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5068,7 +5378,7 @@ func (x *WalletReceiveResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WalletReceiveResponse.ProtoReflect.Descriptor instead. func (*WalletReceiveResponse) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{65} + return file_boltzrpc_proto_rawDescGZIP(), []int{69} } func (x *WalletReceiveResponse) GetAddress() string { @@ -5094,7 +5404,7 @@ type Wallet struct { func (x *Wallet) Reset() { *x = Wallet{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[66] + mi := &file_boltzrpc_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5107,7 +5417,7 @@ func (x *Wallet) String() string { func (*Wallet) ProtoMessage() {} func (x *Wallet) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[66] + mi := &file_boltzrpc_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5120,7 +5430,7 @@ func (x *Wallet) ProtoReflect() protoreflect.Message { // Deprecated: Use Wallet.ProtoReflect.Descriptor instead. func (*Wallet) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{66} + return file_boltzrpc_proto_rawDescGZIP(), []int{70} } func (x *Wallet) GetId() uint64 { @@ -5176,7 +5486,7 @@ type Wallets struct { func (x *Wallets) Reset() { *x = Wallets{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[67] + mi := &file_boltzrpc_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5189,7 +5499,7 @@ func (x *Wallets) String() string { func (*Wallets) ProtoMessage() {} func (x *Wallets) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[67] + mi := &file_boltzrpc_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5202,7 +5512,7 @@ func (x *Wallets) ProtoReflect() protoreflect.Message { // Deprecated: Use Wallets.ProtoReflect.Descriptor instead. func (*Wallets) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{67} + return file_boltzrpc_proto_rawDescGZIP(), []int{71} } func (x *Wallets) GetWallets() []*Wallet { @@ -5225,7 +5535,7 @@ type Balance struct { func (x *Balance) Reset() { *x = Balance{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[68] + mi := &file_boltzrpc_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5238,7 +5548,7 @@ func (x *Balance) String() string { func (*Balance) ProtoMessage() {} func (x *Balance) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[68] + mi := &file_boltzrpc_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5251,7 +5561,7 @@ func (x *Balance) ProtoReflect() protoreflect.Message { // Deprecated: Use Balance.ProtoReflect.Descriptor instead. func (*Balance) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{68} + return file_boltzrpc_proto_rawDescGZIP(), []int{72} } func (x *Balance) GetTotal() uint64 { @@ -5288,7 +5598,7 @@ type Subaccount struct { func (x *Subaccount) Reset() { *x = Subaccount{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[69] + mi := &file_boltzrpc_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5301,7 +5611,7 @@ func (x *Subaccount) String() string { func (*Subaccount) ProtoMessage() {} func (x *Subaccount) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[69] + mi := &file_boltzrpc_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5314,7 +5624,7 @@ func (x *Subaccount) ProtoReflect() protoreflect.Message { // Deprecated: Use Subaccount.ProtoReflect.Descriptor instead. func (*Subaccount) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{69} + return file_boltzrpc_proto_rawDescGZIP(), []int{73} } func (x *Subaccount) GetBalance() *Balance { @@ -5347,7 +5657,7 @@ type RemoveWalletResponse struct { func (x *RemoveWalletResponse) Reset() { *x = RemoveWalletResponse{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[70] + mi := &file_boltzrpc_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5360,7 +5670,7 @@ func (x *RemoveWalletResponse) String() string { func (*RemoveWalletResponse) ProtoMessage() {} func (x *RemoveWalletResponse) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[70] + mi := &file_boltzrpc_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5373,7 +5683,7 @@ func (x *RemoveWalletResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RemoveWalletResponse.ProtoReflect.Descriptor instead. func (*RemoveWalletResponse) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{70} + return file_boltzrpc_proto_rawDescGZIP(), []int{74} } type UnlockRequest struct { @@ -5387,7 +5697,7 @@ type UnlockRequest struct { func (x *UnlockRequest) Reset() { *x = UnlockRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[71] + mi := &file_boltzrpc_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5400,7 +5710,7 @@ func (x *UnlockRequest) String() string { func (*UnlockRequest) ProtoMessage() {} func (x *UnlockRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[71] + mi := &file_boltzrpc_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5413,7 +5723,7 @@ func (x *UnlockRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UnlockRequest.ProtoReflect.Descriptor instead. func (*UnlockRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{71} + return file_boltzrpc_proto_rawDescGZIP(), []int{75} } func (x *UnlockRequest) GetPassword() string { @@ -5434,7 +5744,7 @@ type VerifyWalletPasswordRequest struct { func (x *VerifyWalletPasswordRequest) Reset() { *x = VerifyWalletPasswordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[72] + mi := &file_boltzrpc_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5447,7 +5757,7 @@ func (x *VerifyWalletPasswordRequest) String() string { func (*VerifyWalletPasswordRequest) ProtoMessage() {} func (x *VerifyWalletPasswordRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[72] + mi := &file_boltzrpc_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5460,7 +5770,7 @@ func (x *VerifyWalletPasswordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyWalletPasswordRequest.ProtoReflect.Descriptor instead. func (*VerifyWalletPasswordRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{72} + return file_boltzrpc_proto_rawDescGZIP(), []int{76} } func (x *VerifyWalletPasswordRequest) GetPassword() string { @@ -5481,7 +5791,7 @@ type VerifyWalletPasswordResponse struct { func (x *VerifyWalletPasswordResponse) Reset() { *x = VerifyWalletPasswordResponse{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[73] + mi := &file_boltzrpc_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5494,7 +5804,7 @@ func (x *VerifyWalletPasswordResponse) String() string { func (*VerifyWalletPasswordResponse) ProtoMessage() {} func (x *VerifyWalletPasswordResponse) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[73] + mi := &file_boltzrpc_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5507,7 +5817,7 @@ func (x *VerifyWalletPasswordResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyWalletPasswordResponse.ProtoReflect.Descriptor instead. func (*VerifyWalletPasswordResponse) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{73} + return file_boltzrpc_proto_rawDescGZIP(), []int{77} } func (x *VerifyWalletPasswordResponse) GetCorrect() bool { @@ -5529,7 +5839,7 @@ type ChangeWalletPasswordRequest struct { func (x *ChangeWalletPasswordRequest) Reset() { *x = ChangeWalletPasswordRequest{} if protoimpl.UnsafeEnabled { - mi := &file_boltzrpc_proto_msgTypes[74] + mi := &file_boltzrpc_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5542,7 +5852,7 @@ func (x *ChangeWalletPasswordRequest) String() string { func (*ChangeWalletPasswordRequest) ProtoMessage() {} func (x *ChangeWalletPasswordRequest) ProtoReflect() protoreflect.Message { - mi := &file_boltzrpc_proto_msgTypes[74] + mi := &file_boltzrpc_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5555,7 +5865,7 @@ func (x *ChangeWalletPasswordRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeWalletPasswordRequest.ProtoReflect.Descriptor instead. func (*ChangeWalletPasswordRequest) Descriptor() ([]byte, []int) { - return file_boltzrpc_proto_rawDescGZIP(), []int{74} + return file_boltzrpc_proto_rawDescGZIP(), []int{78} } func (x *ChangeWalletPasswordRequest) GetOld() string { @@ -6290,93 +6600,135 @@ var file_boltzrpc_proto_rawDesc = []byte{ 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x22, - 0x5b, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x25, 0x0a, 0x13, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x7f, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x35, 0x0a, 0x14, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x77, 0x61, 0x70, + 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, + 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x77, 0x61, 0x70, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x65, 0x78, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, + 0x22, 0x9c, 0x02, 0x0a, 0x11, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x35, 0x0a, 0x07, + 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1c, 0x0a, 0x07, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x77, 0x61, 0x70, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x77, 0x61, 0x70, 0x5f, 0x69, 0x64, 0x22, + 0x45, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x61, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, + 0x6c, 0x6c, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x5b, 0x0a, 0x1b, 0x47, 0x65, 0x74, + 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x25, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x90, 0x01, + 0x0a, 0x11, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x90, 0x01, 0x0a, 0x11, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, - 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 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, 0x27, 0x0a, 0x0d, 0x73, - 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x61, 0x74, 0x50, 0x65, 0x72, 0x56, 0x62, 0x79, 0x74, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, - 0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x22, 0x29, 0x0a, 0x12, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, - 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13, 0x0a, 0x05, - 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, - 0x64, 0x22, 0x26, 0x0a, 0x14, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x15, 0x57, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xc2, 0x01, 0x0a, - 0x06, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, - 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, - 0x79, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, - 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0x35, 0x0a, 0x07, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x07, - 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, - 0x07, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x22, 0x5f, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x22, 0x67, 0x0a, 0x0a, 0x53, 0x75, 0x62, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, - 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x0d, 0x55, 0x6e, - 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x39, 0x0a, 0x1b, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x22, 0x38, 0x0a, 0x1c, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, - 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x22, 0x41, 0x0a, 0x1b, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, - 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x10, 0x0a, - 0x03, 0x6e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x2a, - 0x25, 0x0a, 0x0e, 0x4d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x57, - 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x2a, 0x62, 0x0a, 0x09, 0x53, 0x77, 0x61, 0x70, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, - 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x01, - 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, - 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0c, 0x0a, - 0x08, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x41, - 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x1d, 0x0a, 0x08, 0x43, 0x75, - 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x54, 0x43, 0x10, 0x00, 0x12, - 0x08, 0x0a, 0x04, 0x4c, 0x42, 0x54, 0x43, 0x10, 0x01, 0x2a, 0x31, 0x0a, 0x08, 0x53, 0x77, 0x61, - 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x42, 0x4d, 0x41, 0x52, 0x49, - 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, - 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x2a, 0x2d, 0x0a, 0x0c, - 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x77, 0x61, 0x70, 0x73, 0x12, 0x07, 0x0a, 0x03, - 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, - 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x32, 0x9f, 0x13, 0x0a, 0x05, + 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 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, 0x27, 0x0a, 0x0d, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, + 0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, + 0x73, 0x61, 0x74, 0x50, 0x65, 0x72, 0x56, 0x62, 0x79, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, + 0x0a, 0x0e, 0x5f, 0x73, 0x61, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x62, 0x79, 0x74, 0x65, + 0x22, 0x29, 0x0a, 0x12, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13, 0x0a, 0x05, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x26, 0x0a, 0x14, 0x57, + 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x31, 0x0a, 0x15, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xc2, 0x01, 0x0a, 0x06, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x08, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, + 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, + 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x07, 0x57, + 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x07, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, + 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x07, 0x77, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x73, 0x22, 0x5f, 0x0a, 0x07, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x75, 0x6e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x22, 0x67, 0x0a, 0x0a, 0x53, 0x75, 0x62, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x16, 0x0a, 0x14, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x0d, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x22, 0x39, 0x0a, 0x1b, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x38, 0x0a, 0x1c, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, + 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x22, 0x41, 0x0a, 0x1b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6f, 0x6c, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6e, 0x65, 0x77, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6e, 0x65, 0x77, 0x2a, 0x25, 0x0a, 0x0e, 0x4d, 0x61, 0x63, + 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, 0x52, + 0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, + 0x2a, 0x62, 0x0a, 0x09, 0x53, 0x77, 0x61, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, + 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x55, + 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x46, 0x55, 0x4e, + 0x44, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, + 0x45, 0x44, 0x10, 0x05, 0x2a, 0x1d, 0x0a, 0x08, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x12, 0x07, 0x0a, 0x03, 0x42, 0x54, 0x43, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x42, 0x54, + 0x43, 0x10, 0x01, 0x2a, 0x31, 0x0a, 0x08, 0x53, 0x77, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x42, 0x4d, 0x41, 0x52, 0x49, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0b, + 0x0a, 0x07, 0x52, 0x45, 0x56, 0x45, 0x52, 0x53, 0x45, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, + 0x48, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x2a, 0x2d, 0x0a, 0x0c, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x53, 0x77, 0x61, 0x70, 0x73, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x00, 0x12, + 0x0a, 0x0a, 0x06, 0x4d, 0x41, 0x4e, 0x55, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, + 0x55, 0x54, 0x4f, 0x10, 0x02, 0x2a, 0x54, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4e, 0x59, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x01, 0x12, 0x0a, 0x0a, + 0x06, 0x52, 0x45, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x41, + 0x49, 0x4d, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x10, + 0x04, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x05, 0x32, 0x8c, 0x14, 0x0a, 0x05, 0x42, 0x6f, 0x6c, 0x74, 0x7a, 0x12, 0x3e, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x62, 0x6f, 0x6c, @@ -6474,67 +6826,74 @@ var file_boltzrpc_proto_rawDesc = []byte{ 0x74, 0x12, 0x1a, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, - 0x5a, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x25, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, - 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, - 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x6f, - 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, - 0x6c, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x6f, 0x6c, - 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x57, 0x61, - 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, - 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, - 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x12, 0x1e, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, - 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, - 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x16, 0x2e, + 0x6b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x62, 0x6f, 0x6c, 0x74, + 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x12, 0x25, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x62, 0x6f, + 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, + 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0a, 0x57, 0x61, 0x6c, 0x6c, 0x65, + 0x74, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x1b, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, + 0x6c, 0x6c, 0x65, 0x74, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x50, 0x0a, 0x0d, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x12, 0x1e, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1f, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x61, 0x6c, + 0x6c, 0x65, 0x74, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x39, 0x0a, 0x06, 0x55, 0x6e, + 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, + 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x39, 0x0a, - 0x06, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x17, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, - 0x70, 0x63, 0x2e, 0x55, 0x6e, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x65, 0x0a, 0x14, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x25, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, - 0x70, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x55, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x25, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, - 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, - 0x63, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, - 0x12, 0x1a, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x62, - 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x4d, - 0x0a, 0x0c, 0x42, 0x61, 0x6b, 0x65, 0x4d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x12, 0x1d, - 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6b, 0x65, 0x4d, 0x61, - 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, - 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6b, 0x65, 0x4d, 0x61, 0x63, - 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x30, 0x5a, - 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x6f, 0x6c, 0x74, - 0x7a, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x2d, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x65, 0x0a, 0x14, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, + 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x25, 0x2e, + 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, + 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x14, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x25, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x12, 0x3f, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, + 0x61, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x65, + 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x73, 0x12, 0x1c, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1d, 0x2e, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x39, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x1a, 0x2e, + 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x6e, 0x61, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x10, 0x2e, 0x62, 0x6f, 0x6c, 0x74, + 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x12, 0x4d, 0x0a, 0x0c, 0x42, + 0x61, 0x6b, 0x65, 0x4d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x12, 0x1d, 0x2e, 0x62, 0x6f, + 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6b, 0x65, 0x4d, 0x61, 0x63, 0x61, 0x72, + 0x6f, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x62, 0x6f, 0x6c, + 0x74, 0x7a, 0x72, 0x70, 0x63, 0x2e, 0x42, 0x61, 0x6b, 0x65, 0x4d, 0x61, 0x63, 0x61, 0x72, 0x6f, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x6f, 0x6c, 0x74, 0x7a, 0x45, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2f, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x2d, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x6f, 0x6c, 0x74, 0x7a, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6549,227 +6908,237 @@ func file_boltzrpc_proto_rawDescGZIP() []byte { return file_boltzrpc_proto_rawDescData } -var file_boltzrpc_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_boltzrpc_proto_msgTypes = make([]protoimpl.MessageInfo, 75) +var file_boltzrpc_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_boltzrpc_proto_msgTypes = make([]protoimpl.MessageInfo, 79) var file_boltzrpc_proto_goTypes = []interface{}{ - (MacaroonAction)(0), // 0: boltzrpc.MacaroonAction - (SwapState)(0), // 1: boltzrpc.SwapState - (Currency)(0), // 2: boltzrpc.Currency - (SwapType)(0), // 3: boltzrpc.SwapType - (IncludeSwaps)(0), // 4: boltzrpc.IncludeSwaps - (*CreateTenantRequest)(nil), // 5: boltzrpc.CreateTenantRequest - (*ListTenantsRequest)(nil), // 6: boltzrpc.ListTenantsRequest - (*ListTenantsResponse)(nil), // 7: boltzrpc.ListTenantsResponse - (*GetTenantRequest)(nil), // 8: boltzrpc.GetTenantRequest - (*Tenant)(nil), // 9: boltzrpc.Tenant - (*MacaroonPermissions)(nil), // 10: boltzrpc.MacaroonPermissions - (*BakeMacaroonRequest)(nil), // 11: boltzrpc.BakeMacaroonRequest - (*BakeMacaroonResponse)(nil), // 12: boltzrpc.BakeMacaroonResponse - (*Pair)(nil), // 13: boltzrpc.Pair - (*SwapInfo)(nil), // 14: boltzrpc.SwapInfo - (*GetPairInfoRequest)(nil), // 15: boltzrpc.GetPairInfoRequest - (*PairInfo)(nil), // 16: boltzrpc.PairInfo - (*ChannelCreationInfo)(nil), // 17: boltzrpc.ChannelCreationInfo - (*CombinedChannelSwapInfo)(nil), // 18: boltzrpc.CombinedChannelSwapInfo - (*ReverseSwapInfo)(nil), // 19: boltzrpc.ReverseSwapInfo - (*BlockHeights)(nil), // 20: boltzrpc.BlockHeights - (*GetInfoRequest)(nil), // 21: boltzrpc.GetInfoRequest - (*GetInfoResponse)(nil), // 22: boltzrpc.GetInfoResponse - (*Limits)(nil), // 23: boltzrpc.Limits - (*SwapFees)(nil), // 24: boltzrpc.SwapFees - (*GetPairsResponse)(nil), // 25: boltzrpc.GetPairsResponse - (*MinerFees)(nil), // 26: boltzrpc.MinerFees - (*Fees)(nil), // 27: boltzrpc.Fees - (*GetServiceInfoRequest)(nil), // 28: boltzrpc.GetServiceInfoRequest - (*GetServiceInfoResponse)(nil), // 29: boltzrpc.GetServiceInfoResponse - (*AnySwapInfo)(nil), // 30: boltzrpc.AnySwapInfo - (*ListSwapsRequest)(nil), // 31: boltzrpc.ListSwapsRequest - (*ListSwapsResponse)(nil), // 32: boltzrpc.ListSwapsResponse - (*GetStatsRequest)(nil), // 33: boltzrpc.GetStatsRequest - (*GetStatsResponse)(nil), // 34: boltzrpc.GetStatsResponse - (*RefundSwapRequest)(nil), // 35: boltzrpc.RefundSwapRequest - (*ClaimSwapsRequest)(nil), // 36: boltzrpc.ClaimSwapsRequest - (*ClaimSwapsResponse)(nil), // 37: boltzrpc.ClaimSwapsResponse - (*GetSwapInfoRequest)(nil), // 38: boltzrpc.GetSwapInfoRequest - (*GetSwapInfoResponse)(nil), // 39: boltzrpc.GetSwapInfoResponse - (*DepositRequest)(nil), // 40: boltzrpc.DepositRequest - (*DepositResponse)(nil), // 41: boltzrpc.DepositResponse - (*CreateSwapRequest)(nil), // 42: boltzrpc.CreateSwapRequest - (*CreateSwapResponse)(nil), // 43: boltzrpc.CreateSwapResponse - (*CreateChannelRequest)(nil), // 44: boltzrpc.CreateChannelRequest - (*CreateReverseSwapRequest)(nil), // 45: boltzrpc.CreateReverseSwapRequest - (*CreateReverseSwapResponse)(nil), // 46: boltzrpc.CreateReverseSwapResponse - (*CreateChainSwapRequest)(nil), // 47: boltzrpc.CreateChainSwapRequest - (*ChainSwapInfo)(nil), // 48: boltzrpc.ChainSwapInfo - (*ChainSwapData)(nil), // 49: boltzrpc.ChainSwapData - (*ChannelId)(nil), // 50: boltzrpc.ChannelId - (*LightningChannel)(nil), // 51: boltzrpc.LightningChannel - (*SwapStats)(nil), // 52: boltzrpc.SwapStats - (*Budget)(nil), // 53: boltzrpc.Budget - (*WalletCredentials)(nil), // 54: boltzrpc.WalletCredentials - (*WalletParams)(nil), // 55: boltzrpc.WalletParams - (*ImportWalletRequest)(nil), // 56: boltzrpc.ImportWalletRequest - (*CreateWalletRequest)(nil), // 57: boltzrpc.CreateWalletRequest - (*CreateWalletResponse)(nil), // 58: boltzrpc.CreateWalletResponse - (*SetSubaccountRequest)(nil), // 59: boltzrpc.SetSubaccountRequest - (*GetSubaccountsRequest)(nil), // 60: boltzrpc.GetSubaccountsRequest - (*GetSubaccountsResponse)(nil), // 61: boltzrpc.GetSubaccountsResponse - (*ImportWalletResponse)(nil), // 62: boltzrpc.ImportWalletResponse - (*GetWalletsRequest)(nil), // 63: boltzrpc.GetWalletsRequest - (*GetWalletRequest)(nil), // 64: boltzrpc.GetWalletRequest - (*GetWalletCredentialsRequest)(nil), // 65: boltzrpc.GetWalletCredentialsRequest - (*RemoveWalletRequest)(nil), // 66: boltzrpc.RemoveWalletRequest - (*WalletSendRequest)(nil), // 67: boltzrpc.WalletSendRequest - (*WalletSendResponse)(nil), // 68: boltzrpc.WalletSendResponse - (*WalletReceiveRequest)(nil), // 69: boltzrpc.WalletReceiveRequest - (*WalletReceiveResponse)(nil), // 70: boltzrpc.WalletReceiveResponse - (*Wallet)(nil), // 71: boltzrpc.Wallet - (*Wallets)(nil), // 72: boltzrpc.Wallets - (*Balance)(nil), // 73: boltzrpc.Balance - (*Subaccount)(nil), // 74: boltzrpc.Subaccount - (*RemoveWalletResponse)(nil), // 75: boltzrpc.RemoveWalletResponse - (*UnlockRequest)(nil), // 76: boltzrpc.UnlockRequest - (*VerifyWalletPasswordRequest)(nil), // 77: boltzrpc.VerifyWalletPasswordRequest - (*VerifyWalletPasswordResponse)(nil), // 78: boltzrpc.VerifyWalletPasswordResponse - (*ChangeWalletPasswordRequest)(nil), // 79: boltzrpc.ChangeWalletPasswordRequest - (*emptypb.Empty)(nil), // 80: google.protobuf.Empty + (MacaroonAction)(0), // 0: boltzrpc.MacaroonAction + (SwapState)(0), // 1: boltzrpc.SwapState + (Currency)(0), // 2: boltzrpc.Currency + (SwapType)(0), // 3: boltzrpc.SwapType + (IncludeSwaps)(0), // 4: boltzrpc.IncludeSwaps + (TransactionType)(0), // 5: boltzrpc.TransactionType + (*CreateTenantRequest)(nil), // 6: boltzrpc.CreateTenantRequest + (*ListTenantsRequest)(nil), // 7: boltzrpc.ListTenantsRequest + (*ListTenantsResponse)(nil), // 8: boltzrpc.ListTenantsResponse + (*GetTenantRequest)(nil), // 9: boltzrpc.GetTenantRequest + (*Tenant)(nil), // 10: boltzrpc.Tenant + (*MacaroonPermissions)(nil), // 11: boltzrpc.MacaroonPermissions + (*BakeMacaroonRequest)(nil), // 12: boltzrpc.BakeMacaroonRequest + (*BakeMacaroonResponse)(nil), // 13: boltzrpc.BakeMacaroonResponse + (*Pair)(nil), // 14: boltzrpc.Pair + (*SwapInfo)(nil), // 15: boltzrpc.SwapInfo + (*GetPairInfoRequest)(nil), // 16: boltzrpc.GetPairInfoRequest + (*PairInfo)(nil), // 17: boltzrpc.PairInfo + (*ChannelCreationInfo)(nil), // 18: boltzrpc.ChannelCreationInfo + (*CombinedChannelSwapInfo)(nil), // 19: boltzrpc.CombinedChannelSwapInfo + (*ReverseSwapInfo)(nil), // 20: boltzrpc.ReverseSwapInfo + (*BlockHeights)(nil), // 21: boltzrpc.BlockHeights + (*GetInfoRequest)(nil), // 22: boltzrpc.GetInfoRequest + (*GetInfoResponse)(nil), // 23: boltzrpc.GetInfoResponse + (*Limits)(nil), // 24: boltzrpc.Limits + (*SwapFees)(nil), // 25: boltzrpc.SwapFees + (*GetPairsResponse)(nil), // 26: boltzrpc.GetPairsResponse + (*MinerFees)(nil), // 27: boltzrpc.MinerFees + (*Fees)(nil), // 28: boltzrpc.Fees + (*GetServiceInfoRequest)(nil), // 29: boltzrpc.GetServiceInfoRequest + (*GetServiceInfoResponse)(nil), // 30: boltzrpc.GetServiceInfoResponse + (*AnySwapInfo)(nil), // 31: boltzrpc.AnySwapInfo + (*ListSwapsRequest)(nil), // 32: boltzrpc.ListSwapsRequest + (*ListSwapsResponse)(nil), // 33: boltzrpc.ListSwapsResponse + (*GetStatsRequest)(nil), // 34: boltzrpc.GetStatsRequest + (*GetStatsResponse)(nil), // 35: boltzrpc.GetStatsResponse + (*RefundSwapRequest)(nil), // 36: boltzrpc.RefundSwapRequest + (*ClaimSwapsRequest)(nil), // 37: boltzrpc.ClaimSwapsRequest + (*ClaimSwapsResponse)(nil), // 38: boltzrpc.ClaimSwapsResponse + (*GetSwapInfoRequest)(nil), // 39: boltzrpc.GetSwapInfoRequest + (*GetSwapInfoResponse)(nil), // 40: boltzrpc.GetSwapInfoResponse + (*DepositRequest)(nil), // 41: boltzrpc.DepositRequest + (*DepositResponse)(nil), // 42: boltzrpc.DepositResponse + (*CreateSwapRequest)(nil), // 43: boltzrpc.CreateSwapRequest + (*CreateSwapResponse)(nil), // 44: boltzrpc.CreateSwapResponse + (*CreateChannelRequest)(nil), // 45: boltzrpc.CreateChannelRequest + (*CreateReverseSwapRequest)(nil), // 46: boltzrpc.CreateReverseSwapRequest + (*CreateReverseSwapResponse)(nil), // 47: boltzrpc.CreateReverseSwapResponse + (*CreateChainSwapRequest)(nil), // 48: boltzrpc.CreateChainSwapRequest + (*ChainSwapInfo)(nil), // 49: boltzrpc.ChainSwapInfo + (*ChainSwapData)(nil), // 50: boltzrpc.ChainSwapData + (*ChannelId)(nil), // 51: boltzrpc.ChannelId + (*LightningChannel)(nil), // 52: boltzrpc.LightningChannel + (*SwapStats)(nil), // 53: boltzrpc.SwapStats + (*Budget)(nil), // 54: boltzrpc.Budget + (*WalletCredentials)(nil), // 55: boltzrpc.WalletCredentials + (*WalletParams)(nil), // 56: boltzrpc.WalletParams + (*ImportWalletRequest)(nil), // 57: boltzrpc.ImportWalletRequest + (*CreateWalletRequest)(nil), // 58: boltzrpc.CreateWalletRequest + (*CreateWalletResponse)(nil), // 59: boltzrpc.CreateWalletResponse + (*SetSubaccountRequest)(nil), // 60: boltzrpc.SetSubaccountRequest + (*GetSubaccountsRequest)(nil), // 61: boltzrpc.GetSubaccountsRequest + (*GetSubaccountsResponse)(nil), // 62: boltzrpc.GetSubaccountsResponse + (*ImportWalletResponse)(nil), // 63: boltzrpc.ImportWalletResponse + (*GetWalletsRequest)(nil), // 64: boltzrpc.GetWalletsRequest + (*GetWalletRequest)(nil), // 65: boltzrpc.GetWalletRequest + (*ListWalletTransactionsRequest)(nil), // 66: boltzrpc.ListWalletTransactionsRequest + (*WalletTransaction)(nil), // 67: boltzrpc.WalletTransaction + (*TransactionOutput)(nil), // 68: boltzrpc.TransactionOutput + (*ListWalletTransactionsResponse)(nil), // 69: boltzrpc.ListWalletTransactionsResponse + (*GetWalletCredentialsRequest)(nil), // 70: boltzrpc.GetWalletCredentialsRequest + (*RemoveWalletRequest)(nil), // 71: boltzrpc.RemoveWalletRequest + (*WalletSendRequest)(nil), // 72: boltzrpc.WalletSendRequest + (*WalletSendResponse)(nil), // 73: boltzrpc.WalletSendResponse + (*WalletReceiveRequest)(nil), // 74: boltzrpc.WalletReceiveRequest + (*WalletReceiveResponse)(nil), // 75: boltzrpc.WalletReceiveResponse + (*Wallet)(nil), // 76: boltzrpc.Wallet + (*Wallets)(nil), // 77: boltzrpc.Wallets + (*Balance)(nil), // 78: boltzrpc.Balance + (*Subaccount)(nil), // 79: boltzrpc.Subaccount + (*RemoveWalletResponse)(nil), // 80: boltzrpc.RemoveWalletResponse + (*UnlockRequest)(nil), // 81: boltzrpc.UnlockRequest + (*VerifyWalletPasswordRequest)(nil), // 82: boltzrpc.VerifyWalletPasswordRequest + (*VerifyWalletPasswordResponse)(nil), // 83: boltzrpc.VerifyWalletPasswordResponse + (*ChangeWalletPasswordRequest)(nil), // 84: boltzrpc.ChangeWalletPasswordRequest + (*emptypb.Empty)(nil), // 85: google.protobuf.Empty } var file_boltzrpc_proto_depIdxs = []int32{ - 9, // 0: boltzrpc.ListTenantsResponse.tenants:type_name -> boltzrpc.Tenant - 0, // 1: boltzrpc.MacaroonPermissions.action:type_name -> boltzrpc.MacaroonAction - 10, // 2: boltzrpc.BakeMacaroonRequest.permissions:type_name -> boltzrpc.MacaroonPermissions - 2, // 3: boltzrpc.Pair.from:type_name -> boltzrpc.Currency - 2, // 4: boltzrpc.Pair.to:type_name -> boltzrpc.Currency - 13, // 5: boltzrpc.SwapInfo.pair:type_name -> boltzrpc.Pair - 1, // 6: boltzrpc.SwapInfo.state:type_name -> boltzrpc.SwapState - 50, // 7: boltzrpc.SwapInfo.chan_ids:type_name -> boltzrpc.ChannelId - 3, // 8: boltzrpc.GetPairInfoRequest.type:type_name -> boltzrpc.SwapType - 13, // 9: boltzrpc.GetPairInfoRequest.pair:type_name -> boltzrpc.Pair - 13, // 10: boltzrpc.PairInfo.pair:type_name -> boltzrpc.Pair - 24, // 11: boltzrpc.PairInfo.fees:type_name -> boltzrpc.SwapFees - 23, // 12: boltzrpc.PairInfo.limits:type_name -> boltzrpc.Limits - 14, // 13: boltzrpc.CombinedChannelSwapInfo.swap:type_name -> boltzrpc.SwapInfo - 17, // 14: boltzrpc.CombinedChannelSwapInfo.channel_creation:type_name -> boltzrpc.ChannelCreationInfo - 1, // 15: boltzrpc.ReverseSwapInfo.state:type_name -> boltzrpc.SwapState - 13, // 16: boltzrpc.ReverseSwapInfo.pair:type_name -> boltzrpc.Pair - 50, // 17: boltzrpc.ReverseSwapInfo.chan_ids:type_name -> boltzrpc.ChannelId - 20, // 18: boltzrpc.GetInfoResponse.block_heights:type_name -> boltzrpc.BlockHeights - 9, // 19: boltzrpc.GetInfoResponse.tenant:type_name -> boltzrpc.Tenant - 16, // 20: boltzrpc.GetPairsResponse.submarine:type_name -> boltzrpc.PairInfo - 16, // 21: boltzrpc.GetPairsResponse.reverse:type_name -> boltzrpc.PairInfo - 16, // 22: boltzrpc.GetPairsResponse.chain:type_name -> boltzrpc.PairInfo - 26, // 23: boltzrpc.Fees.miner:type_name -> boltzrpc.MinerFees - 27, // 24: boltzrpc.GetServiceInfoResponse.fees:type_name -> boltzrpc.Fees - 23, // 25: boltzrpc.GetServiceInfoResponse.limits:type_name -> boltzrpc.Limits - 3, // 26: boltzrpc.AnySwapInfo.type:type_name -> boltzrpc.SwapType - 13, // 27: boltzrpc.AnySwapInfo.pair:type_name -> boltzrpc.Pair - 1, // 28: boltzrpc.AnySwapInfo.state:type_name -> boltzrpc.SwapState - 2, // 29: boltzrpc.ListSwapsRequest.from:type_name -> boltzrpc.Currency - 2, // 30: boltzrpc.ListSwapsRequest.to:type_name -> boltzrpc.Currency - 1, // 31: boltzrpc.ListSwapsRequest.state:type_name -> boltzrpc.SwapState - 4, // 32: boltzrpc.ListSwapsRequest.include:type_name -> boltzrpc.IncludeSwaps - 14, // 33: boltzrpc.ListSwapsResponse.swaps:type_name -> boltzrpc.SwapInfo - 18, // 34: boltzrpc.ListSwapsResponse.channel_creations:type_name -> boltzrpc.CombinedChannelSwapInfo - 19, // 35: boltzrpc.ListSwapsResponse.reverse_swaps:type_name -> boltzrpc.ReverseSwapInfo - 48, // 36: boltzrpc.ListSwapsResponse.chain_swaps:type_name -> boltzrpc.ChainSwapInfo - 30, // 37: boltzrpc.ListSwapsResponse.all_swaps:type_name -> boltzrpc.AnySwapInfo - 4, // 38: boltzrpc.GetStatsRequest.include:type_name -> boltzrpc.IncludeSwaps - 52, // 39: boltzrpc.GetStatsResponse.stats:type_name -> boltzrpc.SwapStats - 14, // 40: boltzrpc.GetSwapInfoResponse.swap:type_name -> boltzrpc.SwapInfo - 17, // 41: boltzrpc.GetSwapInfoResponse.channel_creation:type_name -> boltzrpc.ChannelCreationInfo - 19, // 42: boltzrpc.GetSwapInfoResponse.reverse_swap:type_name -> boltzrpc.ReverseSwapInfo - 48, // 43: boltzrpc.GetSwapInfoResponse.chain_swap:type_name -> boltzrpc.ChainSwapInfo - 13, // 44: boltzrpc.CreateSwapRequest.pair:type_name -> boltzrpc.Pair - 13, // 45: boltzrpc.CreateReverseSwapRequest.pair:type_name -> boltzrpc.Pair - 13, // 46: boltzrpc.CreateChainSwapRequest.pair:type_name -> boltzrpc.Pair - 13, // 47: boltzrpc.ChainSwapInfo.pair:type_name -> boltzrpc.Pair - 1, // 48: boltzrpc.ChainSwapInfo.state:type_name -> boltzrpc.SwapState - 49, // 49: boltzrpc.ChainSwapInfo.from_data:type_name -> boltzrpc.ChainSwapData - 49, // 50: boltzrpc.ChainSwapInfo.to_data:type_name -> boltzrpc.ChainSwapData - 2, // 51: boltzrpc.ChainSwapData.currency:type_name -> boltzrpc.Currency - 50, // 52: boltzrpc.LightningChannel.id:type_name -> boltzrpc.ChannelId - 2, // 53: boltzrpc.WalletParams.currency:type_name -> boltzrpc.Currency - 54, // 54: boltzrpc.ImportWalletRequest.credentials:type_name -> boltzrpc.WalletCredentials - 55, // 55: boltzrpc.ImportWalletRequest.params:type_name -> boltzrpc.WalletParams - 55, // 56: boltzrpc.CreateWalletRequest.params:type_name -> boltzrpc.WalletParams - 71, // 57: boltzrpc.CreateWalletResponse.wallet:type_name -> boltzrpc.Wallet - 74, // 58: boltzrpc.GetSubaccountsResponse.subaccounts:type_name -> boltzrpc.Subaccount - 2, // 59: boltzrpc.GetWalletsRequest.currency:type_name -> boltzrpc.Currency - 2, // 60: boltzrpc.Wallet.currency:type_name -> boltzrpc.Currency - 73, // 61: boltzrpc.Wallet.balance:type_name -> boltzrpc.Balance - 71, // 62: boltzrpc.Wallets.wallets:type_name -> boltzrpc.Wallet - 73, // 63: boltzrpc.Subaccount.balance:type_name -> boltzrpc.Balance - 21, // 64: boltzrpc.Boltz.GetInfo:input_type -> boltzrpc.GetInfoRequest - 28, // 65: boltzrpc.Boltz.GetServiceInfo:input_type -> boltzrpc.GetServiceInfoRequest - 15, // 66: boltzrpc.Boltz.GetPairInfo:input_type -> boltzrpc.GetPairInfoRequest - 80, // 67: boltzrpc.Boltz.GetPairs:input_type -> google.protobuf.Empty - 31, // 68: boltzrpc.Boltz.ListSwaps:input_type -> boltzrpc.ListSwapsRequest - 33, // 69: boltzrpc.Boltz.GetStats:input_type -> boltzrpc.GetStatsRequest - 35, // 70: boltzrpc.Boltz.RefundSwap:input_type -> boltzrpc.RefundSwapRequest - 36, // 71: boltzrpc.Boltz.ClaimSwaps:input_type -> boltzrpc.ClaimSwapsRequest - 38, // 72: boltzrpc.Boltz.GetSwapInfo:input_type -> boltzrpc.GetSwapInfoRequest - 38, // 73: boltzrpc.Boltz.GetSwapInfoStream:input_type -> boltzrpc.GetSwapInfoRequest - 40, // 74: boltzrpc.Boltz.Deposit:input_type -> boltzrpc.DepositRequest - 42, // 75: boltzrpc.Boltz.CreateSwap:input_type -> boltzrpc.CreateSwapRequest - 44, // 76: boltzrpc.Boltz.CreateChannel:input_type -> boltzrpc.CreateChannelRequest - 45, // 77: boltzrpc.Boltz.CreateReverseSwap:input_type -> boltzrpc.CreateReverseSwapRequest - 47, // 78: boltzrpc.Boltz.CreateChainSwap:input_type -> boltzrpc.CreateChainSwapRequest - 57, // 79: boltzrpc.Boltz.CreateWallet:input_type -> boltzrpc.CreateWalletRequest - 56, // 80: boltzrpc.Boltz.ImportWallet:input_type -> boltzrpc.ImportWalletRequest - 59, // 81: boltzrpc.Boltz.SetSubaccount:input_type -> boltzrpc.SetSubaccountRequest - 60, // 82: boltzrpc.Boltz.GetSubaccounts:input_type -> boltzrpc.GetSubaccountsRequest - 63, // 83: boltzrpc.Boltz.GetWallets:input_type -> boltzrpc.GetWalletsRequest - 64, // 84: boltzrpc.Boltz.GetWallet:input_type -> boltzrpc.GetWalletRequest - 65, // 85: boltzrpc.Boltz.GetWalletCredentials:input_type -> boltzrpc.GetWalletCredentialsRequest - 66, // 86: boltzrpc.Boltz.RemoveWallet:input_type -> boltzrpc.RemoveWalletRequest - 67, // 87: boltzrpc.Boltz.WalletSend:input_type -> boltzrpc.WalletSendRequest - 69, // 88: boltzrpc.Boltz.WalletReceive:input_type -> boltzrpc.WalletReceiveRequest - 80, // 89: boltzrpc.Boltz.Stop:input_type -> google.protobuf.Empty - 76, // 90: boltzrpc.Boltz.Unlock:input_type -> boltzrpc.UnlockRequest - 77, // 91: boltzrpc.Boltz.VerifyWalletPassword:input_type -> boltzrpc.VerifyWalletPasswordRequest - 79, // 92: boltzrpc.Boltz.ChangeWalletPassword:input_type -> boltzrpc.ChangeWalletPasswordRequest - 5, // 93: boltzrpc.Boltz.CreateTenant:input_type -> boltzrpc.CreateTenantRequest - 6, // 94: boltzrpc.Boltz.ListTenants:input_type -> boltzrpc.ListTenantsRequest - 8, // 95: boltzrpc.Boltz.GetTenant:input_type -> boltzrpc.GetTenantRequest - 11, // 96: boltzrpc.Boltz.BakeMacaroon:input_type -> boltzrpc.BakeMacaroonRequest - 22, // 97: boltzrpc.Boltz.GetInfo:output_type -> boltzrpc.GetInfoResponse - 29, // 98: boltzrpc.Boltz.GetServiceInfo:output_type -> boltzrpc.GetServiceInfoResponse - 16, // 99: boltzrpc.Boltz.GetPairInfo:output_type -> boltzrpc.PairInfo - 25, // 100: boltzrpc.Boltz.GetPairs:output_type -> boltzrpc.GetPairsResponse - 32, // 101: boltzrpc.Boltz.ListSwaps:output_type -> boltzrpc.ListSwapsResponse - 34, // 102: boltzrpc.Boltz.GetStats:output_type -> boltzrpc.GetStatsResponse - 39, // 103: boltzrpc.Boltz.RefundSwap:output_type -> boltzrpc.GetSwapInfoResponse - 37, // 104: boltzrpc.Boltz.ClaimSwaps:output_type -> boltzrpc.ClaimSwapsResponse - 39, // 105: boltzrpc.Boltz.GetSwapInfo:output_type -> boltzrpc.GetSwapInfoResponse - 39, // 106: boltzrpc.Boltz.GetSwapInfoStream:output_type -> boltzrpc.GetSwapInfoResponse - 41, // 107: boltzrpc.Boltz.Deposit:output_type -> boltzrpc.DepositResponse - 43, // 108: boltzrpc.Boltz.CreateSwap:output_type -> boltzrpc.CreateSwapResponse - 43, // 109: boltzrpc.Boltz.CreateChannel:output_type -> boltzrpc.CreateSwapResponse - 46, // 110: boltzrpc.Boltz.CreateReverseSwap:output_type -> boltzrpc.CreateReverseSwapResponse - 48, // 111: boltzrpc.Boltz.CreateChainSwap:output_type -> boltzrpc.ChainSwapInfo - 58, // 112: boltzrpc.Boltz.CreateWallet:output_type -> boltzrpc.CreateWalletResponse - 71, // 113: boltzrpc.Boltz.ImportWallet:output_type -> boltzrpc.Wallet - 74, // 114: boltzrpc.Boltz.SetSubaccount:output_type -> boltzrpc.Subaccount - 61, // 115: boltzrpc.Boltz.GetSubaccounts:output_type -> boltzrpc.GetSubaccountsResponse - 72, // 116: boltzrpc.Boltz.GetWallets:output_type -> boltzrpc.Wallets - 71, // 117: boltzrpc.Boltz.GetWallet:output_type -> boltzrpc.Wallet - 54, // 118: boltzrpc.Boltz.GetWalletCredentials:output_type -> boltzrpc.WalletCredentials - 75, // 119: boltzrpc.Boltz.RemoveWallet:output_type -> boltzrpc.RemoveWalletResponse - 68, // 120: boltzrpc.Boltz.WalletSend:output_type -> boltzrpc.WalletSendResponse - 70, // 121: boltzrpc.Boltz.WalletReceive:output_type -> boltzrpc.WalletReceiveResponse - 80, // 122: boltzrpc.Boltz.Stop:output_type -> google.protobuf.Empty - 80, // 123: boltzrpc.Boltz.Unlock:output_type -> google.protobuf.Empty - 78, // 124: boltzrpc.Boltz.VerifyWalletPassword:output_type -> boltzrpc.VerifyWalletPasswordResponse - 80, // 125: boltzrpc.Boltz.ChangeWalletPassword:output_type -> google.protobuf.Empty - 9, // 126: boltzrpc.Boltz.CreateTenant:output_type -> boltzrpc.Tenant - 7, // 127: boltzrpc.Boltz.ListTenants:output_type -> boltzrpc.ListTenantsResponse - 9, // 128: boltzrpc.Boltz.GetTenant:output_type -> boltzrpc.Tenant - 12, // 129: boltzrpc.Boltz.BakeMacaroon:output_type -> boltzrpc.BakeMacaroonResponse - 97, // [97:130] is the sub-list for method output_type - 64, // [64:97] is the sub-list for method input_type - 64, // [64:64] is the sub-list for extension type_name - 64, // [64:64] is the sub-list for extension extendee - 0, // [0:64] is the sub-list for field type_name + 10, // 0: boltzrpc.ListTenantsResponse.tenants:type_name -> boltzrpc.Tenant + 0, // 1: boltzrpc.MacaroonPermissions.action:type_name -> boltzrpc.MacaroonAction + 11, // 2: boltzrpc.BakeMacaroonRequest.permissions:type_name -> boltzrpc.MacaroonPermissions + 2, // 3: boltzrpc.Pair.from:type_name -> boltzrpc.Currency + 2, // 4: boltzrpc.Pair.to:type_name -> boltzrpc.Currency + 14, // 5: boltzrpc.SwapInfo.pair:type_name -> boltzrpc.Pair + 1, // 6: boltzrpc.SwapInfo.state:type_name -> boltzrpc.SwapState + 51, // 7: boltzrpc.SwapInfo.chan_ids:type_name -> boltzrpc.ChannelId + 3, // 8: boltzrpc.GetPairInfoRequest.type:type_name -> boltzrpc.SwapType + 14, // 9: boltzrpc.GetPairInfoRequest.pair:type_name -> boltzrpc.Pair + 14, // 10: boltzrpc.PairInfo.pair:type_name -> boltzrpc.Pair + 25, // 11: boltzrpc.PairInfo.fees:type_name -> boltzrpc.SwapFees + 24, // 12: boltzrpc.PairInfo.limits:type_name -> boltzrpc.Limits + 15, // 13: boltzrpc.CombinedChannelSwapInfo.swap:type_name -> boltzrpc.SwapInfo + 18, // 14: boltzrpc.CombinedChannelSwapInfo.channel_creation:type_name -> boltzrpc.ChannelCreationInfo + 1, // 15: boltzrpc.ReverseSwapInfo.state:type_name -> boltzrpc.SwapState + 14, // 16: boltzrpc.ReverseSwapInfo.pair:type_name -> boltzrpc.Pair + 51, // 17: boltzrpc.ReverseSwapInfo.chan_ids:type_name -> boltzrpc.ChannelId + 21, // 18: boltzrpc.GetInfoResponse.block_heights:type_name -> boltzrpc.BlockHeights + 10, // 19: boltzrpc.GetInfoResponse.tenant:type_name -> boltzrpc.Tenant + 17, // 20: boltzrpc.GetPairsResponse.submarine:type_name -> boltzrpc.PairInfo + 17, // 21: boltzrpc.GetPairsResponse.reverse:type_name -> boltzrpc.PairInfo + 17, // 22: boltzrpc.GetPairsResponse.chain:type_name -> boltzrpc.PairInfo + 27, // 23: boltzrpc.Fees.miner:type_name -> boltzrpc.MinerFees + 28, // 24: boltzrpc.GetServiceInfoResponse.fees:type_name -> boltzrpc.Fees + 24, // 25: boltzrpc.GetServiceInfoResponse.limits:type_name -> boltzrpc.Limits + 3, // 26: boltzrpc.AnySwapInfo.type:type_name -> boltzrpc.SwapType + 14, // 27: boltzrpc.AnySwapInfo.pair:type_name -> boltzrpc.Pair + 1, // 28: boltzrpc.AnySwapInfo.state:type_name -> boltzrpc.SwapState + 2, // 29: boltzrpc.ListSwapsRequest.from:type_name -> boltzrpc.Currency + 2, // 30: boltzrpc.ListSwapsRequest.to:type_name -> boltzrpc.Currency + 1, // 31: boltzrpc.ListSwapsRequest.state:type_name -> boltzrpc.SwapState + 4, // 32: boltzrpc.ListSwapsRequest.include:type_name -> boltzrpc.IncludeSwaps + 15, // 33: boltzrpc.ListSwapsResponse.swaps:type_name -> boltzrpc.SwapInfo + 19, // 34: boltzrpc.ListSwapsResponse.channel_creations:type_name -> boltzrpc.CombinedChannelSwapInfo + 20, // 35: boltzrpc.ListSwapsResponse.reverse_swaps:type_name -> boltzrpc.ReverseSwapInfo + 49, // 36: boltzrpc.ListSwapsResponse.chain_swaps:type_name -> boltzrpc.ChainSwapInfo + 31, // 37: boltzrpc.ListSwapsResponse.all_swaps:type_name -> boltzrpc.AnySwapInfo + 4, // 38: boltzrpc.GetStatsRequest.include:type_name -> boltzrpc.IncludeSwaps + 53, // 39: boltzrpc.GetStatsResponse.stats:type_name -> boltzrpc.SwapStats + 15, // 40: boltzrpc.GetSwapInfoResponse.swap:type_name -> boltzrpc.SwapInfo + 18, // 41: boltzrpc.GetSwapInfoResponse.channel_creation:type_name -> boltzrpc.ChannelCreationInfo + 20, // 42: boltzrpc.GetSwapInfoResponse.reverse_swap:type_name -> boltzrpc.ReverseSwapInfo + 49, // 43: boltzrpc.GetSwapInfoResponse.chain_swap:type_name -> boltzrpc.ChainSwapInfo + 14, // 44: boltzrpc.CreateSwapRequest.pair:type_name -> boltzrpc.Pair + 14, // 45: boltzrpc.CreateReverseSwapRequest.pair:type_name -> boltzrpc.Pair + 14, // 46: boltzrpc.CreateChainSwapRequest.pair:type_name -> boltzrpc.Pair + 14, // 47: boltzrpc.ChainSwapInfo.pair:type_name -> boltzrpc.Pair + 1, // 48: boltzrpc.ChainSwapInfo.state:type_name -> boltzrpc.SwapState + 50, // 49: boltzrpc.ChainSwapInfo.from_data:type_name -> boltzrpc.ChainSwapData + 50, // 50: boltzrpc.ChainSwapInfo.to_data:type_name -> boltzrpc.ChainSwapData + 2, // 51: boltzrpc.ChainSwapData.currency:type_name -> boltzrpc.Currency + 51, // 52: boltzrpc.LightningChannel.id:type_name -> boltzrpc.ChannelId + 2, // 53: boltzrpc.WalletParams.currency:type_name -> boltzrpc.Currency + 55, // 54: boltzrpc.ImportWalletRequest.credentials:type_name -> boltzrpc.WalletCredentials + 56, // 55: boltzrpc.ImportWalletRequest.params:type_name -> boltzrpc.WalletParams + 56, // 56: boltzrpc.CreateWalletRequest.params:type_name -> boltzrpc.WalletParams + 76, // 57: boltzrpc.CreateWalletResponse.wallet:type_name -> boltzrpc.Wallet + 79, // 58: boltzrpc.GetSubaccountsResponse.subaccounts:type_name -> boltzrpc.Subaccount + 2, // 59: boltzrpc.GetWalletsRequest.currency:type_name -> boltzrpc.Currency + 68, // 60: boltzrpc.WalletTransaction.outputs:type_name -> boltzrpc.TransactionOutput + 5, // 61: boltzrpc.WalletTransaction.type:type_name -> boltzrpc.TransactionType + 67, // 62: boltzrpc.ListWalletTransactionsResponse.transactions:type_name -> boltzrpc.WalletTransaction + 2, // 63: boltzrpc.Wallet.currency:type_name -> boltzrpc.Currency + 78, // 64: boltzrpc.Wallet.balance:type_name -> boltzrpc.Balance + 76, // 65: boltzrpc.Wallets.wallets:type_name -> boltzrpc.Wallet + 78, // 66: boltzrpc.Subaccount.balance:type_name -> boltzrpc.Balance + 22, // 67: boltzrpc.Boltz.GetInfo:input_type -> boltzrpc.GetInfoRequest + 29, // 68: boltzrpc.Boltz.GetServiceInfo:input_type -> boltzrpc.GetServiceInfoRequest + 16, // 69: boltzrpc.Boltz.GetPairInfo:input_type -> boltzrpc.GetPairInfoRequest + 85, // 70: boltzrpc.Boltz.GetPairs:input_type -> google.protobuf.Empty + 32, // 71: boltzrpc.Boltz.ListSwaps:input_type -> boltzrpc.ListSwapsRequest + 34, // 72: boltzrpc.Boltz.GetStats:input_type -> boltzrpc.GetStatsRequest + 36, // 73: boltzrpc.Boltz.RefundSwap:input_type -> boltzrpc.RefundSwapRequest + 37, // 74: boltzrpc.Boltz.ClaimSwaps:input_type -> boltzrpc.ClaimSwapsRequest + 39, // 75: boltzrpc.Boltz.GetSwapInfo:input_type -> boltzrpc.GetSwapInfoRequest + 39, // 76: boltzrpc.Boltz.GetSwapInfoStream:input_type -> boltzrpc.GetSwapInfoRequest + 41, // 77: boltzrpc.Boltz.Deposit:input_type -> boltzrpc.DepositRequest + 43, // 78: boltzrpc.Boltz.CreateSwap:input_type -> boltzrpc.CreateSwapRequest + 45, // 79: boltzrpc.Boltz.CreateChannel:input_type -> boltzrpc.CreateChannelRequest + 46, // 80: boltzrpc.Boltz.CreateReverseSwap:input_type -> boltzrpc.CreateReverseSwapRequest + 48, // 81: boltzrpc.Boltz.CreateChainSwap:input_type -> boltzrpc.CreateChainSwapRequest + 58, // 82: boltzrpc.Boltz.CreateWallet:input_type -> boltzrpc.CreateWalletRequest + 57, // 83: boltzrpc.Boltz.ImportWallet:input_type -> boltzrpc.ImportWalletRequest + 60, // 84: boltzrpc.Boltz.SetSubaccount:input_type -> boltzrpc.SetSubaccountRequest + 61, // 85: boltzrpc.Boltz.GetSubaccounts:input_type -> boltzrpc.GetSubaccountsRequest + 64, // 86: boltzrpc.Boltz.GetWallets:input_type -> boltzrpc.GetWalletsRequest + 65, // 87: boltzrpc.Boltz.GetWallet:input_type -> boltzrpc.GetWalletRequest + 66, // 88: boltzrpc.Boltz.ListWalletTransactions:input_type -> boltzrpc.ListWalletTransactionsRequest + 70, // 89: boltzrpc.Boltz.GetWalletCredentials:input_type -> boltzrpc.GetWalletCredentialsRequest + 71, // 90: boltzrpc.Boltz.RemoveWallet:input_type -> boltzrpc.RemoveWalletRequest + 72, // 91: boltzrpc.Boltz.WalletSend:input_type -> boltzrpc.WalletSendRequest + 74, // 92: boltzrpc.Boltz.WalletReceive:input_type -> boltzrpc.WalletReceiveRequest + 85, // 93: boltzrpc.Boltz.Stop:input_type -> google.protobuf.Empty + 81, // 94: boltzrpc.Boltz.Unlock:input_type -> boltzrpc.UnlockRequest + 82, // 95: boltzrpc.Boltz.VerifyWalletPassword:input_type -> boltzrpc.VerifyWalletPasswordRequest + 84, // 96: boltzrpc.Boltz.ChangeWalletPassword:input_type -> boltzrpc.ChangeWalletPasswordRequest + 6, // 97: boltzrpc.Boltz.CreateTenant:input_type -> boltzrpc.CreateTenantRequest + 7, // 98: boltzrpc.Boltz.ListTenants:input_type -> boltzrpc.ListTenantsRequest + 9, // 99: boltzrpc.Boltz.GetTenant:input_type -> boltzrpc.GetTenantRequest + 12, // 100: boltzrpc.Boltz.BakeMacaroon:input_type -> boltzrpc.BakeMacaroonRequest + 23, // 101: boltzrpc.Boltz.GetInfo:output_type -> boltzrpc.GetInfoResponse + 30, // 102: boltzrpc.Boltz.GetServiceInfo:output_type -> boltzrpc.GetServiceInfoResponse + 17, // 103: boltzrpc.Boltz.GetPairInfo:output_type -> boltzrpc.PairInfo + 26, // 104: boltzrpc.Boltz.GetPairs:output_type -> boltzrpc.GetPairsResponse + 33, // 105: boltzrpc.Boltz.ListSwaps:output_type -> boltzrpc.ListSwapsResponse + 35, // 106: boltzrpc.Boltz.GetStats:output_type -> boltzrpc.GetStatsResponse + 40, // 107: boltzrpc.Boltz.RefundSwap:output_type -> boltzrpc.GetSwapInfoResponse + 38, // 108: boltzrpc.Boltz.ClaimSwaps:output_type -> boltzrpc.ClaimSwapsResponse + 40, // 109: boltzrpc.Boltz.GetSwapInfo:output_type -> boltzrpc.GetSwapInfoResponse + 40, // 110: boltzrpc.Boltz.GetSwapInfoStream:output_type -> boltzrpc.GetSwapInfoResponse + 42, // 111: boltzrpc.Boltz.Deposit:output_type -> boltzrpc.DepositResponse + 44, // 112: boltzrpc.Boltz.CreateSwap:output_type -> boltzrpc.CreateSwapResponse + 44, // 113: boltzrpc.Boltz.CreateChannel:output_type -> boltzrpc.CreateSwapResponse + 47, // 114: boltzrpc.Boltz.CreateReverseSwap:output_type -> boltzrpc.CreateReverseSwapResponse + 49, // 115: boltzrpc.Boltz.CreateChainSwap:output_type -> boltzrpc.ChainSwapInfo + 59, // 116: boltzrpc.Boltz.CreateWallet:output_type -> boltzrpc.CreateWalletResponse + 76, // 117: boltzrpc.Boltz.ImportWallet:output_type -> boltzrpc.Wallet + 79, // 118: boltzrpc.Boltz.SetSubaccount:output_type -> boltzrpc.Subaccount + 62, // 119: boltzrpc.Boltz.GetSubaccounts:output_type -> boltzrpc.GetSubaccountsResponse + 77, // 120: boltzrpc.Boltz.GetWallets:output_type -> boltzrpc.Wallets + 76, // 121: boltzrpc.Boltz.GetWallet:output_type -> boltzrpc.Wallet + 69, // 122: boltzrpc.Boltz.ListWalletTransactions:output_type -> boltzrpc.ListWalletTransactionsResponse + 55, // 123: boltzrpc.Boltz.GetWalletCredentials:output_type -> boltzrpc.WalletCredentials + 80, // 124: boltzrpc.Boltz.RemoveWallet:output_type -> boltzrpc.RemoveWalletResponse + 73, // 125: boltzrpc.Boltz.WalletSend:output_type -> boltzrpc.WalletSendResponse + 75, // 126: boltzrpc.Boltz.WalletReceive:output_type -> boltzrpc.WalletReceiveResponse + 85, // 127: boltzrpc.Boltz.Stop:output_type -> google.protobuf.Empty + 85, // 128: boltzrpc.Boltz.Unlock:output_type -> google.protobuf.Empty + 83, // 129: boltzrpc.Boltz.VerifyWalletPassword:output_type -> boltzrpc.VerifyWalletPasswordResponse + 85, // 130: boltzrpc.Boltz.ChangeWalletPassword:output_type -> google.protobuf.Empty + 10, // 131: boltzrpc.Boltz.CreateTenant:output_type -> boltzrpc.Tenant + 8, // 132: boltzrpc.Boltz.ListTenants:output_type -> boltzrpc.ListTenantsResponse + 10, // 133: boltzrpc.Boltz.GetTenant:output_type -> boltzrpc.Tenant + 13, // 134: boltzrpc.Boltz.BakeMacaroon:output_type -> boltzrpc.BakeMacaroonResponse + 101, // [101:135] is the sub-list for method output_type + 67, // [67:101] is the sub-list for method input_type + 67, // [67:67] is the sub-list for extension type_name + 67, // [67:67] is the sub-list for extension extendee + 0, // [0:67] is the sub-list for field type_name } func init() { file_boltzrpc_proto_init() } @@ -7499,7 +7868,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetWalletCredentialsRequest); i { + switch v := v.(*ListWalletTransactionsRequest); i { case 0: return &v.state case 1: @@ -7511,7 +7880,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveWalletRequest); i { + switch v := v.(*WalletTransaction); i { case 0: return &v.state case 1: @@ -7523,7 +7892,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WalletSendRequest); i { + switch v := v.(*TransactionOutput); i { case 0: return &v.state case 1: @@ -7535,7 +7904,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WalletSendResponse); i { + switch v := v.(*ListWalletTransactionsResponse); i { case 0: return &v.state case 1: @@ -7547,7 +7916,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WalletReceiveRequest); i { + switch v := v.(*GetWalletCredentialsRequest); i { case 0: return &v.state case 1: @@ -7559,7 +7928,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WalletReceiveResponse); i { + switch v := v.(*RemoveWalletRequest); i { case 0: return &v.state case 1: @@ -7571,7 +7940,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Wallet); i { + switch v := v.(*WalletSendRequest); i { case 0: return &v.state case 1: @@ -7583,7 +7952,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Wallets); i { + switch v := v.(*WalletSendResponse); i { case 0: return &v.state case 1: @@ -7595,7 +7964,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Balance); i { + switch v := v.(*WalletReceiveRequest); i { case 0: return &v.state case 1: @@ -7607,7 +7976,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Subaccount); i { + switch v := v.(*WalletReceiveResponse); i { case 0: return &v.state case 1: @@ -7619,7 +7988,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveWalletResponse); i { + switch v := v.(*Wallet); i { case 0: return &v.state case 1: @@ -7631,7 +8000,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnlockRequest); i { + switch v := v.(*Wallets); i { case 0: return &v.state case 1: @@ -7643,7 +8012,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyWalletPasswordRequest); i { + switch v := v.(*Balance); i { case 0: return &v.state case 1: @@ -7655,7 +8024,7 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerifyWalletPasswordResponse); i { + switch v := v.(*Subaccount); i { case 0: return &v.state case 1: @@ -7667,6 +8036,54 @@ func file_boltzrpc_proto_init() { } } file_boltzrpc_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveWalletResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_boltzrpc_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UnlockRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_boltzrpc_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VerifyWalletPasswordRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_boltzrpc_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VerifyWalletPasswordResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_boltzrpc_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChangeWalletPasswordRequest); i { case 0: return &v.state @@ -7707,14 +8124,16 @@ func file_boltzrpc_proto_init() { file_boltzrpc_proto_msgTypes[58].OneofWrappers = []interface{}{} file_boltzrpc_proto_msgTypes[59].OneofWrappers = []interface{}{} file_boltzrpc_proto_msgTypes[60].OneofWrappers = []interface{}{} - file_boltzrpc_proto_msgTypes[62].OneofWrappers = []interface{}{} + file_boltzrpc_proto_msgTypes[61].OneofWrappers = []interface{}{} + file_boltzrpc_proto_msgTypes[64].OneofWrappers = []interface{}{} + file_boltzrpc_proto_msgTypes[66].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_boltzrpc_proto_rawDesc, - NumEnums: 5, - NumMessages: 75, + NumEnums: 6, + NumMessages: 79, NumExtensions: 0, NumServices: 1, }, diff --git a/boltzrpc/boltzrpc.proto b/boltzrpc/boltzrpc.proto index e44b9beb..1b9b5981 100644 --- a/boltzrpc/boltzrpc.proto +++ b/boltzrpc/boltzrpc.proto @@ -122,6 +122,11 @@ service Boltz { */ rpc GetWallet (GetWalletRequest) returns (Wallet); + /* + Returns recent transactions from a wallet. + */ + rpc ListWalletTransactions (ListWalletTransactionsRequest) returns (ListWalletTransactionsResponse); + /* Returns the credentials of a wallet. The password will be required if the wallet is encrypted. */ @@ -733,6 +738,39 @@ message GetWalletRequest { optional uint64 id = 2; } +message ListWalletTransactionsRequest { + uint64 id = 1; + optional bool exclude_swap_related = 2; +} + +enum TransactionType { + ANY = 0; + LOCKUP = 1; + REFUND = 2; + CLAIM = 3; + RECEIVE = 4; + SEND = 5; +} + +message WalletTransaction { + string tx_id = 1; + uint64 total_amount = 2; + int64 timestamp = 3; + repeated TransactionOutput outputs = 4; + uint32 block_height = 5; + optional string swap_id = 6; + TransactionType type = 7; +} + +message TransactionOutput { + string address = 1; + uint64 amount = 2; +} + +message ListWalletTransactionsResponse { + repeated WalletTransaction transactions = 1; +} + message GetWalletCredentialsRequest { uint64 id = 1; optional string password = 2; diff --git a/boltzrpc/boltzrpc_grpc.pb.go b/boltzrpc/boltzrpc_grpc.pb.go index 0a0ed524..636bd078 100644 --- a/boltzrpc/boltzrpc_grpc.pb.go +++ b/boltzrpc/boltzrpc_grpc.pb.go @@ -20,39 +20,40 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - Boltz_GetInfo_FullMethodName = "/boltzrpc.Boltz/GetInfo" - Boltz_GetServiceInfo_FullMethodName = "/boltzrpc.Boltz/GetServiceInfo" - Boltz_GetPairInfo_FullMethodName = "/boltzrpc.Boltz/GetPairInfo" - Boltz_GetPairs_FullMethodName = "/boltzrpc.Boltz/GetPairs" - Boltz_ListSwaps_FullMethodName = "/boltzrpc.Boltz/ListSwaps" - Boltz_GetStats_FullMethodName = "/boltzrpc.Boltz/GetStats" - Boltz_RefundSwap_FullMethodName = "/boltzrpc.Boltz/RefundSwap" - Boltz_ClaimSwaps_FullMethodName = "/boltzrpc.Boltz/ClaimSwaps" - Boltz_GetSwapInfo_FullMethodName = "/boltzrpc.Boltz/GetSwapInfo" - Boltz_GetSwapInfoStream_FullMethodName = "/boltzrpc.Boltz/GetSwapInfoStream" - Boltz_Deposit_FullMethodName = "/boltzrpc.Boltz/Deposit" - Boltz_CreateSwap_FullMethodName = "/boltzrpc.Boltz/CreateSwap" - Boltz_CreateChannel_FullMethodName = "/boltzrpc.Boltz/CreateChannel" - Boltz_CreateReverseSwap_FullMethodName = "/boltzrpc.Boltz/CreateReverseSwap" - Boltz_CreateChainSwap_FullMethodName = "/boltzrpc.Boltz/CreateChainSwap" - Boltz_CreateWallet_FullMethodName = "/boltzrpc.Boltz/CreateWallet" - Boltz_ImportWallet_FullMethodName = "/boltzrpc.Boltz/ImportWallet" - Boltz_SetSubaccount_FullMethodName = "/boltzrpc.Boltz/SetSubaccount" - Boltz_GetSubaccounts_FullMethodName = "/boltzrpc.Boltz/GetSubaccounts" - Boltz_GetWallets_FullMethodName = "/boltzrpc.Boltz/GetWallets" - Boltz_GetWallet_FullMethodName = "/boltzrpc.Boltz/GetWallet" - Boltz_GetWalletCredentials_FullMethodName = "/boltzrpc.Boltz/GetWalletCredentials" - Boltz_RemoveWallet_FullMethodName = "/boltzrpc.Boltz/RemoveWallet" - Boltz_WalletSend_FullMethodName = "/boltzrpc.Boltz/WalletSend" - Boltz_WalletReceive_FullMethodName = "/boltzrpc.Boltz/WalletReceive" - Boltz_Stop_FullMethodName = "/boltzrpc.Boltz/Stop" - Boltz_Unlock_FullMethodName = "/boltzrpc.Boltz/Unlock" - Boltz_VerifyWalletPassword_FullMethodName = "/boltzrpc.Boltz/VerifyWalletPassword" - Boltz_ChangeWalletPassword_FullMethodName = "/boltzrpc.Boltz/ChangeWalletPassword" - Boltz_CreateTenant_FullMethodName = "/boltzrpc.Boltz/CreateTenant" - Boltz_ListTenants_FullMethodName = "/boltzrpc.Boltz/ListTenants" - Boltz_GetTenant_FullMethodName = "/boltzrpc.Boltz/GetTenant" - Boltz_BakeMacaroon_FullMethodName = "/boltzrpc.Boltz/BakeMacaroon" + Boltz_GetInfo_FullMethodName = "/boltzrpc.Boltz/GetInfo" + Boltz_GetServiceInfo_FullMethodName = "/boltzrpc.Boltz/GetServiceInfo" + Boltz_GetPairInfo_FullMethodName = "/boltzrpc.Boltz/GetPairInfo" + Boltz_GetPairs_FullMethodName = "/boltzrpc.Boltz/GetPairs" + Boltz_ListSwaps_FullMethodName = "/boltzrpc.Boltz/ListSwaps" + Boltz_GetStats_FullMethodName = "/boltzrpc.Boltz/GetStats" + Boltz_RefundSwap_FullMethodName = "/boltzrpc.Boltz/RefundSwap" + Boltz_ClaimSwaps_FullMethodName = "/boltzrpc.Boltz/ClaimSwaps" + Boltz_GetSwapInfo_FullMethodName = "/boltzrpc.Boltz/GetSwapInfo" + Boltz_GetSwapInfoStream_FullMethodName = "/boltzrpc.Boltz/GetSwapInfoStream" + Boltz_Deposit_FullMethodName = "/boltzrpc.Boltz/Deposit" + Boltz_CreateSwap_FullMethodName = "/boltzrpc.Boltz/CreateSwap" + Boltz_CreateChannel_FullMethodName = "/boltzrpc.Boltz/CreateChannel" + Boltz_CreateReverseSwap_FullMethodName = "/boltzrpc.Boltz/CreateReverseSwap" + Boltz_CreateChainSwap_FullMethodName = "/boltzrpc.Boltz/CreateChainSwap" + Boltz_CreateWallet_FullMethodName = "/boltzrpc.Boltz/CreateWallet" + Boltz_ImportWallet_FullMethodName = "/boltzrpc.Boltz/ImportWallet" + Boltz_SetSubaccount_FullMethodName = "/boltzrpc.Boltz/SetSubaccount" + Boltz_GetSubaccounts_FullMethodName = "/boltzrpc.Boltz/GetSubaccounts" + Boltz_GetWallets_FullMethodName = "/boltzrpc.Boltz/GetWallets" + Boltz_GetWallet_FullMethodName = "/boltzrpc.Boltz/GetWallet" + Boltz_ListWalletTransactions_FullMethodName = "/boltzrpc.Boltz/ListWalletTransactions" + Boltz_GetWalletCredentials_FullMethodName = "/boltzrpc.Boltz/GetWalletCredentials" + Boltz_RemoveWallet_FullMethodName = "/boltzrpc.Boltz/RemoveWallet" + Boltz_WalletSend_FullMethodName = "/boltzrpc.Boltz/WalletSend" + Boltz_WalletReceive_FullMethodName = "/boltzrpc.Boltz/WalletReceive" + Boltz_Stop_FullMethodName = "/boltzrpc.Boltz/Stop" + Boltz_Unlock_FullMethodName = "/boltzrpc.Boltz/Unlock" + Boltz_VerifyWalletPassword_FullMethodName = "/boltzrpc.Boltz/VerifyWalletPassword" + Boltz_ChangeWalletPassword_FullMethodName = "/boltzrpc.Boltz/ChangeWalletPassword" + Boltz_CreateTenant_FullMethodName = "/boltzrpc.Boltz/CreateTenant" + Boltz_ListTenants_FullMethodName = "/boltzrpc.Boltz/ListTenants" + Boltz_GetTenant_FullMethodName = "/boltzrpc.Boltz/GetTenant" + Boltz_BakeMacaroon_FullMethodName = "/boltzrpc.Boltz/BakeMacaroon" ) // BoltzClient is the client API for Boltz service. @@ -117,6 +118,8 @@ type BoltzClient interface { GetWallets(ctx context.Context, in *GetWalletsRequest, opts ...grpc.CallOption) (*Wallets, error) // Returns the current balance and subaccount of a wallet. GetWallet(ctx context.Context, in *GetWalletRequest, opts ...grpc.CallOption) (*Wallet, error) + // Returns recent transactions from a wallet. + ListWalletTransactions(ctx context.Context, in *ListWalletTransactionsRequest, opts ...grpc.CallOption) (*ListWalletTransactionsResponse, error) // Returns the credentials of a wallet. The password will be required if the wallet is encrypted. GetWalletCredentials(ctx context.Context, in *GetWalletCredentialsRequest, opts ...grpc.CallOption) (*WalletCredentials, error) // Removes a wallet. @@ -369,6 +372,15 @@ func (c *boltzClient) GetWallet(ctx context.Context, in *GetWalletRequest, opts return out, nil } +func (c *boltzClient) ListWalletTransactions(ctx context.Context, in *ListWalletTransactionsRequest, opts ...grpc.CallOption) (*ListWalletTransactionsResponse, error) { + out := new(ListWalletTransactionsResponse) + err := c.cc.Invoke(ctx, Boltz_ListWalletTransactions_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *boltzClient) GetWalletCredentials(ctx context.Context, in *GetWalletCredentialsRequest, opts ...grpc.CallOption) (*WalletCredentials, error) { out := new(WalletCredentials) err := c.cc.Invoke(ctx, Boltz_GetWalletCredentials_FullMethodName, in, out, opts...) @@ -539,6 +551,8 @@ type BoltzServer interface { GetWallets(context.Context, *GetWalletsRequest) (*Wallets, error) // Returns the current balance and subaccount of a wallet. GetWallet(context.Context, *GetWalletRequest) (*Wallet, error) + // Returns recent transactions from a wallet. + ListWalletTransactions(context.Context, *ListWalletTransactionsRequest) (*ListWalletTransactionsResponse, error) // Returns the credentials of a wallet. The password will be required if the wallet is encrypted. GetWalletCredentials(context.Context, *GetWalletCredentialsRequest) (*WalletCredentials, error) // Removes a wallet. @@ -636,6 +650,9 @@ func (UnimplementedBoltzServer) GetWallets(context.Context, *GetWalletsRequest) func (UnimplementedBoltzServer) GetWallet(context.Context, *GetWalletRequest) (*Wallet, error) { return nil, status.Errorf(codes.Unimplemented, "method GetWallet not implemented") } +func (UnimplementedBoltzServer) ListWalletTransactions(context.Context, *ListWalletTransactionsRequest) (*ListWalletTransactionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListWalletTransactions not implemented") +} func (UnimplementedBoltzServer) GetWalletCredentials(context.Context, *GetWalletCredentialsRequest) (*WalletCredentials, error) { return nil, status.Errorf(codes.Unimplemented, "method GetWalletCredentials not implemented") } @@ -1066,6 +1083,24 @@ func _Boltz_GetWallet_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } +func _Boltz_ListWalletTransactions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListWalletTransactionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(BoltzServer).ListWalletTransactions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Boltz_ListWalletTransactions_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(BoltzServer).ListWalletTransactions(ctx, req.(*ListWalletTransactionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Boltz_GetWalletCredentials_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetWalletCredentialsRequest) if err := dec(in); err != nil { @@ -1369,6 +1404,10 @@ var Boltz_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetWallet", Handler: _Boltz_GetWallet_Handler, }, + { + MethodName: "ListWalletTransactions", + Handler: _Boltz_ListWalletTransactions_Handler, + }, { MethodName: "GetWalletCredentials", Handler: _Boltz_GetWalletCredentials_Handler, diff --git a/boltzrpc/client/client.go b/boltzrpc/client/client.go index 7a1d0916..66907d78 100644 --- a/boltzrpc/client/client.go +++ b/boltzrpc/client/client.go @@ -97,6 +97,10 @@ func (boltz *Boltz) GetWallets(currency *boltzrpc.Currency, includeReadonly bool return boltz.Client.GetWallets(boltz.Ctx, &boltzrpc.GetWalletsRequest{Currency: currency, IncludeReadonly: &includeReadonly}) } +func (boltz *Boltz) ListWalletTransactions(id uint64, excludeSwapRelated bool) (*boltzrpc.ListWalletTransactionsResponse, error) { + return boltz.Client.ListWalletTransactions(boltz.Ctx, &boltzrpc.ListWalletTransactionsRequest{Id: id, ExcludeSwapRelated: &excludeSwapRelated}) +} + func (boltz *Boltz) ImportWallet(params *boltzrpc.WalletParams, credentials *boltzrpc.WalletCredentials) (*boltzrpc.Wallet, error) { return boltz.Client.ImportWallet(boltz.Ctx, &boltzrpc.ImportWalletRequest{Params: params, Credentials: credentials}) } diff --git a/cln/cln.go b/cln/cln.go index 122713cd..7aa34d19 100755 --- a/cln/cln.go +++ b/cln/cln.go @@ -162,6 +162,10 @@ func (c *Cln) ListChannels() ([]*lightning.LightningChannel, error) { return results, nil } +func (c *Cln) GetTransactions() ([]*onchain.WalletTransaction, error) { + return nil, errors.New("not implemented for cln") +} + func (c *Cln) SanityCheck() (string, error) { info, err := c.Client.Getinfo(context.Background(), &protos.GetinfoRequest{}) if err != nil { diff --git a/cmd/boltzcli/commands.go b/cmd/boltzcli/commands.go index 56894725..a7d2fa15 100644 --- a/cmd/boltzcli/commands.go +++ b/cmd/boltzcli/commands.go @@ -1532,6 +1532,13 @@ var walletCommands = &cli.Command{ Action: listWallets, Flags: []cli.Flag{jsonFlag}, }, + { + Name: "transactions", + ArgsUsage: "name", + Usage: "Show the recent transaction history of a wallet", + Action: requireNArgs(1, listTransactions), + Flags: []cli.Flag{jsonFlag, &cli.BoolFlag{Name: "exclude-swap-related", Usage: "Exclude swap related transactions"}}, + }, { Name: "subaccount", Usage: "Select the subaccount for a wallet", @@ -1979,6 +1986,20 @@ func listWallets(ctx *cli.Context) error { return nil } +func listTransactions(ctx *cli.Context) error { + client := getClient(ctx) + walletId, err := getWalletId(ctx, ctx.Args().First()) + if err != nil { + return err + } + response, err := client.ListWalletTransactions(*walletId, ctx.Bool("exclude-swap-related")) + if err != nil { + return err + } + printJson(response) + return nil +} + var formatMacaroonCommand = &cli.Command{ Name: "formatmacaroon", Category: "Debug", diff --git a/database/any.go b/database/any.go index 83d22fe2..f1f198c3 100644 --- a/database/any.go +++ b/database/any.go @@ -3,24 +3,29 @@ package database import ( "database/sql" "fmt" + "strings" + "time" + "github.com/BoltzExchange/boltz-client/boltz" "github.com/BoltzExchange/boltz-client/boltzrpc" - "time" ) type AnySwap struct { - Id string - Type boltz.SwapType - Pair boltz.Pair - State boltzrpc.SwapState - Error string - Status boltz.SwapUpdateEvent - Amount uint64 - IsAuto bool - ServiceFee *uint64 - OnchainFee *uint64 - CreatedAt time.Time - TenantId Id + Id string + Type boltz.SwapType + Pair boltz.Pair + State boltzrpc.SwapState + Error string + Status boltz.SwapUpdateEvent + Amount uint64 + IsAuto bool + ServiceFee *uint64 + OnchainFee *uint64 + CreatedAt time.Time + LockupTransactionid string + ClaimTransactionid string + RefundTransactionid string + TenantId Id } func parseAnySwap(rows *sql.Rows) (*AnySwap, error) { @@ -32,19 +37,22 @@ func parseAnySwap(rows *sql.Rows) (*AnySwap, error) { err := scanRow( rows, map[string]interface{}{ - "id": &anySwap.Id, - "type": &anySwap.Type, - "amount": &anySwap.Amount, - "fromCurrency": &anySwap.Pair.From, - "toCurrency": &anySwap.Pair.To, - "state": &anySwap.State, - "error": &anySwap.Error, - "status": &status, - "isAuto": &anySwap.IsAuto, - "serviceFee": &serviceFee, - "onchainFee": &onchainFee, - "createdAt": &createdAt, - "tenantId": &anySwap.TenantId, + "id": &anySwap.Id, + "type": &anySwap.Type, + "amount": &anySwap.Amount, + "fromCurrency": &anySwap.Pair.From, + "toCurrency": &anySwap.Pair.To, + "state": &anySwap.State, + "error": &anySwap.Error, + "status": &status, + "isAuto": &anySwap.IsAuto, + "serviceFee": &serviceFee, + "onchainFee": &onchainFee, + "createdAt": &createdAt, + "claimTransactionId": &anySwap.ClaimTransactionid, + "lockupTransactionId": &anySwap.LockupTransactionid, + "refundTransactionId": &anySwap.RefundTransactionid, + "tenantId": &anySwap.TenantId, }, ) @@ -104,3 +112,20 @@ func (database *Database) QueryAllSwaps(args SwapQuery) ([]*AnySwap, error) { where, values := args.ToWhereClause() return database.queryAllSwaps("SELECT * FROM allSwaps"+where, values...) } + +func (database *Database) QuerySwapsByTransactions(args SwapQuery, transactionIds []string) ([]*AnySwap, error) { + var placeholders []string + for i, _ := range transactionIds { + placeholders = append(placeholders, fmt.Sprintf("$%d", i+1)) + } + placeholder := strings.Join(placeholders, ", ") + vals := make([]any, len(transactionIds)) + for i, v := range transactionIds { + vals[i] = v + } + where, values := args.ToWhereClauseWithExisting( + []string{fmt.Sprintf("lockupTransactionid IN (%s) OR claimTransactionid IN (%s) OR refundTransactionid IN(%s)", placeholder, placeholder, placeholder)}, + vals, + ) + return database.queryAllSwaps("SELECT * FROM allSwaps"+where, values...) +} diff --git a/database/database.go b/database/database.go index df641d80..e46bf285 100644 --- a/database/database.go +++ b/database/database.go @@ -25,11 +25,11 @@ const createViews = ` DROP VIEW IF EXISTS allSwaps; CREATE VIEW allSwaps AS -SELECT data.id as id, +SELECT chainSwaps.id as id, fromCurrency, toCurrency, 'chain' AS type, - data.amount as amount, + fromData.amount as amount, state, error, status, @@ -37,9 +37,13 @@ SELECT data.id as id, onchainFee, serviceFee, isAuto, + toData.transactionId AS claimTransactionId, + fromData.lockupTransactionId AS lockupTransactionId, + fromData.transactionId AS refundTransactionId, tenantId FROM chainSwaps - JOIN chainSwapsData data ON chainSwaps.id = data.id AND chainSwaps.fromCurrency = data.currency + JOIN chainSwapsData fromData ON chainSwaps.id = fromData.id AND chainSwaps.fromCurrency = fromData.currency + JOIN chainSwapsData toData ON chainSwaps.id = toData.id AND chainSwaps.toCurrency = toData.currency UNION ALL SELECT id, fromCurrency, @@ -54,6 +58,9 @@ SELECT id, as onchainFee, serviceFee, isAuto, + claimTransactionId, + lockupTransactionId, + '' AS refundTransactionId, tenantId FROM reverseSwaps UNION ALL @@ -69,6 +76,9 @@ SELECT id, onchainFee, serviceFee, isAuto, + '' AS claimTransactionId, + lockupTransactionId, + refundTransactionId, tenantId FROM swaps; ` diff --git a/database/migration.go b/database/migration.go index 2acfe5c9..6a169893 100644 --- a/database/migration.go +++ b/database/migration.go @@ -17,7 +17,7 @@ type swapStatus struct { status string } -const latestSchemaVersion = 12 +const latestSchemaVersion = 13 func (database *Database) migrate() error { version, err := database.queryVersion() @@ -542,6 +542,11 @@ func (database *Database) performMigration(tx *Transaction, oldVersion int) erro } } + case 12: + if _, err := tx.Exec(createViews); err != nil { + return err + } + case latestSchemaVersion: logger.Info("database already at latest schema version: " + strconv.Itoa(latestSchemaVersion)) return nil diff --git a/docs/grpc.md b/docs/grpc.md index c9e1f415..8fca99bb 100644 --- a/docs/grpc.md +++ b/docs/grpc.md @@ -181,6 +181,14 @@ Returns the current balance and subaccount of a wallet. | ------- | -------- | | [`GetWalletRequest`](#getwalletrequest) | [`Wallet`](#wallet) | +#### ListWalletTransactions + +Returns recent transactions from a wallet. + +| Request | Response | +| ------- | -------- | +| [`ListWalletTransactionsRequest`](#listwallettransactionsrequest) | [`ListWalletTransactionsResponse`](#listwallettransactionsresponse) | + #### GetWalletCredentials Returns the credentials of a wallet. The password will be required if the wallet is encrypted. @@ -1047,6 +1055,33 @@ Channel creations are an optional extension to a submarine swap in the data type +#### ListWalletTransactionsRequest + + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `id` | [`uint64`](#uint64) | | | +| `exclude_swap_related` | [`bool`](#bool) | optional | | + + + + + +#### ListWalletTransactionsResponse + + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `transactions` | [`WalletTransaction`](#wallettransaction) | repeated | | + + + + + #### MacaroonPermissions @@ -1287,6 +1322,20 @@ Channel creations are an optional extension to a submarine swap in the data type +#### TransactionOutput + + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `address` | [`string`](#string) | | | +| `amount` | [`uint64`](#uint64) | | | + + + + + #### UnlockRequest @@ -1430,6 +1479,25 @@ Channel creations are an optional extension to a submarine swap in the data type +#### WalletTransaction + + + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| `tx_id` | [`string`](#string) | | | +| `total_amount` | [`uint64`](#uint64) | | | +| `timestamp` | [`int64`](#int64) | | | +| `outputs` | [`TransactionOutput`](#transactionoutput) | repeated | | +| `block_height` | [`uint32`](#uint32) | | | +| `swap_id` | [`string`](#string) | optional | | +| `type` | [`TransactionType`](#transactiontype) | | | + + + + + #### Wallets @@ -1504,6 +1572,20 @@ Channel creations are an optional extension to a submarine swap in the data type +#### TransactionType + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| ANY | 0 | | +| LOCKUP | 1 | | +| REFUND | 2 | | +| CLAIM | 3 | | +| RECEIVE | 4 | | +| SEND | 5 | | + + + diff --git a/lnd/lnd.go b/lnd/lnd.go index 498115d3..dfee221d 100644 --- a/lnd/lnd.go +++ b/lnd/lnd.go @@ -193,7 +193,6 @@ func (lnd *LND) ListChannels() ([]*lightning.LightningChannel, error) { if err != nil { return nil, err } - var results []*lightning.LightningChannel for _, channel := range channels.Channels { @@ -215,6 +214,10 @@ func (lnd *LND) ListChannels() ([]*lightning.LightningChannel, error) { return results, nil } +func (lnd *LND) GetTransactions() ([]*onchain.WalletTransaction, error) { + return nil, errors.New("not implemented for lnd") +} + func (lnd *LND) CreateInvoice(value uint64, preimage []byte, expiry int64, memo string) (*lightning.AddInvoiceResponse, error) { request := &lnrpc.Invoice{ Memo: memo, diff --git a/macaroons/permissions.go b/macaroons/permissions.go index 65cbce33..b2fefad2 100644 --- a/macaroons/permissions.go +++ b/macaroons/permissions.go @@ -153,6 +153,10 @@ var ( Entity: "wallet", Action: "read", }}, + "/boltzrpc.Boltz/ListWalletTransactions": {{ + Entity: "wallet", + Action: "read", + }}, "/boltzrpc.Boltz/GetWallet": {{ Entity: "wallet", Action: "read", diff --git a/mocks/github.com/BoltzExchange/boltz-client/lightning/LightningNode_mock.go b/mocks/github.com/BoltzExchange/boltz-client/lightning/LightningNode_mock.go index ec394d17..b7975a15 100644 --- a/mocks/github.com/BoltzExchange/boltz-client/lightning/LightningNode_mock.go +++ b/mocks/github.com/BoltzExchange/boltz-client/lightning/LightningNode_mock.go @@ -391,6 +391,63 @@ func (_c *MockLightningNode_GetInfo_Call) RunAndReturn(run func() (*lightning.Li return _c } +// GetTransactions provides a mock function with given fields: +func (_m *MockLightningNode) GetTransactions() ([]*onchain.WalletTransaction, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for GetTransactions") + } + + var r0 []*onchain.WalletTransaction + var r1 error + if rf, ok := ret.Get(0).(func() ([]*onchain.WalletTransaction, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() []*onchain.WalletTransaction); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]*onchain.WalletTransaction) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockLightningNode_GetTransactions_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTransactions' +type MockLightningNode_GetTransactions_Call struct { + *mock.Call +} + +// GetTransactions is a helper method to define mock.On call +func (_e *MockLightningNode_Expecter) GetTransactions() *MockLightningNode_GetTransactions_Call { + return &MockLightningNode_GetTransactions_Call{Call: _e.mock.On("GetTransactions")} +} + +func (_c *MockLightningNode_GetTransactions_Call) Run(run func()) *MockLightningNode_GetTransactions_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockLightningNode_GetTransactions_Call) Return(_a0 []*onchain.WalletTransaction, _a1 error) *MockLightningNode_GetTransactions_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockLightningNode_GetTransactions_Call) RunAndReturn(run func() ([]*onchain.WalletTransaction, error)) *MockLightningNode_GetTransactions_Call { + _c.Call.Return(run) + return _c +} + // GetWalletInfo provides a mock function with given fields: func (_m *MockLightningNode) GetWalletInfo() onchain.WalletInfo { ret := _m.Called() diff --git a/mocks/github.com/BoltzExchange/boltz-client/onchain/Wallet_mock.go b/mocks/github.com/BoltzExchange/boltz-client/onchain/Wallet_mock.go index 83686a23..cdfa9e76 100644 --- a/mocks/github.com/BoltzExchange/boltz-client/onchain/Wallet_mock.go +++ b/mocks/github.com/BoltzExchange/boltz-client/onchain/Wallet_mock.go @@ -122,6 +122,63 @@ func (_c *MockWallet_GetBalance_Call) RunAndReturn(run func() (*onchain.Balance, return _c } +// GetTransactions provides a mock function with given fields: +func (_m *MockWallet) GetTransactions() ([]*onchain.WalletTransaction, error) { + ret := _m.Called() + + if len(ret) == 0 { + panic("no return value specified for GetTransactions") + } + + var r0 []*onchain.WalletTransaction + var r1 error + if rf, ok := ret.Get(0).(func() ([]*onchain.WalletTransaction, error)); ok { + return rf() + } + if rf, ok := ret.Get(0).(func() []*onchain.WalletTransaction); ok { + r0 = rf() + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).([]*onchain.WalletTransaction) + } + } + + if rf, ok := ret.Get(1).(func() error); ok { + r1 = rf() + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// MockWallet_GetTransactions_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTransactions' +type MockWallet_GetTransactions_Call struct { + *mock.Call +} + +// GetTransactions is a helper method to define mock.On call +func (_e *MockWallet_Expecter) GetTransactions() *MockWallet_GetTransactions_Call { + return &MockWallet_GetTransactions_Call{Call: _e.mock.On("GetTransactions")} +} + +func (_c *MockWallet_GetTransactions_Call) Run(run func()) *MockWallet_GetTransactions_Call { + _c.Call.Run(func(args mock.Arguments) { + run() + }) + return _c +} + +func (_c *MockWallet_GetTransactions_Call) Return(_a0 []*onchain.WalletTransaction, _a1 error) *MockWallet_GetTransactions_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *MockWallet_GetTransactions_Call) RunAndReturn(run func() ([]*onchain.WalletTransaction, error)) *MockWallet_GetTransactions_Call { + _c.Call.Return(run) + return _c +} + // GetWalletInfo provides a mock function with given fields: func (_m *MockWallet) GetWalletInfo() onchain.WalletInfo { ret := _m.Called() diff --git a/onchain/onchain.go b/onchain/onchain.go index 413c1342..67cd72e6 100644 --- a/onchain/onchain.go +++ b/onchain/onchain.go @@ -28,6 +28,19 @@ type Balance struct { Unconfirmed uint64 } +type TransactionOutput struct { + Address string + Amount uint64 +} + +type WalletTransaction struct { + TxId string + Timestamp int64 + Outputs []TransactionOutput + BlockHeight uint32 + IsReceive bool +} + type WalletInfo struct { Id Id Name string @@ -74,6 +87,7 @@ type Wallet interface { GetBalance() (*Balance, error) GetWalletInfo() WalletInfo Disconnect() error + GetTransactions() ([]*WalletTransaction, error) } type ElectrumOptions struct { diff --git a/onchain/wallet/wallet.go b/onchain/wallet/wallet.go index 0cf8caf1..0c815c47 100644 --- a/onchain/wallet/wallet.go +++ b/onchain/wallet/wallet.go @@ -597,36 +597,17 @@ func (wallet *Wallet) GetBalance() (*onchain.Balance, error) { } func (wallet *Wallet) SearchOutput(txId, address string) (*onchain.Output, error) { - if wallet.subaccount == nil { - return nil, ErrSubAccountNotSet - } - params, free := toJson(map[string]any{ - "subaccount": *wallet.subaccount, - "first": 0, - "count": 30, - }) - defer free() - handler := new(AuthHandler) - var outputs struct { - Transactions []struct { - BlockHeight uint32 `json:"block_height"` - TxId string `json:"txhash"` - Outputs []struct { - Address string `json:"address"` - Satoshi uint64 `json:"satoshi"` - } - } `json:"transactions"` - } - if err := withAuthHandler(C.GA_get_transactions(wallet.session, params, handler), handler, &outputs); err != nil { + transactoins, err := wallet.GetTransactions() + if err != nil { return nil, err } - for _, tx := range outputs.Transactions { + for _, tx := range transactoins { if tx.TxId == txId || txId == "" { for _, output := range tx.Outputs { if output.Address == address { return &onchain.Output{ TxId: tx.TxId, - Value: output.Satoshi, + Value: output.Amount, }, nil } } @@ -786,6 +767,54 @@ func (wallet *Wallet) SetSpentOutputs(outputs []string) { } } +func (wallet *Wallet) GetTransactions() ([]*onchain.WalletTransaction, error) { + if wallet.subaccount == nil { + return nil, ErrSubAccountNotSet + } + params, free := toJson(map[string]any{ + "subaccount": *wallet.subaccount, + "first": 0, + "count": 30, + }) + defer free() + handler := new(AuthHandler) + var result struct { + Transactions []struct { + BlockHeight uint32 `json:"block_height"` + TxId string `json:"txhash"` + Outputs []struct { + Address string `json:"address"` + Satoshi uint64 `json:"satoshi"` + } + Timestamp int64 `json:"created_at_ts"` + Type string `json:"type"` + } `json:"transactions"` + } + if err := withAuthHandler(C.GA_get_transactions(wallet.session, params, handler), handler, &result); err != nil { + return nil, err + } + + var transactions []*onchain.WalletTransaction + for _, tx := range result.Transactions { + var outputs []onchain.TransactionOutput + for _, out := range tx.Outputs { + outputs = append(outputs, onchain.TransactionOutput{ + Address: out.Address, + Amount: out.Satoshi, + }) + } + transactions = append(transactions, &onchain.WalletTransaction{ + TxId: tx.TxId, + Timestamp: tx.Timestamp, + BlockHeight: tx.BlockHeight, + IsReceive: tx.Type == "incoming", + Outputs: outputs, + }) + } + + return transactions, nil +} + func (wallet *Wallet) Ready() bool { //return wallet.connected && wallet.subaccount != nil return wallet.connected diff --git a/rpcserver/router.go b/rpcserver/router.go index 1e63ec94..121c7365 100644 --- a/rpcserver/router.go +++ b/rpcserver/router.go @@ -9,6 +9,15 @@ import ( "encoding/hex" "errors" "fmt" + "math" + "net/url" + "regexp" + "slices" + "strconv" + "strings" + "sync" + "time" + "github.com/BoltzExchange/boltz-client/autoswap" "github.com/BoltzExchange/boltz-client/boltz" "github.com/BoltzExchange/boltz-client/boltzrpc" @@ -30,14 +39,6 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "math" - "net/url" - "regexp" - "slices" - "strconv" - "strings" - "sync" - "time" ) type serverState string @@ -1487,6 +1488,66 @@ func (server *routedBoltzServer) CreateWallet(ctx context.Context, request *bolt }, nil } +func (server *routedBoltzServer) ListWalletTransactions(ctx context.Context, request *boltzrpc.ListWalletTransactionsRequest) (*boltzrpc.ListWalletTransactionsResponse, error) { + wallet, err := server.getAnyWallet(ctx, onchain.WalletChecker{Id: &request.Id}) + if err != nil { + return nil, err + } + transactions, err := wallet.GetTransactions() + if err != nil { + return nil, err + } + var txIds []string + for _, tx := range transactions { + txIds = append(txIds, tx.TxId) + } + swaps, err := server.database.QuerySwapsByTransactions(database.SwapQuery{TenantId: macaroons.TenantIdFromContext(ctx)}, txIds) + if err != nil { + return nil, err + } + response := &boltzrpc.ListWalletTransactionsResponse{} + for _, tx := range transactions { + result := &boltzrpc.WalletTransaction{ + TxId: tx.TxId, + Timestamp: tx.Timestamp, + BlockHeight: tx.BlockHeight, + } + for _, output := range tx.Outputs { + result.Outputs = append(result.Outputs, &boltzrpc.TransactionOutput{ + Address: output.Address, + Amount: output.Amount, + }) + result.TotalAmount += output.Amount + } + i := slices.IndexFunc(swaps, func(swap *database.AnySwap) bool { + return swap.RefundTransactionid == tx.TxId || swap.ClaimTransactionid == tx.TxId || swap.LockupTransactionid == tx.TxId + }) + if i >= 0 { + if request.GetExcludeSwapRelated() { + continue + } + swap := swaps[i] + result.SwapId = &swap.Id + if swap.RefundTransactionid == tx.TxId { + result.Type = boltzrpc.TransactionType_REFUND + } + if swap.ClaimTransactionid == tx.TxId { + result.Type = boltzrpc.TransactionType_CLAIM + } + if swap.LockupTransactionid == tx.TxId { + result.Type = boltzrpc.TransactionType_LOCKUP + } + } else if tx.IsReceive { + result.Type = boltzrpc.TransactionType_RECEIVE + } else { + result.Type = boltzrpc.TransactionType_SEND + } + response.Transactions = append(response.Transactions, result) + + } + return response, nil +} + func (server *routedBoltzServer) serializeWallet(wal onchain.Wallet) (*boltzrpc.Wallet, error) { info := wal.GetWalletInfo() result := &boltzrpc.Wallet{