diff --git a/generated/geyser/v1/confirmed_block.pb.validate.go b/generated/geyser/v1/confirmed_block.pb.validate.go deleted file mode 100644 index 96e7d7d..0000000 --- a/generated/geyser/v1/confirmed_block.pb.validate.go +++ /dev/null @@ -1,2415 +0,0 @@ -// Code generated by protoc-gen-validate. DO NOT EDIT. -// source: confirmed_block.proto - -package geyser - -import ( - "bytes" - "errors" - "fmt" - "net" - "net/mail" - "net/url" - "regexp" - "sort" - "strings" - "time" - "unicode/utf8" - - "google.golang.org/protobuf/types/known/anypb" -) - -// ensure the imports are used -var ( - _ = bytes.MinRead - _ = errors.New("") - _ = fmt.Print - _ = utf8.UTFMax - _ = (*regexp.Regexp)(nil) - _ = (*strings.Reader)(nil) - _ = net.IPv4len - _ = time.Duration(0) - _ = (*url.URL)(nil) - _ = (*mail.Address)(nil) - _ = anypb.Any{} - _ = sort.Sort -) - -// Validate checks the field values on ConfirmedBlock with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *ConfirmedBlock) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ConfirmedBlock with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in ConfirmedBlockMultiError, -// or nil if none found. -func (m *ConfirmedBlock) ValidateAll() error { - return m.validate(true) -} - -func (m *ConfirmedBlock) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for PreviousBlockhash - - // no validation rules for Blockhash - - // no validation rules for ParentSlot - - for idx, item := range m.GetTransactions() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: fmt.Sprintf("Transactions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: fmt.Sprintf("Transactions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ConfirmedBlockValidationError{ - field: fmt.Sprintf("Transactions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - for idx, item := range m.GetRewards() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ConfirmedBlockValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if all { - switch v := interface{}(m.GetBlockTime()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: "BlockTime", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: "BlockTime", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBlockTime()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ConfirmedBlockValidationError{ - field: "BlockTime", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetBlockHeight()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: "BlockHeight", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ConfirmedBlockValidationError{ - field: "BlockHeight", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBlockHeight()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ConfirmedBlockValidationError{ - field: "BlockHeight", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return ConfirmedBlockMultiError(errors) - } - - return nil -} - -// ConfirmedBlockMultiError is an error wrapping multiple validation errors -// returned by ConfirmedBlock.ValidateAll() if the designated constraints -// aren't met. -type ConfirmedBlockMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ConfirmedBlockMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ConfirmedBlockMultiError) AllErrors() []error { return m } - -// ConfirmedBlockValidationError is the validation error returned by -// ConfirmedBlock.Validate if the designated constraints aren't met. -type ConfirmedBlockValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ConfirmedBlockValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ConfirmedBlockValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ConfirmedBlockValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ConfirmedBlockValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ConfirmedBlockValidationError) ErrorName() string { return "ConfirmedBlockValidationError" } - -// Error satisfies the builtin error interface -func (e ConfirmedBlockValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sConfirmedBlock.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ConfirmedBlockValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ConfirmedBlockValidationError{} - -// Validate checks the field values on ConfirmedTransaction with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *ConfirmedTransaction) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ConfirmedTransaction with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// ConfirmedTransactionMultiError, or nil if none found. -func (m *ConfirmedTransaction) ValidateAll() error { - return m.validate(true) -} - -func (m *ConfirmedTransaction) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetTransaction()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ConfirmedTransactionValidationError{ - field: "Transaction", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ConfirmedTransactionValidationError{ - field: "Transaction", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTransaction()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ConfirmedTransactionValidationError{ - field: "Transaction", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetMeta()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, ConfirmedTransactionValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, ConfirmedTransactionValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ConfirmedTransactionValidationError{ - field: "Meta", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return ConfirmedTransactionMultiError(errors) - } - - return nil -} - -// ConfirmedTransactionMultiError is an error wrapping multiple validation -// errors returned by ConfirmedTransaction.ValidateAll() if the designated -// constraints aren't met. -type ConfirmedTransactionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ConfirmedTransactionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ConfirmedTransactionMultiError) AllErrors() []error { return m } - -// ConfirmedTransactionValidationError is the validation error returned by -// ConfirmedTransaction.Validate if the designated constraints aren't met. -type ConfirmedTransactionValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ConfirmedTransactionValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ConfirmedTransactionValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ConfirmedTransactionValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ConfirmedTransactionValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ConfirmedTransactionValidationError) ErrorName() string { - return "ConfirmedTransactionValidationError" -} - -// Error satisfies the builtin error interface -func (e ConfirmedTransactionValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sConfirmedTransaction.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ConfirmedTransactionValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ConfirmedTransactionValidationError{} - -// Validate checks the field values on Transaction with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Transaction) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Transaction with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in TransactionMultiError, or -// nil if none found. -func (m *Transaction) ValidateAll() error { - return m.validate(true) -} - -func (m *Transaction) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetMessage()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionValidationError{ - field: "Message", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionValidationError{ - field: "Message", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetMessage()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionValidationError{ - field: "Message", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return TransactionMultiError(errors) - } - - return nil -} - -// TransactionMultiError is an error wrapping multiple validation errors -// returned by Transaction.ValidateAll() if the designated constraints aren't met. -type TransactionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TransactionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TransactionMultiError) AllErrors() []error { return m } - -// TransactionValidationError is the validation error returned by -// Transaction.Validate if the designated constraints aren't met. -type TransactionValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TransactionValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TransactionValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TransactionValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TransactionValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TransactionValidationError) ErrorName() string { return "TransactionValidationError" } - -// Error satisfies the builtin error interface -func (e TransactionValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTransaction.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TransactionValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TransactionValidationError{} - -// Validate checks the field values on Message with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Message) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Message with the rules defined in the -// proto definition for this message. If any rules are violated, the result is -// a list of violation errors wrapped in MessageMultiError, or nil if none found. -func (m *Message) ValidateAll() error { - return m.validate(true) -} - -func (m *Message) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetHeader()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MessageValidationError{ - field: "Header", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MessageValidationError{ - field: "Header", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetHeader()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return MessageValidationError{ - field: "Header", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for RecentBlockhash - - for idx, item := range m.GetInstructions() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MessageValidationError{ - field: fmt.Sprintf("Instructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MessageValidationError{ - field: fmt.Sprintf("Instructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return MessageValidationError{ - field: fmt.Sprintf("Instructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - // no validation rules for Versioned - - for idx, item := range m.GetAddressTableLookups() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MessageValidationError{ - field: fmt.Sprintf("AddressTableLookups[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MessageValidationError{ - field: fmt.Sprintf("AddressTableLookups[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return MessageValidationError{ - field: fmt.Sprintf("AddressTableLookups[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if len(errors) > 0 { - return MessageMultiError(errors) - } - - return nil -} - -// MessageMultiError is an error wrapping multiple validation errors returned -// by Message.ValidateAll() if the designated constraints aren't met. -type MessageMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MessageMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MessageMultiError) AllErrors() []error { return m } - -// MessageValidationError is the validation error returned by Message.Validate -// if the designated constraints aren't met. -type MessageValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e MessageValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e MessageValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e MessageValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e MessageValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e MessageValidationError) ErrorName() string { return "MessageValidationError" } - -// Error satisfies the builtin error interface -func (e MessageValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sMessage.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = MessageValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = MessageValidationError{} - -// Validate checks the field values on MessageHeader with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *MessageHeader) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MessageHeader with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in MessageHeaderMultiError, or -// nil if none found. -func (m *MessageHeader) ValidateAll() error { - return m.validate(true) -} - -func (m *MessageHeader) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for NumRequiredSignatures - - // no validation rules for NumReadonlySignedAccounts - - // no validation rules for NumReadonlyUnsignedAccounts - - if len(errors) > 0 { - return MessageHeaderMultiError(errors) - } - - return nil -} - -// MessageHeaderMultiError is an error wrapping multiple validation errors -// returned by MessageHeader.ValidateAll() if the designated constraints -// aren't met. -type MessageHeaderMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MessageHeaderMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MessageHeaderMultiError) AllErrors() []error { return m } - -// MessageHeaderValidationError is the validation error returned by -// MessageHeader.Validate if the designated constraints aren't met. -type MessageHeaderValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e MessageHeaderValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e MessageHeaderValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e MessageHeaderValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e MessageHeaderValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e MessageHeaderValidationError) ErrorName() string { return "MessageHeaderValidationError" } - -// Error satisfies the builtin error interface -func (e MessageHeaderValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sMessageHeader.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = MessageHeaderValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = MessageHeaderValidationError{} - -// Validate checks the field values on MessageAddressTableLookup with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *MessageAddressTableLookup) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MessageAddressTableLookup with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// MessageAddressTableLookupMultiError, or nil if none found. -func (m *MessageAddressTableLookup) ValidateAll() error { - return m.validate(true) -} - -func (m *MessageAddressTableLookup) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for AccountKey - - // no validation rules for WritableIndexes - - // no validation rules for ReadonlyIndexes - - if len(errors) > 0 { - return MessageAddressTableLookupMultiError(errors) - } - - return nil -} - -// MessageAddressTableLookupMultiError is an error wrapping multiple validation -// errors returned by MessageAddressTableLookup.ValidateAll() if the -// designated constraints aren't met. -type MessageAddressTableLookupMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MessageAddressTableLookupMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MessageAddressTableLookupMultiError) AllErrors() []error { return m } - -// MessageAddressTableLookupValidationError is the validation error returned by -// MessageAddressTableLookup.Validate if the designated constraints aren't met. -type MessageAddressTableLookupValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e MessageAddressTableLookupValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e MessageAddressTableLookupValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e MessageAddressTableLookupValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e MessageAddressTableLookupValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e MessageAddressTableLookupValidationError) ErrorName() string { - return "MessageAddressTableLookupValidationError" -} - -// Error satisfies the builtin error interface -func (e MessageAddressTableLookupValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sMessageAddressTableLookup.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = MessageAddressTableLookupValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = MessageAddressTableLookupValidationError{} - -// Validate checks the field values on TransactionStatusMeta with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *TransactionStatusMeta) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TransactionStatusMeta with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TransactionStatusMetaMultiError, or nil if none found. -func (m *TransactionStatusMeta) ValidateAll() error { - return m.validate(true) -} - -func (m *TransactionStatusMeta) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetErr()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: "Err", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: "Err", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetErr()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionStatusMetaValidationError{ - field: "Err", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for Fee - - for idx, item := range m.GetInnerInstructions() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("InnerInstructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("InnerInstructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionStatusMetaValidationError{ - field: fmt.Sprintf("InnerInstructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - // no validation rules for InnerInstructionsNone - - // no validation rules for LogMessagesNone - - for idx, item := range m.GetPreTokenBalances() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("PreTokenBalances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("PreTokenBalances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionStatusMetaValidationError{ - field: fmt.Sprintf("PreTokenBalances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - for idx, item := range m.GetPostTokenBalances() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("PostTokenBalances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("PostTokenBalances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionStatusMetaValidationError{ - field: fmt.Sprintf("PostTokenBalances[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - for idx, item := range m.GetRewards() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionStatusMetaValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if all { - switch v := interface{}(m.GetReturnData()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: "ReturnData", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionStatusMetaValidationError{ - field: "ReturnData", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetReturnData()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionStatusMetaValidationError{ - field: "ReturnData", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for ReturnDataNone - - if m.ComputeUnitsConsumed != nil { - // no validation rules for ComputeUnitsConsumed - } - - if len(errors) > 0 { - return TransactionStatusMetaMultiError(errors) - } - - return nil -} - -// TransactionStatusMetaMultiError is an error wrapping multiple validation -// errors returned by TransactionStatusMeta.ValidateAll() if the designated -// constraints aren't met. -type TransactionStatusMetaMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TransactionStatusMetaMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TransactionStatusMetaMultiError) AllErrors() []error { return m } - -// TransactionStatusMetaValidationError is the validation error returned by -// TransactionStatusMeta.Validate if the designated constraints aren't met. -type TransactionStatusMetaValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TransactionStatusMetaValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TransactionStatusMetaValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TransactionStatusMetaValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TransactionStatusMetaValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TransactionStatusMetaValidationError) ErrorName() string { - return "TransactionStatusMetaValidationError" -} - -// Error satisfies the builtin error interface -func (e TransactionStatusMetaValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTransactionStatusMeta.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TransactionStatusMetaValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TransactionStatusMetaValidationError{} - -// Validate checks the field values on TransactionError with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *TransactionError) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TransactionError with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TransactionErrorMultiError, or nil if none found. -func (m *TransactionError) ValidateAll() error { - return m.validate(true) -} - -func (m *TransactionError) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Err - - if len(errors) > 0 { - return TransactionErrorMultiError(errors) - } - - return nil -} - -// TransactionErrorMultiError is an error wrapping multiple validation errors -// returned by TransactionError.ValidateAll() if the designated constraints -// aren't met. -type TransactionErrorMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TransactionErrorMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TransactionErrorMultiError) AllErrors() []error { return m } - -// TransactionErrorValidationError is the validation error returned by -// TransactionError.Validate if the designated constraints aren't met. -type TransactionErrorValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TransactionErrorValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TransactionErrorValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TransactionErrorValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TransactionErrorValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TransactionErrorValidationError) ErrorName() string { return "TransactionErrorValidationError" } - -// Error satisfies the builtin error interface -func (e TransactionErrorValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTransactionError.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TransactionErrorValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TransactionErrorValidationError{} - -// Validate checks the field values on InnerInstructions with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *InnerInstructions) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on InnerInstructions with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// InnerInstructionsMultiError, or nil if none found. -func (m *InnerInstructions) ValidateAll() error { - return m.validate(true) -} - -func (m *InnerInstructions) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Index - - for idx, item := range m.GetInstructions() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, InnerInstructionsValidationError{ - field: fmt.Sprintf("Instructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, InnerInstructionsValidationError{ - field: fmt.Sprintf("Instructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return InnerInstructionsValidationError{ - field: fmt.Sprintf("Instructions[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if len(errors) > 0 { - return InnerInstructionsMultiError(errors) - } - - return nil -} - -// InnerInstructionsMultiError is an error wrapping multiple validation errors -// returned by InnerInstructions.ValidateAll() if the designated constraints -// aren't met. -type InnerInstructionsMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m InnerInstructionsMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m InnerInstructionsMultiError) AllErrors() []error { return m } - -// InnerInstructionsValidationError is the validation error returned by -// InnerInstructions.Validate if the designated constraints aren't met. -type InnerInstructionsValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e InnerInstructionsValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e InnerInstructionsValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e InnerInstructionsValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e InnerInstructionsValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e InnerInstructionsValidationError) ErrorName() string { - return "InnerInstructionsValidationError" -} - -// Error satisfies the builtin error interface -func (e InnerInstructionsValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sInnerInstructions.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = InnerInstructionsValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = InnerInstructionsValidationError{} - -// Validate checks the field values on CompiledInstruction with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *CompiledInstruction) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on CompiledInstruction with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// CompiledInstructionMultiError, or nil if none found. -func (m *CompiledInstruction) ValidateAll() error { - return m.validate(true) -} - -func (m *CompiledInstruction) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for ProgramIdIndex - - // no validation rules for Accounts - - // no validation rules for Data - - if len(errors) > 0 { - return CompiledInstructionMultiError(errors) - } - - return nil -} - -// CompiledInstructionMultiError is an error wrapping multiple validation -// errors returned by CompiledInstruction.ValidateAll() if the designated -// constraints aren't met. -type CompiledInstructionMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m CompiledInstructionMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m CompiledInstructionMultiError) AllErrors() []error { return m } - -// CompiledInstructionValidationError is the validation error returned by -// CompiledInstruction.Validate if the designated constraints aren't met. -type CompiledInstructionValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e CompiledInstructionValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e CompiledInstructionValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e CompiledInstructionValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e CompiledInstructionValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e CompiledInstructionValidationError) ErrorName() string { - return "CompiledInstructionValidationError" -} - -// Error satisfies the builtin error interface -func (e CompiledInstructionValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sCompiledInstruction.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = CompiledInstructionValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = CompiledInstructionValidationError{} - -// Validate checks the field values on TokenBalance with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *TokenBalance) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TokenBalance with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in TokenBalanceMultiError, or -// nil if none found. -func (m *TokenBalance) ValidateAll() error { - return m.validate(true) -} - -func (m *TokenBalance) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for AccountIndex - - // no validation rules for Mint - - if all { - switch v := interface{}(m.GetUiTokenAmount()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TokenBalanceValidationError{ - field: "UiTokenAmount", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TokenBalanceValidationError{ - field: "UiTokenAmount", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetUiTokenAmount()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TokenBalanceValidationError{ - field: "UiTokenAmount", - reason: "embedded message failed validation", - cause: err, - } - } - } - - // no validation rules for Owner - - // no validation rules for ProgramId - - if len(errors) > 0 { - return TokenBalanceMultiError(errors) - } - - return nil -} - -// TokenBalanceMultiError is an error wrapping multiple validation errors -// returned by TokenBalance.ValidateAll() if the designated constraints aren't met. -type TokenBalanceMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TokenBalanceMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TokenBalanceMultiError) AllErrors() []error { return m } - -// TokenBalanceValidationError is the validation error returned by -// TokenBalance.Validate if the designated constraints aren't met. -type TokenBalanceValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TokenBalanceValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TokenBalanceValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TokenBalanceValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TokenBalanceValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TokenBalanceValidationError) ErrorName() string { return "TokenBalanceValidationError" } - -// Error satisfies the builtin error interface -func (e TokenBalanceValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTokenBalance.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TokenBalanceValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TokenBalanceValidationError{} - -// Validate checks the field values on UiTokenAmount with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *UiTokenAmount) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UiTokenAmount with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in UiTokenAmountMultiError, or -// nil if none found. -func (m *UiTokenAmount) ValidateAll() error { - return m.validate(true) -} - -func (m *UiTokenAmount) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for UiAmount - - // no validation rules for Decimals - - // no validation rules for Amount - - // no validation rules for UiAmountString - - if len(errors) > 0 { - return UiTokenAmountMultiError(errors) - } - - return nil -} - -// UiTokenAmountMultiError is an error wrapping multiple validation errors -// returned by UiTokenAmount.ValidateAll() if the designated constraints -// aren't met. -type UiTokenAmountMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UiTokenAmountMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UiTokenAmountMultiError) AllErrors() []error { return m } - -// UiTokenAmountValidationError is the validation error returned by -// UiTokenAmount.Validate if the designated constraints aren't met. -type UiTokenAmountValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e UiTokenAmountValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e UiTokenAmountValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e UiTokenAmountValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e UiTokenAmountValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e UiTokenAmountValidationError) ErrorName() string { return "UiTokenAmountValidationError" } - -// Error satisfies the builtin error interface -func (e UiTokenAmountValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sUiTokenAmount.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = UiTokenAmountValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = UiTokenAmountValidationError{} - -// Validate checks the field values on ReturnData with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *ReturnData) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on ReturnData with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in ReturnDataMultiError, or -// nil if none found. -func (m *ReturnData) ValidateAll() error { - return m.validate(true) -} - -func (m *ReturnData) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for ProgramId - - // no validation rules for Data - - if len(errors) > 0 { - return ReturnDataMultiError(errors) - } - - return nil -} - -// ReturnDataMultiError is an error wrapping multiple validation errors -// returned by ReturnData.ValidateAll() if the designated constraints aren't met. -type ReturnDataMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m ReturnDataMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m ReturnDataMultiError) AllErrors() []error { return m } - -// ReturnDataValidationError is the validation error returned by -// ReturnData.Validate if the designated constraints aren't met. -type ReturnDataValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e ReturnDataValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e ReturnDataValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e ReturnDataValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e ReturnDataValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e ReturnDataValidationError) ErrorName() string { return "ReturnDataValidationError" } - -// Error satisfies the builtin error interface -func (e ReturnDataValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sReturnData.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = ReturnDataValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = ReturnDataValidationError{} - -// Validate checks the field values on Reward with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Reward) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Reward with the rules defined in the -// proto definition for this message. If any rules are violated, the result is -// a list of violation errors wrapped in RewardMultiError, or nil if none found. -func (m *Reward) ValidateAll() error { - return m.validate(true) -} - -func (m *Reward) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Pubkey - - // no validation rules for Lamports - - // no validation rules for PostBalance - - // no validation rules for RewardType - - // no validation rules for Commission - - if len(errors) > 0 { - return RewardMultiError(errors) - } - - return nil -} - -// RewardMultiError is an error wrapping multiple validation errors returned by -// Reward.ValidateAll() if the designated constraints aren't met. -type RewardMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RewardMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RewardMultiError) AllErrors() []error { return m } - -// RewardValidationError is the validation error returned by Reward.Validate if -// the designated constraints aren't met. -type RewardValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e RewardValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e RewardValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e RewardValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e RewardValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e RewardValidationError) ErrorName() string { return "RewardValidationError" } - -// Error satisfies the builtin error interface -func (e RewardValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sReward.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = RewardValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = RewardValidationError{} - -// Validate checks the field values on Rewards with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Rewards) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Rewards with the rules defined in the -// proto definition for this message. If any rules are violated, the result is -// a list of violation errors wrapped in RewardsMultiError, or nil if none found. -func (m *Rewards) ValidateAll() error { - return m.validate(true) -} - -func (m *Rewards) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - for idx, item := range m.GetRewards() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, RewardsValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, RewardsValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return RewardsValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if len(errors) > 0 { - return RewardsMultiError(errors) - } - - return nil -} - -// RewardsMultiError is an error wrapping multiple validation errors returned -// by Rewards.ValidateAll() if the designated constraints aren't met. -type RewardsMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m RewardsMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m RewardsMultiError) AllErrors() []error { return m } - -// RewardsValidationError is the validation error returned by Rewards.Validate -// if the designated constraints aren't met. -type RewardsValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e RewardsValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e RewardsValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e RewardsValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e RewardsValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e RewardsValidationError) ErrorName() string { return "RewardsValidationError" } - -// Error satisfies the builtin error interface -func (e RewardsValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sRewards.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = RewardsValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = RewardsValidationError{} - -// Validate checks the field values on UnixTimestamp with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *UnixTimestamp) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on UnixTimestamp with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in UnixTimestampMultiError, or -// nil if none found. -func (m *UnixTimestamp) ValidateAll() error { - return m.validate(true) -} - -func (m *UnixTimestamp) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Timestamp - - if len(errors) > 0 { - return UnixTimestampMultiError(errors) - } - - return nil -} - -// UnixTimestampMultiError is an error wrapping multiple validation errors -// returned by UnixTimestamp.ValidateAll() if the designated constraints -// aren't met. -type UnixTimestampMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m UnixTimestampMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m UnixTimestampMultiError) AllErrors() []error { return m } - -// UnixTimestampValidationError is the validation error returned by -// UnixTimestamp.Validate if the designated constraints aren't met. -type UnixTimestampValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e UnixTimestampValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e UnixTimestampValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e UnixTimestampValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e UnixTimestampValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e UnixTimestampValidationError) ErrorName() string { return "UnixTimestampValidationError" } - -// Error satisfies the builtin error interface -func (e UnixTimestampValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sUnixTimestamp.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = UnixTimestampValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = UnixTimestampValidationError{} - -// Validate checks the field values on BlockHeight with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *BlockHeight) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BlockHeight with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in BlockHeightMultiError, or -// nil if none found. -func (m *BlockHeight) ValidateAll() error { - return m.validate(true) -} - -func (m *BlockHeight) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for BlockHeight - - if len(errors) > 0 { - return BlockHeightMultiError(errors) - } - - return nil -} - -// BlockHeightMultiError is an error wrapping multiple validation errors -// returned by BlockHeight.ValidateAll() if the designated constraints aren't met. -type BlockHeightMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BlockHeightMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BlockHeightMultiError) AllErrors() []error { return m } - -// BlockHeightValidationError is the validation error returned by -// BlockHeight.Validate if the designated constraints aren't met. -type BlockHeightValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e BlockHeightValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e BlockHeightValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e BlockHeightValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e BlockHeightValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e BlockHeightValidationError) ErrorName() string { return "BlockHeightValidationError" } - -// Error satisfies the builtin error interface -func (e BlockHeightValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sBlockHeight.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = BlockHeightValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = BlockHeightValidationError{} diff --git a/generated/geyser/v1/geyser.pb.go b/generated/geyser/v1/geyser.pb.go index b43a31f..d66217b 100644 --- a/generated/geyser/v1/geyser.pb.go +++ b/generated/geyser/v1/geyser.pb.go @@ -1,17 +1,17 @@ -// Source: https://github.com/jito-foundation/geyser-grpc-plugin/tree/v1.14.17-jito-1/proto/proto/geyser.proto +// Source: https://github.com/rpcpool/yellowstone-grpc/blob/v6.0.0%2Bsolana.2.2.12/yellowstone-grpc-proto/proto/geyser.proto // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.1 -// protoc v3.12.4 +// protoc-gen-go v1.28.1 +// protoc v3.21.12 // source: geyser.proto package geyser import ( - timestamp "github.com/golang/protobuf/ptypes/timestamp" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" ) @@ -23,95 +23,1552 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type SlotUpdateStatus int32 +type CommitmentLevel int32 const ( - SlotUpdateStatus_CONFIRMED SlotUpdateStatus = 0 - SlotUpdateStatus_PROCESSED SlotUpdateStatus = 1 - SlotUpdateStatus_ROOTED SlotUpdateStatus = 2 + CommitmentLevel_PROCESSED CommitmentLevel = 0 + CommitmentLevel_CONFIRMED CommitmentLevel = 1 + CommitmentLevel_FINALIZED CommitmentLevel = 2 ) -// Enum value maps for SlotUpdateStatus. +// Enum value maps for CommitmentLevel. var ( - SlotUpdateStatus_name = map[int32]string{ - 0: "CONFIRMED", - 1: "PROCESSED", - 2: "ROOTED", + CommitmentLevel_name = map[int32]string{ + 0: "PROCESSED", + 1: "CONFIRMED", + 2: "FINALIZED", } - SlotUpdateStatus_value = map[string]int32{ - "CONFIRMED": 0, - "PROCESSED": 1, - "ROOTED": 2, + CommitmentLevel_value = map[string]int32{ + "PROCESSED": 0, + "CONFIRMED": 1, + "FINALIZED": 2, } ) -func (x SlotUpdateStatus) Enum() *SlotUpdateStatus { - p := new(SlotUpdateStatus) +func (x CommitmentLevel) Enum() *CommitmentLevel { + p := new(CommitmentLevel) *p = x return p } -func (x SlotUpdateStatus) String() string { +func (x CommitmentLevel) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (SlotUpdateStatus) Descriptor() protoreflect.EnumDescriptor { +func (CommitmentLevel) Descriptor() protoreflect.EnumDescriptor { return file_geyser_proto_enumTypes[0].Descriptor() } -func (SlotUpdateStatus) Type() protoreflect.EnumType { +func (CommitmentLevel) Type() protoreflect.EnumType { return &file_geyser_proto_enumTypes[0] } -func (x SlotUpdateStatus) Number() protoreflect.EnumNumber { +func (x CommitmentLevel) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use SlotUpdateStatus.Descriptor instead. -func (SlotUpdateStatus) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use CommitmentLevel.Descriptor instead. +func (CommitmentLevel) EnumDescriptor() ([]byte, []int) { return file_geyser_proto_rawDescGZIP(), []int{0} } -type PartialAccountUpdate struct { +type SlotStatus int32 + +const ( + SlotStatus_SLOT_PROCESSED SlotStatus = 0 + SlotStatus_SLOT_CONFIRMED SlotStatus = 1 + SlotStatus_SLOT_FINALIZED SlotStatus = 2 + SlotStatus_SLOT_FIRST_SHRED_RECEIVED SlotStatus = 3 + SlotStatus_SLOT_COMPLETED SlotStatus = 4 + SlotStatus_SLOT_CREATED_BANK SlotStatus = 5 + SlotStatus_SLOT_DEAD SlotStatus = 6 +) + +// Enum value maps for SlotStatus. +var ( + SlotStatus_name = map[int32]string{ + 0: "SLOT_PROCESSED", + 1: "SLOT_CONFIRMED", + 2: "SLOT_FINALIZED", + 3: "SLOT_FIRST_SHRED_RECEIVED", + 4: "SLOT_COMPLETED", + 5: "SLOT_CREATED_BANK", + 6: "SLOT_DEAD", + } + SlotStatus_value = map[string]int32{ + "SLOT_PROCESSED": 0, + "SLOT_CONFIRMED": 1, + "SLOT_FINALIZED": 2, + "SLOT_FIRST_SHRED_RECEIVED": 3, + "SLOT_COMPLETED": 4, + "SLOT_CREATED_BANK": 5, + "SLOT_DEAD": 6, + } +) + +func (x SlotStatus) Enum() *SlotStatus { + p := new(SlotStatus) + *p = x + return p +} + +func (x SlotStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SlotStatus) Descriptor() protoreflect.EnumDescriptor { + return file_geyser_proto_enumTypes[1].Descriptor() +} + +func (SlotStatus) Type() protoreflect.EnumType { + return &file_geyser_proto_enumTypes[1] +} + +func (x SlotStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SlotStatus.Descriptor instead. +func (SlotStatus) EnumDescriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{1} +} + +type SubscribeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Accounts map[string]*SubscribeRequestFilterAccounts `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Slots map[string]*SubscribeRequestFilterSlots `protobuf:"bytes,2,rep,name=slots,proto3" json:"slots,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Transactions map[string]*SubscribeRequestFilterTransactions `protobuf:"bytes,3,rep,name=transactions,proto3" json:"transactions,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TransactionsStatus map[string]*SubscribeRequestFilterTransactions `protobuf:"bytes,10,rep,name=transactions_status,json=transactionsStatus,proto3" json:"transactions_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Blocks map[string]*SubscribeRequestFilterBlocks `protobuf:"bytes,4,rep,name=blocks,proto3" json:"blocks,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + BlocksMeta map[string]*SubscribeRequestFilterBlocksMeta `protobuf:"bytes,5,rep,name=blocks_meta,json=blocksMeta,proto3" json:"blocks_meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Entry map[string]*SubscribeRequestFilterEntry `protobuf:"bytes,8,rep,name=entry,proto3" json:"entry,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Commitment *CommitmentLevel `protobuf:"varint,6,opt,name=commitment,proto3,enum=geyser.CommitmentLevel,oneof" json:"commitment,omitempty"` + AccountsDataSlice []*SubscribeRequestAccountsDataSlice `protobuf:"bytes,7,rep,name=accounts_data_slice,json=accountsDataSlice,proto3" json:"accounts_data_slice,omitempty"` + Ping *SubscribeRequestPing `protobuf:"bytes,9,opt,name=ping,proto3,oneof" json:"ping,omitempty"` + FromSlot *uint64 `protobuf:"varint,11,opt,name=from_slot,json=fromSlot,proto3,oneof" json:"from_slot,omitempty"` +} + +func (x *SubscribeRequest) Reset() { + *x = SubscribeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequest) ProtoMessage() {} + +func (x *SubscribeRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequest.ProtoReflect.Descriptor instead. +func (*SubscribeRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{0} +} + +func (x *SubscribeRequest) GetAccounts() map[string]*SubscribeRequestFilterAccounts { + if x != nil { + return x.Accounts + } + return nil +} + +func (x *SubscribeRequest) GetSlots() map[string]*SubscribeRequestFilterSlots { + if x != nil { + return x.Slots + } + return nil +} + +func (x *SubscribeRequest) GetTransactions() map[string]*SubscribeRequestFilterTransactions { + if x != nil { + return x.Transactions + } + return nil +} + +func (x *SubscribeRequest) GetTransactionsStatus() map[string]*SubscribeRequestFilterTransactions { + if x != nil { + return x.TransactionsStatus + } + return nil +} + +func (x *SubscribeRequest) GetBlocks() map[string]*SubscribeRequestFilterBlocks { + if x != nil { + return x.Blocks + } + return nil +} + +func (x *SubscribeRequest) GetBlocksMeta() map[string]*SubscribeRequestFilterBlocksMeta { + if x != nil { + return x.BlocksMeta + } + return nil +} + +func (x *SubscribeRequest) GetEntry() map[string]*SubscribeRequestFilterEntry { + if x != nil { + return x.Entry + } + return nil +} + +func (x *SubscribeRequest) GetCommitment() CommitmentLevel { + if x != nil && x.Commitment != nil { + return *x.Commitment + } + return CommitmentLevel_PROCESSED +} + +func (x *SubscribeRequest) GetAccountsDataSlice() []*SubscribeRequestAccountsDataSlice { + if x != nil { + return x.AccountsDataSlice + } + return nil +} + +func (x *SubscribeRequest) GetPing() *SubscribeRequestPing { + if x != nil { + return x.Ping + } + return nil +} + +func (x *SubscribeRequest) GetFromSlot() uint64 { + if x != nil && x.FromSlot != nil { + return *x.FromSlot + } + return 0 +} + +type SubscribeRequestFilterAccounts struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account []string `protobuf:"bytes,2,rep,name=account,proto3" json:"account,omitempty"` + Owner []string `protobuf:"bytes,3,rep,name=owner,proto3" json:"owner,omitempty"` + Filters []*SubscribeRequestFilterAccountsFilter `protobuf:"bytes,4,rep,name=filters,proto3" json:"filters,omitempty"` + NonemptyTxnSignature *bool `protobuf:"varint,5,opt,name=nonempty_txn_signature,json=nonemptyTxnSignature,proto3,oneof" json:"nonempty_txn_signature,omitempty"` +} + +func (x *SubscribeRequestFilterAccounts) Reset() { + *x = SubscribeRequestFilterAccounts{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterAccounts) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterAccounts) ProtoMessage() {} + +func (x *SubscribeRequestFilterAccounts) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterAccounts.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterAccounts) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{1} +} + +func (x *SubscribeRequestFilterAccounts) GetAccount() []string { + if x != nil { + return x.Account + } + return nil +} + +func (x *SubscribeRequestFilterAccounts) GetOwner() []string { + if x != nil { + return x.Owner + } + return nil +} + +func (x *SubscribeRequestFilterAccounts) GetFilters() []*SubscribeRequestFilterAccountsFilter { + if x != nil { + return x.Filters + } + return nil +} + +func (x *SubscribeRequestFilterAccounts) GetNonemptyTxnSignature() bool { + if x != nil && x.NonemptyTxnSignature != nil { + return *x.NonemptyTxnSignature + } + return false +} + +type SubscribeRequestFilterAccountsFilter struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Filter: + // + // *SubscribeRequestFilterAccountsFilter_Memcmp + // *SubscribeRequestFilterAccountsFilter_Datasize + // *SubscribeRequestFilterAccountsFilter_TokenAccountState + // *SubscribeRequestFilterAccountsFilter_Lamports + Filter isSubscribeRequestFilterAccountsFilter_Filter `protobuf_oneof:"filter"` +} + +func (x *SubscribeRequestFilterAccountsFilter) Reset() { + *x = SubscribeRequestFilterAccountsFilter{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterAccountsFilter) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterAccountsFilter) ProtoMessage() {} + +func (x *SubscribeRequestFilterAccountsFilter) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterAccountsFilter.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterAccountsFilter) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{2} +} + +func (m *SubscribeRequestFilterAccountsFilter) GetFilter() isSubscribeRequestFilterAccountsFilter_Filter { + if m != nil { + return m.Filter + } + return nil +} + +func (x *SubscribeRequestFilterAccountsFilter) GetMemcmp() *SubscribeRequestFilterAccountsFilterMemcmp { + if x, ok := x.GetFilter().(*SubscribeRequestFilterAccountsFilter_Memcmp); ok { + return x.Memcmp + } + return nil +} + +func (x *SubscribeRequestFilterAccountsFilter) GetDatasize() uint64 { + if x, ok := x.GetFilter().(*SubscribeRequestFilterAccountsFilter_Datasize); ok { + return x.Datasize + } + return 0 +} + +func (x *SubscribeRequestFilterAccountsFilter) GetTokenAccountState() bool { + if x, ok := x.GetFilter().(*SubscribeRequestFilterAccountsFilter_TokenAccountState); ok { + return x.TokenAccountState + } + return false +} + +func (x *SubscribeRequestFilterAccountsFilter) GetLamports() *SubscribeRequestFilterAccountsFilterLamports { + if x, ok := x.GetFilter().(*SubscribeRequestFilterAccountsFilter_Lamports); ok { + return x.Lamports + } + return nil +} + +type isSubscribeRequestFilterAccountsFilter_Filter interface { + isSubscribeRequestFilterAccountsFilter_Filter() +} + +type SubscribeRequestFilterAccountsFilter_Memcmp struct { + Memcmp *SubscribeRequestFilterAccountsFilterMemcmp `protobuf:"bytes,1,opt,name=memcmp,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilter_Datasize struct { + Datasize uint64 `protobuf:"varint,2,opt,name=datasize,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilter_TokenAccountState struct { + TokenAccountState bool `protobuf:"varint,3,opt,name=token_account_state,json=tokenAccountState,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilter_Lamports struct { + Lamports *SubscribeRequestFilterAccountsFilterLamports `protobuf:"bytes,4,opt,name=lamports,proto3,oneof"` +} + +func (*SubscribeRequestFilterAccountsFilter_Memcmp) isSubscribeRequestFilterAccountsFilter_Filter() {} + +func (*SubscribeRequestFilterAccountsFilter_Datasize) isSubscribeRequestFilterAccountsFilter_Filter() { +} + +func (*SubscribeRequestFilterAccountsFilter_TokenAccountState) isSubscribeRequestFilterAccountsFilter_Filter() { +} + +func (*SubscribeRequestFilterAccountsFilter_Lamports) isSubscribeRequestFilterAccountsFilter_Filter() { +} + +type SubscribeRequestFilterAccountsFilterMemcmp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + // Types that are assignable to Data: + // + // *SubscribeRequestFilterAccountsFilterMemcmp_Bytes + // *SubscribeRequestFilterAccountsFilterMemcmp_Base58 + // *SubscribeRequestFilterAccountsFilterMemcmp_Base64 + Data isSubscribeRequestFilterAccountsFilterMemcmp_Data `protobuf_oneof:"data"` +} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) Reset() { + *x = SubscribeRequestFilterAccountsFilterMemcmp{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterAccountsFilterMemcmp) ProtoMessage() {} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterAccountsFilterMemcmp.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterAccountsFilterMemcmp) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{3} +} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) GetOffset() uint64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (m *SubscribeRequestFilterAccountsFilterMemcmp) GetData() isSubscribeRequestFilterAccountsFilterMemcmp_Data { + if m != nil { + return m.Data + } + return nil +} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) GetBytes() []byte { + if x, ok := x.GetData().(*SubscribeRequestFilterAccountsFilterMemcmp_Bytes); ok { + return x.Bytes + } + return nil +} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) GetBase58() string { + if x, ok := x.GetData().(*SubscribeRequestFilterAccountsFilterMemcmp_Base58); ok { + return x.Base58 + } + return "" +} + +func (x *SubscribeRequestFilterAccountsFilterMemcmp) GetBase64() string { + if x, ok := x.GetData().(*SubscribeRequestFilterAccountsFilterMemcmp_Base64); ok { + return x.Base64 + } + return "" +} + +type isSubscribeRequestFilterAccountsFilterMemcmp_Data interface { + isSubscribeRequestFilterAccountsFilterMemcmp_Data() +} + +type SubscribeRequestFilterAccountsFilterMemcmp_Bytes struct { + Bytes []byte `protobuf:"bytes,2,opt,name=bytes,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilterMemcmp_Base58 struct { + Base58 string `protobuf:"bytes,3,opt,name=base58,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilterMemcmp_Base64 struct { + Base64 string `protobuf:"bytes,4,opt,name=base64,proto3,oneof"` +} + +func (*SubscribeRequestFilterAccountsFilterMemcmp_Bytes) isSubscribeRequestFilterAccountsFilterMemcmp_Data() { +} + +func (*SubscribeRequestFilterAccountsFilterMemcmp_Base58) isSubscribeRequestFilterAccountsFilterMemcmp_Data() { +} + +func (*SubscribeRequestFilterAccountsFilterMemcmp_Base64) isSubscribeRequestFilterAccountsFilterMemcmp_Data() { +} + +type SubscribeRequestFilterAccountsFilterLamports struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Cmp: + // + // *SubscribeRequestFilterAccountsFilterLamports_Eq + // *SubscribeRequestFilterAccountsFilterLamports_Ne + // *SubscribeRequestFilterAccountsFilterLamports_Lt + // *SubscribeRequestFilterAccountsFilterLamports_Gt + Cmp isSubscribeRequestFilterAccountsFilterLamports_Cmp `protobuf_oneof:"cmp"` +} + +func (x *SubscribeRequestFilterAccountsFilterLamports) Reset() { + *x = SubscribeRequestFilterAccountsFilterLamports{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterAccountsFilterLamports) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterAccountsFilterLamports) ProtoMessage() {} + +func (x *SubscribeRequestFilterAccountsFilterLamports) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterAccountsFilterLamports.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterAccountsFilterLamports) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{4} +} + +func (m *SubscribeRequestFilterAccountsFilterLamports) GetCmp() isSubscribeRequestFilterAccountsFilterLamports_Cmp { + if m != nil { + return m.Cmp + } + return nil +} + +func (x *SubscribeRequestFilterAccountsFilterLamports) GetEq() uint64 { + if x, ok := x.GetCmp().(*SubscribeRequestFilterAccountsFilterLamports_Eq); ok { + return x.Eq + } + return 0 +} + +func (x *SubscribeRequestFilterAccountsFilterLamports) GetNe() uint64 { + if x, ok := x.GetCmp().(*SubscribeRequestFilterAccountsFilterLamports_Ne); ok { + return x.Ne + } + return 0 +} + +func (x *SubscribeRequestFilterAccountsFilterLamports) GetLt() uint64 { + if x, ok := x.GetCmp().(*SubscribeRequestFilterAccountsFilterLamports_Lt); ok { + return x.Lt + } + return 0 +} + +func (x *SubscribeRequestFilterAccountsFilterLamports) GetGt() uint64 { + if x, ok := x.GetCmp().(*SubscribeRequestFilterAccountsFilterLamports_Gt); ok { + return x.Gt + } + return 0 +} + +type isSubscribeRequestFilterAccountsFilterLamports_Cmp interface { + isSubscribeRequestFilterAccountsFilterLamports_Cmp() +} + +type SubscribeRequestFilterAccountsFilterLamports_Eq struct { + Eq uint64 `protobuf:"varint,1,opt,name=eq,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilterLamports_Ne struct { + Ne uint64 `protobuf:"varint,2,opt,name=ne,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilterLamports_Lt struct { + Lt uint64 `protobuf:"varint,3,opt,name=lt,proto3,oneof"` +} + +type SubscribeRequestFilterAccountsFilterLamports_Gt struct { + Gt uint64 `protobuf:"varint,4,opt,name=gt,proto3,oneof"` +} + +func (*SubscribeRequestFilterAccountsFilterLamports_Eq) isSubscribeRequestFilterAccountsFilterLamports_Cmp() { +} + +func (*SubscribeRequestFilterAccountsFilterLamports_Ne) isSubscribeRequestFilterAccountsFilterLamports_Cmp() { +} + +func (*SubscribeRequestFilterAccountsFilterLamports_Lt) isSubscribeRequestFilterAccountsFilterLamports_Cmp() { +} + +func (*SubscribeRequestFilterAccountsFilterLamports_Gt) isSubscribeRequestFilterAccountsFilterLamports_Cmp() { +} + +type SubscribeRequestFilterSlots struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + FilterByCommitment *bool `protobuf:"varint,1,opt,name=filter_by_commitment,json=filterByCommitment,proto3,oneof" json:"filter_by_commitment,omitempty"` + InterslotUpdates *bool `protobuf:"varint,2,opt,name=interslot_updates,json=interslotUpdates,proto3,oneof" json:"interslot_updates,omitempty"` +} + +func (x *SubscribeRequestFilterSlots) Reset() { + *x = SubscribeRequestFilterSlots{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterSlots) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterSlots) ProtoMessage() {} + +func (x *SubscribeRequestFilterSlots) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterSlots.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterSlots) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{5} +} + +func (x *SubscribeRequestFilterSlots) GetFilterByCommitment() bool { + if x != nil && x.FilterByCommitment != nil { + return *x.FilterByCommitment + } + return false +} + +func (x *SubscribeRequestFilterSlots) GetInterslotUpdates() bool { + if x != nil && x.InterslotUpdates != nil { + return *x.InterslotUpdates + } + return false +} + +type SubscribeRequestFilterTransactions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Vote *bool `protobuf:"varint,1,opt,name=vote,proto3,oneof" json:"vote,omitempty"` + Failed *bool `protobuf:"varint,2,opt,name=failed,proto3,oneof" json:"failed,omitempty"` + Signature *string `protobuf:"bytes,5,opt,name=signature,proto3,oneof" json:"signature,omitempty"` + AccountInclude []string `protobuf:"bytes,3,rep,name=account_include,json=accountInclude,proto3" json:"account_include,omitempty"` + AccountExclude []string `protobuf:"bytes,4,rep,name=account_exclude,json=accountExclude,proto3" json:"account_exclude,omitempty"` + AccountRequired []string `protobuf:"bytes,6,rep,name=account_required,json=accountRequired,proto3" json:"account_required,omitempty"` +} + +func (x *SubscribeRequestFilterTransactions) Reset() { + *x = SubscribeRequestFilterTransactions{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterTransactions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterTransactions) ProtoMessage() {} + +func (x *SubscribeRequestFilterTransactions) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterTransactions.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterTransactions) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{6} +} + +func (x *SubscribeRequestFilterTransactions) GetVote() bool { + if x != nil && x.Vote != nil { + return *x.Vote + } + return false +} + +func (x *SubscribeRequestFilterTransactions) GetFailed() bool { + if x != nil && x.Failed != nil { + return *x.Failed + } + return false +} + +func (x *SubscribeRequestFilterTransactions) GetSignature() string { + if x != nil && x.Signature != nil { + return *x.Signature + } + return "" +} + +func (x *SubscribeRequestFilterTransactions) GetAccountInclude() []string { + if x != nil { + return x.AccountInclude + } + return nil +} + +func (x *SubscribeRequestFilterTransactions) GetAccountExclude() []string { + if x != nil { + return x.AccountExclude + } + return nil +} + +func (x *SubscribeRequestFilterTransactions) GetAccountRequired() []string { + if x != nil { + return x.AccountRequired + } + return nil +} + +type SubscribeRequestFilterBlocks struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AccountInclude []string `protobuf:"bytes,1,rep,name=account_include,json=accountInclude,proto3" json:"account_include,omitempty"` + IncludeTransactions *bool `protobuf:"varint,2,opt,name=include_transactions,json=includeTransactions,proto3,oneof" json:"include_transactions,omitempty"` + IncludeAccounts *bool `protobuf:"varint,3,opt,name=include_accounts,json=includeAccounts,proto3,oneof" json:"include_accounts,omitempty"` + IncludeEntries *bool `protobuf:"varint,4,opt,name=include_entries,json=includeEntries,proto3,oneof" json:"include_entries,omitempty"` +} + +func (x *SubscribeRequestFilterBlocks) Reset() { + *x = SubscribeRequestFilterBlocks{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterBlocks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterBlocks) ProtoMessage() {} + +func (x *SubscribeRequestFilterBlocks) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterBlocks.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterBlocks) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{7} +} + +func (x *SubscribeRequestFilterBlocks) GetAccountInclude() []string { + if x != nil { + return x.AccountInclude + } + return nil +} + +func (x *SubscribeRequestFilterBlocks) GetIncludeTransactions() bool { + if x != nil && x.IncludeTransactions != nil { + return *x.IncludeTransactions + } + return false +} + +func (x *SubscribeRequestFilterBlocks) GetIncludeAccounts() bool { + if x != nil && x.IncludeAccounts != nil { + return *x.IncludeAccounts + } + return false +} + +func (x *SubscribeRequestFilterBlocks) GetIncludeEntries() bool { + if x != nil && x.IncludeEntries != nil { + return *x.IncludeEntries + } + return false +} + +type SubscribeRequestFilterBlocksMeta struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SubscribeRequestFilterBlocksMeta) Reset() { + *x = SubscribeRequestFilterBlocksMeta{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterBlocksMeta) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterBlocksMeta) ProtoMessage() {} + +func (x *SubscribeRequestFilterBlocksMeta) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterBlocksMeta.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterBlocksMeta) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{8} +} + +type SubscribeRequestFilterEntry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SubscribeRequestFilterEntry) Reset() { + *x = SubscribeRequestFilterEntry{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestFilterEntry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestFilterEntry) ProtoMessage() {} + +func (x *SubscribeRequestFilterEntry) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestFilterEntry.ProtoReflect.Descriptor instead. +func (*SubscribeRequestFilterEntry) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{9} +} + +type SubscribeRequestAccountsDataSlice struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Offset uint64 `protobuf:"varint,1,opt,name=offset,proto3" json:"offset,omitempty"` + Length uint64 `protobuf:"varint,2,opt,name=length,proto3" json:"length,omitempty"` +} + +func (x *SubscribeRequestAccountsDataSlice) Reset() { + *x = SubscribeRequestAccountsDataSlice{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestAccountsDataSlice) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestAccountsDataSlice) ProtoMessage() {} + +func (x *SubscribeRequestAccountsDataSlice) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestAccountsDataSlice.ProtoReflect.Descriptor instead. +func (*SubscribeRequestAccountsDataSlice) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{10} +} + +func (x *SubscribeRequestAccountsDataSlice) GetOffset() uint64 { + if x != nil { + return x.Offset + } + return 0 +} + +func (x *SubscribeRequestAccountsDataSlice) GetLength() uint64 { + if x != nil { + return x.Length + } + return 0 +} + +type SubscribeRequestPing struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *SubscribeRequestPing) Reset() { + *x = SubscribeRequestPing{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeRequestPing) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeRequestPing) ProtoMessage() {} + +func (x *SubscribeRequestPing) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeRequestPing.ProtoReflect.Descriptor instead. +func (*SubscribeRequestPing) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{11} +} + +func (x *SubscribeRequestPing) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + +type SubscribeUpdate struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Filters []string `protobuf:"bytes,1,rep,name=filters,proto3" json:"filters,omitempty"` + // Types that are assignable to UpdateOneof: + // + // *SubscribeUpdate_Account + // *SubscribeUpdate_Slot + // *SubscribeUpdate_Transaction + // *SubscribeUpdate_TransactionStatus + // *SubscribeUpdate_Block + // *SubscribeUpdate_Ping + // *SubscribeUpdate_Pong + // *SubscribeUpdate_BlockMeta + // *SubscribeUpdate_Entry + UpdateOneof isSubscribeUpdate_UpdateOneof `protobuf_oneof:"update_oneof"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` +} + +func (x *SubscribeUpdate) Reset() { + *x = SubscribeUpdate{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeUpdate) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeUpdate) ProtoMessage() {} + +func (x *SubscribeUpdate) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeUpdate.ProtoReflect.Descriptor instead. +func (*SubscribeUpdate) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{12} +} + +func (x *SubscribeUpdate) GetFilters() []string { + if x != nil { + return x.Filters + } + return nil +} + +func (m *SubscribeUpdate) GetUpdateOneof() isSubscribeUpdate_UpdateOneof { + if m != nil { + return m.UpdateOneof + } + return nil +} + +func (x *SubscribeUpdate) GetAccount() *SubscribeUpdateAccount { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Account); ok { + return x.Account + } + return nil +} + +func (x *SubscribeUpdate) GetSlot() *SubscribeUpdateSlot { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Slot); ok { + return x.Slot + } + return nil +} + +func (x *SubscribeUpdate) GetTransaction() *SubscribeUpdateTransaction { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Transaction); ok { + return x.Transaction + } + return nil +} + +func (x *SubscribeUpdate) GetTransactionStatus() *SubscribeUpdateTransactionStatus { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_TransactionStatus); ok { + return x.TransactionStatus + } + return nil +} + +func (x *SubscribeUpdate) GetBlock() *SubscribeUpdateBlock { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Block); ok { + return x.Block + } + return nil +} + +func (x *SubscribeUpdate) GetPing() *SubscribeUpdatePing { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Ping); ok { + return x.Ping + } + return nil +} + +func (x *SubscribeUpdate) GetPong() *SubscribeUpdatePong { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Pong); ok { + return x.Pong + } + return nil +} + +func (x *SubscribeUpdate) GetBlockMeta() *SubscribeUpdateBlockMeta { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_BlockMeta); ok { + return x.BlockMeta + } + return nil +} + +func (x *SubscribeUpdate) GetEntry() *SubscribeUpdateEntry { + if x, ok := x.GetUpdateOneof().(*SubscribeUpdate_Entry); ok { + return x.Entry + } + return nil +} + +func (x *SubscribeUpdate) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +type isSubscribeUpdate_UpdateOneof interface { + isSubscribeUpdate_UpdateOneof() +} + +type SubscribeUpdate_Account struct { + Account *SubscribeUpdateAccount `protobuf:"bytes,2,opt,name=account,proto3,oneof"` +} + +type SubscribeUpdate_Slot struct { + Slot *SubscribeUpdateSlot `protobuf:"bytes,3,opt,name=slot,proto3,oneof"` +} + +type SubscribeUpdate_Transaction struct { + Transaction *SubscribeUpdateTransaction `protobuf:"bytes,4,opt,name=transaction,proto3,oneof"` +} + +type SubscribeUpdate_TransactionStatus struct { + TransactionStatus *SubscribeUpdateTransactionStatus `protobuf:"bytes,10,opt,name=transaction_status,json=transactionStatus,proto3,oneof"` +} + +type SubscribeUpdate_Block struct { + Block *SubscribeUpdateBlock `protobuf:"bytes,5,opt,name=block,proto3,oneof"` +} + +type SubscribeUpdate_Ping struct { + Ping *SubscribeUpdatePing `protobuf:"bytes,6,opt,name=ping,proto3,oneof"` +} + +type SubscribeUpdate_Pong struct { + Pong *SubscribeUpdatePong `protobuf:"bytes,9,opt,name=pong,proto3,oneof"` +} + +type SubscribeUpdate_BlockMeta struct { + BlockMeta *SubscribeUpdateBlockMeta `protobuf:"bytes,7,opt,name=block_meta,json=blockMeta,proto3,oneof"` +} + +type SubscribeUpdate_Entry struct { + Entry *SubscribeUpdateEntry `protobuf:"bytes,8,opt,name=entry,proto3,oneof"` +} + +func (*SubscribeUpdate_Account) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_Slot) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_Transaction) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_TransactionStatus) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_Block) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_Ping) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_Pong) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_BlockMeta) isSubscribeUpdate_UpdateOneof() {} + +func (*SubscribeUpdate_Entry) isSubscribeUpdate_UpdateOneof() {} + +type SubscribeUpdateAccount struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Account *SubscribeUpdateAccountInfo `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` + IsStartup bool `protobuf:"varint,3,opt,name=is_startup,json=isStartup,proto3" json:"is_startup,omitempty"` +} + +func (x *SubscribeUpdateAccount) Reset() { + *x = SubscribeUpdateAccount{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeUpdateAccount) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeUpdateAccount) ProtoMessage() {} + +func (x *SubscribeUpdateAccount) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeUpdateAccount.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateAccount) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{13} +} + +func (x *SubscribeUpdateAccount) GetAccount() *SubscribeUpdateAccountInfo { + if x != nil { + return x.Account + } + return nil +} + +func (x *SubscribeUpdateAccount) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *SubscribeUpdateAccount) GetIsStartup() bool { + if x != nil { + return x.IsStartup + } + return false +} + +type SubscribeUpdateAccountInfo struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey,proto3" json:"pubkey,omitempty"` + Lamports uint64 `protobuf:"varint,2,opt,name=lamports,proto3" json:"lamports,omitempty"` + Owner []byte `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Executable bool `protobuf:"varint,4,opt,name=executable,proto3" json:"executable,omitempty"` + RentEpoch uint64 `protobuf:"varint,5,opt,name=rent_epoch,json=rentEpoch,proto3" json:"rent_epoch,omitempty"` + Data []byte `protobuf:"bytes,6,opt,name=data,proto3" json:"data,omitempty"` + WriteVersion uint64 `protobuf:"varint,7,opt,name=write_version,json=writeVersion,proto3" json:"write_version,omitempty"` + TxnSignature []byte `protobuf:"bytes,8,opt,name=txn_signature,json=txnSignature,proto3,oneof" json:"txn_signature,omitempty"` +} + +func (x *SubscribeUpdateAccountInfo) Reset() { + *x = SubscribeUpdateAccountInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeUpdateAccountInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeUpdateAccountInfo) ProtoMessage() {} + +func (x *SubscribeUpdateAccountInfo) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeUpdateAccountInfo.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateAccountInfo) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{14} +} + +func (x *SubscribeUpdateAccountInfo) GetPubkey() []byte { + if x != nil { + return x.Pubkey + } + return nil +} + +func (x *SubscribeUpdateAccountInfo) GetLamports() uint64 { + if x != nil { + return x.Lamports + } + return 0 +} + +func (x *SubscribeUpdateAccountInfo) GetOwner() []byte { + if x != nil { + return x.Owner + } + return nil +} + +func (x *SubscribeUpdateAccountInfo) GetExecutable() bool { + if x != nil { + return x.Executable + } + return false +} + +func (x *SubscribeUpdateAccountInfo) GetRentEpoch() uint64 { + if x != nil { + return x.RentEpoch + } + return 0 +} + +func (x *SubscribeUpdateAccountInfo) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *SubscribeUpdateAccountInfo) GetWriteVersion() uint64 { + if x != nil { + return x.WriteVersion + } + return 0 +} + +func (x *SubscribeUpdateAccountInfo) GetTxnSignature() []byte { + if x != nil { + return x.TxnSignature + } + return nil +} + +type SubscribeUpdateSlot struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Parent *uint64 `protobuf:"varint,2,opt,name=parent,proto3,oneof" json:"parent,omitempty"` + Status SlotStatus `protobuf:"varint,3,opt,name=status,proto3,enum=geyser.SlotStatus" json:"status,omitempty"` + DeadError *string `protobuf:"bytes,4,opt,name=dead_error,json=deadError,proto3,oneof" json:"dead_error,omitempty"` +} + +func (x *SubscribeUpdateSlot) Reset() { + *x = SubscribeUpdateSlot{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeUpdateSlot) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeUpdateSlot) ProtoMessage() {} + +func (x *SubscribeUpdateSlot) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeUpdateSlot.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateSlot) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{15} +} + +func (x *SubscribeUpdateSlot) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +func (x *SubscribeUpdateSlot) GetParent() uint64 { + if x != nil && x.Parent != nil { + return *x.Parent + } + return 0 +} + +func (x *SubscribeUpdateSlot) GetStatus() SlotStatus { + if x != nil { + return x.Status + } + return SlotStatus_SLOT_PROCESSED +} + +func (x *SubscribeUpdateSlot) GetDeadError() string { + if x != nil && x.DeadError != nil { + return *x.DeadError + } + return "" +} + +type SubscribeUpdateTransaction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Transaction *SubscribeUpdateTransactionInfo `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` + Slot uint64 `protobuf:"varint,2,opt,name=slot,proto3" json:"slot,omitempty"` +} + +func (x *SubscribeUpdateTransaction) Reset() { + *x = SubscribeUpdateTransaction{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeUpdateTransaction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeUpdateTransaction) ProtoMessage() {} + +func (x *SubscribeUpdateTransaction) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeUpdateTransaction.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateTransaction) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{16} +} + +func (x *SubscribeUpdateTransaction) GetTransaction() *SubscribeUpdateTransactionInfo { + if x != nil { + return x.Transaction + } + return nil +} + +func (x *SubscribeUpdateTransaction) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 +} + +type SubscribeUpdateTransactionInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Slot this update occurred. - Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` - // Account's pubkey. - Pubkey []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` - // Account's owner. - Owner []byte `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - // Flags whether this update was streamed as part of startup, hence not a realtime update. - IsStartup bool `protobuf:"varint,4,opt,name=is_startup,json=isStartup,proto3" json:"is_startup,omitempty"` - // A monotonically increasing number specifying the order of this update. - // Can be used to determine what the latest update for an account was at - // a given slot, assuming there were multiple updates. - Seq uint64 `protobuf:"varint,5,opt,name=seq,proto3" json:"seq,omitempty"` - // Transaction signature that caused this update. - TxSignature *string `protobuf:"bytes,6,opt,name=tx_signature,json=txSignature,proto3,oneof" json:"tx_signature,omitempty"` - // AccountReplica version. - ReplicaVersion uint32 `protobuf:"varint,7,opt,name=replica_version,json=replicaVersion,proto3" json:"replica_version,omitempty"` -} - -func (x *PartialAccountUpdate) Reset() { - *x = PartialAccountUpdate{} + Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` + IsVote bool `protobuf:"varint,2,opt,name=is_vote,json=isVote,proto3" json:"is_vote,omitempty"` + Transaction *Transaction `protobuf:"bytes,3,opt,name=transaction,proto3" json:"transaction,omitempty"` + Meta *TransactionStatusMeta `protobuf:"bytes,4,opt,name=meta,proto3" json:"meta,omitempty"` + Index uint64 `protobuf:"varint,5,opt,name=index,proto3" json:"index,omitempty"` +} + +func (x *SubscribeUpdateTransactionInfo) Reset() { + *x = SubscribeUpdateTransactionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[0] + mi := &file_geyser_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *PartialAccountUpdate) String() string { +func (x *SubscribeUpdateTransactionInfo) String() string { return protoimpl.X.MessageStringOf(x) } -func (*PartialAccountUpdate) ProtoMessage() {} +func (*SubscribeUpdateTransactionInfo) ProtoMessage() {} -func (x *PartialAccountUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[0] +func (x *SubscribeUpdateTransactionInfo) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -122,108 +1579,162 @@ func (x *PartialAccountUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use PartialAccountUpdate.ProtoReflect.Descriptor instead. -func (*PartialAccountUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{0} +// Deprecated: Use SubscribeUpdateTransactionInfo.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateTransactionInfo) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{17} } -func (x *PartialAccountUpdate) GetSlot() uint64 { +func (x *SubscribeUpdateTransactionInfo) GetSignature() []byte { if x != nil { - return x.Slot + return x.Signature } - return 0 + return nil } -func (x *PartialAccountUpdate) GetPubkey() []byte { +func (x *SubscribeUpdateTransactionInfo) GetIsVote() bool { if x != nil { - return x.Pubkey + return x.IsVote + } + return false +} + +func (x *SubscribeUpdateTransactionInfo) GetTransaction() *Transaction { + if x != nil { + return x.Transaction } return nil } -func (x *PartialAccountUpdate) GetOwner() []byte { +func (x *SubscribeUpdateTransactionInfo) GetMeta() *TransactionStatusMeta { if x != nil { - return x.Owner + return x.Meta } return nil } -func (x *PartialAccountUpdate) GetIsStartup() bool { +func (x *SubscribeUpdateTransactionInfo) GetIndex() uint64 { if x != nil { - return x.IsStartup + return x.Index } - return false + return 0 +} + +type SubscribeUpdateTransactionStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` + IsVote bool `protobuf:"varint,3,opt,name=is_vote,json=isVote,proto3" json:"is_vote,omitempty"` + Index uint64 `protobuf:"varint,4,opt,name=index,proto3" json:"index,omitempty"` + Err *TransactionError `protobuf:"bytes,5,opt,name=err,proto3" json:"err,omitempty"` +} + +func (x *SubscribeUpdateTransactionStatus) Reset() { + *x = SubscribeUpdateTransactionStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_geyser_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubscribeUpdateTransactionStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubscribeUpdateTransactionStatus) ProtoMessage() {} + +func (x *SubscribeUpdateTransactionStatus) ProtoReflect() protoreflect.Message { + mi := &file_geyser_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 SubscribeUpdateTransactionStatus.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateTransactionStatus) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{18} } -func (x *PartialAccountUpdate) GetSeq() uint64 { +func (x *SubscribeUpdateTransactionStatus) GetSlot() uint64 { if x != nil { - return x.Seq + return x.Slot } return 0 } -func (x *PartialAccountUpdate) GetTxSignature() string { - if x != nil && x.TxSignature != nil { - return *x.TxSignature +func (x *SubscribeUpdateTransactionStatus) GetSignature() []byte { + if x != nil { + return x.Signature } - return "" + return nil +} + +func (x *SubscribeUpdateTransactionStatus) GetIsVote() bool { + if x != nil { + return x.IsVote + } + return false } -func (x *PartialAccountUpdate) GetReplicaVersion() uint32 { +func (x *SubscribeUpdateTransactionStatus) GetIndex() uint64 { if x != nil { - return x.ReplicaVersion + return x.Index } return 0 } -type AccountUpdate struct { +func (x *SubscribeUpdateTransactionStatus) GetErr() *TransactionError { + if x != nil { + return x.Err + } + return nil +} + +type SubscribeUpdateBlock struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Slot this update occurred. - Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` - // Account's pubkey. - Pubkey []byte `protobuf:"bytes,2,opt,name=pubkey,proto3" json:"pubkey,omitempty"` - // Account's lamports post update. - Lamports uint64 `protobuf:"varint,3,opt,name=lamports,proto3" json:"lamports,omitempty"` - // Account's owner. - Owner []byte `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty"` - // Flags whether an account is executable. - IsExecutable bool `protobuf:"varint,5,opt,name=is_executable,json=isExecutable,proto3" json:"is_executable,omitempty"` - // The epoch at which this account will next owe rent. - RentEpoch uint64 `protobuf:"varint,6,opt,name=rent_epoch,json=rentEpoch,proto3" json:"rent_epoch,omitempty"` - // Account's data post update. - Data []byte `protobuf:"bytes,7,opt,name=data,proto3" json:"data,omitempty"` - // A monotonically increasing number specifying the order of this update. - // Can be used to determine what the latest update for an account was at - // a given slot, assuming there were multiple updates. - Seq uint64 `protobuf:"varint,8,opt,name=seq,proto3" json:"seq,omitempty"` - // Flags whether this update was streamed as part of startup i.e. not a real-time update. - IsStartup bool `protobuf:"varint,9,opt,name=is_startup,json=isStartup,proto3" json:"is_startup,omitempty"` - // Transaction signature that caused this update. - TxSignature *string `protobuf:"bytes,10,opt,name=tx_signature,json=txSignature,proto3,oneof" json:"tx_signature,omitempty"` - // AccountReplica version. - ReplicaVersion uint32 `protobuf:"varint,11,opt,name=replica_version,json=replicaVersion,proto3" json:"replica_version,omitempty"` -} - -func (x *AccountUpdate) Reset() { - *x = AccountUpdate{} + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Blockhash string `protobuf:"bytes,2,opt,name=blockhash,proto3" json:"blockhash,omitempty"` + Rewards *Rewards `protobuf:"bytes,3,opt,name=rewards,proto3" json:"rewards,omitempty"` + BlockTime *UnixTimestamp `protobuf:"bytes,4,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"` + BlockHeight *BlockHeight `protobuf:"bytes,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + ParentSlot uint64 `protobuf:"varint,7,opt,name=parent_slot,json=parentSlot,proto3" json:"parent_slot,omitempty"` + ParentBlockhash string `protobuf:"bytes,8,opt,name=parent_blockhash,json=parentBlockhash,proto3" json:"parent_blockhash,omitempty"` + ExecutedTransactionCount uint64 `protobuf:"varint,9,opt,name=executed_transaction_count,json=executedTransactionCount,proto3" json:"executed_transaction_count,omitempty"` + Transactions []*SubscribeUpdateTransactionInfo `protobuf:"bytes,6,rep,name=transactions,proto3" json:"transactions,omitempty"` + UpdatedAccountCount uint64 `protobuf:"varint,10,opt,name=updated_account_count,json=updatedAccountCount,proto3" json:"updated_account_count,omitempty"` + Accounts []*SubscribeUpdateAccountInfo `protobuf:"bytes,11,rep,name=accounts,proto3" json:"accounts,omitempty"` + EntriesCount uint64 `protobuf:"varint,12,opt,name=entries_count,json=entriesCount,proto3" json:"entries_count,omitempty"` + Entries []*SubscribeUpdateEntry `protobuf:"bytes,13,rep,name=entries,proto3" json:"entries,omitempty"` +} + +func (x *SubscribeUpdateBlock) Reset() { + *x = SubscribeUpdateBlock{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[1] + mi := &file_geyser_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AccountUpdate) String() string { +func (x *SubscribeUpdateBlock) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AccountUpdate) ProtoMessage() {} +func (*SubscribeUpdateBlock) ProtoMessage() {} -func (x *AccountUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[1] +func (x *SubscribeUpdateBlock) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -234,115 +1745,135 @@ func (x *AccountUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AccountUpdate.ProtoReflect.Descriptor instead. -func (*AccountUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{1} +// Deprecated: Use SubscribeUpdateBlock.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateBlock) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{19} } -func (x *AccountUpdate) GetSlot() uint64 { +func (x *SubscribeUpdateBlock) GetSlot() uint64 { if x != nil { return x.Slot } return 0 } -func (x *AccountUpdate) GetPubkey() []byte { +func (x *SubscribeUpdateBlock) GetBlockhash() string { if x != nil { - return x.Pubkey + return x.Blockhash + } + return "" +} + +func (x *SubscribeUpdateBlock) GetRewards() *Rewards { + if x != nil { + return x.Rewards } return nil } -func (x *AccountUpdate) GetLamports() uint64 { +func (x *SubscribeUpdateBlock) GetBlockTime() *UnixTimestamp { if x != nil { - return x.Lamports + return x.BlockTime } - return 0 + return nil } -func (x *AccountUpdate) GetOwner() []byte { +func (x *SubscribeUpdateBlock) GetBlockHeight() *BlockHeight { if x != nil { - return x.Owner + return x.BlockHeight } return nil } -func (x *AccountUpdate) GetIsExecutable() bool { +func (x *SubscribeUpdateBlock) GetParentSlot() uint64 { if x != nil { - return x.IsExecutable + return x.ParentSlot } - return false + return 0 } -func (x *AccountUpdate) GetRentEpoch() uint64 { +func (x *SubscribeUpdateBlock) GetParentBlockhash() string { if x != nil { - return x.RentEpoch + return x.ParentBlockhash + } + return "" +} + +func (x *SubscribeUpdateBlock) GetExecutedTransactionCount() uint64 { + if x != nil { + return x.ExecutedTransactionCount } return 0 } -func (x *AccountUpdate) GetData() []byte { +func (x *SubscribeUpdateBlock) GetTransactions() []*SubscribeUpdateTransactionInfo { if x != nil { - return x.Data + return x.Transactions } return nil } -func (x *AccountUpdate) GetSeq() uint64 { +func (x *SubscribeUpdateBlock) GetUpdatedAccountCount() uint64 { if x != nil { - return x.Seq + return x.UpdatedAccountCount } return 0 } -func (x *AccountUpdate) GetIsStartup() bool { +func (x *SubscribeUpdateBlock) GetAccounts() []*SubscribeUpdateAccountInfo { if x != nil { - return x.IsStartup + return x.Accounts } - return false + return nil } -func (x *AccountUpdate) GetTxSignature() string { - if x != nil && x.TxSignature != nil { - return *x.TxSignature +func (x *SubscribeUpdateBlock) GetEntriesCount() uint64 { + if x != nil { + return x.EntriesCount } - return "" + return 0 } -func (x *AccountUpdate) GetReplicaVersion() uint32 { +func (x *SubscribeUpdateBlock) GetEntries() []*SubscribeUpdateEntry { if x != nil { - return x.ReplicaVersion + return x.Entries } - return 0 + return nil } -type SlotUpdate struct { +type SubscribeUpdateBlockMeta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` - ParentSlot *uint64 `protobuf:"varint,2,opt,name=parent_slot,json=parentSlot,proto3,oneof" json:"parent_slot,omitempty"` - Status SlotUpdateStatus `protobuf:"varint,3,opt,name=status,proto3,enum=solana.geyser.SlotUpdateStatus" json:"status,omitempty"` + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Blockhash string `protobuf:"bytes,2,opt,name=blockhash,proto3" json:"blockhash,omitempty"` + Rewards *Rewards `protobuf:"bytes,3,opt,name=rewards,proto3" json:"rewards,omitempty"` + BlockTime *UnixTimestamp `protobuf:"bytes,4,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"` + BlockHeight *BlockHeight `protobuf:"bytes,5,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + ParentSlot uint64 `protobuf:"varint,6,opt,name=parent_slot,json=parentSlot,proto3" json:"parent_slot,omitempty"` + ParentBlockhash string `protobuf:"bytes,7,opt,name=parent_blockhash,json=parentBlockhash,proto3" json:"parent_blockhash,omitempty"` + ExecutedTransactionCount uint64 `protobuf:"varint,8,opt,name=executed_transaction_count,json=executedTransactionCount,proto3" json:"executed_transaction_count,omitempty"` + EntriesCount uint64 `protobuf:"varint,9,opt,name=entries_count,json=entriesCount,proto3" json:"entries_count,omitempty"` } -func (x *SlotUpdate) Reset() { - *x = SlotUpdate{} +func (x *SubscribeUpdateBlockMeta) Reset() { + *x = SubscribeUpdateBlockMeta{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[2] + mi := &file_geyser_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SlotUpdate) String() string { +func (x *SubscribeUpdateBlockMeta) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SlotUpdate) ProtoMessage() {} +func (*SubscribeUpdateBlockMeta) ProtoMessage() {} -func (x *SlotUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[2] +func (x *SubscribeUpdateBlockMeta) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -353,117 +1884,104 @@ func (x *SlotUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SlotUpdate.ProtoReflect.Descriptor instead. -func (*SlotUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{2} +// Deprecated: Use SubscribeUpdateBlockMeta.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateBlockMeta) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{20} } -func (x *SlotUpdate) GetSlot() uint64 { +func (x *SubscribeUpdateBlockMeta) GetSlot() uint64 { if x != nil { return x.Slot } return 0 } -func (x *SlotUpdate) GetParentSlot() uint64 { - if x != nil && x.ParentSlot != nil { - return *x.ParentSlot +func (x *SubscribeUpdateBlockMeta) GetBlockhash() string { + if x != nil { + return x.Blockhash } - return 0 + return "" } -func (x *SlotUpdate) GetStatus() SlotUpdateStatus { +func (x *SubscribeUpdateBlockMeta) GetRewards() *Rewards { if x != nil { - return x.Status + return x.Rewards } - return SlotUpdateStatus_CONFIRMED -} - -type TimestampedSlotUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Time at which the message was generated - Ts *timestamp.Timestamp `protobuf:"bytes,1,opt,name=ts,proto3" json:"ts,omitempty"` - // Slot update - SlotUpdate *SlotUpdate `protobuf:"bytes,2,opt,name=slot_update,json=slotUpdate,proto3" json:"slot_update,omitempty"` + return nil } -func (x *TimestampedSlotUpdate) Reset() { - *x = TimestampedSlotUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *SubscribeUpdateBlockMeta) GetBlockTime() *UnixTimestamp { + if x != nil { + return x.BlockTime } + return nil } -func (x *TimestampedSlotUpdate) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *SubscribeUpdateBlockMeta) GetBlockHeight() *BlockHeight { + if x != nil { + return x.BlockHeight + } + return nil } -func (*TimestampedSlotUpdate) ProtoMessage() {} - -func (x *TimestampedSlotUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *SubscribeUpdateBlockMeta) GetParentSlot() uint64 { + if x != nil { + return x.ParentSlot } - return mi.MessageOf(x) + return 0 } -// Deprecated: Use TimestampedSlotUpdate.ProtoReflect.Descriptor instead. -func (*TimestampedSlotUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{3} +func (x *SubscribeUpdateBlockMeta) GetParentBlockhash() string { + if x != nil { + return x.ParentBlockhash + } + return "" } -func (x *TimestampedSlotUpdate) GetTs() *timestamp.Timestamp { +func (x *SubscribeUpdateBlockMeta) GetExecutedTransactionCount() uint64 { if x != nil { - return x.Ts + return x.ExecutedTransactionCount } - return nil + return 0 } -func (x *TimestampedSlotUpdate) GetSlotUpdate() *SlotUpdate { +func (x *SubscribeUpdateBlockMeta) GetEntriesCount() uint64 { if x != nil { - return x.SlotUpdate + return x.EntriesCount } - return nil + return 0 } -type TimestampedAccountUpdate struct { +type SubscribeUpdateEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Time at which the message was generated - Ts *timestamp.Timestamp `protobuf:"bytes,1,opt,name=ts,proto3" json:"ts,omitempty"` - // Account update - AccountUpdate *AccountUpdate `protobuf:"bytes,2,opt,name=account_update,json=accountUpdate,proto3" json:"account_update,omitempty"` + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Index uint64 `protobuf:"varint,2,opt,name=index,proto3" json:"index,omitempty"` + NumHashes uint64 `protobuf:"varint,3,opt,name=num_hashes,json=numHashes,proto3" json:"num_hashes,omitempty"` + Hash []byte `protobuf:"bytes,4,opt,name=hash,proto3" json:"hash,omitempty"` + ExecutedTransactionCount uint64 `protobuf:"varint,5,opt,name=executed_transaction_count,json=executedTransactionCount,proto3" json:"executed_transaction_count,omitempty"` + StartingTransactionIndex uint64 `protobuf:"varint,6,opt,name=starting_transaction_index,json=startingTransactionIndex,proto3" json:"starting_transaction_index,omitempty"` // added in v1.18, for solana 1.17 value is always 0 } -func (x *TimestampedAccountUpdate) Reset() { - *x = TimestampedAccountUpdate{} +func (x *SubscribeUpdateEntry) Reset() { + *x = SubscribeUpdateEntry{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[4] + mi := &file_geyser_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TimestampedAccountUpdate) String() string { +func (x *SubscribeUpdateEntry) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TimestampedAccountUpdate) ProtoMessage() {} +func (*SubscribeUpdateEntry) ProtoMessage() {} -func (x *TimestampedAccountUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[4] +func (x *SubscribeUpdateEntry) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -474,48 +1992,76 @@ func (x *TimestampedAccountUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TimestampedAccountUpdate.ProtoReflect.Descriptor instead. -func (*TimestampedAccountUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{4} +// Deprecated: Use SubscribeUpdateEntry.ProtoReflect.Descriptor instead. +func (*SubscribeUpdateEntry) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{21} } -func (x *TimestampedAccountUpdate) GetTs() *timestamp.Timestamp { +func (x *SubscribeUpdateEntry) GetSlot() uint64 { if x != nil { - return x.Ts + return x.Slot } - return nil + return 0 +} + +func (x *SubscribeUpdateEntry) GetIndex() uint64 { + if x != nil { + return x.Index + } + return 0 } -func (x *TimestampedAccountUpdate) GetAccountUpdate() *AccountUpdate { +func (x *SubscribeUpdateEntry) GetNumHashes() uint64 { if x != nil { - return x.AccountUpdate + return x.NumHashes + } + return 0 +} + +func (x *SubscribeUpdateEntry) GetHash() []byte { + if x != nil { + return x.Hash } return nil } -type SubscribeTransactionUpdatesRequest struct { +func (x *SubscribeUpdateEntry) GetExecutedTransactionCount() uint64 { + if x != nil { + return x.ExecutedTransactionCount + } + return 0 +} + +func (x *SubscribeUpdateEntry) GetStartingTransactionIndex() uint64 { + if x != nil { + return x.StartingTransactionIndex + } + return 0 +} + +type SubscribeUpdatePing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *SubscribeTransactionUpdatesRequest) Reset() { - *x = SubscribeTransactionUpdatesRequest{} +func (x *SubscribeUpdatePing) Reset() { + *x = SubscribeUpdatePing{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[5] + mi := &file_geyser_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribeTransactionUpdatesRequest) String() string { +func (x *SubscribeUpdatePing) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribeTransactionUpdatesRequest) ProtoMessage() {} +func (*SubscribeUpdatePing) ProtoMessage() {} -func (x *SubscribeTransactionUpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[5] +func (x *SubscribeUpdatePing) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -526,34 +2072,36 @@ func (x *SubscribeTransactionUpdatesRequest) ProtoReflect() protoreflect.Message return mi.MessageOf(x) } -// Deprecated: Use SubscribeTransactionUpdatesRequest.ProtoReflect.Descriptor instead. -func (*SubscribeTransactionUpdatesRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{5} +// Deprecated: Use SubscribeUpdatePing.ProtoReflect.Descriptor instead. +func (*SubscribeUpdatePing) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{22} } -type SubscribeBlockUpdatesRequest struct { +type SubscribeUpdatePong struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *SubscribeBlockUpdatesRequest) Reset() { - *x = SubscribeBlockUpdatesRequest{} +func (x *SubscribeUpdatePong) Reset() { + *x = SubscribeUpdatePong{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[6] + mi := &file_geyser_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribeBlockUpdatesRequest) String() string { +func (x *SubscribeUpdatePong) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribeBlockUpdatesRequest) ProtoMessage() {} +func (*SubscribeUpdatePong) ProtoMessage() {} -func (x *SubscribeBlockUpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[6] +func (x *SubscribeUpdatePong) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -564,39 +2112,43 @@ func (x *SubscribeBlockUpdatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SubscribeBlockUpdatesRequest.ProtoReflect.Descriptor instead. -func (*SubscribeBlockUpdatesRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{6} +// Deprecated: Use SubscribeUpdatePong.ProtoReflect.Descriptor instead. +func (*SubscribeUpdatePong) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{23} +} + +func (x *SubscribeUpdatePong) GetId() int32 { + if x != nil { + return x.Id + } + return 0 } -type MaybePartialAccountUpdate struct { +type PingRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Msg: - // *MaybePartialAccountUpdate_PartialAccountUpdate - // *MaybePartialAccountUpdate_Hb - Msg isMaybePartialAccountUpdate_Msg `protobuf_oneof:"msg"` + Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` } -func (x *MaybePartialAccountUpdate) Reset() { - *x = MaybePartialAccountUpdate{} +func (x *PingRequest) Reset() { + *x = PingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[7] + mi := &file_geyser_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MaybePartialAccountUpdate) String() string { +func (x *PingRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MaybePartialAccountUpdate) ProtoMessage() {} +func (*PingRequest) ProtoMessage() {} -func (x *MaybePartialAccountUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[7] +func (x *PingRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -607,71 +2159,43 @@ func (x *MaybePartialAccountUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MaybePartialAccountUpdate.ProtoReflect.Descriptor instead. -func (*MaybePartialAccountUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{7} -} - -func (m *MaybePartialAccountUpdate) GetMsg() isMaybePartialAccountUpdate_Msg { - if m != nil { - return m.Msg - } - return nil -} - -func (x *MaybePartialAccountUpdate) GetPartialAccountUpdate() *PartialAccountUpdate { - if x, ok := x.GetMsg().(*MaybePartialAccountUpdate_PartialAccountUpdate); ok { - return x.PartialAccountUpdate - } - return nil +// Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. +func (*PingRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{24} } -func (x *MaybePartialAccountUpdate) GetHb() *Heartbeat { - if x, ok := x.GetMsg().(*MaybePartialAccountUpdate_Hb); ok { - return x.Hb +func (x *PingRequest) GetCount() int32 { + if x != nil { + return x.Count } - return nil -} - -type isMaybePartialAccountUpdate_Msg interface { - isMaybePartialAccountUpdate_Msg() -} - -type MaybePartialAccountUpdate_PartialAccountUpdate struct { - PartialAccountUpdate *PartialAccountUpdate `protobuf:"bytes,1,opt,name=partial_account_update,json=partialAccountUpdate,proto3,oneof"` -} - -type MaybePartialAccountUpdate_Hb struct { - Hb *Heartbeat `protobuf:"bytes,2,opt,name=hb,proto3,oneof"` + return 0 } -func (*MaybePartialAccountUpdate_PartialAccountUpdate) isMaybePartialAccountUpdate_Msg() {} - -func (*MaybePartialAccountUpdate_Hb) isMaybePartialAccountUpdate_Msg() {} - -type Heartbeat struct { +type PongResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` } -func (x *Heartbeat) Reset() { - *x = Heartbeat{} +func (x *PongResponse) Reset() { + *x = PongResponse{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[8] + mi := &file_geyser_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Heartbeat) String() string { +func (x *PongResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Heartbeat) ProtoMessage() {} +func (*PongResponse) ProtoMessage() {} -func (x *Heartbeat) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[8] +func (x *PongResponse) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -682,34 +2206,43 @@ func (x *Heartbeat) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Heartbeat.ProtoReflect.Descriptor instead. -func (*Heartbeat) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{8} +// Deprecated: Use PongResponse.ProtoReflect.Descriptor instead. +func (*PongResponse) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{25} +} + +func (x *PongResponse) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 } -type EmptyRequest struct { +type GetLatestBlockhashRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Commitment *CommitmentLevel `protobuf:"varint,1,opt,name=commitment,proto3,enum=geyser.CommitmentLevel,oneof" json:"commitment,omitempty"` } -func (x *EmptyRequest) Reset() { - *x = EmptyRequest{} +func (x *GetLatestBlockhashRequest) Reset() { + *x = GetLatestBlockhashRequest{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[9] + mi := &file_geyser_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *EmptyRequest) String() string { +func (x *GetLatestBlockhashRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*EmptyRequest) ProtoMessage() {} +func (*GetLatestBlockhashRequest) ProtoMessage() {} -func (x *EmptyRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[9] +func (x *GetLatestBlockhashRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -720,40 +2253,45 @@ func (x *EmptyRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use EmptyRequest.ProtoReflect.Descriptor instead. -func (*EmptyRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{9} +// Deprecated: Use GetLatestBlockhashRequest.ProtoReflect.Descriptor instead. +func (*GetLatestBlockhashRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{26} +} + +func (x *GetLatestBlockhashRequest) GetCommitment() CommitmentLevel { + if x != nil && x.Commitment != nil { + return *x.Commitment + } + return CommitmentLevel_PROCESSED } -type BlockUpdate struct { +type GetLatestBlockhashResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` - Blockhash string `protobuf:"bytes,2,opt,name=blockhash,proto3" json:"blockhash,omitempty"` - Rewards []*Reward `protobuf:"bytes,3,rep,name=rewards,proto3" json:"rewards,omitempty"` - BlockTime *timestamp.Timestamp `protobuf:"bytes,4,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"` - BlockHeight *uint64 `protobuf:"varint,5,opt,name=block_height,json=blockHeight,proto3,oneof" json:"block_height,omitempty"` + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Blockhash string `protobuf:"bytes,2,opt,name=blockhash,proto3" json:"blockhash,omitempty"` + LastValidBlockHeight uint64 `protobuf:"varint,3,opt,name=last_valid_block_height,json=lastValidBlockHeight,proto3" json:"last_valid_block_height,omitempty"` } -func (x *BlockUpdate) Reset() { - *x = BlockUpdate{} +func (x *GetLatestBlockhashResponse) Reset() { + *x = GetLatestBlockhashResponse{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[10] + mi := &file_geyser_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *BlockUpdate) String() string { +func (x *GetLatestBlockhashResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*BlockUpdate) ProtoMessage() {} +func (*GetLatestBlockhashResponse) ProtoMessage() {} -func (x *BlockUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[10] +func (x *GetLatestBlockhashResponse) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -764,74 +2302,57 @@ func (x *BlockUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use BlockUpdate.ProtoReflect.Descriptor instead. -func (*BlockUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{10} +// Deprecated: Use GetLatestBlockhashResponse.ProtoReflect.Descriptor instead. +func (*GetLatestBlockhashResponse) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{27} } -func (x *BlockUpdate) GetSlot() uint64 { +func (x *GetLatestBlockhashResponse) GetSlot() uint64 { if x != nil { return x.Slot } return 0 } -func (x *BlockUpdate) GetBlockhash() string { +func (x *GetLatestBlockhashResponse) GetBlockhash() string { if x != nil { return x.Blockhash } return "" } -func (x *BlockUpdate) GetRewards() []*Reward { - if x != nil { - return x.Rewards - } - return nil -} - -func (x *BlockUpdate) GetBlockTime() *timestamp.Timestamp { +func (x *GetLatestBlockhashResponse) GetLastValidBlockHeight() uint64 { if x != nil { - return x.BlockTime - } - return nil -} - -func (x *BlockUpdate) GetBlockHeight() uint64 { - if x != nil && x.BlockHeight != nil { - return *x.BlockHeight + return x.LastValidBlockHeight } return 0 } -type TimestampedBlockUpdate struct { +type GetBlockHeightRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Time at which the message was generated - Ts *timestamp.Timestamp `protobuf:"bytes,1,opt,name=ts,proto3" json:"ts,omitempty"` - // Block contents - BlockUpdate *BlockUpdate `protobuf:"bytes,2,opt,name=block_update,json=blockUpdate,proto3" json:"block_update,omitempty"` + Commitment *CommitmentLevel `protobuf:"varint,1,opt,name=commitment,proto3,enum=geyser.CommitmentLevel,oneof" json:"commitment,omitempty"` } -func (x *TimestampedBlockUpdate) Reset() { - *x = TimestampedBlockUpdate{} +func (x *GetBlockHeightRequest) Reset() { + *x = GetBlockHeightRequest{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[11] + mi := &file_geyser_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TimestampedBlockUpdate) String() string { +func (x *GetBlockHeightRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TimestampedBlockUpdate) ProtoMessage() {} +func (*GetBlockHeightRequest) ProtoMessage() {} -func (x *TimestampedBlockUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[11] +func (x *GetBlockHeightRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -842,54 +2363,43 @@ func (x *TimestampedBlockUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TimestampedBlockUpdate.ProtoReflect.Descriptor instead. -func (*TimestampedBlockUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{11} -} - -func (x *TimestampedBlockUpdate) GetTs() *timestamp.Timestamp { - if x != nil { - return x.Ts - } - return nil +// Deprecated: Use GetBlockHeightRequest.ProtoReflect.Descriptor instead. +func (*GetBlockHeightRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{28} } -func (x *TimestampedBlockUpdate) GetBlockUpdate() *BlockUpdate { - if x != nil { - return x.BlockUpdate +func (x *GetBlockHeightRequest) GetCommitment() CommitmentLevel { + if x != nil && x.Commitment != nil { + return *x.Commitment } - return nil + return CommitmentLevel_PROCESSED } -type TransactionUpdate struct { +type GetBlockHeightResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` - Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` - IsVote bool `protobuf:"varint,3,opt,name=is_vote,json=isVote,proto3" json:"is_vote,omitempty"` - TxIdx uint64 `protobuf:"varint,4,opt,name=tx_idx,json=txIdx,proto3" json:"tx_idx,omitempty"` - Tx *ConfirmedTransaction `protobuf:"bytes,5,opt,name=tx,proto3" json:"tx,omitempty"` + BlockHeight uint64 `protobuf:"varint,1,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` } -func (x *TransactionUpdate) Reset() { - *x = TransactionUpdate{} +func (x *GetBlockHeightResponse) Reset() { + *x = GetBlockHeightResponse{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[12] + mi := &file_geyser_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TransactionUpdate) String() string { +func (x *GetBlockHeightResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TransactionUpdate) ProtoMessage() {} +func (*GetBlockHeightResponse) ProtoMessage() {} -func (x *TransactionUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[12] +func (x *GetBlockHeightResponse) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -900,72 +2410,43 @@ func (x *TransactionUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TransactionUpdate.ProtoReflect.Descriptor instead. -func (*TransactionUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{12} -} - -func (x *TransactionUpdate) GetSlot() uint64 { - if x != nil { - return x.Slot - } - return 0 -} - -func (x *TransactionUpdate) GetSignature() string { - if x != nil { - return x.Signature - } - return "" -} - -func (x *TransactionUpdate) GetIsVote() bool { - if x != nil { - return x.IsVote - } - return false +// Deprecated: Use GetBlockHeightResponse.ProtoReflect.Descriptor instead. +func (*GetBlockHeightResponse) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{29} } -func (x *TransactionUpdate) GetTxIdx() uint64 { +func (x *GetBlockHeightResponse) GetBlockHeight() uint64 { if x != nil { - return x.TxIdx + return x.BlockHeight } return 0 } -func (x *TransactionUpdate) GetTx() *ConfirmedTransaction { - if x != nil { - return x.Tx - } - return nil -} - -type TimestampedTransactionUpdate struct { +type GetSlotRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Ts *timestamp.Timestamp `protobuf:"bytes,1,opt,name=ts,proto3" json:"ts,omitempty"` - Transaction *TransactionUpdate `protobuf:"bytes,2,opt,name=transaction,proto3" json:"transaction,omitempty"` + Commitment *CommitmentLevel `protobuf:"varint,1,opt,name=commitment,proto3,enum=geyser.CommitmentLevel,oneof" json:"commitment,omitempty"` } -func (x *TimestampedTransactionUpdate) Reset() { - *x = TimestampedTransactionUpdate{} +func (x *GetSlotRequest) Reset() { + *x = GetSlotRequest{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[13] + mi := &file_geyser_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *TimestampedTransactionUpdate) String() string { +func (x *GetSlotRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TimestampedTransactionUpdate) ProtoMessage() {} +func (*GetSlotRequest) ProtoMessage() {} -func (x *TimestampedTransactionUpdate) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[13] +func (x *GetSlotRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -976,48 +2457,43 @@ func (x *TimestampedTransactionUpdate) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TimestampedTransactionUpdate.ProtoReflect.Descriptor instead. -func (*TimestampedTransactionUpdate) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{13} -} - -func (x *TimestampedTransactionUpdate) GetTs() *timestamp.Timestamp { - if x != nil { - return x.Ts - } - return nil +// Deprecated: Use GetSlotRequest.ProtoReflect.Descriptor instead. +func (*GetSlotRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{30} } -func (x *TimestampedTransactionUpdate) GetTransaction() *TransactionUpdate { - if x != nil { - return x.Transaction +func (x *GetSlotRequest) GetCommitment() CommitmentLevel { + if x != nil && x.Commitment != nil { + return *x.Commitment } - return nil + return CommitmentLevel_PROCESSED } -type SubscribeSlotUpdateRequest struct { +type GetSlotResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` } -func (x *SubscribeSlotUpdateRequest) Reset() { - *x = SubscribeSlotUpdateRequest{} +func (x *GetSlotResponse) Reset() { + *x = GetSlotResponse{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[14] + mi := &file_geyser_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribeSlotUpdateRequest) String() string { +func (x *GetSlotResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribeSlotUpdateRequest) ProtoMessage() {} +func (*GetSlotResponse) ProtoMessage() {} -func (x *SubscribeSlotUpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[14] +func (x *GetSlotResponse) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1028,36 +2504,41 @@ func (x *SubscribeSlotUpdateRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SubscribeSlotUpdateRequest.ProtoReflect.Descriptor instead. -func (*SubscribeSlotUpdateRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{14} +// Deprecated: Use GetSlotResponse.ProtoReflect.Descriptor instead. +func (*GetSlotResponse) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{31} +} + +func (x *GetSlotResponse) GetSlot() uint64 { + if x != nil { + return x.Slot + } + return 0 } -type SubscribeAccountUpdatesRequest struct { +type GetVersionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Accounts [][]byte `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` } -func (x *SubscribeAccountUpdatesRequest) Reset() { - *x = SubscribeAccountUpdatesRequest{} +func (x *GetVersionRequest) Reset() { + *x = GetVersionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[15] + mi := &file_geyser_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribeAccountUpdatesRequest) String() string { +func (x *GetVersionRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribeAccountUpdatesRequest) ProtoMessage() {} +func (*GetVersionRequest) ProtoMessage() {} -func (x *SubscribeAccountUpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[15] +func (x *GetVersionRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1068,43 +2549,36 @@ func (x *SubscribeAccountUpdatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SubscribeAccountUpdatesRequest.ProtoReflect.Descriptor instead. -func (*SubscribeAccountUpdatesRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{15} -} - -func (x *SubscribeAccountUpdatesRequest) GetAccounts() [][]byte { - if x != nil { - return x.Accounts - } - return nil +// Deprecated: Use GetVersionRequest.ProtoReflect.Descriptor instead. +func (*GetVersionRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{32} } -type SubscribeProgramsUpdatesRequest struct { +type GetVersionResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Programs [][]byte `protobuf:"bytes,1,rep,name=programs,proto3" json:"programs,omitempty"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` } -func (x *SubscribeProgramsUpdatesRequest) Reset() { - *x = SubscribeProgramsUpdatesRequest{} +func (x *GetVersionResponse) Reset() { + *x = GetVersionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[16] + mi := &file_geyser_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribeProgramsUpdatesRequest) String() string { +func (x *GetVersionResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribeProgramsUpdatesRequest) ProtoMessage() {} +func (*GetVersionResponse) ProtoMessage() {} -func (x *SubscribeProgramsUpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[16] +func (x *GetVersionResponse) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1115,44 +2589,44 @@ func (x *SubscribeProgramsUpdatesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SubscribeProgramsUpdatesRequest.ProtoReflect.Descriptor instead. -func (*SubscribeProgramsUpdatesRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{16} +// Deprecated: Use GetVersionResponse.ProtoReflect.Descriptor instead. +func (*GetVersionResponse) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{33} } -func (x *SubscribeProgramsUpdatesRequest) GetPrograms() [][]byte { +func (x *GetVersionResponse) GetVersion() string { if x != nil { - return x.Programs + return x.Version } - return nil + return "" } -type SubscribePartialAccountUpdatesRequest struct { +type IsBlockhashValidRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // If true, will not stream vote account updates. - SkipVoteAccounts bool `protobuf:"varint,1,opt,name=skip_vote_accounts,json=skipVoteAccounts,proto3" json:"skip_vote_accounts,omitempty"` + Blockhash string `protobuf:"bytes,1,opt,name=blockhash,proto3" json:"blockhash,omitempty"` + Commitment *CommitmentLevel `protobuf:"varint,2,opt,name=commitment,proto3,enum=geyser.CommitmentLevel,oneof" json:"commitment,omitempty"` } -func (x *SubscribePartialAccountUpdatesRequest) Reset() { - *x = SubscribePartialAccountUpdatesRequest{} +func (x *IsBlockhashValidRequest) Reset() { + *x = IsBlockhashValidRequest{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[17] + mi := &file_geyser_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *SubscribePartialAccountUpdatesRequest) String() string { +func (x *IsBlockhashValidRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SubscribePartialAccountUpdatesRequest) ProtoMessage() {} +func (*IsBlockhashValidRequest) ProtoMessage() {} -func (x *SubscribePartialAccountUpdatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[17] +func (x *IsBlockhashValidRequest) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1163,43 +2637,51 @@ func (x *SubscribePartialAccountUpdatesRequest) ProtoReflect() protoreflect.Mess return mi.MessageOf(x) } -// Deprecated: Use SubscribePartialAccountUpdatesRequest.ProtoReflect.Descriptor instead. -func (*SubscribePartialAccountUpdatesRequest) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{17} +// Deprecated: Use IsBlockhashValidRequest.ProtoReflect.Descriptor instead. +func (*IsBlockhashValidRequest) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{34} } -func (x *SubscribePartialAccountUpdatesRequest) GetSkipVoteAccounts() bool { +func (x *IsBlockhashValidRequest) GetBlockhash() string { if x != nil { - return x.SkipVoteAccounts + return x.Blockhash } - return false + return "" +} + +func (x *IsBlockhashValidRequest) GetCommitment() CommitmentLevel { + if x != nil && x.Commitment != nil { + return *x.Commitment + } + return CommitmentLevel_PROCESSED } -type GetHeartbeatIntervalResponse struct { +type IsBlockhashValidResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - HeartbeatIntervalMs uint64 `protobuf:"varint,1,opt,name=heartbeat_interval_ms,json=heartbeatIntervalMs,proto3" json:"heartbeat_interval_ms,omitempty"` + Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` + Valid bool `protobuf:"varint,2,opt,name=valid,proto3" json:"valid,omitempty"` } -func (x *GetHeartbeatIntervalResponse) Reset() { - *x = GetHeartbeatIntervalResponse{} +func (x *IsBlockhashValidResponse) Reset() { + *x = IsBlockhashValidResponse{} if protoimpl.UnsafeEnabled { - mi := &file_geyser_proto_msgTypes[18] + mi := &file_geyser_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetHeartbeatIntervalResponse) String() string { +func (x *IsBlockhashValidResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetHeartbeatIntervalResponse) ProtoMessage() {} +func (*IsBlockhashValidResponse) ProtoMessage() {} -func (x *GetHeartbeatIntervalResponse) ProtoReflect() protoreflect.Message { - mi := &file_geyser_proto_msgTypes[18] +func (x *IsBlockhashValidResponse) ProtoReflect() protoreflect.Message { + mi := &file_geyser_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1210,229 +2692,554 @@ func (x *GetHeartbeatIntervalResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetHeartbeatIntervalResponse.ProtoReflect.Descriptor instead. -func (*GetHeartbeatIntervalResponse) Descriptor() ([]byte, []int) { - return file_geyser_proto_rawDescGZIP(), []int{18} +// Deprecated: Use IsBlockhashValidResponse.ProtoReflect.Descriptor instead. +func (*IsBlockhashValidResponse) Descriptor() ([]byte, []int) { + return file_geyser_proto_rawDescGZIP(), []int{35} } -func (x *GetHeartbeatIntervalResponse) GetHeartbeatIntervalMs() uint64 { +func (x *IsBlockhashValidResponse) GetSlot() uint64 { if x != nil { - return x.HeartbeatIntervalMs + return x.Slot } return 0 } +func (x *IsBlockhashValidResponse) GetValid() bool { + if x != nil { + return x.Valid + } + return false +} + var File_geyser_proto protoreflect.FileDescriptor var file_geyser_proto_rawDesc = []byte{ - 0x0a, 0x0c, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, - 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x1a, 0x1f, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x01, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, - 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, - 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, - 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x12, - 0x10, 0x0a, 0x03, 0x73, 0x65, 0x71, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, - 0x71, 0x12, 0x26, 0x0a, 0x0c, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x78, 0x53, 0x69, 0x67, - 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x22, 0xd8, 0x02, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, - 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, - 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x14, 0x0a, - 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x6f, 0x77, - 0x6e, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, - 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x65, 0x71, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x65, 0x71, 0x12, 0x1d, 0x0a, - 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, 0x75, 0x70, 0x12, 0x26, 0x0a, 0x0c, - 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x78, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x0f, 0x0a, - 0x0d, 0x5f, 0x74, 0x78, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x8f, - 0x01, 0x0a, 0x0a, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, - 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x53, 0x6c, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, - 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, - 0x22, 0x7f, 0x0a, 0x15, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x53, - 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x02, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x02, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x0b, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x6f, 0x6c, - 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x18, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, - 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, - 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, - 0x65, 0x72, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, - 0x24, 0x0a, 0x22, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x1e, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x19, 0x4d, 0x61, 0x79, 0x62, 0x65, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x5b, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, - 0x73, 0x65, 0x72, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x14, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x2a, 0x0a, 0x02, 0x68, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, - 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x48, 0x65, 0x61, - 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x48, 0x00, 0x52, 0x02, 0x68, 0x62, 0x42, 0x05, 0x0a, 0x03, - 0x6d, 0x73, 0x67, 0x22, 0x0b, 0x0a, 0x09, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, - 0x22, 0x0e, 0x0a, 0x0c, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xf4, 0x01, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, - 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, + 0x0a, 0x0c, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, + 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2d, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xed, 0x0b, + 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x73, 0x6c, 0x6f, 0x74, + 0x73, 0x12, 0x4e, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x61, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x3c, 0x0a, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x73, 0x12, 0x49, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x6d, 0x65, 0x74, + 0x61, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x39, 0x0a, + 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, + 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, + 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x13, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52, 0x11, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6c, 0x69, 0x63, + 0x65, 0x12, 0x35, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x01, 0x52, + 0x04, 0x70, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, + 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x48, 0x02, 0x52, 0x08, 0x66, + 0x72, 0x6f, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x88, 0x01, 0x01, 0x1a, 0x63, 0x0a, 0x0d, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, + 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x5d, 0x0a, 0x0a, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x6c, + 0x6f, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6b, + 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x71, 0x0a, 0x17, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5f, + 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x67, 0x0a, 0x0f, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5d, 0x0a, 0x0a, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x42, + 0x0c, 0x0a, 0x0a, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x22, 0xee, 0x01, + 0x0a, 0x1e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x12, 0x18, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, + 0x6e, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x12, 0x46, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, + 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x16, 0x6e, 0x6f, 0x6e, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x5f, 0x74, 0x78, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x6f, 0x6e, 0x65, + 0x6d, 0x70, 0x74, 0x79, 0x54, 0x78, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x5f, 0x74, 0x78, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0xa2, + 0x02, 0x0a, 0x24, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x06, 0x6d, 0x65, 0x6d, 0x63, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x63, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x06, 0x6d, + 0x65, 0x6d, 0x63, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, 0x69, 0x7a, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x73, + 0x69, 0x7a, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x11, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x08, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x48, 0x00, 0x52, + 0x08, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x2a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4d, 0x65, 0x6d, 0x63, + 0x6d, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x18, 0x0a, 0x06, 0x62, 0x61, 0x73, 0x65, 0x35, 0x38, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x62, 0x61, 0x73, 0x65, 0x35, 0x38, 0x12, 0x18, 0x0a, 0x06, + 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, + 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7d, + 0x0a, 0x2c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x4c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x10, + 0x0a, 0x02, 0x65, 0x71, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, 0x65, 0x71, + 0x12, 0x10, 0x0a, 0x02, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x02, + 0x6e, 0x65, 0x12, 0x10, 0x0a, 0x02, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, + 0x52, 0x02, 0x6c, 0x74, 0x12, 0x10, 0x0a, 0x02, 0x67, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, + 0x48, 0x00, 0x52, 0x02, 0x67, 0x74, 0x42, 0x05, 0x0a, 0x03, 0x63, 0x6d, 0x70, 0x22, 0xb5, 0x01, + 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x12, 0x35, 0x0a, + 0x14, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x12, 0x66, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x6c, 0x6f, + 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x01, 0x52, 0x10, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x5f, 0x62, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x42, + 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, 0x9c, 0x02, 0x0a, 0x22, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04, + 0x76, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x76, 0x6f, + 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x88, + 0x01, 0x01, 0x12, 0x21, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, + 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x27, + 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, + 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, + 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x22, 0x9f, 0x02, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x36, + 0x0a, 0x14, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x13, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x01, 0x52, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x02, 0x52, 0x0e, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x88, 0x01, 0x01, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x13, 0x0a, + 0x11, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x22, 0x0a, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x22, 0x1d, 0x0a, 0x1b, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x53, 0x0a, 0x21, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x26, + 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9d, 0x05, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, + 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x31, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x6c, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, + 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x59, 0x0a, 0x12, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x48, 0x00, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x31, 0x0a, 0x04, + 0x70, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x65, 0x79, + 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, + 0x31, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, + 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x89, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x3c, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x75, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x75, 0x70, 0x22, 0x9a, 0x02, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x06, 0x70, 0x75, 0x62, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x61, 0x6d, + 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x65, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x70, 0x6f, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, + 0x0a, 0x0d, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x77, 0x72, 0x69, 0x74, 0x65, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0d, 0x74, 0x78, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x78, + 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, + 0x0e, 0x5f, 0x74, 0x78, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, + 0xb0, 0x01, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1b, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, + 0x72, 0x2e, 0x53, 0x6c, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0a, 0x64, 0x65, 0x61, 0x64, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x64, 0x65, 0x61, 0x64, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x61, 0x64, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x7a, 0x0a, 0x1a, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x74, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, + 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x22, 0x85, + 0x02, 0x0a, 0x1e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x06, 0x69, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, + 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xc6, 0x01, 0x0a, 0x20, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, + 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x69, 0x73, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x69, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x41, 0x0a, 0x03, + 0x65, 0x72, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x61, + 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, + 0xcd, 0x05, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x40, 0x0a, 0x07, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, + 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x73, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x0a, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x0b, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x68, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x1a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, + 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, + 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x32, + 0x0a, 0x15, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x0b, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, + 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, + 0xd9, 0x03, 0x0a, 0x18, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, + 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x40, + 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x26, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x4b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x26, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x16, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x02, 0x74, 0x73, 0x12, 0x3d, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, - 0x79, 0x73, 0x65, 0x72, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, - 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 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, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, 0x76, 0x6f, 0x74, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x15, - 0x0a, 0x06, 0x74, 0x78, 0x5f, 0x69, 0x64, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x74, 0x78, 0x49, 0x64, 0x78, 0x12, 0x43, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x02, 0x74, 0x78, 0x22, 0x8e, 0x01, 0x0a, 0x1c, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x02, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x02, 0x74, 0x73, 0x12, 0x42, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, - 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0b, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x1c, 0x0a, 0x1a, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x3c, 0x0a, 0x1e, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x3d, 0x0a, 0x1f, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x55, 0x0a, 0x25, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2c, 0x0a, 0x12, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x73, 0x6b, 0x69, - 0x70, 0x56, 0x6f, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x52, 0x0a, - 0x1c, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, - 0x15, 0x68, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x13, 0x68, 0x65, - 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, - 0x73, 0x2a, 0x3c, 0x0a, 0x10, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x45, - 0x44, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x4f, 0x4f, 0x54, 0x45, 0x44, 0x10, 0x02, 0x32, - 0xc4, 0x06, 0x0a, 0x06, 0x47, 0x65, 0x79, 0x73, 0x65, 0x72, 0x12, 0x62, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x12, 0x1b, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, - 0x65, 0x72, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, - 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x72, 0x74, 0x62, 0x65, 0x61, 0x74, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, - 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x73, 0x6f, 0x6c, 0x61, - 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, - 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x76, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x12, 0x2e, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, - 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, - 0x6d, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x84, 0x01, - 0x0a, 0x1e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x12, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, - 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, - 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, - 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x4d, 0x61, 0x79, 0x62, 0x65, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x61, 0x6c, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x22, 0x00, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, - 0x65, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x29, 0x2e, 0x73, - 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, - 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x65, 0x64, 0x53, 0x6c, 0x6f, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x81, 0x01, 0x0a, 0x1b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x12, 0x31, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, - 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, - 0x79, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x6f, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x12, 0x2b, - 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x22, 0x00, 0x30, 0x01, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x67, 0x65, 0x79, 0x73, - 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x63, 0x6b, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x29, 0x0a, + 0x10, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, + 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3c, 0x0a, 0x1a, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x65, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xef, 0x01, 0x0a, 0x14, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, + 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x3c, 0x0a, 0x1a, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x18, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x64, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x3c, 0x0a, 0x1a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x18, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x15, 0x0a, + 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x69, 0x6e, 0x67, 0x22, 0x25, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, + 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0x23, 0x0a, 0x0b, 0x50, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x24, 0x0a, 0x0c, 0x50, 0x6f, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, + 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, + 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, + 0x22, 0x85, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, + 0x6c, 0x6f, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, + 0x68, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x64, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, + 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x3b, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x5d, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x25, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 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, 0x22, 0x84, 0x01, 0x0a, 0x17, 0x49, 0x73, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, + 0x12, 0x3c, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, + 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0d, + 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x44, 0x0a, + 0x18, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x14, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x2a, 0x3e, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, + 0x74, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, + 0x53, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, + 0x45, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, + 0x44, 0x10, 0x02, 0x2a, 0xa1, 0x01, 0x0a, 0x0a, 0x53, 0x6c, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x50, 0x52, 0x4f, 0x43, 0x45, + 0x53, 0x53, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x43, + 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x45, 0x44, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x4c, + 0x4f, 0x54, 0x5f, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1d, + 0x0a, 0x19, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x53, 0x48, 0x52, + 0x45, 0x44, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x10, 0x03, 0x12, 0x12, 0x0a, + 0x0e, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, + 0x04, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x4c, 0x4f, 0x54, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x44, 0x5f, 0x42, 0x41, 0x4e, 0x4b, 0x10, 0x05, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x4c, 0x4f, 0x54, + 0x5f, 0x44, 0x45, 0x41, 0x44, 0x10, 0x06, 0x32, 0x93, 0x04, 0x0a, 0x06, 0x47, 0x65, 0x79, 0x73, + 0x65, 0x72, 0x12, 0x44, 0x0a, 0x09, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, + 0x18, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x65, 0x79, 0x73, + 0x65, 0x72, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x12, 0x33, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, + 0x12, 0x13, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x50, + 0x6f, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5d, 0x0a, + 0x12, 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, + 0x61, 0x73, 0x68, 0x12, 0x21, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, + 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, + 0x47, 0x65, 0x74, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, + 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0e, + 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x1d, + 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x3c, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x65, 0x79, + 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x6c, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x57, 0x0a, + 0x10, 0x49, 0x73, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x56, 0x61, 0x6c, 0x69, + 0x64, 0x12, 0x1f, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x73, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x49, 0x73, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x45, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, + 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x0a, 0x5a, + 0x08, 0x2e, 0x3b, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x50, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -1447,67 +3254,131 @@ func file_geyser_proto_rawDescGZIP() []byte { return file_geyser_proto_rawDescData } -var file_geyser_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_geyser_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_geyser_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_geyser_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_geyser_proto_goTypes = []interface{}{ - (SlotUpdateStatus)(0), // 0: solana.geyser.SlotUpdateStatus - (*PartialAccountUpdate)(nil), // 1: solana.geyser.PartialAccountUpdate - (*AccountUpdate)(nil), // 2: solana.geyser.AccountUpdate - (*SlotUpdate)(nil), // 3: solana.geyser.SlotUpdate - (*TimestampedSlotUpdate)(nil), // 4: solana.geyser.TimestampedSlotUpdate - (*TimestampedAccountUpdate)(nil), // 5: solana.geyser.TimestampedAccountUpdate - (*SubscribeTransactionUpdatesRequest)(nil), // 6: solana.geyser.SubscribeTransactionUpdatesRequest - (*SubscribeBlockUpdatesRequest)(nil), // 7: solana.geyser.SubscribeBlockUpdatesRequest - (*MaybePartialAccountUpdate)(nil), // 8: solana.geyser.MaybePartialAccountUpdate - (*Heartbeat)(nil), // 9: solana.geyser.Heartbeat - (*EmptyRequest)(nil), // 10: solana.geyser.EmptyRequest - (*BlockUpdate)(nil), // 11: solana.geyser.BlockUpdate - (*TimestampedBlockUpdate)(nil), // 12: solana.geyser.TimestampedBlockUpdate - (*TransactionUpdate)(nil), // 13: solana.geyser.TransactionUpdate - (*TimestampedTransactionUpdate)(nil), // 14: solana.geyser.TimestampedTransactionUpdate - (*SubscribeSlotUpdateRequest)(nil), // 15: solana.geyser.SubscribeSlotUpdateRequest - (*SubscribeAccountUpdatesRequest)(nil), // 16: solana.geyser.SubscribeAccountUpdatesRequest - (*SubscribeProgramsUpdatesRequest)(nil), // 17: solana.geyser.SubscribeProgramsUpdatesRequest - (*SubscribePartialAccountUpdatesRequest)(nil), // 18: solana.geyser.SubscribePartialAccountUpdatesRequest - (*GetHeartbeatIntervalResponse)(nil), // 19: solana.geyser.GetHeartbeatIntervalResponse - (*timestamp.Timestamp)(nil), // 20: google.protobuf.Timestamp - (*Reward)(nil), // 21: solana.storage.ConfirmedBlock.Reward - (*ConfirmedTransaction)(nil), // 22: solana.storage.ConfirmedBlock.ConfirmedTransaction + (CommitmentLevel)(0), // 0: geyser.CommitmentLevel + (SlotStatus)(0), // 1: geyser.SlotStatus + (*SubscribeRequest)(nil), // 2: geyser.SubscribeRequest + (*SubscribeRequestFilterAccounts)(nil), // 3: geyser.SubscribeRequestFilterAccounts + (*SubscribeRequestFilterAccountsFilter)(nil), // 4: geyser.SubscribeRequestFilterAccountsFilter + (*SubscribeRequestFilterAccountsFilterMemcmp)(nil), // 5: geyser.SubscribeRequestFilterAccountsFilterMemcmp + (*SubscribeRequestFilterAccountsFilterLamports)(nil), // 6: geyser.SubscribeRequestFilterAccountsFilterLamports + (*SubscribeRequestFilterSlots)(nil), // 7: geyser.SubscribeRequestFilterSlots + (*SubscribeRequestFilterTransactions)(nil), // 8: geyser.SubscribeRequestFilterTransactions + (*SubscribeRequestFilterBlocks)(nil), // 9: geyser.SubscribeRequestFilterBlocks + (*SubscribeRequestFilterBlocksMeta)(nil), // 10: geyser.SubscribeRequestFilterBlocksMeta + (*SubscribeRequestFilterEntry)(nil), // 11: geyser.SubscribeRequestFilterEntry + (*SubscribeRequestAccountsDataSlice)(nil), // 12: geyser.SubscribeRequestAccountsDataSlice + (*SubscribeRequestPing)(nil), // 13: geyser.SubscribeRequestPing + (*SubscribeUpdate)(nil), // 14: geyser.SubscribeUpdate + (*SubscribeUpdateAccount)(nil), // 15: geyser.SubscribeUpdateAccount + (*SubscribeUpdateAccountInfo)(nil), // 16: geyser.SubscribeUpdateAccountInfo + (*SubscribeUpdateSlot)(nil), // 17: geyser.SubscribeUpdateSlot + (*SubscribeUpdateTransaction)(nil), // 18: geyser.SubscribeUpdateTransaction + (*SubscribeUpdateTransactionInfo)(nil), // 19: geyser.SubscribeUpdateTransactionInfo + (*SubscribeUpdateTransactionStatus)(nil), // 20: geyser.SubscribeUpdateTransactionStatus + (*SubscribeUpdateBlock)(nil), // 21: geyser.SubscribeUpdateBlock + (*SubscribeUpdateBlockMeta)(nil), // 22: geyser.SubscribeUpdateBlockMeta + (*SubscribeUpdateEntry)(nil), // 23: geyser.SubscribeUpdateEntry + (*SubscribeUpdatePing)(nil), // 24: geyser.SubscribeUpdatePing + (*SubscribeUpdatePong)(nil), // 25: geyser.SubscribeUpdatePong + (*PingRequest)(nil), // 26: geyser.PingRequest + (*PongResponse)(nil), // 27: geyser.PongResponse + (*GetLatestBlockhashRequest)(nil), // 28: geyser.GetLatestBlockhashRequest + (*GetLatestBlockhashResponse)(nil), // 29: geyser.GetLatestBlockhashResponse + (*GetBlockHeightRequest)(nil), // 30: geyser.GetBlockHeightRequest + (*GetBlockHeightResponse)(nil), // 31: geyser.GetBlockHeightResponse + (*GetSlotRequest)(nil), // 32: geyser.GetSlotRequest + (*GetSlotResponse)(nil), // 33: geyser.GetSlotResponse + (*GetVersionRequest)(nil), // 34: geyser.GetVersionRequest + (*GetVersionResponse)(nil), // 35: geyser.GetVersionResponse + (*IsBlockhashValidRequest)(nil), // 36: geyser.IsBlockhashValidRequest + (*IsBlockhashValidResponse)(nil), // 37: geyser.IsBlockhashValidResponse + nil, // 38: geyser.SubscribeRequest.AccountsEntry + nil, // 39: geyser.SubscribeRequest.SlotsEntry + nil, // 40: geyser.SubscribeRequest.TransactionsEntry + nil, // 41: geyser.SubscribeRequest.TransactionsStatusEntry + nil, // 42: geyser.SubscribeRequest.BlocksEntry + nil, // 43: geyser.SubscribeRequest.BlocksMetaEntry + nil, // 44: geyser.SubscribeRequest.EntryEntry + (*timestamppb.Timestamp)(nil), // 45: google.protobuf.Timestamp + (*Transaction)(nil), // 46: solana.storage.ConfirmedBlock.Transaction + (*TransactionStatusMeta)(nil), // 47: solana.storage.ConfirmedBlock.TransactionStatusMeta + (*TransactionError)(nil), // 48: solana.storage.ConfirmedBlock.TransactionError + (*Rewards)(nil), // 49: solana.storage.ConfirmedBlock.Rewards + (*UnixTimestamp)(nil), // 50: solana.storage.ConfirmedBlock.UnixTimestamp + (*BlockHeight)(nil), // 51: solana.storage.ConfirmedBlock.BlockHeight } var file_geyser_proto_depIdxs = []int32{ - 0, // 0: solana.geyser.SlotUpdate.status:type_name -> solana.geyser.SlotUpdateStatus - 20, // 1: solana.geyser.TimestampedSlotUpdate.ts:type_name -> google.protobuf.Timestamp - 3, // 2: solana.geyser.TimestampedSlotUpdate.slot_update:type_name -> solana.geyser.SlotUpdate - 20, // 3: solana.geyser.TimestampedAccountUpdate.ts:type_name -> google.protobuf.Timestamp - 2, // 4: solana.geyser.TimestampedAccountUpdate.account_update:type_name -> solana.geyser.AccountUpdate - 1, // 5: solana.geyser.MaybePartialAccountUpdate.partial_account_update:type_name -> solana.geyser.PartialAccountUpdate - 9, // 6: solana.geyser.MaybePartialAccountUpdate.hb:type_name -> solana.geyser.Heartbeat - 21, // 7: solana.geyser.BlockUpdate.rewards:type_name -> solana.storage.ConfirmedBlock.Reward - 20, // 8: solana.geyser.BlockUpdate.block_time:type_name -> google.protobuf.Timestamp - 20, // 9: solana.geyser.TimestampedBlockUpdate.ts:type_name -> google.protobuf.Timestamp - 11, // 10: solana.geyser.TimestampedBlockUpdate.block_update:type_name -> solana.geyser.BlockUpdate - 22, // 11: solana.geyser.TransactionUpdate.tx:type_name -> solana.storage.ConfirmedBlock.ConfirmedTransaction - 20, // 12: solana.geyser.TimestampedTransactionUpdate.ts:type_name -> google.protobuf.Timestamp - 13, // 13: solana.geyser.TimestampedTransactionUpdate.transaction:type_name -> solana.geyser.TransactionUpdate - 10, // 14: solana.geyser.Geyser.GetHeartbeatInterval:input_type -> solana.geyser.EmptyRequest - 16, // 15: solana.geyser.Geyser.SubscribeAccountUpdates:input_type -> solana.geyser.SubscribeAccountUpdatesRequest - 17, // 16: solana.geyser.Geyser.SubscribeProgramUpdates:input_type -> solana.geyser.SubscribeProgramsUpdatesRequest - 18, // 17: solana.geyser.Geyser.SubscribePartialAccountUpdates:input_type -> solana.geyser.SubscribePartialAccountUpdatesRequest - 15, // 18: solana.geyser.Geyser.SubscribeSlotUpdates:input_type -> solana.geyser.SubscribeSlotUpdateRequest - 6, // 19: solana.geyser.Geyser.SubscribeTransactionUpdates:input_type -> solana.geyser.SubscribeTransactionUpdatesRequest - 7, // 20: solana.geyser.Geyser.SubscribeBlockUpdates:input_type -> solana.geyser.SubscribeBlockUpdatesRequest - 19, // 21: solana.geyser.Geyser.GetHeartbeatInterval:output_type -> solana.geyser.GetHeartbeatIntervalResponse - 5, // 22: solana.geyser.Geyser.SubscribeAccountUpdates:output_type -> solana.geyser.TimestampedAccountUpdate - 5, // 23: solana.geyser.Geyser.SubscribeProgramUpdates:output_type -> solana.geyser.TimestampedAccountUpdate - 8, // 24: solana.geyser.Geyser.SubscribePartialAccountUpdates:output_type -> solana.geyser.MaybePartialAccountUpdate - 4, // 25: solana.geyser.Geyser.SubscribeSlotUpdates:output_type -> solana.geyser.TimestampedSlotUpdate - 14, // 26: solana.geyser.Geyser.SubscribeTransactionUpdates:output_type -> solana.geyser.TimestampedTransactionUpdate - 12, // 27: solana.geyser.Geyser.SubscribeBlockUpdates:output_type -> solana.geyser.TimestampedBlockUpdate - 21, // [21:28] is the sub-list for method output_type - 14, // [14:21] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 38, // 0: geyser.SubscribeRequest.accounts:type_name -> geyser.SubscribeRequest.AccountsEntry + 39, // 1: geyser.SubscribeRequest.slots:type_name -> geyser.SubscribeRequest.SlotsEntry + 40, // 2: geyser.SubscribeRequest.transactions:type_name -> geyser.SubscribeRequest.TransactionsEntry + 41, // 3: geyser.SubscribeRequest.transactions_status:type_name -> geyser.SubscribeRequest.TransactionsStatusEntry + 42, // 4: geyser.SubscribeRequest.blocks:type_name -> geyser.SubscribeRequest.BlocksEntry + 43, // 5: geyser.SubscribeRequest.blocks_meta:type_name -> geyser.SubscribeRequest.BlocksMetaEntry + 44, // 6: geyser.SubscribeRequest.entry:type_name -> geyser.SubscribeRequest.EntryEntry + 0, // 7: geyser.SubscribeRequest.commitment:type_name -> geyser.CommitmentLevel + 12, // 8: geyser.SubscribeRequest.accounts_data_slice:type_name -> geyser.SubscribeRequestAccountsDataSlice + 13, // 9: geyser.SubscribeRequest.ping:type_name -> geyser.SubscribeRequestPing + 4, // 10: geyser.SubscribeRequestFilterAccounts.filters:type_name -> geyser.SubscribeRequestFilterAccountsFilter + 5, // 11: geyser.SubscribeRequestFilterAccountsFilter.memcmp:type_name -> geyser.SubscribeRequestFilterAccountsFilterMemcmp + 6, // 12: geyser.SubscribeRequestFilterAccountsFilter.lamports:type_name -> geyser.SubscribeRequestFilterAccountsFilterLamports + 15, // 13: geyser.SubscribeUpdate.account:type_name -> geyser.SubscribeUpdateAccount + 17, // 14: geyser.SubscribeUpdate.slot:type_name -> geyser.SubscribeUpdateSlot + 18, // 15: geyser.SubscribeUpdate.transaction:type_name -> geyser.SubscribeUpdateTransaction + 20, // 16: geyser.SubscribeUpdate.transaction_status:type_name -> geyser.SubscribeUpdateTransactionStatus + 21, // 17: geyser.SubscribeUpdate.block:type_name -> geyser.SubscribeUpdateBlock + 24, // 18: geyser.SubscribeUpdate.ping:type_name -> geyser.SubscribeUpdatePing + 25, // 19: geyser.SubscribeUpdate.pong:type_name -> geyser.SubscribeUpdatePong + 22, // 20: geyser.SubscribeUpdate.block_meta:type_name -> geyser.SubscribeUpdateBlockMeta + 23, // 21: geyser.SubscribeUpdate.entry:type_name -> geyser.SubscribeUpdateEntry + 45, // 22: geyser.SubscribeUpdate.created_at:type_name -> google.protobuf.Timestamp + 16, // 23: geyser.SubscribeUpdateAccount.account:type_name -> geyser.SubscribeUpdateAccountInfo + 1, // 24: geyser.SubscribeUpdateSlot.status:type_name -> geyser.SlotStatus + 19, // 25: geyser.SubscribeUpdateTransaction.transaction:type_name -> geyser.SubscribeUpdateTransactionInfo + 46, // 26: geyser.SubscribeUpdateTransactionInfo.transaction:type_name -> solana.storage.ConfirmedBlock.Transaction + 47, // 27: geyser.SubscribeUpdateTransactionInfo.meta:type_name -> solana.storage.ConfirmedBlock.TransactionStatusMeta + 48, // 28: geyser.SubscribeUpdateTransactionStatus.err:type_name -> solana.storage.ConfirmedBlock.TransactionError + 49, // 29: geyser.SubscribeUpdateBlock.rewards:type_name -> solana.storage.ConfirmedBlock.Rewards + 50, // 30: geyser.SubscribeUpdateBlock.block_time:type_name -> solana.storage.ConfirmedBlock.UnixTimestamp + 51, // 31: geyser.SubscribeUpdateBlock.block_height:type_name -> solana.storage.ConfirmedBlock.BlockHeight + 19, // 32: geyser.SubscribeUpdateBlock.transactions:type_name -> geyser.SubscribeUpdateTransactionInfo + 16, // 33: geyser.SubscribeUpdateBlock.accounts:type_name -> geyser.SubscribeUpdateAccountInfo + 23, // 34: geyser.SubscribeUpdateBlock.entries:type_name -> geyser.SubscribeUpdateEntry + 49, // 35: geyser.SubscribeUpdateBlockMeta.rewards:type_name -> solana.storage.ConfirmedBlock.Rewards + 50, // 36: geyser.SubscribeUpdateBlockMeta.block_time:type_name -> solana.storage.ConfirmedBlock.UnixTimestamp + 51, // 37: geyser.SubscribeUpdateBlockMeta.block_height:type_name -> solana.storage.ConfirmedBlock.BlockHeight + 0, // 38: geyser.GetLatestBlockhashRequest.commitment:type_name -> geyser.CommitmentLevel + 0, // 39: geyser.GetBlockHeightRequest.commitment:type_name -> geyser.CommitmentLevel + 0, // 40: geyser.GetSlotRequest.commitment:type_name -> geyser.CommitmentLevel + 0, // 41: geyser.IsBlockhashValidRequest.commitment:type_name -> geyser.CommitmentLevel + 3, // 42: geyser.SubscribeRequest.AccountsEntry.value:type_name -> geyser.SubscribeRequestFilterAccounts + 7, // 43: geyser.SubscribeRequest.SlotsEntry.value:type_name -> geyser.SubscribeRequestFilterSlots + 8, // 44: geyser.SubscribeRequest.TransactionsEntry.value:type_name -> geyser.SubscribeRequestFilterTransactions + 8, // 45: geyser.SubscribeRequest.TransactionsStatusEntry.value:type_name -> geyser.SubscribeRequestFilterTransactions + 9, // 46: geyser.SubscribeRequest.BlocksEntry.value:type_name -> geyser.SubscribeRequestFilterBlocks + 10, // 47: geyser.SubscribeRequest.BlocksMetaEntry.value:type_name -> geyser.SubscribeRequestFilterBlocksMeta + 11, // 48: geyser.SubscribeRequest.EntryEntry.value:type_name -> geyser.SubscribeRequestFilterEntry + 2, // 49: geyser.Geyser.Subscribe:input_type -> geyser.SubscribeRequest + 26, // 50: geyser.Geyser.Ping:input_type -> geyser.PingRequest + 28, // 51: geyser.Geyser.GetLatestBlockhash:input_type -> geyser.GetLatestBlockhashRequest + 30, // 52: geyser.Geyser.GetBlockHeight:input_type -> geyser.GetBlockHeightRequest + 32, // 53: geyser.Geyser.GetSlot:input_type -> geyser.GetSlotRequest + 36, // 54: geyser.Geyser.IsBlockhashValid:input_type -> geyser.IsBlockhashValidRequest + 34, // 55: geyser.Geyser.GetVersion:input_type -> geyser.GetVersionRequest + 14, // 56: geyser.Geyser.Subscribe:output_type -> geyser.SubscribeUpdate + 27, // 57: geyser.Geyser.Ping:output_type -> geyser.PongResponse + 29, // 58: geyser.Geyser.GetLatestBlockhash:output_type -> geyser.GetLatestBlockhashResponse + 31, // 59: geyser.Geyser.GetBlockHeight:output_type -> geyser.GetBlockHeightResponse + 33, // 60: geyser.Geyser.GetSlot:output_type -> geyser.GetSlotResponse + 37, // 61: geyser.Geyser.IsBlockhashValid:output_type -> geyser.IsBlockhashValidResponse + 35, // 62: geyser.Geyser.GetVersion:output_type -> geyser.GetVersionResponse + 56, // [56:63] is the sub-list for method output_type + 49, // [49:56] is the sub-list for method input_type + 49, // [49:49] is the sub-list for extension type_name + 49, // [49:49] is the sub-list for extension extendee + 0, // [0:49] is the sub-list for field type_name } func init() { file_geyser_proto_init() } @@ -1515,10 +3386,10 @@ func file_geyser_proto_init() { if File_geyser_proto != nil { return } - file_confirmed_block_proto_init() + file_solana_storage_proto_init() if !protoimpl.UnsafeEnabled { file_geyser_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PartialAccountUpdate); i { + switch v := v.(*SubscribeRequest); i { case 0: return &v.state case 1: @@ -1530,7 +3401,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AccountUpdate); i { + switch v := v.(*SubscribeRequestFilterAccounts); i { case 0: return &v.state case 1: @@ -1542,7 +3413,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SlotUpdate); i { + switch v := v.(*SubscribeRequestFilterAccountsFilter); i { case 0: return &v.state case 1: @@ -1554,7 +3425,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimestampedSlotUpdate); i { + switch v := v.(*SubscribeRequestFilterAccountsFilterMemcmp); i { case 0: return &v.state case 1: @@ -1566,7 +3437,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimestampedAccountUpdate); i { + switch v := v.(*SubscribeRequestFilterAccountsFilterLamports); i { case 0: return &v.state case 1: @@ -1578,7 +3449,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeTransactionUpdatesRequest); i { + switch v := v.(*SubscribeRequestFilterSlots); i { case 0: return &v.state case 1: @@ -1590,7 +3461,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeBlockUpdatesRequest); i { + switch v := v.(*SubscribeRequestFilterTransactions); i { case 0: return &v.state case 1: @@ -1602,7 +3473,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MaybePartialAccountUpdate); i { + switch v := v.(*SubscribeRequestFilterBlocks); i { case 0: return &v.state case 1: @@ -1614,7 +3485,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Heartbeat); i { + switch v := v.(*SubscribeRequestFilterBlocksMeta); i { case 0: return &v.state case 1: @@ -1626,7 +3497,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EmptyRequest); i { + switch v := v.(*SubscribeRequestFilterEntry); i { case 0: return &v.state case 1: @@ -1638,7 +3509,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockUpdate); i { + switch v := v.(*SubscribeRequestAccountsDataSlice); i { case 0: return &v.state case 1: @@ -1650,7 +3521,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimestampedBlockUpdate); i { + switch v := v.(*SubscribeRequestPing); i { case 0: return &v.state case 1: @@ -1662,7 +3533,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransactionUpdate); i { + switch v := v.(*SubscribeUpdate); i { case 0: return &v.state case 1: @@ -1674,7 +3545,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TimestampedTransactionUpdate); i { + switch v := v.(*SubscribeUpdateAccount); i { case 0: return &v.state case 1: @@ -1686,7 +3557,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeSlotUpdateRequest); i { + switch v := v.(*SubscribeUpdateAccountInfo); i { case 0: return &v.state case 1: @@ -1698,7 +3569,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeAccountUpdatesRequest); i { + switch v := v.(*SubscribeUpdateSlot); i { case 0: return &v.state case 1: @@ -1710,7 +3581,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeProgramsUpdatesRequest); i { + switch v := v.(*SubscribeUpdateTransaction); i { case 0: return &v.state case 1: @@ -1722,7 +3593,7 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribePartialAccountUpdatesRequest); i { + switch v := v.(*SubscribeUpdateTransactionInfo); i { case 0: return &v.state case 1: @@ -1734,7 +3605,211 @@ func file_geyser_proto_init() { } } file_geyser_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetHeartbeatIntervalResponse); i { + switch v := v.(*SubscribeUpdateTransactionStatus); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeUpdateBlock); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeUpdateBlockMeta); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeUpdateEntry); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeUpdatePing); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubscribeUpdatePong); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PingRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PongResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestBlockhashRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLatestBlockhashResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBlockHeightRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetBlockHeightResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSlotRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSlotResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVersionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetVersionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsBlockhashValidRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_geyser_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*IsBlockhashValidResponse); i { case 0: return &v.state case 1: @@ -1748,19 +3823,50 @@ func file_geyser_proto_init() { } file_geyser_proto_msgTypes[0].OneofWrappers = []interface{}{} file_geyser_proto_msgTypes[1].OneofWrappers = []interface{}{} - file_geyser_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_geyser_proto_msgTypes[7].OneofWrappers = []interface{}{ - (*MaybePartialAccountUpdate_PartialAccountUpdate)(nil), - (*MaybePartialAccountUpdate_Hb)(nil), - } - file_geyser_proto_msgTypes[10].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[2].OneofWrappers = []interface{}{ + (*SubscribeRequestFilterAccountsFilter_Memcmp)(nil), + (*SubscribeRequestFilterAccountsFilter_Datasize)(nil), + (*SubscribeRequestFilterAccountsFilter_TokenAccountState)(nil), + (*SubscribeRequestFilterAccountsFilter_Lamports)(nil), + } + file_geyser_proto_msgTypes[3].OneofWrappers = []interface{}{ + (*SubscribeRequestFilterAccountsFilterMemcmp_Bytes)(nil), + (*SubscribeRequestFilterAccountsFilterMemcmp_Base58)(nil), + (*SubscribeRequestFilterAccountsFilterMemcmp_Base64)(nil), + } + file_geyser_proto_msgTypes[4].OneofWrappers = []interface{}{ + (*SubscribeRequestFilterAccountsFilterLamports_Eq)(nil), + (*SubscribeRequestFilterAccountsFilterLamports_Ne)(nil), + (*SubscribeRequestFilterAccountsFilterLamports_Lt)(nil), + (*SubscribeRequestFilterAccountsFilterLamports_Gt)(nil), + } + file_geyser_proto_msgTypes[5].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[7].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[12].OneofWrappers = []interface{}{ + (*SubscribeUpdate_Account)(nil), + (*SubscribeUpdate_Slot)(nil), + (*SubscribeUpdate_Transaction)(nil), + (*SubscribeUpdate_TransactionStatus)(nil), + (*SubscribeUpdate_Block)(nil), + (*SubscribeUpdate_Ping)(nil), + (*SubscribeUpdate_Pong)(nil), + (*SubscribeUpdate_BlockMeta)(nil), + (*SubscribeUpdate_Entry)(nil), + } + file_geyser_proto_msgTypes[14].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[15].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[26].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[28].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[30].OneofWrappers = []interface{}{} + file_geyser_proto_msgTypes[34].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_geyser_proto_rawDesc, - NumEnums: 1, - NumMessages: 19, + NumEnums: 2, + NumMessages: 43, NumExtensions: 0, NumServices: 1, }, diff --git a/generated/geyser/v1/geyser.pb.validate.go b/generated/geyser/v1/geyser.pb.validate.go deleted file mode 100644 index cb3dccd..0000000 --- a/generated/geyser/v1/geyser.pb.validate.go +++ /dev/null @@ -1,2450 +0,0 @@ -// Code generated by protoc-gen-validate. DO NOT EDIT. -// source: geyser.proto - -package geyser - -import ( - "bytes" - "errors" - "fmt" - "net" - "net/mail" - "net/url" - "regexp" - "sort" - "strings" - "time" - "unicode/utf8" - - "google.golang.org/protobuf/types/known/anypb" -) - -// ensure the imports are used -var ( - _ = bytes.MinRead - _ = errors.New("") - _ = fmt.Print - _ = utf8.UTFMax - _ = (*regexp.Regexp)(nil) - _ = (*strings.Reader)(nil) - _ = net.IPv4len - _ = time.Duration(0) - _ = (*url.URL)(nil) - _ = (*mail.Address)(nil) - _ = anypb.Any{} - _ = sort.Sort -) - -// Validate checks the field values on PartialAccountUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *PartialAccountUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on PartialAccountUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// PartialAccountUpdateMultiError, or nil if none found. -func (m *PartialAccountUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *PartialAccountUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Slot - - // no validation rules for Pubkey - - // no validation rules for Owner - - // no validation rules for IsStartup - - // no validation rules for Seq - - // no validation rules for ReplicaVersion - - if m.TxSignature != nil { - // no validation rules for TxSignature - } - - if len(errors) > 0 { - return PartialAccountUpdateMultiError(errors) - } - - return nil -} - -// PartialAccountUpdateMultiError is an error wrapping multiple validation -// errors returned by PartialAccountUpdate.ValidateAll() if the designated -// constraints aren't met. -type PartialAccountUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m PartialAccountUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m PartialAccountUpdateMultiError) AllErrors() []error { return m } - -// PartialAccountUpdateValidationError is the validation error returned by -// PartialAccountUpdate.Validate if the designated constraints aren't met. -type PartialAccountUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e PartialAccountUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e PartialAccountUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e PartialAccountUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e PartialAccountUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e PartialAccountUpdateValidationError) ErrorName() string { - return "PartialAccountUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e PartialAccountUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sPartialAccountUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = PartialAccountUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = PartialAccountUpdateValidationError{} - -// Validate checks the field values on AccountUpdate with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *AccountUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on AccountUpdate with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in AccountUpdateMultiError, or -// nil if none found. -func (m *AccountUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *AccountUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Slot - - // no validation rules for Pubkey - - // no validation rules for Lamports - - // no validation rules for Owner - - // no validation rules for IsExecutable - - // no validation rules for RentEpoch - - // no validation rules for Data - - // no validation rules for Seq - - // no validation rules for IsStartup - - // no validation rules for ReplicaVersion - - if m.TxSignature != nil { - // no validation rules for TxSignature - } - - if len(errors) > 0 { - return AccountUpdateMultiError(errors) - } - - return nil -} - -// AccountUpdateMultiError is an error wrapping multiple validation errors -// returned by AccountUpdate.ValidateAll() if the designated constraints -// aren't met. -type AccountUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m AccountUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m AccountUpdateMultiError) AllErrors() []error { return m } - -// AccountUpdateValidationError is the validation error returned by -// AccountUpdate.Validate if the designated constraints aren't met. -type AccountUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e AccountUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e AccountUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e AccountUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e AccountUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e AccountUpdateValidationError) ErrorName() string { return "AccountUpdateValidationError" } - -// Error satisfies the builtin error interface -func (e AccountUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sAccountUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = AccountUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = AccountUpdateValidationError{} - -// Validate checks the field values on SlotUpdate with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *SlotUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SlotUpdate with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in SlotUpdateMultiError, or -// nil if none found. -func (m *SlotUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *SlotUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Slot - - // no validation rules for Status - - if m.ParentSlot != nil { - // no validation rules for ParentSlot - } - - if len(errors) > 0 { - return SlotUpdateMultiError(errors) - } - - return nil -} - -// SlotUpdateMultiError is an error wrapping multiple validation errors -// returned by SlotUpdate.ValidateAll() if the designated constraints aren't met. -type SlotUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SlotUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SlotUpdateMultiError) AllErrors() []error { return m } - -// SlotUpdateValidationError is the validation error returned by -// SlotUpdate.Validate if the designated constraints aren't met. -type SlotUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SlotUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SlotUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SlotUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SlotUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SlotUpdateValidationError) ErrorName() string { return "SlotUpdateValidationError" } - -// Error satisfies the builtin error interface -func (e SlotUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSlotUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SlotUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SlotUpdateValidationError{} - -// Validate checks the field values on TimestampedSlotUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *TimestampedSlotUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TimestampedSlotUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TimestampedSlotUpdateMultiError, or nil if none found. -func (m *TimestampedSlotUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *TimestampedSlotUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetTs()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedSlotUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedSlotUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTs()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedSlotUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetSlotUpdate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedSlotUpdateValidationError{ - field: "SlotUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedSlotUpdateValidationError{ - field: "SlotUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetSlotUpdate()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedSlotUpdateValidationError{ - field: "SlotUpdate", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return TimestampedSlotUpdateMultiError(errors) - } - - return nil -} - -// TimestampedSlotUpdateMultiError is an error wrapping multiple validation -// errors returned by TimestampedSlotUpdate.ValidateAll() if the designated -// constraints aren't met. -type TimestampedSlotUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TimestampedSlotUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TimestampedSlotUpdateMultiError) AllErrors() []error { return m } - -// TimestampedSlotUpdateValidationError is the validation error returned by -// TimestampedSlotUpdate.Validate if the designated constraints aren't met. -type TimestampedSlotUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TimestampedSlotUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TimestampedSlotUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TimestampedSlotUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TimestampedSlotUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TimestampedSlotUpdateValidationError) ErrorName() string { - return "TimestampedSlotUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e TimestampedSlotUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTimestampedSlotUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TimestampedSlotUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TimestampedSlotUpdateValidationError{} - -// Validate checks the field values on TimestampedAccountUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *TimestampedAccountUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TimestampedAccountUpdate with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TimestampedAccountUpdateMultiError, or nil if none found. -func (m *TimestampedAccountUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *TimestampedAccountUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetTs()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedAccountUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedAccountUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTs()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedAccountUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetAccountUpdate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedAccountUpdateValidationError{ - field: "AccountUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedAccountUpdateValidationError{ - field: "AccountUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetAccountUpdate()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedAccountUpdateValidationError{ - field: "AccountUpdate", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return TimestampedAccountUpdateMultiError(errors) - } - - return nil -} - -// TimestampedAccountUpdateMultiError is an error wrapping multiple validation -// errors returned by TimestampedAccountUpdate.ValidateAll() if the designated -// constraints aren't met. -type TimestampedAccountUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TimestampedAccountUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TimestampedAccountUpdateMultiError) AllErrors() []error { return m } - -// TimestampedAccountUpdateValidationError is the validation error returned by -// TimestampedAccountUpdate.Validate if the designated constraints aren't met. -type TimestampedAccountUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TimestampedAccountUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TimestampedAccountUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TimestampedAccountUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TimestampedAccountUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TimestampedAccountUpdateValidationError) ErrorName() string { - return "TimestampedAccountUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e TimestampedAccountUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTimestampedAccountUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TimestampedAccountUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TimestampedAccountUpdateValidationError{} - -// Validate checks the field values on SubscribeTransactionUpdatesRequest with -// the rules defined in the proto definition for this message. If any rules -// are violated, the first error encountered is returned, or nil if there are -// no violations. -func (m *SubscribeTransactionUpdatesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubscribeTransactionUpdatesRequest -// with the rules defined in the proto definition for this message. If any -// rules are violated, the result is a list of violation errors wrapped in -// SubscribeTransactionUpdatesRequestMultiError, or nil if none found. -func (m *SubscribeTransactionUpdatesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SubscribeTransactionUpdatesRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return SubscribeTransactionUpdatesRequestMultiError(errors) - } - - return nil -} - -// SubscribeTransactionUpdatesRequestMultiError is an error wrapping multiple -// validation errors returned by -// SubscribeTransactionUpdatesRequest.ValidateAll() if the designated -// constraints aren't met. -type SubscribeTransactionUpdatesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubscribeTransactionUpdatesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubscribeTransactionUpdatesRequestMultiError) AllErrors() []error { return m } - -// SubscribeTransactionUpdatesRequestValidationError is the validation error -// returned by SubscribeTransactionUpdatesRequest.Validate if the designated -// constraints aren't met. -type SubscribeTransactionUpdatesRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SubscribeTransactionUpdatesRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SubscribeTransactionUpdatesRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SubscribeTransactionUpdatesRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SubscribeTransactionUpdatesRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SubscribeTransactionUpdatesRequestValidationError) ErrorName() string { - return "SubscribeTransactionUpdatesRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e SubscribeTransactionUpdatesRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSubscribeTransactionUpdatesRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SubscribeTransactionUpdatesRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SubscribeTransactionUpdatesRequestValidationError{} - -// Validate checks the field values on SubscribeBlockUpdatesRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *SubscribeBlockUpdatesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubscribeBlockUpdatesRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// SubscribeBlockUpdatesRequestMultiError, or nil if none found. -func (m *SubscribeBlockUpdatesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SubscribeBlockUpdatesRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return SubscribeBlockUpdatesRequestMultiError(errors) - } - - return nil -} - -// SubscribeBlockUpdatesRequestMultiError is an error wrapping multiple -// validation errors returned by SubscribeBlockUpdatesRequest.ValidateAll() if -// the designated constraints aren't met. -type SubscribeBlockUpdatesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubscribeBlockUpdatesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubscribeBlockUpdatesRequestMultiError) AllErrors() []error { return m } - -// SubscribeBlockUpdatesRequestValidationError is the validation error returned -// by SubscribeBlockUpdatesRequest.Validate if the designated constraints -// aren't met. -type SubscribeBlockUpdatesRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SubscribeBlockUpdatesRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SubscribeBlockUpdatesRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SubscribeBlockUpdatesRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SubscribeBlockUpdatesRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SubscribeBlockUpdatesRequestValidationError) ErrorName() string { - return "SubscribeBlockUpdatesRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e SubscribeBlockUpdatesRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSubscribeBlockUpdatesRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SubscribeBlockUpdatesRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SubscribeBlockUpdatesRequestValidationError{} - -// Validate checks the field values on MaybePartialAccountUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *MaybePartialAccountUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on MaybePartialAccountUpdate with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// MaybePartialAccountUpdateMultiError, or nil if none found. -func (m *MaybePartialAccountUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *MaybePartialAccountUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - switch v := m.Msg.(type) { - case *MaybePartialAccountUpdate_PartialAccountUpdate: - if v == nil { - err := MaybePartialAccountUpdateValidationError{ - field: "Msg", - reason: "oneof value cannot be a typed-nil", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetPartialAccountUpdate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MaybePartialAccountUpdateValidationError{ - field: "PartialAccountUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MaybePartialAccountUpdateValidationError{ - field: "PartialAccountUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetPartialAccountUpdate()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return MaybePartialAccountUpdateValidationError{ - field: "PartialAccountUpdate", - reason: "embedded message failed validation", - cause: err, - } - } - } - - case *MaybePartialAccountUpdate_Hb: - if v == nil { - err := MaybePartialAccountUpdateValidationError{ - field: "Msg", - reason: "oneof value cannot be a typed-nil", - } - if !all { - return err - } - errors = append(errors, err) - } - - if all { - switch v := interface{}(m.GetHb()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, MaybePartialAccountUpdateValidationError{ - field: "Hb", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, MaybePartialAccountUpdateValidationError{ - field: "Hb", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetHb()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return MaybePartialAccountUpdateValidationError{ - field: "Hb", - reason: "embedded message failed validation", - cause: err, - } - } - } - - default: - _ = v // ensures v is used - } - - if len(errors) > 0 { - return MaybePartialAccountUpdateMultiError(errors) - } - - return nil -} - -// MaybePartialAccountUpdateMultiError is an error wrapping multiple validation -// errors returned by MaybePartialAccountUpdate.ValidateAll() if the -// designated constraints aren't met. -type MaybePartialAccountUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m MaybePartialAccountUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m MaybePartialAccountUpdateMultiError) AllErrors() []error { return m } - -// MaybePartialAccountUpdateValidationError is the validation error returned by -// MaybePartialAccountUpdate.Validate if the designated constraints aren't met. -type MaybePartialAccountUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e MaybePartialAccountUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e MaybePartialAccountUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e MaybePartialAccountUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e MaybePartialAccountUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e MaybePartialAccountUpdateValidationError) ErrorName() string { - return "MaybePartialAccountUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e MaybePartialAccountUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sMaybePartialAccountUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = MaybePartialAccountUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = MaybePartialAccountUpdateValidationError{} - -// Validate checks the field values on Heartbeat with the rules defined in the -// proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *Heartbeat) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on Heartbeat with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in HeartbeatMultiError, or nil -// if none found. -func (m *Heartbeat) ValidateAll() error { - return m.validate(true) -} - -func (m *Heartbeat) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return HeartbeatMultiError(errors) - } - - return nil -} - -// HeartbeatMultiError is an error wrapping multiple validation errors returned -// by Heartbeat.ValidateAll() if the designated constraints aren't met. -type HeartbeatMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m HeartbeatMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m HeartbeatMultiError) AllErrors() []error { return m } - -// HeartbeatValidationError is the validation error returned by -// Heartbeat.Validate if the designated constraints aren't met. -type HeartbeatValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e HeartbeatValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e HeartbeatValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e HeartbeatValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e HeartbeatValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e HeartbeatValidationError) ErrorName() string { return "HeartbeatValidationError" } - -// Error satisfies the builtin error interface -func (e HeartbeatValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sHeartbeat.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = HeartbeatValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = HeartbeatValidationError{} - -// Validate checks the field values on EmptyRequest with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *EmptyRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on EmptyRequest with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in EmptyRequestMultiError, or -// nil if none found. -func (m *EmptyRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *EmptyRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return EmptyRequestMultiError(errors) - } - - return nil -} - -// EmptyRequestMultiError is an error wrapping multiple validation errors -// returned by EmptyRequest.ValidateAll() if the designated constraints aren't met. -type EmptyRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m EmptyRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m EmptyRequestMultiError) AllErrors() []error { return m } - -// EmptyRequestValidationError is the validation error returned by -// EmptyRequest.Validate if the designated constraints aren't met. -type EmptyRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e EmptyRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e EmptyRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e EmptyRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e EmptyRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e EmptyRequestValidationError) ErrorName() string { return "EmptyRequestValidationError" } - -// Error satisfies the builtin error interface -func (e EmptyRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sEmptyRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = EmptyRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = EmptyRequestValidationError{} - -// Validate checks the field values on BlockUpdate with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *BlockUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on BlockUpdate with the rules defined in -// the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in BlockUpdateMultiError, or -// nil if none found. -func (m *BlockUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *BlockUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Slot - - // no validation rules for Blockhash - - for idx, item := range m.GetRewards() { - _, _ = idx, item - - if all { - switch v := interface{}(item).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, BlockUpdateValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, BlockUpdateValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return BlockUpdateValidationError{ - field: fmt.Sprintf("Rewards[%v]", idx), - reason: "embedded message failed validation", - cause: err, - } - } - } - - } - - if all { - switch v := interface{}(m.GetBlockTime()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, BlockUpdateValidationError{ - field: "BlockTime", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, BlockUpdateValidationError{ - field: "BlockTime", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBlockTime()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return BlockUpdateValidationError{ - field: "BlockTime", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if m.BlockHeight != nil { - // no validation rules for BlockHeight - } - - if len(errors) > 0 { - return BlockUpdateMultiError(errors) - } - - return nil -} - -// BlockUpdateMultiError is an error wrapping multiple validation errors -// returned by BlockUpdate.ValidateAll() if the designated constraints aren't met. -type BlockUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m BlockUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m BlockUpdateMultiError) AllErrors() []error { return m } - -// BlockUpdateValidationError is the validation error returned by -// BlockUpdate.Validate if the designated constraints aren't met. -type BlockUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e BlockUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e BlockUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e BlockUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e BlockUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e BlockUpdateValidationError) ErrorName() string { return "BlockUpdateValidationError" } - -// Error satisfies the builtin error interface -func (e BlockUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sBlockUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = BlockUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = BlockUpdateValidationError{} - -// Validate checks the field values on TimestampedBlockUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *TimestampedBlockUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TimestampedBlockUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TimestampedBlockUpdateMultiError, or nil if none found. -func (m *TimestampedBlockUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *TimestampedBlockUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetTs()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedBlockUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedBlockUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTs()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedBlockUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetBlockUpdate()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedBlockUpdateValidationError{ - field: "BlockUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedBlockUpdateValidationError{ - field: "BlockUpdate", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetBlockUpdate()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedBlockUpdateValidationError{ - field: "BlockUpdate", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return TimestampedBlockUpdateMultiError(errors) - } - - return nil -} - -// TimestampedBlockUpdateMultiError is an error wrapping multiple validation -// errors returned by TimestampedBlockUpdate.ValidateAll() if the designated -// constraints aren't met. -type TimestampedBlockUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TimestampedBlockUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TimestampedBlockUpdateMultiError) AllErrors() []error { return m } - -// TimestampedBlockUpdateValidationError is the validation error returned by -// TimestampedBlockUpdate.Validate if the designated constraints aren't met. -type TimestampedBlockUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TimestampedBlockUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TimestampedBlockUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TimestampedBlockUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TimestampedBlockUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TimestampedBlockUpdateValidationError) ErrorName() string { - return "TimestampedBlockUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e TimestampedBlockUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTimestampedBlockUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TimestampedBlockUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TimestampedBlockUpdateValidationError{} - -// Validate checks the field values on TransactionUpdate with the rules defined -// in the proto definition for this message. If any rules are violated, the -// first error encountered is returned, or nil if there are no violations. -func (m *TransactionUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TransactionUpdate with the rules -// defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TransactionUpdateMultiError, or nil if none found. -func (m *TransactionUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *TransactionUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for Slot - - // no validation rules for Signature - - // no validation rules for IsVote - - // no validation rules for TxIdx - - if all { - switch v := interface{}(m.GetTx()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TransactionUpdateValidationError{ - field: "Tx", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TransactionUpdateValidationError{ - field: "Tx", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTx()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TransactionUpdateValidationError{ - field: "Tx", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return TransactionUpdateMultiError(errors) - } - - return nil -} - -// TransactionUpdateMultiError is an error wrapping multiple validation errors -// returned by TransactionUpdate.ValidateAll() if the designated constraints -// aren't met. -type TransactionUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TransactionUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TransactionUpdateMultiError) AllErrors() []error { return m } - -// TransactionUpdateValidationError is the validation error returned by -// TransactionUpdate.Validate if the designated constraints aren't met. -type TransactionUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TransactionUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TransactionUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TransactionUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TransactionUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TransactionUpdateValidationError) ErrorName() string { - return "TransactionUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e TransactionUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTransactionUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TransactionUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TransactionUpdateValidationError{} - -// Validate checks the field values on TimestampedTransactionUpdate with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *TimestampedTransactionUpdate) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on TimestampedTransactionUpdate with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// TimestampedTransactionUpdateMultiError, or nil if none found. -func (m *TimestampedTransactionUpdate) ValidateAll() error { - return m.validate(true) -} - -func (m *TimestampedTransactionUpdate) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if all { - switch v := interface{}(m.GetTs()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedTransactionUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedTransactionUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTs()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedTransactionUpdateValidationError{ - field: "Ts", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if all { - switch v := interface{}(m.GetTransaction()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, TimestampedTransactionUpdateValidationError{ - field: "Transaction", - reason: "embedded message failed validation", - cause: err, - }) - } - case interface{ Validate() error }: - if err := v.Validate(); err != nil { - errors = append(errors, TimestampedTransactionUpdateValidationError{ - field: "Transaction", - reason: "embedded message failed validation", - cause: err, - }) - } - } - } else if v, ok := interface{}(m.GetTransaction()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TimestampedTransactionUpdateValidationError{ - field: "Transaction", - reason: "embedded message failed validation", - cause: err, - } - } - } - - if len(errors) > 0 { - return TimestampedTransactionUpdateMultiError(errors) - } - - return nil -} - -// TimestampedTransactionUpdateMultiError is an error wrapping multiple -// validation errors returned by TimestampedTransactionUpdate.ValidateAll() if -// the designated constraints aren't met. -type TimestampedTransactionUpdateMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m TimestampedTransactionUpdateMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m TimestampedTransactionUpdateMultiError) AllErrors() []error { return m } - -// TimestampedTransactionUpdateValidationError is the validation error returned -// by TimestampedTransactionUpdate.Validate if the designated constraints -// aren't met. -type TimestampedTransactionUpdateValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e TimestampedTransactionUpdateValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e TimestampedTransactionUpdateValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e TimestampedTransactionUpdateValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e TimestampedTransactionUpdateValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e TimestampedTransactionUpdateValidationError) ErrorName() string { - return "TimestampedTransactionUpdateValidationError" -} - -// Error satisfies the builtin error interface -func (e TimestampedTransactionUpdateValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sTimestampedTransactionUpdate.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = TimestampedTransactionUpdateValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = TimestampedTransactionUpdateValidationError{} - -// Validate checks the field values on SubscribeSlotUpdateRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *SubscribeSlotUpdateRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubscribeSlotUpdateRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// SubscribeSlotUpdateRequestMultiError, or nil if none found. -func (m *SubscribeSlotUpdateRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SubscribeSlotUpdateRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return SubscribeSlotUpdateRequestMultiError(errors) - } - - return nil -} - -// SubscribeSlotUpdateRequestMultiError is an error wrapping multiple -// validation errors returned by SubscribeSlotUpdateRequest.ValidateAll() if -// the designated constraints aren't met. -type SubscribeSlotUpdateRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubscribeSlotUpdateRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubscribeSlotUpdateRequestMultiError) AllErrors() []error { return m } - -// SubscribeSlotUpdateRequestValidationError is the validation error returned -// by SubscribeSlotUpdateRequest.Validate if the designated constraints aren't met. -type SubscribeSlotUpdateRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SubscribeSlotUpdateRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SubscribeSlotUpdateRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SubscribeSlotUpdateRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SubscribeSlotUpdateRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SubscribeSlotUpdateRequestValidationError) ErrorName() string { - return "SubscribeSlotUpdateRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e SubscribeSlotUpdateRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSubscribeSlotUpdateRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SubscribeSlotUpdateRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SubscribeSlotUpdateRequestValidationError{} - -// Validate checks the field values on SubscribeAccountUpdatesRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *SubscribeAccountUpdatesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubscribeAccountUpdatesRequest with -// the rules defined in the proto definition for this message. If any rules -// are violated, the result is a list of violation errors wrapped in -// SubscribeAccountUpdatesRequestMultiError, or nil if none found. -func (m *SubscribeAccountUpdatesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SubscribeAccountUpdatesRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return SubscribeAccountUpdatesRequestMultiError(errors) - } - - return nil -} - -// SubscribeAccountUpdatesRequestMultiError is an error wrapping multiple -// validation errors returned by SubscribeAccountUpdatesRequest.ValidateAll() -// if the designated constraints aren't met. -type SubscribeAccountUpdatesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubscribeAccountUpdatesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubscribeAccountUpdatesRequestMultiError) AllErrors() []error { return m } - -// SubscribeAccountUpdatesRequestValidationError is the validation error -// returned by SubscribeAccountUpdatesRequest.Validate if the designated -// constraints aren't met. -type SubscribeAccountUpdatesRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SubscribeAccountUpdatesRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SubscribeAccountUpdatesRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SubscribeAccountUpdatesRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SubscribeAccountUpdatesRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SubscribeAccountUpdatesRequestValidationError) ErrorName() string { - return "SubscribeAccountUpdatesRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e SubscribeAccountUpdatesRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSubscribeAccountUpdatesRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SubscribeAccountUpdatesRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SubscribeAccountUpdatesRequestValidationError{} - -// Validate checks the field values on SubscribeProgramsUpdatesRequest with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *SubscribeProgramsUpdatesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubscribeProgramsUpdatesRequest with -// the rules defined in the proto definition for this message. If any rules -// are violated, the result is a list of violation errors wrapped in -// SubscribeProgramsUpdatesRequestMultiError, or nil if none found. -func (m *SubscribeProgramsUpdatesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SubscribeProgramsUpdatesRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - if len(errors) > 0 { - return SubscribeProgramsUpdatesRequestMultiError(errors) - } - - return nil -} - -// SubscribeProgramsUpdatesRequestMultiError is an error wrapping multiple -// validation errors returned by SubscribeProgramsUpdatesRequest.ValidateAll() -// if the designated constraints aren't met. -type SubscribeProgramsUpdatesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubscribeProgramsUpdatesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubscribeProgramsUpdatesRequestMultiError) AllErrors() []error { return m } - -// SubscribeProgramsUpdatesRequestValidationError is the validation error -// returned by SubscribeProgramsUpdatesRequest.Validate if the designated -// constraints aren't met. -type SubscribeProgramsUpdatesRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SubscribeProgramsUpdatesRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SubscribeProgramsUpdatesRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SubscribeProgramsUpdatesRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SubscribeProgramsUpdatesRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SubscribeProgramsUpdatesRequestValidationError) ErrorName() string { - return "SubscribeProgramsUpdatesRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e SubscribeProgramsUpdatesRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSubscribeProgramsUpdatesRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SubscribeProgramsUpdatesRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SubscribeProgramsUpdatesRequestValidationError{} - -// Validate checks the field values on SubscribePartialAccountUpdatesRequest -// with the rules defined in the proto definition for this message. If any -// rules are violated, the first error encountered is returned, or nil if -// there are no violations. -func (m *SubscribePartialAccountUpdatesRequest) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on SubscribePartialAccountUpdatesRequest -// with the rules defined in the proto definition for this message. If any -// rules are violated, the result is a list of violation errors wrapped in -// SubscribePartialAccountUpdatesRequestMultiError, or nil if none found. -func (m *SubscribePartialAccountUpdatesRequest) ValidateAll() error { - return m.validate(true) -} - -func (m *SubscribePartialAccountUpdatesRequest) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for SkipVoteAccounts - - if len(errors) > 0 { - return SubscribePartialAccountUpdatesRequestMultiError(errors) - } - - return nil -} - -// SubscribePartialAccountUpdatesRequestMultiError is an error wrapping -// multiple validation errors returned by -// SubscribePartialAccountUpdatesRequest.ValidateAll() if the designated -// constraints aren't met. -type SubscribePartialAccountUpdatesRequestMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m SubscribePartialAccountUpdatesRequestMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m SubscribePartialAccountUpdatesRequestMultiError) AllErrors() []error { return m } - -// SubscribePartialAccountUpdatesRequestValidationError is the validation error -// returned by SubscribePartialAccountUpdatesRequest.Validate if the -// designated constraints aren't met. -type SubscribePartialAccountUpdatesRequestValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e SubscribePartialAccountUpdatesRequestValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e SubscribePartialAccountUpdatesRequestValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e SubscribePartialAccountUpdatesRequestValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e SubscribePartialAccountUpdatesRequestValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e SubscribePartialAccountUpdatesRequestValidationError) ErrorName() string { - return "SubscribePartialAccountUpdatesRequestValidationError" -} - -// Error satisfies the builtin error interface -func (e SubscribePartialAccountUpdatesRequestValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sSubscribePartialAccountUpdatesRequest.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = SubscribePartialAccountUpdatesRequestValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = SubscribePartialAccountUpdatesRequestValidationError{} - -// Validate checks the field values on GetHeartbeatIntervalResponse with the -// rules defined in the proto definition for this message. If any rules are -// violated, the first error encountered is returned, or nil if there are no violations. -func (m *GetHeartbeatIntervalResponse) Validate() error { - return m.validate(false) -} - -// ValidateAll checks the field values on GetHeartbeatIntervalResponse with the -// rules defined in the proto definition for this message. If any rules are -// violated, the result is a list of violation errors wrapped in -// GetHeartbeatIntervalResponseMultiError, or nil if none found. -func (m *GetHeartbeatIntervalResponse) ValidateAll() error { - return m.validate(true) -} - -func (m *GetHeartbeatIntervalResponse) validate(all bool) error { - if m == nil { - return nil - } - - var errors []error - - // no validation rules for HeartbeatIntervalMs - - if len(errors) > 0 { - return GetHeartbeatIntervalResponseMultiError(errors) - } - - return nil -} - -// GetHeartbeatIntervalResponseMultiError is an error wrapping multiple -// validation errors returned by GetHeartbeatIntervalResponse.ValidateAll() if -// the designated constraints aren't met. -type GetHeartbeatIntervalResponseMultiError []error - -// Error returns a concatenation of all the error messages it wraps. -func (m GetHeartbeatIntervalResponseMultiError) Error() string { - var msgs []string - for _, err := range m { - msgs = append(msgs, err.Error()) - } - return strings.Join(msgs, "; ") -} - -// AllErrors returns a list of validation violation errors. -func (m GetHeartbeatIntervalResponseMultiError) AllErrors() []error { return m } - -// GetHeartbeatIntervalResponseValidationError is the validation error returned -// by GetHeartbeatIntervalResponse.Validate if the designated constraints -// aren't met. -type GetHeartbeatIntervalResponseValidationError struct { - field string - reason string - cause error - key bool -} - -// Field function returns field value. -func (e GetHeartbeatIntervalResponseValidationError) Field() string { return e.field } - -// Reason function returns reason value. -func (e GetHeartbeatIntervalResponseValidationError) Reason() string { return e.reason } - -// Cause function returns cause value. -func (e GetHeartbeatIntervalResponseValidationError) Cause() error { return e.cause } - -// Key function returns key value. -func (e GetHeartbeatIntervalResponseValidationError) Key() bool { return e.key } - -// ErrorName returns error name. -func (e GetHeartbeatIntervalResponseValidationError) ErrorName() string { - return "GetHeartbeatIntervalResponseValidationError" -} - -// Error satisfies the builtin error interface -func (e GetHeartbeatIntervalResponseValidationError) Error() string { - cause := "" - if e.cause != nil { - cause = fmt.Sprintf(" | caused by: %v", e.cause) - } - - key := "" - if e.key { - key = "key for " - } - - return fmt.Sprintf( - "invalid %sGetHeartbeatIntervalResponse.%s: %s%s", - key, - e.field, - e.reason, - cause) -} - -var _ error = GetHeartbeatIntervalResponseValidationError{} - -var _ interface { - Field() string - Reason() string - Key() bool - Cause() error - ErrorName() string -} = GetHeartbeatIntervalResponseValidationError{} diff --git a/generated/geyser/v1/geyser_grpc.pb.go b/generated/geyser/v1/geyser_grpc.pb.go index 9b22a8f..b02049e 100644 --- a/generated/geyser/v1/geyser_grpc.pb.go +++ b/generated/geyser/v1/geyser_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.12.4 +// - protoc v3.21.12 // source: geyser.proto package geyser @@ -22,25 +22,13 @@ const _ = grpc.SupportPackageIsVersion7 // // 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 GeyserClient interface { - // Invoke to get the expected heartbeat interval. - GetHeartbeatInterval(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GetHeartbeatIntervalResponse, error) - // Subscribes to account updates in the accounts database; additionally pings clients with empty heartbeats. - // Upon initially connecting the client can expect a `highest_write_slot` set in the http headers. - // Subscribe to account updates - SubscribeAccountUpdates(ctx context.Context, in *SubscribeAccountUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeAccountUpdatesClient, error) - // Subscribes to updates given a list of program IDs. When an account update comes in that's owned by a provided - // program id, one will receive an update - SubscribeProgramUpdates(ctx context.Context, in *SubscribeProgramsUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeProgramUpdatesClient, error) - // Functions similarly to `SubscribeAccountUpdates`, but consumes less bandwidth. - // Returns the highest slot seen thus far in the http headers named `highest-write-slot`. - SubscribePartialAccountUpdates(ctx context.Context, in *SubscribePartialAccountUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribePartialAccountUpdatesClient, error) - // Subscribes to slot updates. - // Returns the highest slot seen thus far in the http headers named `highest-write-slot`. - SubscribeSlotUpdates(ctx context.Context, in *SubscribeSlotUpdateRequest, opts ...grpc.CallOption) (Geyser_SubscribeSlotUpdatesClient, error) - // Subscribes to transaction updates. - SubscribeTransactionUpdates(ctx context.Context, in *SubscribeTransactionUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeTransactionUpdatesClient, error) - // Subscribes to block updates. - SubscribeBlockUpdates(ctx context.Context, in *SubscribeBlockUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeBlockUpdatesClient, error) + Subscribe(ctx context.Context, opts ...grpc.CallOption) (Geyser_SubscribeClient, error) + Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PongResponse, error) + GetLatestBlockhash(ctx context.Context, in *GetLatestBlockhashRequest, opts ...grpc.CallOption) (*GetLatestBlockhashResponse, error) + GetBlockHeight(ctx context.Context, in *GetBlockHeightRequest, opts ...grpc.CallOption) (*GetBlockHeightResponse, error) + GetSlot(ctx context.Context, in *GetSlotRequest, opts ...grpc.CallOption) (*GetSlotResponse, error) + IsBlockhashValid(ctx context.Context, in *IsBlockhashValidRequest, opts ...grpc.CallOption) (*IsBlockhashValidResponse, error) + GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*GetVersionResponse, error) } type geyserClient struct { @@ -51,230 +39,102 @@ func NewGeyserClient(cc grpc.ClientConnInterface) GeyserClient { return &geyserClient{cc} } -func (c *geyserClient) GetHeartbeatInterval(ctx context.Context, in *EmptyRequest, opts ...grpc.CallOption) (*GetHeartbeatIntervalResponse, error) { - out := new(GetHeartbeatIntervalResponse) - err := c.cc.Invoke(ctx, "/solana.geyser.Geyser/GetHeartbeatInterval", in, out, opts...) +func (c *geyserClient) Subscribe(ctx context.Context, opts ...grpc.CallOption) (Geyser_SubscribeClient, error) { + stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[0], "/geyser.Geyser/Subscribe", opts...) if err != nil { return nil, err } - return out, nil -} - -func (c *geyserClient) SubscribeAccountUpdates(ctx context.Context, in *SubscribeAccountUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeAccountUpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[0], "/solana.geyser.Geyser/SubscribeAccountUpdates", opts...) - if err != nil { - return nil, err - } - x := &geyserSubscribeAccountUpdatesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } + x := &geyserSubscribeClient{stream} return x, nil } -type Geyser_SubscribeAccountUpdatesClient interface { - Recv() (*TimestampedAccountUpdate, error) +type Geyser_SubscribeClient interface { + Send(*SubscribeRequest) error + Recv() (*SubscribeUpdate, error) grpc.ClientStream } -type geyserSubscribeAccountUpdatesClient struct { +type geyserSubscribeClient struct { grpc.ClientStream } -func (x *geyserSubscribeAccountUpdatesClient) Recv() (*TimestampedAccountUpdate, error) { - m := new(TimestampedAccountUpdate) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil +func (x *geyserSubscribeClient) Send(m *SubscribeRequest) error { + return x.ClientStream.SendMsg(m) } -func (c *geyserClient) SubscribeProgramUpdates(ctx context.Context, in *SubscribeProgramsUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeProgramUpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[1], "/solana.geyser.Geyser/SubscribeProgramUpdates", opts...) - if err != nil { - return nil, err - } - x := &geyserSubscribeProgramUpdatesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Geyser_SubscribeProgramUpdatesClient interface { - Recv() (*TimestampedAccountUpdate, error) - grpc.ClientStream -} - -type geyserSubscribeProgramUpdatesClient struct { - grpc.ClientStream -} - -func (x *geyserSubscribeProgramUpdatesClient) Recv() (*TimestampedAccountUpdate, error) { - m := new(TimestampedAccountUpdate) +func (x *geyserSubscribeClient) Recv() (*SubscribeUpdate, error) { + m := new(SubscribeUpdate) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } return m, nil } -func (c *geyserClient) SubscribePartialAccountUpdates(ctx context.Context, in *SubscribePartialAccountUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribePartialAccountUpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[2], "/solana.geyser.Geyser/SubscribePartialAccountUpdates", opts...) +func (c *geyserClient) Ping(ctx context.Context, in *PingRequest, opts ...grpc.CallOption) (*PongResponse, error) { + out := new(PongResponse) + err := c.cc.Invoke(ctx, "/geyser.Geyser/Ping", in, out, opts...) if err != nil { return nil, err } - x := &geyserSubscribePartialAccountUpdatesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Geyser_SubscribePartialAccountUpdatesClient interface { - Recv() (*MaybePartialAccountUpdate, error) - grpc.ClientStream -} - -type geyserSubscribePartialAccountUpdatesClient struct { - grpc.ClientStream -} - -func (x *geyserSubscribePartialAccountUpdatesClient) Recv() (*MaybePartialAccountUpdate, error) { - m := new(MaybePartialAccountUpdate) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil + return out, nil } -func (c *geyserClient) SubscribeSlotUpdates(ctx context.Context, in *SubscribeSlotUpdateRequest, opts ...grpc.CallOption) (Geyser_SubscribeSlotUpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[3], "/solana.geyser.Geyser/SubscribeSlotUpdates", opts...) +func (c *geyserClient) GetLatestBlockhash(ctx context.Context, in *GetLatestBlockhashRequest, opts ...grpc.CallOption) (*GetLatestBlockhashResponse, error) { + out := new(GetLatestBlockhashResponse) + err := c.cc.Invoke(ctx, "/geyser.Geyser/GetLatestBlockhash", in, out, opts...) if err != nil { return nil, err } - x := &geyserSubscribeSlotUpdatesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Geyser_SubscribeSlotUpdatesClient interface { - Recv() (*TimestampedSlotUpdate, error) - grpc.ClientStream -} - -type geyserSubscribeSlotUpdatesClient struct { - grpc.ClientStream -} - -func (x *geyserSubscribeSlotUpdatesClient) Recv() (*TimestampedSlotUpdate, error) { - m := new(TimestampedSlotUpdate) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil + return out, nil } -func (c *geyserClient) SubscribeTransactionUpdates(ctx context.Context, in *SubscribeTransactionUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeTransactionUpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[4], "/solana.geyser.Geyser/SubscribeTransactionUpdates", opts...) +func (c *geyserClient) GetBlockHeight(ctx context.Context, in *GetBlockHeightRequest, opts ...grpc.CallOption) (*GetBlockHeightResponse, error) { + out := new(GetBlockHeightResponse) + err := c.cc.Invoke(ctx, "/geyser.Geyser/GetBlockHeight", in, out, opts...) if err != nil { return nil, err } - x := &geyserSubscribeTransactionUpdatesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Geyser_SubscribeTransactionUpdatesClient interface { - Recv() (*TimestampedTransactionUpdate, error) - grpc.ClientStream -} - -type geyserSubscribeTransactionUpdatesClient struct { - grpc.ClientStream + return out, nil } -func (x *geyserSubscribeTransactionUpdatesClient) Recv() (*TimestampedTransactionUpdate, error) { - m := new(TimestampedTransactionUpdate) - if err := x.ClientStream.RecvMsg(m); err != nil { +func (c *geyserClient) GetSlot(ctx context.Context, in *GetSlotRequest, opts ...grpc.CallOption) (*GetSlotResponse, error) { + out := new(GetSlotResponse) + err := c.cc.Invoke(ctx, "/geyser.Geyser/GetSlot", in, out, opts...) + if err != nil { return nil, err } - return m, nil + return out, nil } -func (c *geyserClient) SubscribeBlockUpdates(ctx context.Context, in *SubscribeBlockUpdatesRequest, opts ...grpc.CallOption) (Geyser_SubscribeBlockUpdatesClient, error) { - stream, err := c.cc.NewStream(ctx, &Geyser_ServiceDesc.Streams[5], "/solana.geyser.Geyser/SubscribeBlockUpdates", opts...) +func (c *geyserClient) IsBlockhashValid(ctx context.Context, in *IsBlockhashValidRequest, opts ...grpc.CallOption) (*IsBlockhashValidResponse, error) { + out := new(IsBlockhashValidResponse) + err := c.cc.Invoke(ctx, "/geyser.Geyser/IsBlockhashValid", in, out, opts...) if err != nil { return nil, err } - x := &geyserSubscribeBlockUpdatesClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type Geyser_SubscribeBlockUpdatesClient interface { - Recv() (*TimestampedBlockUpdate, error) - grpc.ClientStream -} - -type geyserSubscribeBlockUpdatesClient struct { - grpc.ClientStream + return out, nil } -func (x *geyserSubscribeBlockUpdatesClient) Recv() (*TimestampedBlockUpdate, error) { - m := new(TimestampedBlockUpdate) - if err := x.ClientStream.RecvMsg(m); err != nil { +func (c *geyserClient) GetVersion(ctx context.Context, in *GetVersionRequest, opts ...grpc.CallOption) (*GetVersionResponse, error) { + out := new(GetVersionResponse) + err := c.cc.Invoke(ctx, "/geyser.Geyser/GetVersion", in, out, opts...) + if err != nil { return nil, err } - return m, nil + return out, nil } // GeyserServer is the server API for Geyser service. // All implementations must embed UnimplementedGeyserServer // for forward compatibility type GeyserServer interface { - // Invoke to get the expected heartbeat interval. - GetHeartbeatInterval(context.Context, *EmptyRequest) (*GetHeartbeatIntervalResponse, error) - // Subscribes to account updates in the accounts database; additionally pings clients with empty heartbeats. - // Upon initially connecting the client can expect a `highest_write_slot` set in the http headers. - // Subscribe to account updates - SubscribeAccountUpdates(*SubscribeAccountUpdatesRequest, Geyser_SubscribeAccountUpdatesServer) error - // Subscribes to updates given a list of program IDs. When an account update comes in that's owned by a provided - // program id, one will receive an update - SubscribeProgramUpdates(*SubscribeProgramsUpdatesRequest, Geyser_SubscribeProgramUpdatesServer) error - // Functions similarly to `SubscribeAccountUpdates`, but consumes less bandwidth. - // Returns the highest slot seen thus far in the http headers named `highest-write-slot`. - SubscribePartialAccountUpdates(*SubscribePartialAccountUpdatesRequest, Geyser_SubscribePartialAccountUpdatesServer) error - // Subscribes to slot updates. - // Returns the highest slot seen thus far in the http headers named `highest-write-slot`. - SubscribeSlotUpdates(*SubscribeSlotUpdateRequest, Geyser_SubscribeSlotUpdatesServer) error - // Subscribes to transaction updates. - SubscribeTransactionUpdates(*SubscribeTransactionUpdatesRequest, Geyser_SubscribeTransactionUpdatesServer) error - // Subscribes to block updates. - SubscribeBlockUpdates(*SubscribeBlockUpdatesRequest, Geyser_SubscribeBlockUpdatesServer) error + Subscribe(Geyser_SubscribeServer) error + Ping(context.Context, *PingRequest) (*PongResponse, error) + GetLatestBlockhash(context.Context, *GetLatestBlockhashRequest) (*GetLatestBlockhashResponse, error) + GetBlockHeight(context.Context, *GetBlockHeightRequest) (*GetBlockHeightResponse, error) + GetSlot(context.Context, *GetSlotRequest) (*GetSlotResponse, error) + IsBlockhashValid(context.Context, *IsBlockhashValidRequest) (*IsBlockhashValidResponse, error) + GetVersion(context.Context, *GetVersionRequest) (*GetVersionResponse, error) mustEmbedUnimplementedGeyserServer() } @@ -282,26 +142,26 @@ type GeyserServer interface { type UnimplementedGeyserServer struct { } -func (UnimplementedGeyserServer) GetHeartbeatInterval(context.Context, *EmptyRequest) (*GetHeartbeatIntervalResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetHeartbeatInterval not implemented") +func (UnimplementedGeyserServer) Subscribe(Geyser_SubscribeServer) error { + return status.Errorf(codes.Unimplemented, "method Subscribe not implemented") } -func (UnimplementedGeyserServer) SubscribeAccountUpdates(*SubscribeAccountUpdatesRequest, Geyser_SubscribeAccountUpdatesServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeAccountUpdates not implemented") +func (UnimplementedGeyserServer) Ping(context.Context, *PingRequest) (*PongResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Ping not implemented") } -func (UnimplementedGeyserServer) SubscribeProgramUpdates(*SubscribeProgramsUpdatesRequest, Geyser_SubscribeProgramUpdatesServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeProgramUpdates not implemented") +func (UnimplementedGeyserServer) GetLatestBlockhash(context.Context, *GetLatestBlockhashRequest) (*GetLatestBlockhashResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetLatestBlockhash not implemented") } -func (UnimplementedGeyserServer) SubscribePartialAccountUpdates(*SubscribePartialAccountUpdatesRequest, Geyser_SubscribePartialAccountUpdatesServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribePartialAccountUpdates not implemented") +func (UnimplementedGeyserServer) GetBlockHeight(context.Context, *GetBlockHeightRequest) (*GetBlockHeightResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBlockHeight not implemented") } -func (UnimplementedGeyserServer) SubscribeSlotUpdates(*SubscribeSlotUpdateRequest, Geyser_SubscribeSlotUpdatesServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeSlotUpdates not implemented") +func (UnimplementedGeyserServer) GetSlot(context.Context, *GetSlotRequest) (*GetSlotResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSlot not implemented") } -func (UnimplementedGeyserServer) SubscribeTransactionUpdates(*SubscribeTransactionUpdatesRequest, Geyser_SubscribeTransactionUpdatesServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeTransactionUpdates not implemented") +func (UnimplementedGeyserServer) IsBlockhashValid(context.Context, *IsBlockhashValidRequest) (*IsBlockhashValidResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method IsBlockhashValid not implemented") } -func (UnimplementedGeyserServer) SubscribeBlockUpdates(*SubscribeBlockUpdatesRequest, Geyser_SubscribeBlockUpdatesServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeBlockUpdates not implemented") +func (UnimplementedGeyserServer) GetVersion(context.Context, *GetVersionRequest) (*GetVersionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetVersion not implemented") } func (UnimplementedGeyserServer) mustEmbedUnimplementedGeyserServer() {} @@ -316,192 +176,178 @@ func RegisterGeyserServer(s grpc.ServiceRegistrar, srv GeyserServer) { s.RegisterService(&Geyser_ServiceDesc, srv) } -func _Geyser_GetHeartbeatInterval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(EmptyRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(GeyserServer).GetHeartbeatInterval(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/solana.geyser.Geyser/GetHeartbeatInterval", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(GeyserServer).GetHeartbeatInterval(ctx, req.(*EmptyRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Geyser_SubscribeAccountUpdates_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribeAccountUpdatesRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(GeyserServer).SubscribeAccountUpdates(m, &geyserSubscribeAccountUpdatesServer{stream}) +func _Geyser_Subscribe_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(GeyserServer).Subscribe(&geyserSubscribeServer{stream}) } -type Geyser_SubscribeAccountUpdatesServer interface { - Send(*TimestampedAccountUpdate) error +type Geyser_SubscribeServer interface { + Send(*SubscribeUpdate) error + Recv() (*SubscribeRequest, error) grpc.ServerStream } -type geyserSubscribeAccountUpdatesServer struct { +type geyserSubscribeServer struct { grpc.ServerStream } -func (x *geyserSubscribeAccountUpdatesServer) Send(m *TimestampedAccountUpdate) error { +func (x *geyserSubscribeServer) Send(m *SubscribeUpdate) error { return x.ServerStream.SendMsg(m) } -func _Geyser_SubscribeProgramUpdates_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribeProgramsUpdatesRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func (x *geyserSubscribeServer) Recv() (*SubscribeRequest, error) { + m := new(SubscribeRequest) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err } - return srv.(GeyserServer).SubscribeProgramUpdates(m, &geyserSubscribeProgramUpdatesServer{stream}) -} - -type Geyser_SubscribeProgramUpdatesServer interface { - Send(*TimestampedAccountUpdate) error - grpc.ServerStream -} - -type geyserSubscribeProgramUpdatesServer struct { - grpc.ServerStream -} - -func (x *geyserSubscribeProgramUpdatesServer) Send(m *TimestampedAccountUpdate) error { - return x.ServerStream.SendMsg(m) + return m, nil } -func _Geyser_SubscribePartialAccountUpdates_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribePartialAccountUpdatesRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func _Geyser_Ping_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PingRequest) + if err := dec(in); err != nil { + return nil, err } - return srv.(GeyserServer).SubscribePartialAccountUpdates(m, &geyserSubscribePartialAccountUpdatesServer{stream}) -} - -type Geyser_SubscribePartialAccountUpdatesServer interface { - Send(*MaybePartialAccountUpdate) error - grpc.ServerStream -} - -type geyserSubscribePartialAccountUpdatesServer struct { - grpc.ServerStream -} - -func (x *geyserSubscribePartialAccountUpdatesServer) Send(m *MaybePartialAccountUpdate) error { - return x.ServerStream.SendMsg(m) -} - -func _Geyser_SubscribeSlotUpdates_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribeSlotUpdateRequest) - if err := stream.RecvMsg(m); err != nil { - return err + if interceptor == nil { + return srv.(GeyserServer).Ping(ctx, in) } - return srv.(GeyserServer).SubscribeSlotUpdates(m, &geyserSubscribeSlotUpdatesServer{stream}) -} - -type Geyser_SubscribeSlotUpdatesServer interface { - Send(*TimestampedSlotUpdate) error - grpc.ServerStream -} - -type geyserSubscribeSlotUpdatesServer struct { - grpc.ServerStream -} - -func (x *geyserSubscribeSlotUpdatesServer) Send(m *TimestampedSlotUpdate) error { - return x.ServerStream.SendMsg(m) -} - -func _Geyser_SubscribeTransactionUpdates_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribeTransactionUpdatesRequest) - if err := stream.RecvMsg(m); err != nil { - return err + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/geyser.Geyser/Ping", } - return srv.(GeyserServer).SubscribeTransactionUpdates(m, &geyserSubscribeTransactionUpdatesServer{stream}) -} - -type Geyser_SubscribeTransactionUpdatesServer interface { - Send(*TimestampedTransactionUpdate) error - grpc.ServerStream -} - -type geyserSubscribeTransactionUpdatesServer struct { - grpc.ServerStream + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GeyserServer).Ping(ctx, req.(*PingRequest)) + } + return interceptor(ctx, in, info, handler) } -func (x *geyserSubscribeTransactionUpdatesServer) Send(m *TimestampedTransactionUpdate) error { - return x.ServerStream.SendMsg(m) +func _Geyser_GetLatestBlockhash_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetLatestBlockhashRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GeyserServer).GetLatestBlockhash(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/geyser.Geyser/GetLatestBlockhash", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GeyserServer).GetLatestBlockhash(ctx, req.(*GetLatestBlockhashRequest)) + } + return interceptor(ctx, in, info, handler) } -func _Geyser_SubscribeBlockUpdates_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribeBlockUpdatesRequest) - if err := stream.RecvMsg(m); err != nil { - return err +func _Geyser_GetBlockHeight_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBlockHeightRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GeyserServer).GetBlockHeight(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/geyser.Geyser/GetBlockHeight", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GeyserServer).GetBlockHeight(ctx, req.(*GetBlockHeightRequest)) } - return srv.(GeyserServer).SubscribeBlockUpdates(m, &geyserSubscribeBlockUpdatesServer{stream}) + return interceptor(ctx, in, info, handler) } -type Geyser_SubscribeBlockUpdatesServer interface { - Send(*TimestampedBlockUpdate) error - grpc.ServerStream +func _Geyser_GetSlot_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetSlotRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GeyserServer).GetSlot(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/geyser.Geyser/GetSlot", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GeyserServer).GetSlot(ctx, req.(*GetSlotRequest)) + } + return interceptor(ctx, in, info, handler) } -type geyserSubscribeBlockUpdatesServer struct { - grpc.ServerStream +func _Geyser_IsBlockhashValid_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(IsBlockhashValidRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GeyserServer).IsBlockhashValid(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/geyser.Geyser/IsBlockhashValid", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GeyserServer).IsBlockhashValid(ctx, req.(*IsBlockhashValidRequest)) + } + return interceptor(ctx, in, info, handler) } -func (x *geyserSubscribeBlockUpdatesServer) Send(m *TimestampedBlockUpdate) error { - return x.ServerStream.SendMsg(m) +func _Geyser_GetVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetVersionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GeyserServer).GetVersion(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/geyser.Geyser/GetVersion", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GeyserServer).GetVersion(ctx, req.(*GetVersionRequest)) + } + return interceptor(ctx, in, info, handler) } // Geyser_ServiceDesc is the grpc.ServiceDesc for Geyser service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) var Geyser_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "solana.geyser.Geyser", + ServiceName: "geyser.Geyser", HandlerType: (*GeyserServer)(nil), Methods: []grpc.MethodDesc{ { - MethodName: "GetHeartbeatInterval", - Handler: _Geyser_GetHeartbeatInterval_Handler, + MethodName: "Ping", + Handler: _Geyser_Ping_Handler, }, - }, - Streams: []grpc.StreamDesc{ { - StreamName: "SubscribeAccountUpdates", - Handler: _Geyser_SubscribeAccountUpdates_Handler, - ServerStreams: true, + MethodName: "GetLatestBlockhash", + Handler: _Geyser_GetLatestBlockhash_Handler, }, { - StreamName: "SubscribeProgramUpdates", - Handler: _Geyser_SubscribeProgramUpdates_Handler, - ServerStreams: true, + MethodName: "GetBlockHeight", + Handler: _Geyser_GetBlockHeight_Handler, }, { - StreamName: "SubscribePartialAccountUpdates", - Handler: _Geyser_SubscribePartialAccountUpdates_Handler, - ServerStreams: true, + MethodName: "GetSlot", + Handler: _Geyser_GetSlot_Handler, }, { - StreamName: "SubscribeSlotUpdates", - Handler: _Geyser_SubscribeSlotUpdates_Handler, - ServerStreams: true, + MethodName: "IsBlockhashValid", + Handler: _Geyser_IsBlockhashValid_Handler, }, { - StreamName: "SubscribeTransactionUpdates", - Handler: _Geyser_SubscribeTransactionUpdates_Handler, - ServerStreams: true, + MethodName: "GetVersion", + Handler: _Geyser_GetVersion_Handler, }, + }, + Streams: []grpc.StreamDesc{ { - StreamName: "SubscribeBlockUpdates", - Handler: _Geyser_SubscribeBlockUpdates_Handler, + StreamName: "Subscribe", + Handler: _Geyser_Subscribe_Handler, ServerStreams: true, + ClientStreams: true, }, }, Metadata: "geyser.proto", diff --git a/generated/geyser/v1/confirmed_block.pb.go b/generated/geyser/v1/solana-storage.pb.go similarity index 53% rename from generated/geyser/v1/confirmed_block.pb.go rename to generated/geyser/v1/solana-storage.pb.go index 5aaf496..7c6eedd 100644 --- a/generated/geyser/v1/confirmed_block.pb.go +++ b/generated/geyser/v1/solana-storage.pb.go @@ -1,10 +1,10 @@ -// Source: https://github.com/jito-foundation/geyser-grpc-plugin/tree/v1.14.17-jito-1/proto/proto/confirmed_block.proto +// Source: https://github.com/rpcpool/yellowstone-grpc/blob/v6.0.0%2Bsolana.2.2.12/yellowstone-grpc-proto/proto/solana-storage.proto // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.27.1 -// protoc v3.12.4 -// source: confirmed_block.proto +// protoc-gen-go v1.28.1 +// protoc v3.21.12 +// source: solana-storage.proto package geyser @@ -61,11 +61,11 @@ func (x RewardType) String() string { } func (RewardType) Descriptor() protoreflect.EnumDescriptor { - return file_confirmed_block_proto_enumTypes[0].Descriptor() + return file_solana_storage_proto_enumTypes[0].Descriptor() } func (RewardType) Type() protoreflect.EnumType { - return &file_confirmed_block_proto_enumTypes[0] + return &file_solana_storage_proto_enumTypes[0] } func (x RewardType) Number() protoreflect.EnumNumber { @@ -74,7 +74,7 @@ func (x RewardType) Number() protoreflect.EnumNumber { // Deprecated: Use RewardType.Descriptor instead. func (RewardType) EnumDescriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{0} + return file_solana_storage_proto_rawDescGZIP(), []int{0} } type ConfirmedBlock struct { @@ -89,12 +89,13 @@ type ConfirmedBlock struct { Rewards []*Reward `protobuf:"bytes,5,rep,name=rewards,proto3" json:"rewards,omitempty"` BlockTime *UnixTimestamp `protobuf:"bytes,6,opt,name=block_time,json=blockTime,proto3" json:"block_time,omitempty"` BlockHeight *BlockHeight `protobuf:"bytes,7,opt,name=block_height,json=blockHeight,proto3" json:"block_height,omitempty"` + NumPartitions *NumPartitions `protobuf:"bytes,8,opt,name=num_partitions,json=numPartitions,proto3" json:"num_partitions,omitempty"` } func (x *ConfirmedBlock) Reset() { *x = ConfirmedBlock{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[0] + mi := &file_solana_storage_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -107,7 +108,7 @@ func (x *ConfirmedBlock) String() string { func (*ConfirmedBlock) ProtoMessage() {} func (x *ConfirmedBlock) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[0] + mi := &file_solana_storage_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -120,7 +121,7 @@ func (x *ConfirmedBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfirmedBlock.ProtoReflect.Descriptor instead. func (*ConfirmedBlock) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{0} + return file_solana_storage_proto_rawDescGZIP(), []int{0} } func (x *ConfirmedBlock) GetPreviousBlockhash() string { @@ -172,6 +173,13 @@ func (x *ConfirmedBlock) GetBlockHeight() *BlockHeight { return nil } +func (x *ConfirmedBlock) GetNumPartitions() *NumPartitions { + if x != nil { + return x.NumPartitions + } + return nil +} + type ConfirmedTransaction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -184,7 +192,7 @@ type ConfirmedTransaction struct { func (x *ConfirmedTransaction) Reset() { *x = ConfirmedTransaction{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[1] + mi := &file_solana_storage_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -197,7 +205,7 @@ func (x *ConfirmedTransaction) String() string { func (*ConfirmedTransaction) ProtoMessage() {} func (x *ConfirmedTransaction) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[1] + mi := &file_solana_storage_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -210,7 +218,7 @@ func (x *ConfirmedTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfirmedTransaction.ProtoReflect.Descriptor instead. func (*ConfirmedTransaction) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{1} + return file_solana_storage_proto_rawDescGZIP(), []int{1} } func (x *ConfirmedTransaction) GetTransaction() *Transaction { @@ -239,7 +247,7 @@ type Transaction struct { func (x *Transaction) Reset() { *x = Transaction{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[2] + mi := &file_solana_storage_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -252,7 +260,7 @@ func (x *Transaction) String() string { func (*Transaction) ProtoMessage() {} func (x *Transaction) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[2] + mi := &file_solana_storage_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -265,7 +273,7 @@ func (x *Transaction) ProtoReflect() protoreflect.Message { // Deprecated: Use Transaction.ProtoReflect.Descriptor instead. func (*Transaction) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{2} + return file_solana_storage_proto_rawDescGZIP(), []int{2} } func (x *Transaction) GetSignatures() [][]byte { @@ -298,7 +306,7 @@ type Message struct { func (x *Message) Reset() { *x = Message{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[3] + mi := &file_solana_storage_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -311,7 +319,7 @@ func (x *Message) String() string { func (*Message) ProtoMessage() {} func (x *Message) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[3] + mi := &file_solana_storage_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -324,7 +332,7 @@ func (x *Message) ProtoReflect() protoreflect.Message { // Deprecated: Use Message.ProtoReflect.Descriptor instead. func (*Message) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{3} + return file_solana_storage_proto_rawDescGZIP(), []int{3} } func (x *Message) GetHeader() *MessageHeader { @@ -382,7 +390,7 @@ type MessageHeader struct { func (x *MessageHeader) Reset() { *x = MessageHeader{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[4] + mi := &file_solana_storage_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -395,7 +403,7 @@ func (x *MessageHeader) String() string { func (*MessageHeader) ProtoMessage() {} func (x *MessageHeader) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[4] + mi := &file_solana_storage_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -408,7 +416,7 @@ func (x *MessageHeader) ProtoReflect() protoreflect.Message { // Deprecated: Use MessageHeader.ProtoReflect.Descriptor instead. func (*MessageHeader) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{4} + return file_solana_storage_proto_rawDescGZIP(), []int{4} } func (x *MessageHeader) GetNumRequiredSignatures() uint32 { @@ -445,7 +453,7 @@ type MessageAddressTableLookup struct { func (x *MessageAddressTableLookup) Reset() { *x = MessageAddressTableLookup{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[5] + mi := &file_solana_storage_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -458,7 +466,7 @@ func (x *MessageAddressTableLookup) String() string { func (*MessageAddressTableLookup) ProtoMessage() {} func (x *MessageAddressTableLookup) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[5] + mi := &file_solana_storage_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -471,7 +479,7 @@ func (x *MessageAddressTableLookup) ProtoReflect() protoreflect.Message { // Deprecated: Use MessageAddressTableLookup.ProtoReflect.Descriptor instead. func (*MessageAddressTableLookup) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{5} + return file_solana_storage_proto_rawDescGZIP(), []int{5} } func (x *MessageAddressTableLookup) GetAccountKey() []byte { @@ -524,7 +532,7 @@ type TransactionStatusMeta struct { func (x *TransactionStatusMeta) Reset() { *x = TransactionStatusMeta{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[6] + mi := &file_solana_storage_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -537,7 +545,7 @@ func (x *TransactionStatusMeta) String() string { func (*TransactionStatusMeta) ProtoMessage() {} func (x *TransactionStatusMeta) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[6] + mi := &file_solana_storage_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -550,7 +558,7 @@ func (x *TransactionStatusMeta) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionStatusMeta.ProtoReflect.Descriptor instead. func (*TransactionStatusMeta) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{6} + return file_solana_storage_proto_rawDescGZIP(), []int{6} } func (x *TransactionStatusMeta) GetErr() *TransactionError { @@ -676,7 +684,7 @@ type TransactionError struct { func (x *TransactionError) Reset() { *x = TransactionError{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[7] + mi := &file_solana_storage_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -689,7 +697,7 @@ func (x *TransactionError) String() string { func (*TransactionError) ProtoMessage() {} func (x *TransactionError) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[7] + mi := &file_solana_storage_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -702,7 +710,7 @@ func (x *TransactionError) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionError.ProtoReflect.Descriptor instead. func (*TransactionError) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{7} + return file_solana_storage_proto_rawDescGZIP(), []int{7} } func (x *TransactionError) GetErr() []byte { @@ -717,14 +725,14 @@ type InnerInstructions struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` - Instructions []*CompiledInstruction `protobuf:"bytes,2,rep,name=instructions,proto3" json:"instructions,omitempty"` + Index uint32 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"` + Instructions []*InnerInstruction `protobuf:"bytes,2,rep,name=instructions,proto3" json:"instructions,omitempty"` } func (x *InnerInstructions) Reset() { *x = InnerInstructions{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[8] + mi := &file_solana_storage_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -737,7 +745,7 @@ func (x *InnerInstructions) String() string { func (*InnerInstructions) ProtoMessage() {} func (x *InnerInstructions) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[8] + mi := &file_solana_storage_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -750,7 +758,7 @@ func (x *InnerInstructions) ProtoReflect() protoreflect.Message { // Deprecated: Use InnerInstructions.ProtoReflect.Descriptor instead. func (*InnerInstructions) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{8} + return file_solana_storage_proto_rawDescGZIP(), []int{8} } func (x *InnerInstructions) GetIndex() uint32 { @@ -760,13 +768,87 @@ func (x *InnerInstructions) GetIndex() uint32 { return 0 } -func (x *InnerInstructions) GetInstructions() []*CompiledInstruction { +func (x *InnerInstructions) GetInstructions() []*InnerInstruction { if x != nil { return x.Instructions } return nil } +type InnerInstruction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ProgramIdIndex uint32 `protobuf:"varint,1,opt,name=program_id_index,json=programIdIndex,proto3" json:"program_id_index,omitempty"` + Accounts []byte `protobuf:"bytes,2,opt,name=accounts,proto3" json:"accounts,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + // Invocation stack height of an inner instruction. + // Available since Solana v1.14.6 + // Set to `None` for txs executed on earlier versions. + StackHeight *uint32 `protobuf:"varint,4,opt,name=stack_height,json=stackHeight,proto3,oneof" json:"stack_height,omitempty"` +} + +func (x *InnerInstruction) Reset() { + *x = InnerInstruction{} + if protoimpl.UnsafeEnabled { + mi := &file_solana_storage_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InnerInstruction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InnerInstruction) ProtoMessage() {} + +func (x *InnerInstruction) ProtoReflect() protoreflect.Message { + mi := &file_solana_storage_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 InnerInstruction.ProtoReflect.Descriptor instead. +func (*InnerInstruction) Descriptor() ([]byte, []int) { + return file_solana_storage_proto_rawDescGZIP(), []int{9} +} + +func (x *InnerInstruction) GetProgramIdIndex() uint32 { + if x != nil { + return x.ProgramIdIndex + } + return 0 +} + +func (x *InnerInstruction) GetAccounts() []byte { + if x != nil { + return x.Accounts + } + return nil +} + +func (x *InnerInstruction) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +func (x *InnerInstruction) GetStackHeight() uint32 { + if x != nil && x.StackHeight != nil { + return *x.StackHeight + } + return 0 +} + type CompiledInstruction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -780,7 +862,7 @@ type CompiledInstruction struct { func (x *CompiledInstruction) Reset() { *x = CompiledInstruction{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[9] + mi := &file_solana_storage_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -793,7 +875,7 @@ func (x *CompiledInstruction) String() string { func (*CompiledInstruction) ProtoMessage() {} func (x *CompiledInstruction) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[9] + mi := &file_solana_storage_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -806,7 +888,7 @@ func (x *CompiledInstruction) ProtoReflect() protoreflect.Message { // Deprecated: Use CompiledInstruction.ProtoReflect.Descriptor instead. func (*CompiledInstruction) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{9} + return file_solana_storage_proto_rawDescGZIP(), []int{10} } func (x *CompiledInstruction) GetProgramIdIndex() uint32 { @@ -845,7 +927,7 @@ type TokenBalance struct { func (x *TokenBalance) Reset() { *x = TokenBalance{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[10] + mi := &file_solana_storage_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -858,7 +940,7 @@ func (x *TokenBalance) String() string { func (*TokenBalance) ProtoMessage() {} func (x *TokenBalance) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[10] + mi := &file_solana_storage_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -871,7 +953,7 @@ func (x *TokenBalance) ProtoReflect() protoreflect.Message { // Deprecated: Use TokenBalance.ProtoReflect.Descriptor instead. func (*TokenBalance) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{10} + return file_solana_storage_proto_rawDescGZIP(), []int{11} } func (x *TokenBalance) GetAccountIndex() uint32 { @@ -923,7 +1005,7 @@ type UiTokenAmount struct { func (x *UiTokenAmount) Reset() { *x = UiTokenAmount{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[11] + mi := &file_solana_storage_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -936,7 +1018,7 @@ func (x *UiTokenAmount) String() string { func (*UiTokenAmount) ProtoMessage() {} func (x *UiTokenAmount) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[11] + mi := &file_solana_storage_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -949,7 +1031,7 @@ func (x *UiTokenAmount) ProtoReflect() protoreflect.Message { // Deprecated: Use UiTokenAmount.ProtoReflect.Descriptor instead. func (*UiTokenAmount) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{11} + return file_solana_storage_proto_rawDescGZIP(), []int{12} } func (x *UiTokenAmount) GetUiAmount() float64 { @@ -992,7 +1074,7 @@ type ReturnData struct { func (x *ReturnData) Reset() { *x = ReturnData{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[12] + mi := &file_solana_storage_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1005,7 +1087,7 @@ func (x *ReturnData) String() string { func (*ReturnData) ProtoMessage() {} func (x *ReturnData) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[12] + mi := &file_solana_storage_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1018,7 +1100,7 @@ func (x *ReturnData) ProtoReflect() protoreflect.Message { // Deprecated: Use ReturnData.ProtoReflect.Descriptor instead. func (*ReturnData) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{12} + return file_solana_storage_proto_rawDescGZIP(), []int{13} } func (x *ReturnData) GetProgramId() []byte { @@ -1050,7 +1132,7 @@ type Reward struct { func (x *Reward) Reset() { *x = Reward{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[13] + mi := &file_solana_storage_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1063,7 +1145,7 @@ func (x *Reward) String() string { func (*Reward) ProtoMessage() {} func (x *Reward) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[13] + mi := &file_solana_storage_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1076,7 +1158,7 @@ func (x *Reward) ProtoReflect() protoreflect.Message { // Deprecated: Use Reward.ProtoReflect.Descriptor instead. func (*Reward) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{13} + return file_solana_storage_proto_rawDescGZIP(), []int{14} } func (x *Reward) GetPubkey() string { @@ -1119,13 +1201,14 @@ type Rewards struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Rewards []*Reward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards,omitempty"` + Rewards []*Reward `protobuf:"bytes,1,rep,name=rewards,proto3" json:"rewards,omitempty"` + NumPartitions *NumPartitions `protobuf:"bytes,2,opt,name=num_partitions,json=numPartitions,proto3" json:"num_partitions,omitempty"` } func (x *Rewards) Reset() { *x = Rewards{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[14] + mi := &file_solana_storage_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1138,7 +1221,7 @@ func (x *Rewards) String() string { func (*Rewards) ProtoMessage() {} func (x *Rewards) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[14] + mi := &file_solana_storage_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1151,7 +1234,7 @@ func (x *Rewards) ProtoReflect() protoreflect.Message { // Deprecated: Use Rewards.ProtoReflect.Descriptor instead. func (*Rewards) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{14} + return file_solana_storage_proto_rawDescGZIP(), []int{15} } func (x *Rewards) GetRewards() []*Reward { @@ -1161,6 +1244,13 @@ func (x *Rewards) GetRewards() []*Reward { return nil } +func (x *Rewards) GetNumPartitions() *NumPartitions { + if x != nil { + return x.NumPartitions + } + return nil +} + type UnixTimestamp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1172,7 +1262,7 @@ type UnixTimestamp struct { func (x *UnixTimestamp) Reset() { *x = UnixTimestamp{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[15] + mi := &file_solana_storage_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1185,7 +1275,7 @@ func (x *UnixTimestamp) String() string { func (*UnixTimestamp) ProtoMessage() {} func (x *UnixTimestamp) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[15] + mi := &file_solana_storage_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1198,7 +1288,7 @@ func (x *UnixTimestamp) ProtoReflect() protoreflect.Message { // Deprecated: Use UnixTimestamp.ProtoReflect.Descriptor instead. func (*UnixTimestamp) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{15} + return file_solana_storage_proto_rawDescGZIP(), []int{16} } func (x *UnixTimestamp) GetTimestamp() int64 { @@ -1219,7 +1309,7 @@ type BlockHeight struct { func (x *BlockHeight) Reset() { *x = BlockHeight{} if protoimpl.UnsafeEnabled { - mi := &file_confirmed_block_proto_msgTypes[16] + mi := &file_solana_storage_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1232,7 +1322,7 @@ func (x *BlockHeight) String() string { func (*BlockHeight) ProtoMessage() {} func (x *BlockHeight) ProtoReflect() protoreflect.Message { - mi := &file_confirmed_block_proto_msgTypes[16] + mi := &file_solana_storage_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1245,7 +1335,7 @@ func (x *BlockHeight) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockHeight.ProtoReflect.Descriptor instead. func (*BlockHeight) Descriptor() ([]byte, []int) { - return file_confirmed_block_proto_rawDescGZIP(), []int{16} + return file_solana_storage_proto_rawDescGZIP(), []int{17} } func (x *BlockHeight) GetBlockHeight() uint64 { @@ -1255,257 +1345,329 @@ func (x *BlockHeight) GetBlockHeight() uint64 { return 0 } -var File_confirmed_block_proto protoreflect.FileDescriptor +type NumPartitions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields -var file_confirmed_block_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x5f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, - 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xb4, 0x03, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x57, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, - 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, - 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x73, 0x12, 0x4b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, + NumPartitions uint64 `protobuf:"varint,1,opt,name=num_partitions,json=numPartitions,proto3" json:"num_partitions,omitempty"` +} + +func (x *NumPartitions) Reset() { + *x = NumPartitions{} + if protoimpl.UnsafeEnabled { + mi := &file_solana_storage_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *NumPartitions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NumPartitions) ProtoMessage() {} + +func (x *NumPartitions) ProtoReflect() protoreflect.Message { + mi := &file_solana_storage_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 NumPartitions.ProtoReflect.Descriptor instead. +func (*NumPartitions) Descriptor() ([]byte, []int) { + return file_solana_storage_proto_rawDescGZIP(), []int{18} +} + +func (x *NumPartitions) GetNumPartitions() uint64 { + if x != nil { + return x.NumPartitions + } + return 0 +} + +var File_solana_storage_proto protoreflect.FileDescriptor + +var file_solana_storage_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4d, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x89, 0x04, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x76, + 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x57, 0x0a, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, + 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, + 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, + 0x12, 0x4b, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0xae, 0x01, - 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x22, 0x6f, - 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, - 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x40, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, - 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, - 0x81, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x06, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, - 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x12, - 0x56, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x6e, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x6c, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, + 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, + 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x53, 0x0a, 0x0e, + 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x13, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, - 0x75, 0x70, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x71, - 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x69, - 0x72, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x3f, 0x0a, - 0x1c, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x73, 0x69, - 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x19, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, - 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x43, - 0x0a, 0x1e, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x75, - 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x61, 0x64, 0x6f, - 0x6e, 0x6c, 0x79, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x19, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, - 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4b, - 0x65, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x77, 0x72, - 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x12, 0x29, 0x0a, - 0x10, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, - 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0xd9, 0x07, 0x0a, 0x15, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, - 0x74, 0x61, 0x12, 0x41, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x4e, 0x75, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0xae, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4c, 0x0a, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2a, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x03, 0x65, 0x72, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x65, 0x5f, 0x62, - 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0b, 0x70, - 0x72, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x6f, - 0x73, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x04, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x5f, 0x0a, 0x12, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x6f, - 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x49, 0x6e, 0x6e, 0x65, - 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x69, - 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x36, 0x0a, 0x17, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x15, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x6f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x5f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, - 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6c, - 0x6f, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x4e, 0x6f, 0x6e, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, + 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, + 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x04, 0x6d, 0x65, + 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x0b, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x12, 0x40, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x81, 0x03, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x44, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0b, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x63, 0x65, + 0x6e, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x68, + 0x61, 0x73, 0x68, 0x12, 0x56, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x6f, 0x6c, 0x61, + 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x69, + 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x65, 0x64, 0x12, 0x6c, 0x0a, 0x15, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, + 0x70, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, + 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x6f, 0x6f, 0x6b, + 0x75, 0x70, 0x52, 0x13, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x73, 0x22, 0xcd, 0x01, 0x0a, 0x0d, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x17, 0x6e, 0x75, 0x6d, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x15, 0x6e, 0x75, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, + 0x79, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x61, 0x64, + 0x6f, 0x6e, 0x6c, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x12, 0x43, 0x0a, 0x1e, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, + 0x6c, 0x79, 0x5f, 0x75, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x1b, 0x6e, 0x75, 0x6d, 0x52, + 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x55, 0x6e, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x19, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4c, + 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x0f, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, + 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x72, 0x65, 0x61, + 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x65, 0x73, 0x22, 0xd9, 0x07, 0x0a, + 0x15, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x41, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, + 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x03, 0x65, 0x72, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, + 0x72, 0x65, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x04, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x12, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x30, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, + 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x11, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x5f, 0x69, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4e, 0x6f, 0x6e, 0x65, 0x12, 0x21, 0x0a, 0x0c, + 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, + 0x2a, 0x0a, 0x11, 0x6c, 0x6f, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f, + 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x6c, 0x6f, 0x67, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x4e, 0x6f, 0x6e, 0x65, 0x12, 0x59, 0x0a, 0x12, 0x70, + 0x72, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, + 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, + 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x10, 0x70, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x10, 0x70, 0x72, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x13, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x2b, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, + 0x52, 0x11, 0x70, 0x6f, 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x77, + 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x17, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x57, + 0x72, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, + 0x6e, 0x6c, 0x79, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0d, 0x20, + 0x03, 0x28, 0x0c, 0x52, 0x17, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x52, 0x65, 0x61, 0x64, 0x6f, + 0x6e, 0x6c, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0b, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x0f, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x4e, 0x6f, + 0x6e, 0x65, 0x12, 0x39, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x6e, + 0x69, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, + 0x28, 0x04, 0x48, 0x00, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x55, 0x6e, 0x69, + 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, + 0x17, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x5f, + 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, + 0x65, 0x72, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x7e, + 0x0a, 0x11, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x53, 0x0a, 0x0c, 0x69, 0x6e, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2f, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x11, 0x70, 0x6f, - 0x73, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, - 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0c, 0x20, - 0x03, 0x28, 0x0c, 0x52, 0x17, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x57, 0x72, 0x69, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x19, - 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x5f, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0c, 0x52, - 0x17, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x52, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0b, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa5, + 0x01, 0x0a, 0x10, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, + 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, + 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x26, 0x0a, + 0x0c, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x6f, 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, + 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, + 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x49, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, + 0x04, 0x6d, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x69, 0x6e, + 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x75, 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, + 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x55, 0x69, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x0d, 0x75, 0x69, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x8a, 0x01, 0x0a, + 0x0d, 0x55, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x75, 0x69, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x08, 0x75, 0x69, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x28, 0x0a, 0x10, 0x75, 0x69, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x69, 0x41, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x3f, 0x0a, 0x0a, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xcb, 0x01, 0x0a, 0x06, 0x52, + 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x08, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x73, + 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x0b, + 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x9f, 0x01, 0x0a, 0x07, 0x52, 0x65, 0x77, + 0x61, 0x72, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x53, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x6e, 0x6f, 0x6e, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x4e, 0x6f, 0x6e, 0x65, 0x12, 0x39, - 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x5f, - 0x63, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, - 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x43, 0x6f, - 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x64, 0x88, 0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x63, 0x6f, - 0x6d, 0x70, 0x75, 0x74, 0x65, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x64, 0x22, 0x24, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x49, - 0x6e, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x56, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, - 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x43, 0x6f, 0x6d, - 0x70, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0c, 0x69, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x6f, - 0x0a, 0x13, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x5f, 0x69, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0e, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, - 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x69, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x0f, 0x75, 0x69, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x2e, 0x55, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x0d, 0x75, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x49, 0x64, 0x22, 0x8a, 0x01, 0x0a, 0x0d, 0x55, 0x69, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x69, 0x5f, 0x61, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x75, 0x69, 0x41, 0x6d, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x73, 0x12, - 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x69, 0x5f, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x75, 0x69, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x22, 0x3f, 0x0a, 0x0a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, - 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0xcb, 0x01, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6c, 0x61, 0x6d, 0x70, 0x6f, 0x72, 0x74, - 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x6f, 0x73, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x73, 0x6f, 0x6c, 0x61, - 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x22, 0x4a, 0x0a, 0x07, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x3f, 0x0a, 0x07, 0x72, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, - 0x6f, 0x6c, 0x61, 0x6e, 0x61, 0x2e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x22, 0x2d, 0x0a, 0x0d, - 0x55, 0x6e, 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x30, 0x0a, 0x0b, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x2a, 0x49, 0x0a, - 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, - 0x46, 0x65, 0x65, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x6e, 0x74, 0x10, 0x02, 0x12, - 0x0b, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, - 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x3b, 0x67, 0x65, - 0x79, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x2e, 0x4e, 0x75, + 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0d, 0x6e, 0x75, 0x6d, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x2d, 0x0a, 0x0d, 0x55, 0x6e, + 0x69, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x30, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x36, 0x0a, 0x0d, 0x4e, + 0x75, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0e, + 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2a, 0x49, 0x0a, 0x0a, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x65, 0x65, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x52, + 0x65, 0x6e, 0x74, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x6b, 0x69, 0x6e, 0x67, + 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x10, 0x04, 0x42, 0x0a, + 0x5a, 0x08, 0x2e, 0x3b, 0x67, 0x65, 0x79, 0x73, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( - file_confirmed_block_proto_rawDescOnce sync.Once - file_confirmed_block_proto_rawDescData = file_confirmed_block_proto_rawDesc + file_solana_storage_proto_rawDescOnce sync.Once + file_solana_storage_proto_rawDescData = file_solana_storage_proto_rawDesc ) -func file_confirmed_block_proto_rawDescGZIP() []byte { - file_confirmed_block_proto_rawDescOnce.Do(func() { - file_confirmed_block_proto_rawDescData = protoimpl.X.CompressGZIP(file_confirmed_block_proto_rawDescData) +func file_solana_storage_proto_rawDescGZIP() []byte { + file_solana_storage_proto_rawDescOnce.Do(func() { + file_solana_storage_proto_rawDescData = protoimpl.X.CompressGZIP(file_solana_storage_proto_rawDescData) }) - return file_confirmed_block_proto_rawDescData + return file_solana_storage_proto_rawDescData } -var file_confirmed_block_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_confirmed_block_proto_msgTypes = make([]protoimpl.MessageInfo, 17) -var file_confirmed_block_proto_goTypes = []interface{}{ +var file_solana_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_solana_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_solana_storage_proto_goTypes = []interface{}{ (RewardType)(0), // 0: solana.storage.ConfirmedBlock.RewardType (*ConfirmedBlock)(nil), // 1: solana.storage.ConfirmedBlock.ConfirmedBlock (*ConfirmedTransaction)(nil), // 2: solana.storage.ConfirmedBlock.ConfirmedTransaction @@ -1516,50 +1678,54 @@ var file_confirmed_block_proto_goTypes = []interface{}{ (*TransactionStatusMeta)(nil), // 7: solana.storage.ConfirmedBlock.TransactionStatusMeta (*TransactionError)(nil), // 8: solana.storage.ConfirmedBlock.TransactionError (*InnerInstructions)(nil), // 9: solana.storage.ConfirmedBlock.InnerInstructions - (*CompiledInstruction)(nil), // 10: solana.storage.ConfirmedBlock.CompiledInstruction - (*TokenBalance)(nil), // 11: solana.storage.ConfirmedBlock.TokenBalance - (*UiTokenAmount)(nil), // 12: solana.storage.ConfirmedBlock.UiTokenAmount - (*ReturnData)(nil), // 13: solana.storage.ConfirmedBlock.ReturnData - (*Reward)(nil), // 14: solana.storage.ConfirmedBlock.Reward - (*Rewards)(nil), // 15: solana.storage.ConfirmedBlock.Rewards - (*UnixTimestamp)(nil), // 16: solana.storage.ConfirmedBlock.UnixTimestamp - (*BlockHeight)(nil), // 17: solana.storage.ConfirmedBlock.BlockHeight -} -var file_confirmed_block_proto_depIdxs = []int32{ + (*InnerInstruction)(nil), // 10: solana.storage.ConfirmedBlock.InnerInstruction + (*CompiledInstruction)(nil), // 11: solana.storage.ConfirmedBlock.CompiledInstruction + (*TokenBalance)(nil), // 12: solana.storage.ConfirmedBlock.TokenBalance + (*UiTokenAmount)(nil), // 13: solana.storage.ConfirmedBlock.UiTokenAmount + (*ReturnData)(nil), // 14: solana.storage.ConfirmedBlock.ReturnData + (*Reward)(nil), // 15: solana.storage.ConfirmedBlock.Reward + (*Rewards)(nil), // 16: solana.storage.ConfirmedBlock.Rewards + (*UnixTimestamp)(nil), // 17: solana.storage.ConfirmedBlock.UnixTimestamp + (*BlockHeight)(nil), // 18: solana.storage.ConfirmedBlock.BlockHeight + (*NumPartitions)(nil), // 19: solana.storage.ConfirmedBlock.NumPartitions +} +var file_solana_storage_proto_depIdxs = []int32{ 2, // 0: solana.storage.ConfirmedBlock.ConfirmedBlock.transactions:type_name -> solana.storage.ConfirmedBlock.ConfirmedTransaction - 14, // 1: solana.storage.ConfirmedBlock.ConfirmedBlock.rewards:type_name -> solana.storage.ConfirmedBlock.Reward - 16, // 2: solana.storage.ConfirmedBlock.ConfirmedBlock.block_time:type_name -> solana.storage.ConfirmedBlock.UnixTimestamp - 17, // 3: solana.storage.ConfirmedBlock.ConfirmedBlock.block_height:type_name -> solana.storage.ConfirmedBlock.BlockHeight - 3, // 4: solana.storage.ConfirmedBlock.ConfirmedTransaction.transaction:type_name -> solana.storage.ConfirmedBlock.Transaction - 7, // 5: solana.storage.ConfirmedBlock.ConfirmedTransaction.meta:type_name -> solana.storage.ConfirmedBlock.TransactionStatusMeta - 4, // 6: solana.storage.ConfirmedBlock.Transaction.message:type_name -> solana.storage.ConfirmedBlock.Message - 5, // 7: solana.storage.ConfirmedBlock.Message.header:type_name -> solana.storage.ConfirmedBlock.MessageHeader - 10, // 8: solana.storage.ConfirmedBlock.Message.instructions:type_name -> solana.storage.ConfirmedBlock.CompiledInstruction - 6, // 9: solana.storage.ConfirmedBlock.Message.address_table_lookups:type_name -> solana.storage.ConfirmedBlock.MessageAddressTableLookup - 8, // 10: solana.storage.ConfirmedBlock.TransactionStatusMeta.err:type_name -> solana.storage.ConfirmedBlock.TransactionError - 9, // 11: solana.storage.ConfirmedBlock.TransactionStatusMeta.inner_instructions:type_name -> solana.storage.ConfirmedBlock.InnerInstructions - 11, // 12: solana.storage.ConfirmedBlock.TransactionStatusMeta.pre_token_balances:type_name -> solana.storage.ConfirmedBlock.TokenBalance - 11, // 13: solana.storage.ConfirmedBlock.TransactionStatusMeta.post_token_balances:type_name -> solana.storage.ConfirmedBlock.TokenBalance - 14, // 14: solana.storage.ConfirmedBlock.TransactionStatusMeta.rewards:type_name -> solana.storage.ConfirmedBlock.Reward - 13, // 15: solana.storage.ConfirmedBlock.TransactionStatusMeta.return_data:type_name -> solana.storage.ConfirmedBlock.ReturnData - 10, // 16: solana.storage.ConfirmedBlock.InnerInstructions.instructions:type_name -> solana.storage.ConfirmedBlock.CompiledInstruction - 12, // 17: solana.storage.ConfirmedBlock.TokenBalance.ui_token_amount:type_name -> solana.storage.ConfirmedBlock.UiTokenAmount - 0, // 18: solana.storage.ConfirmedBlock.Reward.reward_type:type_name -> solana.storage.ConfirmedBlock.RewardType - 14, // 19: solana.storage.ConfirmedBlock.Rewards.rewards:type_name -> solana.storage.ConfirmedBlock.Reward - 20, // [20:20] is the sub-list for method output_type - 20, // [20:20] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name -} - -func init() { file_confirmed_block_proto_init() } -func file_confirmed_block_proto_init() { - if File_confirmed_block_proto != nil { + 15, // 1: solana.storage.ConfirmedBlock.ConfirmedBlock.rewards:type_name -> solana.storage.ConfirmedBlock.Reward + 17, // 2: solana.storage.ConfirmedBlock.ConfirmedBlock.block_time:type_name -> solana.storage.ConfirmedBlock.UnixTimestamp + 18, // 3: solana.storage.ConfirmedBlock.ConfirmedBlock.block_height:type_name -> solana.storage.ConfirmedBlock.BlockHeight + 19, // 4: solana.storage.ConfirmedBlock.ConfirmedBlock.num_partitions:type_name -> solana.storage.ConfirmedBlock.NumPartitions + 3, // 5: solana.storage.ConfirmedBlock.ConfirmedTransaction.transaction:type_name -> solana.storage.ConfirmedBlock.Transaction + 7, // 6: solana.storage.ConfirmedBlock.ConfirmedTransaction.meta:type_name -> solana.storage.ConfirmedBlock.TransactionStatusMeta + 4, // 7: solana.storage.ConfirmedBlock.Transaction.message:type_name -> solana.storage.ConfirmedBlock.Message + 5, // 8: solana.storage.ConfirmedBlock.Message.header:type_name -> solana.storage.ConfirmedBlock.MessageHeader + 11, // 9: solana.storage.ConfirmedBlock.Message.instructions:type_name -> solana.storage.ConfirmedBlock.CompiledInstruction + 6, // 10: solana.storage.ConfirmedBlock.Message.address_table_lookups:type_name -> solana.storage.ConfirmedBlock.MessageAddressTableLookup + 8, // 11: solana.storage.ConfirmedBlock.TransactionStatusMeta.err:type_name -> solana.storage.ConfirmedBlock.TransactionError + 9, // 12: solana.storage.ConfirmedBlock.TransactionStatusMeta.inner_instructions:type_name -> solana.storage.ConfirmedBlock.InnerInstructions + 12, // 13: solana.storage.ConfirmedBlock.TransactionStatusMeta.pre_token_balances:type_name -> solana.storage.ConfirmedBlock.TokenBalance + 12, // 14: solana.storage.ConfirmedBlock.TransactionStatusMeta.post_token_balances:type_name -> solana.storage.ConfirmedBlock.TokenBalance + 15, // 15: solana.storage.ConfirmedBlock.TransactionStatusMeta.rewards:type_name -> solana.storage.ConfirmedBlock.Reward + 14, // 16: solana.storage.ConfirmedBlock.TransactionStatusMeta.return_data:type_name -> solana.storage.ConfirmedBlock.ReturnData + 10, // 17: solana.storage.ConfirmedBlock.InnerInstructions.instructions:type_name -> solana.storage.ConfirmedBlock.InnerInstruction + 13, // 18: solana.storage.ConfirmedBlock.TokenBalance.ui_token_amount:type_name -> solana.storage.ConfirmedBlock.UiTokenAmount + 0, // 19: solana.storage.ConfirmedBlock.Reward.reward_type:type_name -> solana.storage.ConfirmedBlock.RewardType + 15, // 20: solana.storage.ConfirmedBlock.Rewards.rewards:type_name -> solana.storage.ConfirmedBlock.Reward + 19, // 21: solana.storage.ConfirmedBlock.Rewards.num_partitions:type_name -> solana.storage.ConfirmedBlock.NumPartitions + 22, // [22:22] is the sub-list for method output_type + 22, // [22:22] is the sub-list for method input_type + 22, // [22:22] is the sub-list for extension type_name + 22, // [22:22] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name +} + +func init() { file_solana_storage_proto_init() } +func file_solana_storage_proto_init() { + if File_solana_storage_proto != nil { return } if !protoimpl.UnsafeEnabled { - file_confirmed_block_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfirmedBlock); i { case 0: return &v.state @@ -1571,7 +1737,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfirmedTransaction); i { case 0: return &v.state @@ -1583,7 +1749,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Transaction); i { case 0: return &v.state @@ -1595,7 +1761,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Message); i { case 0: return &v.state @@ -1607,7 +1773,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageHeader); i { case 0: return &v.state @@ -1619,7 +1785,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MessageAddressTableLookup); i { case 0: return &v.state @@ -1631,7 +1797,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransactionStatusMeta); i { case 0: return &v.state @@ -1643,7 +1809,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TransactionError); i { case 0: return &v.state @@ -1655,7 +1821,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*InnerInstructions); i { case 0: return &v.state @@ -1667,7 +1833,19 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InnerInstruction); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_solana_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CompiledInstruction); i { case 0: return &v.state @@ -1679,7 +1857,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TokenBalance); i { case 0: return &v.state @@ -1691,7 +1869,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UiTokenAmount); i { case 0: return &v.state @@ -1703,7 +1881,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ReturnData); i { case 0: return &v.state @@ -1715,7 +1893,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Reward); i { case 0: return &v.state @@ -1727,7 +1905,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Rewards); i { case 0: return &v.state @@ -1739,7 +1917,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UnixTimestamp); i { case 0: return &v.state @@ -1751,7 +1929,7 @@ func file_confirmed_block_proto_init() { return nil } } - file_confirmed_block_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_solana_storage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockHeight); i { case 0: return &v.state @@ -1763,25 +1941,38 @@ func file_confirmed_block_proto_init() { return nil } } + file_solana_storage_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*NumPartitions); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } - file_confirmed_block_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_solana_storage_proto_msgTypes[6].OneofWrappers = []interface{}{} + file_solana_storage_proto_msgTypes[9].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_confirmed_block_proto_rawDesc, + RawDescriptor: file_solana_storage_proto_rawDesc, NumEnums: 1, - NumMessages: 17, + NumMessages: 19, NumExtensions: 0, NumServices: 0, }, - GoTypes: file_confirmed_block_proto_goTypes, - DependencyIndexes: file_confirmed_block_proto_depIdxs, - EnumInfos: file_confirmed_block_proto_enumTypes, - MessageInfos: file_confirmed_block_proto_msgTypes, + GoTypes: file_solana_storage_proto_goTypes, + DependencyIndexes: file_solana_storage_proto_depIdxs, + EnumInfos: file_solana_storage_proto_enumTypes, + MessageInfos: file_solana_storage_proto_msgTypes, }.Build() - File_confirmed_block_proto = out.File - file_confirmed_block_proto_rawDesc = nil - file_confirmed_block_proto_goTypes = nil - file_confirmed_block_proto_depIdxs = nil + File_solana_storage_proto = out.File + file_solana_storage_proto_rawDesc = nil + file_solana_storage_proto_goTypes = nil + file_solana_storage_proto_depIdxs = nil } diff --git a/geyser/config.go b/geyser/config.go index 5076add..2552704 100644 --- a/geyser/config.go +++ b/geyser/config.go @@ -13,6 +13,9 @@ const ( GrpcPluginEndointConfigEnvName = envConfigPrefix + "GRPC_PLUGIN_ENDPOINT" defaultGrpcPluginEndoint = "" + GrpcPluginXTokenConfigEnvName = envConfigPrefix + "GRPC_PLUGIN_X_TOKEN" + defaultGrpcPluginXToken = "" + ProgramUpdateWorkerCountConfigEnvName = envConfigPrefix + "PROGRAM_UPDATE_WORKER_COUNT" defaultProgramUpdateWorkerCount = 1024 @@ -28,6 +31,7 @@ const ( type conf struct { grpcPluginEndpoint config.String + grpcPluginXToken config.String programUpdateWorkerCount config.Uint64 programUpdateQueueSize config.Uint64 @@ -45,6 +49,7 @@ func WithEnvConfigs() ConfigProvider { return func() *conf { return &conf{ grpcPluginEndpoint: env.NewStringConfig(GrpcPluginEndointConfigEnvName, defaultGrpcPluginEndoint), + grpcPluginXToken: env.NewStringConfig(GrpcPluginXTokenConfigEnvName, defaultGrpcPluginXToken), programUpdateWorkerCount: env.NewUint64Config(ProgramUpdateWorkerCountConfigEnvName, defaultProgramUpdateWorkerCount), programUpdateQueueSize: env.NewUint64Config(ProgramUpdateQueueSizeConfigEnvName, defaultProgramUpdateQueueSize), diff --git a/geyser/consumer.go b/geyser/consumer.go index 58db9e9..675a981 100644 --- a/geyser/consumer.go +++ b/geyser/consumer.go @@ -20,7 +20,7 @@ func (w *Worker) consumeGeyserProgramUpdateEvents(ctx context.Context) error { default: } - err := w.subscribeToProgramUpdatesFromGeyser(ctx, w.conf.grpcPluginEndpoint.Get(ctx)) + err := w.subscribeToProgramUpdatesFromGeyser(ctx, w.conf.grpcPluginEndpoint.Get(ctx), w.conf.grpcPluginXToken.Get(ctx)) if err != nil && !errors.Is(err, context.Canceled) { log.WithError(err).Warn("program update consumer unexpectedly terminated") } @@ -44,16 +44,16 @@ func (w *Worker) programUpdateWorker(ctx context.Context, id int) { for update := range w.programUpdatesChan { func() { - base58PublicKey := base58.Encode(update.Pubkey) - base58ProgramAddress := base58.Encode(update.Owner) + base58PublicKey := base58.Encode(update.Account.Pubkey) + base58ProgramAddress := base58.Encode(update.Account.Owner) log := log.WithFields(logrus.Fields{ "account": base58PublicKey, "program": base58ProgramAddress, "slot": update.Slot, }) - if update.TxSignature != nil { - log = log.WithField("transaction", *update.TxSignature) + if len(update.Account.TxnSignature) > 0 { + log = log.WithField("transaction", base58.Encode(update.Account.TxnSignature)) } handler, ok := w.programUpdateHandlers[base58ProgramAddress] diff --git a/geyser/handler.go b/geyser/handler.go index 83c7177..5b90a1e 100644 --- a/geyser/handler.go +++ b/geyser/handler.go @@ -17,7 +17,7 @@ type ProgramAccountUpdateHandler interface { // to come in order. Implementations must be idempotent and should not // trust the account data passed in. Always refer to finalized blockchain // state from another RPC provider. - Handle(ctx context.Context, update *geyserpb.AccountUpdate) error + Handle(ctx context.Context, update *geyserpb.SubscribeUpdateAccount) error // RunBackupWorker runs the backup worker for the handler, which should // periodically fill any gaps of data due to missed real-time events from diff --git a/geyser/handler_memory.go b/geyser/handler_memory.go index d1f72d3..ce933ee 100644 --- a/geyser/handler_memory.go +++ b/geyser/handler_memory.go @@ -74,14 +74,14 @@ func NewMemoryAccountWithDataUpdateHandler(solanaClient solana.Client, ramStore } // Handle implements geyser.ProgramAccountUpdateHandler.Handle -func (h *MemoryAccountWithDataUpdateHandler) Handle(ctx context.Context, update *geyserpb.AccountUpdate) error { +func (h *MemoryAccountWithDataUpdateHandler) Handle(ctx context.Context, update *geyserpb.SubscribeUpdateAccount) error { // Simply fetch finalized account state as the safest option var finalizedData []byte var finalizedSlot uint64 var err error _, err = retry.Retry( func() error { - finalizedData, finalizedSlot, err = h.solanaClient.GetAccountDataAfterBlock(update.Pubkey, update.Slot) + finalizedData, finalizedSlot, err = h.solanaClient.GetAccountDataAfterBlock(update.Account.Pubkey, update.Slot) return err }, waitForFinalizationRetryStrategies..., @@ -94,7 +94,7 @@ func (h *MemoryAccountWithDataUpdateHandler) Handle(ctx context.Context, update if err := state.Unmarshal(finalizedData); err != nil { return nil } - return h.onStateObserved(ctx, update.Pubkey, finalizedSlot, &state) + return h.onStateObserved(ctx, update.Account.Pubkey, finalizedSlot, &state) } // RunBackupWorker implements geyser.ProgramAccountUpdateHandler.RunBackupWorker diff --git a/geyser/server.go b/geyser/server.go index 32af4be..99f5d4f 100644 --- a/geyser/server.go +++ b/geyser/server.go @@ -17,7 +17,7 @@ type Worker struct { log *logrus.Entry conf *conf - programUpdatesChan chan *geyserpb.AccountUpdate + programUpdatesChan chan *geyserpb.SubscribeUpdateAccount programUpdateHandlers map[string]ProgramAccountUpdateHandler } @@ -28,7 +28,7 @@ func NewWorker(ctx context.Context, solanaClient solana.Client, ramStore ram.Sto log: logrus.StandardLogger().WithField("type", "geyser/worker"), conf: conf, - programUpdatesChan: make(chan *geyserpb.AccountUpdate, conf.programUpdateQueueSize.Get(context.Background())), + programUpdatesChan: make(chan *geyserpb.SubscribeUpdateAccount, conf.programUpdateQueueSize.Get(context.Background())), programUpdateHandlers: initializeProgramAccountUpdateHandlers(conf, solanaClient, ramStore), } } diff --git a/geyser/subscription.go b/geyser/subscription.go index 1307414..ffa970f 100644 --- a/geyser/subscription.go +++ b/geyser/subscription.go @@ -4,13 +4,15 @@ import ( "context" "time" + "github.com/mr-tron/base58" "github.com/pkg/errors" - - "github.com/code-payments/code-server/pkg/solana/cvm" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/metadata" geyserpb "github.com/code-payments/code-vm-indexer/generated/geyser/v1" + + "github.com/code-payments/code-server/pkg/solana/cvm" ) const ( @@ -18,34 +20,30 @@ const ( ) var ( - ErrSubscriptionFallenBehind = errors.New("subscription stream fell behind") - ErrTimeoutReceivingUpdate = errors.New("timed out receiving update") + ErrTimeoutReceivingUpdate = errors.New("timed out receiving update") ) -func newGeyserClient(ctx context.Context, endpoint string) (geyserpb.GeyserClient, error) { - conn, err := grpc.Dial(endpoint, grpc.WithTransportCredentials(insecure.NewCredentials())) +func newGeyserClient(endpoint, xToken string) (geyserpb.GeyserClient, error) { + opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} + if len(xToken) > 0 { + opts = append( + opts, + grpc.WithUnaryInterceptor(newXTokenUnaryClientInterceptor(xToken)), + grpc.WithStreamInterceptor(newXTokenStreamClientInterceptor(xToken)), + ) + } + + conn, err := grpc.NewClient(endpoint, opts...) if err != nil { return nil, err } client := geyserpb.NewGeyserClient(conn) - // Unfortunately the RPCs we use no longer support hearbeats. We'll let each - // individual subscriber determine what an appropriate timeout to receive a - // message should be. - /* - heartbeatResp, err := client.GetHeartbeatInterval(ctx, &geyserpb.EmptyRequest{}) - if err != nil { - return nil, 0, errors.Wrap(err, "error getting heartbeat interval") - } - - heartbeatTimeout := time.Duration(2 * heartbeatResp.HeartbeatIntervalMs * uint64(time.Millisecond)) - */ - return client, nil } -func boundedProgramUpdateRecv(ctx context.Context, streamer geyserpb.Geyser_SubscribeProgramUpdatesClient, timeout time.Duration) (update *geyserpb.TimestampedAccountUpdate, err error) { +func boundedRecv(ctx context.Context, streamer geyserpb.Geyser_SubscribeClient, timeout time.Duration) (update *geyserpb.SubscribeUpdate, err error) { done := make(chan struct{}) go func() { update, err = streamer.Recv() @@ -53,6 +51,8 @@ func boundedProgramUpdateRecv(ctx context.Context, streamer geyserpb.Geyser_Subs }() select { + case <-ctx.Done(): + return nil, ctx.Err() case <-time.After(timeout): return nil, ErrTimeoutReceivingUpdate case <-done: @@ -60,7 +60,7 @@ func boundedProgramUpdateRecv(ctx context.Context, streamer geyserpb.Geyser_Subs } } -func (w *Worker) subscribeToProgramUpdatesFromGeyser(ctx context.Context, endpoint string) error { +func (w *Worker) subscribeToProgramUpdatesFromGeyser(ctx context.Context, endpoint, xToken string) error { log := w.log.WithField("method", "subscribeToProgramUpdatesFromGeyser") log.Debug("subscription started") @@ -68,33 +68,43 @@ func (w *Worker) subscribeToProgramUpdatesFromGeyser(ctx context.Context, endpoi log.Debug("subscription stopped") }() - client, err := newGeyserClient(ctx, endpoint) + client, err := newGeyserClient(endpoint, xToken) if err != nil { return errors.Wrap(err, "error creating client") } - streamer, err := client.SubscribeProgramUpdates(ctx, &geyserpb.SubscribeProgramsUpdatesRequest{ - Programs: [][]byte{cvm.PROGRAM_ID}, - }) + streamer, err := client.Subscribe(ctx) if err != nil { return errors.Wrap(err, "error opening subscription stream") } + req := &geyserpb.SubscribeRequest{ + Accounts: make(map[string]*geyserpb.SubscribeRequestFilterAccounts), + } + req.Accounts["accounts_subscription"] = &geyserpb.SubscribeRequestFilterAccounts{ + Owner: []string{base58.Encode(cvm.PROGRAM_ID)}, + } + finalizedCommitmentLevel := geyserpb.CommitmentLevel_FINALIZED + req.Commitment = &finalizedCommitmentLevel + err = streamer.Send(req) + if err != nil { + return errors.Wrap(err, "error sending subscription request") + } + for { - update, err := boundedProgramUpdateRecv(ctx, streamer, defaultStreamSubscriptionTimeout) + update, err := boundedRecv(ctx, streamer, defaultStreamSubscriptionTimeout) if err != nil { - return errors.Wrap(err, "error receiving update") + return errors.Wrap(err, "error recieving update") } - messageAge := time.Since(update.Ts.AsTime()) - if messageAge > defaultStreamSubscriptionTimeout { - log.WithField("message_age", messageAge).Warn(ErrSubscriptionFallenBehind.Error()) - return ErrSubscriptionFallenBehind + accountUpdate := update.GetAccount() + if accountUpdate == nil { + continue } // Ignore startup updates. We only care about real-time updates due to // transactions. - if update.AccountUpdate.IsStartup { + if accountUpdate.IsStartup { continue } @@ -103,9 +113,42 @@ func (w *Worker) subscribeToProgramUpdatesFromGeyser(ctx context.Context, endpoi // backing up the Geyser plugin, which kills this subscription and we end up // missing updates. select { - case w.programUpdatesChan <- update.AccountUpdate: + case w.programUpdatesChan <- accountUpdate: default: log.Warn("dropping update because queue is full") } } } + +func newXTokenUnaryClientInterceptor(xToken string) grpc.UnaryClientInterceptor { + return func( + ctx context.Context, + method string, + req, reply interface{}, + cc *grpc.ClientConn, + invoker grpc.UnaryInvoker, + opts ...grpc.CallOption, + ) error { + ctx = withXToken(ctx, xToken) + return invoker(ctx, method, req, reply, cc, opts...) + } +} + +func newXTokenStreamClientInterceptor(xToken string) grpc.StreamClientInterceptor { + return func( + ctx context.Context, + desc *grpc.StreamDesc, + cc *grpc.ClientConn, + method string, + streamer grpc.Streamer, + opts ...grpc.CallOption, + ) (grpc.ClientStream, error) { + ctx = withXToken(ctx, xToken) + return streamer(ctx, desc, cc, method, opts...) + } +} + +func withXToken(ctx context.Context, xToken string) context.Context { + md := metadata.Pairs("x-token", xToken) + return metadata.NewOutgoingContext(ctx, md) +} diff --git a/proto/geyser/geyser.proto b/proto/geyser/geyser.proto index 5e7a11c..31d59c5 100644 --- a/proto/geyser/geyser.proto +++ b/proto/geyser/geyser.proto @@ -1,191 +1,274 @@ -// Source: https://github.com/jito-foundation/geyser-grpc-plugin/tree/v1.14.17-jito-1/proto/proto/geyser.proto +// Source: https://github.com/rpcpool/yellowstone-grpc/blob/v6.0.0%2Bsolana.2.2.12/yellowstone-grpc-proto/proto/geyser.proto syntax = "proto3"; import "google/protobuf/timestamp.proto"; -import "confirmed_block.proto"; +import public "solana-storage.proto"; -package solana.geyser; +option go_package = "github.com/code-payments/code-vm-indexer/generated/go/geyser/v1"; -option go_package = "github.com/code-payments/code-vm-indexer/generated/go/geyser/v1;geyser"; +package geyser; -message PartialAccountUpdate { - // Slot this update occurred. - uint64 slot = 1; - - // Account's pubkey. - bytes pubkey = 2; +service Geyser { + rpc Subscribe(stream SubscribeRequest) returns (stream SubscribeUpdate) {} + rpc Ping(PingRequest) returns (PongResponse) {} + rpc GetLatestBlockhash(GetLatestBlockhashRequest) returns (GetLatestBlockhashResponse) {} + rpc GetBlockHeight(GetBlockHeightRequest) returns (GetBlockHeightResponse) {} + rpc GetSlot(GetSlotRequest) returns (GetSlotResponse) {} + rpc IsBlockhashValid(IsBlockhashValidRequest) returns (IsBlockhashValidResponse) {} + rpc GetVersion(GetVersionRequest) returns (GetVersionResponse) {} +} - // Account's owner. - bytes owner = 3; +enum CommitmentLevel { + PROCESSED = 0; + CONFIRMED = 1; + FINALIZED = 2; +} - // Flags whether this update was streamed as part of startup, hence not a realtime update. - bool is_startup = 4; +enum SlotStatus { + SLOT_PROCESSED = 0; + SLOT_CONFIRMED = 1; + SLOT_FINALIZED = 2; + SLOT_FIRST_SHRED_RECEIVED = 3; + SLOT_COMPLETED = 4; + SLOT_CREATED_BANK = 5; + SLOT_DEAD = 6; +} - // A monotonically increasing number specifying the order of this update. - // Can be used to determine what the latest update for an account was at - // a given slot, assuming there were multiple updates. - uint64 seq = 5; +message SubscribeRequest { + map accounts = 1; + map slots = 2; + map transactions = 3; + map transactions_status = 10; + map blocks = 4; + map blocks_meta = 5; + map entry = 8; + optional CommitmentLevel commitment = 6; + repeated SubscribeRequestAccountsDataSlice accounts_data_slice = 7; + optional SubscribeRequestPing ping = 9; + optional uint64 from_slot = 11; +} - // Transaction signature that caused this update. - optional string tx_signature = 6; +message SubscribeRequestFilterAccounts { + repeated string account = 2; + repeated string owner = 3; + repeated SubscribeRequestFilterAccountsFilter filters = 4; + optional bool nonempty_txn_signature = 5; +} - // AccountReplica version. - uint32 replica_version = 7; +message SubscribeRequestFilterAccountsFilter { + oneof filter { + SubscribeRequestFilterAccountsFilterMemcmp memcmp = 1; + uint64 datasize = 2; + bool token_account_state = 3; + SubscribeRequestFilterAccountsFilterLamports lamports = 4; + } } -message AccountUpdate { - // Slot this update occurred. - uint64 slot = 1; +message SubscribeRequestFilterAccountsFilterMemcmp { + uint64 offset = 1; + oneof data { + bytes bytes = 2; + string base58 = 3; + string base64 = 4; + } +} - // Account's pubkey. - bytes pubkey = 2; +message SubscribeRequestFilterAccountsFilterLamports { + oneof cmp { + uint64 eq = 1; + uint64 ne = 2; + uint64 lt = 3; + uint64 gt = 4; + } +} - // Account's lamports post update. - uint64 lamports = 3; +message SubscribeRequestFilterSlots { + optional bool filter_by_commitment = 1; + optional bool interslot_updates = 2; +} - // Account's owner. - bytes owner = 4; +message SubscribeRequestFilterTransactions { + optional bool vote = 1; + optional bool failed = 2; + optional string signature = 5; + repeated string account_include = 3; + repeated string account_exclude = 4; + repeated string account_required = 6; +} - // Flags whether an account is executable. - bool is_executable = 5; +message SubscribeRequestFilterBlocks { + repeated string account_include = 1; + optional bool include_transactions = 2; + optional bool include_accounts = 3; + optional bool include_entries = 4; +} - // The epoch at which this account will next owe rent. - uint64 rent_epoch = 6; +message SubscribeRequestFilterBlocksMeta {} - // Account's data post update. - bytes data = 7; +message SubscribeRequestFilterEntry {} - // A monotonically increasing number specifying the order of this update. - // Can be used to determine what the latest update for an account was at - // a given slot, assuming there were multiple updates. - uint64 seq = 8; +message SubscribeRequestAccountsDataSlice { + uint64 offset = 1; + uint64 length = 2; +} - // Flags whether this update was streamed as part of startup i.e. not a real-time update. - bool is_startup = 9; +message SubscribeRequestPing { + int32 id = 1; +} - // Transaction signature that caused this update. - optional string tx_signature = 10; +message SubscribeUpdate { + repeated string filters = 1; + oneof update_oneof { + SubscribeUpdateAccount account = 2; + SubscribeUpdateSlot slot = 3; + SubscribeUpdateTransaction transaction = 4; + SubscribeUpdateTransactionStatus transaction_status = 10; + SubscribeUpdateBlock block = 5; + SubscribeUpdatePing ping = 6; + SubscribeUpdatePong pong = 9; + SubscribeUpdateBlockMeta block_meta = 7; + SubscribeUpdateEntry entry = 8; + } + google.protobuf.Timestamp created_at = 11; +} - // AccountReplica version. - uint32 replica_version = 11; +message SubscribeUpdateAccount { + SubscribeUpdateAccountInfo account = 1; + uint64 slot = 2; + bool is_startup = 3; } -enum SlotUpdateStatus { - CONFIRMED = 0; - PROCESSED = 1; - ROOTED = 2; +message SubscribeUpdateAccountInfo { + bytes pubkey = 1; + uint64 lamports = 2; + bytes owner = 3; + bool executable = 4; + uint64 rent_epoch = 5; + bytes data = 6; + uint64 write_version = 7; + optional bytes txn_signature = 8; } -message SlotUpdate { +message SubscribeUpdateSlot { uint64 slot = 1; - optional uint64 parent_slot = 2; - SlotUpdateStatus status = 3; + optional uint64 parent = 2; + SlotStatus status = 3; + optional string dead_error = 4; } -message TimestampedSlotUpdate { - // Time at which the message was generated - google.protobuf.Timestamp ts = 1; - // Slot update - SlotUpdate slot_update = 2; +message SubscribeUpdateTransaction { + SubscribeUpdateTransactionInfo transaction = 1; + uint64 slot = 2; } -message TimestampedAccountUpdate { - // Time at which the message was generated - google.protobuf.Timestamp ts = 1; - // Account update - AccountUpdate account_update = 2; +message SubscribeUpdateTransactionInfo { + bytes signature = 1; + bool is_vote = 2; + solana.storage.ConfirmedBlock.Transaction transaction = 3; + solana.storage.ConfirmedBlock.TransactionStatusMeta meta = 4; + uint64 index = 5; } -message SubscribeTransactionUpdatesRequest {} - -message SubscribeBlockUpdatesRequest {} - -message MaybePartialAccountUpdate { - oneof msg { - PartialAccountUpdate partial_account_update = 1; - Heartbeat hb = 2; - } +message SubscribeUpdateTransactionStatus { + uint64 slot = 1; + bytes signature = 2; + bool is_vote = 3; + uint64 index = 4; + solana.storage.ConfirmedBlock.TransactionError err = 5; } -message Heartbeat {} -message EmptyRequest {} - -message BlockUpdate { - uint64 slot = 1; +message SubscribeUpdateBlock { + uint64 slot = 1; string blockhash = 2; - repeated storage.ConfirmedBlock.Reward rewards = 3; - google.protobuf.Timestamp block_time = 4; - optional uint64 block_height = 5; + solana.storage.ConfirmedBlock.Rewards rewards = 3; + solana.storage.ConfirmedBlock.UnixTimestamp block_time = 4; + solana.storage.ConfirmedBlock.BlockHeight block_height = 5; + uint64 parent_slot = 7; + string parent_blockhash = 8; + uint64 executed_transaction_count = 9; + repeated SubscribeUpdateTransactionInfo transactions = 6; + uint64 updated_account_count = 10; + repeated SubscribeUpdateAccountInfo accounts = 11; + uint64 entries_count = 12; + repeated SubscribeUpdateEntry entries = 13; } -message TimestampedBlockUpdate { - // Time at which the message was generated - google.protobuf.Timestamp ts = 1; - // Block contents - BlockUpdate block_update = 2; +message SubscribeUpdateBlockMeta { + uint64 slot = 1; + string blockhash = 2; + solana.storage.ConfirmedBlock.Rewards rewards = 3; + solana.storage.ConfirmedBlock.UnixTimestamp block_time = 4; + solana.storage.ConfirmedBlock.BlockHeight block_height = 5; + uint64 parent_slot = 6; + string parent_blockhash = 7; + uint64 executed_transaction_count = 8; + uint64 entries_count = 9; } -message TransactionUpdate { +message SubscribeUpdateEntry { uint64 slot = 1; - string signature = 2; - bool is_vote = 3; - uint64 tx_idx = 4; - storage.ConfirmedBlock.ConfirmedTransaction tx = 5; + uint64 index = 2; + uint64 num_hashes = 3; + bytes hash = 4; + uint64 executed_transaction_count = 5; + uint64 starting_transaction_index = 6; // added in v1.18, for solana 1.17 value is always 0 } -message TimestampedTransactionUpdate { - google.protobuf.Timestamp ts = 1; - TransactionUpdate transaction = 2; +message SubscribeUpdatePing {} + +message SubscribeUpdatePong { + int32 id = 1; } +// non-streaming methods -message SubscribeSlotUpdateRequest {} +message PingRequest { + int32 count = 1; +} -message SubscribeAccountUpdatesRequest { - repeated bytes accounts = 1; +message PongResponse { + int32 count = 1; } -message SubscribeProgramsUpdatesRequest { - repeated bytes programs = 1; +message GetLatestBlockhashRequest { + optional CommitmentLevel commitment = 1; } -message SubscribePartialAccountUpdatesRequest { - // If true, will not stream vote account updates. - bool skip_vote_accounts = 1; +message GetLatestBlockhashResponse { + uint64 slot = 1; + string blockhash = 2; + uint64 last_valid_block_height = 3; } -message GetHeartbeatIntervalResponse { - uint64 heartbeat_interval_ms = 1; +message GetBlockHeightRequest { + optional CommitmentLevel commitment = 1; } -// The following __must__ be assumed: -// - Clients may receive data for slots out of order. -// - Clients may receive account updates for a given slot out of order. -service Geyser { - // Invoke to get the expected heartbeat interval. - rpc GetHeartbeatInterval(EmptyRequest) returns (GetHeartbeatIntervalResponse) {} +message GetBlockHeightResponse { + uint64 block_height = 1; +} - // Subscribes to account updates in the accounts database; additionally pings clients with empty heartbeats. - // Upon initially connecting the client can expect a `highest_write_slot` set in the http headers. - // Subscribe to account updates - rpc SubscribeAccountUpdates(SubscribeAccountUpdatesRequest) returns (stream TimestampedAccountUpdate) {} +message GetSlotRequest { + optional CommitmentLevel commitment = 1; +} - // Subscribes to updates given a list of program IDs. When an account update comes in that's owned by a provided - // program id, one will receive an update - rpc SubscribeProgramUpdates(SubscribeProgramsUpdatesRequest) returns (stream TimestampedAccountUpdate) {} +message GetSlotResponse { + uint64 slot = 1; +} - // Functions similarly to `SubscribeAccountUpdates`, but consumes less bandwidth. - // Returns the highest slot seen thus far in the http headers named `highest-write-slot`. - rpc SubscribePartialAccountUpdates(SubscribePartialAccountUpdatesRequest) returns (stream MaybePartialAccountUpdate) {} +message GetVersionRequest {} - // Subscribes to slot updates. - // Returns the highest slot seen thus far in the http headers named `highest-write-slot`. - rpc SubscribeSlotUpdates(SubscribeSlotUpdateRequest) returns (stream TimestampedSlotUpdate) {} +message GetVersionResponse { + string version = 1; +} - // Subscribes to transaction updates. - rpc SubscribeTransactionUpdates(SubscribeTransactionUpdatesRequest) returns (stream TimestampedTransactionUpdate) {} +message IsBlockhashValidRequest { + string blockhash = 1; + optional CommitmentLevel commitment = 2; +} - // Subscribes to block updates. - rpc SubscribeBlockUpdates(SubscribeBlockUpdatesRequest) returns (stream TimestampedBlockUpdate) {} -} \ No newline at end of file +message IsBlockhashValidResponse { + uint64 slot = 1; + bool valid = 2; +} diff --git a/proto/geyser/confirmed_block.proto b/proto/geyser/solana-storage.proto similarity index 81% rename from proto/geyser/confirmed_block.proto rename to proto/geyser/solana-storage.proto index f3d851c..b9a8086 100644 --- a/proto/geyser/confirmed_block.proto +++ b/proto/geyser/solana-storage.proto @@ -1,10 +1,10 @@ -// Source: https://github.com/jito-foundation/geyser-grpc-plugin/tree/v1.14.17-jito-1/proto/proto/confirmed_block.proto +// Source: https://github.com/rpcpool/yellowstone-grpc/blob/v6.0.0%2Bsolana.2.2.12/yellowstone-grpc-proto/proto/solana-storage.proto syntax = "proto3"; package solana.storage.ConfirmedBlock; -option go_package = "github.com/code-payments/code-vm-indexer/generated/go/geyser/v1;geyser"; +option go_package = "github.com/code-payments/code-vm-indexer/generated/go/geyser/v1"; message ConfirmedBlock { string previous_blockhash = 1; @@ -14,6 +14,7 @@ message ConfirmedBlock { repeated Reward rewards = 5; UnixTimestamp block_time = 6; BlockHeight block_height = 7; + NumPartitions num_partitions = 8; } message ConfirmedTransaction { @@ -76,7 +77,18 @@ message TransactionError { message InnerInstructions { uint32 index = 1; - repeated CompiledInstruction instructions = 2; + repeated InnerInstruction instructions = 2; +} + +message InnerInstruction { + uint32 program_id_index = 1; + bytes accounts = 2; + bytes data = 3; + + // Invocation stack height of an inner instruction. + // Available since Solana v1.14.6 + // Set to `None` for txs executed on earlier versions. + optional uint32 stack_height = 4; } message CompiledInstruction { @@ -122,7 +134,8 @@ message Reward { } message Rewards { - repeated Reward rewards = 1; + repeated Reward rewards = 1; + NumPartitions num_partitions = 2; } message UnixTimestamp { @@ -132,3 +145,7 @@ message UnixTimestamp { message BlockHeight { uint64 block_height = 1; } + +message NumPartitions { + uint64 num_partitions = 1; +}