diff --git a/cmd/gencluster/main.go b/cmd/gencluster/main.go index 5749933..b8afb6a 100644 --- a/cmd/gencluster/main.go +++ b/cmd/gencluster/main.go @@ -72,7 +72,7 @@ func run() error { sort.SliceStable(nodes, func(i, j int) bool { return nodes[i] < nodes[j] }) target := os.Getenv("TARGET") - if target != "cln" && target != "lnd" && target != "lnd-managej" { + if target != "cln" && target != "lnd" && target != "lnd-managej" && target != "sensei" { return fmt.Errorf("unknown target %v", target) } @@ -113,6 +113,16 @@ func run() error { Command: "--network=regtest", } + case alias == "start" && target == "sensei": + serv = service{ + Build: "sensei", + DependsOn: []string{"bitcoind"}, + Volumes: []string{ + "lnd:/cfg", + }, + Command: fmt.Sprintf("./senseid --network=regtest --bitcoind-rpc-host=bitcoind --bitcoind-rpc-port=8332 --bitcoind-rpc-username=test --bitcoind-rpc-password=test --database-url=sensei.db"), + } + default: serv = service{ Image: "pathfinding-benchmark-lnd", diff --git a/cmd/testrunner/clightning.go b/cmd/testrunner/clightning.go index 7311aa8..d787c59 100644 --- a/cmd/testrunner/clightning.go +++ b/cmd/testrunner/clightning.go @@ -98,7 +98,7 @@ func (l *clightningConnection) NewAddress() (string, error) { } func (l *clightningConnection) OpenChannel(peerKey string, amtSat int64, - pushAmtSat int64, private bool) (*lnrpc.ChannelPoint, error) { + pushAmtSat int64, private bool) error { sat := glightning.NewSat64(uint64(amtSat)) pushMsat := glightning.NewMsat(uint64(pushAmtSat) * 1e3) @@ -106,18 +106,15 @@ func (l *clightningConnection) OpenChannel(peerKey string, amtSat int64, resp, err := l.client.FundChannelExt(peerKey, sat, nil, private, &minConf, pushMsat) if err != nil { - return nil, err + return err } - txID, err := chainhash.NewHashFromStr(resp.FundingTxId) + _, err = chainhash.NewHashFromStr(resp.FundingTxId) if err != nil { - return nil, err + return err } - return &lnrpc.ChannelPoint{ - FundingTxid: &lnrpc.ChannelPoint_FundingTxidBytes{FundingTxidBytes: txID[:]}, - // Index unavailable for cln? - }, err + return nil } func (l *clightningConnection) ActiveChannels() (int, error) { diff --git a/cmd/testrunner/cmd_run.go b/cmd/testrunner/cmd_run.go index a705918..ce9555c 100644 --- a/cmd/testrunner/cmd_run.go +++ b/cmd/testrunner/cmd_run.go @@ -50,7 +50,7 @@ func getBitcoindConnection() (*rpcclient.Client, error) { func run(_ *cli.Context) error { target := os.Getenv("TARGET") - if target != "cln" && target != "lnd" && target != "lnd-managej" { + if target != "cln" && target != "lnd" && target != "lnd-managej" && target != "sensei" { return fmt.Errorf("unknown target %v", target) } @@ -96,6 +96,8 @@ func run(_ *cli.Context) error { client, err = getClightningConnection(node) case node == "start" && target == "lnd-managej": client, err = getLndManageJConnection(node) + case node == "start" && target == "sensei": + client, err = getSenseiConnection(node) default: client, err = getLndConnection(node) } @@ -160,7 +162,7 @@ func run(_ *cli.Context) error { nodeLog.Infow("Open channel", "peer", peer) for _, channel := range channels { - _, err := client.OpenChannel( + err := client.OpenChannel( peerKey, int64(channel.Capacity), int64(channel.RemoteBalance), channel.Private, diff --git a/cmd/testrunner/lnd.go b/cmd/testrunner/lnd.go index e0e03f7..e92e61f 100644 --- a/cmd/testrunner/lnd.go +++ b/cmd/testrunner/lnd.go @@ -127,9 +127,9 @@ func (l *lndConnection) NewAddress() (string, error) { } func (l *lndConnection) OpenChannel(peerKey string, amtSat int64, - pushAmtSat int64, private bool) (*lnrpc.ChannelPoint, error) { + pushAmtSat int64, private bool) error { - resp, err := l.lightningClient.OpenChannelSync(context.Background(), &lnrpc.OpenChannelRequest{ + _, err := l.lightningClient.OpenChannelSync(context.Background(), &lnrpc.OpenChannelRequest{ LocalFundingAmount: amtSat, NodePubkeyString: peerKey, SpendUnconfirmed: true, @@ -137,16 +137,10 @@ func (l *lndConnection) OpenChannel(peerKey string, amtSat int64, Private: private, }) if err != nil { - return nil, err + return err } - chanPoint := lnrpc.ChannelPoint{ - FundingTxid: &lnrpc.ChannelPoint_FundingTxidBytes{ - FundingTxidBytes: resp.GetFundingTxidBytes(), - }, - OutputIndex: resp.OutputIndex, - } - return &chanPoint, nil + return nil } func (l *lndConnection) SetPolicy(chanPoint *lnrpc.ChannelPoint, diff --git a/cmd/testrunner/node_interface.go b/cmd/testrunner/node_interface.go index c71e623..9142a89 100644 --- a/cmd/testrunner/node_interface.go +++ b/cmd/testrunner/node_interface.go @@ -6,10 +6,9 @@ import ( ) type nodeInterface interface { - GetInfo() (*info, error) Connect(key, host string) error NewAddress() (string, error) - OpenChannel(peerKey string, amtSat int64, pushAmtSat int64, private bool) (*lnrpc.ChannelPoint, error) + OpenChannel(peerKey string, amtSat int64, pushAmtSat int64, private bool) error ActiveChannels() (int, error) AddInvoice(amtMsat int64) (string, error) SendPayment(invoice string, aliasMap map[string]string) error diff --git a/cmd/testrunner/sensei.go b/cmd/testrunner/sensei.go new file mode 100644 index 0000000..02c1f5d --- /dev/null +++ b/cmd/testrunner/sensei.go @@ -0,0 +1,269 @@ +package main + +import ( + "context" + "fmt" + "time" + + "github.com/bottlepay/lightning-benchmark/graphreader" + "github.com/bottlepay/lightning-benchmark/sensei" + "github.com/lightningnetwork/lnd/lnrpc" + "github.com/lightningnetwork/lnd/routing/route" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +type senseiConnection struct { + conn *grpc.ClientConn + pubKey route.Vertex + alias string + client sensei.NodeClient +} + +func getSenseiConnection(alias string) (*senseiConnection, error) { + logger := log.With("node", alias) + + rpcHost := fmt.Sprintf("node-%v:5401", alias) + + opts := []grpc.DialOption{ + grpc.WithTransportCredentials(insecure.NewCredentials()), + } + + logger.Infow("Attempting to connect to sensei") + + var adminConn *grpc.ClientConn + err := tryFunc( + func() error { + var err error + adminConn, err = grpc.Dial(rpcHost, opts...) + if err != nil { + return err + } + return err + }, 60) + if err != nil { + return nil, err + } + defer adminConn.Close() + + logger.Infow("Creating node") + + adminClient := sensei.NewAdminClient(adminConn) + + createResp, err := adminClient.CreateAdmin(context.Background(), &sensei.CreateAdminRequest{ + Username: "admin", + Alias: alias, + Passphrase: "secret", + Start: true, + }) + if err != nil { + return nil, err + } + + pubkey, err := route.NewVertexFromStr(createResp.Pubkey) + if err != nil { + return nil, err + } + + time.Sleep(time.Second) + + mac := createResp.Macaroon + + cred, err := NewMacaroonCredential(mac) + if err != nil { + return nil, err + } + + opts = append(opts, + grpc.WithPerRPCCredentials(cred), + ) + + logger.Infow("Connecting with macaroon") + + var conn *grpc.ClientConn + err = tryFunc( + func() error { + var err error + conn, err = grpc.Dial(rpcHost, opts...) + if err != nil { + return err + } + return err + }, 60) + if err != nil { + return nil, err + } + + return &senseiConnection{ + alias: alias, + conn: conn, + pubKey: pubkey, + client: sensei.NewNodeClient(conn), + }, nil +} + +func (l *senseiConnection) PubKey() string { + return l.pubKey.String() +} + +func (l *senseiConnection) Close() { + l.conn.Close() +} + +func (l *senseiConnection) Connect(key, host string) error { + _, err := l.client.ConnectPeer(context.Background(), &sensei.ConnectPeerRequest{ + NodeConnectionString: fmt.Sprintf("%v@%v", key, host), + }) + + return err +} + +func (l *senseiConnection) NewAddress() (string, error) { + resp, err := l.client.GetUnusedAddress( + context.Background(), + &sensei.GetUnusedAddressRequest{}, + ) + if err != nil { + return "", err + } + return resp.Address, nil +} + +func (l *senseiConnection) OpenChannel(peerKey string, amtSat int64, + pushAmtSat int64, private bool) error { + + var pushAmtMsats uint64 = uint64(pushAmtSat * 1000) + + _, err := l.client.OpenChannels(context.Background(), &sensei.OpenChannelsRequest{ + Requests: []*sensei.OpenChannelRequest{ + { + AmountSats: uint64(amtSat), + Public: !private, + CounterpartyPubkey: peerKey, + PushAmountMsats: &pushAmtMsats, + }, + }, + }) + if err != nil { + return err + } + + return nil +} + +func (l *senseiConnection) SetPolicy(chanPoint *lnrpc.ChannelPoint, + policy *graphreader.PolicyData) error { + + // Not necessary for sender node. + panic("not implemented") +} + +func (l *senseiConnection) ActiveChannels() (int, error) { + resp, err := l.client.ListChannels(context.Background(), &sensei.ListChannelsRequest{}) + if err != nil { + return 0, err + } + + var active = 0 + for _, ch := range resp.Channels { + if ch.IsUsable { + active++ + } + } + + return active, nil +} + +func (l *senseiConnection) IsSynced(totalEdges, localChannels int) (bool, error) { + resp, err := l.client.NetworkGraphInfo(context.Background(), &sensei.NetworkGraphInfoRequest{}) + if err != nil { + return false, err + } + + log.Debugw("Syncing", + "edges", resp.NumKnownEdgePolicies, + "totalEdges", totalEdges, + "localChannels", localChannels) + + synced := resp.NumKnownEdgePolicies == uint64(totalEdges) + + return synced, nil +} + +func (l *senseiConnection) AddInvoice(amtMsat int64) (string, error) { + // Not necessary for sender node. + panic("not implemented") +} + +func (l *senseiConnection) SendPayment(invoice string, aliasMap map[string]string) error { + _, err := l.client.PayInvoice(context.Background(), &sensei.PayInvoiceRequest{ + Invoice: invoice, + }) + if err != nil { + return err + } + + return nil +} + +func (l *senseiConnection) HasFunds() error { + for { + resp, err := l.client.GetBalance(context.Background(), + &sensei.GetBalanceRequest{}) + if err != nil { + return err + } + + if resp.OnchainBalanceSats > 0 { + return nil + } + + time.Sleep(time.Second) + } +} + +func (l *senseiConnection) Restart() (nodeInterface, error) { + // Not needed for sensei to get synced correctly - hopefully. + panic("not implemented") +} + +func (l *senseiConnection) GetChannelBalance() (int, error) { + resp, err := l.client.GetBalance(context.Background(), + &sensei.GetBalanceRequest{}) + if err != nil { + return 0, err + } + + return int(resp.ChannelBalanceMsats) / 1000, nil +} + +// MacaroonCredential wraps a macaroon to implement the +// credentials.PerRPCCredentials interface. +type MacaroonCredential struct { + mac string +} + +// RequireTransportSecurity implements the PerRPCCredentials interface. +func (m MacaroonCredential) RequireTransportSecurity() bool { + return false +} + +// GetRequestMetadata implements the PerRPCCredentials interface. This method +// is required in order to pass the wrapped macaroon into the gRPC context. +// With this, the macaroon will be available within the request handling scope +// of the ultimate gRPC server implementation. +func (m MacaroonCredential) GetRequestMetadata(ctx context.Context, + uri ...string) (map[string]string, error) { + + md := make(map[string]string) + md["macaroon"] = m.mac + return md, nil +} + +// NewMacaroonCredential returns a copy of the passed macaroon wrapped in a +// MacaroonCredential struct which implements PerRPCCredentials. +func NewMacaroonCredential(mac string) (MacaroonCredential, error) { + ms := MacaroonCredential{mac: mac} + + return ms, nil +} diff --git a/run.sh b/run.sh index e6851b8..418088a 100755 --- a/run.sh +++ b/run.sh @@ -6,7 +6,7 @@ then exit 1 fi -if [[ $1 != 'cln' && $1 != 'lnd' && $1 != 'lnd-managej' ]] +if [[ $1 != 'cln' && $1 != 'lnd' && $1 != 'lnd-managej' && $1 != 'sensei' ]] then echo "unknown target" exit 1 diff --git a/sensei/Dockerfile b/sensei/Dockerfile new file mode 100644 index 0000000..6a47fa7 --- /dev/null +++ b/sensei/Dockerfile @@ -0,0 +1,31 @@ +FROM node:16 as build-web-admin + +WORKDIR /build + +RUN git clone https://github.com/L2-Technology/sensei.git . && git checkout 87b538e460779e00695353b90ba2e15d2fc80564 + +WORKDIR /build/web-admin +RUN npm install +RUN npm run build + +FROM rust:1.56 as build-sensei + +WORKDIR /build + +# copy your source tree +RUN git clone https://github.com/L2-Technology/sensei.git . && git checkout 87b538e460779e00695353b90ba2e15d2fc80564 + +COPY --from=build-web-admin /build/web-admin/build/ /build/web-admin/build/ + +RUN rustup component add rustfmt + +RUN cargo build --verbose --release + +# our final base +FROM rust:1.56 + +# copy the build artifact from the build stage +COPY --from=build-sensei /build/target/release/* . + +# set the startup command to run your binary +CMD ["./senseid"] diff --git a/sensei/Dockerfile-proto b/sensei/Dockerfile-proto new file mode 100644 index 0000000..bc64825 --- /dev/null +++ b/sensei/Dockerfile-proto @@ -0,0 +1,9 @@ +FROM golang:1.16 + +RUN apt-get update && \ + apt-get install -y wget make unzip && \ + ls + +COPY Makefile . + +RUN make protoc-buf protoc-tools protoc-go-tools \ No newline at end of file diff --git a/sensei/Makefile b/sensei/Makefile new file mode 100644 index 0000000..f83b6db --- /dev/null +++ b/sensei/Makefile @@ -0,0 +1,31 @@ +protoc_os = linux +ifeq ($(shell uname -s),Darwin) +protoc_os = osx +endif + +protoc_arch = $(shell uname -m) +ifeq (protoc_arch,aarch64) +protoc_arch = aarch_64 +else +protoc_arch = x86_64 +endif + +protoc-go-docker: + docker build -f Dockerfile-proto . -t lnmux-protobuf-builder + docker run --rm -it -v "$(shell pwd):/app" lnmux-protobuf-builder sh -c 'cd /app && make buf-gen' + +protoc-tools: + wget https://github.com/protocolbuffers/protobuf/releases/download/v3.18.2/protoc-3.18.2-${protoc_os}-${protoc_arch}.zip -O /tmp/protoc.zip + unzip -d /usr/local /tmp/protoc.zip + +protoc-buf: + curl -sSL "https://github.com/bufbuild/buf/releases/download/v1.0.0-rc2/buf-$(shell uname -s)-$(shell uname -m).tar.gz" | tar -xvzf - -C /usr/local --strip-components 1 + +protoc-go-tools: + go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.27.1 + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1 + go install github.com/envoyproxy/protoc-gen-validate@v0.6.1 + go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@v2.5.0 + +buf-gen: + buf generate diff --git a/sensei/buf.gen.yaml b/sensei/buf.gen.yaml new file mode 100644 index 0000000..5ef6dd0 --- /dev/null +++ b/sensei/buf.gen.yaml @@ -0,0 +1,15 @@ +version: v1 +plugins: + - name: go + out: . + opt: paths=source_relative + strategy: directory + - name: go-grpc + out: . + opt: paths=source_relative + # - name: grpc-gateway + # out: . + # opt: logtostderr=true,paths=source_relative + # - name: validate + # out: . + # opt: lang=go,paths=source_relative \ No newline at end of file diff --git a/sensei/sensei.pb.go b/sensei/sensei.pb.go new file mode 100644 index 0000000..1f74835 --- /dev/null +++ b/sensei/sensei.pb.go @@ -0,0 +1,6552 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.27.1 +// protoc v3.18.0 +// source: sensei.proto + +package sensei + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Role uint32 `protobuf:"varint,4,opt,name=role,proto3" json:"role,omitempty"` + Username string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"` + Alias string `protobuf:"bytes,6,opt,name=alias,proto3" json:"alias,omitempty"` + Network string `protobuf:"bytes,7,opt,name=network,proto3" json:"network,omitempty"` + ListenAddr string `protobuf:"bytes,8,opt,name=listen_addr,json=listenAddr,proto3" json:"listen_addr,omitempty"` + ListenPort uint32 `protobuf:"varint,9,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + Pubkey string `protobuf:"bytes,10,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Status uint32 `protobuf:"varint,11,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *ListNode) Reset() { + *x = ListNode{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNode) ProtoMessage() {} + +func (x *ListNode) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNode.ProtoReflect.Descriptor instead. +func (*ListNode) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{0} +} + +func (x *ListNode) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ListNode) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *ListNode) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *ListNode) GetRole() uint32 { + if x != nil { + return x.Role + } + return 0 +} + +func (x *ListNode) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *ListNode) GetAlias() string { + if x != nil { + return x.Alias + } + return "" +} + +func (x *ListNode) GetNetwork() string { + if x != nil { + return x.Network + } + return "" +} + +func (x *ListNode) GetListenAddr() string { + if x != nil { + return x.ListenAddr + } + return "" +} + +func (x *ListNode) GetListenPort() uint32 { + if x != nil { + return x.ListenPort + } + return 0 +} + +func (x *ListNode) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +func (x *ListNode) GetStatus() uint32 { + if x != nil { + return x.Status + } + return 0 +} + +type Token struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + CreatedAt int64 `protobuf:"varint,2,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt int64 `protobuf:"varint,3,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ExpiresAt int64 `protobuf:"varint,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Token string `protobuf:"bytes,6,opt,name=token,proto3" json:"token,omitempty"` + SingleUse bool `protobuf:"varint,7,opt,name=single_use,json=singleUse,proto3" json:"single_use,omitempty"` + Scope string `protobuf:"bytes,8,opt,name=scope,proto3" json:"scope,omitempty"` +} + +func (x *Token) Reset() { + *x = Token{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Token) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Token) ProtoMessage() {} + +func (x *Token) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Token.ProtoReflect.Descriptor instead. +func (*Token) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{1} +} + +func (x *Token) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Token) GetCreatedAt() int64 { + if x != nil { + return x.CreatedAt + } + return 0 +} + +func (x *Token) GetUpdatedAt() int64 { + if x != nil { + return x.UpdatedAt + } + return 0 +} + +func (x *Token) GetExpiresAt() int64 { + if x != nil { + return x.ExpiresAt + } + return 0 +} + +func (x *Token) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Token) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +func (x *Token) GetSingleUse() bool { + if x != nil { + return x.SingleUse + } + return false +} + +func (x *Token) GetScope() string { + if x != nil { + return x.Scope + } + return "" +} + +type PaginationRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Page uint32 `protobuf:"varint,1,opt,name=page,proto3" json:"page,omitempty"` + Take uint32 `protobuf:"varint,3,opt,name=take,proto3" json:"take,omitempty"` + Query *string `protobuf:"bytes,4,opt,name=query,proto3,oneof" json:"query,omitempty"` +} + +func (x *PaginationRequest) Reset() { + *x = PaginationRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PaginationRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PaginationRequest) ProtoMessage() {} + +func (x *PaginationRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PaginationRequest.ProtoReflect.Descriptor instead. +func (*PaginationRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{2} +} + +func (x *PaginationRequest) GetPage() uint32 { + if x != nil { + return x.Page + } + return 0 +} + +func (x *PaginationRequest) GetTake() uint32 { + if x != nil { + return x.Take + } + return 0 +} + +func (x *PaginationRequest) GetQuery() string { + if x != nil && x.Query != nil { + return *x.Query + } + return "" +} + +type PaginationResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + HasMore bool `protobuf:"varint,1,opt,name=has_more,json=hasMore,proto3" json:"has_more,omitempty"` + Total uint64 `protobuf:"varint,2,opt,name=total,proto3" json:"total,omitempty"` +} + +func (x *PaginationResponse) Reset() { + *x = PaginationResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PaginationResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PaginationResponse) ProtoMessage() {} + +func (x *PaginationResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PaginationResponse.ProtoReflect.Descriptor instead. +func (*PaginationResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{3} +} + +func (x *PaginationResponse) GetHasMore() bool { + if x != nil { + return x.HasMore + } + return false +} + +func (x *PaginationResponse) GetTotal() uint64 { + if x != nil { + return x.Total + } + return 0 +} + +type ListNodesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` +} + +func (x *ListNodesRequest) Reset() { + *x = ListNodesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesRequest) ProtoMessage() {} + +func (x *ListNodesRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesRequest.ProtoReflect.Descriptor instead. +func (*ListNodesRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{4} +} + +func (x *ListNodesRequest) GetPagination() *PaginationRequest { + if x != nil { + return x.Pagination + } + return nil +} + +type ListNodesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Nodes []*ListNode `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` + Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *ListNodesResponse) Reset() { + *x = ListNodesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListNodesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListNodesResponse) ProtoMessage() {} + +func (x *ListNodesResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListNodesResponse.ProtoReflect.Descriptor instead. +func (*ListNodesResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{5} +} + +func (x *ListNodesResponse) GetNodes() []*ListNode { + if x != nil { + return x.Nodes + } + return nil +} + +func (x *ListNodesResponse) GetPagination() *PaginationResponse { + if x != nil { + return x.Pagination + } + return nil +} + +type ListTokensRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` +} + +func (x *ListTokensRequest) Reset() { + *x = ListTokensRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTokensRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTokensRequest) ProtoMessage() {} + +func (x *ListTokensRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTokensRequest.ProtoReflect.Descriptor instead. +func (*ListTokensRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{6} +} + +func (x *ListTokensRequest) GetPagination() *PaginationRequest { + if x != nil { + return x.Pagination + } + return nil +} + +type ListTokensResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tokens []*Token `protobuf:"bytes,1,rep,name=tokens,proto3" json:"tokens,omitempty"` + Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *ListTokensResponse) Reset() { + *x = ListTokensResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTokensResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTokensResponse) ProtoMessage() {} + +func (x *ListTokensResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListTokensResponse.ProtoReflect.Descriptor instead. +func (*ListTokensResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{7} +} + +func (x *ListTokensResponse) GetTokens() []*Token { + if x != nil { + return x.Tokens + } + return nil +} + +func (x *ListTokensResponse) GetPagination() *PaginationResponse { + if x != nil { + return x.Pagination + } + return nil +} + +type CreateAdminRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` + Passphrase string `protobuf:"bytes,3,opt,name=passphrase,proto3" json:"passphrase,omitempty"` + Start bool `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty"` +} + +func (x *CreateAdminRequest) Reset() { + *x = CreateAdminRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAdminRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAdminRequest) ProtoMessage() {} + +func (x *CreateAdminRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAdminRequest.ProtoReflect.Descriptor instead. +func (*CreateAdminRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{8} +} + +func (x *CreateAdminRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *CreateAdminRequest) GetAlias() string { + if x != nil { + return x.Alias + } + return "" +} + +func (x *CreateAdminRequest) GetPassphrase() string { + if x != nil { + return x.Passphrase + } + return "" +} + +func (x *CreateAdminRequest) GetStart() bool { + if x != nil { + return x.Start + } + return false +} + +type CreateAdminResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Macaroon string `protobuf:"bytes,2,opt,name=macaroon,proto3" json:"macaroon,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` + Role uint32 `protobuf:"varint,4,opt,name=role,proto3" json:"role,omitempty"` + Token string `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *CreateAdminResponse) Reset() { + *x = CreateAdminResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAdminResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAdminResponse) ProtoMessage() {} + +func (x *CreateAdminResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAdminResponse.ProtoReflect.Descriptor instead. +func (*CreateAdminResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{9} +} + +func (x *CreateAdminResponse) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +func (x *CreateAdminResponse) GetMacaroon() string { + if x != nil { + return x.Macaroon + } + return "" +} + +func (x *CreateAdminResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *CreateAdminResponse) GetRole() uint32 { + if x != nil { + return x.Role + } + return 0 +} + +func (x *CreateAdminResponse) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +type CreateNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` + Passphrase string `protobuf:"bytes,3,opt,name=passphrase,proto3" json:"passphrase,omitempty"` + Start bool `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty"` +} + +func (x *CreateNodeRequest) Reset() { + *x = CreateNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNodeRequest) ProtoMessage() {} + +func (x *CreateNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNodeRequest.ProtoReflect.Descriptor instead. +func (*CreateNodeRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{10} +} + +func (x *CreateNodeRequest) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + +func (x *CreateNodeRequest) GetAlias() string { + if x != nil { + return x.Alias + } + return "" +} + +func (x *CreateNodeRequest) GetPassphrase() string { + if x != nil { + return x.Passphrase + } + return "" +} + +func (x *CreateNodeRequest) GetStart() bool { + if x != nil { + return x.Start + } + return false +} + +type CreateNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Macaroon string `protobuf:"bytes,2,opt,name=macaroon,proto3" json:"macaroon,omitempty"` + ListenAddr string `protobuf:"bytes,3,opt,name=listen_addr,json=listenAddr,proto3" json:"listen_addr,omitempty"` + ListenPort int32 `protobuf:"varint,4,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *CreateNodeResponse) Reset() { + *x = CreateNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateNodeResponse) ProtoMessage() {} + +func (x *CreateNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateNodeResponse.ProtoReflect.Descriptor instead. +func (*CreateNodeResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{11} +} + +func (x *CreateNodeResponse) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +func (x *CreateNodeResponse) GetMacaroon() string { + if x != nil { + return x.Macaroon + } + return "" +} + +func (x *CreateNodeResponse) GetListenAddr() string { + if x != nil { + return x.ListenAddr + } + return "" +} + +func (x *CreateNodeResponse) GetListenPort() int32 { + if x != nil { + return x.ListenPort + } + return 0 +} + +func (x *CreateNodeResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` +} + +func (x *DeleteNodeRequest) Reset() { + *x = DeleteNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteNodeRequest) ProtoMessage() {} + +func (x *DeleteNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteNodeRequest.ProtoReflect.Descriptor instead. +func (*DeleteNodeRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{12} +} + +func (x *DeleteNodeRequest) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +type DeleteNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteNodeResponse) Reset() { + *x = DeleteNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteNodeResponse) ProtoMessage() {} + +func (x *DeleteNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteNodeResponse.ProtoReflect.Descriptor instead. +func (*DeleteNodeResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{13} +} + +type CreateTokenRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"` + ExpiresAt uint64 `protobuf:"varint,3,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` + SingleUse bool `protobuf:"varint,4,opt,name=single_use,json=singleUse,proto3" json:"single_use,omitempty"` +} + +func (x *CreateTokenRequest) Reset() { + *x = CreateTokenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateTokenRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateTokenRequest) ProtoMessage() {} + +func (x *CreateTokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateTokenRequest.ProtoReflect.Descriptor instead. +func (*CreateTokenRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{14} +} + +func (x *CreateTokenRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateTokenRequest) GetScope() string { + if x != nil { + return x.Scope + } + return "" +} + +func (x *CreateTokenRequest) GetExpiresAt() uint64 { + if x != nil { + return x.ExpiresAt + } + return 0 +} + +func (x *CreateTokenRequest) GetSingleUse() bool { + if x != nil { + return x.SingleUse + } + return false +} + +type DeleteTokenRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteTokenRequest) Reset() { + *x = DeleteTokenRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteTokenRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteTokenRequest) ProtoMessage() {} + +func (x *DeleteTokenRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteTokenRequest.ProtoReflect.Descriptor instead. +func (*DeleteTokenRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{15} +} + +func (x *DeleteTokenRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type DeleteTokenResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteTokenResponse) Reset() { + *x = DeleteTokenResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteTokenResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteTokenResponse) ProtoMessage() {} + +func (x *DeleteTokenResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteTokenResponse.ProtoReflect.Descriptor instead. +func (*DeleteTokenResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{16} +} + +type StartAdminRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Passphrase string `protobuf:"bytes,1,opt,name=passphrase,proto3" json:"passphrase,omitempty"` +} + +func (x *StartAdminRequest) Reset() { + *x = StartAdminRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartAdminRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartAdminRequest) ProtoMessage() {} + +func (x *StartAdminRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartAdminRequest.ProtoReflect.Descriptor instead. +func (*StartAdminRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{17} +} + +func (x *StartAdminRequest) GetPassphrase() string { + if x != nil { + return x.Passphrase + } + return "" +} + +type StartAdminResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Macaroon string `protobuf:"bytes,2,opt,name=macaroon,proto3" json:"macaroon,omitempty"` + Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"` +} + +func (x *StartAdminResponse) Reset() { + *x = StartAdminResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartAdminResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartAdminResponse) ProtoMessage() {} + +func (x *StartAdminResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartAdminResponse.ProtoReflect.Descriptor instead. +func (*StartAdminResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{18} +} + +func (x *StartAdminResponse) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +func (x *StartAdminResponse) GetMacaroon() string { + if x != nil { + return x.Macaroon + } + return "" +} + +func (x *StartAdminResponse) GetToken() string { + if x != nil { + return x.Token + } + return "" +} + +type GetStatusRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetStatusRequest) Reset() { + *x = GetStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStatusRequest) ProtoMessage() {} + +func (x *GetStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStatusRequest.ProtoReflect.Descriptor instead. +func (*GetStatusRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{19} +} + +type GetStatusResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + Alias *string `protobuf:"bytes,2,opt,name=alias,proto3,oneof" json:"alias,omitempty"` + Pubkey *string `protobuf:"bytes,3,opt,name=pubkey,proto3,oneof" json:"pubkey,omitempty"` + Username *string `protobuf:"bytes,4,opt,name=username,proto3,oneof" json:"username,omitempty"` + Role *uint32 `protobuf:"varint,5,opt,name=role,proto3,oneof" json:"role,omitempty"` + Created bool `protobuf:"varint,6,opt,name=created,proto3" json:"created,omitempty"` + Running bool `protobuf:"varint,7,opt,name=running,proto3" json:"running,omitempty"` + Authenticated bool `protobuf:"varint,8,opt,name=authenticated,proto3" json:"authenticated,omitempty"` +} + +func (x *GetStatusResponse) Reset() { + *x = GetStatusResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetStatusResponse) ProtoMessage() {} + +func (x *GetStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetStatusResponse.ProtoReflect.Descriptor instead. +func (*GetStatusResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{20} +} + +func (x *GetStatusResponse) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *GetStatusResponse) GetAlias() string { + if x != nil && x.Alias != nil { + return *x.Alias + } + return "" +} + +func (x *GetStatusResponse) GetPubkey() string { + if x != nil && x.Pubkey != nil { + return *x.Pubkey + } + return "" +} + +func (x *GetStatusResponse) GetUsername() string { + if x != nil && x.Username != nil { + return *x.Username + } + return "" +} + +func (x *GetStatusResponse) GetRole() uint32 { + if x != nil && x.Role != nil { + return *x.Role + } + return 0 +} + +func (x *GetStatusResponse) GetCreated() bool { + if x != nil { + return x.Created + } + return false +} + +func (x *GetStatusResponse) GetRunning() bool { + if x != nil { + return x.Running + } + return false +} + +func (x *GetStatusResponse) GetAuthenticated() bool { + if x != nil { + return x.Authenticated + } + return false +} + +type StartNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Passphrase string `protobuf:"bytes,1,opt,name=passphrase,proto3" json:"passphrase,omitempty"` +} + +func (x *StartNodeRequest) Reset() { + *x = StartNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartNodeRequest) ProtoMessage() {} + +func (x *StartNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartNodeRequest.ProtoReflect.Descriptor instead. +func (*StartNodeRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{21} +} + +func (x *StartNodeRequest) GetPassphrase() string { + if x != nil { + return x.Passphrase + } + return "" +} + +type StartNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StartNodeResponse) Reset() { + *x = StartNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StartNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StartNodeResponse) ProtoMessage() {} + +func (x *StartNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StartNodeResponse.ProtoReflect.Descriptor instead. +func (*StartNodeResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{22} +} + +type StopNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StopNodeRequest) Reset() { + *x = StopNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopNodeRequest) ProtoMessage() {} + +func (x *StopNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopNodeRequest.ProtoReflect.Descriptor instead. +func (*StopNodeRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{23} +} + +type StopNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *StopNodeResponse) Reset() { + *x = StopNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StopNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StopNodeResponse) ProtoMessage() {} + +func (x *StopNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StopNodeResponse.ProtoReflect.Descriptor instead. +func (*StopNodeResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{24} +} + +type AdminStartNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Passphrase string `protobuf:"bytes,1,opt,name=passphrase,proto3" json:"passphrase,omitempty"` + Pubkey string `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` +} + +func (x *AdminStartNodeRequest) Reset() { + *x = AdminStartNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdminStartNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdminStartNodeRequest) ProtoMessage() {} + +func (x *AdminStartNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdminStartNodeRequest.ProtoReflect.Descriptor instead. +func (*AdminStartNodeRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{25} +} + +func (x *AdminStartNodeRequest) GetPassphrase() string { + if x != nil { + return x.Passphrase + } + return "" +} + +func (x *AdminStartNodeRequest) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +type AdminStartNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Macaroon string `protobuf:"bytes,1,opt,name=macaroon,proto3" json:"macaroon,omitempty"` +} + +func (x *AdminStartNodeResponse) Reset() { + *x = AdminStartNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdminStartNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdminStartNodeResponse) ProtoMessage() {} + +func (x *AdminStartNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdminStartNodeResponse.ProtoReflect.Descriptor instead. +func (*AdminStartNodeResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{26} +} + +func (x *AdminStartNodeResponse) GetMacaroon() string { + if x != nil { + return x.Macaroon + } + return "" +} + +type AdminStopNodeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey string `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` +} + +func (x *AdminStopNodeRequest) Reset() { + *x = AdminStopNodeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdminStopNodeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdminStopNodeRequest) ProtoMessage() {} + +func (x *AdminStopNodeRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdminStopNodeRequest.ProtoReflect.Descriptor instead. +func (*AdminStopNodeRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{27} +} + +func (x *AdminStopNodeRequest) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +type AdminStopNodeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *AdminStopNodeResponse) Reset() { + *x = AdminStopNodeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AdminStopNodeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AdminStopNodeResponse) ProtoMessage() {} + +func (x *AdminStopNodeResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AdminStopNodeResponse.ProtoReflect.Descriptor instead. +func (*AdminStopNodeResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{28} +} + +type GetUnusedAddressRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetUnusedAddressRequest) Reset() { + *x = GetUnusedAddressRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetUnusedAddressRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUnusedAddressRequest) ProtoMessage() {} + +func (x *GetUnusedAddressRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUnusedAddressRequest.ProtoReflect.Descriptor instead. +func (*GetUnusedAddressRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{29} +} + +type GetUnusedAddressResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +} + +func (x *GetUnusedAddressResponse) Reset() { + *x = GetUnusedAddressResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetUnusedAddressResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUnusedAddressResponse) ProtoMessage() {} + +func (x *GetUnusedAddressResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUnusedAddressResponse.ProtoReflect.Descriptor instead. +func (*GetUnusedAddressResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{30} +} + +func (x *GetUnusedAddressResponse) GetAddress() string { + if x != nil { + return x.Address + } + return "" +} + +type GetBalanceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *GetBalanceRequest) Reset() { + *x = GetBalanceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBalanceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBalanceRequest) ProtoMessage() {} + +func (x *GetBalanceRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBalanceRequest.ProtoReflect.Descriptor instead. +func (*GetBalanceRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{31} +} + +type GetBalanceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OnchainBalanceSats uint64 `protobuf:"varint,1,opt,name=onchain_balance_sats,json=onchainBalanceSats,proto3" json:"onchain_balance_sats,omitempty"` + ChannelBalanceMsats uint64 `protobuf:"varint,2,opt,name=channel_balance_msats,json=channelBalanceMsats,proto3" json:"channel_balance_msats,omitempty"` + ChannelOutboundCapacityMsats uint64 `protobuf:"varint,3,opt,name=channel_outbound_capacity_msats,json=channelOutboundCapacityMsats,proto3" json:"channel_outbound_capacity_msats,omitempty"` + ChannelInboundCapacityMsats uint64 `protobuf:"varint,4,opt,name=channel_inbound_capacity_msats,json=channelInboundCapacityMsats,proto3" json:"channel_inbound_capacity_msats,omitempty"` + UsableChannelOutboundCapacityMsats uint64 `protobuf:"varint,5,opt,name=usable_channel_outbound_capacity_msats,json=usableChannelOutboundCapacityMsats,proto3" json:"usable_channel_outbound_capacity_msats,omitempty"` + UsableChannelInboundCapacityMsats uint64 `protobuf:"varint,6,opt,name=usable_channel_inbound_capacity_msats,json=usableChannelInboundCapacityMsats,proto3" json:"usable_channel_inbound_capacity_msats,omitempty"` +} + +func (x *GetBalanceResponse) Reset() { + *x = GetBalanceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBalanceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBalanceResponse) ProtoMessage() {} + +func (x *GetBalanceResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetBalanceResponse.ProtoReflect.Descriptor instead. +func (*GetBalanceResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{32} +} + +func (x *GetBalanceResponse) GetOnchainBalanceSats() uint64 { + if x != nil { + return x.OnchainBalanceSats + } + return 0 +} + +func (x *GetBalanceResponse) GetChannelBalanceMsats() uint64 { + if x != nil { + return x.ChannelBalanceMsats + } + return 0 +} + +func (x *GetBalanceResponse) GetChannelOutboundCapacityMsats() uint64 { + if x != nil { + return x.ChannelOutboundCapacityMsats + } + return 0 +} + +func (x *GetBalanceResponse) GetChannelInboundCapacityMsats() uint64 { + if x != nil { + return x.ChannelInboundCapacityMsats + } + return 0 +} + +func (x *GetBalanceResponse) GetUsableChannelOutboundCapacityMsats() uint64 { + if x != nil { + return x.UsableChannelOutboundCapacityMsats + } + return 0 +} + +func (x *GetBalanceResponse) GetUsableChannelInboundCapacityMsats() uint64 { + if x != nil { + return x.UsableChannelInboundCapacityMsats + } + return 0 +} + +type OpenChannelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CounterpartyPubkey string `protobuf:"bytes,1,opt,name=counterparty_pubkey,json=counterpartyPubkey,proto3" json:"counterparty_pubkey,omitempty"` + AmountSats uint64 `protobuf:"varint,2,opt,name=amount_sats,json=amountSats,proto3" json:"amount_sats,omitempty"` + Public bool `protobuf:"varint,3,opt,name=public,proto3" json:"public,omitempty"` + PushAmountMsats *uint64 `protobuf:"varint,4,opt,name=push_amount_msats,json=pushAmountMsats,proto3,oneof" json:"push_amount_msats,omitempty"` + CustomId *uint64 `protobuf:"varint,5,opt,name=custom_id,json=customId,proto3,oneof" json:"custom_id,omitempty"` + CounterpartyHostPort *string `protobuf:"bytes,6,opt,name=counterparty_host_port,json=counterpartyHostPort,proto3,oneof" json:"counterparty_host_port,omitempty"` + ForwardingFeeProportionalMillionths *uint32 `protobuf:"varint,7,opt,name=forwarding_fee_proportional_millionths,json=forwardingFeeProportionalMillionths,proto3,oneof" json:"forwarding_fee_proportional_millionths,omitempty"` + ForwardingFeeBaseMsat *uint32 `protobuf:"varint,8,opt,name=forwarding_fee_base_msat,json=forwardingFeeBaseMsat,proto3,oneof" json:"forwarding_fee_base_msat,omitempty"` + CltvExpiryDelta *uint32 `protobuf:"varint,9,opt,name=cltv_expiry_delta,json=cltvExpiryDelta,proto3,oneof" json:"cltv_expiry_delta,omitempty"` + MaxDustHtlcExposureMsat *uint64 `protobuf:"varint,10,opt,name=max_dust_htlc_exposure_msat,json=maxDustHtlcExposureMsat,proto3,oneof" json:"max_dust_htlc_exposure_msat,omitempty"` + ForceCloseAvoidanceMaxFeeSatoshis *uint64 `protobuf:"varint,11,opt,name=force_close_avoidance_max_fee_satoshis,json=forceCloseAvoidanceMaxFeeSatoshis,proto3,oneof" json:"force_close_avoidance_max_fee_satoshis,omitempty"` +} + +func (x *OpenChannelRequest) Reset() { + *x = OpenChannelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpenChannelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenChannelRequest) ProtoMessage() {} + +func (x *OpenChannelRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenChannelRequest.ProtoReflect.Descriptor instead. +func (*OpenChannelRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{33} +} + +func (x *OpenChannelRequest) GetCounterpartyPubkey() string { + if x != nil { + return x.CounterpartyPubkey + } + return "" +} + +func (x *OpenChannelRequest) GetAmountSats() uint64 { + if x != nil { + return x.AmountSats + } + return 0 +} + +func (x *OpenChannelRequest) GetPublic() bool { + if x != nil { + return x.Public + } + return false +} + +func (x *OpenChannelRequest) GetPushAmountMsats() uint64 { + if x != nil && x.PushAmountMsats != nil { + return *x.PushAmountMsats + } + return 0 +} + +func (x *OpenChannelRequest) GetCustomId() uint64 { + if x != nil && x.CustomId != nil { + return *x.CustomId + } + return 0 +} + +func (x *OpenChannelRequest) GetCounterpartyHostPort() string { + if x != nil && x.CounterpartyHostPort != nil { + return *x.CounterpartyHostPort + } + return "" +} + +func (x *OpenChannelRequest) GetForwardingFeeProportionalMillionths() uint32 { + if x != nil && x.ForwardingFeeProportionalMillionths != nil { + return *x.ForwardingFeeProportionalMillionths + } + return 0 +} + +func (x *OpenChannelRequest) GetForwardingFeeBaseMsat() uint32 { + if x != nil && x.ForwardingFeeBaseMsat != nil { + return *x.ForwardingFeeBaseMsat + } + return 0 +} + +func (x *OpenChannelRequest) GetCltvExpiryDelta() uint32 { + if x != nil && x.CltvExpiryDelta != nil { + return *x.CltvExpiryDelta + } + return 0 +} + +func (x *OpenChannelRequest) GetMaxDustHtlcExposureMsat() uint64 { + if x != nil && x.MaxDustHtlcExposureMsat != nil { + return *x.MaxDustHtlcExposureMsat + } + return 0 +} + +func (x *OpenChannelRequest) GetForceCloseAvoidanceMaxFeeSatoshis() uint64 { + if x != nil && x.ForceCloseAvoidanceMaxFeeSatoshis != nil { + return *x.ForceCloseAvoidanceMaxFeeSatoshis + } + return 0 +} + +type OpenChannelResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Error bool `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + ErrorMessage *string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3,oneof" json:"error_message,omitempty"` + TempChannelId *string `protobuf:"bytes,3,opt,name=temp_channel_id,json=tempChannelId,proto3,oneof" json:"temp_channel_id,omitempty"` +} + +func (x *OpenChannelResult) Reset() { + *x = OpenChannelResult{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpenChannelResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenChannelResult) ProtoMessage() {} + +func (x *OpenChannelResult) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenChannelResult.ProtoReflect.Descriptor instead. +func (*OpenChannelResult) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{34} +} + +func (x *OpenChannelResult) GetError() bool { + if x != nil { + return x.Error + } + return false +} + +func (x *OpenChannelResult) GetErrorMessage() string { + if x != nil && x.ErrorMessage != nil { + return *x.ErrorMessage + } + return "" +} + +func (x *OpenChannelResult) GetTempChannelId() string { + if x != nil && x.TempChannelId != nil { + return *x.TempChannelId + } + return "" +} + +type OpenChannelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Requests []*OpenChannelRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` +} + +func (x *OpenChannelsRequest) Reset() { + *x = OpenChannelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpenChannelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenChannelsRequest) ProtoMessage() {} + +func (x *OpenChannelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenChannelsRequest.ProtoReflect.Descriptor instead. +func (*OpenChannelsRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{35} +} + +func (x *OpenChannelsRequest) GetRequests() []*OpenChannelRequest { + if x != nil { + return x.Requests + } + return nil +} + +type OpenChannelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Requests []*OpenChannelRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + Results []*OpenChannelResult `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` +} + +func (x *OpenChannelsResponse) Reset() { + *x = OpenChannelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpenChannelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpenChannelsResponse) ProtoMessage() {} + +func (x *OpenChannelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpenChannelsResponse.ProtoReflect.Descriptor instead. +func (*OpenChannelsResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{36} +} + +func (x *OpenChannelsResponse) GetRequests() []*OpenChannelRequest { + if x != nil { + return x.Requests + } + return nil +} + +func (x *OpenChannelsResponse) GetResults() []*OpenChannelResult { + if x != nil { + return x.Results + } + return nil +} + +type PayInvoiceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invoice string `protobuf:"bytes,1,opt,name=invoice,proto3" json:"invoice,omitempty"` +} + +func (x *PayInvoiceRequest) Reset() { + *x = PayInvoiceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayInvoiceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayInvoiceRequest) ProtoMessage() {} + +func (x *PayInvoiceRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayInvoiceRequest.ProtoReflect.Descriptor instead. +func (*PayInvoiceRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{37} +} + +func (x *PayInvoiceRequest) GetInvoice() string { + if x != nil { + return x.Invoice + } + return "" +} + +type PayInvoiceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PayInvoiceResponse) Reset() { + *x = PayInvoiceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PayInvoiceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PayInvoiceResponse) ProtoMessage() {} + +func (x *PayInvoiceResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PayInvoiceResponse.ProtoReflect.Descriptor instead. +func (*PayInvoiceResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{38} +} + +type DecodeInvoiceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invoice string `protobuf:"bytes,1,opt,name=invoice,proto3" json:"invoice,omitempty"` +} + +func (x *DecodeInvoiceRequest) Reset() { + *x = DecodeInvoiceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DecodeInvoiceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DecodeInvoiceRequest) ProtoMessage() {} + +func (x *DecodeInvoiceRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DecodeInvoiceRequest.ProtoReflect.Descriptor instead. +func (*DecodeInvoiceRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{39} +} + +func (x *DecodeInvoiceRequest) GetInvoice() string { + if x != nil { + return x.Invoice + } + return "" +} + +type DecodeInvoiceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invoice *Invoice `protobuf:"bytes,1,opt,name=invoice,proto3" json:"invoice,omitempty"` +} + +func (x *DecodeInvoiceResponse) Reset() { + *x = DecodeInvoiceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DecodeInvoiceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DecodeInvoiceResponse) ProtoMessage() {} + +func (x *DecodeInvoiceResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DecodeInvoiceResponse.ProtoReflect.Descriptor instead. +func (*DecodeInvoiceResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{40} +} + +func (x *DecodeInvoiceResponse) GetInvoice() *Invoice { + if x != nil { + return x.Invoice + } + return nil +} + +type Invoice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PaymentHash string `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` + Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` + Amount uint64 `protobuf:"varint,3,opt,name=amount,proto3" json:"amount,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Expiry uint64 `protobuf:"varint,5,opt,name=expiry,proto3" json:"expiry,omitempty"` + Timestamp uint64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + MinFinalCltvExpiry uint64 `protobuf:"varint,7,opt,name=min_final_cltv_expiry,json=minFinalCltvExpiry,proto3" json:"min_final_cltv_expiry,omitempty"` + RouteHints []*RouteHint `protobuf:"bytes,8,rep,name=route_hints,json=routeHints,proto3" json:"route_hints,omitempty"` + Features *Features `protobuf:"bytes,9,opt,name=features,proto3" json:"features,omitempty"` + PayeePubKey string `protobuf:"bytes,10,opt,name=payee_pub_key,json=payeePubKey,proto3" json:"payee_pub_key,omitempty"` +} + +func (x *Invoice) Reset() { + *x = Invoice{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Invoice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Invoice) ProtoMessage() {} + +func (x *Invoice) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Invoice.ProtoReflect.Descriptor instead. +func (*Invoice) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{41} +} + +func (x *Invoice) GetPaymentHash() string { + if x != nil { + return x.PaymentHash + } + return "" +} + +func (x *Invoice) GetCurrency() string { + if x != nil { + return x.Currency + } + return "" +} + +func (x *Invoice) GetAmount() uint64 { + if x != nil { + return x.Amount + } + return 0 +} + +func (x *Invoice) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *Invoice) GetExpiry() uint64 { + if x != nil { + return x.Expiry + } + return 0 +} + +func (x *Invoice) GetTimestamp() uint64 { + if x != nil { + return x.Timestamp + } + return 0 +} + +func (x *Invoice) GetMinFinalCltvExpiry() uint64 { + if x != nil { + return x.MinFinalCltvExpiry + } + return 0 +} + +func (x *Invoice) GetRouteHints() []*RouteHint { + if x != nil { + return x.RouteHints + } + return nil +} + +func (x *Invoice) GetFeatures() *Features { + if x != nil { + return x.Features + } + return nil +} + +func (x *Invoice) GetPayeePubKey() string { + if x != nil { + return x.PayeePubKey + } + return "" +} + +type RouteHint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hops []*RouteHintHop `protobuf:"bytes,1,rep,name=hops,proto3" json:"hops,omitempty"` +} + +func (x *RouteHint) Reset() { + *x = RouteHint{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RouteHint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteHint) ProtoMessage() {} + +func (x *RouteHint) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteHint.ProtoReflect.Descriptor instead. +func (*RouteHint) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{42} +} + +func (x *RouteHint) GetHops() []*RouteHintHop { + if x != nil { + return x.Hops + } + return nil +} + +type RouteHintHop struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SrcNodeId string `protobuf:"bytes,1,opt,name=src_node_id,json=srcNodeId,proto3" json:"src_node_id,omitempty"` + ShortChannelId uint64 `protobuf:"varint,2,opt,name=short_channel_id,json=shortChannelId,proto3" json:"short_channel_id,omitempty"` + Fees *RoutingFees `protobuf:"bytes,3,opt,name=fees,proto3" json:"fees,omitempty"` + CltvExpiryDelta uint32 `protobuf:"varint,4,opt,name=cltv_expiry_delta,json=cltvExpiryDelta,proto3" json:"cltv_expiry_delta,omitempty"` + HtlcMinimumMsat *uint64 `protobuf:"varint,5,opt,name=htlc_minimum_msat,json=htlcMinimumMsat,proto3,oneof" json:"htlc_minimum_msat,omitempty"` + HtlcMaximumMsat *uint64 `protobuf:"varint,6,opt,name=htlc_maximum_msat,json=htlcMaximumMsat,proto3,oneof" json:"htlc_maximum_msat,omitempty"` +} + +func (x *RouteHintHop) Reset() { + *x = RouteHintHop{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RouteHintHop) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RouteHintHop) ProtoMessage() {} + +func (x *RouteHintHop) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RouteHintHop.ProtoReflect.Descriptor instead. +func (*RouteHintHop) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{43} +} + +func (x *RouteHintHop) GetSrcNodeId() string { + if x != nil { + return x.SrcNodeId + } + return "" +} + +func (x *RouteHintHop) GetShortChannelId() uint64 { + if x != nil { + return x.ShortChannelId + } + return 0 +} + +func (x *RouteHintHop) GetFees() *RoutingFees { + if x != nil { + return x.Fees + } + return nil +} + +func (x *RouteHintHop) GetCltvExpiryDelta() uint32 { + if x != nil { + return x.CltvExpiryDelta + } + return 0 +} + +func (x *RouteHintHop) GetHtlcMinimumMsat() uint64 { + if x != nil && x.HtlcMinimumMsat != nil { + return *x.HtlcMinimumMsat + } + return 0 +} + +func (x *RouteHintHop) GetHtlcMaximumMsat() uint64 { + if x != nil && x.HtlcMaximumMsat != nil { + return *x.HtlcMaximumMsat + } + return 0 +} + +type RoutingFees struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BaseMsat uint32 `protobuf:"varint,1,opt,name=base_msat,json=baseMsat,proto3" json:"base_msat,omitempty"` + ProportionalMillionths uint32 `protobuf:"varint,2,opt,name=proportional_millionths,json=proportionalMillionths,proto3" json:"proportional_millionths,omitempty"` +} + +func (x *RoutingFees) Reset() { + *x = RoutingFees{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RoutingFees) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RoutingFees) ProtoMessage() {} + +func (x *RoutingFees) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RoutingFees.ProtoReflect.Descriptor instead. +func (*RoutingFees) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{44} +} + +func (x *RoutingFees) GetBaseMsat() uint32 { + if x != nil { + return x.BaseMsat + } + return 0 +} + +func (x *RoutingFees) GetProportionalMillionths() uint32 { + if x != nil { + return x.ProportionalMillionths + } + return 0 +} + +type Features struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + VariableLengthOnion bool `protobuf:"varint,1,opt,name=variable_length_onion,json=variableLengthOnion,proto3" json:"variable_length_onion,omitempty"` + PaymentSecret bool `protobuf:"varint,2,opt,name=payment_secret,json=paymentSecret,proto3" json:"payment_secret,omitempty"` + BasicMpp bool `protobuf:"varint,3,opt,name=basic_mpp,json=basicMpp,proto3" json:"basic_mpp,omitempty"` +} + +func (x *Features) Reset() { + *x = Features{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Features) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Features) ProtoMessage() {} + +func (x *Features) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Features.ProtoReflect.Descriptor instead. +func (*Features) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{45} +} + +func (x *Features) GetVariableLengthOnion() bool { + if x != nil { + return x.VariableLengthOnion + } + return false +} + +func (x *Features) GetPaymentSecret() bool { + if x != nil { + return x.PaymentSecret + } + return false +} + +func (x *Features) GetBasicMpp() bool { + if x != nil { + return x.BasicMpp + } + return false +} + +type LabelPaymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Label string `protobuf:"bytes,1,opt,name=label,proto3" json:"label,omitempty"` + PaymentHash string `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` +} + +func (x *LabelPaymentRequest) Reset() { + *x = LabelPaymentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LabelPaymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LabelPaymentRequest) ProtoMessage() {} + +func (x *LabelPaymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LabelPaymentRequest.ProtoReflect.Descriptor instead. +func (*LabelPaymentRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{46} +} + +func (x *LabelPaymentRequest) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *LabelPaymentRequest) GetPaymentHash() string { + if x != nil { + return x.PaymentHash + } + return "" +} + +type LabelPaymentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LabelPaymentResponse) Reset() { + *x = LabelPaymentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LabelPaymentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LabelPaymentResponse) ProtoMessage() {} + +func (x *LabelPaymentResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LabelPaymentResponse.ProtoReflect.Descriptor instead. +func (*LabelPaymentResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{47} +} + +type DeletePaymentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PaymentHash string `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` +} + +func (x *DeletePaymentRequest) Reset() { + *x = DeletePaymentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeletePaymentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePaymentRequest) ProtoMessage() {} + +func (x *DeletePaymentRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeletePaymentRequest.ProtoReflect.Descriptor instead. +func (*DeletePaymentRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{48} +} + +func (x *DeletePaymentRequest) GetPaymentHash() string { + if x != nil { + return x.PaymentHash + } + return "" +} + +type DeletePaymentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeletePaymentResponse) Reset() { + *x = DeletePaymentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeletePaymentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeletePaymentResponse) ProtoMessage() {} + +func (x *DeletePaymentResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeletePaymentResponse.ProtoReflect.Descriptor instead. +func (*DeletePaymentResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{49} +} + +type KeysendRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + DestPubkey string `protobuf:"bytes,1,opt,name=dest_pubkey,json=destPubkey,proto3" json:"dest_pubkey,omitempty"` + AmtMsat uint64 `protobuf:"varint,2,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"` +} + +func (x *KeysendRequest) Reset() { + *x = KeysendRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KeysendRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeysendRequest) ProtoMessage() {} + +func (x *KeysendRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KeysendRequest.ProtoReflect.Descriptor instead. +func (*KeysendRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{50} +} + +func (x *KeysendRequest) GetDestPubkey() string { + if x != nil { + return x.DestPubkey + } + return "" +} + +func (x *KeysendRequest) GetAmtMsat() uint64 { + if x != nil { + return x.AmtMsat + } + return 0 +} + +type KeysendResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *KeysendResponse) Reset() { + *x = KeysendResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *KeysendResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*KeysendResponse) ProtoMessage() {} + +func (x *KeysendResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use KeysendResponse.ProtoReflect.Descriptor instead. +func (*KeysendResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{51} +} + +type CreateInvoiceRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AmtMsat uint64 `protobuf:"varint,1,opt,name=amt_msat,json=amtMsat,proto3" json:"amt_msat,omitempty"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *CreateInvoiceRequest) Reset() { + *x = CreateInvoiceRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateInvoiceRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateInvoiceRequest) ProtoMessage() {} + +func (x *CreateInvoiceRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateInvoiceRequest.ProtoReflect.Descriptor instead. +func (*CreateInvoiceRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{52} +} + +func (x *CreateInvoiceRequest) GetAmtMsat() uint64 { + if x != nil { + return x.AmtMsat + } + return 0 +} + +func (x *CreateInvoiceRequest) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +type CreateInvoiceResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Invoice string `protobuf:"bytes,1,opt,name=invoice,proto3" json:"invoice,omitempty"` +} + +func (x *CreateInvoiceResponse) Reset() { + *x = CreateInvoiceResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateInvoiceResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateInvoiceResponse) ProtoMessage() {} + +func (x *CreateInvoiceResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateInvoiceResponse.ProtoReflect.Descriptor instead. +func (*CreateInvoiceResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{53} +} + +func (x *CreateInvoiceResponse) GetInvoice() string { + if x != nil { + return x.Invoice + } + return "" +} + +type ConnectPeerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeConnectionString string `protobuf:"bytes,1,opt,name=node_connection_string,json=nodeConnectionString,proto3" json:"node_connection_string,omitempty"` +} + +func (x *ConnectPeerRequest) Reset() { + *x = ConnectPeerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConnectPeerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectPeerRequest) ProtoMessage() {} + +func (x *ConnectPeerRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectPeerRequest.ProtoReflect.Descriptor instead. +func (*ConnectPeerRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{54} +} + +func (x *ConnectPeerRequest) GetNodeConnectionString() string { + if x != nil { + return x.NodeConnectionString + } + return "" +} + +type ConnectPeerResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ConnectPeerResponse) Reset() { + *x = ConnectPeerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConnectPeerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectPeerResponse) ProtoMessage() {} + +func (x *ConnectPeerResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConnectPeerResponse.ProtoReflect.Descriptor instead. +func (*ConnectPeerResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{55} +} + +type Channel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelId string `protobuf:"bytes,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + FundingTxid *string `protobuf:"bytes,2,opt,name=funding_txid,json=fundingTxid,proto3,oneof" json:"funding_txid,omitempty"` + FundingTxIndex *uint32 `protobuf:"varint,3,opt,name=funding_tx_index,json=fundingTxIndex,proto3,oneof" json:"funding_tx_index,omitempty"` + ShortChannelId *uint64 `protobuf:"varint,4,opt,name=short_channel_id,json=shortChannelId,proto3,oneof" json:"short_channel_id,omitempty"` + ChannelValueSatoshis uint64 `protobuf:"varint,5,opt,name=channel_value_satoshis,json=channelValueSatoshis,proto3" json:"channel_value_satoshis,omitempty"` + BalanceMsat uint64 `protobuf:"varint,6,opt,name=balance_msat,json=balanceMsat,proto3" json:"balance_msat,omitempty"` + UnspendablePunishmentReserve *uint64 `protobuf:"varint,7,opt,name=unspendable_punishment_reserve,json=unspendablePunishmentReserve,proto3,oneof" json:"unspendable_punishment_reserve,omitempty"` + UserChannelId uint64 `protobuf:"varint,8,opt,name=user_channel_id,json=userChannelId,proto3" json:"user_channel_id,omitempty"` + OutboundCapacityMsat uint64 `protobuf:"varint,9,opt,name=outbound_capacity_msat,json=outboundCapacityMsat,proto3" json:"outbound_capacity_msat,omitempty"` + InboundCapacityMsat uint64 `protobuf:"varint,10,opt,name=inbound_capacity_msat,json=inboundCapacityMsat,proto3" json:"inbound_capacity_msat,omitempty"` + ConfirmationsRequired *uint32 `protobuf:"varint,11,opt,name=confirmations_required,json=confirmationsRequired,proto3,oneof" json:"confirmations_required,omitempty"` + ForceCloseSpendDelay *uint32 `protobuf:"varint,12,opt,name=force_close_spend_delay,json=forceCloseSpendDelay,proto3,oneof" json:"force_close_spend_delay,omitempty"` + IsOutbound bool `protobuf:"varint,13,opt,name=is_outbound,json=isOutbound,proto3" json:"is_outbound,omitempty"` + IsChannelReady bool `protobuf:"varint,14,opt,name=is_channel_ready,json=isChannelReady,proto3" json:"is_channel_ready,omitempty"` + IsUsable bool `protobuf:"varint,15,opt,name=is_usable,json=isUsable,proto3" json:"is_usable,omitempty"` + IsPublic bool `protobuf:"varint,16,opt,name=is_public,json=isPublic,proto3" json:"is_public,omitempty"` + CounterpartyPubkey string `protobuf:"bytes,17,opt,name=counterparty_pubkey,json=counterpartyPubkey,proto3" json:"counterparty_pubkey,omitempty"` + Alias *string `protobuf:"bytes,18,opt,name=alias,proto3,oneof" json:"alias,omitempty"` +} + +func (x *Channel) Reset() { + *x = Channel{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Channel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Channel) ProtoMessage() {} + +func (x *Channel) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Channel.ProtoReflect.Descriptor instead. +func (*Channel) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{56} +} + +func (x *Channel) GetChannelId() string { + if x != nil { + return x.ChannelId + } + return "" +} + +func (x *Channel) GetFundingTxid() string { + if x != nil && x.FundingTxid != nil { + return *x.FundingTxid + } + return "" +} + +func (x *Channel) GetFundingTxIndex() uint32 { + if x != nil && x.FundingTxIndex != nil { + return *x.FundingTxIndex + } + return 0 +} + +func (x *Channel) GetShortChannelId() uint64 { + if x != nil && x.ShortChannelId != nil { + return *x.ShortChannelId + } + return 0 +} + +func (x *Channel) GetChannelValueSatoshis() uint64 { + if x != nil { + return x.ChannelValueSatoshis + } + return 0 +} + +func (x *Channel) GetBalanceMsat() uint64 { + if x != nil { + return x.BalanceMsat + } + return 0 +} + +func (x *Channel) GetUnspendablePunishmentReserve() uint64 { + if x != nil && x.UnspendablePunishmentReserve != nil { + return *x.UnspendablePunishmentReserve + } + return 0 +} + +func (x *Channel) GetUserChannelId() uint64 { + if x != nil { + return x.UserChannelId + } + return 0 +} + +func (x *Channel) GetOutboundCapacityMsat() uint64 { + if x != nil { + return x.OutboundCapacityMsat + } + return 0 +} + +func (x *Channel) GetInboundCapacityMsat() uint64 { + if x != nil { + return x.InboundCapacityMsat + } + return 0 +} + +func (x *Channel) GetConfirmationsRequired() uint32 { + if x != nil && x.ConfirmationsRequired != nil { + return *x.ConfirmationsRequired + } + return 0 +} + +func (x *Channel) GetForceCloseSpendDelay() uint32 { + if x != nil && x.ForceCloseSpendDelay != nil { + return *x.ForceCloseSpendDelay + } + return 0 +} + +func (x *Channel) GetIsOutbound() bool { + if x != nil { + return x.IsOutbound + } + return false +} + +func (x *Channel) GetIsChannelReady() bool { + if x != nil { + return x.IsChannelReady + } + return false +} + +func (x *Channel) GetIsUsable() bool { + if x != nil { + return x.IsUsable + } + return false +} + +func (x *Channel) GetIsPublic() bool { + if x != nil { + return x.IsPublic + } + return false +} + +func (x *Channel) GetCounterpartyPubkey() string { + if x != nil { + return x.CounterpartyPubkey + } + return "" +} + +func (x *Channel) GetAlias() string { + if x != nil && x.Alias != nil { + return *x.Alias + } + return "" +} + +type ListChannelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` +} + +func (x *ListChannelsRequest) Reset() { + *x = ListChannelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListChannelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListChannelsRequest) ProtoMessage() {} + +func (x *ListChannelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListChannelsRequest.ProtoReflect.Descriptor instead. +func (*ListChannelsRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{57} +} + +func (x *ListChannelsRequest) GetPagination() *PaginationRequest { + if x != nil { + return x.Pagination + } + return nil +} + +type ListChannelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Channels []*Channel `protobuf:"bytes,1,rep,name=channels,proto3" json:"channels,omitempty"` + Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *ListChannelsResponse) Reset() { + *x = ListChannelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListChannelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListChannelsResponse) ProtoMessage() {} + +func (x *ListChannelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListChannelsResponse.ProtoReflect.Descriptor instead. +func (*ListChannelsResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{58} +} + +func (x *ListChannelsResponse) GetChannels() []*Channel { + if x != nil { + return x.Channels + } + return nil +} + +func (x *ListChannelsResponse) GetPagination() *PaginationResponse { + if x != nil { + return x.Pagination + } + return nil +} + +type Payment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + Preimage *string `protobuf:"bytes,2,opt,name=preimage,proto3,oneof" json:"preimage,omitempty"` + Secret *string `protobuf:"bytes,3,opt,name=secret,proto3,oneof" json:"secret,omitempty"` + Status string `protobuf:"bytes,4,opt,name=status,proto3" json:"status,omitempty"` + AmtMsat *int64 `protobuf:"varint,5,opt,name=amt_msat,json=amtMsat,proto3,oneof" json:"amt_msat,omitempty"` + FeePaidMsat *int64 `protobuf:"varint,6,opt,name=fee_paid_msat,json=feePaidMsat,proto3,oneof" json:"fee_paid_msat,omitempty"` + Origin string `protobuf:"bytes,7,opt,name=origin,proto3" json:"origin,omitempty"` + Label *string `protobuf:"bytes,8,opt,name=label,proto3,oneof" json:"label,omitempty"` + Invoice *string `protobuf:"bytes,9,opt,name=invoice,proto3,oneof" json:"invoice,omitempty"` +} + +func (x *Payment) Reset() { + *x = Payment{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Payment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Payment) ProtoMessage() {} + +func (x *Payment) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Payment.ProtoReflect.Descriptor instead. +func (*Payment) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{59} +} + +func (x *Payment) GetHash() string { + if x != nil { + return x.Hash + } + return "" +} + +func (x *Payment) GetPreimage() string { + if x != nil && x.Preimage != nil { + return *x.Preimage + } + return "" +} + +func (x *Payment) GetSecret() string { + if x != nil && x.Secret != nil { + return *x.Secret + } + return "" +} + +func (x *Payment) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *Payment) GetAmtMsat() int64 { + if x != nil && x.AmtMsat != nil { + return *x.AmtMsat + } + return 0 +} + +func (x *Payment) GetFeePaidMsat() int64 { + if x != nil && x.FeePaidMsat != nil { + return *x.FeePaidMsat + } + return 0 +} + +func (x *Payment) GetOrigin() string { + if x != nil { + return x.Origin + } + return "" +} + +func (x *Payment) GetLabel() string { + if x != nil && x.Label != nil { + return *x.Label + } + return "" +} + +func (x *Payment) GetInvoice() string { + if x != nil && x.Invoice != nil { + return *x.Invoice + } + return "" +} + +type PaymentsFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Origin *string `protobuf:"bytes,1,opt,name=origin,proto3,oneof" json:"origin,omitempty"` + Status *string `protobuf:"bytes,2,opt,name=status,proto3,oneof" json:"status,omitempty"` +} + +func (x *PaymentsFilter) Reset() { + *x = PaymentsFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PaymentsFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PaymentsFilter) ProtoMessage() {} + +func (x *PaymentsFilter) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PaymentsFilter.ProtoReflect.Descriptor instead. +func (*PaymentsFilter) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{60} +} + +func (x *PaymentsFilter) GetOrigin() string { + if x != nil && x.Origin != nil { + return *x.Origin + } + return "" +} + +func (x *PaymentsFilter) GetStatus() string { + if x != nil && x.Status != nil { + return *x.Status + } + return "" +} + +type ListPaymentsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pagination *PaginationRequest `protobuf:"bytes,1,opt,name=pagination,proto3,oneof" json:"pagination,omitempty"` + Filter *PaymentsFilter `protobuf:"bytes,2,opt,name=filter,proto3,oneof" json:"filter,omitempty"` +} + +func (x *ListPaymentsRequest) Reset() { + *x = ListPaymentsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPaymentsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPaymentsRequest) ProtoMessage() {} + +func (x *ListPaymentsRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPaymentsRequest.ProtoReflect.Descriptor instead. +func (*ListPaymentsRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{61} +} + +func (x *ListPaymentsRequest) GetPagination() *PaginationRequest { + if x != nil { + return x.Pagination + } + return nil +} + +func (x *ListPaymentsRequest) GetFilter() *PaymentsFilter { + if x != nil { + return x.Filter + } + return nil +} + +type ListPaymentsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Payments []*Payment `protobuf:"bytes,1,rep,name=payments,proto3" json:"payments,omitempty"` + Pagination *PaginationResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` +} + +func (x *ListPaymentsResponse) Reset() { + *x = ListPaymentsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPaymentsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPaymentsResponse) ProtoMessage() {} + +func (x *ListPaymentsResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPaymentsResponse.ProtoReflect.Descriptor instead. +func (*ListPaymentsResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{62} +} + +func (x *ListPaymentsResponse) GetPayments() []*Payment { + if x != nil { + return x.Payments + } + return nil +} + +func (x *ListPaymentsResponse) GetPagination() *PaginationResponse { + if x != nil { + return x.Pagination + } + return nil +} + +type CloseChannelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ChannelId string `protobuf:"bytes,1,opt,name=channel_id,json=channelId,proto3" json:"channel_id,omitempty"` + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` +} + +func (x *CloseChannelRequest) Reset() { + *x = CloseChannelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CloseChannelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloseChannelRequest) ProtoMessage() {} + +func (x *CloseChannelRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloseChannelRequest.ProtoReflect.Descriptor instead. +func (*CloseChannelRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{63} +} + +func (x *CloseChannelRequest) GetChannelId() string { + if x != nil { + return x.ChannelId + } + return "" +} + +func (x *CloseChannelRequest) GetForce() bool { + if x != nil { + return x.Force + } + return false +} + +type CloseChannelResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CloseChannelResponse) Reset() { + *x = CloseChannelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CloseChannelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CloseChannelResponse) ProtoMessage() {} + +func (x *CloseChannelResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CloseChannelResponse.ProtoReflect.Descriptor instead. +func (*CloseChannelResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{64} +} + +type Info struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + NodePubkey string `protobuf:"bytes,2,opt,name=node_pubkey,json=nodePubkey,proto3" json:"node_pubkey,omitempty"` + NumChannels uint32 `protobuf:"varint,3,opt,name=num_channels,json=numChannels,proto3" json:"num_channels,omitempty"` + NumUsableChannels uint32 `protobuf:"varint,4,opt,name=num_usable_channels,json=numUsableChannels,proto3" json:"num_usable_channels,omitempty"` + NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers,json=numPeers,proto3" json:"num_peers,omitempty"` +} + +func (x *Info) Reset() { + *x = Info{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Info) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Info) ProtoMessage() {} + +func (x *Info) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[65] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Info.ProtoReflect.Descriptor instead. +func (*Info) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{65} +} + +func (x *Info) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *Info) GetNodePubkey() string { + if x != nil { + return x.NodePubkey + } + return "" +} + +func (x *Info) GetNumChannels() uint32 { + if x != nil { + return x.NumChannels + } + return 0 +} + +func (x *Info) GetNumUsableChannels() uint32 { + if x != nil { + return x.NumUsableChannels + } + return 0 +} + +func (x *Info) GetNumPeers() uint32 { + if x != nil { + return x.NumPeers + } + return 0 +} + +type InfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *InfoRequest) Reset() { + *x = InfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InfoRequest) ProtoMessage() {} + +func (x *InfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InfoRequest.ProtoReflect.Descriptor instead. +func (*InfoRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{66} +} + +type InfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodeInfo *Info `protobuf:"bytes,1,opt,name=node_info,json=nodeInfo,proto3" json:"node_info,omitempty"` +} + +func (x *InfoResponse) Reset() { + *x = InfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InfoResponse) ProtoMessage() {} + +func (x *InfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InfoResponse.ProtoReflect.Descriptor instead. +func (*InfoResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{67} +} + +func (x *InfoResponse) GetNodeInfo() *Info { + if x != nil { + return x.NodeInfo + } + return nil +} + +type Peer struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NodePubkey string `protobuf:"bytes,1,opt,name=node_pubkey,json=nodePubkey,proto3" json:"node_pubkey,omitempty"` +} + +func (x *Peer) Reset() { + *x = Peer{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Peer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Peer) ProtoMessage() {} + +func (x *Peer) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Peer.ProtoReflect.Descriptor instead. +func (*Peer) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{68} +} + +func (x *Peer) GetNodePubkey() string { + if x != nil { + return x.NodePubkey + } + return "" +} + +type ListPeersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListPeersRequest) Reset() { + *x = ListPeersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPeersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPeersRequest) ProtoMessage() {} + +func (x *ListPeersRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPeersRequest.ProtoReflect.Descriptor instead. +func (*ListPeersRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{69} +} + +type ListPeersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Peers []*Peer `protobuf:"bytes,1,rep,name=peers,proto3" json:"peers,omitempty"` +} + +func (x *ListPeersResponse) Reset() { + *x = ListPeersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListPeersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListPeersResponse) ProtoMessage() {} + +func (x *ListPeersResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListPeersResponse.ProtoReflect.Descriptor instead. +func (*ListPeersResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{70} +} + +func (x *ListPeersResponse) GetPeers() []*Peer { + if x != nil { + return x.Peers + } + return nil +} + +type SignMessageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` +} + +func (x *SignMessageRequest) Reset() { + *x = SignMessageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignMessageRequest) ProtoMessage() {} + +func (x *SignMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignMessageRequest.ProtoReflect.Descriptor instead. +func (*SignMessageRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{71} +} + +func (x *SignMessageRequest) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +type SignMessageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Signature string `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *SignMessageResponse) Reset() { + *x = SignMessageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SignMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SignMessageResponse) ProtoMessage() {} + +func (x *SignMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SignMessageResponse.ProtoReflect.Descriptor instead. +func (*SignMessageResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{72} +} + +func (x *SignMessageResponse) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +type VerifyMessageRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Message string `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"` + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (x *VerifyMessageRequest) Reset() { + *x = VerifyMessageRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VerifyMessageRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyMessageRequest) ProtoMessage() {} + +func (x *VerifyMessageRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[73] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyMessageRequest.ProtoReflect.Descriptor instead. +func (*VerifyMessageRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{73} +} + +func (x *VerifyMessageRequest) GetMessage() string { + if x != nil { + return x.Message + } + return "" +} + +func (x *VerifyMessageRequest) GetSignature() string { + if x != nil { + return x.Signature + } + return "" +} + +type VerifyMessageResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Valid bool `protobuf:"varint,1,opt,name=valid,proto3" json:"valid,omitempty"` + Pubkey string `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` +} + +func (x *VerifyMessageResponse) Reset() { + *x = VerifyMessageResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *VerifyMessageResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VerifyMessageResponse) ProtoMessage() {} + +func (x *VerifyMessageResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VerifyMessageResponse.ProtoReflect.Descriptor instead. +func (*VerifyMessageResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{74} +} + +func (x *VerifyMessageResponse) GetValid() bool { + if x != nil { + return x.Valid + } + return false +} + +func (x *VerifyMessageResponse) GetPubkey() string { + if x != nil { + return x.Pubkey + } + return "" +} + +type ListUnspentRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListUnspentRequest) Reset() { + *x = ListUnspentRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListUnspentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUnspentRequest) ProtoMessage() {} + +func (x *ListUnspentRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUnspentRequest.ProtoReflect.Descriptor instead. +func (*ListUnspentRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{75} +} + +type Utxo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AmountSat uint64 `protobuf:"varint,1,opt,name=amount_sat,json=amountSat,proto3" json:"amount_sat,omitempty"` + Spk string `protobuf:"bytes,2,opt,name=spk,proto3" json:"spk,omitempty"` + Txid string `protobuf:"bytes,3,opt,name=txid,proto3" json:"txid,omitempty"` + OutputIndex uint32 `protobuf:"varint,4,opt,name=output_index,json=outputIndex,proto3" json:"output_index,omitempty"` +} + +func (x *Utxo) Reset() { + *x = Utxo{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Utxo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Utxo) ProtoMessage() {} + +func (x *Utxo) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[76] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Utxo.ProtoReflect.Descriptor instead. +func (*Utxo) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{76} +} + +func (x *Utxo) GetAmountSat() uint64 { + if x != nil { + return x.AmountSat + } + return 0 +} + +func (x *Utxo) GetSpk() string { + if x != nil { + return x.Spk + } + return "" +} + +func (x *Utxo) GetTxid() string { + if x != nil { + return x.Txid + } + return "" +} + +func (x *Utxo) GetOutputIndex() uint32 { + if x != nil { + return x.OutputIndex + } + return 0 +} + +type ListUnspentResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Utxos []*Utxo `protobuf:"bytes,1,rep,name=utxos,proto3" json:"utxos,omitempty"` +} + +func (x *ListUnspentResponse) Reset() { + *x = ListUnspentResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListUnspentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListUnspentResponse) ProtoMessage() {} + +func (x *ListUnspentResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[77] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListUnspentResponse.ProtoReflect.Descriptor instead. +func (*ListUnspentResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{77} +} + +func (x *ListUnspentResponse) GetUtxos() []*Utxo { + if x != nil { + return x.Utxos + } + return nil +} + +type NetworkGraphInfoRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *NetworkGraphInfoRequest) Reset() { + *x = NetworkGraphInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetworkGraphInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkGraphInfoRequest) ProtoMessage() {} + +func (x *NetworkGraphInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[78] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkGraphInfoRequest.ProtoReflect.Descriptor instead. +func (*NetworkGraphInfoRequest) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{78} +} + +type NetworkGraphInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NumChannels uint64 `protobuf:"varint,1,opt,name=num_channels,json=numChannels,proto3" json:"num_channels,omitempty"` + NumNodes uint64 `protobuf:"varint,2,opt,name=num_nodes,json=numNodes,proto3" json:"num_nodes,omitempty"` + NumKnownEdgePolicies uint64 `protobuf:"varint,3,opt,name=num_known_edge_policies,json=numKnownEdgePolicies,proto3" json:"num_known_edge_policies,omitempty"` +} + +func (x *NetworkGraphInfoResponse) Reset() { + *x = NetworkGraphInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_sensei_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NetworkGraphInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NetworkGraphInfoResponse) ProtoMessage() {} + +func (x *NetworkGraphInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_sensei_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NetworkGraphInfoResponse.ProtoReflect.Descriptor instead. +func (*NetworkGraphInfoResponse) Descriptor() ([]byte, []int) { + return file_sensei_proto_rawDescGZIP(), []int{79} +} + +func (x *NetworkGraphInfoResponse) GetNumChannels() uint64 { + if x != nil { + return x.NumChannels + } + return 0 +} + +func (x *NetworkGraphInfoResponse) GetNumNodes() uint64 { + if x != nil { + return x.NumNodes + } + return 0 +} + +func (x *NetworkGraphInfoResponse) GetNumKnownEdgePolicies() uint64 { + if x != nil { + return x.NumKnownEdgePolicies + } + return 0 +} + +var File_sensei_proto protoreflect.FileDescriptor + +var file_sensei_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x22, 0xaa, 0x02, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x64, + 0x64, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x22, 0xd3, 0x01, 0x0a, 0x05, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, + 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, + 0x73, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, + 0x55, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x60, 0x0a, 0x11, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, + 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x04, 0x74, 0x61, 0x6b, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x88, 0x01, + 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x12, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x6d, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x4d, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x22, 0x61, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x6e, + 0x73, 0x65, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x6e, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f, 0x64, + 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, + 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x62, + 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, + 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x77, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, + 0x3a, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7c, 0x0a, 0x12, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, + 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x63, + 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x63, + 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x7b, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, + 0x72, 0x61, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, + 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x22, 0x9a, 0x01, 0x0a, + 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x11, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7c, 0x0a, 0x12, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x55, 0x73, 0x65, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, + 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x12, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, + 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, + 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x12, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0xa4, 0x02, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, + 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x70, + 0x75, 0x62, 0x6b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x72, 0x6f, 0x6c, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, + 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, + 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x07, + 0x0a, 0x05, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x32, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x70, + 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x22, 0x13, 0x0a, 0x11, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x41, 0x64, 0x6d, 0x69, 0x6e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x61, 0x73, 0x73, 0x70, 0x68, 0x72, 0x61, 0x73, 0x65, + 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x34, 0x0a, 0x16, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x63, 0x61, 0x72, 0x6f, 0x6f, 0x6e, 0x22, 0x2e, + 0x0a, 0x14, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x17, + 0x0a, 0x15, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x55, 0x6e, + 0x75, 0x73, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x34, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, + 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xac, 0x03, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, + 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x73, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x12, 0x6f, 0x6e, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x53, 0x61, 0x74, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x73, 0x61, 0x74, 0x73, 0x12, 0x45, 0x0a, 0x1f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x1c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x61, 0x74, + 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, + 0x61, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1b, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x4d, 0x73, 0x61, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x26, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x22, 0x75, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x61, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x61, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x25, 0x75, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, + 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x21, 0x75, 0x73, 0x61, 0x62, 0x6c, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x61, 0x74, 0x73, 0x22, 0xd8, 0x06, 0x0a, + 0x12, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, + 0x72, 0x74, 0x79, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x79, 0x50, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, + 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x53, 0x61, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, 0x2f, 0x0a, + 0x11, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6d, 0x73, 0x61, + 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x75, 0x73, 0x68, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x20, + 0x0a, 0x09, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x48, 0x01, 0x52, 0x08, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x49, 0x64, 0x88, 0x01, 0x01, + 0x12, 0x39, 0x0a, 0x16, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x02, 0x52, 0x14, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x79, + 0x48, 0x6f, 0x73, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x26, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, + 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52, 0x23, 0x66, + 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x50, 0x72, 0x6f, 0x70, + 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x74, + 0x68, 0x73, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x18, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x73, 0x61, + 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x04, 0x52, 0x15, 0x66, 0x6f, 0x72, 0x77, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x73, 0x61, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, 0x63, 0x6c, 0x74, 0x76, 0x5f, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x05, + 0x52, 0x0f, 0x63, 0x6c, 0x74, 0x76, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x74, + 0x61, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x73, 0x74, + 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6d, + 0x73, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x48, 0x06, 0x52, 0x17, 0x6d, 0x61, 0x78, + 0x44, 0x75, 0x73, 0x74, 0x48, 0x74, 0x6c, 0x63, 0x45, 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, + 0x4d, 0x73, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x26, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x76, 0x6f, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, 0x61, 0x74, 0x6f, 0x73, 0x68, 0x69, + 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x07, 0x52, 0x21, 0x66, 0x6f, 0x72, 0x63, 0x65, + 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x41, 0x76, 0x6f, 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x61, + 0x78, 0x46, 0x65, 0x65, 0x53, 0x61, 0x74, 0x6f, 0x73, 0x68, 0x69, 0x73, 0x88, 0x01, 0x01, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x6d, 0x73, 0x61, 0x74, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x5f, 0x69, 0x64, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x61, 0x72, 0x74, 0x79, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x29, + 0x0a, 0x27, 0x5f, 0x66, 0x6f, 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, + 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, + 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x66, 0x6f, + 0x72, 0x77, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x63, 0x6c, 0x74, 0x76, 0x5f, + 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x42, 0x1e, 0x0a, 0x1c, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x75, 0x73, 0x74, 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x65, + 0x78, 0x70, 0x6f, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x42, 0x29, 0x0a, 0x27, + 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x61, 0x76, 0x6f, + 0x69, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x73, + 0x61, 0x74, 0x6f, 0x73, 0x68, 0x69, 0x73, 0x22, 0xa6, 0x01, 0x0a, 0x11, 0x4f, 0x70, 0x65, 0x6e, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, + 0x0f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0d, 0x74, 0x65, 0x6d, 0x70, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x12, 0x0a, 0x10, + 0x5f, 0x74, 0x65, 0x6d, 0x70, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x22, 0x4d, 0x0a, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, + 0x83, 0x01, 0x0a, 0x14, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x6e, + 0x73, 0x65, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, + 0x12, 0x33, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x2d, 0x0a, 0x11, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x76, 0x6f, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, + 0x76, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x76, + 0x6f, 0x69, 0x63, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x69, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x0a, 0x14, 0x44, 0x65, + 0x63, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x42, 0x0a, 0x15, + 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, + 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, + 0x22, 0xf1, 0x02, 0x0a, 0x07, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x31, 0x0a, 0x15, 0x6d, + 0x69, 0x6e, 0x5f, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6c, 0x74, 0x76, 0x5f, 0x65, 0x78, + 0x70, 0x69, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x12, 0x6d, 0x69, 0x6e, 0x46, + 0x69, 0x6e, 0x61, 0x6c, 0x43, 0x6c, 0x74, 0x76, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x12, 0x32, + 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x68, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, 0x6e, + 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x46, 0x65, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, + 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x79, 0x65, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x5f, 0x6b, 0x65, + 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x65, 0x65, 0x50, 0x75, + 0x62, 0x4b, 0x65, 0x79, 0x22, 0x35, 0x0a, 0x09, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, 0x6e, + 0x74, 0x12, 0x28, 0x0a, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, + 0x6e, 0x74, 0x48, 0x6f, 0x70, 0x52, 0x04, 0x68, 0x6f, 0x70, 0x73, 0x22, 0xbb, 0x02, 0x0a, 0x0c, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x48, 0x69, 0x6e, 0x74, 0x48, 0x6f, 0x70, 0x12, 0x1e, 0x0a, 0x0b, + 0x73, 0x72, 0x63, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x72, 0x63, 0x4e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x66, 0x65, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x52, 0x6f, + 0x75, 0x74, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x73, 0x52, 0x04, 0x66, 0x65, 0x65, 0x73, 0x12, + 0x2a, 0x0a, 0x11, 0x63, 0x6c, 0x74, 0x76, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x79, 0x5f, 0x64, + 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x63, 0x6c, 0x74, 0x76, + 0x45, 0x78, 0x70, 0x69, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x2f, 0x0a, 0x11, 0x68, + 0x74, 0x6c, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x73, 0x61, 0x74, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0f, 0x68, 0x74, 0x6c, 0x63, 0x4d, 0x69, + 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x4d, 0x73, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x11, + 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x73, 0x61, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x01, 0x52, 0x0f, 0x68, 0x74, 0x6c, 0x63, 0x4d, + 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x4d, 0x73, 0x61, 0x74, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, + 0x73, 0x61, 0x74, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x68, 0x74, 0x6c, 0x63, 0x5f, 0x6d, 0x61, 0x78, + 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x22, 0x63, 0x0a, 0x0b, 0x52, 0x6f, 0x75, + 0x74, 0x69, 0x6e, 0x67, 0x46, 0x65, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x61, 0x73, + 0x65, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x37, 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, + 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x74, 0x68, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x72, 0x74, 0x69, + 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x22, 0x82, + 0x01, 0x0a, 0x08, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x76, + 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6f, + 0x6e, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x76, 0x61, 0x72, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x4f, 0x6e, 0x69, 0x6f, 0x6e, 0x12, + 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, + 0x6d, 0x70, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x62, 0x61, 0x73, 0x69, 0x63, + 0x4d, 0x70, 0x70, 0x22, 0x4e, 0x0a, 0x13, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x22, 0x16, 0x0a, 0x14, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x68, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x4c, 0x0a, 0x0e, 0x4b, 0x65, 0x79, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x50, 0x75, 0x62, 0x6b, + 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x6d, 0x74, 0x4d, 0x73, 0x61, 0x74, 0x22, 0x11, 0x0a, + 0x0f, 0x4b, 0x65, 0x79, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x53, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6d, 0x74, 0x5f, + 0x6d, 0x73, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x61, 0x6d, 0x74, 0x4d, + 0x73, 0x61, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x31, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x22, 0x4a, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, + 0x0a, 0x16, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, + 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xcc, 0x07, 0x0a, 0x07, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x74, 0x78, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, + 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x54, 0x78, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, + 0x0a, 0x10, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x0e, 0x66, 0x75, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x54, 0x78, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, + 0x10, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x0e, 0x73, 0x68, 0x6f, 0x72, 0x74, + 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x16, + 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x73, 0x61, + 0x74, 0x6f, 0x73, 0x68, 0x69, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x61, 0x74, 0x6f, 0x73, 0x68, + 0x69, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6d, 0x73, + 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x49, 0x0a, 0x1e, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x6e, 0x64, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x6e, 0x69, 0x73, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x48, 0x03, 0x52, + 0x1c, 0x75, 0x6e, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x75, 0x6e, 0x69, + 0x73, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x26, 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, + 0x61, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x61, 0x74, 0x12, 0x32, + 0x0a, 0x15, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, + 0x74, 0x79, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x69, + 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x4d, 0x73, + 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x16, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x04, 0x52, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, + 0x0a, 0x17, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x70, + 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x48, + 0x05, 0x52, 0x14, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x53, 0x70, 0x65, + 0x6e, 0x64, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, + 0x5f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x69, 0x73, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x69, + 0x73, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x79, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x69, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x75, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x55, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x18, + 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x12, + 0x2f, 0x0a, 0x13, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x79, 0x5f, + 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x79, 0x50, 0x75, 0x62, 0x6b, 0x65, 0x79, + 0x12, 0x19, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x06, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, + 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, 0x69, 0x64, 0x42, 0x13, 0x0a, 0x11, + 0x5f, 0x66, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x78, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x75, 0x6e, 0x73, 0x70, 0x65, + 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x75, 0x6e, 0x69, 0x73, 0x68, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, + 0x69, 0x72, 0x65, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, + 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x22, 0x64, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x6e, + 0x73, 0x65, 0x69, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x08, 0x63, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x3a, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xdb, 0x02, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x88, + 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x08, 0x61, 0x6d, 0x74, 0x5f, 0x6d, + 0x73, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52, 0x07, 0x61, 0x6d, 0x74, + 0x4d, 0x73, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0d, 0x66, 0x65, 0x65, 0x5f, 0x70, + 0x61, 0x69, 0x64, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, + 0x52, 0x0b, 0x66, 0x65, 0x65, 0x50, 0x61, 0x69, 0x64, 0x4d, 0x73, 0x61, 0x74, 0x88, 0x01, 0x01, + 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, + 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x04, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x05, 0x52, 0x07, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, 0x72, 0x65, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, + 0x6d, 0x74, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x66, 0x65, 0x65, 0x5f, + 0x70, 0x61, 0x69, 0x64, 0x5f, 0x6d, 0x73, 0x61, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x69, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x22, + 0x60, 0x0a, 0x0e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x12, 0x1b, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x1b, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x22, 0xa4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x0a, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x48, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2b, 0x0a, 0x08, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x08, 0x70, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3a, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, + 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x4a, 0x0a, 0x13, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, + 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb1, 0x01, + 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x75, 0x62, 0x6b, 0x65, + 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x5f, 0x75, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x55, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x65, 0x65, 0x72, + 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x50, 0x65, 0x65, 0x72, + 0x73, 0x22, 0x0d, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x39, 0x0a, 0x0c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x29, 0x0a, 0x09, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x08, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x27, 0x0a, 0x04, 0x50, + 0x65, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x75, + 0x62, 0x6b, 0x65, 0x79, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x37, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, + 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, + 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, + 0x73, 0x22, 0x2e, 0x0a, 0x12, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x33, 0x0a, 0x13, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x4e, 0x0a, 0x14, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x45, 0x0a, 0x15, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x22, 0x14, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x6e, 0x0a, 0x04, 0x55, 0x74, 0x78, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x61, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x70, + 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x70, 0x6b, 0x12, 0x12, 0x0a, 0x04, + 0x74, 0x78, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x69, 0x64, + 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x49, 0x6e, + 0x64, 0x65, 0x78, 0x22, 0x39, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x73, 0x70, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x05, 0x75, 0x74, + 0x78, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x55, 0x74, 0x78, 0x6f, 0x52, 0x05, 0x75, 0x74, 0x78, 0x6f, 0x73, 0x22, 0x19, + 0x0a, 0x17, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x18, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6e, 0x75, + 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, + 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6e, 0x75, + 0x6d, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x6e, 0x75, 0x6d, 0x5f, 0x6b, 0x6e, + 0x6f, 0x77, 0x6e, 0x5f, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x4b, 0x6e, 0x6f, 0x77, + 0x6e, 0x45, 0x64, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x32, 0xfe, 0x05, + 0x0a, 0x05, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x43, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x19, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x64, 0x6d, 0x69, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, + 0x73, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x65, + 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, + 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x40, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x18, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x12, + 0x1d, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x61, + 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, + 0x0a, 0x08, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x6e, + 0x73, 0x65, 0x69, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x43, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x2e, 0x73, 0x65, + 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, + 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x46, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xf7, + 0x0b, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x53, 0x74, 0x6f, + 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x17, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, + 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x55, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x55, + 0x6e, 0x75, 0x73, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x2e, 0x73, + 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x43, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x4f, 0x70, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4f, 0x70, + 0x65, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4f, 0x70, 0x65, 0x6e, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x43, 0x0a, 0x0a, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x19, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x50, 0x61, 0x79, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x44, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x6e, + 0x76, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x44, + 0x65, 0x63, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x44, 0x65, 0x63, + 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x16, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4b, 0x65, 0x79, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4b, + 0x65, 0x79, 0x73, 0x65, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x12, + 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x6e, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x76, + 0x6f, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x73, + 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, + 0x65, 0x69, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x50, 0x65, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, + 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x1b, 0x2e, + 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x6e, + 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x6c, 0x6f, + 0x73, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, + 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x13, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x73, 0x65, + 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x40, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x18, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, 0x69, 0x67, 0x6e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0d, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x2e, 0x73, + 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x6e, + 0x73, 0x65, 0x69, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x4c, 0x69, 0x73, + 0x74, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, + 0x69, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x55, 0x0a, 0x10, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1f, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x2e, + 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x1d, 0x5a, 0x1b, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x70, 0x61, 0x79, + 0x2f, 0x73, 0x65, 0x6e, 0x73, 0x65, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_sensei_proto_rawDescOnce sync.Once + file_sensei_proto_rawDescData = file_sensei_proto_rawDesc +) + +func file_sensei_proto_rawDescGZIP() []byte { + file_sensei_proto_rawDescOnce.Do(func() { + file_sensei_proto_rawDescData = protoimpl.X.CompressGZIP(file_sensei_proto_rawDescData) + }) + return file_sensei_proto_rawDescData +} + +var file_sensei_proto_msgTypes = make([]protoimpl.MessageInfo, 80) +var file_sensei_proto_goTypes = []interface{}{ + (*ListNode)(nil), // 0: sensei.ListNode + (*Token)(nil), // 1: sensei.Token + (*PaginationRequest)(nil), // 2: sensei.PaginationRequest + (*PaginationResponse)(nil), // 3: sensei.PaginationResponse + (*ListNodesRequest)(nil), // 4: sensei.ListNodesRequest + (*ListNodesResponse)(nil), // 5: sensei.ListNodesResponse + (*ListTokensRequest)(nil), // 6: sensei.ListTokensRequest + (*ListTokensResponse)(nil), // 7: sensei.ListTokensResponse + (*CreateAdminRequest)(nil), // 8: sensei.CreateAdminRequest + (*CreateAdminResponse)(nil), // 9: sensei.CreateAdminResponse + (*CreateNodeRequest)(nil), // 10: sensei.CreateNodeRequest + (*CreateNodeResponse)(nil), // 11: sensei.CreateNodeResponse + (*DeleteNodeRequest)(nil), // 12: sensei.DeleteNodeRequest + (*DeleteNodeResponse)(nil), // 13: sensei.DeleteNodeResponse + (*CreateTokenRequest)(nil), // 14: sensei.CreateTokenRequest + (*DeleteTokenRequest)(nil), // 15: sensei.DeleteTokenRequest + (*DeleteTokenResponse)(nil), // 16: sensei.DeleteTokenResponse + (*StartAdminRequest)(nil), // 17: sensei.StartAdminRequest + (*StartAdminResponse)(nil), // 18: sensei.StartAdminResponse + (*GetStatusRequest)(nil), // 19: sensei.GetStatusRequest + (*GetStatusResponse)(nil), // 20: sensei.GetStatusResponse + (*StartNodeRequest)(nil), // 21: sensei.StartNodeRequest + (*StartNodeResponse)(nil), // 22: sensei.StartNodeResponse + (*StopNodeRequest)(nil), // 23: sensei.StopNodeRequest + (*StopNodeResponse)(nil), // 24: sensei.StopNodeResponse + (*AdminStartNodeRequest)(nil), // 25: sensei.AdminStartNodeRequest + (*AdminStartNodeResponse)(nil), // 26: sensei.AdminStartNodeResponse + (*AdminStopNodeRequest)(nil), // 27: sensei.AdminStopNodeRequest + (*AdminStopNodeResponse)(nil), // 28: sensei.AdminStopNodeResponse + (*GetUnusedAddressRequest)(nil), // 29: sensei.GetUnusedAddressRequest + (*GetUnusedAddressResponse)(nil), // 30: sensei.GetUnusedAddressResponse + (*GetBalanceRequest)(nil), // 31: sensei.GetBalanceRequest + (*GetBalanceResponse)(nil), // 32: sensei.GetBalanceResponse + (*OpenChannelRequest)(nil), // 33: sensei.OpenChannelRequest + (*OpenChannelResult)(nil), // 34: sensei.OpenChannelResult + (*OpenChannelsRequest)(nil), // 35: sensei.OpenChannelsRequest + (*OpenChannelsResponse)(nil), // 36: sensei.OpenChannelsResponse + (*PayInvoiceRequest)(nil), // 37: sensei.PayInvoiceRequest + (*PayInvoiceResponse)(nil), // 38: sensei.PayInvoiceResponse + (*DecodeInvoiceRequest)(nil), // 39: sensei.DecodeInvoiceRequest + (*DecodeInvoiceResponse)(nil), // 40: sensei.DecodeInvoiceResponse + (*Invoice)(nil), // 41: sensei.Invoice + (*RouteHint)(nil), // 42: sensei.RouteHint + (*RouteHintHop)(nil), // 43: sensei.RouteHintHop + (*RoutingFees)(nil), // 44: sensei.RoutingFees + (*Features)(nil), // 45: sensei.Features + (*LabelPaymentRequest)(nil), // 46: sensei.LabelPaymentRequest + (*LabelPaymentResponse)(nil), // 47: sensei.LabelPaymentResponse + (*DeletePaymentRequest)(nil), // 48: sensei.DeletePaymentRequest + (*DeletePaymentResponse)(nil), // 49: sensei.DeletePaymentResponse + (*KeysendRequest)(nil), // 50: sensei.KeysendRequest + (*KeysendResponse)(nil), // 51: sensei.KeysendResponse + (*CreateInvoiceRequest)(nil), // 52: sensei.CreateInvoiceRequest + (*CreateInvoiceResponse)(nil), // 53: sensei.CreateInvoiceResponse + (*ConnectPeerRequest)(nil), // 54: sensei.ConnectPeerRequest + (*ConnectPeerResponse)(nil), // 55: sensei.ConnectPeerResponse + (*Channel)(nil), // 56: sensei.Channel + (*ListChannelsRequest)(nil), // 57: sensei.ListChannelsRequest + (*ListChannelsResponse)(nil), // 58: sensei.ListChannelsResponse + (*Payment)(nil), // 59: sensei.Payment + (*PaymentsFilter)(nil), // 60: sensei.PaymentsFilter + (*ListPaymentsRequest)(nil), // 61: sensei.ListPaymentsRequest + (*ListPaymentsResponse)(nil), // 62: sensei.ListPaymentsResponse + (*CloseChannelRequest)(nil), // 63: sensei.CloseChannelRequest + (*CloseChannelResponse)(nil), // 64: sensei.CloseChannelResponse + (*Info)(nil), // 65: sensei.Info + (*InfoRequest)(nil), // 66: sensei.InfoRequest + (*InfoResponse)(nil), // 67: sensei.InfoResponse + (*Peer)(nil), // 68: sensei.Peer + (*ListPeersRequest)(nil), // 69: sensei.ListPeersRequest + (*ListPeersResponse)(nil), // 70: sensei.ListPeersResponse + (*SignMessageRequest)(nil), // 71: sensei.SignMessageRequest + (*SignMessageResponse)(nil), // 72: sensei.SignMessageResponse + (*VerifyMessageRequest)(nil), // 73: sensei.VerifyMessageRequest + (*VerifyMessageResponse)(nil), // 74: sensei.VerifyMessageResponse + (*ListUnspentRequest)(nil), // 75: sensei.ListUnspentRequest + (*Utxo)(nil), // 76: sensei.Utxo + (*ListUnspentResponse)(nil), // 77: sensei.ListUnspentResponse + (*NetworkGraphInfoRequest)(nil), // 78: sensei.NetworkGraphInfoRequest + (*NetworkGraphInfoResponse)(nil), // 79: sensei.NetworkGraphInfoResponse +} +var file_sensei_proto_depIdxs = []int32{ + 2, // 0: sensei.ListNodesRequest.pagination:type_name -> sensei.PaginationRequest + 0, // 1: sensei.ListNodesResponse.nodes:type_name -> sensei.ListNode + 3, // 2: sensei.ListNodesResponse.pagination:type_name -> sensei.PaginationResponse + 2, // 3: sensei.ListTokensRequest.pagination:type_name -> sensei.PaginationRequest + 1, // 4: sensei.ListTokensResponse.tokens:type_name -> sensei.Token + 3, // 5: sensei.ListTokensResponse.pagination:type_name -> sensei.PaginationResponse + 33, // 6: sensei.OpenChannelsRequest.requests:type_name -> sensei.OpenChannelRequest + 33, // 7: sensei.OpenChannelsResponse.requests:type_name -> sensei.OpenChannelRequest + 34, // 8: sensei.OpenChannelsResponse.results:type_name -> sensei.OpenChannelResult + 41, // 9: sensei.DecodeInvoiceResponse.invoice:type_name -> sensei.Invoice + 42, // 10: sensei.Invoice.route_hints:type_name -> sensei.RouteHint + 45, // 11: sensei.Invoice.features:type_name -> sensei.Features + 43, // 12: sensei.RouteHint.hops:type_name -> sensei.RouteHintHop + 44, // 13: sensei.RouteHintHop.fees:type_name -> sensei.RoutingFees + 2, // 14: sensei.ListChannelsRequest.pagination:type_name -> sensei.PaginationRequest + 56, // 15: sensei.ListChannelsResponse.channels:type_name -> sensei.Channel + 3, // 16: sensei.ListChannelsResponse.pagination:type_name -> sensei.PaginationResponse + 2, // 17: sensei.ListPaymentsRequest.pagination:type_name -> sensei.PaginationRequest + 60, // 18: sensei.ListPaymentsRequest.filter:type_name -> sensei.PaymentsFilter + 59, // 19: sensei.ListPaymentsResponse.payments:type_name -> sensei.Payment + 3, // 20: sensei.ListPaymentsResponse.pagination:type_name -> sensei.PaginationResponse + 65, // 21: sensei.InfoResponse.node_info:type_name -> sensei.Info + 68, // 22: sensei.ListPeersResponse.peers:type_name -> sensei.Peer + 76, // 23: sensei.ListUnspentResponse.utxos:type_name -> sensei.Utxo + 8, // 24: sensei.Admin.CreateAdmin:input_type -> sensei.CreateAdminRequest + 17, // 25: sensei.Admin.StartAdmin:input_type -> sensei.StartAdminRequest + 4, // 26: sensei.Admin.ListNodes:input_type -> sensei.ListNodesRequest + 10, // 27: sensei.Admin.CreateNode:input_type -> sensei.CreateNodeRequest + 12, // 28: sensei.Admin.DeleteNode:input_type -> sensei.DeleteNodeRequest + 19, // 29: sensei.Admin.GetStatus:input_type -> sensei.GetStatusRequest + 25, // 30: sensei.Admin.StartNode:input_type -> sensei.AdminStartNodeRequest + 27, // 31: sensei.Admin.StopNode:input_type -> sensei.AdminStopNodeRequest + 6, // 32: sensei.Admin.ListTokens:input_type -> sensei.ListTokensRequest + 14, // 33: sensei.Admin.CreateToken:input_type -> sensei.CreateTokenRequest + 15, // 34: sensei.Admin.DeleteToken:input_type -> sensei.DeleteTokenRequest + 21, // 35: sensei.Node.StartNode:input_type -> sensei.StartNodeRequest + 23, // 36: sensei.Node.StopNode:input_type -> sensei.StopNodeRequest + 29, // 37: sensei.Node.GetUnusedAddress:input_type -> sensei.GetUnusedAddressRequest + 31, // 38: sensei.Node.GetBalance:input_type -> sensei.GetBalanceRequest + 35, // 39: sensei.Node.OpenChannels:input_type -> sensei.OpenChannelsRequest + 37, // 40: sensei.Node.PayInvoice:input_type -> sensei.PayInvoiceRequest + 39, // 41: sensei.Node.DecodeInvoice:input_type -> sensei.DecodeInvoiceRequest + 50, // 42: sensei.Node.Keysend:input_type -> sensei.KeysendRequest + 52, // 43: sensei.Node.CreateInvoice:input_type -> sensei.CreateInvoiceRequest + 46, // 44: sensei.Node.LabelPayment:input_type -> sensei.LabelPaymentRequest + 48, // 45: sensei.Node.DeletePayment:input_type -> sensei.DeletePaymentRequest + 54, // 46: sensei.Node.ConnectPeer:input_type -> sensei.ConnectPeerRequest + 57, // 47: sensei.Node.ListChannels:input_type -> sensei.ListChannelsRequest + 61, // 48: sensei.Node.ListPayments:input_type -> sensei.ListPaymentsRequest + 63, // 49: sensei.Node.CloseChannel:input_type -> sensei.CloseChannelRequest + 66, // 50: sensei.Node.Info:input_type -> sensei.InfoRequest + 69, // 51: sensei.Node.ListPeers:input_type -> sensei.ListPeersRequest + 71, // 52: sensei.Node.SignMessage:input_type -> sensei.SignMessageRequest + 73, // 53: sensei.Node.VerifyMessage:input_type -> sensei.VerifyMessageRequest + 75, // 54: sensei.Node.ListUnspent:input_type -> sensei.ListUnspentRequest + 78, // 55: sensei.Node.NetworkGraphInfo:input_type -> sensei.NetworkGraphInfoRequest + 9, // 56: sensei.Admin.CreateAdmin:output_type -> sensei.CreateAdminResponse + 18, // 57: sensei.Admin.StartAdmin:output_type -> sensei.StartAdminResponse + 5, // 58: sensei.Admin.ListNodes:output_type -> sensei.ListNodesResponse + 11, // 59: sensei.Admin.CreateNode:output_type -> sensei.CreateNodeResponse + 13, // 60: sensei.Admin.DeleteNode:output_type -> sensei.DeleteNodeResponse + 20, // 61: sensei.Admin.GetStatus:output_type -> sensei.GetStatusResponse + 26, // 62: sensei.Admin.StartNode:output_type -> sensei.AdminStartNodeResponse + 28, // 63: sensei.Admin.StopNode:output_type -> sensei.AdminStopNodeResponse + 7, // 64: sensei.Admin.ListTokens:output_type -> sensei.ListTokensResponse + 1, // 65: sensei.Admin.CreateToken:output_type -> sensei.Token + 16, // 66: sensei.Admin.DeleteToken:output_type -> sensei.DeleteTokenResponse + 22, // 67: sensei.Node.StartNode:output_type -> sensei.StartNodeResponse + 24, // 68: sensei.Node.StopNode:output_type -> sensei.StopNodeResponse + 30, // 69: sensei.Node.GetUnusedAddress:output_type -> sensei.GetUnusedAddressResponse + 32, // 70: sensei.Node.GetBalance:output_type -> sensei.GetBalanceResponse + 36, // 71: sensei.Node.OpenChannels:output_type -> sensei.OpenChannelsResponse + 38, // 72: sensei.Node.PayInvoice:output_type -> sensei.PayInvoiceResponse + 40, // 73: sensei.Node.DecodeInvoice:output_type -> sensei.DecodeInvoiceResponse + 51, // 74: sensei.Node.Keysend:output_type -> sensei.KeysendResponse + 53, // 75: sensei.Node.CreateInvoice:output_type -> sensei.CreateInvoiceResponse + 47, // 76: sensei.Node.LabelPayment:output_type -> sensei.LabelPaymentResponse + 49, // 77: sensei.Node.DeletePayment:output_type -> sensei.DeletePaymentResponse + 55, // 78: sensei.Node.ConnectPeer:output_type -> sensei.ConnectPeerResponse + 58, // 79: sensei.Node.ListChannels:output_type -> sensei.ListChannelsResponse + 62, // 80: sensei.Node.ListPayments:output_type -> sensei.ListPaymentsResponse + 64, // 81: sensei.Node.CloseChannel:output_type -> sensei.CloseChannelResponse + 67, // 82: sensei.Node.Info:output_type -> sensei.InfoResponse + 70, // 83: sensei.Node.ListPeers:output_type -> sensei.ListPeersResponse + 72, // 84: sensei.Node.SignMessage:output_type -> sensei.SignMessageResponse + 74, // 85: sensei.Node.VerifyMessage:output_type -> sensei.VerifyMessageResponse + 77, // 86: sensei.Node.ListUnspent:output_type -> sensei.ListUnspentResponse + 79, // 87: sensei.Node.NetworkGraphInfo:output_type -> sensei.NetworkGraphInfoResponse + 56, // [56:88] is the sub-list for method output_type + 24, // [24:56] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name +} + +func init() { file_sensei_proto_init() } +func file_sensei_proto_init() { + if File_sensei_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_sensei_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Token); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PaginationRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PaginationResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListNodesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTokensRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTokensResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAdminRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAdminResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateTokenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteTokenRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteTokenResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartAdminRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartAdminResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatusRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetStatusResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StartNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StopNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdminStartNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdminStartNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdminStopNodeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AdminStopNodeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUnusedAddressRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetUnusedAddressResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBalanceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBalanceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OpenChannelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OpenChannelResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OpenChannelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OpenChannelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayInvoiceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PayInvoiceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodeInvoiceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DecodeInvoiceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Invoice); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RouteHint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RouteHintHop); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RoutingFees); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Features); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LabelPaymentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LabelPaymentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeletePaymentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeletePaymentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeysendRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*KeysendResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateInvoiceRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateInvoiceResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConnectPeerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConnectPeerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Channel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListChannelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListChannelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Payment); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PaymentsFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPaymentsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPaymentsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloseChannelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CloseChannelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Info); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Peer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPeersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListPeersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignMessageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SignMessageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VerifyMessageRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*VerifyMessageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUnspentRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Utxo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListUnspentResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetworkGraphInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_sensei_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NetworkGraphInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_sensei_proto_msgTypes[2].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[4].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[33].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[34].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[43].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[56].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[57].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[59].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[60].OneofWrappers = []interface{}{} + file_sensei_proto_msgTypes[61].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_sensei_proto_rawDesc, + NumEnums: 0, + NumMessages: 80, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_sensei_proto_goTypes, + DependencyIndexes: file_sensei_proto_depIdxs, + MessageInfos: file_sensei_proto_msgTypes, + }.Build() + File_sensei_proto = out.File + file_sensei_proto_rawDesc = nil + file_sensei_proto_goTypes = nil + file_sensei_proto_depIdxs = nil +} diff --git a/sensei/sensei.proto b/sensei/sensei.proto new file mode 100644 index 0000000..6208a2e --- /dev/null +++ b/sensei/sensei.proto @@ -0,0 +1,421 @@ +syntax = "proto3"; +package sensei; + +option go_package = "github.com/bottlepay/sensei"; + +service Admin { + rpc CreateAdmin (CreateAdminRequest) returns (CreateAdminResponse); + rpc StartAdmin (StartAdminRequest) returns (StartAdminResponse); + rpc ListNodes (ListNodesRequest) returns (ListNodesResponse); + rpc CreateNode (CreateNodeRequest) returns (CreateNodeResponse); + rpc DeleteNode (DeleteNodeRequest) returns (DeleteNodeResponse); + rpc GetStatus (GetStatusRequest) returns (GetStatusResponse); + rpc StartNode (AdminStartNodeRequest) returns (AdminStartNodeResponse); + rpc StopNode (AdminStopNodeRequest) returns (AdminStopNodeResponse); + rpc ListTokens (ListTokensRequest) returns (ListTokensResponse); + rpc CreateToken (CreateTokenRequest) returns (Token); + rpc DeleteToken (DeleteTokenRequest) returns (DeleteTokenResponse); +} + +service Node { + rpc StartNode (StartNodeRequest) returns (StartNodeResponse); + rpc StopNode (StopNodeRequest) returns (StopNodeResponse); + rpc GetUnusedAddress (GetUnusedAddressRequest) returns (GetUnusedAddressResponse); + rpc GetBalance (GetBalanceRequest) returns (GetBalanceResponse); + rpc OpenChannels (OpenChannelsRequest) returns (OpenChannelsResponse); + rpc PayInvoice (PayInvoiceRequest) returns (PayInvoiceResponse); + rpc DecodeInvoice (DecodeInvoiceRequest) returns (DecodeInvoiceResponse); + rpc Keysend (KeysendRequest) returns (KeysendResponse); + rpc CreateInvoice (CreateInvoiceRequest) returns (CreateInvoiceResponse); + rpc LabelPayment (LabelPaymentRequest) returns (LabelPaymentResponse); + rpc DeletePayment (DeletePaymentRequest) returns (DeletePaymentResponse); + rpc ConnectPeer (ConnectPeerRequest) returns (ConnectPeerResponse); + rpc ListChannels (ListChannelsRequest) returns (ListChannelsResponse); + rpc ListPayments (ListPaymentsRequest) returns (ListPaymentsResponse); + rpc CloseChannel (CloseChannelRequest) returns (CloseChannelResponse); + rpc Info (InfoRequest) returns (InfoResponse); + rpc ListPeers (ListPeersRequest) returns (ListPeersResponse); + rpc SignMessage (SignMessageRequest) returns (SignMessageResponse); + rpc VerifyMessage (VerifyMessageRequest) returns (VerifyMessageResponse); + rpc ListUnspent (ListUnspentRequest) returns (ListUnspentResponse); + rpc NetworkGraphInfo (NetworkGraphInfoRequest) returns (NetworkGraphInfoResponse); +} + +message ListNode { + string id = 1; + int64 created_at = 2; + int64 updated_at = 3; + uint32 role = 4; + string username = 5; + string alias = 6; + string network = 7; + string listen_addr = 8; + uint32 listen_port = 9; + string pubkey = 10; + uint32 status = 11; +} + +message Token { + string id = 1; + int64 created_at = 2; + int64 updated_at = 3; + int64 expires_at = 4; + string name = 5; + string token = 6; + bool single_use = 7; + string scope = 8; +} + +message PaginationRequest { + uint32 page = 1; + uint32 take = 3; + optional string query = 4; +} + +message PaginationResponse { + bool has_more = 1; + uint64 total = 2; +} + +message ListNodesRequest { + optional PaginationRequest pagination = 1; +} + +message ListNodesResponse { + repeated ListNode nodes = 1; + PaginationResponse pagination = 2; +} + +message ListTokensRequest { + optional PaginationRequest pagination = 1; +} + +message ListTokensResponse { + repeated Token tokens = 1; + PaginationResponse pagination = 2; +} + +message CreateAdminRequest { + string username = 1; + string alias = 2; + string passphrase = 3; + bool start = 4; +} + +message CreateAdminResponse { + string pubkey = 1; + string macaroon = 2; + string id = 3; + uint32 role = 4; + string token = 5; +} + +message CreateNodeRequest { + string username = 1; + string alias = 2; + string passphrase = 3; + bool start = 4; +} +message CreateNodeResponse { + string pubkey = 1; + string macaroon = 2; + string listen_addr = 3; + int32 listen_port = 4; + string id = 5; +} + +message DeleteNodeRequest { + string pubkey = 1; +} +message DeleteNodeResponse {} + +message CreateTokenRequest { + string name = 1; + string scope = 2; + uint64 expires_at = 3; + bool single_use = 4; +} + +message DeleteTokenRequest { + string id = 1; +} +message DeleteTokenResponse {} + +message StartAdminRequest { + string passphrase = 1; +} +message StartAdminResponse { + string pubkey = 1; + string macaroon = 2; + string token = 3; +} + +message GetStatusRequest {} +message GetStatusResponse { + string version = 1; + optional string alias = 2; + optional string pubkey = 3; + optional string username = 4; + optional uint32 role = 5; + bool created = 6; + bool running = 7; + bool authenticated = 8; +} + +message StartNodeRequest { + string passphrase = 1; +} +message StartNodeResponse {} + +message StopNodeRequest {} +message StopNodeResponse {} + +message AdminStartNodeRequest { + string passphrase = 1; + string pubkey = 2; +} +message AdminStartNodeResponse { + string macaroon = 1; +} + +message AdminStopNodeRequest { + string pubkey = 1; +} +message AdminStopNodeResponse {} + +message GetUnusedAddressRequest {} +message GetUnusedAddressResponse { + string address = 1; +} + +message GetBalanceRequest {} +message GetBalanceResponse { + uint64 onchain_balance_sats = 1; + uint64 channel_balance_msats = 2; + uint64 channel_outbound_capacity_msats = 3; + uint64 channel_inbound_capacity_msats = 4; + uint64 usable_channel_outbound_capacity_msats = 5; + uint64 usable_channel_inbound_capacity_msats = 6; +} + + +message OpenChannelRequest { + string counterparty_pubkey = 1; + uint64 amount_sats = 2; + bool public = 3; + optional uint64 push_amount_msats = 4; + optional uint64 custom_id = 5; + optional string counterparty_host_port = 6; + optional uint32 forwarding_fee_proportional_millionths = 7; + optional uint32 forwarding_fee_base_msat = 8; + optional uint32 cltv_expiry_delta = 9; + optional uint64 max_dust_htlc_exposure_msat = 10; + optional uint64 force_close_avoidance_max_fee_satoshis = 11; +} + +message OpenChannelResult { + bool error = 1; + optional string error_message = 2; + optional string temp_channel_id = 3; +} + +message OpenChannelsRequest { + repeated OpenChannelRequest requests = 1; +} +message OpenChannelsResponse { + repeated OpenChannelRequest requests = 1; + repeated OpenChannelResult results = 2; +} + +message PayInvoiceRequest { + string invoice = 1; +} +message PayInvoiceResponse {} + +message DecodeInvoiceRequest { + string invoice = 1; +} +message DecodeInvoiceResponse { + Invoice invoice = 1; +} +message Invoice { + string payment_hash = 1; + string currency = 2; + uint64 amount = 3; + string description = 4; + uint64 expiry = 5; + uint64 timestamp = 6; + uint64 min_final_cltv_expiry = 7; + repeated RouteHint route_hints = 8; + Features features = 9; + string payee_pub_key = 10; +} +message RouteHint { + repeated RouteHintHop hops = 1; +} +message RouteHintHop { + string src_node_id = 1; + uint64 short_channel_id = 2; + RoutingFees fees = 3; + uint32 cltv_expiry_delta = 4; + optional uint64 htlc_minimum_msat = 5; + optional uint64 htlc_maximum_msat = 6; +} +message RoutingFees { + uint32 base_msat = 1; + uint32 proportional_millionths = 2; +} +message Features { + bool variable_length_onion = 1; + bool payment_secret = 2; + bool basic_mpp = 3; +} + +message LabelPaymentRequest { + string label = 1; + string payment_hash = 2; +} +message LabelPaymentResponse {} + +message DeletePaymentRequest { + string payment_hash = 1; +} +message DeletePaymentResponse {} + +message KeysendRequest { + string dest_pubkey = 1; + uint64 amt_msat = 2; +} +message KeysendResponse {} + +message CreateInvoiceRequest { + uint64 amt_msat = 1; + string description = 2; +} +message CreateInvoiceResponse { + string invoice = 1; +} + +message ConnectPeerRequest { + string node_connection_string = 1; +} +message ConnectPeerResponse {} + +message Channel { + string channel_id = 1; + optional string funding_txid = 2; + optional uint32 funding_tx_index = 3; + optional uint64 short_channel_id = 4; + uint64 channel_value_satoshis = 5; + uint64 balance_msat = 6; + optional uint64 unspendable_punishment_reserve = 7; + uint64 user_channel_id = 8; + uint64 outbound_capacity_msat = 9; + uint64 inbound_capacity_msat = 10; + optional uint32 confirmations_required = 11; + optional uint32 force_close_spend_delay = 12; + bool is_outbound = 13; + bool is_channel_ready = 14; + bool is_usable = 15; + bool is_public = 16; + string counterparty_pubkey = 17; + optional string alias = 18; +} + +message ListChannelsRequest { + optional PaginationRequest pagination = 1; +} +message ListChannelsResponse { + repeated Channel channels = 1; + PaginationResponse pagination = 2; +} + +message Payment { + string hash = 1; + optional string preimage = 2; + optional string secret = 3; + string status = 4; + optional int64 amt_msat = 5; + optional int64 fee_paid_msat = 6; + string origin = 7; + optional string label = 8; + optional string invoice = 9; +} + +message PaymentsFilter { + optional string origin = 1; + optional string status = 2; +} + +message ListPaymentsRequest { + optional PaginationRequest pagination = 1; + optional PaymentsFilter filter = 2; +} +message ListPaymentsResponse { + repeated Payment payments = 1; + PaginationResponse pagination = 2; +} + +message CloseChannelRequest { + string channel_id = 1; + bool force = 2; +} +message CloseChannelResponse {} + +message Info { + string version = 1; + string node_pubkey = 2; + uint32 num_channels = 3; + uint32 num_usable_channels = 4; + uint32 num_peers = 5; +} + +message InfoRequest {} +message InfoResponse { + Info node_info = 1; +} + +message Peer { + string node_pubkey = 1; +} + +message ListPeersRequest { +} +message ListPeersResponse { + repeated Peer peers = 1; +} + +message SignMessageRequest { + string message = 1; +} +message SignMessageResponse { + string signature = 1; +} + +message VerifyMessageRequest { + string message = 1; + string signature = 2; +} +message VerifyMessageResponse { + bool valid = 1; + string pubkey = 2; +} +message ListUnspentRequest {} + +message Utxo { + uint64 amount_sat = 1; + string spk = 2; + string txid = 3; + uint32 output_index = 4; +} + +message ListUnspentResponse { + repeated Utxo utxos = 1; +} + +message NetworkGraphInfoRequest {} +message NetworkGraphInfoResponse { + uint64 num_channels = 1; + uint64 num_nodes = 2; + uint64 num_known_edge_policies = 3; +} diff --git a/sensei/sensei_grpc.pb.go b/sensei/sensei_grpc.pb.go new file mode 100644 index 0000000..fefefa2 --- /dev/null +++ b/sensei/sensei_grpc.pb.go @@ -0,0 +1,1267 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. + +package sensei + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// AdminClient is the client API for Admin service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type AdminClient interface { + CreateAdmin(ctx context.Context, in *CreateAdminRequest, opts ...grpc.CallOption) (*CreateAdminResponse, error) + StartAdmin(ctx context.Context, in *StartAdminRequest, opts ...grpc.CallOption) (*StartAdminResponse, error) + ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) + CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) + DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error) + GetStatus(ctx context.Context, in *GetStatusRequest, opts ...grpc.CallOption) (*GetStatusResponse, error) + StartNode(ctx context.Context, in *AdminStartNodeRequest, opts ...grpc.CallOption) (*AdminStartNodeResponse, error) + StopNode(ctx context.Context, in *AdminStopNodeRequest, opts ...grpc.CallOption) (*AdminStopNodeResponse, error) + ListTokens(ctx context.Context, in *ListTokensRequest, opts ...grpc.CallOption) (*ListTokensResponse, error) + CreateToken(ctx context.Context, in *CreateTokenRequest, opts ...grpc.CallOption) (*Token, error) + DeleteToken(ctx context.Context, in *DeleteTokenRequest, opts ...grpc.CallOption) (*DeleteTokenResponse, error) +} + +type adminClient struct { + cc grpc.ClientConnInterface +} + +func NewAdminClient(cc grpc.ClientConnInterface) AdminClient { + return &adminClient{cc} +} + +func (c *adminClient) CreateAdmin(ctx context.Context, in *CreateAdminRequest, opts ...grpc.CallOption) (*CreateAdminResponse, error) { + out := new(CreateAdminResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/CreateAdmin", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) StartAdmin(ctx context.Context, in *StartAdminRequest, opts ...grpc.CallOption) (*StartAdminResponse, error) { + out := new(StartAdminResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/StartAdmin", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) ListNodes(ctx context.Context, in *ListNodesRequest, opts ...grpc.CallOption) (*ListNodesResponse, error) { + out := new(ListNodesResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/ListNodes", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) CreateNode(ctx context.Context, in *CreateNodeRequest, opts ...grpc.CallOption) (*CreateNodeResponse, error) { + out := new(CreateNodeResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/CreateNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) DeleteNode(ctx context.Context, in *DeleteNodeRequest, opts ...grpc.CallOption) (*DeleteNodeResponse, error) { + out := new(DeleteNodeResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/DeleteNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) GetStatus(ctx context.Context, in *GetStatusRequest, opts ...grpc.CallOption) (*GetStatusResponse, error) { + out := new(GetStatusResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/GetStatus", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) StartNode(ctx context.Context, in *AdminStartNodeRequest, opts ...grpc.CallOption) (*AdminStartNodeResponse, error) { + out := new(AdminStartNodeResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/StartNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) StopNode(ctx context.Context, in *AdminStopNodeRequest, opts ...grpc.CallOption) (*AdminStopNodeResponse, error) { + out := new(AdminStopNodeResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/StopNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) ListTokens(ctx context.Context, in *ListTokensRequest, opts ...grpc.CallOption) (*ListTokensResponse, error) { + out := new(ListTokensResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/ListTokens", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) CreateToken(ctx context.Context, in *CreateTokenRequest, opts ...grpc.CallOption) (*Token, error) { + out := new(Token) + err := c.cc.Invoke(ctx, "/sensei.Admin/CreateToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *adminClient) DeleteToken(ctx context.Context, in *DeleteTokenRequest, opts ...grpc.CallOption) (*DeleteTokenResponse, error) { + out := new(DeleteTokenResponse) + err := c.cc.Invoke(ctx, "/sensei.Admin/DeleteToken", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// AdminServer is the server API for Admin service. +// All implementations must embed UnimplementedAdminServer +// for forward compatibility +type AdminServer interface { + CreateAdmin(context.Context, *CreateAdminRequest) (*CreateAdminResponse, error) + StartAdmin(context.Context, *StartAdminRequest) (*StartAdminResponse, error) + ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) + CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) + DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error) + GetStatus(context.Context, *GetStatusRequest) (*GetStatusResponse, error) + StartNode(context.Context, *AdminStartNodeRequest) (*AdminStartNodeResponse, error) + StopNode(context.Context, *AdminStopNodeRequest) (*AdminStopNodeResponse, error) + ListTokens(context.Context, *ListTokensRequest) (*ListTokensResponse, error) + CreateToken(context.Context, *CreateTokenRequest) (*Token, error) + DeleteToken(context.Context, *DeleteTokenRequest) (*DeleteTokenResponse, error) + mustEmbedUnimplementedAdminServer() +} + +// UnimplementedAdminServer must be embedded to have forward compatible implementations. +type UnimplementedAdminServer struct { +} + +func (UnimplementedAdminServer) CreateAdmin(context.Context, *CreateAdminRequest) (*CreateAdminResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAdmin not implemented") +} +func (UnimplementedAdminServer) StartAdmin(context.Context, *StartAdminRequest) (*StartAdminResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartAdmin not implemented") +} +func (UnimplementedAdminServer) ListNodes(context.Context, *ListNodesRequest) (*ListNodesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListNodes not implemented") +} +func (UnimplementedAdminServer) CreateNode(context.Context, *CreateNodeRequest) (*CreateNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateNode not implemented") +} +func (UnimplementedAdminServer) DeleteNode(context.Context, *DeleteNodeRequest) (*DeleteNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteNode not implemented") +} +func (UnimplementedAdminServer) GetStatus(context.Context, *GetStatusRequest) (*GetStatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetStatus not implemented") +} +func (UnimplementedAdminServer) StartNode(context.Context, *AdminStartNodeRequest) (*AdminStartNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartNode not implemented") +} +func (UnimplementedAdminServer) StopNode(context.Context, *AdminStopNodeRequest) (*AdminStopNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopNode not implemented") +} +func (UnimplementedAdminServer) ListTokens(context.Context, *ListTokensRequest) (*ListTokensResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTokens not implemented") +} +func (UnimplementedAdminServer) CreateToken(context.Context, *CreateTokenRequest) (*Token, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateToken not implemented") +} +func (UnimplementedAdminServer) DeleteToken(context.Context, *DeleteTokenRequest) (*DeleteTokenResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteToken not implemented") +} +func (UnimplementedAdminServer) mustEmbedUnimplementedAdminServer() {} + +// UnsafeAdminServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to AdminServer will +// result in compilation errors. +type UnsafeAdminServer interface { + mustEmbedUnimplementedAdminServer() +} + +func RegisterAdminServer(s grpc.ServiceRegistrar, srv AdminServer) { + s.RegisterService(&Admin_ServiceDesc, srv) +} + +func _Admin_CreateAdmin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAdminRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).CreateAdmin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/CreateAdmin", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).CreateAdmin(ctx, req.(*CreateAdminRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_StartAdmin_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartAdminRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).StartAdmin(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/StartAdmin", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).StartAdmin(ctx, req.(*StartAdminRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_ListNodes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListNodesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).ListNodes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/ListNodes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).ListNodes(ctx, req.(*ListNodesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_CreateNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).CreateNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/CreateNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).CreateNode(ctx, req.(*CreateNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_DeleteNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).DeleteNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/DeleteNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).DeleteNode(ctx, req.(*DeleteNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_GetStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetStatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).GetStatus(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/GetStatus", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).GetStatus(ctx, req.(*GetStatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_StartNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AdminStartNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).StartNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/StartNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).StartNode(ctx, req.(*AdminStartNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_StopNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AdminStopNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).StopNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/StopNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).StopNode(ctx, req.(*AdminStopNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_ListTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTokensRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).ListTokens(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/ListTokens", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).ListTokens(ctx, req.(*ListTokensRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_CreateToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).CreateToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/CreateToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).CreateToken(ctx, req.(*CreateTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Admin_DeleteToken_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteTokenRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AdminServer).DeleteToken(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Admin/DeleteToken", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AdminServer).DeleteToken(ctx, req.(*DeleteTokenRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Admin_ServiceDesc is the grpc.ServiceDesc for Admin service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Admin_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "sensei.Admin", + HandlerType: (*AdminServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CreateAdmin", + Handler: _Admin_CreateAdmin_Handler, + }, + { + MethodName: "StartAdmin", + Handler: _Admin_StartAdmin_Handler, + }, + { + MethodName: "ListNodes", + Handler: _Admin_ListNodes_Handler, + }, + { + MethodName: "CreateNode", + Handler: _Admin_CreateNode_Handler, + }, + { + MethodName: "DeleteNode", + Handler: _Admin_DeleteNode_Handler, + }, + { + MethodName: "GetStatus", + Handler: _Admin_GetStatus_Handler, + }, + { + MethodName: "StartNode", + Handler: _Admin_StartNode_Handler, + }, + { + MethodName: "StopNode", + Handler: _Admin_StopNode_Handler, + }, + { + MethodName: "ListTokens", + Handler: _Admin_ListTokens_Handler, + }, + { + MethodName: "CreateToken", + Handler: _Admin_CreateToken_Handler, + }, + { + MethodName: "DeleteToken", + Handler: _Admin_DeleteToken_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "sensei.proto", +} + +// NodeClient is the client API for Node service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type NodeClient interface { + StartNode(ctx context.Context, in *StartNodeRequest, opts ...grpc.CallOption) (*StartNodeResponse, error) + StopNode(ctx context.Context, in *StopNodeRequest, opts ...grpc.CallOption) (*StopNodeResponse, error) + GetUnusedAddress(ctx context.Context, in *GetUnusedAddressRequest, opts ...grpc.CallOption) (*GetUnusedAddressResponse, error) + GetBalance(ctx context.Context, in *GetBalanceRequest, opts ...grpc.CallOption) (*GetBalanceResponse, error) + OpenChannels(ctx context.Context, in *OpenChannelsRequest, opts ...grpc.CallOption) (*OpenChannelsResponse, error) + PayInvoice(ctx context.Context, in *PayInvoiceRequest, opts ...grpc.CallOption) (*PayInvoiceResponse, error) + DecodeInvoice(ctx context.Context, in *DecodeInvoiceRequest, opts ...grpc.CallOption) (*DecodeInvoiceResponse, error) + Keysend(ctx context.Context, in *KeysendRequest, opts ...grpc.CallOption) (*KeysendResponse, error) + CreateInvoice(ctx context.Context, in *CreateInvoiceRequest, opts ...grpc.CallOption) (*CreateInvoiceResponse, error) + LabelPayment(ctx context.Context, in *LabelPaymentRequest, opts ...grpc.CallOption) (*LabelPaymentResponse, error) + DeletePayment(ctx context.Context, in *DeletePaymentRequest, opts ...grpc.CallOption) (*DeletePaymentResponse, error) + ConnectPeer(ctx context.Context, in *ConnectPeerRequest, opts ...grpc.CallOption) (*ConnectPeerResponse, error) + ListChannels(ctx context.Context, in *ListChannelsRequest, opts ...grpc.CallOption) (*ListChannelsResponse, error) + ListPayments(ctx context.Context, in *ListPaymentsRequest, opts ...grpc.CallOption) (*ListPaymentsResponse, error) + CloseChannel(ctx context.Context, in *CloseChannelRequest, opts ...grpc.CallOption) (*CloseChannelResponse, error) + Info(ctx context.Context, in *InfoRequest, opts ...grpc.CallOption) (*InfoResponse, error) + ListPeers(ctx context.Context, in *ListPeersRequest, opts ...grpc.CallOption) (*ListPeersResponse, error) + SignMessage(ctx context.Context, in *SignMessageRequest, opts ...grpc.CallOption) (*SignMessageResponse, error) + VerifyMessage(ctx context.Context, in *VerifyMessageRequest, opts ...grpc.CallOption) (*VerifyMessageResponse, error) + ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error) + NetworkGraphInfo(ctx context.Context, in *NetworkGraphInfoRequest, opts ...grpc.CallOption) (*NetworkGraphInfoResponse, error) +} + +type nodeClient struct { + cc grpc.ClientConnInterface +} + +func NewNodeClient(cc grpc.ClientConnInterface) NodeClient { + return &nodeClient{cc} +} + +func (c *nodeClient) StartNode(ctx context.Context, in *StartNodeRequest, opts ...grpc.CallOption) (*StartNodeResponse, error) { + out := new(StartNodeResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/StartNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) StopNode(ctx context.Context, in *StopNodeRequest, opts ...grpc.CallOption) (*StopNodeResponse, error) { + out := new(StopNodeResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/StopNode", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) GetUnusedAddress(ctx context.Context, in *GetUnusedAddressRequest, opts ...grpc.CallOption) (*GetUnusedAddressResponse, error) { + out := new(GetUnusedAddressResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/GetUnusedAddress", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) GetBalance(ctx context.Context, in *GetBalanceRequest, opts ...grpc.CallOption) (*GetBalanceResponse, error) { + out := new(GetBalanceResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/GetBalance", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) OpenChannels(ctx context.Context, in *OpenChannelsRequest, opts ...grpc.CallOption) (*OpenChannelsResponse, error) { + out := new(OpenChannelsResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/OpenChannels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) PayInvoice(ctx context.Context, in *PayInvoiceRequest, opts ...grpc.CallOption) (*PayInvoiceResponse, error) { + out := new(PayInvoiceResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/PayInvoice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) DecodeInvoice(ctx context.Context, in *DecodeInvoiceRequest, opts ...grpc.CallOption) (*DecodeInvoiceResponse, error) { + out := new(DecodeInvoiceResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/DecodeInvoice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) Keysend(ctx context.Context, in *KeysendRequest, opts ...grpc.CallOption) (*KeysendResponse, error) { + out := new(KeysendResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/Keysend", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) CreateInvoice(ctx context.Context, in *CreateInvoiceRequest, opts ...grpc.CallOption) (*CreateInvoiceResponse, error) { + out := new(CreateInvoiceResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/CreateInvoice", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) LabelPayment(ctx context.Context, in *LabelPaymentRequest, opts ...grpc.CallOption) (*LabelPaymentResponse, error) { + out := new(LabelPaymentResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/LabelPayment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) DeletePayment(ctx context.Context, in *DeletePaymentRequest, opts ...grpc.CallOption) (*DeletePaymentResponse, error) { + out := new(DeletePaymentResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/DeletePayment", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) ConnectPeer(ctx context.Context, in *ConnectPeerRequest, opts ...grpc.CallOption) (*ConnectPeerResponse, error) { + out := new(ConnectPeerResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/ConnectPeer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) ListChannels(ctx context.Context, in *ListChannelsRequest, opts ...grpc.CallOption) (*ListChannelsResponse, error) { + out := new(ListChannelsResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/ListChannels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) ListPayments(ctx context.Context, in *ListPaymentsRequest, opts ...grpc.CallOption) (*ListPaymentsResponse, error) { + out := new(ListPaymentsResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/ListPayments", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) CloseChannel(ctx context.Context, in *CloseChannelRequest, opts ...grpc.CallOption) (*CloseChannelResponse, error) { + out := new(CloseChannelResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/CloseChannel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) Info(ctx context.Context, in *InfoRequest, opts ...grpc.CallOption) (*InfoResponse, error) { + out := new(InfoResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/Info", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) ListPeers(ctx context.Context, in *ListPeersRequest, opts ...grpc.CallOption) (*ListPeersResponse, error) { + out := new(ListPeersResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/ListPeers", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) SignMessage(ctx context.Context, in *SignMessageRequest, opts ...grpc.CallOption) (*SignMessageResponse, error) { + out := new(SignMessageResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/SignMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) VerifyMessage(ctx context.Context, in *VerifyMessageRequest, opts ...grpc.CallOption) (*VerifyMessageResponse, error) { + out := new(VerifyMessageResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/VerifyMessage", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) ListUnspent(ctx context.Context, in *ListUnspentRequest, opts ...grpc.CallOption) (*ListUnspentResponse, error) { + out := new(ListUnspentResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/ListUnspent", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeClient) NetworkGraphInfo(ctx context.Context, in *NetworkGraphInfoRequest, opts ...grpc.CallOption) (*NetworkGraphInfoResponse, error) { + out := new(NetworkGraphInfoResponse) + err := c.cc.Invoke(ctx, "/sensei.Node/NetworkGraphInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NodeServer is the server API for Node service. +// All implementations must embed UnimplementedNodeServer +// for forward compatibility +type NodeServer interface { + StartNode(context.Context, *StartNodeRequest) (*StartNodeResponse, error) + StopNode(context.Context, *StopNodeRequest) (*StopNodeResponse, error) + GetUnusedAddress(context.Context, *GetUnusedAddressRequest) (*GetUnusedAddressResponse, error) + GetBalance(context.Context, *GetBalanceRequest) (*GetBalanceResponse, error) + OpenChannels(context.Context, *OpenChannelsRequest) (*OpenChannelsResponse, error) + PayInvoice(context.Context, *PayInvoiceRequest) (*PayInvoiceResponse, error) + DecodeInvoice(context.Context, *DecodeInvoiceRequest) (*DecodeInvoiceResponse, error) + Keysend(context.Context, *KeysendRequest) (*KeysendResponse, error) + CreateInvoice(context.Context, *CreateInvoiceRequest) (*CreateInvoiceResponse, error) + LabelPayment(context.Context, *LabelPaymentRequest) (*LabelPaymentResponse, error) + DeletePayment(context.Context, *DeletePaymentRequest) (*DeletePaymentResponse, error) + ConnectPeer(context.Context, *ConnectPeerRequest) (*ConnectPeerResponse, error) + ListChannels(context.Context, *ListChannelsRequest) (*ListChannelsResponse, error) + ListPayments(context.Context, *ListPaymentsRequest) (*ListPaymentsResponse, error) + CloseChannel(context.Context, *CloseChannelRequest) (*CloseChannelResponse, error) + Info(context.Context, *InfoRequest) (*InfoResponse, error) + ListPeers(context.Context, *ListPeersRequest) (*ListPeersResponse, error) + SignMessage(context.Context, *SignMessageRequest) (*SignMessageResponse, error) + VerifyMessage(context.Context, *VerifyMessageRequest) (*VerifyMessageResponse, error) + ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error) + NetworkGraphInfo(context.Context, *NetworkGraphInfoRequest) (*NetworkGraphInfoResponse, error) + mustEmbedUnimplementedNodeServer() +} + +// UnimplementedNodeServer must be embedded to have forward compatible implementations. +type UnimplementedNodeServer struct { +} + +func (UnimplementedNodeServer) StartNode(context.Context, *StartNodeRequest) (*StartNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StartNode not implemented") +} +func (UnimplementedNodeServer) StopNode(context.Context, *StopNodeRequest) (*StopNodeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StopNode not implemented") +} +func (UnimplementedNodeServer) GetUnusedAddress(context.Context, *GetUnusedAddressRequest) (*GetUnusedAddressResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUnusedAddress not implemented") +} +func (UnimplementedNodeServer) GetBalance(context.Context, *GetBalanceRequest) (*GetBalanceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBalance not implemented") +} +func (UnimplementedNodeServer) OpenChannels(context.Context, *OpenChannelsRequest) (*OpenChannelsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method OpenChannels not implemented") +} +func (UnimplementedNodeServer) PayInvoice(context.Context, *PayInvoiceRequest) (*PayInvoiceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PayInvoice not implemented") +} +func (UnimplementedNodeServer) DecodeInvoice(context.Context, *DecodeInvoiceRequest) (*DecodeInvoiceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DecodeInvoice not implemented") +} +func (UnimplementedNodeServer) Keysend(context.Context, *KeysendRequest) (*KeysendResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Keysend not implemented") +} +func (UnimplementedNodeServer) CreateInvoice(context.Context, *CreateInvoiceRequest) (*CreateInvoiceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateInvoice not implemented") +} +func (UnimplementedNodeServer) LabelPayment(context.Context, *LabelPaymentRequest) (*LabelPaymentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method LabelPayment not implemented") +} +func (UnimplementedNodeServer) DeletePayment(context.Context, *DeletePaymentRequest) (*DeletePaymentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeletePayment not implemented") +} +func (UnimplementedNodeServer) ConnectPeer(context.Context, *ConnectPeerRequest) (*ConnectPeerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ConnectPeer not implemented") +} +func (UnimplementedNodeServer) ListChannels(context.Context, *ListChannelsRequest) (*ListChannelsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListChannels not implemented") +} +func (UnimplementedNodeServer) ListPayments(context.Context, *ListPaymentsRequest) (*ListPaymentsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPayments not implemented") +} +func (UnimplementedNodeServer) CloseChannel(context.Context, *CloseChannelRequest) (*CloseChannelResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CloseChannel not implemented") +} +func (UnimplementedNodeServer) Info(context.Context, *InfoRequest) (*InfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Info not implemented") +} +func (UnimplementedNodeServer) ListPeers(context.Context, *ListPeersRequest) (*ListPeersResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListPeers not implemented") +} +func (UnimplementedNodeServer) SignMessage(context.Context, *SignMessageRequest) (*SignMessageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SignMessage not implemented") +} +func (UnimplementedNodeServer) VerifyMessage(context.Context, *VerifyMessageRequest) (*VerifyMessageResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method VerifyMessage not implemented") +} +func (UnimplementedNodeServer) ListUnspent(context.Context, *ListUnspentRequest) (*ListUnspentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListUnspent not implemented") +} +func (UnimplementedNodeServer) NetworkGraphInfo(context.Context, *NetworkGraphInfoRequest) (*NetworkGraphInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method NetworkGraphInfo not implemented") +} +func (UnimplementedNodeServer) mustEmbedUnimplementedNodeServer() {} + +// UnsafeNodeServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NodeServer will +// result in compilation errors. +type UnsafeNodeServer interface { + mustEmbedUnimplementedNodeServer() +} + +func RegisterNodeServer(s grpc.ServiceRegistrar, srv NodeServer) { + s.RegisterService(&Node_ServiceDesc, srv) +} + +func _Node_StartNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StartNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).StartNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/StartNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).StartNode(ctx, req.(*StartNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_StopNode_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StopNodeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).StopNode(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/StopNode", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).StopNode(ctx, req.(*StopNodeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_GetUnusedAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUnusedAddressRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).GetUnusedAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/GetUnusedAddress", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).GetUnusedAddress(ctx, req.(*GetUnusedAddressRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_GetBalance_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBalanceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).GetBalance(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/GetBalance", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).GetBalance(ctx, req.(*GetBalanceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_OpenChannels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OpenChannelsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).OpenChannels(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/OpenChannels", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).OpenChannels(ctx, req.(*OpenChannelsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_PayInvoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PayInvoiceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).PayInvoice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/PayInvoice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).PayInvoice(ctx, req.(*PayInvoiceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_DecodeInvoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DecodeInvoiceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).DecodeInvoice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/DecodeInvoice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).DecodeInvoice(ctx, req.(*DecodeInvoiceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_Keysend_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(KeysendRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).Keysend(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/Keysend", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).Keysend(ctx, req.(*KeysendRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_CreateInvoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateInvoiceRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).CreateInvoice(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/CreateInvoice", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).CreateInvoice(ctx, req.(*CreateInvoiceRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_LabelPayment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LabelPaymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).LabelPayment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/LabelPayment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).LabelPayment(ctx, req.(*LabelPaymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_DeletePayment_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeletePaymentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).DeletePayment(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/DeletePayment", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).DeletePayment(ctx, req.(*DeletePaymentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_ConnectPeer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ConnectPeerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).ConnectPeer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/ConnectPeer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).ConnectPeer(ctx, req.(*ConnectPeerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_ListChannels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListChannelsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).ListChannels(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/ListChannels", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).ListChannels(ctx, req.(*ListChannelsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_ListPayments_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPaymentsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).ListPayments(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/ListPayments", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).ListPayments(ctx, req.(*ListPaymentsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_CloseChannel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CloseChannelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).CloseChannel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/CloseChannel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).CloseChannel(ctx, req.(*CloseChannelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_Info_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(InfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).Info(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/Info", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).Info(ctx, req.(*InfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_ListPeers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListPeersRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).ListPeers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/ListPeers", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).ListPeers(ctx, req.(*ListPeersRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_SignMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SignMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).SignMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/SignMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).SignMessage(ctx, req.(*SignMessageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_VerifyMessage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VerifyMessageRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).VerifyMessage(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/VerifyMessage", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).VerifyMessage(ctx, req.(*VerifyMessageRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_ListUnspent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListUnspentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).ListUnspent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/ListUnspent", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).ListUnspent(ctx, req.(*ListUnspentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Node_NetworkGraphInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(NetworkGraphInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServer).NetworkGraphInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/sensei.Node/NetworkGraphInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServer).NetworkGraphInfo(ctx, req.(*NetworkGraphInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Node_ServiceDesc is the grpc.ServiceDesc for Node service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Node_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "sensei.Node", + HandlerType: (*NodeServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "StartNode", + Handler: _Node_StartNode_Handler, + }, + { + MethodName: "StopNode", + Handler: _Node_StopNode_Handler, + }, + { + MethodName: "GetUnusedAddress", + Handler: _Node_GetUnusedAddress_Handler, + }, + { + MethodName: "GetBalance", + Handler: _Node_GetBalance_Handler, + }, + { + MethodName: "OpenChannels", + Handler: _Node_OpenChannels_Handler, + }, + { + MethodName: "PayInvoice", + Handler: _Node_PayInvoice_Handler, + }, + { + MethodName: "DecodeInvoice", + Handler: _Node_DecodeInvoice_Handler, + }, + { + MethodName: "Keysend", + Handler: _Node_Keysend_Handler, + }, + { + MethodName: "CreateInvoice", + Handler: _Node_CreateInvoice_Handler, + }, + { + MethodName: "LabelPayment", + Handler: _Node_LabelPayment_Handler, + }, + { + MethodName: "DeletePayment", + Handler: _Node_DeletePayment_Handler, + }, + { + MethodName: "ConnectPeer", + Handler: _Node_ConnectPeer_Handler, + }, + { + MethodName: "ListChannels", + Handler: _Node_ListChannels_Handler, + }, + { + MethodName: "ListPayments", + Handler: _Node_ListPayments_Handler, + }, + { + MethodName: "CloseChannel", + Handler: _Node_CloseChannel_Handler, + }, + { + MethodName: "Info", + Handler: _Node_Info_Handler, + }, + { + MethodName: "ListPeers", + Handler: _Node_ListPeers_Handler, + }, + { + MethodName: "SignMessage", + Handler: _Node_SignMessage_Handler, + }, + { + MethodName: "VerifyMessage", + Handler: _Node_VerifyMessage_Handler, + }, + { + MethodName: "ListUnspent", + Handler: _Node_ListUnspent_Handler, + }, + { + MethodName: "NetworkGraphInfo", + Handler: _Node_NetworkGraphInfo_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "sensei.proto", +}