github.com/decred/dcrlnd@v0.7.6/lnrpc/routerrpc/router.pb.go (about) 1 // Code generated by protoc-gen-go. DO NOT EDIT. 2 // versions: 3 // protoc-gen-go v1.31.0 4 // protoc v3.4.0 5 // source: routerrpc/router.proto 6 7 package routerrpc 8 9 import ( 10 context "context" 11 lnrpc "github.com/decred/dcrlnd/lnrpc" 12 grpc "google.golang.org/grpc" 13 codes "google.golang.org/grpc/codes" 14 status "google.golang.org/grpc/status" 15 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 16 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 17 reflect "reflect" 18 sync "sync" 19 ) 20 21 const ( 22 // Verify that this generated code is sufficiently up-to-date. 23 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 24 // Verify that runtime/protoimpl is sufficiently up-to-date. 25 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 26 ) 27 28 type FailureDetail int32 29 30 const ( 31 FailureDetail_UNKNOWN FailureDetail = 0 32 FailureDetail_NO_DETAIL FailureDetail = 1 33 FailureDetail_ONION_DECODE FailureDetail = 2 34 FailureDetail_LINK_NOT_ELIGIBLE FailureDetail = 3 35 FailureDetail_ON_CHAIN_TIMEOUT FailureDetail = 4 36 FailureDetail_HTLC_EXCEEDS_MAX FailureDetail = 5 37 FailureDetail_INSUFFICIENT_BALANCE FailureDetail = 6 38 FailureDetail_INCOMPLETE_FORWARD FailureDetail = 7 39 FailureDetail_HTLC_ADD_FAILED FailureDetail = 8 40 FailureDetail_FORWARDS_DISABLED FailureDetail = 9 41 FailureDetail_INVOICE_CANCELED FailureDetail = 10 42 FailureDetail_INVOICE_UNDERPAID FailureDetail = 11 43 FailureDetail_INVOICE_EXPIRY_TOO_SOON FailureDetail = 12 44 FailureDetail_INVOICE_NOT_OPEN FailureDetail = 13 45 FailureDetail_MPP_INVOICE_TIMEOUT FailureDetail = 14 46 FailureDetail_ADDRESS_MISMATCH FailureDetail = 15 47 FailureDetail_SET_TOTAL_MISMATCH FailureDetail = 16 48 FailureDetail_SET_TOTAL_TOO_LOW FailureDetail = 17 49 FailureDetail_SET_OVERPAID FailureDetail = 18 50 FailureDetail_UNKNOWN_INVOICE FailureDetail = 19 51 FailureDetail_INVALID_KEYSEND FailureDetail = 20 52 FailureDetail_MPP_IN_PROGRESS FailureDetail = 21 53 FailureDetail_CIRCULAR_ROUTE FailureDetail = 22 54 ) 55 56 // Enum value maps for FailureDetail. 57 var ( 58 FailureDetail_name = map[int32]string{ 59 0: "UNKNOWN", 60 1: "NO_DETAIL", 61 2: "ONION_DECODE", 62 3: "LINK_NOT_ELIGIBLE", 63 4: "ON_CHAIN_TIMEOUT", 64 5: "HTLC_EXCEEDS_MAX", 65 6: "INSUFFICIENT_BALANCE", 66 7: "INCOMPLETE_FORWARD", 67 8: "HTLC_ADD_FAILED", 68 9: "FORWARDS_DISABLED", 69 10: "INVOICE_CANCELED", 70 11: "INVOICE_UNDERPAID", 71 12: "INVOICE_EXPIRY_TOO_SOON", 72 13: "INVOICE_NOT_OPEN", 73 14: "MPP_INVOICE_TIMEOUT", 74 15: "ADDRESS_MISMATCH", 75 16: "SET_TOTAL_MISMATCH", 76 17: "SET_TOTAL_TOO_LOW", 77 18: "SET_OVERPAID", 78 19: "UNKNOWN_INVOICE", 79 20: "INVALID_KEYSEND", 80 21: "MPP_IN_PROGRESS", 81 22: "CIRCULAR_ROUTE", 82 } 83 FailureDetail_value = map[string]int32{ 84 "UNKNOWN": 0, 85 "NO_DETAIL": 1, 86 "ONION_DECODE": 2, 87 "LINK_NOT_ELIGIBLE": 3, 88 "ON_CHAIN_TIMEOUT": 4, 89 "HTLC_EXCEEDS_MAX": 5, 90 "INSUFFICIENT_BALANCE": 6, 91 "INCOMPLETE_FORWARD": 7, 92 "HTLC_ADD_FAILED": 8, 93 "FORWARDS_DISABLED": 9, 94 "INVOICE_CANCELED": 10, 95 "INVOICE_UNDERPAID": 11, 96 "INVOICE_EXPIRY_TOO_SOON": 12, 97 "INVOICE_NOT_OPEN": 13, 98 "MPP_INVOICE_TIMEOUT": 14, 99 "ADDRESS_MISMATCH": 15, 100 "SET_TOTAL_MISMATCH": 16, 101 "SET_TOTAL_TOO_LOW": 17, 102 "SET_OVERPAID": 18, 103 "UNKNOWN_INVOICE": 19, 104 "INVALID_KEYSEND": 20, 105 "MPP_IN_PROGRESS": 21, 106 "CIRCULAR_ROUTE": 22, 107 } 108 ) 109 110 func (x FailureDetail) Enum() *FailureDetail { 111 p := new(FailureDetail) 112 *p = x 113 return p 114 } 115 116 func (x FailureDetail) String() string { 117 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 118 } 119 120 func (FailureDetail) Descriptor() protoreflect.EnumDescriptor { 121 return file_routerrpc_router_proto_enumTypes[0].Descriptor() 122 } 123 124 func (FailureDetail) Type() protoreflect.EnumType { 125 return &file_routerrpc_router_proto_enumTypes[0] 126 } 127 128 func (x FailureDetail) Number() protoreflect.EnumNumber { 129 return protoreflect.EnumNumber(x) 130 } 131 132 // Deprecated: Use FailureDetail.Descriptor instead. 133 func (FailureDetail) EnumDescriptor() ([]byte, []int) { 134 return file_routerrpc_router_proto_rawDescGZIP(), []int{0} 135 } 136 137 type PaymentState int32 138 139 const ( 140 // Payment is still in flight. 141 PaymentState_IN_FLIGHT PaymentState = 0 142 // Payment completed successfully. 143 PaymentState_SUCCEEDED PaymentState = 1 144 // There are more routes to try, but the payment timeout was exceeded. 145 PaymentState_FAILED_TIMEOUT PaymentState = 2 146 // All possible routes were tried and failed permanently. Or were no 147 // routes to the destination at all. 148 PaymentState_FAILED_NO_ROUTE PaymentState = 3 149 // A non-recoverable error has occured. 150 PaymentState_FAILED_ERROR PaymentState = 4 151 // Payment details incorrect (unknown hash, invalid amt or 152 // invalid final cltv delta) 153 PaymentState_FAILED_INCORRECT_PAYMENT_DETAILS PaymentState = 5 154 // Insufficient local balance. 155 PaymentState_FAILED_INSUFFICIENT_BALANCE PaymentState = 6 156 ) 157 158 // Enum value maps for PaymentState. 159 var ( 160 PaymentState_name = map[int32]string{ 161 0: "IN_FLIGHT", 162 1: "SUCCEEDED", 163 2: "FAILED_TIMEOUT", 164 3: "FAILED_NO_ROUTE", 165 4: "FAILED_ERROR", 166 5: "FAILED_INCORRECT_PAYMENT_DETAILS", 167 6: "FAILED_INSUFFICIENT_BALANCE", 168 } 169 PaymentState_value = map[string]int32{ 170 "IN_FLIGHT": 0, 171 "SUCCEEDED": 1, 172 "FAILED_TIMEOUT": 2, 173 "FAILED_NO_ROUTE": 3, 174 "FAILED_ERROR": 4, 175 "FAILED_INCORRECT_PAYMENT_DETAILS": 5, 176 "FAILED_INSUFFICIENT_BALANCE": 6, 177 } 178 ) 179 180 func (x PaymentState) Enum() *PaymentState { 181 p := new(PaymentState) 182 *p = x 183 return p 184 } 185 186 func (x PaymentState) String() string { 187 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 188 } 189 190 func (PaymentState) Descriptor() protoreflect.EnumDescriptor { 191 return file_routerrpc_router_proto_enumTypes[1].Descriptor() 192 } 193 194 func (PaymentState) Type() protoreflect.EnumType { 195 return &file_routerrpc_router_proto_enumTypes[1] 196 } 197 198 func (x PaymentState) Number() protoreflect.EnumNumber { 199 return protoreflect.EnumNumber(x) 200 } 201 202 // Deprecated: Use PaymentState.Descriptor instead. 203 func (PaymentState) EnumDescriptor() ([]byte, []int) { 204 return file_routerrpc_router_proto_rawDescGZIP(), []int{1} 205 } 206 207 type ResolveHoldForwardAction int32 208 209 const ( 210 ResolveHoldForwardAction_SETTLE ResolveHoldForwardAction = 0 211 ResolveHoldForwardAction_FAIL ResolveHoldForwardAction = 1 212 ResolveHoldForwardAction_RESUME ResolveHoldForwardAction = 2 213 ) 214 215 // Enum value maps for ResolveHoldForwardAction. 216 var ( 217 ResolveHoldForwardAction_name = map[int32]string{ 218 0: "SETTLE", 219 1: "FAIL", 220 2: "RESUME", 221 } 222 ResolveHoldForwardAction_value = map[string]int32{ 223 "SETTLE": 0, 224 "FAIL": 1, 225 "RESUME": 2, 226 } 227 ) 228 229 func (x ResolveHoldForwardAction) Enum() *ResolveHoldForwardAction { 230 p := new(ResolveHoldForwardAction) 231 *p = x 232 return p 233 } 234 235 func (x ResolveHoldForwardAction) String() string { 236 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 237 } 238 239 func (ResolveHoldForwardAction) Descriptor() protoreflect.EnumDescriptor { 240 return file_routerrpc_router_proto_enumTypes[2].Descriptor() 241 } 242 243 func (ResolveHoldForwardAction) Type() protoreflect.EnumType { 244 return &file_routerrpc_router_proto_enumTypes[2] 245 } 246 247 func (x ResolveHoldForwardAction) Number() protoreflect.EnumNumber { 248 return protoreflect.EnumNumber(x) 249 } 250 251 // Deprecated: Use ResolveHoldForwardAction.Descriptor instead. 252 func (ResolveHoldForwardAction) EnumDescriptor() ([]byte, []int) { 253 return file_routerrpc_router_proto_rawDescGZIP(), []int{2} 254 } 255 256 type ChanStatusAction int32 257 258 const ( 259 ChanStatusAction_ENABLE ChanStatusAction = 0 260 ChanStatusAction_DISABLE ChanStatusAction = 1 261 ChanStatusAction_AUTO ChanStatusAction = 2 262 ) 263 264 // Enum value maps for ChanStatusAction. 265 var ( 266 ChanStatusAction_name = map[int32]string{ 267 0: "ENABLE", 268 1: "DISABLE", 269 2: "AUTO", 270 } 271 ChanStatusAction_value = map[string]int32{ 272 "ENABLE": 0, 273 "DISABLE": 1, 274 "AUTO": 2, 275 } 276 ) 277 278 func (x ChanStatusAction) Enum() *ChanStatusAction { 279 p := new(ChanStatusAction) 280 *p = x 281 return p 282 } 283 284 func (x ChanStatusAction) String() string { 285 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 286 } 287 288 func (ChanStatusAction) Descriptor() protoreflect.EnumDescriptor { 289 return file_routerrpc_router_proto_enumTypes[3].Descriptor() 290 } 291 292 func (ChanStatusAction) Type() protoreflect.EnumType { 293 return &file_routerrpc_router_proto_enumTypes[3] 294 } 295 296 func (x ChanStatusAction) Number() protoreflect.EnumNumber { 297 return protoreflect.EnumNumber(x) 298 } 299 300 // Deprecated: Use ChanStatusAction.Descriptor instead. 301 func (ChanStatusAction) EnumDescriptor() ([]byte, []int) { 302 return file_routerrpc_router_proto_rawDescGZIP(), []int{3} 303 } 304 305 type HtlcEvent_EventType int32 306 307 const ( 308 HtlcEvent_UNKNOWN HtlcEvent_EventType = 0 309 HtlcEvent_SEND HtlcEvent_EventType = 1 310 HtlcEvent_RECEIVE HtlcEvent_EventType = 2 311 HtlcEvent_FORWARD HtlcEvent_EventType = 3 312 ) 313 314 // Enum value maps for HtlcEvent_EventType. 315 var ( 316 HtlcEvent_EventType_name = map[int32]string{ 317 0: "UNKNOWN", 318 1: "SEND", 319 2: "RECEIVE", 320 3: "FORWARD", 321 } 322 HtlcEvent_EventType_value = map[string]int32{ 323 "UNKNOWN": 0, 324 "SEND": 1, 325 "RECEIVE": 2, 326 "FORWARD": 3, 327 } 328 ) 329 330 func (x HtlcEvent_EventType) Enum() *HtlcEvent_EventType { 331 p := new(HtlcEvent_EventType) 332 *p = x 333 return p 334 } 335 336 func (x HtlcEvent_EventType) String() string { 337 return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) 338 } 339 340 func (HtlcEvent_EventType) Descriptor() protoreflect.EnumDescriptor { 341 return file_routerrpc_router_proto_enumTypes[4].Descriptor() 342 } 343 344 func (HtlcEvent_EventType) Type() protoreflect.EnumType { 345 return &file_routerrpc_router_proto_enumTypes[4] 346 } 347 348 func (x HtlcEvent_EventType) Number() protoreflect.EnumNumber { 349 return protoreflect.EnumNumber(x) 350 } 351 352 // Deprecated: Use HtlcEvent_EventType.Descriptor instead. 353 func (HtlcEvent_EventType) EnumDescriptor() ([]byte, []int) { 354 return file_routerrpc_router_proto_rawDescGZIP(), []int{24, 0} 355 } 356 357 type SendPaymentRequest struct { 358 state protoimpl.MessageState 359 sizeCache protoimpl.SizeCache 360 unknownFields protoimpl.UnknownFields 361 362 // The identity pubkey of the payment recipient 363 Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"` 364 // Number of atoms to send. 365 // 366 // The fields amt and amt_m_atoms are mutually exclusive. 367 Amt int64 `protobuf:"varint,2,opt,name=amt,proto3" json:"amt,omitempty"` 368 // Number of milliatoms to send. 369 // 370 // The fields amt and amt_m_atoms are mutually exclusive. 371 AmtMAtoms int64 `protobuf:"varint,12,opt,name=amt_m_atoms,json=amtMAtoms,proto3" json:"amt_m_atoms,omitempty"` 372 // The hash to use within the payment's HTLC 373 PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` 374 // The CLTV delta from the current height that should be used to set the 375 // timelock for the final hop. 376 FinalCltvDelta int32 `protobuf:"varint,4,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"` 377 // An optional payment addr to be included within the last hop of the route. 378 PaymentAddr []byte `protobuf:"bytes,20,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"` 379 // A bare-bones invoice for a payment within the Lightning Network. With the 380 // details of the invoice, the sender has all the data necessary to send a 381 // payment to the recipient. The amount in the payment request may be zero. In 382 // that case it is required to set the amt field as well. If no payment request 383 // is specified, the following fields are required: dest, amt and payment_hash. 384 PaymentRequest string `protobuf:"bytes,5,opt,name=payment_request,json=paymentRequest,proto3" json:"payment_request,omitempty"` 385 // An upper limit on the amount of time we should spend when attempting to 386 // fulfill the payment. This is expressed in seconds. If we cannot make a 387 // successful payment within this time frame, an error will be returned. 388 // This field must be non-zero. 389 TimeoutSeconds int32 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` 390 // The maximum number of atoms that will be paid as a fee of the payment. 391 // If this field is left to the default value of 0, only zero-fee routes will 392 // be considered. This usually means single hop routes connecting directly to 393 // the destination. To send the payment without a fee limit, use max int here. 394 // 395 // The fields fee_limit_sat and fee_limit_msat are mutually exclusive. 396 FeeLimitAtoms int64 `protobuf:"varint,7,opt,name=fee_limit_atoms,json=feeLimitAtoms,proto3" json:"fee_limit_atoms,omitempty"` 397 // The maximum number of milliatoms that will be paid as a fee of the 398 // payment. If this field is left to the default value of 0, only zero-fee 399 // routes will be considered. This usually means single hop routes connecting 400 // directly to the destination. To send the payment without a fee limit, use 401 // max int here. 402 // 403 // The fields fee_limit_atoms and fee_limit_m_atoms are mutually exclusive. 404 FeeLimitMAtoms int64 `protobuf:"varint,13,opt,name=fee_limit_m_atoms,json=feeLimitMAtoms,proto3" json:"fee_limit_m_atoms,omitempty"` 405 // Deprecated, use outgoing_chan_ids. The channel id of the channel that must 406 // be taken to the first hop. If zero, any channel may be used (unless 407 // outgoing_chan_ids are set). 408 // 409 // Deprecated: Marked as deprecated in routerrpc/router.proto. 410 OutgoingChanId uint64 `protobuf:"varint,8,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"` 411 // The channel ids of the channels are allowed for the first hop. If empty, 412 // any channel may be used. 413 OutgoingChanIds []uint64 `protobuf:"varint,19,rep,packed,name=outgoing_chan_ids,json=outgoingChanIds,proto3" json:"outgoing_chan_ids,omitempty"` 414 // The pubkey of the last hop of the route. If empty, any hop may be used. 415 LastHopPubkey []byte `protobuf:"bytes,14,opt,name=last_hop_pubkey,json=lastHopPubkey,proto3" json:"last_hop_pubkey,omitempty"` 416 // An optional maximum total time lock for the route. This should not exceed 417 // lnd's `--max-cltv-expiry` setting. If zero, then the value of 418 // `--max-cltv-expiry` is enforced. 419 CltvLimit int32 `protobuf:"varint,9,opt,name=cltv_limit,json=cltvLimit,proto3" json:"cltv_limit,omitempty"` 420 // Optional route hints to reach the destination through private channels. 421 RouteHints []*lnrpc.RouteHint `protobuf:"bytes,10,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"` 422 // An optional field that can be used to pass an arbitrary set of TLV records 423 // to a peer which understands the new records. This can be used to pass 424 // application specific data during the payment attempt. Record types are 425 // required to be in the custom range >= 65536. When using REST, the values 426 // must be encoded as base64. 427 DestCustomRecords map[uint64][]byte `protobuf:"bytes,11,rep,name=dest_custom_records,json=destCustomRecords,proto3" json:"dest_custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 428 // If set, circular payments to self are permitted. 429 AllowSelfPayment bool `protobuf:"varint,15,opt,name=allow_self_payment,json=allowSelfPayment,proto3" json:"allow_self_payment,omitempty"` 430 // Features assumed to be supported by the final node. All transitive feature 431 // dependencies must also be set properly. For a given feature bit pair, either 432 // optional or remote may be set, but not both. If this field is nil or empty, 433 // the router will try to load destination features from the graph as a 434 // fallback. 435 DestFeatures []lnrpc.FeatureBit `protobuf:"varint,16,rep,packed,name=dest_features,json=destFeatures,proto3,enum=lnrpc.FeatureBit" json:"dest_features,omitempty"` 436 // The maximum number of partial payments that may be use to complete the full 437 // amount. 438 MaxParts uint32 `protobuf:"varint,17,opt,name=max_parts,json=maxParts,proto3" json:"max_parts,omitempty"` 439 // If set, only the final payment update is streamed back. Intermediate updates 440 // that show which htlcs are still in flight are suppressed. 441 NoInflightUpdates bool `protobuf:"varint,18,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"` 442 // The largest payment split that should be attempted when making a payment if 443 // splitting is necessary. Setting this value will effectively cause lnd to 444 // split more aggressively, vs only when it thinks it needs to. Note that this 445 // value is in milli-atoms. 446 MaxShardSizeMatoms uint64 `protobuf:"varint,21,opt,name=max_shard_size_matoms,json=maxShardSizeMatoms,proto3" json:"max_shard_size_matoms,omitempty"` 447 // If set, an AMP-payment will be attempted. 448 Amp bool `protobuf:"varint,22,opt,name=amp,proto3" json:"amp,omitempty"` 449 } 450 451 func (x *SendPaymentRequest) Reset() { 452 *x = SendPaymentRequest{} 453 if protoimpl.UnsafeEnabled { 454 mi := &file_routerrpc_router_proto_msgTypes[0] 455 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 456 ms.StoreMessageInfo(mi) 457 } 458 } 459 460 func (x *SendPaymentRequest) String() string { 461 return protoimpl.X.MessageStringOf(x) 462 } 463 464 func (*SendPaymentRequest) ProtoMessage() {} 465 466 func (x *SendPaymentRequest) ProtoReflect() protoreflect.Message { 467 mi := &file_routerrpc_router_proto_msgTypes[0] 468 if protoimpl.UnsafeEnabled && x != nil { 469 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 470 if ms.LoadMessageInfo() == nil { 471 ms.StoreMessageInfo(mi) 472 } 473 return ms 474 } 475 return mi.MessageOf(x) 476 } 477 478 // Deprecated: Use SendPaymentRequest.ProtoReflect.Descriptor instead. 479 func (*SendPaymentRequest) Descriptor() ([]byte, []int) { 480 return file_routerrpc_router_proto_rawDescGZIP(), []int{0} 481 } 482 483 func (x *SendPaymentRequest) GetDest() []byte { 484 if x != nil { 485 return x.Dest 486 } 487 return nil 488 } 489 490 func (x *SendPaymentRequest) GetAmt() int64 { 491 if x != nil { 492 return x.Amt 493 } 494 return 0 495 } 496 497 func (x *SendPaymentRequest) GetAmtMAtoms() int64 { 498 if x != nil { 499 return x.AmtMAtoms 500 } 501 return 0 502 } 503 504 func (x *SendPaymentRequest) GetPaymentHash() []byte { 505 if x != nil { 506 return x.PaymentHash 507 } 508 return nil 509 } 510 511 func (x *SendPaymentRequest) GetFinalCltvDelta() int32 { 512 if x != nil { 513 return x.FinalCltvDelta 514 } 515 return 0 516 } 517 518 func (x *SendPaymentRequest) GetPaymentAddr() []byte { 519 if x != nil { 520 return x.PaymentAddr 521 } 522 return nil 523 } 524 525 func (x *SendPaymentRequest) GetPaymentRequest() string { 526 if x != nil { 527 return x.PaymentRequest 528 } 529 return "" 530 } 531 532 func (x *SendPaymentRequest) GetTimeoutSeconds() int32 { 533 if x != nil { 534 return x.TimeoutSeconds 535 } 536 return 0 537 } 538 539 func (x *SendPaymentRequest) GetFeeLimitAtoms() int64 { 540 if x != nil { 541 return x.FeeLimitAtoms 542 } 543 return 0 544 } 545 546 func (x *SendPaymentRequest) GetFeeLimitMAtoms() int64 { 547 if x != nil { 548 return x.FeeLimitMAtoms 549 } 550 return 0 551 } 552 553 // Deprecated: Marked as deprecated in routerrpc/router.proto. 554 func (x *SendPaymentRequest) GetOutgoingChanId() uint64 { 555 if x != nil { 556 return x.OutgoingChanId 557 } 558 return 0 559 } 560 561 func (x *SendPaymentRequest) GetOutgoingChanIds() []uint64 { 562 if x != nil { 563 return x.OutgoingChanIds 564 } 565 return nil 566 } 567 568 func (x *SendPaymentRequest) GetLastHopPubkey() []byte { 569 if x != nil { 570 return x.LastHopPubkey 571 } 572 return nil 573 } 574 575 func (x *SendPaymentRequest) GetCltvLimit() int32 { 576 if x != nil { 577 return x.CltvLimit 578 } 579 return 0 580 } 581 582 func (x *SendPaymentRequest) GetRouteHints() []*lnrpc.RouteHint { 583 if x != nil { 584 return x.RouteHints 585 } 586 return nil 587 } 588 589 func (x *SendPaymentRequest) GetDestCustomRecords() map[uint64][]byte { 590 if x != nil { 591 return x.DestCustomRecords 592 } 593 return nil 594 } 595 596 func (x *SendPaymentRequest) GetAllowSelfPayment() bool { 597 if x != nil { 598 return x.AllowSelfPayment 599 } 600 return false 601 } 602 603 func (x *SendPaymentRequest) GetDestFeatures() []lnrpc.FeatureBit { 604 if x != nil { 605 return x.DestFeatures 606 } 607 return nil 608 } 609 610 func (x *SendPaymentRequest) GetMaxParts() uint32 { 611 if x != nil { 612 return x.MaxParts 613 } 614 return 0 615 } 616 617 func (x *SendPaymentRequest) GetNoInflightUpdates() bool { 618 if x != nil { 619 return x.NoInflightUpdates 620 } 621 return false 622 } 623 624 func (x *SendPaymentRequest) GetMaxShardSizeMatoms() uint64 { 625 if x != nil { 626 return x.MaxShardSizeMatoms 627 } 628 return 0 629 } 630 631 func (x *SendPaymentRequest) GetAmp() bool { 632 if x != nil { 633 return x.Amp 634 } 635 return false 636 } 637 638 type TrackPaymentRequest struct { 639 state protoimpl.MessageState 640 sizeCache protoimpl.SizeCache 641 unknownFields protoimpl.UnknownFields 642 643 // The hash of the payment to look up. 644 PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` 645 // If set, only the final payment update is streamed back. Intermediate updates 646 // that show which htlcs are still in flight are suppressed. 647 NoInflightUpdates bool `protobuf:"varint,2,opt,name=no_inflight_updates,json=noInflightUpdates,proto3" json:"no_inflight_updates,omitempty"` 648 } 649 650 func (x *TrackPaymentRequest) Reset() { 651 *x = TrackPaymentRequest{} 652 if protoimpl.UnsafeEnabled { 653 mi := &file_routerrpc_router_proto_msgTypes[1] 654 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 655 ms.StoreMessageInfo(mi) 656 } 657 } 658 659 func (x *TrackPaymentRequest) String() string { 660 return protoimpl.X.MessageStringOf(x) 661 } 662 663 func (*TrackPaymentRequest) ProtoMessage() {} 664 665 func (x *TrackPaymentRequest) ProtoReflect() protoreflect.Message { 666 mi := &file_routerrpc_router_proto_msgTypes[1] 667 if protoimpl.UnsafeEnabled && x != nil { 668 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 669 if ms.LoadMessageInfo() == nil { 670 ms.StoreMessageInfo(mi) 671 } 672 return ms 673 } 674 return mi.MessageOf(x) 675 } 676 677 // Deprecated: Use TrackPaymentRequest.ProtoReflect.Descriptor instead. 678 func (*TrackPaymentRequest) Descriptor() ([]byte, []int) { 679 return file_routerrpc_router_proto_rawDescGZIP(), []int{1} 680 } 681 682 func (x *TrackPaymentRequest) GetPaymentHash() []byte { 683 if x != nil { 684 return x.PaymentHash 685 } 686 return nil 687 } 688 689 func (x *TrackPaymentRequest) GetNoInflightUpdates() bool { 690 if x != nil { 691 return x.NoInflightUpdates 692 } 693 return false 694 } 695 696 type RouteFeeRequest struct { 697 state protoimpl.MessageState 698 sizeCache protoimpl.SizeCache 699 unknownFields protoimpl.UnknownFields 700 701 // The destination once wishes to obtain a routing fee quote to. 702 Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"` 703 // The amount one wishes to send to the target destination. 704 AmtAtoms int64 `protobuf:"varint,2,opt,name=amt_atoms,json=amtAtoms,proto3" json:"amt_atoms,omitempty"` 705 } 706 707 func (x *RouteFeeRequest) Reset() { 708 *x = RouteFeeRequest{} 709 if protoimpl.UnsafeEnabled { 710 mi := &file_routerrpc_router_proto_msgTypes[2] 711 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 712 ms.StoreMessageInfo(mi) 713 } 714 } 715 716 func (x *RouteFeeRequest) String() string { 717 return protoimpl.X.MessageStringOf(x) 718 } 719 720 func (*RouteFeeRequest) ProtoMessage() {} 721 722 func (x *RouteFeeRequest) ProtoReflect() protoreflect.Message { 723 mi := &file_routerrpc_router_proto_msgTypes[2] 724 if protoimpl.UnsafeEnabled && x != nil { 725 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 726 if ms.LoadMessageInfo() == nil { 727 ms.StoreMessageInfo(mi) 728 } 729 return ms 730 } 731 return mi.MessageOf(x) 732 } 733 734 // Deprecated: Use RouteFeeRequest.ProtoReflect.Descriptor instead. 735 func (*RouteFeeRequest) Descriptor() ([]byte, []int) { 736 return file_routerrpc_router_proto_rawDescGZIP(), []int{2} 737 } 738 739 func (x *RouteFeeRequest) GetDest() []byte { 740 if x != nil { 741 return x.Dest 742 } 743 return nil 744 } 745 746 func (x *RouteFeeRequest) GetAmtAtoms() int64 { 747 if x != nil { 748 return x.AmtAtoms 749 } 750 return 0 751 } 752 753 type RouteFeeResponse struct { 754 state protoimpl.MessageState 755 sizeCache protoimpl.SizeCache 756 unknownFields protoimpl.UnknownFields 757 758 // A lower bound of the estimated fee to the target destination within the 759 // network, expressed in milli-satoshis. 760 RoutingFeeMatoms int64 `protobuf:"varint,1,opt,name=routing_fee_matoms,json=routingFeeMatoms,proto3" json:"routing_fee_matoms,omitempty"` 761 // An estimate of the worst case time delay that can occur. Note that callers 762 // will still need to factor in the final CLTV delta of the last hop into this 763 // value. 764 TimeLockDelay int64 `protobuf:"varint,2,opt,name=time_lock_delay,json=timeLockDelay,proto3" json:"time_lock_delay,omitempty"` 765 } 766 767 func (x *RouteFeeResponse) Reset() { 768 *x = RouteFeeResponse{} 769 if protoimpl.UnsafeEnabled { 770 mi := &file_routerrpc_router_proto_msgTypes[3] 771 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 772 ms.StoreMessageInfo(mi) 773 } 774 } 775 776 func (x *RouteFeeResponse) String() string { 777 return protoimpl.X.MessageStringOf(x) 778 } 779 780 func (*RouteFeeResponse) ProtoMessage() {} 781 782 func (x *RouteFeeResponse) ProtoReflect() protoreflect.Message { 783 mi := &file_routerrpc_router_proto_msgTypes[3] 784 if protoimpl.UnsafeEnabled && x != nil { 785 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 786 if ms.LoadMessageInfo() == nil { 787 ms.StoreMessageInfo(mi) 788 } 789 return ms 790 } 791 return mi.MessageOf(x) 792 } 793 794 // Deprecated: Use RouteFeeResponse.ProtoReflect.Descriptor instead. 795 func (*RouteFeeResponse) Descriptor() ([]byte, []int) { 796 return file_routerrpc_router_proto_rawDescGZIP(), []int{3} 797 } 798 799 func (x *RouteFeeResponse) GetRoutingFeeMatoms() int64 { 800 if x != nil { 801 return x.RoutingFeeMatoms 802 } 803 return 0 804 } 805 806 func (x *RouteFeeResponse) GetTimeLockDelay() int64 { 807 if x != nil { 808 return x.TimeLockDelay 809 } 810 return 0 811 } 812 813 type SendToRouteRequest struct { 814 state protoimpl.MessageState 815 sizeCache protoimpl.SizeCache 816 unknownFields protoimpl.UnknownFields 817 818 // The payment hash to use for the HTLC. 819 PaymentHash []byte `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` 820 // Route that should be used to attempt to complete the payment. 821 Route *lnrpc.Route `protobuf:"bytes,2,opt,name=route,proto3" json:"route,omitempty"` 822 } 823 824 func (x *SendToRouteRequest) Reset() { 825 *x = SendToRouteRequest{} 826 if protoimpl.UnsafeEnabled { 827 mi := &file_routerrpc_router_proto_msgTypes[4] 828 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 829 ms.StoreMessageInfo(mi) 830 } 831 } 832 833 func (x *SendToRouteRequest) String() string { 834 return protoimpl.X.MessageStringOf(x) 835 } 836 837 func (*SendToRouteRequest) ProtoMessage() {} 838 839 func (x *SendToRouteRequest) ProtoReflect() protoreflect.Message { 840 mi := &file_routerrpc_router_proto_msgTypes[4] 841 if protoimpl.UnsafeEnabled && x != nil { 842 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 843 if ms.LoadMessageInfo() == nil { 844 ms.StoreMessageInfo(mi) 845 } 846 return ms 847 } 848 return mi.MessageOf(x) 849 } 850 851 // Deprecated: Use SendToRouteRequest.ProtoReflect.Descriptor instead. 852 func (*SendToRouteRequest) Descriptor() ([]byte, []int) { 853 return file_routerrpc_router_proto_rawDescGZIP(), []int{4} 854 } 855 856 func (x *SendToRouteRequest) GetPaymentHash() []byte { 857 if x != nil { 858 return x.PaymentHash 859 } 860 return nil 861 } 862 863 func (x *SendToRouteRequest) GetRoute() *lnrpc.Route { 864 if x != nil { 865 return x.Route 866 } 867 return nil 868 } 869 870 type SendToRouteResponse struct { 871 state protoimpl.MessageState 872 sizeCache protoimpl.SizeCache 873 unknownFields protoimpl.UnknownFields 874 875 // The preimage obtained by making the payment. 876 Preimage []byte `protobuf:"bytes,1,opt,name=preimage,proto3" json:"preimage,omitempty"` 877 // The failure message in case the payment failed. 878 Failure *lnrpc.Failure `protobuf:"bytes,2,opt,name=failure,proto3" json:"failure,omitempty"` 879 } 880 881 func (x *SendToRouteResponse) Reset() { 882 *x = SendToRouteResponse{} 883 if protoimpl.UnsafeEnabled { 884 mi := &file_routerrpc_router_proto_msgTypes[5] 885 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 886 ms.StoreMessageInfo(mi) 887 } 888 } 889 890 func (x *SendToRouteResponse) String() string { 891 return protoimpl.X.MessageStringOf(x) 892 } 893 894 func (*SendToRouteResponse) ProtoMessage() {} 895 896 func (x *SendToRouteResponse) ProtoReflect() protoreflect.Message { 897 mi := &file_routerrpc_router_proto_msgTypes[5] 898 if protoimpl.UnsafeEnabled && x != nil { 899 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 900 if ms.LoadMessageInfo() == nil { 901 ms.StoreMessageInfo(mi) 902 } 903 return ms 904 } 905 return mi.MessageOf(x) 906 } 907 908 // Deprecated: Use SendToRouteResponse.ProtoReflect.Descriptor instead. 909 func (*SendToRouteResponse) Descriptor() ([]byte, []int) { 910 return file_routerrpc_router_proto_rawDescGZIP(), []int{5} 911 } 912 913 func (x *SendToRouteResponse) GetPreimage() []byte { 914 if x != nil { 915 return x.Preimage 916 } 917 return nil 918 } 919 920 func (x *SendToRouteResponse) GetFailure() *lnrpc.Failure { 921 if x != nil { 922 return x.Failure 923 } 924 return nil 925 } 926 927 type ResetMissionControlRequest struct { 928 state protoimpl.MessageState 929 sizeCache protoimpl.SizeCache 930 unknownFields protoimpl.UnknownFields 931 } 932 933 func (x *ResetMissionControlRequest) Reset() { 934 *x = ResetMissionControlRequest{} 935 if protoimpl.UnsafeEnabled { 936 mi := &file_routerrpc_router_proto_msgTypes[6] 937 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 938 ms.StoreMessageInfo(mi) 939 } 940 } 941 942 func (x *ResetMissionControlRequest) String() string { 943 return protoimpl.X.MessageStringOf(x) 944 } 945 946 func (*ResetMissionControlRequest) ProtoMessage() {} 947 948 func (x *ResetMissionControlRequest) ProtoReflect() protoreflect.Message { 949 mi := &file_routerrpc_router_proto_msgTypes[6] 950 if protoimpl.UnsafeEnabled && x != nil { 951 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 952 if ms.LoadMessageInfo() == nil { 953 ms.StoreMessageInfo(mi) 954 } 955 return ms 956 } 957 return mi.MessageOf(x) 958 } 959 960 // Deprecated: Use ResetMissionControlRequest.ProtoReflect.Descriptor instead. 961 func (*ResetMissionControlRequest) Descriptor() ([]byte, []int) { 962 return file_routerrpc_router_proto_rawDescGZIP(), []int{6} 963 } 964 965 type ResetMissionControlResponse struct { 966 state protoimpl.MessageState 967 sizeCache protoimpl.SizeCache 968 unknownFields protoimpl.UnknownFields 969 } 970 971 func (x *ResetMissionControlResponse) Reset() { 972 *x = ResetMissionControlResponse{} 973 if protoimpl.UnsafeEnabled { 974 mi := &file_routerrpc_router_proto_msgTypes[7] 975 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 976 ms.StoreMessageInfo(mi) 977 } 978 } 979 980 func (x *ResetMissionControlResponse) String() string { 981 return protoimpl.X.MessageStringOf(x) 982 } 983 984 func (*ResetMissionControlResponse) ProtoMessage() {} 985 986 func (x *ResetMissionControlResponse) ProtoReflect() protoreflect.Message { 987 mi := &file_routerrpc_router_proto_msgTypes[7] 988 if protoimpl.UnsafeEnabled && x != nil { 989 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 990 if ms.LoadMessageInfo() == nil { 991 ms.StoreMessageInfo(mi) 992 } 993 return ms 994 } 995 return mi.MessageOf(x) 996 } 997 998 // Deprecated: Use ResetMissionControlResponse.ProtoReflect.Descriptor instead. 999 func (*ResetMissionControlResponse) Descriptor() ([]byte, []int) { 1000 return file_routerrpc_router_proto_rawDescGZIP(), []int{7} 1001 } 1002 1003 type QueryMissionControlRequest struct { 1004 state protoimpl.MessageState 1005 sizeCache protoimpl.SizeCache 1006 unknownFields protoimpl.UnknownFields 1007 } 1008 1009 func (x *QueryMissionControlRequest) Reset() { 1010 *x = QueryMissionControlRequest{} 1011 if protoimpl.UnsafeEnabled { 1012 mi := &file_routerrpc_router_proto_msgTypes[8] 1013 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1014 ms.StoreMessageInfo(mi) 1015 } 1016 } 1017 1018 func (x *QueryMissionControlRequest) String() string { 1019 return protoimpl.X.MessageStringOf(x) 1020 } 1021 1022 func (*QueryMissionControlRequest) ProtoMessage() {} 1023 1024 func (x *QueryMissionControlRequest) ProtoReflect() protoreflect.Message { 1025 mi := &file_routerrpc_router_proto_msgTypes[8] 1026 if protoimpl.UnsafeEnabled && x != nil { 1027 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1028 if ms.LoadMessageInfo() == nil { 1029 ms.StoreMessageInfo(mi) 1030 } 1031 return ms 1032 } 1033 return mi.MessageOf(x) 1034 } 1035 1036 // Deprecated: Use QueryMissionControlRequest.ProtoReflect.Descriptor instead. 1037 func (*QueryMissionControlRequest) Descriptor() ([]byte, []int) { 1038 return file_routerrpc_router_proto_rawDescGZIP(), []int{8} 1039 } 1040 1041 // QueryMissionControlResponse contains mission control state. 1042 type QueryMissionControlResponse struct { 1043 state protoimpl.MessageState 1044 sizeCache protoimpl.SizeCache 1045 unknownFields protoimpl.UnknownFields 1046 1047 // Node pair-level mission control state. 1048 Pairs []*PairHistory `protobuf:"bytes,2,rep,name=pairs,proto3" json:"pairs,omitempty"` 1049 } 1050 1051 func (x *QueryMissionControlResponse) Reset() { 1052 *x = QueryMissionControlResponse{} 1053 if protoimpl.UnsafeEnabled { 1054 mi := &file_routerrpc_router_proto_msgTypes[9] 1055 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1056 ms.StoreMessageInfo(mi) 1057 } 1058 } 1059 1060 func (x *QueryMissionControlResponse) String() string { 1061 return protoimpl.X.MessageStringOf(x) 1062 } 1063 1064 func (*QueryMissionControlResponse) ProtoMessage() {} 1065 1066 func (x *QueryMissionControlResponse) ProtoReflect() protoreflect.Message { 1067 mi := &file_routerrpc_router_proto_msgTypes[9] 1068 if protoimpl.UnsafeEnabled && x != nil { 1069 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1070 if ms.LoadMessageInfo() == nil { 1071 ms.StoreMessageInfo(mi) 1072 } 1073 return ms 1074 } 1075 return mi.MessageOf(x) 1076 } 1077 1078 // Deprecated: Use QueryMissionControlResponse.ProtoReflect.Descriptor instead. 1079 func (*QueryMissionControlResponse) Descriptor() ([]byte, []int) { 1080 return file_routerrpc_router_proto_rawDescGZIP(), []int{9} 1081 } 1082 1083 func (x *QueryMissionControlResponse) GetPairs() []*PairHistory { 1084 if x != nil { 1085 return x.Pairs 1086 } 1087 return nil 1088 } 1089 1090 type XImportMissionControlRequest struct { 1091 state protoimpl.MessageState 1092 sizeCache protoimpl.SizeCache 1093 unknownFields protoimpl.UnknownFields 1094 1095 // Node pair-level mission control state to be imported. 1096 Pairs []*PairHistory `protobuf:"bytes,1,rep,name=pairs,proto3" json:"pairs,omitempty"` 1097 // Whether to force override MC pair history. Note that even with force 1098 // override the failure pair is imported before the success pair and both 1099 // still clamp existing failure/success amounts. 1100 Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` 1101 } 1102 1103 func (x *XImportMissionControlRequest) Reset() { 1104 *x = XImportMissionControlRequest{} 1105 if protoimpl.UnsafeEnabled { 1106 mi := &file_routerrpc_router_proto_msgTypes[10] 1107 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1108 ms.StoreMessageInfo(mi) 1109 } 1110 } 1111 1112 func (x *XImportMissionControlRequest) String() string { 1113 return protoimpl.X.MessageStringOf(x) 1114 } 1115 1116 func (*XImportMissionControlRequest) ProtoMessage() {} 1117 1118 func (x *XImportMissionControlRequest) ProtoReflect() protoreflect.Message { 1119 mi := &file_routerrpc_router_proto_msgTypes[10] 1120 if protoimpl.UnsafeEnabled && x != nil { 1121 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1122 if ms.LoadMessageInfo() == nil { 1123 ms.StoreMessageInfo(mi) 1124 } 1125 return ms 1126 } 1127 return mi.MessageOf(x) 1128 } 1129 1130 // Deprecated: Use XImportMissionControlRequest.ProtoReflect.Descriptor instead. 1131 func (*XImportMissionControlRequest) Descriptor() ([]byte, []int) { 1132 return file_routerrpc_router_proto_rawDescGZIP(), []int{10} 1133 } 1134 1135 func (x *XImportMissionControlRequest) GetPairs() []*PairHistory { 1136 if x != nil { 1137 return x.Pairs 1138 } 1139 return nil 1140 } 1141 1142 func (x *XImportMissionControlRequest) GetForce() bool { 1143 if x != nil { 1144 return x.Force 1145 } 1146 return false 1147 } 1148 1149 type XImportMissionControlResponse struct { 1150 state protoimpl.MessageState 1151 sizeCache protoimpl.SizeCache 1152 unknownFields protoimpl.UnknownFields 1153 } 1154 1155 func (x *XImportMissionControlResponse) Reset() { 1156 *x = XImportMissionControlResponse{} 1157 if protoimpl.UnsafeEnabled { 1158 mi := &file_routerrpc_router_proto_msgTypes[11] 1159 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1160 ms.StoreMessageInfo(mi) 1161 } 1162 } 1163 1164 func (x *XImportMissionControlResponse) String() string { 1165 return protoimpl.X.MessageStringOf(x) 1166 } 1167 1168 func (*XImportMissionControlResponse) ProtoMessage() {} 1169 1170 func (x *XImportMissionControlResponse) ProtoReflect() protoreflect.Message { 1171 mi := &file_routerrpc_router_proto_msgTypes[11] 1172 if protoimpl.UnsafeEnabled && x != nil { 1173 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1174 if ms.LoadMessageInfo() == nil { 1175 ms.StoreMessageInfo(mi) 1176 } 1177 return ms 1178 } 1179 return mi.MessageOf(x) 1180 } 1181 1182 // Deprecated: Use XImportMissionControlResponse.ProtoReflect.Descriptor instead. 1183 func (*XImportMissionControlResponse) Descriptor() ([]byte, []int) { 1184 return file_routerrpc_router_proto_rawDescGZIP(), []int{11} 1185 } 1186 1187 // PairHistory contains the mission control state for a particular node pair. 1188 type PairHistory struct { 1189 state protoimpl.MessageState 1190 sizeCache protoimpl.SizeCache 1191 unknownFields protoimpl.UnknownFields 1192 1193 // The source node pubkey of the pair. 1194 NodeFrom []byte `protobuf:"bytes,1,opt,name=node_from,json=nodeFrom,proto3" json:"node_from,omitempty"` 1195 // The destination node pubkey of the pair. 1196 NodeTo []byte `protobuf:"bytes,2,opt,name=node_to,json=nodeTo,proto3" json:"node_to,omitempty"` 1197 History *PairData `protobuf:"bytes,7,opt,name=history,proto3" json:"history,omitempty"` 1198 } 1199 1200 func (x *PairHistory) Reset() { 1201 *x = PairHistory{} 1202 if protoimpl.UnsafeEnabled { 1203 mi := &file_routerrpc_router_proto_msgTypes[12] 1204 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1205 ms.StoreMessageInfo(mi) 1206 } 1207 } 1208 1209 func (x *PairHistory) String() string { 1210 return protoimpl.X.MessageStringOf(x) 1211 } 1212 1213 func (*PairHistory) ProtoMessage() {} 1214 1215 func (x *PairHistory) ProtoReflect() protoreflect.Message { 1216 mi := &file_routerrpc_router_proto_msgTypes[12] 1217 if protoimpl.UnsafeEnabled && x != nil { 1218 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1219 if ms.LoadMessageInfo() == nil { 1220 ms.StoreMessageInfo(mi) 1221 } 1222 return ms 1223 } 1224 return mi.MessageOf(x) 1225 } 1226 1227 // Deprecated: Use PairHistory.ProtoReflect.Descriptor instead. 1228 func (*PairHistory) Descriptor() ([]byte, []int) { 1229 return file_routerrpc_router_proto_rawDescGZIP(), []int{12} 1230 } 1231 1232 func (x *PairHistory) GetNodeFrom() []byte { 1233 if x != nil { 1234 return x.NodeFrom 1235 } 1236 return nil 1237 } 1238 1239 func (x *PairHistory) GetNodeTo() []byte { 1240 if x != nil { 1241 return x.NodeTo 1242 } 1243 return nil 1244 } 1245 1246 func (x *PairHistory) GetHistory() *PairData { 1247 if x != nil { 1248 return x.History 1249 } 1250 return nil 1251 } 1252 1253 type PairData struct { 1254 state protoimpl.MessageState 1255 sizeCache protoimpl.SizeCache 1256 unknownFields protoimpl.UnknownFields 1257 1258 // Time of last failure. 1259 FailTime int64 `protobuf:"varint,1,opt,name=fail_time,json=failTime,proto3" json:"fail_time,omitempty"` 1260 // Lowest amount that failed to forward rounded to whole atoms. This may be 1261 // set to zero if the failure is independent of amount. 1262 FailAmtAtoms int64 `protobuf:"varint,2,opt,name=fail_amt_atoms,json=failAmtAtoms,proto3" json:"fail_amt_atoms,omitempty"` 1263 // Lowest amount that failed to forward in milliatoms. This may be 1264 // set to zero if the failure is independent of amount. 1265 FailAmtMAtoms int64 `protobuf:"varint,4,opt,name=fail_amt_m_atoms,json=failAmtMAtoms,proto3" json:"fail_amt_m_atoms,omitempty"` 1266 // Time of last success. 1267 SuccessTime int64 `protobuf:"varint,5,opt,name=success_time,json=successTime,proto3" json:"success_time,omitempty"` 1268 // Highest amount that we could successfully forward rounded to whole 1269 // atoms. 1270 SuccessAmtAtoms int64 `protobuf:"varint,6,opt,name=success_amt_atoms,json=successAmtAtoms,proto3" json:"success_amt_atoms,omitempty"` 1271 // Highest amount that we could successfully forward in milliatoms. 1272 SuccessAmtMAtoms int64 `protobuf:"varint,7,opt,name=success_amt_m_atoms,json=successAmtMAtoms,proto3" json:"success_amt_m_atoms,omitempty"` 1273 } 1274 1275 func (x *PairData) Reset() { 1276 *x = PairData{} 1277 if protoimpl.UnsafeEnabled { 1278 mi := &file_routerrpc_router_proto_msgTypes[13] 1279 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1280 ms.StoreMessageInfo(mi) 1281 } 1282 } 1283 1284 func (x *PairData) String() string { 1285 return protoimpl.X.MessageStringOf(x) 1286 } 1287 1288 func (*PairData) ProtoMessage() {} 1289 1290 func (x *PairData) ProtoReflect() protoreflect.Message { 1291 mi := &file_routerrpc_router_proto_msgTypes[13] 1292 if protoimpl.UnsafeEnabled && x != nil { 1293 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1294 if ms.LoadMessageInfo() == nil { 1295 ms.StoreMessageInfo(mi) 1296 } 1297 return ms 1298 } 1299 return mi.MessageOf(x) 1300 } 1301 1302 // Deprecated: Use PairData.ProtoReflect.Descriptor instead. 1303 func (*PairData) Descriptor() ([]byte, []int) { 1304 return file_routerrpc_router_proto_rawDescGZIP(), []int{13} 1305 } 1306 1307 func (x *PairData) GetFailTime() int64 { 1308 if x != nil { 1309 return x.FailTime 1310 } 1311 return 0 1312 } 1313 1314 func (x *PairData) GetFailAmtAtoms() int64 { 1315 if x != nil { 1316 return x.FailAmtAtoms 1317 } 1318 return 0 1319 } 1320 1321 func (x *PairData) GetFailAmtMAtoms() int64 { 1322 if x != nil { 1323 return x.FailAmtMAtoms 1324 } 1325 return 0 1326 } 1327 1328 func (x *PairData) GetSuccessTime() int64 { 1329 if x != nil { 1330 return x.SuccessTime 1331 } 1332 return 0 1333 } 1334 1335 func (x *PairData) GetSuccessAmtAtoms() int64 { 1336 if x != nil { 1337 return x.SuccessAmtAtoms 1338 } 1339 return 0 1340 } 1341 1342 func (x *PairData) GetSuccessAmtMAtoms() int64 { 1343 if x != nil { 1344 return x.SuccessAmtMAtoms 1345 } 1346 return 0 1347 } 1348 1349 type GetMissionControlConfigRequest struct { 1350 state protoimpl.MessageState 1351 sizeCache protoimpl.SizeCache 1352 unknownFields protoimpl.UnknownFields 1353 } 1354 1355 func (x *GetMissionControlConfigRequest) Reset() { 1356 *x = GetMissionControlConfigRequest{} 1357 if protoimpl.UnsafeEnabled { 1358 mi := &file_routerrpc_router_proto_msgTypes[14] 1359 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1360 ms.StoreMessageInfo(mi) 1361 } 1362 } 1363 1364 func (x *GetMissionControlConfigRequest) String() string { 1365 return protoimpl.X.MessageStringOf(x) 1366 } 1367 1368 func (*GetMissionControlConfigRequest) ProtoMessage() {} 1369 1370 func (x *GetMissionControlConfigRequest) ProtoReflect() protoreflect.Message { 1371 mi := &file_routerrpc_router_proto_msgTypes[14] 1372 if protoimpl.UnsafeEnabled && x != nil { 1373 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1374 if ms.LoadMessageInfo() == nil { 1375 ms.StoreMessageInfo(mi) 1376 } 1377 return ms 1378 } 1379 return mi.MessageOf(x) 1380 } 1381 1382 // Deprecated: Use GetMissionControlConfigRequest.ProtoReflect.Descriptor instead. 1383 func (*GetMissionControlConfigRequest) Descriptor() ([]byte, []int) { 1384 return file_routerrpc_router_proto_rawDescGZIP(), []int{14} 1385 } 1386 1387 type GetMissionControlConfigResponse struct { 1388 state protoimpl.MessageState 1389 sizeCache protoimpl.SizeCache 1390 unknownFields protoimpl.UnknownFields 1391 1392 // Mission control's currently active config. 1393 Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` 1394 } 1395 1396 func (x *GetMissionControlConfigResponse) Reset() { 1397 *x = GetMissionControlConfigResponse{} 1398 if protoimpl.UnsafeEnabled { 1399 mi := &file_routerrpc_router_proto_msgTypes[15] 1400 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1401 ms.StoreMessageInfo(mi) 1402 } 1403 } 1404 1405 func (x *GetMissionControlConfigResponse) String() string { 1406 return protoimpl.X.MessageStringOf(x) 1407 } 1408 1409 func (*GetMissionControlConfigResponse) ProtoMessage() {} 1410 1411 func (x *GetMissionControlConfigResponse) ProtoReflect() protoreflect.Message { 1412 mi := &file_routerrpc_router_proto_msgTypes[15] 1413 if protoimpl.UnsafeEnabled && x != nil { 1414 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1415 if ms.LoadMessageInfo() == nil { 1416 ms.StoreMessageInfo(mi) 1417 } 1418 return ms 1419 } 1420 return mi.MessageOf(x) 1421 } 1422 1423 // Deprecated: Use GetMissionControlConfigResponse.ProtoReflect.Descriptor instead. 1424 func (*GetMissionControlConfigResponse) Descriptor() ([]byte, []int) { 1425 return file_routerrpc_router_proto_rawDescGZIP(), []int{15} 1426 } 1427 1428 func (x *GetMissionControlConfigResponse) GetConfig() *MissionControlConfig { 1429 if x != nil { 1430 return x.Config 1431 } 1432 return nil 1433 } 1434 1435 type SetMissionControlConfigRequest struct { 1436 state protoimpl.MessageState 1437 sizeCache protoimpl.SizeCache 1438 unknownFields protoimpl.UnknownFields 1439 1440 // The config to set for mission control. Note that all values *must* be set, 1441 // because the full config will be applied. 1442 Config *MissionControlConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` 1443 } 1444 1445 func (x *SetMissionControlConfigRequest) Reset() { 1446 *x = SetMissionControlConfigRequest{} 1447 if protoimpl.UnsafeEnabled { 1448 mi := &file_routerrpc_router_proto_msgTypes[16] 1449 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1450 ms.StoreMessageInfo(mi) 1451 } 1452 } 1453 1454 func (x *SetMissionControlConfigRequest) String() string { 1455 return protoimpl.X.MessageStringOf(x) 1456 } 1457 1458 func (*SetMissionControlConfigRequest) ProtoMessage() {} 1459 1460 func (x *SetMissionControlConfigRequest) ProtoReflect() protoreflect.Message { 1461 mi := &file_routerrpc_router_proto_msgTypes[16] 1462 if protoimpl.UnsafeEnabled && x != nil { 1463 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1464 if ms.LoadMessageInfo() == nil { 1465 ms.StoreMessageInfo(mi) 1466 } 1467 return ms 1468 } 1469 return mi.MessageOf(x) 1470 } 1471 1472 // Deprecated: Use SetMissionControlConfigRequest.ProtoReflect.Descriptor instead. 1473 func (*SetMissionControlConfigRequest) Descriptor() ([]byte, []int) { 1474 return file_routerrpc_router_proto_rawDescGZIP(), []int{16} 1475 } 1476 1477 func (x *SetMissionControlConfigRequest) GetConfig() *MissionControlConfig { 1478 if x != nil { 1479 return x.Config 1480 } 1481 return nil 1482 } 1483 1484 type SetMissionControlConfigResponse struct { 1485 state protoimpl.MessageState 1486 sizeCache protoimpl.SizeCache 1487 unknownFields protoimpl.UnknownFields 1488 } 1489 1490 func (x *SetMissionControlConfigResponse) Reset() { 1491 *x = SetMissionControlConfigResponse{} 1492 if protoimpl.UnsafeEnabled { 1493 mi := &file_routerrpc_router_proto_msgTypes[17] 1494 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1495 ms.StoreMessageInfo(mi) 1496 } 1497 } 1498 1499 func (x *SetMissionControlConfigResponse) String() string { 1500 return protoimpl.X.MessageStringOf(x) 1501 } 1502 1503 func (*SetMissionControlConfigResponse) ProtoMessage() {} 1504 1505 func (x *SetMissionControlConfigResponse) ProtoReflect() protoreflect.Message { 1506 mi := &file_routerrpc_router_proto_msgTypes[17] 1507 if protoimpl.UnsafeEnabled && x != nil { 1508 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1509 if ms.LoadMessageInfo() == nil { 1510 ms.StoreMessageInfo(mi) 1511 } 1512 return ms 1513 } 1514 return mi.MessageOf(x) 1515 } 1516 1517 // Deprecated: Use SetMissionControlConfigResponse.ProtoReflect.Descriptor instead. 1518 func (*SetMissionControlConfigResponse) Descriptor() ([]byte, []int) { 1519 return file_routerrpc_router_proto_rawDescGZIP(), []int{17} 1520 } 1521 1522 type MissionControlConfig struct { 1523 state protoimpl.MessageState 1524 sizeCache protoimpl.SizeCache 1525 unknownFields protoimpl.UnknownFields 1526 1527 // The amount of time mission control will take to restore a penalized node 1528 // or channel back to 50% success probability, expressed in seconds. Setting 1529 // this value to a higher value will penalize failures for longer, making 1530 // mission control less likely to route through nodes and channels that we 1531 // have previously recorded failures for. 1532 HalfLifeSeconds uint64 `protobuf:"varint,1,opt,name=half_life_seconds,json=halfLifeSeconds,proto3" json:"half_life_seconds,omitempty"` 1533 // The probability of success mission control should assign to hop in a route 1534 // where it has no other information available. Higher values will make mission 1535 // control more willing to try hops that we have no information about, lower 1536 // values will discourage trying these hops. 1537 HopProbability float32 `protobuf:"fixed32,2,opt,name=hop_probability,json=hopProbability,proto3" json:"hop_probability,omitempty"` 1538 // The importance that mission control should place on historical results, 1539 // expressed as a value in [0;1]. Setting this value to 1 will ignore all 1540 // historical payments and just use the hop probability to assess the 1541 // probability of success for each hop. A zero value ignores hop probability 1542 // completely and relies entirely on historical results, unless none are 1543 // available. 1544 Weight float32 `protobuf:"fixed32,3,opt,name=weight,proto3" json:"weight,omitempty"` 1545 // The maximum number of payment results that mission control will store. 1546 MaximumPaymentResults uint32 `protobuf:"varint,4,opt,name=maximum_payment_results,json=maximumPaymentResults,proto3" json:"maximum_payment_results,omitempty"` 1547 // The minimum time that must have passed since the previously recorded failure 1548 // before we raise the failure amount. 1549 MinimumFailureRelaxInterval uint64 `protobuf:"varint,5,opt,name=minimum_failure_relax_interval,json=minimumFailureRelaxInterval,proto3" json:"minimum_failure_relax_interval,omitempty"` 1550 } 1551 1552 func (x *MissionControlConfig) Reset() { 1553 *x = MissionControlConfig{} 1554 if protoimpl.UnsafeEnabled { 1555 mi := &file_routerrpc_router_proto_msgTypes[18] 1556 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1557 ms.StoreMessageInfo(mi) 1558 } 1559 } 1560 1561 func (x *MissionControlConfig) String() string { 1562 return protoimpl.X.MessageStringOf(x) 1563 } 1564 1565 func (*MissionControlConfig) ProtoMessage() {} 1566 1567 func (x *MissionControlConfig) ProtoReflect() protoreflect.Message { 1568 mi := &file_routerrpc_router_proto_msgTypes[18] 1569 if protoimpl.UnsafeEnabled && x != nil { 1570 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1571 if ms.LoadMessageInfo() == nil { 1572 ms.StoreMessageInfo(mi) 1573 } 1574 return ms 1575 } 1576 return mi.MessageOf(x) 1577 } 1578 1579 // Deprecated: Use MissionControlConfig.ProtoReflect.Descriptor instead. 1580 func (*MissionControlConfig) Descriptor() ([]byte, []int) { 1581 return file_routerrpc_router_proto_rawDescGZIP(), []int{18} 1582 } 1583 1584 func (x *MissionControlConfig) GetHalfLifeSeconds() uint64 { 1585 if x != nil { 1586 return x.HalfLifeSeconds 1587 } 1588 return 0 1589 } 1590 1591 func (x *MissionControlConfig) GetHopProbability() float32 { 1592 if x != nil { 1593 return x.HopProbability 1594 } 1595 return 0 1596 } 1597 1598 func (x *MissionControlConfig) GetWeight() float32 { 1599 if x != nil { 1600 return x.Weight 1601 } 1602 return 0 1603 } 1604 1605 func (x *MissionControlConfig) GetMaximumPaymentResults() uint32 { 1606 if x != nil { 1607 return x.MaximumPaymentResults 1608 } 1609 return 0 1610 } 1611 1612 func (x *MissionControlConfig) GetMinimumFailureRelaxInterval() uint64 { 1613 if x != nil { 1614 return x.MinimumFailureRelaxInterval 1615 } 1616 return 0 1617 } 1618 1619 type QueryProbabilityRequest struct { 1620 state protoimpl.MessageState 1621 sizeCache protoimpl.SizeCache 1622 unknownFields protoimpl.UnknownFields 1623 1624 // The source node pubkey of the pair. 1625 FromNode []byte `protobuf:"bytes,1,opt,name=from_node,json=fromNode,proto3" json:"from_node,omitempty"` 1626 // The destination node pubkey of the pair. 1627 ToNode []byte `protobuf:"bytes,2,opt,name=to_node,json=toNode,proto3" json:"to_node,omitempty"` 1628 // The amount for which to calculate a probability. 1629 AmtMAtoms int64 `protobuf:"varint,3,opt,name=amt_m_atoms,json=amtMAtoms,proto3" json:"amt_m_atoms,omitempty"` 1630 } 1631 1632 func (x *QueryProbabilityRequest) Reset() { 1633 *x = QueryProbabilityRequest{} 1634 if protoimpl.UnsafeEnabled { 1635 mi := &file_routerrpc_router_proto_msgTypes[19] 1636 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1637 ms.StoreMessageInfo(mi) 1638 } 1639 } 1640 1641 func (x *QueryProbabilityRequest) String() string { 1642 return protoimpl.X.MessageStringOf(x) 1643 } 1644 1645 func (*QueryProbabilityRequest) ProtoMessage() {} 1646 1647 func (x *QueryProbabilityRequest) ProtoReflect() protoreflect.Message { 1648 mi := &file_routerrpc_router_proto_msgTypes[19] 1649 if protoimpl.UnsafeEnabled && x != nil { 1650 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1651 if ms.LoadMessageInfo() == nil { 1652 ms.StoreMessageInfo(mi) 1653 } 1654 return ms 1655 } 1656 return mi.MessageOf(x) 1657 } 1658 1659 // Deprecated: Use QueryProbabilityRequest.ProtoReflect.Descriptor instead. 1660 func (*QueryProbabilityRequest) Descriptor() ([]byte, []int) { 1661 return file_routerrpc_router_proto_rawDescGZIP(), []int{19} 1662 } 1663 1664 func (x *QueryProbabilityRequest) GetFromNode() []byte { 1665 if x != nil { 1666 return x.FromNode 1667 } 1668 return nil 1669 } 1670 1671 func (x *QueryProbabilityRequest) GetToNode() []byte { 1672 if x != nil { 1673 return x.ToNode 1674 } 1675 return nil 1676 } 1677 1678 func (x *QueryProbabilityRequest) GetAmtMAtoms() int64 { 1679 if x != nil { 1680 return x.AmtMAtoms 1681 } 1682 return 0 1683 } 1684 1685 type QueryProbabilityResponse struct { 1686 state protoimpl.MessageState 1687 sizeCache protoimpl.SizeCache 1688 unknownFields protoimpl.UnknownFields 1689 1690 // The success probability for the requested pair. 1691 Probability float64 `protobuf:"fixed64,1,opt,name=probability,proto3" json:"probability,omitempty"` 1692 // The historical data for the requested pair. 1693 History *PairData `protobuf:"bytes,2,opt,name=history,proto3" json:"history,omitempty"` 1694 } 1695 1696 func (x *QueryProbabilityResponse) Reset() { 1697 *x = QueryProbabilityResponse{} 1698 if protoimpl.UnsafeEnabled { 1699 mi := &file_routerrpc_router_proto_msgTypes[20] 1700 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1701 ms.StoreMessageInfo(mi) 1702 } 1703 } 1704 1705 func (x *QueryProbabilityResponse) String() string { 1706 return protoimpl.X.MessageStringOf(x) 1707 } 1708 1709 func (*QueryProbabilityResponse) ProtoMessage() {} 1710 1711 func (x *QueryProbabilityResponse) ProtoReflect() protoreflect.Message { 1712 mi := &file_routerrpc_router_proto_msgTypes[20] 1713 if protoimpl.UnsafeEnabled && x != nil { 1714 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1715 if ms.LoadMessageInfo() == nil { 1716 ms.StoreMessageInfo(mi) 1717 } 1718 return ms 1719 } 1720 return mi.MessageOf(x) 1721 } 1722 1723 // Deprecated: Use QueryProbabilityResponse.ProtoReflect.Descriptor instead. 1724 func (*QueryProbabilityResponse) Descriptor() ([]byte, []int) { 1725 return file_routerrpc_router_proto_rawDescGZIP(), []int{20} 1726 } 1727 1728 func (x *QueryProbabilityResponse) GetProbability() float64 { 1729 if x != nil { 1730 return x.Probability 1731 } 1732 return 0 1733 } 1734 1735 func (x *QueryProbabilityResponse) GetHistory() *PairData { 1736 if x != nil { 1737 return x.History 1738 } 1739 return nil 1740 } 1741 1742 type BuildRouteRequest struct { 1743 state protoimpl.MessageState 1744 sizeCache protoimpl.SizeCache 1745 unknownFields protoimpl.UnknownFields 1746 1747 // The amount to send expressed in matoms. If set to zero, the minimum routable 1748 // amount is used. 1749 AmtMAtoms int64 `protobuf:"varint,1,opt,name=amt_m_atoms,json=amtMAtoms,proto3" json:"amt_m_atoms,omitempty"` 1750 // CLTV delta from the current height that should be used for the timelock 1751 // of the final hop 1752 FinalCltvDelta int32 `protobuf:"varint,2,opt,name=final_cltv_delta,json=finalCltvDelta,proto3" json:"final_cltv_delta,omitempty"` 1753 // The channel id of the channel that must be taken to the first hop. If zero, 1754 // any channel may be used. 1755 OutgoingChanId uint64 `protobuf:"varint,3,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"` 1756 // A list of hops that defines the route. This does not include the source hop 1757 // pubkey. 1758 HopPubkeys [][]byte `protobuf:"bytes,4,rep,name=hop_pubkeys,json=hopPubkeys,proto3" json:"hop_pubkeys,omitempty"` 1759 // An optional payment addr to be included within the last hop of the route. 1760 PaymentAddr []byte `protobuf:"bytes,5,opt,name=payment_addr,json=paymentAddr,proto3" json:"payment_addr,omitempty"` 1761 } 1762 1763 func (x *BuildRouteRequest) Reset() { 1764 *x = BuildRouteRequest{} 1765 if protoimpl.UnsafeEnabled { 1766 mi := &file_routerrpc_router_proto_msgTypes[21] 1767 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1768 ms.StoreMessageInfo(mi) 1769 } 1770 } 1771 1772 func (x *BuildRouteRequest) String() string { 1773 return protoimpl.X.MessageStringOf(x) 1774 } 1775 1776 func (*BuildRouteRequest) ProtoMessage() {} 1777 1778 func (x *BuildRouteRequest) ProtoReflect() protoreflect.Message { 1779 mi := &file_routerrpc_router_proto_msgTypes[21] 1780 if protoimpl.UnsafeEnabled && x != nil { 1781 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1782 if ms.LoadMessageInfo() == nil { 1783 ms.StoreMessageInfo(mi) 1784 } 1785 return ms 1786 } 1787 return mi.MessageOf(x) 1788 } 1789 1790 // Deprecated: Use BuildRouteRequest.ProtoReflect.Descriptor instead. 1791 func (*BuildRouteRequest) Descriptor() ([]byte, []int) { 1792 return file_routerrpc_router_proto_rawDescGZIP(), []int{21} 1793 } 1794 1795 func (x *BuildRouteRequest) GetAmtMAtoms() int64 { 1796 if x != nil { 1797 return x.AmtMAtoms 1798 } 1799 return 0 1800 } 1801 1802 func (x *BuildRouteRequest) GetFinalCltvDelta() int32 { 1803 if x != nil { 1804 return x.FinalCltvDelta 1805 } 1806 return 0 1807 } 1808 1809 func (x *BuildRouteRequest) GetOutgoingChanId() uint64 { 1810 if x != nil { 1811 return x.OutgoingChanId 1812 } 1813 return 0 1814 } 1815 1816 func (x *BuildRouteRequest) GetHopPubkeys() [][]byte { 1817 if x != nil { 1818 return x.HopPubkeys 1819 } 1820 return nil 1821 } 1822 1823 func (x *BuildRouteRequest) GetPaymentAddr() []byte { 1824 if x != nil { 1825 return x.PaymentAddr 1826 } 1827 return nil 1828 } 1829 1830 type BuildRouteResponse struct { 1831 state protoimpl.MessageState 1832 sizeCache protoimpl.SizeCache 1833 unknownFields protoimpl.UnknownFields 1834 1835 // Fully specified route that can be used to execute the payment. 1836 Route *lnrpc.Route `protobuf:"bytes,1,opt,name=route,proto3" json:"route,omitempty"` 1837 } 1838 1839 func (x *BuildRouteResponse) Reset() { 1840 *x = BuildRouteResponse{} 1841 if protoimpl.UnsafeEnabled { 1842 mi := &file_routerrpc_router_proto_msgTypes[22] 1843 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1844 ms.StoreMessageInfo(mi) 1845 } 1846 } 1847 1848 func (x *BuildRouteResponse) String() string { 1849 return protoimpl.X.MessageStringOf(x) 1850 } 1851 1852 func (*BuildRouteResponse) ProtoMessage() {} 1853 1854 func (x *BuildRouteResponse) ProtoReflect() protoreflect.Message { 1855 mi := &file_routerrpc_router_proto_msgTypes[22] 1856 if protoimpl.UnsafeEnabled && x != nil { 1857 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1858 if ms.LoadMessageInfo() == nil { 1859 ms.StoreMessageInfo(mi) 1860 } 1861 return ms 1862 } 1863 return mi.MessageOf(x) 1864 } 1865 1866 // Deprecated: Use BuildRouteResponse.ProtoReflect.Descriptor instead. 1867 func (*BuildRouteResponse) Descriptor() ([]byte, []int) { 1868 return file_routerrpc_router_proto_rawDescGZIP(), []int{22} 1869 } 1870 1871 func (x *BuildRouteResponse) GetRoute() *lnrpc.Route { 1872 if x != nil { 1873 return x.Route 1874 } 1875 return nil 1876 } 1877 1878 type SubscribeHtlcEventsRequest struct { 1879 state protoimpl.MessageState 1880 sizeCache protoimpl.SizeCache 1881 unknownFields protoimpl.UnknownFields 1882 } 1883 1884 func (x *SubscribeHtlcEventsRequest) Reset() { 1885 *x = SubscribeHtlcEventsRequest{} 1886 if protoimpl.UnsafeEnabled { 1887 mi := &file_routerrpc_router_proto_msgTypes[23] 1888 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1889 ms.StoreMessageInfo(mi) 1890 } 1891 } 1892 1893 func (x *SubscribeHtlcEventsRequest) String() string { 1894 return protoimpl.X.MessageStringOf(x) 1895 } 1896 1897 func (*SubscribeHtlcEventsRequest) ProtoMessage() {} 1898 1899 func (x *SubscribeHtlcEventsRequest) ProtoReflect() protoreflect.Message { 1900 mi := &file_routerrpc_router_proto_msgTypes[23] 1901 if protoimpl.UnsafeEnabled && x != nil { 1902 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1903 if ms.LoadMessageInfo() == nil { 1904 ms.StoreMessageInfo(mi) 1905 } 1906 return ms 1907 } 1908 return mi.MessageOf(x) 1909 } 1910 1911 // Deprecated: Use SubscribeHtlcEventsRequest.ProtoReflect.Descriptor instead. 1912 func (*SubscribeHtlcEventsRequest) Descriptor() ([]byte, []int) { 1913 return file_routerrpc_router_proto_rawDescGZIP(), []int{23} 1914 } 1915 1916 // HtlcEvent contains the htlc event that was processed. These are served on a 1917 // best-effort basis; events are not persisted, delivery is not guaranteed 1918 // (in the event of a crash in the switch, forward events may be lost) and 1919 // some events may be replayed upon restart. Events consumed from this package 1920 // should be de-duplicated by the htlc's unique combination of incoming and 1921 // outgoing channel id and htlc id. [EXPERIMENTAL] 1922 type HtlcEvent struct { 1923 state protoimpl.MessageState 1924 sizeCache protoimpl.SizeCache 1925 unknownFields protoimpl.UnknownFields 1926 1927 // The short channel id that the incoming htlc arrived at our node on. This 1928 // value is zero for sends. 1929 IncomingChannelId uint64 `protobuf:"varint,1,opt,name=incoming_channel_id,json=incomingChannelId,proto3" json:"incoming_channel_id,omitempty"` 1930 // The short channel id that the outgoing htlc left our node on. This value 1931 // is zero for receives. 1932 OutgoingChannelId uint64 `protobuf:"varint,2,opt,name=outgoing_channel_id,json=outgoingChannelId,proto3" json:"outgoing_channel_id,omitempty"` 1933 // Incoming id is the index of the incoming htlc in the incoming channel. 1934 // This value is zero for sends. 1935 IncomingHtlcId uint64 `protobuf:"varint,3,opt,name=incoming_htlc_id,json=incomingHtlcId,proto3" json:"incoming_htlc_id,omitempty"` 1936 // Outgoing id is the index of the outgoing htlc in the outgoing channel. 1937 // This value is zero for receives. 1938 OutgoingHtlcId uint64 `protobuf:"varint,4,opt,name=outgoing_htlc_id,json=outgoingHtlcId,proto3" json:"outgoing_htlc_id,omitempty"` 1939 // The time in unix nanoseconds that the event occurred. 1940 TimestampNs uint64 `protobuf:"varint,5,opt,name=timestamp_ns,json=timestampNs,proto3" json:"timestamp_ns,omitempty"` 1941 // The event type indicates whether the htlc was part of a send, receive or 1942 // forward. 1943 EventType HtlcEvent_EventType `protobuf:"varint,6,opt,name=event_type,json=eventType,proto3,enum=routerrpc.HtlcEvent_EventType" json:"event_type,omitempty"` 1944 // Types that are assignable to Event: 1945 // 1946 // *HtlcEvent_ForwardEvent 1947 // *HtlcEvent_ForwardFailEvent 1948 // *HtlcEvent_SettleEvent 1949 // *HtlcEvent_LinkFailEvent 1950 Event isHtlcEvent_Event `protobuf_oneof:"event"` 1951 } 1952 1953 func (x *HtlcEvent) Reset() { 1954 *x = HtlcEvent{} 1955 if protoimpl.UnsafeEnabled { 1956 mi := &file_routerrpc_router_proto_msgTypes[24] 1957 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1958 ms.StoreMessageInfo(mi) 1959 } 1960 } 1961 1962 func (x *HtlcEvent) String() string { 1963 return protoimpl.X.MessageStringOf(x) 1964 } 1965 1966 func (*HtlcEvent) ProtoMessage() {} 1967 1968 func (x *HtlcEvent) ProtoReflect() protoreflect.Message { 1969 mi := &file_routerrpc_router_proto_msgTypes[24] 1970 if protoimpl.UnsafeEnabled && x != nil { 1971 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1972 if ms.LoadMessageInfo() == nil { 1973 ms.StoreMessageInfo(mi) 1974 } 1975 return ms 1976 } 1977 return mi.MessageOf(x) 1978 } 1979 1980 // Deprecated: Use HtlcEvent.ProtoReflect.Descriptor instead. 1981 func (*HtlcEvent) Descriptor() ([]byte, []int) { 1982 return file_routerrpc_router_proto_rawDescGZIP(), []int{24} 1983 } 1984 1985 func (x *HtlcEvent) GetIncomingChannelId() uint64 { 1986 if x != nil { 1987 return x.IncomingChannelId 1988 } 1989 return 0 1990 } 1991 1992 func (x *HtlcEvent) GetOutgoingChannelId() uint64 { 1993 if x != nil { 1994 return x.OutgoingChannelId 1995 } 1996 return 0 1997 } 1998 1999 func (x *HtlcEvent) GetIncomingHtlcId() uint64 { 2000 if x != nil { 2001 return x.IncomingHtlcId 2002 } 2003 return 0 2004 } 2005 2006 func (x *HtlcEvent) GetOutgoingHtlcId() uint64 { 2007 if x != nil { 2008 return x.OutgoingHtlcId 2009 } 2010 return 0 2011 } 2012 2013 func (x *HtlcEvent) GetTimestampNs() uint64 { 2014 if x != nil { 2015 return x.TimestampNs 2016 } 2017 return 0 2018 } 2019 2020 func (x *HtlcEvent) GetEventType() HtlcEvent_EventType { 2021 if x != nil { 2022 return x.EventType 2023 } 2024 return HtlcEvent_UNKNOWN 2025 } 2026 2027 func (m *HtlcEvent) GetEvent() isHtlcEvent_Event { 2028 if m != nil { 2029 return m.Event 2030 } 2031 return nil 2032 } 2033 2034 func (x *HtlcEvent) GetForwardEvent() *ForwardEvent { 2035 if x, ok := x.GetEvent().(*HtlcEvent_ForwardEvent); ok { 2036 return x.ForwardEvent 2037 } 2038 return nil 2039 } 2040 2041 func (x *HtlcEvent) GetForwardFailEvent() *ForwardFailEvent { 2042 if x, ok := x.GetEvent().(*HtlcEvent_ForwardFailEvent); ok { 2043 return x.ForwardFailEvent 2044 } 2045 return nil 2046 } 2047 2048 func (x *HtlcEvent) GetSettleEvent() *SettleEvent { 2049 if x, ok := x.GetEvent().(*HtlcEvent_SettleEvent); ok { 2050 return x.SettleEvent 2051 } 2052 return nil 2053 } 2054 2055 func (x *HtlcEvent) GetLinkFailEvent() *LinkFailEvent { 2056 if x, ok := x.GetEvent().(*HtlcEvent_LinkFailEvent); ok { 2057 return x.LinkFailEvent 2058 } 2059 return nil 2060 } 2061 2062 type isHtlcEvent_Event interface { 2063 isHtlcEvent_Event() 2064 } 2065 2066 type HtlcEvent_ForwardEvent struct { 2067 ForwardEvent *ForwardEvent `protobuf:"bytes,7,opt,name=forward_event,json=forwardEvent,proto3,oneof"` 2068 } 2069 2070 type HtlcEvent_ForwardFailEvent struct { 2071 ForwardFailEvent *ForwardFailEvent `protobuf:"bytes,8,opt,name=forward_fail_event,json=forwardFailEvent,proto3,oneof"` 2072 } 2073 2074 type HtlcEvent_SettleEvent struct { 2075 SettleEvent *SettleEvent `protobuf:"bytes,9,opt,name=settle_event,json=settleEvent,proto3,oneof"` 2076 } 2077 2078 type HtlcEvent_LinkFailEvent struct { 2079 LinkFailEvent *LinkFailEvent `protobuf:"bytes,10,opt,name=link_fail_event,json=linkFailEvent,proto3,oneof"` 2080 } 2081 2082 func (*HtlcEvent_ForwardEvent) isHtlcEvent_Event() {} 2083 2084 func (*HtlcEvent_ForwardFailEvent) isHtlcEvent_Event() {} 2085 2086 func (*HtlcEvent_SettleEvent) isHtlcEvent_Event() {} 2087 2088 func (*HtlcEvent_LinkFailEvent) isHtlcEvent_Event() {} 2089 2090 type HtlcInfo struct { 2091 state protoimpl.MessageState 2092 sizeCache protoimpl.SizeCache 2093 unknownFields protoimpl.UnknownFields 2094 2095 // The timelock on the incoming htlc. 2096 IncomingTimelock uint32 `protobuf:"varint,1,opt,name=incoming_timelock,json=incomingTimelock,proto3" json:"incoming_timelock,omitempty"` 2097 // The timelock on the outgoing htlc. 2098 OutgoingTimelock uint32 `protobuf:"varint,2,opt,name=outgoing_timelock,json=outgoingTimelock,proto3" json:"outgoing_timelock,omitempty"` 2099 // The amount of the incoming htlc. 2100 IncomingAmtMAtoms uint64 `protobuf:"varint,3,opt,name=incoming_amt_m_atoms,json=incomingAmtMAtoms,proto3" json:"incoming_amt_m_atoms,omitempty"` 2101 // The amount of the outgoing htlc. 2102 OutgoingAmtMAtoms uint64 `protobuf:"varint,4,opt,name=outgoing_amt_m_atoms,json=outgoingAmtMAtoms,proto3" json:"outgoing_amt_m_atoms,omitempty"` 2103 } 2104 2105 func (x *HtlcInfo) Reset() { 2106 *x = HtlcInfo{} 2107 if protoimpl.UnsafeEnabled { 2108 mi := &file_routerrpc_router_proto_msgTypes[25] 2109 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2110 ms.StoreMessageInfo(mi) 2111 } 2112 } 2113 2114 func (x *HtlcInfo) String() string { 2115 return protoimpl.X.MessageStringOf(x) 2116 } 2117 2118 func (*HtlcInfo) ProtoMessage() {} 2119 2120 func (x *HtlcInfo) ProtoReflect() protoreflect.Message { 2121 mi := &file_routerrpc_router_proto_msgTypes[25] 2122 if protoimpl.UnsafeEnabled && x != nil { 2123 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2124 if ms.LoadMessageInfo() == nil { 2125 ms.StoreMessageInfo(mi) 2126 } 2127 return ms 2128 } 2129 return mi.MessageOf(x) 2130 } 2131 2132 // Deprecated: Use HtlcInfo.ProtoReflect.Descriptor instead. 2133 func (*HtlcInfo) Descriptor() ([]byte, []int) { 2134 return file_routerrpc_router_proto_rawDescGZIP(), []int{25} 2135 } 2136 2137 func (x *HtlcInfo) GetIncomingTimelock() uint32 { 2138 if x != nil { 2139 return x.IncomingTimelock 2140 } 2141 return 0 2142 } 2143 2144 func (x *HtlcInfo) GetOutgoingTimelock() uint32 { 2145 if x != nil { 2146 return x.OutgoingTimelock 2147 } 2148 return 0 2149 } 2150 2151 func (x *HtlcInfo) GetIncomingAmtMAtoms() uint64 { 2152 if x != nil { 2153 return x.IncomingAmtMAtoms 2154 } 2155 return 0 2156 } 2157 2158 func (x *HtlcInfo) GetOutgoingAmtMAtoms() uint64 { 2159 if x != nil { 2160 return x.OutgoingAmtMAtoms 2161 } 2162 return 0 2163 } 2164 2165 type ForwardEvent struct { 2166 state protoimpl.MessageState 2167 sizeCache protoimpl.SizeCache 2168 unknownFields protoimpl.UnknownFields 2169 2170 // Info contains details about the htlc that was forwarded. 2171 Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` 2172 } 2173 2174 func (x *ForwardEvent) Reset() { 2175 *x = ForwardEvent{} 2176 if protoimpl.UnsafeEnabled { 2177 mi := &file_routerrpc_router_proto_msgTypes[26] 2178 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2179 ms.StoreMessageInfo(mi) 2180 } 2181 } 2182 2183 func (x *ForwardEvent) String() string { 2184 return protoimpl.X.MessageStringOf(x) 2185 } 2186 2187 func (*ForwardEvent) ProtoMessage() {} 2188 2189 func (x *ForwardEvent) ProtoReflect() protoreflect.Message { 2190 mi := &file_routerrpc_router_proto_msgTypes[26] 2191 if protoimpl.UnsafeEnabled && x != nil { 2192 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2193 if ms.LoadMessageInfo() == nil { 2194 ms.StoreMessageInfo(mi) 2195 } 2196 return ms 2197 } 2198 return mi.MessageOf(x) 2199 } 2200 2201 // Deprecated: Use ForwardEvent.ProtoReflect.Descriptor instead. 2202 func (*ForwardEvent) Descriptor() ([]byte, []int) { 2203 return file_routerrpc_router_proto_rawDescGZIP(), []int{26} 2204 } 2205 2206 func (x *ForwardEvent) GetInfo() *HtlcInfo { 2207 if x != nil { 2208 return x.Info 2209 } 2210 return nil 2211 } 2212 2213 type ForwardFailEvent struct { 2214 state protoimpl.MessageState 2215 sizeCache protoimpl.SizeCache 2216 unknownFields protoimpl.UnknownFields 2217 } 2218 2219 func (x *ForwardFailEvent) Reset() { 2220 *x = ForwardFailEvent{} 2221 if protoimpl.UnsafeEnabled { 2222 mi := &file_routerrpc_router_proto_msgTypes[27] 2223 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2224 ms.StoreMessageInfo(mi) 2225 } 2226 } 2227 2228 func (x *ForwardFailEvent) String() string { 2229 return protoimpl.X.MessageStringOf(x) 2230 } 2231 2232 func (*ForwardFailEvent) ProtoMessage() {} 2233 2234 func (x *ForwardFailEvent) ProtoReflect() protoreflect.Message { 2235 mi := &file_routerrpc_router_proto_msgTypes[27] 2236 if protoimpl.UnsafeEnabled && x != nil { 2237 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2238 if ms.LoadMessageInfo() == nil { 2239 ms.StoreMessageInfo(mi) 2240 } 2241 return ms 2242 } 2243 return mi.MessageOf(x) 2244 } 2245 2246 // Deprecated: Use ForwardFailEvent.ProtoReflect.Descriptor instead. 2247 func (*ForwardFailEvent) Descriptor() ([]byte, []int) { 2248 return file_routerrpc_router_proto_rawDescGZIP(), []int{27} 2249 } 2250 2251 type SettleEvent struct { 2252 state protoimpl.MessageState 2253 sizeCache protoimpl.SizeCache 2254 unknownFields protoimpl.UnknownFields 2255 2256 // The revealed preimage. 2257 Preimage []byte `protobuf:"bytes,1,opt,name=preimage,proto3" json:"preimage,omitempty"` 2258 } 2259 2260 func (x *SettleEvent) Reset() { 2261 *x = SettleEvent{} 2262 if protoimpl.UnsafeEnabled { 2263 mi := &file_routerrpc_router_proto_msgTypes[28] 2264 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2265 ms.StoreMessageInfo(mi) 2266 } 2267 } 2268 2269 func (x *SettleEvent) String() string { 2270 return protoimpl.X.MessageStringOf(x) 2271 } 2272 2273 func (*SettleEvent) ProtoMessage() {} 2274 2275 func (x *SettleEvent) ProtoReflect() protoreflect.Message { 2276 mi := &file_routerrpc_router_proto_msgTypes[28] 2277 if protoimpl.UnsafeEnabled && x != nil { 2278 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2279 if ms.LoadMessageInfo() == nil { 2280 ms.StoreMessageInfo(mi) 2281 } 2282 return ms 2283 } 2284 return mi.MessageOf(x) 2285 } 2286 2287 // Deprecated: Use SettleEvent.ProtoReflect.Descriptor instead. 2288 func (*SettleEvent) Descriptor() ([]byte, []int) { 2289 return file_routerrpc_router_proto_rawDescGZIP(), []int{28} 2290 } 2291 2292 func (x *SettleEvent) GetPreimage() []byte { 2293 if x != nil { 2294 return x.Preimage 2295 } 2296 return nil 2297 } 2298 2299 type LinkFailEvent struct { 2300 state protoimpl.MessageState 2301 sizeCache protoimpl.SizeCache 2302 unknownFields protoimpl.UnknownFields 2303 2304 // Info contains details about the htlc that we failed. 2305 Info *HtlcInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` 2306 // FailureCode is the BOLT error code for the failure. 2307 WireFailure lnrpc.Failure_FailureCode `protobuf:"varint,2,opt,name=wire_failure,json=wireFailure,proto3,enum=lnrpc.Failure_FailureCode" json:"wire_failure,omitempty"` 2308 // FailureDetail provides additional information about the reason for the 2309 // failure. This detail enriches the information provided by the wire message 2310 // and may be 'no detail' if the wire message requires no additional metadata. 2311 FailureDetail FailureDetail `protobuf:"varint,3,opt,name=failure_detail,json=failureDetail,proto3,enum=routerrpc.FailureDetail" json:"failure_detail,omitempty"` 2312 // A string representation of the link failure. 2313 FailureString string `protobuf:"bytes,4,opt,name=failure_string,json=failureString,proto3" json:"failure_string,omitempty"` 2314 } 2315 2316 func (x *LinkFailEvent) Reset() { 2317 *x = LinkFailEvent{} 2318 if protoimpl.UnsafeEnabled { 2319 mi := &file_routerrpc_router_proto_msgTypes[29] 2320 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2321 ms.StoreMessageInfo(mi) 2322 } 2323 } 2324 2325 func (x *LinkFailEvent) String() string { 2326 return protoimpl.X.MessageStringOf(x) 2327 } 2328 2329 func (*LinkFailEvent) ProtoMessage() {} 2330 2331 func (x *LinkFailEvent) ProtoReflect() protoreflect.Message { 2332 mi := &file_routerrpc_router_proto_msgTypes[29] 2333 if protoimpl.UnsafeEnabled && x != nil { 2334 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2335 if ms.LoadMessageInfo() == nil { 2336 ms.StoreMessageInfo(mi) 2337 } 2338 return ms 2339 } 2340 return mi.MessageOf(x) 2341 } 2342 2343 // Deprecated: Use LinkFailEvent.ProtoReflect.Descriptor instead. 2344 func (*LinkFailEvent) Descriptor() ([]byte, []int) { 2345 return file_routerrpc_router_proto_rawDescGZIP(), []int{29} 2346 } 2347 2348 func (x *LinkFailEvent) GetInfo() *HtlcInfo { 2349 if x != nil { 2350 return x.Info 2351 } 2352 return nil 2353 } 2354 2355 func (x *LinkFailEvent) GetWireFailure() lnrpc.Failure_FailureCode { 2356 if x != nil { 2357 return x.WireFailure 2358 } 2359 return lnrpc.Failure_FailureCode(0) 2360 } 2361 2362 func (x *LinkFailEvent) GetFailureDetail() FailureDetail { 2363 if x != nil { 2364 return x.FailureDetail 2365 } 2366 return FailureDetail_UNKNOWN 2367 } 2368 2369 func (x *LinkFailEvent) GetFailureString() string { 2370 if x != nil { 2371 return x.FailureString 2372 } 2373 return "" 2374 } 2375 2376 type PaymentStatus struct { 2377 state protoimpl.MessageState 2378 sizeCache protoimpl.SizeCache 2379 unknownFields protoimpl.UnknownFields 2380 2381 // Current state the payment is in. 2382 State PaymentState `protobuf:"varint,1,opt,name=state,proto3,enum=routerrpc.PaymentState" json:"state,omitempty"` 2383 // The pre-image of the payment when state is SUCCEEDED. 2384 Preimage []byte `protobuf:"bytes,2,opt,name=preimage,proto3" json:"preimage,omitempty"` 2385 // The HTLCs made in attempt to settle the payment [EXPERIMENTAL]. 2386 Htlcs []*lnrpc.HTLCAttempt `protobuf:"bytes,4,rep,name=htlcs,proto3" json:"htlcs,omitempty"` 2387 } 2388 2389 func (x *PaymentStatus) Reset() { 2390 *x = PaymentStatus{} 2391 if protoimpl.UnsafeEnabled { 2392 mi := &file_routerrpc_router_proto_msgTypes[30] 2393 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2394 ms.StoreMessageInfo(mi) 2395 } 2396 } 2397 2398 func (x *PaymentStatus) String() string { 2399 return protoimpl.X.MessageStringOf(x) 2400 } 2401 2402 func (*PaymentStatus) ProtoMessage() {} 2403 2404 func (x *PaymentStatus) ProtoReflect() protoreflect.Message { 2405 mi := &file_routerrpc_router_proto_msgTypes[30] 2406 if protoimpl.UnsafeEnabled && x != nil { 2407 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2408 if ms.LoadMessageInfo() == nil { 2409 ms.StoreMessageInfo(mi) 2410 } 2411 return ms 2412 } 2413 return mi.MessageOf(x) 2414 } 2415 2416 // Deprecated: Use PaymentStatus.ProtoReflect.Descriptor instead. 2417 func (*PaymentStatus) Descriptor() ([]byte, []int) { 2418 return file_routerrpc_router_proto_rawDescGZIP(), []int{30} 2419 } 2420 2421 func (x *PaymentStatus) GetState() PaymentState { 2422 if x != nil { 2423 return x.State 2424 } 2425 return PaymentState_IN_FLIGHT 2426 } 2427 2428 func (x *PaymentStatus) GetPreimage() []byte { 2429 if x != nil { 2430 return x.Preimage 2431 } 2432 return nil 2433 } 2434 2435 func (x *PaymentStatus) GetHtlcs() []*lnrpc.HTLCAttempt { 2436 if x != nil { 2437 return x.Htlcs 2438 } 2439 return nil 2440 } 2441 2442 type CircuitKey struct { 2443 state protoimpl.MessageState 2444 sizeCache protoimpl.SizeCache 2445 unknownFields protoimpl.UnknownFields 2446 2447 // / The id of the channel that the is part of this circuit. 2448 ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"` 2449 // / The index of the incoming htlc in the incoming channel. 2450 HtlcId uint64 `protobuf:"varint,2,opt,name=htlc_id,json=htlcId,proto3" json:"htlc_id,omitempty"` 2451 } 2452 2453 func (x *CircuitKey) Reset() { 2454 *x = CircuitKey{} 2455 if protoimpl.UnsafeEnabled { 2456 mi := &file_routerrpc_router_proto_msgTypes[31] 2457 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2458 ms.StoreMessageInfo(mi) 2459 } 2460 } 2461 2462 func (x *CircuitKey) String() string { 2463 return protoimpl.X.MessageStringOf(x) 2464 } 2465 2466 func (*CircuitKey) ProtoMessage() {} 2467 2468 func (x *CircuitKey) ProtoReflect() protoreflect.Message { 2469 mi := &file_routerrpc_router_proto_msgTypes[31] 2470 if protoimpl.UnsafeEnabled && x != nil { 2471 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2472 if ms.LoadMessageInfo() == nil { 2473 ms.StoreMessageInfo(mi) 2474 } 2475 return ms 2476 } 2477 return mi.MessageOf(x) 2478 } 2479 2480 // Deprecated: Use CircuitKey.ProtoReflect.Descriptor instead. 2481 func (*CircuitKey) Descriptor() ([]byte, []int) { 2482 return file_routerrpc_router_proto_rawDescGZIP(), []int{31} 2483 } 2484 2485 func (x *CircuitKey) GetChanId() uint64 { 2486 if x != nil { 2487 return x.ChanId 2488 } 2489 return 0 2490 } 2491 2492 func (x *CircuitKey) GetHtlcId() uint64 { 2493 if x != nil { 2494 return x.HtlcId 2495 } 2496 return 0 2497 } 2498 2499 type ForwardHtlcInterceptRequest struct { 2500 state protoimpl.MessageState 2501 sizeCache protoimpl.SizeCache 2502 unknownFields protoimpl.UnknownFields 2503 2504 // The key of this forwarded htlc. It defines the incoming channel id and 2505 // the index in this channel. 2506 IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"` 2507 // The incoming htlc amount. 2508 IncomingAmountMAtoms uint64 `protobuf:"varint,5,opt,name=incoming_amount_m_atoms,json=incomingAmountMAtoms,proto3" json:"incoming_amount_m_atoms,omitempty"` 2509 // The incoming htlc expiry. 2510 IncomingExpiry uint32 `protobuf:"varint,6,opt,name=incoming_expiry,json=incomingExpiry,proto3" json:"incoming_expiry,omitempty"` 2511 // The htlc payment hash. This value is not guaranteed to be unique per 2512 // request. 2513 PaymentHash []byte `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` 2514 // The requested outgoing channel id for this forwarded htlc. Because of 2515 // non-strict forwarding, this isn't necessarily the channel over which the 2516 // packet will be forwarded eventually. A different channel to the same peer 2517 // may be selected as well. 2518 OutgoingRequestedChanId uint64 `protobuf:"varint,7,opt,name=outgoing_requested_chan_id,json=outgoingRequestedChanId,proto3" json:"outgoing_requested_chan_id,omitempty"` 2519 // The outgoing htlc amount. 2520 OutgoingAmountMAtoms uint64 `protobuf:"varint,3,opt,name=outgoing_amount_m_atoms,json=outgoingAmountMAtoms,proto3" json:"outgoing_amount_m_atoms,omitempty"` 2521 // The outgoing htlc expiry. 2522 OutgoingExpiry uint32 `protobuf:"varint,4,opt,name=outgoing_expiry,json=outgoingExpiry,proto3" json:"outgoing_expiry,omitempty"` 2523 // Any custom records that were present in the payload. 2524 CustomRecords map[uint64][]byte `protobuf:"bytes,8,rep,name=custom_records,json=customRecords,proto3" json:"custom_records,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` 2525 // The onion blob for the next hop 2526 OnionBlob []byte `protobuf:"bytes,9,opt,name=onion_blob,json=onionBlob,proto3" json:"onion_blob,omitempty"` 2527 } 2528 2529 func (x *ForwardHtlcInterceptRequest) Reset() { 2530 *x = ForwardHtlcInterceptRequest{} 2531 if protoimpl.UnsafeEnabled { 2532 mi := &file_routerrpc_router_proto_msgTypes[32] 2533 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2534 ms.StoreMessageInfo(mi) 2535 } 2536 } 2537 2538 func (x *ForwardHtlcInterceptRequest) String() string { 2539 return protoimpl.X.MessageStringOf(x) 2540 } 2541 2542 func (*ForwardHtlcInterceptRequest) ProtoMessage() {} 2543 2544 func (x *ForwardHtlcInterceptRequest) ProtoReflect() protoreflect.Message { 2545 mi := &file_routerrpc_router_proto_msgTypes[32] 2546 if protoimpl.UnsafeEnabled && x != nil { 2547 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2548 if ms.LoadMessageInfo() == nil { 2549 ms.StoreMessageInfo(mi) 2550 } 2551 return ms 2552 } 2553 return mi.MessageOf(x) 2554 } 2555 2556 // Deprecated: Use ForwardHtlcInterceptRequest.ProtoReflect.Descriptor instead. 2557 func (*ForwardHtlcInterceptRequest) Descriptor() ([]byte, []int) { 2558 return file_routerrpc_router_proto_rawDescGZIP(), []int{32} 2559 } 2560 2561 func (x *ForwardHtlcInterceptRequest) GetIncomingCircuitKey() *CircuitKey { 2562 if x != nil { 2563 return x.IncomingCircuitKey 2564 } 2565 return nil 2566 } 2567 2568 func (x *ForwardHtlcInterceptRequest) GetIncomingAmountMAtoms() uint64 { 2569 if x != nil { 2570 return x.IncomingAmountMAtoms 2571 } 2572 return 0 2573 } 2574 2575 func (x *ForwardHtlcInterceptRequest) GetIncomingExpiry() uint32 { 2576 if x != nil { 2577 return x.IncomingExpiry 2578 } 2579 return 0 2580 } 2581 2582 func (x *ForwardHtlcInterceptRequest) GetPaymentHash() []byte { 2583 if x != nil { 2584 return x.PaymentHash 2585 } 2586 return nil 2587 } 2588 2589 func (x *ForwardHtlcInterceptRequest) GetOutgoingRequestedChanId() uint64 { 2590 if x != nil { 2591 return x.OutgoingRequestedChanId 2592 } 2593 return 0 2594 } 2595 2596 func (x *ForwardHtlcInterceptRequest) GetOutgoingAmountMAtoms() uint64 { 2597 if x != nil { 2598 return x.OutgoingAmountMAtoms 2599 } 2600 return 0 2601 } 2602 2603 func (x *ForwardHtlcInterceptRequest) GetOutgoingExpiry() uint32 { 2604 if x != nil { 2605 return x.OutgoingExpiry 2606 } 2607 return 0 2608 } 2609 2610 func (x *ForwardHtlcInterceptRequest) GetCustomRecords() map[uint64][]byte { 2611 if x != nil { 2612 return x.CustomRecords 2613 } 2614 return nil 2615 } 2616 2617 func (x *ForwardHtlcInterceptRequest) GetOnionBlob() []byte { 2618 if x != nil { 2619 return x.OnionBlob 2620 } 2621 return nil 2622 } 2623 2624 // * 2625 // ForwardHtlcInterceptResponse enables the caller to resolve a previously hold 2626 // forward. The caller can choose either to: 2627 // - `Resume`: Execute the default behavior (usually forward). 2628 // - `Reject`: Fail the htlc backwards. 2629 // - `Settle`: Settle this htlc with a given preimage. 2630 type ForwardHtlcInterceptResponse struct { 2631 state protoimpl.MessageState 2632 sizeCache protoimpl.SizeCache 2633 unknownFields protoimpl.UnknownFields 2634 2635 // * 2636 // The key of this forwarded htlc. It defines the incoming channel id and 2637 // the index in this channel. 2638 IncomingCircuitKey *CircuitKey `protobuf:"bytes,1,opt,name=incoming_circuit_key,json=incomingCircuitKey,proto3" json:"incoming_circuit_key,omitempty"` 2639 // The resolve action for this intercepted htlc. 2640 Action ResolveHoldForwardAction `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ResolveHoldForwardAction" json:"action,omitempty"` 2641 // The preimage in case the resolve action is Settle. 2642 Preimage []byte `protobuf:"bytes,3,opt,name=preimage,proto3" json:"preimage,omitempty"` 2643 } 2644 2645 func (x *ForwardHtlcInterceptResponse) Reset() { 2646 *x = ForwardHtlcInterceptResponse{} 2647 if protoimpl.UnsafeEnabled { 2648 mi := &file_routerrpc_router_proto_msgTypes[33] 2649 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2650 ms.StoreMessageInfo(mi) 2651 } 2652 } 2653 2654 func (x *ForwardHtlcInterceptResponse) String() string { 2655 return protoimpl.X.MessageStringOf(x) 2656 } 2657 2658 func (*ForwardHtlcInterceptResponse) ProtoMessage() {} 2659 2660 func (x *ForwardHtlcInterceptResponse) ProtoReflect() protoreflect.Message { 2661 mi := &file_routerrpc_router_proto_msgTypes[33] 2662 if protoimpl.UnsafeEnabled && x != nil { 2663 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2664 if ms.LoadMessageInfo() == nil { 2665 ms.StoreMessageInfo(mi) 2666 } 2667 return ms 2668 } 2669 return mi.MessageOf(x) 2670 } 2671 2672 // Deprecated: Use ForwardHtlcInterceptResponse.ProtoReflect.Descriptor instead. 2673 func (*ForwardHtlcInterceptResponse) Descriptor() ([]byte, []int) { 2674 return file_routerrpc_router_proto_rawDescGZIP(), []int{33} 2675 } 2676 2677 func (x *ForwardHtlcInterceptResponse) GetIncomingCircuitKey() *CircuitKey { 2678 if x != nil { 2679 return x.IncomingCircuitKey 2680 } 2681 return nil 2682 } 2683 2684 func (x *ForwardHtlcInterceptResponse) GetAction() ResolveHoldForwardAction { 2685 if x != nil { 2686 return x.Action 2687 } 2688 return ResolveHoldForwardAction_SETTLE 2689 } 2690 2691 func (x *ForwardHtlcInterceptResponse) GetPreimage() []byte { 2692 if x != nil { 2693 return x.Preimage 2694 } 2695 return nil 2696 } 2697 2698 type UpdateChanStatusRequest struct { 2699 state protoimpl.MessageState 2700 sizeCache protoimpl.SizeCache 2701 unknownFields protoimpl.UnknownFields 2702 2703 ChanPoint *lnrpc.ChannelPoint `protobuf:"bytes,1,opt,name=chan_point,json=chanPoint,proto3" json:"chan_point,omitempty"` 2704 Action ChanStatusAction `protobuf:"varint,2,opt,name=action,proto3,enum=routerrpc.ChanStatusAction" json:"action,omitempty"` 2705 } 2706 2707 func (x *UpdateChanStatusRequest) Reset() { 2708 *x = UpdateChanStatusRequest{} 2709 if protoimpl.UnsafeEnabled { 2710 mi := &file_routerrpc_router_proto_msgTypes[34] 2711 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2712 ms.StoreMessageInfo(mi) 2713 } 2714 } 2715 2716 func (x *UpdateChanStatusRequest) String() string { 2717 return protoimpl.X.MessageStringOf(x) 2718 } 2719 2720 func (*UpdateChanStatusRequest) ProtoMessage() {} 2721 2722 func (x *UpdateChanStatusRequest) ProtoReflect() protoreflect.Message { 2723 mi := &file_routerrpc_router_proto_msgTypes[34] 2724 if protoimpl.UnsafeEnabled && x != nil { 2725 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2726 if ms.LoadMessageInfo() == nil { 2727 ms.StoreMessageInfo(mi) 2728 } 2729 return ms 2730 } 2731 return mi.MessageOf(x) 2732 } 2733 2734 // Deprecated: Use UpdateChanStatusRequest.ProtoReflect.Descriptor instead. 2735 func (*UpdateChanStatusRequest) Descriptor() ([]byte, []int) { 2736 return file_routerrpc_router_proto_rawDescGZIP(), []int{34} 2737 } 2738 2739 func (x *UpdateChanStatusRequest) GetChanPoint() *lnrpc.ChannelPoint { 2740 if x != nil { 2741 return x.ChanPoint 2742 } 2743 return nil 2744 } 2745 2746 func (x *UpdateChanStatusRequest) GetAction() ChanStatusAction { 2747 if x != nil { 2748 return x.Action 2749 } 2750 return ChanStatusAction_ENABLE 2751 } 2752 2753 type UpdateChanStatusResponse struct { 2754 state protoimpl.MessageState 2755 sizeCache protoimpl.SizeCache 2756 unknownFields protoimpl.UnknownFields 2757 } 2758 2759 func (x *UpdateChanStatusResponse) Reset() { 2760 *x = UpdateChanStatusResponse{} 2761 if protoimpl.UnsafeEnabled { 2762 mi := &file_routerrpc_router_proto_msgTypes[35] 2763 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2764 ms.StoreMessageInfo(mi) 2765 } 2766 } 2767 2768 func (x *UpdateChanStatusResponse) String() string { 2769 return protoimpl.X.MessageStringOf(x) 2770 } 2771 2772 func (*UpdateChanStatusResponse) ProtoMessage() {} 2773 2774 func (x *UpdateChanStatusResponse) ProtoReflect() protoreflect.Message { 2775 mi := &file_routerrpc_router_proto_msgTypes[35] 2776 if protoimpl.UnsafeEnabled && x != nil { 2777 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2778 if ms.LoadMessageInfo() == nil { 2779 ms.StoreMessageInfo(mi) 2780 } 2781 return ms 2782 } 2783 return mi.MessageOf(x) 2784 } 2785 2786 // Deprecated: Use UpdateChanStatusResponse.ProtoReflect.Descriptor instead. 2787 func (*UpdateChanStatusResponse) Descriptor() ([]byte, []int) { 2788 return file_routerrpc_router_proto_rawDescGZIP(), []int{35} 2789 } 2790 2791 var File_routerrpc_router_proto protoreflect.FileDescriptor 2792 2793 var file_routerrpc_router_proto_rawDesc = []byte{ 2794 0x0a, 0x16, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2f, 0x72, 0x6f, 0x75, 0x74, 2795 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 2796 0x72, 0x70, 0x63, 0x1a, 0x0f, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x70, 2797 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe9, 0x07, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 2798 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 2799 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12, 2800 0x10, 0x0a, 0x03, 0x61, 0x6d, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x61, 0x6d, 2801 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 2802 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x6d, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 2803 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 2804 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 2805 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 2806 0x74, 0x76, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 2807 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x74, 0x76, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x21, 2808 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x14, 2809 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 2810 0x72, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 2811 0x75, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x79, 0x6d, 2812 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x69, 2813 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 2814 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x63, 0x6f, 2815 0x6e, 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x66, 0x65, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 2816 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x65, 2817 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 0x29, 0x0a, 0x11, 0x66, 2818 0x65, 0x65, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 2819 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x66, 0x65, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 2820 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 0x2e, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 2821 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 2822 0x42, 0x04, 0x18, 0x01, 0x30, 0x01, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 2823 0x43, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 2824 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 2825 0x04, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x49, 2826 0x64, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x6f, 0x70, 0x5f, 0x70, 2827 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6c, 0x61, 0x73, 2828 0x74, 0x48, 0x6f, 0x70, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 2829 0x74, 0x76, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 2830 0x63, 0x6c, 0x74, 0x76, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x31, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 2831 0x74, 0x65, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 2832 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, 0x6e, 0x74, 2833 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x64, 0x0a, 0x13, 2834 0x64, 0x65, 0x73, 0x74, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 2835 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x6f, 0x75, 0x74, 2836 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 2837 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x43, 0x75, 0x73, 2838 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 2839 0x11, 0x64, 0x65, 0x73, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 2840 0x64, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x73, 0x65, 0x6c, 0x66, 2841 0x5f, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 2842 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x65, 0x6c, 0x66, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 2843 0x12, 0x36, 0x0a, 0x0d, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 2844 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 2845 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x69, 0x74, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 2846 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 2847 0x70, 0x61, 0x72, 0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6d, 0x61, 0x78, 2848 0x50, 0x61, 0x72, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x6f, 0x5f, 0x69, 0x6e, 0x66, 0x6c, 2849 0x69, 0x67, 0x68, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 2850 0x28, 0x08, 0x52, 0x11, 0x6e, 0x6f, 0x49, 0x6e, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 2851 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x68, 0x61, 2852 0x72, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x15, 2853 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6d, 0x61, 0x78, 0x53, 0x68, 0x61, 0x72, 0x64, 0x53, 0x69, 2854 0x7a, 0x65, 0x4d, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6d, 0x70, 0x18, 2855 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x61, 0x6d, 0x70, 0x1a, 0x44, 0x0a, 0x16, 0x44, 0x65, 2856 0x73, 0x74, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 2857 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 2858 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 2859 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 2860 0x22, 0x68, 0x0a, 0x13, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 2861 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 2862 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 2863 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x6f, 2864 0x5f, 0x69, 0x6e, 0x66, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 2865 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x6e, 0x6f, 0x49, 0x6e, 0x66, 0x6c, 0x69, 2866 0x67, 0x68, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x0f, 0x52, 0x6f, 2867 0x75, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 2868 0x04, 0x64, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x65, 0x73, 2869 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x6d, 0x74, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x02, 2870 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x61, 0x6d, 0x74, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x22, 0x68, 2871 0x0a, 0x10, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 2872 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 2873 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 2874 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x4d, 0x61, 0x74, 0x6f, 0x6d, 0x73, 2875 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x64, 0x65, 2876 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x4c, 2877 0x6f, 0x63, 0x6b, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x5b, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 2878 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 2879 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 2880 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 2881 0x68, 0x12, 0x22, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 2882 0x32, 0x0c, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x05, 2883 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x5b, 0x0a, 0x13, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 2884 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 2885 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 2886 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x07, 0x66, 0x61, 0x69, 0x6c, 2887 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 2888 0x63, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 2889 0x72, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 2890 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2891 0x22, 0x1d, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 2892 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 2893 0x1c, 0x0a, 0x1a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 2894 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x51, 0x0a, 2895 0x1b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 2896 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x05, 2897 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x6f, 2898 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x48, 0x69, 0x73, 0x74, 2899 0x6f, 0x72, 0x79, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 2900 0x22, 0x62, 0x0a, 0x1c, 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 2901 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 2902 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 2903 0x16, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 2904 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x14, 2905 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 2906 0x6f, 0x72, 0x63, 0x65, 0x22, 0x1f, 0x0a, 0x1d, 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 2907 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 2908 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x0b, 0x50, 0x61, 0x69, 0x72, 0x48, 0x69, 2909 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x72, 2910 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x72, 2911 0x6f, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 2912 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x54, 0x6f, 0x12, 0x2d, 0x0a, 0x07, 0x68, 2913 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 2914 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x44, 0x61, 0x74, 2915 0x61, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 2916 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x06, 2917 0x10, 0x07, 0x22, 0xfa, 0x01, 0x0a, 0x08, 0x50, 0x61, 0x69, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 2918 0x1b, 0x0a, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 2919 0x28, 0x03, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 2920 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x02, 2921 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x41, 0x6d, 0x74, 0x41, 0x74, 0x6f, 2922 0x6d, 0x73, 0x12, 0x27, 0x0a, 0x10, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 2923 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x66, 0x61, 2924 0x69, 0x6c, 0x41, 0x6d, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 2925 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 2926 0x03, 0x52, 0x0b, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 2927 0x0a, 0x11, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x61, 0x74, 2928 0x6f, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x73, 0x75, 0x63, 0x63, 0x65, 2929 0x73, 0x73, 0x41, 0x6d, 0x74, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x75, 2930 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 2931 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 2932 0x41, 0x6d, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 2933 0x20, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 2934 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 2935 0x74, 0x22, 0x5a, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 2936 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 2937 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 2938 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 2939 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 2940 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x59, 0x0a, 2941 0x1e, 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 2942 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 2943 0x37, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 2944 0x1f, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x4d, 0x69, 0x73, 0x73, 2945 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 2946 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x21, 0x0a, 0x1f, 0x53, 0x65, 0x74, 0x4d, 2947 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 2948 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x14, 2949 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 2950 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x68, 0x61, 0x6c, 0x66, 0x5f, 0x6c, 0x69, 0x66, 2951 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 2952 0x0f, 0x68, 0x61, 0x6c, 0x66, 0x4c, 0x69, 0x66, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 2953 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x6f, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 2954 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x68, 0x6f, 0x70, 0x50, 0x72, 2955 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 2956 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 2957 0x74, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x79, 2958 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 2959 0x28, 0x0d, 0x52, 0x15, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x61, 0x79, 0x6d, 0x65, 2960 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x6d, 0x69, 0x6e, 2961 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x6c, 2962 0x61, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 2963 0x04, 0x52, 0x1b, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 2964 0x65, 0x52, 0x65, 0x6c, 0x61, 0x78, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x6f, 2965 0x0a, 0x17, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 2966 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x6f, 2967 0x6d, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x72, 2968 0x6f, 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x6e, 0x6f, 0x64, 2969 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x74, 0x6f, 0x4e, 0x6f, 0x64, 0x65, 0x12, 2970 0x1e, 0x0a, 0x0b, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x03, 2971 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x6d, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x22, 2972 0x6b, 0x0a, 0x18, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 2973 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 2974 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 2975 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2d, 0x0a, 2976 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 2977 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x44, 2978 0x61, 0x74, 0x61, 0x52, 0x07, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xcf, 0x01, 0x0a, 2979 0x11, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 2980 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 2981 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x61, 0x6d, 0x74, 0x4d, 0x41, 0x74, 0x6f, 2982 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x74, 0x76, 2983 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x66, 0x69, 2984 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x74, 0x76, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x10, 2985 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 2986 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x42, 0x02, 0x30, 0x01, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x67, 2987 0x6f, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 2988 0x70, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, 0x52, 2989 0x0a, 0x68, 0x6f, 0x70, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 2990 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 2991 0x0c, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x64, 0x64, 0x72, 0x22, 0x38, 2992 0x0a, 0x12, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 2993 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 2994 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 2995 0x65, 0x52, 0x05, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x22, 0x1c, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x73, 2996 0x63, 0x72, 0x69, 0x62, 0x65, 0x48, 0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 2997 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xf6, 0x04, 0x0a, 0x09, 0x48, 0x74, 0x6c, 0x63, 0x45, 2998 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 2999 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 3000 0x04, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 3001 0x65, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 3002 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 3003 0x04, 0x52, 0x11, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x43, 0x68, 0x61, 0x6e, 0x6e, 3004 0x65, 0x6c, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 3005 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 3006 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x64, 0x12, 0x28, 3007 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 3008 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 3009 0x6e, 0x67, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 3010 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 3011 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x65, 3012 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 3013 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c, 0x63, 3014 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 3015 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x66, 0x6f, 3016 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 3017 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x6f, 3018 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x66, 0x6f, 3019 0x72, 0x77, 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x12, 0x66, 0x6f, 3020 0x72, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 3021 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 3022 0x70, 0x63, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 3023 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, 3024 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0c, 0x73, 0x65, 0x74, 0x74, 0x6c, 3025 0x65, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 3026 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 3027 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x45, 3028 0x76, 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x66, 0x61, 0x69, 3029 0x6c, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 3030 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 3031 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x69, 0x6e, 0x6b, 0x46, 3032 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 3033 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 3034 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 3035 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x4f, 0x52, 3036 0x57, 0x41, 0x52, 0x44, 0x10, 0x03, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 3037 0xc6, 0x01, 0x0a, 0x08, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x11, 3038 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 3039 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 3040 0x67, 0x54, 0x69, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x75, 0x74, 3041 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 3042 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x54, 0x69, 3043 0x6d, 0x65, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2f, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 3044 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 0x03, 3045 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x41, 0x6d, 3046 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 0x2f, 0x0a, 0x14, 0x6f, 0x75, 0x74, 0x67, 0x6f, 3047 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 0x6f, 0x6d, 0x73, 0x18, 3048 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x41, 3049 0x6d, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x22, 0x37, 0x0a, 0x0c, 0x46, 0x6f, 0x72, 0x77, 3050 0x61, 0x72, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 3051 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 3052 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 3053 0x6f, 0x22, 0x12, 0x0a, 0x10, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x46, 0x61, 0x69, 0x6c, 3054 0x45, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x29, 0x0a, 0x0b, 0x53, 0x65, 0x74, 0x74, 0x6c, 0x65, 0x45, 3055 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 3056 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 3057 0x22, 0xdf, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x6e, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x45, 0x76, 0x65, 3058 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 3059 0x32, 0x13, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c, 3060 0x63, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x0c, 0x77, 3061 0x69, 0x72, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 3062 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 3063 0x65, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x77, 3064 0x69, 0x72, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x3f, 0x0a, 0x0e, 0x66, 0x61, 3065 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 3066 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 3067 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x0d, 0x66, 0x61, 3068 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x66, 3069 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 3070 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x72, 0x69, 3071 0x6e, 0x67, 0x22, 0x8a, 0x01, 0x0a, 0x0d, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 3072 0x61, 0x74, 0x75, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 3073 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 3074 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 3075 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 3076 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x12, 3077 0x28, 0x0a, 0x05, 0x68, 0x74, 0x6c, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 3078 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x54, 0x4c, 0x43, 0x41, 0x74, 0x74, 0x65, 0x6d, 3079 0x70, 0x74, 0x52, 0x05, 0x68, 0x74, 0x6c, 0x63, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 3080 0x3e, 0x0a, 0x0a, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 3081 0x07, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 3082 0x63, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x69, 3083 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x68, 0x74, 0x6c, 0x63, 0x49, 0x64, 0x22, 3084 0xc9, 0x04, 0x0a, 0x1b, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 3085 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 3086 0x47, 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x69, 0x72, 0x63, 3087 0x75, 0x69, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 3088 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 3089 0x74, 0x4b, 0x65, 0x79, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x69, 3090 0x72, 0x63, 0x75, 0x69, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x17, 0x69, 0x6e, 0x63, 0x6f, 3091 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 3092 0x6f, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 3093 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 3094 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x69, 3095 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 3096 0x6e, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 3097 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 3098 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x1a, 0x6f, 3099 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 3100 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 3101 0x17, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 3102 0x65, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x75, 0x74, 0x67, 3103 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x5f, 0x61, 0x74, 3104 0x6f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6f, 0x75, 0x74, 0x67, 0x6f, 3105 0x69, 0x6e, 0x67, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x41, 0x74, 0x6f, 0x6d, 0x73, 0x12, 3106 0x27, 0x0a, 0x0f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x69, 3107 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 3108 0x6e, 0x67, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x60, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 3109 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 3110 0x32, 0x39, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x6f, 0x72, 3111 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 3112 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x52, 3113 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x75, 0x73, 3114 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x6e, 3115 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 3116 0x6f, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x62, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x75, 0x73, 3117 0x74, 0x6f, 0x6d, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 3118 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 3119 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 3120 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc0, 0x01, 0x0a, 0x1c, 3121 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 3122 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x14, 3123 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 3124 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x6f, 0x75, 3125 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x4b, 0x65, 3126 0x79, 0x52, 0x12, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x69, 0x72, 0x63, 0x75, 3127 0x69, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x3b, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 3128 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 3129 0x63, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x48, 0x6f, 0x6c, 0x64, 0x46, 0x6f, 0x72, 3130 0x77, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 3131 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 3132 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x82, 3133 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 0x61, 3134 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0a, 0x63, 0x68, 3135 0x61, 0x6e, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 3136 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x50, 0x6f, 3137 0x69, 0x6e, 0x74, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x33, 3138 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 3139 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x53, 3140 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x63, 0x74, 3141 0x69, 0x6f, 0x6e, 0x22, 0x1a, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 3142 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 3143 0x81, 0x04, 0x0a, 0x0d, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 3144 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 3145 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x10, 0x0a, 3146 0x0c, 0x4f, 0x4e, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x02, 0x12, 3147 0x15, 0x0a, 0x11, 0x4c, 0x49, 0x4e, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x4c, 0x49, 0x47, 3148 0x49, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x4e, 0x5f, 0x43, 0x48, 0x41, 3149 0x49, 0x4e, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 3150 0x48, 0x54, 0x4c, 0x43, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x53, 0x5f, 0x4d, 0x41, 0x58, 3151 0x10, 0x05, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 3152 0x4e, 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 3153 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x57, 0x41, 3154 0x52, 0x44, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x48, 0x54, 0x4c, 0x43, 0x5f, 0x41, 0x44, 0x44, 3155 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x4f, 0x52, 3156 0x57, 0x41, 0x52, 0x44, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x09, 3157 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 3158 0x45, 0x4c, 0x45, 0x44, 0x10, 0x0a, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 3159 0x45, 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x52, 0x50, 0x41, 0x49, 0x44, 0x10, 0x0b, 0x12, 0x1b, 0x0a, 3160 0x17, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x49, 0x52, 0x59, 0x5f, 3161 0x54, 0x4f, 0x4f, 0x5f, 0x53, 0x4f, 0x4f, 0x4e, 0x10, 0x0c, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 3162 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x0d, 3163 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 3164 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x0e, 0x12, 0x14, 0x0a, 0x10, 0x41, 0x44, 0x44, 3165 0x52, 0x45, 0x53, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x0f, 0x12, 3166 0x16, 0x0a, 0x12, 0x53, 0x45, 0x54, 0x5f, 0x54, 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x4d, 0x49, 0x53, 3167 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x10, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x54, 0x5f, 0x54, 3168 0x4f, 0x54, 0x41, 0x4c, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x11, 0x12, 0x10, 3169 0x0a, 0x0c, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x50, 0x41, 0x49, 0x44, 0x10, 0x12, 3170 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x4f, 3171 0x49, 0x43, 0x45, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 3172 0x5f, 0x4b, 0x45, 0x59, 0x53, 0x45, 0x4e, 0x44, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x50, 3173 0x50, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x15, 0x12, 3174 0x12, 0x0a, 0x0e, 0x43, 0x49, 0x52, 0x43, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x52, 0x4f, 0x55, 0x54, 3175 0x45, 0x10, 0x16, 0x2a, 0xae, 0x01, 0x0a, 0x0c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 3176 0x74, 0x61, 0x74, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x5f, 0x46, 0x4c, 0x49, 0x47, 0x48, 3177 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x55, 0x43, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 3178 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x54, 0x49, 0x4d, 3179 0x45, 0x4f, 0x55, 0x54, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 3180 0x5f, 0x4e, 0x4f, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x46, 3181 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x24, 0x0a, 3182 0x20, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x52, 0x52, 0x45, 0x43, 3183 0x54, 0x5f, 0x50, 0x41, 0x59, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x54, 0x41, 0x49, 0x4c, 3184 0x53, 0x10, 0x05, 0x12, 0x1f, 0x0a, 0x1b, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x5f, 0x49, 0x4e, 3185 0x53, 0x55, 0x46, 0x46, 0x49, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 3186 0x43, 0x45, 0x10, 0x06, 0x2a, 0x3c, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x48, 3187 0x6f, 0x6c, 0x64, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 3188 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x54, 0x54, 0x4c, 0x45, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 3189 0x46, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45, 3190 0x10, 0x02, 0x2a, 0x35, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 3191 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 3192 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 3193 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x32, 0xf1, 0x0b, 0x0a, 0x06, 0x52, 0x6f, 3194 0x75, 0x74, 0x65, 0x72, 0x12, 0x40, 0x0a, 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 3195 0x65, 0x6e, 0x74, 0x56, 0x32, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 3196 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 3197 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x79, 3198 0x6d, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 3199 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x56, 0x32, 0x12, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 3200 0x72, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 3201 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6c, 0x6e, 0x72, 0x70, 0x63, 3202 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x10, 0x45, 0x73, 3203 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x65, 0x65, 0x12, 0x1a, 3204 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 3205 0x46, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x72, 0x6f, 0x75, 3206 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x46, 0x65, 0x65, 0x52, 3207 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 0x54, 3208 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 3209 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 3210 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 3211 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 3212 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x42, 0x0a, 0x0d, 0x53, 0x65, 3213 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x56, 0x32, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 3214 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x6f, 3215 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x12, 0x2e, 0x6c, 0x6e, 0x72, 3216 0x70, 0x63, 0x2e, 0x48, 0x54, 0x4c, 0x43, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x64, 3217 0x0a, 0x13, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 3218 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 3219 0x63, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 3220 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 3221 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x73, 0x65, 0x74, 0x4d, 0x69, 3222 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 3223 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 3224 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x72, 0x6f, 3225 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 3226 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 3227 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51, 3228 0x75, 0x65, 0x72, 0x79, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 3229 0x6f, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x15, 0x58, 0x49, 3230 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 3231 0x72, 0x6f, 0x6c, 0x12, 0x27, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 3232 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 3233 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 3234 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x58, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 3235 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x52, 0x65, 3236 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 3237 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 3238 0x67, 0x12, 0x29, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 3239 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 3240 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 3241 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 3242 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 3243 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x70, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x4d, 3244 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 3245 0x66, 0x69, 0x67, 0x12, 0x29, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 3246 0x53, 0x65, 0x74, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 3247 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 3248 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x74, 0x4d, 0x69, 3249 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 3250 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x10, 0x51, 0x75, 3251 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, 3252 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 3253 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 3254 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x51, 3255 0x75, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 3256 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x42, 0x75, 0x69, 0x6c, 0x64, 3257 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x1c, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 3258 0x63, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 3259 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 3260 0x42, 0x75, 0x69, 0x6c, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 3261 0x73, 0x65, 0x12, 0x54, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48, 3262 0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x6f, 0x75, 0x74, 3263 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x48, 3264 0x74, 0x6c, 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 3265 0x1a, 0x14, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x48, 0x74, 0x6c, 3266 0x63, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x30, 0x01, 0x12, 0x4d, 0x0a, 0x0b, 0x53, 0x65, 0x6e, 0x64, 3267 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 3268 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 3269 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 3270 0x70, 0x63, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 3271 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x4f, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x63, 0x6b, 3272 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 3273 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 3274 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 3275 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 3276 0x73, 0x22, 0x03, 0x88, 0x02, 0x01, 0x30, 0x01, 0x12, 0x66, 0x0a, 0x0f, 0x48, 0x74, 0x6c, 0x63, 3277 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x27, 0x2e, 0x72, 0x6f, 3278 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 3279 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 3280 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x26, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 3281 0x2e, 0x46, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x48, 0x74, 0x6c, 0x63, 0x49, 0x6e, 0x74, 0x65, 3282 0x72, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x28, 0x01, 0x30, 0x01, 3283 0x12, 0x5b, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 3284 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 3285 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 3286 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 3287 0x72, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x53, 3288 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2a, 0x5a, 3289 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x63, 0x72, 3290 0x65, 0x64, 0x2f, 0x64, 0x63, 0x72, 0x6c, 0x6e, 0x64, 0x2f, 0x6c, 0x6e, 0x72, 0x70, 0x63, 0x2f, 3291 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 3292 0x33, 3293 } 3294 3295 var ( 3296 file_routerrpc_router_proto_rawDescOnce sync.Once 3297 file_routerrpc_router_proto_rawDescData = file_routerrpc_router_proto_rawDesc 3298 ) 3299 3300 func file_routerrpc_router_proto_rawDescGZIP() []byte { 3301 file_routerrpc_router_proto_rawDescOnce.Do(func() { 3302 file_routerrpc_router_proto_rawDescData = protoimpl.X.CompressGZIP(file_routerrpc_router_proto_rawDescData) 3303 }) 3304 return file_routerrpc_router_proto_rawDescData 3305 } 3306 3307 var file_routerrpc_router_proto_enumTypes = make([]protoimpl.EnumInfo, 5) 3308 var file_routerrpc_router_proto_msgTypes = make([]protoimpl.MessageInfo, 38) 3309 var file_routerrpc_router_proto_goTypes = []interface{}{ 3310 (FailureDetail)(0), // 0: routerrpc.FailureDetail 3311 (PaymentState)(0), // 1: routerrpc.PaymentState 3312 (ResolveHoldForwardAction)(0), // 2: routerrpc.ResolveHoldForwardAction 3313 (ChanStatusAction)(0), // 3: routerrpc.ChanStatusAction 3314 (HtlcEvent_EventType)(0), // 4: routerrpc.HtlcEvent.EventType 3315 (*SendPaymentRequest)(nil), // 5: routerrpc.SendPaymentRequest 3316 (*TrackPaymentRequest)(nil), // 6: routerrpc.TrackPaymentRequest 3317 (*RouteFeeRequest)(nil), // 7: routerrpc.RouteFeeRequest 3318 (*RouteFeeResponse)(nil), // 8: routerrpc.RouteFeeResponse 3319 (*SendToRouteRequest)(nil), // 9: routerrpc.SendToRouteRequest 3320 (*SendToRouteResponse)(nil), // 10: routerrpc.SendToRouteResponse 3321 (*ResetMissionControlRequest)(nil), // 11: routerrpc.ResetMissionControlRequest 3322 (*ResetMissionControlResponse)(nil), // 12: routerrpc.ResetMissionControlResponse 3323 (*QueryMissionControlRequest)(nil), // 13: routerrpc.QueryMissionControlRequest 3324 (*QueryMissionControlResponse)(nil), // 14: routerrpc.QueryMissionControlResponse 3325 (*XImportMissionControlRequest)(nil), // 15: routerrpc.XImportMissionControlRequest 3326 (*XImportMissionControlResponse)(nil), // 16: routerrpc.XImportMissionControlResponse 3327 (*PairHistory)(nil), // 17: routerrpc.PairHistory 3328 (*PairData)(nil), // 18: routerrpc.PairData 3329 (*GetMissionControlConfigRequest)(nil), // 19: routerrpc.GetMissionControlConfigRequest 3330 (*GetMissionControlConfigResponse)(nil), // 20: routerrpc.GetMissionControlConfigResponse 3331 (*SetMissionControlConfigRequest)(nil), // 21: routerrpc.SetMissionControlConfigRequest 3332 (*SetMissionControlConfigResponse)(nil), // 22: routerrpc.SetMissionControlConfigResponse 3333 (*MissionControlConfig)(nil), // 23: routerrpc.MissionControlConfig 3334 (*QueryProbabilityRequest)(nil), // 24: routerrpc.QueryProbabilityRequest 3335 (*QueryProbabilityResponse)(nil), // 25: routerrpc.QueryProbabilityResponse 3336 (*BuildRouteRequest)(nil), // 26: routerrpc.BuildRouteRequest 3337 (*BuildRouteResponse)(nil), // 27: routerrpc.BuildRouteResponse 3338 (*SubscribeHtlcEventsRequest)(nil), // 28: routerrpc.SubscribeHtlcEventsRequest 3339 (*HtlcEvent)(nil), // 29: routerrpc.HtlcEvent 3340 (*HtlcInfo)(nil), // 30: routerrpc.HtlcInfo 3341 (*ForwardEvent)(nil), // 31: routerrpc.ForwardEvent 3342 (*ForwardFailEvent)(nil), // 32: routerrpc.ForwardFailEvent 3343 (*SettleEvent)(nil), // 33: routerrpc.SettleEvent 3344 (*LinkFailEvent)(nil), // 34: routerrpc.LinkFailEvent 3345 (*PaymentStatus)(nil), // 35: routerrpc.PaymentStatus 3346 (*CircuitKey)(nil), // 36: routerrpc.CircuitKey 3347 (*ForwardHtlcInterceptRequest)(nil), // 37: routerrpc.ForwardHtlcInterceptRequest 3348 (*ForwardHtlcInterceptResponse)(nil), // 38: routerrpc.ForwardHtlcInterceptResponse 3349 (*UpdateChanStatusRequest)(nil), // 39: routerrpc.UpdateChanStatusRequest 3350 (*UpdateChanStatusResponse)(nil), // 40: routerrpc.UpdateChanStatusResponse 3351 nil, // 41: routerrpc.SendPaymentRequest.DestCustomRecordsEntry 3352 nil, // 42: routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry 3353 (*lnrpc.RouteHint)(nil), // 43: lnrpc.RouteHint 3354 (lnrpc.FeatureBit)(0), // 44: lnrpc.FeatureBit 3355 (*lnrpc.Route)(nil), // 45: lnrpc.Route 3356 (*lnrpc.Failure)(nil), // 46: lnrpc.Failure 3357 (lnrpc.Failure_FailureCode)(0), // 47: lnrpc.Failure.FailureCode 3358 (*lnrpc.HTLCAttempt)(nil), // 48: lnrpc.HTLCAttempt 3359 (*lnrpc.ChannelPoint)(nil), // 49: lnrpc.ChannelPoint 3360 (*lnrpc.Payment)(nil), // 50: lnrpc.Payment 3361 } 3362 var file_routerrpc_router_proto_depIdxs = []int32{ 3363 43, // 0: routerrpc.SendPaymentRequest.route_hints:type_name -> lnrpc.RouteHint 3364 41, // 1: routerrpc.SendPaymentRequest.dest_custom_records:type_name -> routerrpc.SendPaymentRequest.DestCustomRecordsEntry 3365 44, // 2: routerrpc.SendPaymentRequest.dest_features:type_name -> lnrpc.FeatureBit 3366 45, // 3: routerrpc.SendToRouteRequest.route:type_name -> lnrpc.Route 3367 46, // 4: routerrpc.SendToRouteResponse.failure:type_name -> lnrpc.Failure 3368 17, // 5: routerrpc.QueryMissionControlResponse.pairs:type_name -> routerrpc.PairHistory 3369 17, // 6: routerrpc.XImportMissionControlRequest.pairs:type_name -> routerrpc.PairHistory 3370 18, // 7: routerrpc.PairHistory.history:type_name -> routerrpc.PairData 3371 23, // 8: routerrpc.GetMissionControlConfigResponse.config:type_name -> routerrpc.MissionControlConfig 3372 23, // 9: routerrpc.SetMissionControlConfigRequest.config:type_name -> routerrpc.MissionControlConfig 3373 18, // 10: routerrpc.QueryProbabilityResponse.history:type_name -> routerrpc.PairData 3374 45, // 11: routerrpc.BuildRouteResponse.route:type_name -> lnrpc.Route 3375 4, // 12: routerrpc.HtlcEvent.event_type:type_name -> routerrpc.HtlcEvent.EventType 3376 31, // 13: routerrpc.HtlcEvent.forward_event:type_name -> routerrpc.ForwardEvent 3377 32, // 14: routerrpc.HtlcEvent.forward_fail_event:type_name -> routerrpc.ForwardFailEvent 3378 33, // 15: routerrpc.HtlcEvent.settle_event:type_name -> routerrpc.SettleEvent 3379 34, // 16: routerrpc.HtlcEvent.link_fail_event:type_name -> routerrpc.LinkFailEvent 3380 30, // 17: routerrpc.ForwardEvent.info:type_name -> routerrpc.HtlcInfo 3381 30, // 18: routerrpc.LinkFailEvent.info:type_name -> routerrpc.HtlcInfo 3382 47, // 19: routerrpc.LinkFailEvent.wire_failure:type_name -> lnrpc.Failure.FailureCode 3383 0, // 20: routerrpc.LinkFailEvent.failure_detail:type_name -> routerrpc.FailureDetail 3384 1, // 21: routerrpc.PaymentStatus.state:type_name -> routerrpc.PaymentState 3385 48, // 22: routerrpc.PaymentStatus.htlcs:type_name -> lnrpc.HTLCAttempt 3386 36, // 23: routerrpc.ForwardHtlcInterceptRequest.incoming_circuit_key:type_name -> routerrpc.CircuitKey 3387 42, // 24: routerrpc.ForwardHtlcInterceptRequest.custom_records:type_name -> routerrpc.ForwardHtlcInterceptRequest.CustomRecordsEntry 3388 36, // 25: routerrpc.ForwardHtlcInterceptResponse.incoming_circuit_key:type_name -> routerrpc.CircuitKey 3389 2, // 26: routerrpc.ForwardHtlcInterceptResponse.action:type_name -> routerrpc.ResolveHoldForwardAction 3390 49, // 27: routerrpc.UpdateChanStatusRequest.chan_point:type_name -> lnrpc.ChannelPoint 3391 3, // 28: routerrpc.UpdateChanStatusRequest.action:type_name -> routerrpc.ChanStatusAction 3392 5, // 29: routerrpc.Router.SendPaymentV2:input_type -> routerrpc.SendPaymentRequest 3393 6, // 30: routerrpc.Router.TrackPaymentV2:input_type -> routerrpc.TrackPaymentRequest 3394 7, // 31: routerrpc.Router.EstimateRouteFee:input_type -> routerrpc.RouteFeeRequest 3395 9, // 32: routerrpc.Router.SendToRoute:input_type -> routerrpc.SendToRouteRequest 3396 9, // 33: routerrpc.Router.SendToRouteV2:input_type -> routerrpc.SendToRouteRequest 3397 11, // 34: routerrpc.Router.ResetMissionControl:input_type -> routerrpc.ResetMissionControlRequest 3398 13, // 35: routerrpc.Router.QueryMissionControl:input_type -> routerrpc.QueryMissionControlRequest 3399 15, // 36: routerrpc.Router.XImportMissionControl:input_type -> routerrpc.XImportMissionControlRequest 3400 19, // 37: routerrpc.Router.GetMissionControlConfig:input_type -> routerrpc.GetMissionControlConfigRequest 3401 21, // 38: routerrpc.Router.SetMissionControlConfig:input_type -> routerrpc.SetMissionControlConfigRequest 3402 24, // 39: routerrpc.Router.QueryProbability:input_type -> routerrpc.QueryProbabilityRequest 3403 26, // 40: routerrpc.Router.BuildRoute:input_type -> routerrpc.BuildRouteRequest 3404 28, // 41: routerrpc.Router.SubscribeHtlcEvents:input_type -> routerrpc.SubscribeHtlcEventsRequest 3405 5, // 42: routerrpc.Router.SendPayment:input_type -> routerrpc.SendPaymentRequest 3406 6, // 43: routerrpc.Router.TrackPayment:input_type -> routerrpc.TrackPaymentRequest 3407 38, // 44: routerrpc.Router.HtlcInterceptor:input_type -> routerrpc.ForwardHtlcInterceptResponse 3408 39, // 45: routerrpc.Router.UpdateChanStatus:input_type -> routerrpc.UpdateChanStatusRequest 3409 50, // 46: routerrpc.Router.SendPaymentV2:output_type -> lnrpc.Payment 3410 50, // 47: routerrpc.Router.TrackPaymentV2:output_type -> lnrpc.Payment 3411 8, // 48: routerrpc.Router.EstimateRouteFee:output_type -> routerrpc.RouteFeeResponse 3412 10, // 49: routerrpc.Router.SendToRoute:output_type -> routerrpc.SendToRouteResponse 3413 48, // 50: routerrpc.Router.SendToRouteV2:output_type -> lnrpc.HTLCAttempt 3414 12, // 51: routerrpc.Router.ResetMissionControl:output_type -> routerrpc.ResetMissionControlResponse 3415 14, // 52: routerrpc.Router.QueryMissionControl:output_type -> routerrpc.QueryMissionControlResponse 3416 16, // 53: routerrpc.Router.XImportMissionControl:output_type -> routerrpc.XImportMissionControlResponse 3417 20, // 54: routerrpc.Router.GetMissionControlConfig:output_type -> routerrpc.GetMissionControlConfigResponse 3418 22, // 55: routerrpc.Router.SetMissionControlConfig:output_type -> routerrpc.SetMissionControlConfigResponse 3419 25, // 56: routerrpc.Router.QueryProbability:output_type -> routerrpc.QueryProbabilityResponse 3420 27, // 57: routerrpc.Router.BuildRoute:output_type -> routerrpc.BuildRouteResponse 3421 29, // 58: routerrpc.Router.SubscribeHtlcEvents:output_type -> routerrpc.HtlcEvent 3422 35, // 59: routerrpc.Router.SendPayment:output_type -> routerrpc.PaymentStatus 3423 35, // 60: routerrpc.Router.TrackPayment:output_type -> routerrpc.PaymentStatus 3424 37, // 61: routerrpc.Router.HtlcInterceptor:output_type -> routerrpc.ForwardHtlcInterceptRequest 3425 40, // 62: routerrpc.Router.UpdateChanStatus:output_type -> routerrpc.UpdateChanStatusResponse 3426 46, // [46:63] is the sub-list for method output_type 3427 29, // [29:46] is the sub-list for method input_type 3428 29, // [29:29] is the sub-list for extension type_name 3429 29, // [29:29] is the sub-list for extension extendee 3430 0, // [0:29] is the sub-list for field type_name 3431 } 3432 3433 func init() { file_routerrpc_router_proto_init() } 3434 func file_routerrpc_router_proto_init() { 3435 if File_routerrpc_router_proto != nil { 3436 return 3437 } 3438 if !protoimpl.UnsafeEnabled { 3439 file_routerrpc_router_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { 3440 switch v := v.(*SendPaymentRequest); i { 3441 case 0: 3442 return &v.state 3443 case 1: 3444 return &v.sizeCache 3445 case 2: 3446 return &v.unknownFields 3447 default: 3448 return nil 3449 } 3450 } 3451 file_routerrpc_router_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { 3452 switch v := v.(*TrackPaymentRequest); i { 3453 case 0: 3454 return &v.state 3455 case 1: 3456 return &v.sizeCache 3457 case 2: 3458 return &v.unknownFields 3459 default: 3460 return nil 3461 } 3462 } 3463 file_routerrpc_router_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { 3464 switch v := v.(*RouteFeeRequest); i { 3465 case 0: 3466 return &v.state 3467 case 1: 3468 return &v.sizeCache 3469 case 2: 3470 return &v.unknownFields 3471 default: 3472 return nil 3473 } 3474 } 3475 file_routerrpc_router_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { 3476 switch v := v.(*RouteFeeResponse); i { 3477 case 0: 3478 return &v.state 3479 case 1: 3480 return &v.sizeCache 3481 case 2: 3482 return &v.unknownFields 3483 default: 3484 return nil 3485 } 3486 } 3487 file_routerrpc_router_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { 3488 switch v := v.(*SendToRouteRequest); i { 3489 case 0: 3490 return &v.state 3491 case 1: 3492 return &v.sizeCache 3493 case 2: 3494 return &v.unknownFields 3495 default: 3496 return nil 3497 } 3498 } 3499 file_routerrpc_router_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { 3500 switch v := v.(*SendToRouteResponse); i { 3501 case 0: 3502 return &v.state 3503 case 1: 3504 return &v.sizeCache 3505 case 2: 3506 return &v.unknownFields 3507 default: 3508 return nil 3509 } 3510 } 3511 file_routerrpc_router_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { 3512 switch v := v.(*ResetMissionControlRequest); i { 3513 case 0: 3514 return &v.state 3515 case 1: 3516 return &v.sizeCache 3517 case 2: 3518 return &v.unknownFields 3519 default: 3520 return nil 3521 } 3522 } 3523 file_routerrpc_router_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { 3524 switch v := v.(*ResetMissionControlResponse); i { 3525 case 0: 3526 return &v.state 3527 case 1: 3528 return &v.sizeCache 3529 case 2: 3530 return &v.unknownFields 3531 default: 3532 return nil 3533 } 3534 } 3535 file_routerrpc_router_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { 3536 switch v := v.(*QueryMissionControlRequest); i { 3537 case 0: 3538 return &v.state 3539 case 1: 3540 return &v.sizeCache 3541 case 2: 3542 return &v.unknownFields 3543 default: 3544 return nil 3545 } 3546 } 3547 file_routerrpc_router_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { 3548 switch v := v.(*QueryMissionControlResponse); i { 3549 case 0: 3550 return &v.state 3551 case 1: 3552 return &v.sizeCache 3553 case 2: 3554 return &v.unknownFields 3555 default: 3556 return nil 3557 } 3558 } 3559 file_routerrpc_router_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { 3560 switch v := v.(*XImportMissionControlRequest); i { 3561 case 0: 3562 return &v.state 3563 case 1: 3564 return &v.sizeCache 3565 case 2: 3566 return &v.unknownFields 3567 default: 3568 return nil 3569 } 3570 } 3571 file_routerrpc_router_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { 3572 switch v := v.(*XImportMissionControlResponse); i { 3573 case 0: 3574 return &v.state 3575 case 1: 3576 return &v.sizeCache 3577 case 2: 3578 return &v.unknownFields 3579 default: 3580 return nil 3581 } 3582 } 3583 file_routerrpc_router_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { 3584 switch v := v.(*PairHistory); i { 3585 case 0: 3586 return &v.state 3587 case 1: 3588 return &v.sizeCache 3589 case 2: 3590 return &v.unknownFields 3591 default: 3592 return nil 3593 } 3594 } 3595 file_routerrpc_router_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { 3596 switch v := v.(*PairData); i { 3597 case 0: 3598 return &v.state 3599 case 1: 3600 return &v.sizeCache 3601 case 2: 3602 return &v.unknownFields 3603 default: 3604 return nil 3605 } 3606 } 3607 file_routerrpc_router_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { 3608 switch v := v.(*GetMissionControlConfigRequest); i { 3609 case 0: 3610 return &v.state 3611 case 1: 3612 return &v.sizeCache 3613 case 2: 3614 return &v.unknownFields 3615 default: 3616 return nil 3617 } 3618 } 3619 file_routerrpc_router_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { 3620 switch v := v.(*GetMissionControlConfigResponse); i { 3621 case 0: 3622 return &v.state 3623 case 1: 3624 return &v.sizeCache 3625 case 2: 3626 return &v.unknownFields 3627 default: 3628 return nil 3629 } 3630 } 3631 file_routerrpc_router_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { 3632 switch v := v.(*SetMissionControlConfigRequest); i { 3633 case 0: 3634 return &v.state 3635 case 1: 3636 return &v.sizeCache 3637 case 2: 3638 return &v.unknownFields 3639 default: 3640 return nil 3641 } 3642 } 3643 file_routerrpc_router_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { 3644 switch v := v.(*SetMissionControlConfigResponse); i { 3645 case 0: 3646 return &v.state 3647 case 1: 3648 return &v.sizeCache 3649 case 2: 3650 return &v.unknownFields 3651 default: 3652 return nil 3653 } 3654 } 3655 file_routerrpc_router_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { 3656 switch v := v.(*MissionControlConfig); i { 3657 case 0: 3658 return &v.state 3659 case 1: 3660 return &v.sizeCache 3661 case 2: 3662 return &v.unknownFields 3663 default: 3664 return nil 3665 } 3666 } 3667 file_routerrpc_router_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { 3668 switch v := v.(*QueryProbabilityRequest); i { 3669 case 0: 3670 return &v.state 3671 case 1: 3672 return &v.sizeCache 3673 case 2: 3674 return &v.unknownFields 3675 default: 3676 return nil 3677 } 3678 } 3679 file_routerrpc_router_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { 3680 switch v := v.(*QueryProbabilityResponse); i { 3681 case 0: 3682 return &v.state 3683 case 1: 3684 return &v.sizeCache 3685 case 2: 3686 return &v.unknownFields 3687 default: 3688 return nil 3689 } 3690 } 3691 file_routerrpc_router_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { 3692 switch v := v.(*BuildRouteRequest); i { 3693 case 0: 3694 return &v.state 3695 case 1: 3696 return &v.sizeCache 3697 case 2: 3698 return &v.unknownFields 3699 default: 3700 return nil 3701 } 3702 } 3703 file_routerrpc_router_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { 3704 switch v := v.(*BuildRouteResponse); i { 3705 case 0: 3706 return &v.state 3707 case 1: 3708 return &v.sizeCache 3709 case 2: 3710 return &v.unknownFields 3711 default: 3712 return nil 3713 } 3714 } 3715 file_routerrpc_router_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { 3716 switch v := v.(*SubscribeHtlcEventsRequest); i { 3717 case 0: 3718 return &v.state 3719 case 1: 3720 return &v.sizeCache 3721 case 2: 3722 return &v.unknownFields 3723 default: 3724 return nil 3725 } 3726 } 3727 file_routerrpc_router_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { 3728 switch v := v.(*HtlcEvent); i { 3729 case 0: 3730 return &v.state 3731 case 1: 3732 return &v.sizeCache 3733 case 2: 3734 return &v.unknownFields 3735 default: 3736 return nil 3737 } 3738 } 3739 file_routerrpc_router_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { 3740 switch v := v.(*HtlcInfo); i { 3741 case 0: 3742 return &v.state 3743 case 1: 3744 return &v.sizeCache 3745 case 2: 3746 return &v.unknownFields 3747 default: 3748 return nil 3749 } 3750 } 3751 file_routerrpc_router_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { 3752 switch v := v.(*ForwardEvent); i { 3753 case 0: 3754 return &v.state 3755 case 1: 3756 return &v.sizeCache 3757 case 2: 3758 return &v.unknownFields 3759 default: 3760 return nil 3761 } 3762 } 3763 file_routerrpc_router_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { 3764 switch v := v.(*ForwardFailEvent); i { 3765 case 0: 3766 return &v.state 3767 case 1: 3768 return &v.sizeCache 3769 case 2: 3770 return &v.unknownFields 3771 default: 3772 return nil 3773 } 3774 } 3775 file_routerrpc_router_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { 3776 switch v := v.(*SettleEvent); i { 3777 case 0: 3778 return &v.state 3779 case 1: 3780 return &v.sizeCache 3781 case 2: 3782 return &v.unknownFields 3783 default: 3784 return nil 3785 } 3786 } 3787 file_routerrpc_router_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { 3788 switch v := v.(*LinkFailEvent); i { 3789 case 0: 3790 return &v.state 3791 case 1: 3792 return &v.sizeCache 3793 case 2: 3794 return &v.unknownFields 3795 default: 3796 return nil 3797 } 3798 } 3799 file_routerrpc_router_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { 3800 switch v := v.(*PaymentStatus); i { 3801 case 0: 3802 return &v.state 3803 case 1: 3804 return &v.sizeCache 3805 case 2: 3806 return &v.unknownFields 3807 default: 3808 return nil 3809 } 3810 } 3811 file_routerrpc_router_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { 3812 switch v := v.(*CircuitKey); i { 3813 case 0: 3814 return &v.state 3815 case 1: 3816 return &v.sizeCache 3817 case 2: 3818 return &v.unknownFields 3819 default: 3820 return nil 3821 } 3822 } 3823 file_routerrpc_router_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { 3824 switch v := v.(*ForwardHtlcInterceptRequest); i { 3825 case 0: 3826 return &v.state 3827 case 1: 3828 return &v.sizeCache 3829 case 2: 3830 return &v.unknownFields 3831 default: 3832 return nil 3833 } 3834 } 3835 file_routerrpc_router_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { 3836 switch v := v.(*ForwardHtlcInterceptResponse); i { 3837 case 0: 3838 return &v.state 3839 case 1: 3840 return &v.sizeCache 3841 case 2: 3842 return &v.unknownFields 3843 default: 3844 return nil 3845 } 3846 } 3847 file_routerrpc_router_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { 3848 switch v := v.(*UpdateChanStatusRequest); i { 3849 case 0: 3850 return &v.state 3851 case 1: 3852 return &v.sizeCache 3853 case 2: 3854 return &v.unknownFields 3855 default: 3856 return nil 3857 } 3858 } 3859 file_routerrpc_router_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { 3860 switch v := v.(*UpdateChanStatusResponse); i { 3861 case 0: 3862 return &v.state 3863 case 1: 3864 return &v.sizeCache 3865 case 2: 3866 return &v.unknownFields 3867 default: 3868 return nil 3869 } 3870 } 3871 } 3872 file_routerrpc_router_proto_msgTypes[24].OneofWrappers = []interface{}{ 3873 (*HtlcEvent_ForwardEvent)(nil), 3874 (*HtlcEvent_ForwardFailEvent)(nil), 3875 (*HtlcEvent_SettleEvent)(nil), 3876 (*HtlcEvent_LinkFailEvent)(nil), 3877 } 3878 type x struct{} 3879 out := protoimpl.TypeBuilder{ 3880 File: protoimpl.DescBuilder{ 3881 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 3882 RawDescriptor: file_routerrpc_router_proto_rawDesc, 3883 NumEnums: 5, 3884 NumMessages: 38, 3885 NumExtensions: 0, 3886 NumServices: 1, 3887 }, 3888 GoTypes: file_routerrpc_router_proto_goTypes, 3889 DependencyIndexes: file_routerrpc_router_proto_depIdxs, 3890 EnumInfos: file_routerrpc_router_proto_enumTypes, 3891 MessageInfos: file_routerrpc_router_proto_msgTypes, 3892 }.Build() 3893 File_routerrpc_router_proto = out.File 3894 file_routerrpc_router_proto_rawDesc = nil 3895 file_routerrpc_router_proto_goTypes = nil 3896 file_routerrpc_router_proto_depIdxs = nil 3897 } 3898 3899 // Reference imports to suppress errors if they are not otherwise used. 3900 var _ context.Context 3901 var _ grpc.ClientConnInterface 3902 3903 // This is a compile-time assertion to ensure that this generated file 3904 // is compatible with the grpc package it is being compiled against. 3905 const _ = grpc.SupportPackageIsVersion6 3906 3907 // RouterClient is the client API for Router service. 3908 // 3909 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. 3910 type RouterClient interface { 3911 // SendPaymentV2 attempts to route a payment described by the passed 3912 // PaymentRequest to the final destination. The call returns a stream of 3913 // payment updates. 3914 SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error) 3915 // TrackPaymentV2 returns an update stream for the payment identified by the 3916 // payment hash. 3917 TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error) 3918 // EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it 3919 // may cost to send an HTLC to the target end destination. 3920 EstimateRouteFee(ctx context.Context, in *RouteFeeRequest, opts ...grpc.CallOption) (*RouteFeeResponse, error) 3921 // Deprecated: Do not use. 3922 // 3923 // Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via 3924 // the specified route. This method differs from SendPayment in that it 3925 // allows users to specify a full route manually. This can be used for 3926 // things like rebalancing, and atomic swaps. It differs from the newer 3927 // SendToRouteV2 in that it doesn't return the full HTLC information. 3928 SendToRoute(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*SendToRouteResponse, error) 3929 // SendToRouteV2 attempts to make a payment via the specified route. This 3930 // method differs from SendPayment in that it allows users to specify a full 3931 // route manually. This can be used for things like rebalancing, and atomic 3932 // swaps. 3933 SendToRouteV2(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*lnrpc.HTLCAttempt, error) 3934 // ResetMissionControl clears all mission control state and starts with a clean 3935 // slate. 3936 ResetMissionControl(ctx context.Context, in *ResetMissionControlRequest, opts ...grpc.CallOption) (*ResetMissionControlResponse, error) 3937 // QueryMissionControl exposes the internal mission control state to callers. 3938 // It is a development feature. 3939 QueryMissionControl(ctx context.Context, in *QueryMissionControlRequest, opts ...grpc.CallOption) (*QueryMissionControlResponse, error) 3940 // XImportMissionControl is an experimental API that imports the state provided 3941 // to the internal mission control's state, using all results which are more 3942 // recent than our existing values. These values will only be imported 3943 // in-memory, and will not be persisted across restarts. 3944 XImportMissionControl(ctx context.Context, in *XImportMissionControlRequest, opts ...grpc.CallOption) (*XImportMissionControlResponse, error) 3945 // GetMissionControlConfig returns mission control's current config. 3946 GetMissionControlConfig(ctx context.Context, in *GetMissionControlConfigRequest, opts ...grpc.CallOption) (*GetMissionControlConfigResponse, error) 3947 // SetMissionControlConfig will set mission control's config, if the config 3948 // provided is valid. 3949 SetMissionControlConfig(ctx context.Context, in *SetMissionControlConfigRequest, opts ...grpc.CallOption) (*SetMissionControlConfigResponse, error) 3950 // QueryProbability returns the current success probability estimate for a 3951 // given node pair and amount. 3952 QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error) 3953 // BuildRoute builds a fully specified route based on a list of hop public 3954 // keys. It retrieves the relevant channel policies from the graph in order to 3955 // calculate the correct fees and time locks. 3956 BuildRoute(ctx context.Context, in *BuildRouteRequest, opts ...grpc.CallOption) (*BuildRouteResponse, error) 3957 // SubscribeHtlcEvents creates a uni-directional stream from the server to 3958 // the client which delivers a stream of htlc events. 3959 SubscribeHtlcEvents(ctx context.Context, in *SubscribeHtlcEventsRequest, opts ...grpc.CallOption) (Router_SubscribeHtlcEventsClient, error) 3960 // Deprecated: Do not use. 3961 // 3962 // Deprecated, use SendPaymentV2. SendPayment attempts to route a payment 3963 // described by the passed PaymentRequest to the final destination. The call 3964 // returns a stream of payment status updates. 3965 SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) 3966 // Deprecated: Do not use. 3967 // 3968 // Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for 3969 // the payment identified by the payment hash. 3970 TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) 3971 // * 3972 // HtlcInterceptor dispatches a bi-directional streaming RPC in which 3973 // Forwarded HTLC requests are sent to the client and the client responds with 3974 // a boolean that tells LND if this htlc should be intercepted. 3975 // In case of interception, the htlc can be either settled, cancelled or 3976 // resumed later by using the ResolveHoldForward endpoint. 3977 HtlcInterceptor(ctx context.Context, opts ...grpc.CallOption) (Router_HtlcInterceptorClient, error) 3978 // UpdateChanStatus attempts to manually set the state of a channel 3979 // (enabled, disabled, or auto). A manual "disable" request will cause the 3980 // channel to stay disabled until a subsequent manual request of either 3981 // "enable" or "auto". 3982 UpdateChanStatus(ctx context.Context, in *UpdateChanStatusRequest, opts ...grpc.CallOption) (*UpdateChanStatusResponse, error) 3983 } 3984 3985 type routerClient struct { 3986 cc grpc.ClientConnInterface 3987 } 3988 3989 func NewRouterClient(cc grpc.ClientConnInterface) RouterClient { 3990 return &routerClient{cc} 3991 } 3992 3993 func (c *routerClient) SendPaymentV2(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentV2Client, error) { 3994 stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[0], "/routerrpc.Router/SendPaymentV2", opts...) 3995 if err != nil { 3996 return nil, err 3997 } 3998 x := &routerSendPaymentV2Client{stream} 3999 if err := x.ClientStream.SendMsg(in); err != nil { 4000 return nil, err 4001 } 4002 if err := x.ClientStream.CloseSend(); err != nil { 4003 return nil, err 4004 } 4005 return x, nil 4006 } 4007 4008 type Router_SendPaymentV2Client interface { 4009 Recv() (*lnrpc.Payment, error) 4010 grpc.ClientStream 4011 } 4012 4013 type routerSendPaymentV2Client struct { 4014 grpc.ClientStream 4015 } 4016 4017 func (x *routerSendPaymentV2Client) Recv() (*lnrpc.Payment, error) { 4018 m := new(lnrpc.Payment) 4019 if err := x.ClientStream.RecvMsg(m); err != nil { 4020 return nil, err 4021 } 4022 return m, nil 4023 } 4024 4025 func (c *routerClient) TrackPaymentV2(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentV2Client, error) { 4026 stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[1], "/routerrpc.Router/TrackPaymentV2", opts...) 4027 if err != nil { 4028 return nil, err 4029 } 4030 x := &routerTrackPaymentV2Client{stream} 4031 if err := x.ClientStream.SendMsg(in); err != nil { 4032 return nil, err 4033 } 4034 if err := x.ClientStream.CloseSend(); err != nil { 4035 return nil, err 4036 } 4037 return x, nil 4038 } 4039 4040 type Router_TrackPaymentV2Client interface { 4041 Recv() (*lnrpc.Payment, error) 4042 grpc.ClientStream 4043 } 4044 4045 type routerTrackPaymentV2Client struct { 4046 grpc.ClientStream 4047 } 4048 4049 func (x *routerTrackPaymentV2Client) Recv() (*lnrpc.Payment, error) { 4050 m := new(lnrpc.Payment) 4051 if err := x.ClientStream.RecvMsg(m); err != nil { 4052 return nil, err 4053 } 4054 return m, nil 4055 } 4056 4057 func (c *routerClient) EstimateRouteFee(ctx context.Context, in *RouteFeeRequest, opts ...grpc.CallOption) (*RouteFeeResponse, error) { 4058 out := new(RouteFeeResponse) 4059 err := c.cc.Invoke(ctx, "/routerrpc.Router/EstimateRouteFee", in, out, opts...) 4060 if err != nil { 4061 return nil, err 4062 } 4063 return out, nil 4064 } 4065 4066 // Deprecated: Do not use. 4067 func (c *routerClient) SendToRoute(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*SendToRouteResponse, error) { 4068 out := new(SendToRouteResponse) 4069 err := c.cc.Invoke(ctx, "/routerrpc.Router/SendToRoute", in, out, opts...) 4070 if err != nil { 4071 return nil, err 4072 } 4073 return out, nil 4074 } 4075 4076 func (c *routerClient) SendToRouteV2(ctx context.Context, in *SendToRouteRequest, opts ...grpc.CallOption) (*lnrpc.HTLCAttempt, error) { 4077 out := new(lnrpc.HTLCAttempt) 4078 err := c.cc.Invoke(ctx, "/routerrpc.Router/SendToRouteV2", in, out, opts...) 4079 if err != nil { 4080 return nil, err 4081 } 4082 return out, nil 4083 } 4084 4085 func (c *routerClient) ResetMissionControl(ctx context.Context, in *ResetMissionControlRequest, opts ...grpc.CallOption) (*ResetMissionControlResponse, error) { 4086 out := new(ResetMissionControlResponse) 4087 err := c.cc.Invoke(ctx, "/routerrpc.Router/ResetMissionControl", in, out, opts...) 4088 if err != nil { 4089 return nil, err 4090 } 4091 return out, nil 4092 } 4093 4094 func (c *routerClient) QueryMissionControl(ctx context.Context, in *QueryMissionControlRequest, opts ...grpc.CallOption) (*QueryMissionControlResponse, error) { 4095 out := new(QueryMissionControlResponse) 4096 err := c.cc.Invoke(ctx, "/routerrpc.Router/QueryMissionControl", in, out, opts...) 4097 if err != nil { 4098 return nil, err 4099 } 4100 return out, nil 4101 } 4102 4103 func (c *routerClient) XImportMissionControl(ctx context.Context, in *XImportMissionControlRequest, opts ...grpc.CallOption) (*XImportMissionControlResponse, error) { 4104 out := new(XImportMissionControlResponse) 4105 err := c.cc.Invoke(ctx, "/routerrpc.Router/XImportMissionControl", in, out, opts...) 4106 if err != nil { 4107 return nil, err 4108 } 4109 return out, nil 4110 } 4111 4112 func (c *routerClient) GetMissionControlConfig(ctx context.Context, in *GetMissionControlConfigRequest, opts ...grpc.CallOption) (*GetMissionControlConfigResponse, error) { 4113 out := new(GetMissionControlConfigResponse) 4114 err := c.cc.Invoke(ctx, "/routerrpc.Router/GetMissionControlConfig", in, out, opts...) 4115 if err != nil { 4116 return nil, err 4117 } 4118 return out, nil 4119 } 4120 4121 func (c *routerClient) SetMissionControlConfig(ctx context.Context, in *SetMissionControlConfigRequest, opts ...grpc.CallOption) (*SetMissionControlConfigResponse, error) { 4122 out := new(SetMissionControlConfigResponse) 4123 err := c.cc.Invoke(ctx, "/routerrpc.Router/SetMissionControlConfig", in, out, opts...) 4124 if err != nil { 4125 return nil, err 4126 } 4127 return out, nil 4128 } 4129 4130 func (c *routerClient) QueryProbability(ctx context.Context, in *QueryProbabilityRequest, opts ...grpc.CallOption) (*QueryProbabilityResponse, error) { 4131 out := new(QueryProbabilityResponse) 4132 err := c.cc.Invoke(ctx, "/routerrpc.Router/QueryProbability", in, out, opts...) 4133 if err != nil { 4134 return nil, err 4135 } 4136 return out, nil 4137 } 4138 4139 func (c *routerClient) BuildRoute(ctx context.Context, in *BuildRouteRequest, opts ...grpc.CallOption) (*BuildRouteResponse, error) { 4140 out := new(BuildRouteResponse) 4141 err := c.cc.Invoke(ctx, "/routerrpc.Router/BuildRoute", in, out, opts...) 4142 if err != nil { 4143 return nil, err 4144 } 4145 return out, nil 4146 } 4147 4148 func (c *routerClient) SubscribeHtlcEvents(ctx context.Context, in *SubscribeHtlcEventsRequest, opts ...grpc.CallOption) (Router_SubscribeHtlcEventsClient, error) { 4149 stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[2], "/routerrpc.Router/SubscribeHtlcEvents", opts...) 4150 if err != nil { 4151 return nil, err 4152 } 4153 x := &routerSubscribeHtlcEventsClient{stream} 4154 if err := x.ClientStream.SendMsg(in); err != nil { 4155 return nil, err 4156 } 4157 if err := x.ClientStream.CloseSend(); err != nil { 4158 return nil, err 4159 } 4160 return x, nil 4161 } 4162 4163 type Router_SubscribeHtlcEventsClient interface { 4164 Recv() (*HtlcEvent, error) 4165 grpc.ClientStream 4166 } 4167 4168 type routerSubscribeHtlcEventsClient struct { 4169 grpc.ClientStream 4170 } 4171 4172 func (x *routerSubscribeHtlcEventsClient) Recv() (*HtlcEvent, error) { 4173 m := new(HtlcEvent) 4174 if err := x.ClientStream.RecvMsg(m); err != nil { 4175 return nil, err 4176 } 4177 return m, nil 4178 } 4179 4180 // Deprecated: Do not use. 4181 func (c *routerClient) SendPayment(ctx context.Context, in *SendPaymentRequest, opts ...grpc.CallOption) (Router_SendPaymentClient, error) { 4182 stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[3], "/routerrpc.Router/SendPayment", opts...) 4183 if err != nil { 4184 return nil, err 4185 } 4186 x := &routerSendPaymentClient{stream} 4187 if err := x.ClientStream.SendMsg(in); err != nil { 4188 return nil, err 4189 } 4190 if err := x.ClientStream.CloseSend(); err != nil { 4191 return nil, err 4192 } 4193 return x, nil 4194 } 4195 4196 type Router_SendPaymentClient interface { 4197 Recv() (*PaymentStatus, error) 4198 grpc.ClientStream 4199 } 4200 4201 type routerSendPaymentClient struct { 4202 grpc.ClientStream 4203 } 4204 4205 func (x *routerSendPaymentClient) Recv() (*PaymentStatus, error) { 4206 m := new(PaymentStatus) 4207 if err := x.ClientStream.RecvMsg(m); err != nil { 4208 return nil, err 4209 } 4210 return m, nil 4211 } 4212 4213 // Deprecated: Do not use. 4214 func (c *routerClient) TrackPayment(ctx context.Context, in *TrackPaymentRequest, opts ...grpc.CallOption) (Router_TrackPaymentClient, error) { 4215 stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[4], "/routerrpc.Router/TrackPayment", opts...) 4216 if err != nil { 4217 return nil, err 4218 } 4219 x := &routerTrackPaymentClient{stream} 4220 if err := x.ClientStream.SendMsg(in); err != nil { 4221 return nil, err 4222 } 4223 if err := x.ClientStream.CloseSend(); err != nil { 4224 return nil, err 4225 } 4226 return x, nil 4227 } 4228 4229 type Router_TrackPaymentClient interface { 4230 Recv() (*PaymentStatus, error) 4231 grpc.ClientStream 4232 } 4233 4234 type routerTrackPaymentClient struct { 4235 grpc.ClientStream 4236 } 4237 4238 func (x *routerTrackPaymentClient) Recv() (*PaymentStatus, error) { 4239 m := new(PaymentStatus) 4240 if err := x.ClientStream.RecvMsg(m); err != nil { 4241 return nil, err 4242 } 4243 return m, nil 4244 } 4245 4246 func (c *routerClient) HtlcInterceptor(ctx context.Context, opts ...grpc.CallOption) (Router_HtlcInterceptorClient, error) { 4247 stream, err := c.cc.NewStream(ctx, &_Router_serviceDesc.Streams[5], "/routerrpc.Router/HtlcInterceptor", opts...) 4248 if err != nil { 4249 return nil, err 4250 } 4251 x := &routerHtlcInterceptorClient{stream} 4252 return x, nil 4253 } 4254 4255 type Router_HtlcInterceptorClient interface { 4256 Send(*ForwardHtlcInterceptResponse) error 4257 Recv() (*ForwardHtlcInterceptRequest, error) 4258 grpc.ClientStream 4259 } 4260 4261 type routerHtlcInterceptorClient struct { 4262 grpc.ClientStream 4263 } 4264 4265 func (x *routerHtlcInterceptorClient) Send(m *ForwardHtlcInterceptResponse) error { 4266 return x.ClientStream.SendMsg(m) 4267 } 4268 4269 func (x *routerHtlcInterceptorClient) Recv() (*ForwardHtlcInterceptRequest, error) { 4270 m := new(ForwardHtlcInterceptRequest) 4271 if err := x.ClientStream.RecvMsg(m); err != nil { 4272 return nil, err 4273 } 4274 return m, nil 4275 } 4276 4277 func (c *routerClient) UpdateChanStatus(ctx context.Context, in *UpdateChanStatusRequest, opts ...grpc.CallOption) (*UpdateChanStatusResponse, error) { 4278 out := new(UpdateChanStatusResponse) 4279 err := c.cc.Invoke(ctx, "/routerrpc.Router/UpdateChanStatus", in, out, opts...) 4280 if err != nil { 4281 return nil, err 4282 } 4283 return out, nil 4284 } 4285 4286 // RouterServer is the server API for Router service. 4287 type RouterServer interface { 4288 // SendPaymentV2 attempts to route a payment described by the passed 4289 // PaymentRequest to the final destination. The call returns a stream of 4290 // payment updates. 4291 SendPaymentV2(*SendPaymentRequest, Router_SendPaymentV2Server) error 4292 // TrackPaymentV2 returns an update stream for the payment identified by the 4293 // payment hash. 4294 TrackPaymentV2(*TrackPaymentRequest, Router_TrackPaymentV2Server) error 4295 // EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it 4296 // may cost to send an HTLC to the target end destination. 4297 EstimateRouteFee(context.Context, *RouteFeeRequest) (*RouteFeeResponse, error) 4298 // Deprecated: Do not use. 4299 // 4300 // Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via 4301 // the specified route. This method differs from SendPayment in that it 4302 // allows users to specify a full route manually. This can be used for 4303 // things like rebalancing, and atomic swaps. It differs from the newer 4304 // SendToRouteV2 in that it doesn't return the full HTLC information. 4305 SendToRoute(context.Context, *SendToRouteRequest) (*SendToRouteResponse, error) 4306 // SendToRouteV2 attempts to make a payment via the specified route. This 4307 // method differs from SendPayment in that it allows users to specify a full 4308 // route manually. This can be used for things like rebalancing, and atomic 4309 // swaps. 4310 SendToRouteV2(context.Context, *SendToRouteRequest) (*lnrpc.HTLCAttempt, error) 4311 // ResetMissionControl clears all mission control state and starts with a clean 4312 // slate. 4313 ResetMissionControl(context.Context, *ResetMissionControlRequest) (*ResetMissionControlResponse, error) 4314 // QueryMissionControl exposes the internal mission control state to callers. 4315 // It is a development feature. 4316 QueryMissionControl(context.Context, *QueryMissionControlRequest) (*QueryMissionControlResponse, error) 4317 // XImportMissionControl is an experimental API that imports the state provided 4318 // to the internal mission control's state, using all results which are more 4319 // recent than our existing values. These values will only be imported 4320 // in-memory, and will not be persisted across restarts. 4321 XImportMissionControl(context.Context, *XImportMissionControlRequest) (*XImportMissionControlResponse, error) 4322 // GetMissionControlConfig returns mission control's current config. 4323 GetMissionControlConfig(context.Context, *GetMissionControlConfigRequest) (*GetMissionControlConfigResponse, error) 4324 // SetMissionControlConfig will set mission control's config, if the config 4325 // provided is valid. 4326 SetMissionControlConfig(context.Context, *SetMissionControlConfigRequest) (*SetMissionControlConfigResponse, error) 4327 // QueryProbability returns the current success probability estimate for a 4328 // given node pair and amount. 4329 QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error) 4330 // BuildRoute builds a fully specified route based on a list of hop public 4331 // keys. It retrieves the relevant channel policies from the graph in order to 4332 // calculate the correct fees and time locks. 4333 BuildRoute(context.Context, *BuildRouteRequest) (*BuildRouteResponse, error) 4334 // SubscribeHtlcEvents creates a uni-directional stream from the server to 4335 // the client which delivers a stream of htlc events. 4336 SubscribeHtlcEvents(*SubscribeHtlcEventsRequest, Router_SubscribeHtlcEventsServer) error 4337 // Deprecated: Do not use. 4338 // 4339 // Deprecated, use SendPaymentV2. SendPayment attempts to route a payment 4340 // described by the passed PaymentRequest to the final destination. The call 4341 // returns a stream of payment status updates. 4342 SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error 4343 // Deprecated: Do not use. 4344 // 4345 // Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for 4346 // the payment identified by the payment hash. 4347 TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error 4348 // * 4349 // HtlcInterceptor dispatches a bi-directional streaming RPC in which 4350 // Forwarded HTLC requests are sent to the client and the client responds with 4351 // a boolean that tells LND if this htlc should be intercepted. 4352 // In case of interception, the htlc can be either settled, cancelled or 4353 // resumed later by using the ResolveHoldForward endpoint. 4354 HtlcInterceptor(Router_HtlcInterceptorServer) error 4355 // UpdateChanStatus attempts to manually set the state of a channel 4356 // (enabled, disabled, or auto). A manual "disable" request will cause the 4357 // channel to stay disabled until a subsequent manual request of either 4358 // "enable" or "auto". 4359 UpdateChanStatus(context.Context, *UpdateChanStatusRequest) (*UpdateChanStatusResponse, error) 4360 } 4361 4362 // UnimplementedRouterServer can be embedded to have forward compatible implementations. 4363 type UnimplementedRouterServer struct { 4364 } 4365 4366 func (*UnimplementedRouterServer) SendPaymentV2(*SendPaymentRequest, Router_SendPaymentV2Server) error { 4367 return status.Errorf(codes.Unimplemented, "method SendPaymentV2 not implemented") 4368 } 4369 func (*UnimplementedRouterServer) TrackPaymentV2(*TrackPaymentRequest, Router_TrackPaymentV2Server) error { 4370 return status.Errorf(codes.Unimplemented, "method TrackPaymentV2 not implemented") 4371 } 4372 func (*UnimplementedRouterServer) EstimateRouteFee(context.Context, *RouteFeeRequest) (*RouteFeeResponse, error) { 4373 return nil, status.Errorf(codes.Unimplemented, "method EstimateRouteFee not implemented") 4374 } 4375 func (*UnimplementedRouterServer) SendToRoute(context.Context, *SendToRouteRequest) (*SendToRouteResponse, error) { 4376 return nil, status.Errorf(codes.Unimplemented, "method SendToRoute not implemented") 4377 } 4378 func (*UnimplementedRouterServer) SendToRouteV2(context.Context, *SendToRouteRequest) (*lnrpc.HTLCAttempt, error) { 4379 return nil, status.Errorf(codes.Unimplemented, "method SendToRouteV2 not implemented") 4380 } 4381 func (*UnimplementedRouterServer) ResetMissionControl(context.Context, *ResetMissionControlRequest) (*ResetMissionControlResponse, error) { 4382 return nil, status.Errorf(codes.Unimplemented, "method ResetMissionControl not implemented") 4383 } 4384 func (*UnimplementedRouterServer) QueryMissionControl(context.Context, *QueryMissionControlRequest) (*QueryMissionControlResponse, error) { 4385 return nil, status.Errorf(codes.Unimplemented, "method QueryMissionControl not implemented") 4386 } 4387 func (*UnimplementedRouterServer) XImportMissionControl(context.Context, *XImportMissionControlRequest) (*XImportMissionControlResponse, error) { 4388 return nil, status.Errorf(codes.Unimplemented, "method XImportMissionControl not implemented") 4389 } 4390 func (*UnimplementedRouterServer) GetMissionControlConfig(context.Context, *GetMissionControlConfigRequest) (*GetMissionControlConfigResponse, error) { 4391 return nil, status.Errorf(codes.Unimplemented, "method GetMissionControlConfig not implemented") 4392 } 4393 func (*UnimplementedRouterServer) SetMissionControlConfig(context.Context, *SetMissionControlConfigRequest) (*SetMissionControlConfigResponse, error) { 4394 return nil, status.Errorf(codes.Unimplemented, "method SetMissionControlConfig not implemented") 4395 } 4396 func (*UnimplementedRouterServer) QueryProbability(context.Context, *QueryProbabilityRequest) (*QueryProbabilityResponse, error) { 4397 return nil, status.Errorf(codes.Unimplemented, "method QueryProbability not implemented") 4398 } 4399 func (*UnimplementedRouterServer) BuildRoute(context.Context, *BuildRouteRequest) (*BuildRouteResponse, error) { 4400 return nil, status.Errorf(codes.Unimplemented, "method BuildRoute not implemented") 4401 } 4402 func (*UnimplementedRouterServer) SubscribeHtlcEvents(*SubscribeHtlcEventsRequest, Router_SubscribeHtlcEventsServer) error { 4403 return status.Errorf(codes.Unimplemented, "method SubscribeHtlcEvents not implemented") 4404 } 4405 func (*UnimplementedRouterServer) SendPayment(*SendPaymentRequest, Router_SendPaymentServer) error { 4406 return status.Errorf(codes.Unimplemented, "method SendPayment not implemented") 4407 } 4408 func (*UnimplementedRouterServer) TrackPayment(*TrackPaymentRequest, Router_TrackPaymentServer) error { 4409 return status.Errorf(codes.Unimplemented, "method TrackPayment not implemented") 4410 } 4411 func (*UnimplementedRouterServer) HtlcInterceptor(Router_HtlcInterceptorServer) error { 4412 return status.Errorf(codes.Unimplemented, "method HtlcInterceptor not implemented") 4413 } 4414 func (*UnimplementedRouterServer) UpdateChanStatus(context.Context, *UpdateChanStatusRequest) (*UpdateChanStatusResponse, error) { 4415 return nil, status.Errorf(codes.Unimplemented, "method UpdateChanStatus not implemented") 4416 } 4417 4418 func RegisterRouterServer(s *grpc.Server, srv RouterServer) { 4419 s.RegisterService(&_Router_serviceDesc, srv) 4420 } 4421 4422 func _Router_SendPaymentV2_Handler(srv interface{}, stream grpc.ServerStream) error { 4423 m := new(SendPaymentRequest) 4424 if err := stream.RecvMsg(m); err != nil { 4425 return err 4426 } 4427 return srv.(RouterServer).SendPaymentV2(m, &routerSendPaymentV2Server{stream}) 4428 } 4429 4430 type Router_SendPaymentV2Server interface { 4431 Send(*lnrpc.Payment) error 4432 grpc.ServerStream 4433 } 4434 4435 type routerSendPaymentV2Server struct { 4436 grpc.ServerStream 4437 } 4438 4439 func (x *routerSendPaymentV2Server) Send(m *lnrpc.Payment) error { 4440 return x.ServerStream.SendMsg(m) 4441 } 4442 4443 func _Router_TrackPaymentV2_Handler(srv interface{}, stream grpc.ServerStream) error { 4444 m := new(TrackPaymentRequest) 4445 if err := stream.RecvMsg(m); err != nil { 4446 return err 4447 } 4448 return srv.(RouterServer).TrackPaymentV2(m, &routerTrackPaymentV2Server{stream}) 4449 } 4450 4451 type Router_TrackPaymentV2Server interface { 4452 Send(*lnrpc.Payment) error 4453 grpc.ServerStream 4454 } 4455 4456 type routerTrackPaymentV2Server struct { 4457 grpc.ServerStream 4458 } 4459 4460 func (x *routerTrackPaymentV2Server) Send(m *lnrpc.Payment) error { 4461 return x.ServerStream.SendMsg(m) 4462 } 4463 4464 func _Router_EstimateRouteFee_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4465 in := new(RouteFeeRequest) 4466 if err := dec(in); err != nil { 4467 return nil, err 4468 } 4469 if interceptor == nil { 4470 return srv.(RouterServer).EstimateRouteFee(ctx, in) 4471 } 4472 info := &grpc.UnaryServerInfo{ 4473 Server: srv, 4474 FullMethod: "/routerrpc.Router/EstimateRouteFee", 4475 } 4476 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4477 return srv.(RouterServer).EstimateRouteFee(ctx, req.(*RouteFeeRequest)) 4478 } 4479 return interceptor(ctx, in, info, handler) 4480 } 4481 4482 func _Router_SendToRoute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4483 in := new(SendToRouteRequest) 4484 if err := dec(in); err != nil { 4485 return nil, err 4486 } 4487 if interceptor == nil { 4488 return srv.(RouterServer).SendToRoute(ctx, in) 4489 } 4490 info := &grpc.UnaryServerInfo{ 4491 Server: srv, 4492 FullMethod: "/routerrpc.Router/SendToRoute", 4493 } 4494 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4495 return srv.(RouterServer).SendToRoute(ctx, req.(*SendToRouteRequest)) 4496 } 4497 return interceptor(ctx, in, info, handler) 4498 } 4499 4500 func _Router_SendToRouteV2_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4501 in := new(SendToRouteRequest) 4502 if err := dec(in); err != nil { 4503 return nil, err 4504 } 4505 if interceptor == nil { 4506 return srv.(RouterServer).SendToRouteV2(ctx, in) 4507 } 4508 info := &grpc.UnaryServerInfo{ 4509 Server: srv, 4510 FullMethod: "/routerrpc.Router/SendToRouteV2", 4511 } 4512 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4513 return srv.(RouterServer).SendToRouteV2(ctx, req.(*SendToRouteRequest)) 4514 } 4515 return interceptor(ctx, in, info, handler) 4516 } 4517 4518 func _Router_ResetMissionControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4519 in := new(ResetMissionControlRequest) 4520 if err := dec(in); err != nil { 4521 return nil, err 4522 } 4523 if interceptor == nil { 4524 return srv.(RouterServer).ResetMissionControl(ctx, in) 4525 } 4526 info := &grpc.UnaryServerInfo{ 4527 Server: srv, 4528 FullMethod: "/routerrpc.Router/ResetMissionControl", 4529 } 4530 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4531 return srv.(RouterServer).ResetMissionControl(ctx, req.(*ResetMissionControlRequest)) 4532 } 4533 return interceptor(ctx, in, info, handler) 4534 } 4535 4536 func _Router_QueryMissionControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4537 in := new(QueryMissionControlRequest) 4538 if err := dec(in); err != nil { 4539 return nil, err 4540 } 4541 if interceptor == nil { 4542 return srv.(RouterServer).QueryMissionControl(ctx, in) 4543 } 4544 info := &grpc.UnaryServerInfo{ 4545 Server: srv, 4546 FullMethod: "/routerrpc.Router/QueryMissionControl", 4547 } 4548 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4549 return srv.(RouterServer).QueryMissionControl(ctx, req.(*QueryMissionControlRequest)) 4550 } 4551 return interceptor(ctx, in, info, handler) 4552 } 4553 4554 func _Router_XImportMissionControl_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4555 in := new(XImportMissionControlRequest) 4556 if err := dec(in); err != nil { 4557 return nil, err 4558 } 4559 if interceptor == nil { 4560 return srv.(RouterServer).XImportMissionControl(ctx, in) 4561 } 4562 info := &grpc.UnaryServerInfo{ 4563 Server: srv, 4564 FullMethod: "/routerrpc.Router/XImportMissionControl", 4565 } 4566 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4567 return srv.(RouterServer).XImportMissionControl(ctx, req.(*XImportMissionControlRequest)) 4568 } 4569 return interceptor(ctx, in, info, handler) 4570 } 4571 4572 func _Router_GetMissionControlConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4573 in := new(GetMissionControlConfigRequest) 4574 if err := dec(in); err != nil { 4575 return nil, err 4576 } 4577 if interceptor == nil { 4578 return srv.(RouterServer).GetMissionControlConfig(ctx, in) 4579 } 4580 info := &grpc.UnaryServerInfo{ 4581 Server: srv, 4582 FullMethod: "/routerrpc.Router/GetMissionControlConfig", 4583 } 4584 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4585 return srv.(RouterServer).GetMissionControlConfig(ctx, req.(*GetMissionControlConfigRequest)) 4586 } 4587 return interceptor(ctx, in, info, handler) 4588 } 4589 4590 func _Router_SetMissionControlConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4591 in := new(SetMissionControlConfigRequest) 4592 if err := dec(in); err != nil { 4593 return nil, err 4594 } 4595 if interceptor == nil { 4596 return srv.(RouterServer).SetMissionControlConfig(ctx, in) 4597 } 4598 info := &grpc.UnaryServerInfo{ 4599 Server: srv, 4600 FullMethod: "/routerrpc.Router/SetMissionControlConfig", 4601 } 4602 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4603 return srv.(RouterServer).SetMissionControlConfig(ctx, req.(*SetMissionControlConfigRequest)) 4604 } 4605 return interceptor(ctx, in, info, handler) 4606 } 4607 4608 func _Router_QueryProbability_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4609 in := new(QueryProbabilityRequest) 4610 if err := dec(in); err != nil { 4611 return nil, err 4612 } 4613 if interceptor == nil { 4614 return srv.(RouterServer).QueryProbability(ctx, in) 4615 } 4616 info := &grpc.UnaryServerInfo{ 4617 Server: srv, 4618 FullMethod: "/routerrpc.Router/QueryProbability", 4619 } 4620 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4621 return srv.(RouterServer).QueryProbability(ctx, req.(*QueryProbabilityRequest)) 4622 } 4623 return interceptor(ctx, in, info, handler) 4624 } 4625 4626 func _Router_BuildRoute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4627 in := new(BuildRouteRequest) 4628 if err := dec(in); err != nil { 4629 return nil, err 4630 } 4631 if interceptor == nil { 4632 return srv.(RouterServer).BuildRoute(ctx, in) 4633 } 4634 info := &grpc.UnaryServerInfo{ 4635 Server: srv, 4636 FullMethod: "/routerrpc.Router/BuildRoute", 4637 } 4638 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4639 return srv.(RouterServer).BuildRoute(ctx, req.(*BuildRouteRequest)) 4640 } 4641 return interceptor(ctx, in, info, handler) 4642 } 4643 4644 func _Router_SubscribeHtlcEvents_Handler(srv interface{}, stream grpc.ServerStream) error { 4645 m := new(SubscribeHtlcEventsRequest) 4646 if err := stream.RecvMsg(m); err != nil { 4647 return err 4648 } 4649 return srv.(RouterServer).SubscribeHtlcEvents(m, &routerSubscribeHtlcEventsServer{stream}) 4650 } 4651 4652 type Router_SubscribeHtlcEventsServer interface { 4653 Send(*HtlcEvent) error 4654 grpc.ServerStream 4655 } 4656 4657 type routerSubscribeHtlcEventsServer struct { 4658 grpc.ServerStream 4659 } 4660 4661 func (x *routerSubscribeHtlcEventsServer) Send(m *HtlcEvent) error { 4662 return x.ServerStream.SendMsg(m) 4663 } 4664 4665 func _Router_SendPayment_Handler(srv interface{}, stream grpc.ServerStream) error { 4666 m := new(SendPaymentRequest) 4667 if err := stream.RecvMsg(m); err != nil { 4668 return err 4669 } 4670 return srv.(RouterServer).SendPayment(m, &routerSendPaymentServer{stream}) 4671 } 4672 4673 type Router_SendPaymentServer interface { 4674 Send(*PaymentStatus) error 4675 grpc.ServerStream 4676 } 4677 4678 type routerSendPaymentServer struct { 4679 grpc.ServerStream 4680 } 4681 4682 func (x *routerSendPaymentServer) Send(m *PaymentStatus) error { 4683 return x.ServerStream.SendMsg(m) 4684 } 4685 4686 func _Router_TrackPayment_Handler(srv interface{}, stream grpc.ServerStream) error { 4687 m := new(TrackPaymentRequest) 4688 if err := stream.RecvMsg(m); err != nil { 4689 return err 4690 } 4691 return srv.(RouterServer).TrackPayment(m, &routerTrackPaymentServer{stream}) 4692 } 4693 4694 type Router_TrackPaymentServer interface { 4695 Send(*PaymentStatus) error 4696 grpc.ServerStream 4697 } 4698 4699 type routerTrackPaymentServer struct { 4700 grpc.ServerStream 4701 } 4702 4703 func (x *routerTrackPaymentServer) Send(m *PaymentStatus) error { 4704 return x.ServerStream.SendMsg(m) 4705 } 4706 4707 func _Router_HtlcInterceptor_Handler(srv interface{}, stream grpc.ServerStream) error { 4708 return srv.(RouterServer).HtlcInterceptor(&routerHtlcInterceptorServer{stream}) 4709 } 4710 4711 type Router_HtlcInterceptorServer interface { 4712 Send(*ForwardHtlcInterceptRequest) error 4713 Recv() (*ForwardHtlcInterceptResponse, error) 4714 grpc.ServerStream 4715 } 4716 4717 type routerHtlcInterceptorServer struct { 4718 grpc.ServerStream 4719 } 4720 4721 func (x *routerHtlcInterceptorServer) Send(m *ForwardHtlcInterceptRequest) error { 4722 return x.ServerStream.SendMsg(m) 4723 } 4724 4725 func (x *routerHtlcInterceptorServer) Recv() (*ForwardHtlcInterceptResponse, error) { 4726 m := new(ForwardHtlcInterceptResponse) 4727 if err := x.ServerStream.RecvMsg(m); err != nil { 4728 return nil, err 4729 } 4730 return m, nil 4731 } 4732 4733 func _Router_UpdateChanStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { 4734 in := new(UpdateChanStatusRequest) 4735 if err := dec(in); err != nil { 4736 return nil, err 4737 } 4738 if interceptor == nil { 4739 return srv.(RouterServer).UpdateChanStatus(ctx, in) 4740 } 4741 info := &grpc.UnaryServerInfo{ 4742 Server: srv, 4743 FullMethod: "/routerrpc.Router/UpdateChanStatus", 4744 } 4745 handler := func(ctx context.Context, req interface{}) (interface{}, error) { 4746 return srv.(RouterServer).UpdateChanStatus(ctx, req.(*UpdateChanStatusRequest)) 4747 } 4748 return interceptor(ctx, in, info, handler) 4749 } 4750 4751 var _Router_serviceDesc = grpc.ServiceDesc{ 4752 ServiceName: "routerrpc.Router", 4753 HandlerType: (*RouterServer)(nil), 4754 Methods: []grpc.MethodDesc{ 4755 { 4756 MethodName: "EstimateRouteFee", 4757 Handler: _Router_EstimateRouteFee_Handler, 4758 }, 4759 { 4760 MethodName: "SendToRoute", 4761 Handler: _Router_SendToRoute_Handler, 4762 }, 4763 { 4764 MethodName: "SendToRouteV2", 4765 Handler: _Router_SendToRouteV2_Handler, 4766 }, 4767 { 4768 MethodName: "ResetMissionControl", 4769 Handler: _Router_ResetMissionControl_Handler, 4770 }, 4771 { 4772 MethodName: "QueryMissionControl", 4773 Handler: _Router_QueryMissionControl_Handler, 4774 }, 4775 { 4776 MethodName: "XImportMissionControl", 4777 Handler: _Router_XImportMissionControl_Handler, 4778 }, 4779 { 4780 MethodName: "GetMissionControlConfig", 4781 Handler: _Router_GetMissionControlConfig_Handler, 4782 }, 4783 { 4784 MethodName: "SetMissionControlConfig", 4785 Handler: _Router_SetMissionControlConfig_Handler, 4786 }, 4787 { 4788 MethodName: "QueryProbability", 4789 Handler: _Router_QueryProbability_Handler, 4790 }, 4791 { 4792 MethodName: "BuildRoute", 4793 Handler: _Router_BuildRoute_Handler, 4794 }, 4795 { 4796 MethodName: "UpdateChanStatus", 4797 Handler: _Router_UpdateChanStatus_Handler, 4798 }, 4799 }, 4800 Streams: []grpc.StreamDesc{ 4801 { 4802 StreamName: "SendPaymentV2", 4803 Handler: _Router_SendPaymentV2_Handler, 4804 ServerStreams: true, 4805 }, 4806 { 4807 StreamName: "TrackPaymentV2", 4808 Handler: _Router_TrackPaymentV2_Handler, 4809 ServerStreams: true, 4810 }, 4811 { 4812 StreamName: "SubscribeHtlcEvents", 4813 Handler: _Router_SubscribeHtlcEvents_Handler, 4814 ServerStreams: true, 4815 }, 4816 { 4817 StreamName: "SendPayment", 4818 Handler: _Router_SendPayment_Handler, 4819 ServerStreams: true, 4820 }, 4821 { 4822 StreamName: "TrackPayment", 4823 Handler: _Router_TrackPayment_Handler, 4824 ServerStreams: true, 4825 }, 4826 { 4827 StreamName: "HtlcInterceptor", 4828 Handler: _Router_HtlcInterceptor_Handler, 4829 ServerStreams: true, 4830 ClientStreams: true, 4831 }, 4832 }, 4833 Metadata: "routerrpc/router.proto", 4834 }