// 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{} ) // PaymentsGiveawayInfo represents TL type `payments.giveawayInfo#4367daa0`. // Contains info about an ongoing giveaway¹. // If neither the participating, joined_too_early_date, admin_disallowed_chat_id or // disallowed_country flags are set, the user is not currently participating in the // giveaway but could participate by joining all the channels specified in the // messageMediaGiveaway¹.channels field. // // Links: // 1. https://core.telegram.org/api/giveaways // 2. https://core.telegram.org/constructor/messageMediaGiveaway // // See https://core.telegram.org/constructor/payments.giveawayInfo for reference. type PaymentsGiveawayInfo struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // The current user is participating in the giveaway. Participating bool // If set, the giveaway has ended and the results are being prepared. PreparingResults bool // When was the giveaway started StartDate int // The current user can't participate in the giveaway, because they were already a member // of the channel when the giveaway started, and the only_new_subscribers was set when // starting the giveaway. // // Use SetJoinedTooEarlyDate and GetJoinedTooEarlyDate helpers. JoinedTooEarlyDate int // If set, the current user can't participate in the giveaway, because they are an // administrator in one of the channels (ID specified in this flag) that created the // giveaway. // // Use SetAdminDisallowedChatID and GetAdminDisallowedChatID helpers. AdminDisallowedChatID int64 // If set, the current user can't participate in this giveaway, because their phone // number is from the specified disallowed country (specified as a two-letter ISO 3166-1 // alpha-2 country code). // // Use SetDisallowedCountry and GetDisallowedCountry helpers. DisallowedCountry string } // PaymentsGiveawayInfoTypeID is TL type id of PaymentsGiveawayInfo. const PaymentsGiveawayInfoTypeID = 0x4367daa0 // construct implements constructor of PaymentsGiveawayInfoClass. func (g PaymentsGiveawayInfo) construct() PaymentsGiveawayInfoClass { return &g } // Ensuring interfaces in compile-time for PaymentsGiveawayInfo. var ( _ bin.Encoder = &PaymentsGiveawayInfo{} _ bin.Decoder = &PaymentsGiveawayInfo{} _ bin.BareEncoder = &PaymentsGiveawayInfo{} _ bin.BareDecoder = &PaymentsGiveawayInfo{} _ PaymentsGiveawayInfoClass = &PaymentsGiveawayInfo{} ) func (g *PaymentsGiveawayInfo) Zero() bool { if g == nil { return true } if !(g.Flags.Zero()) { return false } if !(g.Participating == false) { return false } if !(g.PreparingResults == false) { return false } if !(g.StartDate == 0) { return false } if !(g.JoinedTooEarlyDate == 0) { return false } if !(g.AdminDisallowedChatID == 0) { return false } if !(g.DisallowedCountry == "") { return false } return true } // String implements fmt.Stringer. func (g *PaymentsGiveawayInfo) String() string { if g == nil { return "PaymentsGiveawayInfo(nil)" } type Alias PaymentsGiveawayInfo return fmt.Sprintf("PaymentsGiveawayInfo%+v", Alias(*g)) } // FillFrom fills PaymentsGiveawayInfo from given interface. func (g *PaymentsGiveawayInfo) FillFrom(from interface { GetParticipating() (value bool) GetPreparingResults() (value bool) GetStartDate() (value int) GetJoinedTooEarlyDate() (value int, ok bool) GetAdminDisallowedChatID() (value int64, ok bool) GetDisallowedCountry() (value string, ok bool) }) { g.Participating = from.GetParticipating() g.PreparingResults = from.GetPreparingResults() g.StartDate = from.GetStartDate() if val, ok := from.GetJoinedTooEarlyDate(); ok { g.JoinedTooEarlyDate = val } if val, ok := from.GetAdminDisallowedChatID(); ok { g.AdminDisallowedChatID = val } if val, ok := from.GetDisallowedCountry(); ok { g.DisallowedCountry = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*PaymentsGiveawayInfo) TypeID() uint32 { return PaymentsGiveawayInfoTypeID } // TypeName returns name of type in TL schema. func (*PaymentsGiveawayInfo) TypeName() string { return "payments.giveawayInfo" } // TypeInfo returns info about TL type. func (g *PaymentsGiveawayInfo) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "payments.giveawayInfo", ID: PaymentsGiveawayInfoTypeID, } if g == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Participating", SchemaName: "participating", Null: !g.Flags.Has(0), }, { Name: "PreparingResults", SchemaName: "preparing_results", Null: !g.Flags.Has(3), }, { Name: "StartDate", SchemaName: "start_date", }, { Name: "JoinedTooEarlyDate", SchemaName: "joined_too_early_date", Null: !g.Flags.Has(1), }, { Name: "AdminDisallowedChatID", SchemaName: "admin_disallowed_chat_id", Null: !g.Flags.Has(2), }, { Name: "DisallowedCountry", SchemaName: "disallowed_country", Null: !g.Flags.Has(4), }, } return typ } // SetFlags sets flags for non-zero fields. func (g *PaymentsGiveawayInfo) SetFlags() { if !(g.Participating == false) { g.Flags.Set(0) } if !(g.PreparingResults == false) { g.Flags.Set(3) } if !(g.JoinedTooEarlyDate == 0) { g.Flags.Set(1) } if !(g.AdminDisallowedChatID == 0) { g.Flags.Set(2) } if !(g.DisallowedCountry == "") { g.Flags.Set(4) } } // Encode implements bin.Encoder. func (g *PaymentsGiveawayInfo) Encode(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't encode payments.giveawayInfo#4367daa0 as nil") } b.PutID(PaymentsGiveawayInfoTypeID) return g.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (g *PaymentsGiveawayInfo) EncodeBare(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't encode payments.giveawayInfo#4367daa0 as nil") } g.SetFlags() if err := g.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode payments.giveawayInfo#4367daa0: field flags: %w", err) } b.PutInt(g.StartDate) if g.Flags.Has(1) { b.PutInt(g.JoinedTooEarlyDate) } if g.Flags.Has(2) { b.PutLong(g.AdminDisallowedChatID) } if g.Flags.Has(4) { b.PutString(g.DisallowedCountry) } return nil } // Decode implements bin.Decoder. func (g *PaymentsGiveawayInfo) Decode(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't decode payments.giveawayInfo#4367daa0 to nil") } if err := b.ConsumeID(PaymentsGiveawayInfoTypeID); err != nil { return fmt.Errorf("unable to decode payments.giveawayInfo#4367daa0: %w", err) } return g.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (g *PaymentsGiveawayInfo) DecodeBare(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't decode payments.giveawayInfo#4367daa0 to nil") } { if err := g.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode payments.giveawayInfo#4367daa0: field flags: %w", err) } } g.Participating = g.Flags.Has(0) g.PreparingResults = g.Flags.Has(3) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfo#4367daa0: field start_date: %w", err) } g.StartDate = value } if g.Flags.Has(1) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfo#4367daa0: field joined_too_early_date: %w", err) } g.JoinedTooEarlyDate = value } if g.Flags.Has(2) { value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfo#4367daa0: field admin_disallowed_chat_id: %w", err) } g.AdminDisallowedChatID = value } if g.Flags.Has(4) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfo#4367daa0: field disallowed_country: %w", err) } g.DisallowedCountry = value } return nil } // SetParticipating sets value of Participating conditional field. func (g *PaymentsGiveawayInfo) SetParticipating(value bool) { if value { g.Flags.Set(0) g.Participating = true } else { g.Flags.Unset(0) g.Participating = false } } // GetParticipating returns value of Participating conditional field. func (g *PaymentsGiveawayInfo) GetParticipating() (value bool) { if g == nil { return } return g.Flags.Has(0) } // SetPreparingResults sets value of PreparingResults conditional field. func (g *PaymentsGiveawayInfo) SetPreparingResults(value bool) { if value { g.Flags.Set(3) g.PreparingResults = true } else { g.Flags.Unset(3) g.PreparingResults = false } } // GetPreparingResults returns value of PreparingResults conditional field. func (g *PaymentsGiveawayInfo) GetPreparingResults() (value bool) { if g == nil { return } return g.Flags.Has(3) } // GetStartDate returns value of StartDate field. func (g *PaymentsGiveawayInfo) GetStartDate() (value int) { if g == nil { return } return g.StartDate } // SetJoinedTooEarlyDate sets value of JoinedTooEarlyDate conditional field. func (g *PaymentsGiveawayInfo) SetJoinedTooEarlyDate(value int) { g.Flags.Set(1) g.JoinedTooEarlyDate = value } // GetJoinedTooEarlyDate returns value of JoinedTooEarlyDate conditional field and // boolean which is true if field was set. func (g *PaymentsGiveawayInfo) GetJoinedTooEarlyDate() (value int, ok bool) { if g == nil { return } if !g.Flags.Has(1) { return value, false } return g.JoinedTooEarlyDate, true } // SetAdminDisallowedChatID sets value of AdminDisallowedChatID conditional field. func (g *PaymentsGiveawayInfo) SetAdminDisallowedChatID(value int64) { g.Flags.Set(2) g.AdminDisallowedChatID = value } // GetAdminDisallowedChatID returns value of AdminDisallowedChatID conditional field and // boolean which is true if field was set. func (g *PaymentsGiveawayInfo) GetAdminDisallowedChatID() (value int64, ok bool) { if g == nil { return } if !g.Flags.Has(2) { return value, false } return g.AdminDisallowedChatID, true } // SetDisallowedCountry sets value of DisallowedCountry conditional field. func (g *PaymentsGiveawayInfo) SetDisallowedCountry(value string) { g.Flags.Set(4) g.DisallowedCountry = value } // GetDisallowedCountry returns value of DisallowedCountry conditional field and // boolean which is true if field was set. func (g *PaymentsGiveawayInfo) GetDisallowedCountry() (value string, ok bool) { if g == nil { return } if !g.Flags.Has(4) { return value, false } return g.DisallowedCountry, true } // PaymentsGiveawayInfoResults represents TL type `payments.giveawayInfoResults#e175e66f`. // A giveaway¹ has ended. // // Links: // 1. https://core.telegram.org/api/giveaways // // See https://core.telegram.org/constructor/payments.giveawayInfoResults for reference. type PaymentsGiveawayInfoResults struct { // Flags, see TL conditional fields¹ // // Links: // 1) https://core.telegram.org/mtproto/TL-combinators#conditional-fields Flags bin.Fields // Whether we're one of the winners of this giveaway. Winner bool // Whether the giveaway was canceled and was fully refunded. Refunded bool // Start date of the giveaway StartDate int // If we're one of the winners of this giveaway, contains the Premium gift code¹, see // here »² for more info on the full giveaway flow. // // Links: // 1) https://core.telegram.org/api/links#premium-giftcode-links // 2) https://core.telegram.org/api/giveaways // // Use SetGiftCodeSlug and GetGiftCodeSlug helpers. GiftCodeSlug string // If we're one of the winners of this Telegram Star giveaway¹, the number Telegram // Stars² we won. // // Links: // 1) https://core.telegram.org/api/giveaways#star-giveaways // 2) https://core.telegram.org/api/stars // // Use SetStarsPrize and GetStarsPrize helpers. StarsPrize int64 // End date of the giveaway. May be bigger than the end date specified in parameters of // the giveaway. FinishDate int // Number of winners in the giveaway WinnersCount int // Number of winners, which activated their gift codes¹. // // Links: // 1) https://core.telegram.org/api/links#premium-giftcode-links // // Use SetActivatedCount and GetActivatedCount helpers. ActivatedCount int } // PaymentsGiveawayInfoResultsTypeID is TL type id of PaymentsGiveawayInfoResults. const PaymentsGiveawayInfoResultsTypeID = 0xe175e66f // construct implements constructor of PaymentsGiveawayInfoClass. func (g PaymentsGiveawayInfoResults) construct() PaymentsGiveawayInfoClass { return &g } // Ensuring interfaces in compile-time for PaymentsGiveawayInfoResults. var ( _ bin.Encoder = &PaymentsGiveawayInfoResults{} _ bin.Decoder = &PaymentsGiveawayInfoResults{} _ bin.BareEncoder = &PaymentsGiveawayInfoResults{} _ bin.BareDecoder = &PaymentsGiveawayInfoResults{} _ PaymentsGiveawayInfoClass = &PaymentsGiveawayInfoResults{} ) func (g *PaymentsGiveawayInfoResults) Zero() bool { if g == nil { return true } if !(g.Flags.Zero()) { return false } if !(g.Winner == false) { return false } if !(g.Refunded == false) { return false } if !(g.StartDate == 0) { return false } if !(g.GiftCodeSlug == "") { return false } if !(g.StarsPrize == 0) { return false } if !(g.FinishDate == 0) { return false } if !(g.WinnersCount == 0) { return false } if !(g.ActivatedCount == 0) { return false } return true } // String implements fmt.Stringer. func (g *PaymentsGiveawayInfoResults) String() string { if g == nil { return "PaymentsGiveawayInfoResults(nil)" } type Alias PaymentsGiveawayInfoResults return fmt.Sprintf("PaymentsGiveawayInfoResults%+v", Alias(*g)) } // FillFrom fills PaymentsGiveawayInfoResults from given interface. func (g *PaymentsGiveawayInfoResults) FillFrom(from interface { GetWinner() (value bool) GetRefunded() (value bool) GetStartDate() (value int) GetGiftCodeSlug() (value string, ok bool) GetStarsPrize() (value int64, ok bool) GetFinishDate() (value int) GetWinnersCount() (value int) GetActivatedCount() (value int, ok bool) }) { g.Winner = from.GetWinner() g.Refunded = from.GetRefunded() g.StartDate = from.GetStartDate() if val, ok := from.GetGiftCodeSlug(); ok { g.GiftCodeSlug = val } if val, ok := from.GetStarsPrize(); ok { g.StarsPrize = val } g.FinishDate = from.GetFinishDate() g.WinnersCount = from.GetWinnersCount() if val, ok := from.GetActivatedCount(); ok { g.ActivatedCount = val } } // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. func (*PaymentsGiveawayInfoResults) TypeID() uint32 { return PaymentsGiveawayInfoResultsTypeID } // TypeName returns name of type in TL schema. func (*PaymentsGiveawayInfoResults) TypeName() string { return "payments.giveawayInfoResults" } // TypeInfo returns info about TL type. func (g *PaymentsGiveawayInfoResults) TypeInfo() tdp.Type { typ := tdp.Type{ Name: "payments.giveawayInfoResults", ID: PaymentsGiveawayInfoResultsTypeID, } if g == nil { typ.Null = true return typ } typ.Fields = []tdp.Field{ { Name: "Winner", SchemaName: "winner", Null: !g.Flags.Has(0), }, { Name: "Refunded", SchemaName: "refunded", Null: !g.Flags.Has(1), }, { Name: "StartDate", SchemaName: "start_date", }, { Name: "GiftCodeSlug", SchemaName: "gift_code_slug", Null: !g.Flags.Has(3), }, { Name: "StarsPrize", SchemaName: "stars_prize", Null: !g.Flags.Has(4), }, { Name: "FinishDate", SchemaName: "finish_date", }, { Name: "WinnersCount", SchemaName: "winners_count", }, { Name: "ActivatedCount", SchemaName: "activated_count", Null: !g.Flags.Has(2), }, } return typ } // SetFlags sets flags for non-zero fields. func (g *PaymentsGiveawayInfoResults) SetFlags() { if !(g.Winner == false) { g.Flags.Set(0) } if !(g.Refunded == false) { g.Flags.Set(1) } if !(g.GiftCodeSlug == "") { g.Flags.Set(3) } if !(g.StarsPrize == 0) { g.Flags.Set(4) } if !(g.ActivatedCount == 0) { g.Flags.Set(2) } } // Encode implements bin.Encoder. func (g *PaymentsGiveawayInfoResults) Encode(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't encode payments.giveawayInfoResults#e175e66f as nil") } b.PutID(PaymentsGiveawayInfoResultsTypeID) return g.EncodeBare(b) } // EncodeBare implements bin.BareEncoder. func (g *PaymentsGiveawayInfoResults) EncodeBare(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't encode payments.giveawayInfoResults#e175e66f as nil") } g.SetFlags() if err := g.Flags.Encode(b); err != nil { return fmt.Errorf("unable to encode payments.giveawayInfoResults#e175e66f: field flags: %w", err) } b.PutInt(g.StartDate) if g.Flags.Has(3) { b.PutString(g.GiftCodeSlug) } if g.Flags.Has(4) { b.PutLong(g.StarsPrize) } b.PutInt(g.FinishDate) b.PutInt(g.WinnersCount) if g.Flags.Has(2) { b.PutInt(g.ActivatedCount) } return nil } // Decode implements bin.Decoder. func (g *PaymentsGiveawayInfoResults) Decode(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't decode payments.giveawayInfoResults#e175e66f to nil") } if err := b.ConsumeID(PaymentsGiveawayInfoResultsTypeID); err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: %w", err) } return g.DecodeBare(b) } // DecodeBare implements bin.BareDecoder. func (g *PaymentsGiveawayInfoResults) DecodeBare(b *bin.Buffer) error { if g == nil { return fmt.Errorf("can't decode payments.giveawayInfoResults#e175e66f to nil") } { if err := g.Flags.Decode(b); err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field flags: %w", err) } } g.Winner = g.Flags.Has(0) g.Refunded = g.Flags.Has(1) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field start_date: %w", err) } g.StartDate = value } if g.Flags.Has(3) { value, err := b.String() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field gift_code_slug: %w", err) } g.GiftCodeSlug = value } if g.Flags.Has(4) { value, err := b.Long() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field stars_prize: %w", err) } g.StarsPrize = value } { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field finish_date: %w", err) } g.FinishDate = value } { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field winners_count: %w", err) } g.WinnersCount = value } if g.Flags.Has(2) { value, err := b.Int() if err != nil { return fmt.Errorf("unable to decode payments.giveawayInfoResults#e175e66f: field activated_count: %w", err) } g.ActivatedCount = value } return nil } // SetWinner sets value of Winner conditional field. func (g *PaymentsGiveawayInfoResults) SetWinner(value bool) { if value { g.Flags.Set(0) g.Winner = true } else { g.Flags.Unset(0) g.Winner = false } } // GetWinner returns value of Winner conditional field. func (g *PaymentsGiveawayInfoResults) GetWinner() (value bool) { if g == nil { return } return g.Flags.Has(0) } // SetRefunded sets value of Refunded conditional field. func (g *PaymentsGiveawayInfoResults) SetRefunded(value bool) { if value { g.Flags.Set(1) g.Refunded = true } else { g.Flags.Unset(1) g.Refunded = false } } // GetRefunded returns value of Refunded conditional field. func (g *PaymentsGiveawayInfoResults) GetRefunded() (value bool) { if g == nil { return } return g.Flags.Has(1) } // GetStartDate returns value of StartDate field. func (g *PaymentsGiveawayInfoResults) GetStartDate() (value int) { if g == nil { return } return g.StartDate } // SetGiftCodeSlug sets value of GiftCodeSlug conditional field. func (g *PaymentsGiveawayInfoResults) SetGiftCodeSlug(value string) { g.Flags.Set(3) g.GiftCodeSlug = value } // GetGiftCodeSlug returns value of GiftCodeSlug conditional field and // boolean which is true if field was set. func (g *PaymentsGiveawayInfoResults) GetGiftCodeSlug() (value string, ok bool) { if g == nil { return } if !g.Flags.Has(3) { return value, false } return g.GiftCodeSlug, true } // SetStarsPrize sets value of StarsPrize conditional field. func (g *PaymentsGiveawayInfoResults) SetStarsPrize(value int64) { g.Flags.Set(4) g.StarsPrize = value } // GetStarsPrize returns value of StarsPrize conditional field and // boolean which is true if field was set. func (g *PaymentsGiveawayInfoResults) GetStarsPrize() (value int64, ok bool) { if g == nil { return } if !g.Flags.Has(4) { return value, false } return g.StarsPrize, true } // GetFinishDate returns value of FinishDate field. func (g *PaymentsGiveawayInfoResults) GetFinishDate() (value int) { if g == nil { return } return g.FinishDate } // GetWinnersCount returns value of WinnersCount field. func (g *PaymentsGiveawayInfoResults) GetWinnersCount() (value int) { if g == nil { return } return g.WinnersCount } // SetActivatedCount sets value of ActivatedCount conditional field. func (g *PaymentsGiveawayInfoResults) SetActivatedCount(value int) { g.Flags.Set(2) g.ActivatedCount = value } // GetActivatedCount returns value of ActivatedCount conditional field and // boolean which is true if field was set. func (g *PaymentsGiveawayInfoResults) GetActivatedCount() (value int, ok bool) { if g == nil { return } if !g.Flags.Has(2) { return value, false } return g.ActivatedCount, true } // PaymentsGiveawayInfoClassName is schema name of PaymentsGiveawayInfoClass. const PaymentsGiveawayInfoClassName = "payments.GiveawayInfo" // PaymentsGiveawayInfoClass represents payments.GiveawayInfo generic type. // // See https://core.telegram.org/type/payments.GiveawayInfo for reference. // // Example: // // g, err := tg.DecodePaymentsGiveawayInfo(buf) // if err != nil { // panic(err) // } // switch v := g.(type) { // case *tg.PaymentsGiveawayInfo: // payments.giveawayInfo#4367daa0 // case *tg.PaymentsGiveawayInfoResults: // payments.giveawayInfoResults#e175e66f // default: panic(v) // } type PaymentsGiveawayInfoClass interface { bin.Encoder bin.Decoder bin.BareEncoder bin.BareDecoder construct() PaymentsGiveawayInfoClass // TypeID returns type id in TL schema. // // See https://core.telegram.org/mtproto/TL-tl#remarks. TypeID() uint32 // TypeName returns name of type in TL schema. TypeName() string // String implements fmt.Stringer. String() string // Zero returns true if current object has a zero value. Zero() bool // When was the giveaway started GetStartDate() (value int) } // DecodePaymentsGiveawayInfo implements binary de-serialization for PaymentsGiveawayInfoClass. func DecodePaymentsGiveawayInfo(buf *bin.Buffer) (PaymentsGiveawayInfoClass, error) { id, err := buf.PeekID() if err != nil { return nil, err } switch id { case PaymentsGiveawayInfoTypeID: // Decoding payments.giveawayInfo#4367daa0. v := PaymentsGiveawayInfo{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode PaymentsGiveawayInfoClass: %w", err) } return &v, nil case PaymentsGiveawayInfoResultsTypeID: // Decoding payments.giveawayInfoResults#e175e66f. v := PaymentsGiveawayInfoResults{} if err := v.Decode(buf); err != nil { return nil, fmt.Errorf("unable to decode PaymentsGiveawayInfoClass: %w", err) } return &v, nil default: return nil, fmt.Errorf("unable to decode PaymentsGiveawayInfoClass: %w", bin.NewUnexpectedID(id)) } } // PaymentsGiveawayInfo boxes the PaymentsGiveawayInfoClass providing a helper. type PaymentsGiveawayInfoBox struct { GiveawayInfo PaymentsGiveawayInfoClass } // Decode implements bin.Decoder for PaymentsGiveawayInfoBox. func (b *PaymentsGiveawayInfoBox) Decode(buf *bin.Buffer) error { if b == nil { return fmt.Errorf("unable to decode PaymentsGiveawayInfoBox to nil") } v, err := DecodePaymentsGiveawayInfo(buf) if err != nil { return fmt.Errorf("unable to decode boxed value: %w", err) } b.GiveawayInfo = v return nil } // Encode implements bin.Encode for PaymentsGiveawayInfoBox. func (b *PaymentsGiveawayInfoBox) Encode(buf *bin.Buffer) error { if b == nil || b.GiveawayInfo == nil { return fmt.Errorf("unable to encode PaymentsGiveawayInfoClass as nil") } return b.GiveawayInfo.Encode(buf) }