Files
mautrix-telegram/pkg/gotd/tg/tl_payments_stars_status_gen.go
T
2025-06-27 20:03:37 -07:00

576 lines
15 KiB
Go

// Code generated by gotdgen, DO NOT EDIT.
package tg
import (
"context"
"errors"
"fmt"
"sort"
"strings"
"go.uber.org/multierr"
"go.mau.fi/mautrix-telegram/pkg/gotd/bin"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdjson"
"go.mau.fi/mautrix-telegram/pkg/gotd/tdp"
"go.mau.fi/mautrix-telegram/pkg/gotd/tgerr"
)
// No-op definition for keeping imports.
var (
_ = bin.Buffer{}
_ = context.Background()
_ = fmt.Stringer(nil)
_ = strings.Builder{}
_ = errors.Is
_ = multierr.AppendInto
_ = sort.Ints
_ = tdp.Format
_ = tgerr.Error{}
_ = tdjson.Encoder{}
)
// PaymentsStarsStatus represents TL type `payments.starsStatus#6c9ce8ed`.
// Info about the current Telegram Star subscriptions, balance and transaction history
// »¹.
//
// Links:
// 1. https://core.telegram.org/api/stars#balance-and-transaction-history
//
// See https://core.telegram.org/constructor/payments.starsStatus for reference.
type PaymentsStarsStatus struct {
// Flags, see TL conditional fields¹
//
// Links:
// 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields
Flags bin.Fields
// Current Telegram Star balance.
Balance StarsAmount
// Info about current Telegram Star subscriptions, only returned when invoking payments
// getStarsTransactions¹ and payments.getStarsSubscriptions².
//
// Links:
// 1) https://core.telegram.org/method/payments.getStarsTransactions
// 2) https://core.telegram.org/method/payments.getStarsSubscriptions
//
// Use SetSubscriptions and GetSubscriptions helpers.
Subscriptions []StarsSubscription
// Offset for pagination of subscriptions: only usable with payments
// getStarsSubscriptions¹, returned when invoking payments.getStarsTransactions² and
// payments.getStarsSubscriptions³.
//
// Links:
// 1) https://core.telegram.org/method/payments.getStarsSubscriptions
// 2) https://core.telegram.org/method/payments.getStarsTransactions
// 3) https://core.telegram.org/method/payments.getStarsSubscriptions
//
// Use SetSubscriptionsNextOffset and GetSubscriptionsNextOffset helpers.
SubscriptionsNextOffset string
// The number of Telegram Stars the user should buy to be able to extend expired
// subscriptions soon (i.e. the current balance is not enough to extend all expired
// subscriptions).
//
// Use SetSubscriptionsMissingBalance and GetSubscriptionsMissingBalance helpers.
SubscriptionsMissingBalance int64
// List of Telegram Star transactions (partial if next_offset is set).
//
// Use SetHistory and GetHistory helpers.
History []StarsTransaction
// Offset to use to fetch more transactions from the transaction history using payments
// getStarsTransactions¹.
//
// Links:
// 1) https://core.telegram.org/method/payments.getStarsTransactions
//
// Use SetNextOffset and GetNextOffset helpers.
NextOffset string
// Chats mentioned in history.
Chats []ChatClass
// Users mentioned in history.
Users []UserClass
}
// PaymentsStarsStatusTypeID is TL type id of PaymentsStarsStatus.
const PaymentsStarsStatusTypeID = 0x6c9ce8ed
// Ensuring interfaces in compile-time for PaymentsStarsStatus.
var (
_ bin.Encoder = &PaymentsStarsStatus{}
_ bin.Decoder = &PaymentsStarsStatus{}
_ bin.BareEncoder = &PaymentsStarsStatus{}
_ bin.BareDecoder = &PaymentsStarsStatus{}
)
func (s *PaymentsStarsStatus) Zero() bool {
if s == nil {
return true
}
if !(s.Flags.Zero()) {
return false
}
if !(s.Balance.Zero()) {
return false
}
if !(s.Subscriptions == nil) {
return false
}
if !(s.SubscriptionsNextOffset == "") {
return false
}
if !(s.SubscriptionsMissingBalance == 0) {
return false
}
if !(s.History == nil) {
return false
}
if !(s.NextOffset == "") {
return false
}
if !(s.Chats == nil) {
return false
}
if !(s.Users == nil) {
return false
}
return true
}
// String implements fmt.Stringer.
func (s *PaymentsStarsStatus) String() string {
if s == nil {
return "PaymentsStarsStatus(nil)"
}
type Alias PaymentsStarsStatus
return fmt.Sprintf("PaymentsStarsStatus%+v", Alias(*s))
}
// FillFrom fills PaymentsStarsStatus from given interface.
func (s *PaymentsStarsStatus) FillFrom(from interface {
GetBalance() (value StarsAmount)
GetSubscriptions() (value []StarsSubscription, ok bool)
GetSubscriptionsNextOffset() (value string, ok bool)
GetSubscriptionsMissingBalance() (value int64, ok bool)
GetHistory() (value []StarsTransaction, ok bool)
GetNextOffset() (value string, ok bool)
GetChats() (value []ChatClass)
GetUsers() (value []UserClass)
}) {
s.Balance = from.GetBalance()
if val, ok := from.GetSubscriptions(); ok {
s.Subscriptions = val
}
if val, ok := from.GetSubscriptionsNextOffset(); ok {
s.SubscriptionsNextOffset = val
}
if val, ok := from.GetSubscriptionsMissingBalance(); ok {
s.SubscriptionsMissingBalance = val
}
if val, ok := from.GetHistory(); ok {
s.History = val
}
if val, ok := from.GetNextOffset(); ok {
s.NextOffset = val
}
s.Chats = from.GetChats()
s.Users = from.GetUsers()
}
// TypeID returns type id in TL schema.
//
// See https://core.telegram.org/mtproto/TL-tl#remarks.
func (*PaymentsStarsStatus) TypeID() uint32 {
return PaymentsStarsStatusTypeID
}
// TypeName returns name of type in TL schema.
func (*PaymentsStarsStatus) TypeName() string {
return "payments.starsStatus"
}
// TypeInfo returns info about TL type.
func (s *PaymentsStarsStatus) TypeInfo() tdp.Type {
typ := tdp.Type{
Name: "payments.starsStatus",
ID: PaymentsStarsStatusTypeID,
}
if s == nil {
typ.Null = true
return typ
}
typ.Fields = []tdp.Field{
{
Name: "Balance",
SchemaName: "balance",
},
{
Name: "Subscriptions",
SchemaName: "subscriptions",
Null: !s.Flags.Has(1),
},
{
Name: "SubscriptionsNextOffset",
SchemaName: "subscriptions_next_offset",
Null: !s.Flags.Has(2),
},
{
Name: "SubscriptionsMissingBalance",
SchemaName: "subscriptions_missing_balance",
Null: !s.Flags.Has(4),
},
{
Name: "History",
SchemaName: "history",
Null: !s.Flags.Has(3),
},
{
Name: "NextOffset",
SchemaName: "next_offset",
Null: !s.Flags.Has(0),
},
{
Name: "Chats",
SchemaName: "chats",
},
{
Name: "Users",
SchemaName: "users",
},
}
return typ
}
// SetFlags sets flags for non-zero fields.
func (s *PaymentsStarsStatus) SetFlags() {
if !(s.Subscriptions == nil) {
s.Flags.Set(1)
}
if !(s.SubscriptionsNextOffset == "") {
s.Flags.Set(2)
}
if !(s.SubscriptionsMissingBalance == 0) {
s.Flags.Set(4)
}
if !(s.History == nil) {
s.Flags.Set(3)
}
if !(s.NextOffset == "") {
s.Flags.Set(0)
}
}
// Encode implements bin.Encoder.
func (s *PaymentsStarsStatus) Encode(b *bin.Buffer) error {
if s == nil {
return fmt.Errorf("can't encode payments.starsStatus#6c9ce8ed as nil")
}
b.PutID(PaymentsStarsStatusTypeID)
return s.EncodeBare(b)
}
// EncodeBare implements bin.BareEncoder.
func (s *PaymentsStarsStatus) EncodeBare(b *bin.Buffer) error {
if s == nil {
return fmt.Errorf("can't encode payments.starsStatus#6c9ce8ed as nil")
}
s.SetFlags()
if err := s.Flags.Encode(b); err != nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field flags: %w", err)
}
if err := s.Balance.Encode(b); err != nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field balance: %w", err)
}
if s.Flags.Has(1) {
b.PutVectorHeader(len(s.Subscriptions))
for idx, v := range s.Subscriptions {
if err := v.Encode(b); err != nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field subscriptions element with index %d: %w", idx, err)
}
}
}
if s.Flags.Has(2) {
b.PutString(s.SubscriptionsNextOffset)
}
if s.Flags.Has(4) {
b.PutLong(s.SubscriptionsMissingBalance)
}
if s.Flags.Has(3) {
b.PutVectorHeader(len(s.History))
for idx, v := range s.History {
if err := v.Encode(b); err != nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field history element with index %d: %w", idx, err)
}
}
}
if s.Flags.Has(0) {
b.PutString(s.NextOffset)
}
b.PutVectorHeader(len(s.Chats))
for idx, v := range s.Chats {
if v == nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field chats element with index %d is nil", idx)
}
if err := v.Encode(b); err != nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field chats element with index %d: %w", idx, err)
}
}
b.PutVectorHeader(len(s.Users))
for idx, v := range s.Users {
if v == nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field users element with index %d is nil", idx)
}
if err := v.Encode(b); err != nil {
return fmt.Errorf("unable to encode payments.starsStatus#6c9ce8ed: field users element with index %d: %w", idx, err)
}
}
return nil
}
// Decode implements bin.Decoder.
func (s *PaymentsStarsStatus) Decode(b *bin.Buffer) error {
if s == nil {
return fmt.Errorf("can't decode payments.starsStatus#6c9ce8ed to nil")
}
if err := b.ConsumeID(PaymentsStarsStatusTypeID); err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: %w", err)
}
return s.DecodeBare(b)
}
// DecodeBare implements bin.BareDecoder.
func (s *PaymentsStarsStatus) DecodeBare(b *bin.Buffer) error {
if s == nil {
return fmt.Errorf("can't decode payments.starsStatus#6c9ce8ed to nil")
}
{
if err := s.Flags.Decode(b); err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field flags: %w", err)
}
}
{
if err := s.Balance.Decode(b); err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field balance: %w", err)
}
}
if s.Flags.Has(1) {
headerLen, err := b.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field subscriptions: %w", err)
}
if headerLen > 0 {
s.Subscriptions = make([]StarsSubscription, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
var value StarsSubscription
if err := value.Decode(b); err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field subscriptions: %w", err)
}
s.Subscriptions = append(s.Subscriptions, value)
}
}
if s.Flags.Has(2) {
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field subscriptions_next_offset: %w", err)
}
s.SubscriptionsNextOffset = value
}
if s.Flags.Has(4) {
value, err := b.Long()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field subscriptions_missing_balance: %w", err)
}
s.SubscriptionsMissingBalance = value
}
if s.Flags.Has(3) {
headerLen, err := b.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field history: %w", err)
}
if headerLen > 0 {
s.History = make([]StarsTransaction, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
var value StarsTransaction
if err := value.Decode(b); err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field history: %w", err)
}
s.History = append(s.History, value)
}
}
if s.Flags.Has(0) {
value, err := b.String()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field next_offset: %w", err)
}
s.NextOffset = value
}
{
headerLen, err := b.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field chats: %w", err)
}
if headerLen > 0 {
s.Chats = make([]ChatClass, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
value, err := DecodeChat(b)
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field chats: %w", err)
}
s.Chats = append(s.Chats, value)
}
}
{
headerLen, err := b.VectorHeader()
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field users: %w", err)
}
if headerLen > 0 {
s.Users = make([]UserClass, 0, headerLen%bin.PreallocateLimit)
}
for idx := 0; idx < headerLen; idx++ {
value, err := DecodeUser(b)
if err != nil {
return fmt.Errorf("unable to decode payments.starsStatus#6c9ce8ed: field users: %w", err)
}
s.Users = append(s.Users, value)
}
}
return nil
}
// GetBalance returns value of Balance field.
func (s *PaymentsStarsStatus) GetBalance() (value StarsAmount) {
if s == nil {
return
}
return s.Balance
}
// SetSubscriptions sets value of Subscriptions conditional field.
func (s *PaymentsStarsStatus) SetSubscriptions(value []StarsSubscription) {
s.Flags.Set(1)
s.Subscriptions = value
}
// GetSubscriptions returns value of Subscriptions conditional field and
// boolean which is true if field was set.
func (s *PaymentsStarsStatus) GetSubscriptions() (value []StarsSubscription, ok bool) {
if s == nil {
return
}
if !s.Flags.Has(1) {
return value, false
}
return s.Subscriptions, true
}
// SetSubscriptionsNextOffset sets value of SubscriptionsNextOffset conditional field.
func (s *PaymentsStarsStatus) SetSubscriptionsNextOffset(value string) {
s.Flags.Set(2)
s.SubscriptionsNextOffset = value
}
// GetSubscriptionsNextOffset returns value of SubscriptionsNextOffset conditional field and
// boolean which is true if field was set.
func (s *PaymentsStarsStatus) GetSubscriptionsNextOffset() (value string, ok bool) {
if s == nil {
return
}
if !s.Flags.Has(2) {
return value, false
}
return s.SubscriptionsNextOffset, true
}
// SetSubscriptionsMissingBalance sets value of SubscriptionsMissingBalance conditional field.
func (s *PaymentsStarsStatus) SetSubscriptionsMissingBalance(value int64) {
s.Flags.Set(4)
s.SubscriptionsMissingBalance = value
}
// GetSubscriptionsMissingBalance returns value of SubscriptionsMissingBalance conditional field and
// boolean which is true if field was set.
func (s *PaymentsStarsStatus) GetSubscriptionsMissingBalance() (value int64, ok bool) {
if s == nil {
return
}
if !s.Flags.Has(4) {
return value, false
}
return s.SubscriptionsMissingBalance, true
}
// SetHistory sets value of History conditional field.
func (s *PaymentsStarsStatus) SetHistory(value []StarsTransaction) {
s.Flags.Set(3)
s.History = value
}
// GetHistory returns value of History conditional field and
// boolean which is true if field was set.
func (s *PaymentsStarsStatus) GetHistory() (value []StarsTransaction, ok bool) {
if s == nil {
return
}
if !s.Flags.Has(3) {
return value, false
}
return s.History, true
}
// SetNextOffset sets value of NextOffset conditional field.
func (s *PaymentsStarsStatus) SetNextOffset(value string) {
s.Flags.Set(0)
s.NextOffset = value
}
// GetNextOffset returns value of NextOffset conditional field and
// boolean which is true if field was set.
func (s *PaymentsStarsStatus) GetNextOffset() (value string, ok bool) {
if s == nil {
return
}
if !s.Flags.Has(0) {
return value, false
}
return s.NextOffset, true
}
// GetChats returns value of Chats field.
func (s *PaymentsStarsStatus) GetChats() (value []ChatClass) {
if s == nil {
return
}
return s.Chats
}
// GetUsers returns value of Users field.
func (s *PaymentsStarsStatus) GetUsers() (value []UserClass) {
if s == nil {
return
}
return s.Users
}
// MapChats returns field Chats wrapped in ChatClassArray helper.
func (s *PaymentsStarsStatus) MapChats() (value ChatClassArray) {
return ChatClassArray(s.Chats)
}
// MapUsers returns field Users wrapped in UserClassArray helper.
func (s *PaymentsStarsStatus) MapUsers() (value UserClassArray) {
return UserClassArray(s.Users)
}