package  tg 
 
import  ( 
	"context"  
	"errors"  
	"fmt"  
	"sort"  
	"strings"  
 
	"go.uber.org/multierr"  
 
	"github.com/gotd/td/bin"  
	"github.com/gotd/td/tdjson"  
	"github.com/gotd/td/tdp"  
	"github.com/gotd/td/tgerr"  
) 
 
 
var  ( 
	_ = bin .Buffer {} 
	_ = context .Background () 
	_ = fmt .Stringer (nil ) 
	_ = strings .Builder {} 
	_ = errors .Is  
	_ = multierr .AppendInto  
	_ = sort .Ints  
	_ = tdp .Format  
	_ = tgerr .Error {} 
	_ = tdjson .Encoder {} 
) 
 
 
 
 
 
type  ChannelsSendAsPeers  struct  { 
	 
	Peers  []SendAsPeer  
	 
	Chats  []ChatClass  
	 
	Users  []UserClass  
} 
 
 
const  ChannelsSendAsPeersTypeID  = 0xf496b0c6  
 
 
var  ( 
	_ bin .Encoder      = &ChannelsSendAsPeers {} 
	_ bin .Decoder      = &ChannelsSendAsPeers {} 
	_ bin .BareEncoder  = &ChannelsSendAsPeers {} 
	_ bin .BareDecoder  = &ChannelsSendAsPeers {} 
) 
 
func  (s  *ChannelsSendAsPeers ) Zero  () bool  { 
	if  s  == nil  { 
		return  true  
	} 
	if  !(s .Peers  == nil ) { 
		return  false  
	} 
	if  !(s .Chats  == nil ) { 
		return  false  
	} 
	if  !(s .Users  == nil ) { 
		return  false  
	} 
 
	return  true  
} 
 
 
func  (s  *ChannelsSendAsPeers ) String  () string  { 
	if  s  == nil  { 
		return  "ChannelsSendAsPeers(nil)"  
	} 
	type  Alias  ChannelsSendAsPeers  
	return  fmt .Sprintf ("ChannelsSendAsPeers%+v" , Alias (*s )) 
} 
 
 
func  (s  *ChannelsSendAsPeers ) FillFrom  (from  interface  { 
	GetPeers () (value  []SendAsPeer ) 
	GetChats () (value  []ChatClass ) 
	GetUsers () (value  []UserClass ) 
}) { 
	s .Peers  = from .GetPeers () 
	s .Chats  = from .GetChats () 
	s .Users  = from .GetUsers () 
} 
 
 
 
 
func  (*ChannelsSendAsPeers ) TypeID  () uint32  { 
	return  ChannelsSendAsPeersTypeID  
} 
 
 
func  (*ChannelsSendAsPeers ) TypeName  () string  { 
	return  "channels.sendAsPeers"  
} 
 
 
func  (s  *ChannelsSendAsPeers ) TypeInfo  () tdp .Type  { 
	typ  := tdp .Type { 
		Name : "channels.sendAsPeers" , 
		ID :   ChannelsSendAsPeersTypeID , 
	} 
	if  s  == nil  { 
		typ .Null  = true  
		return  typ  
	} 
	typ .Fields  = []tdp .Field { 
		{ 
			Name :       "Peers" , 
			SchemaName : "peers" , 
		}, 
		{ 
			Name :       "Chats" , 
			SchemaName : "chats" , 
		}, 
		{ 
			Name :       "Users" , 
			SchemaName : "users" , 
		}, 
	} 
	return  typ  
} 
 
 
func  (s  *ChannelsSendAsPeers ) Encode  (b  *bin .Buffer ) error  { 
	if  s  == nil  { 
		return  fmt .Errorf ("can't encode channels.sendAsPeers#f496b0c6 as nil" ) 
	} 
	b .PutID (ChannelsSendAsPeersTypeID ) 
	return  s .EncodeBare (b ) 
} 
 
 
func  (s  *ChannelsSendAsPeers ) EncodeBare  (b  *bin .Buffer ) error  { 
	if  s  == nil  { 
		return  fmt .Errorf ("can't encode channels.sendAsPeers#f496b0c6 as nil" ) 
	} 
	b .PutVectorHeader (len (s .Peers )) 
	for  idx , v  := range  s .Peers  { 
		if  err  := v .Encode (b ); err  != nil  { 
			return  fmt .Errorf ("unable to encode channels.sendAsPeers#f496b0c6: field peers element with index %d: %w" , idx , err ) 
		} 
	} 
	b .PutVectorHeader (len (s .Chats )) 
	for  idx , v  := range  s .Chats  { 
		if  v  == nil  { 
			return  fmt .Errorf ("unable to encode channels.sendAsPeers#f496b0c6: field chats element with index %d is nil" , idx ) 
		} 
		if  err  := v .Encode (b ); err  != nil  { 
			return  fmt .Errorf ("unable to encode channels.sendAsPeers#f496b0c6: 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 channels.sendAsPeers#f496b0c6: field users element with index %d is nil" , idx ) 
		} 
		if  err  := v .Encode (b ); err  != nil  { 
			return  fmt .Errorf ("unable to encode channels.sendAsPeers#f496b0c6: field users element with index %d: %w" , idx , err ) 
		} 
	} 
	return  nil  
} 
 
 
func  (s  *ChannelsSendAsPeers ) Decode  (b  *bin .Buffer ) error  { 
	if  s  == nil  { 
		return  fmt .Errorf ("can't decode channels.sendAsPeers#f496b0c6 to nil" ) 
	} 
	if  err  := b .ConsumeID (ChannelsSendAsPeersTypeID ); err  != nil  { 
		return  fmt .Errorf ("unable to decode channels.sendAsPeers#f496b0c6: %w" , err ) 
	} 
	return  s .DecodeBare (b ) 
} 
 
 
func  (s  *ChannelsSendAsPeers ) DecodeBare  (b  *bin .Buffer ) error  { 
	if  s  == nil  { 
		return  fmt .Errorf ("can't decode channels.sendAsPeers#f496b0c6 to nil" ) 
	} 
	{ 
		headerLen , err  := b .VectorHeader () 
		if  err  != nil  { 
			return  fmt .Errorf ("unable to decode channels.sendAsPeers#f496b0c6: field peers: %w" , err ) 
		} 
 
		if  headerLen  > 0  { 
			s .Peers  = make ([]SendAsPeer , 0 , headerLen %bin .PreallocateLimit ) 
		} 
		for  idx  := 0 ; idx  < headerLen ; idx ++ { 
			var  value  SendAsPeer  
			if  err  := value .Decode (b ); err  != nil  { 
				return  fmt .Errorf ("unable to decode channels.sendAsPeers#f496b0c6: field peers: %w" , err ) 
			} 
			s .Peers  = append (s .Peers , value ) 
		} 
	} 
	{ 
		headerLen , err  := b .VectorHeader () 
		if  err  != nil  { 
			return  fmt .Errorf ("unable to decode channels.sendAsPeers#f496b0c6: 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 channels.sendAsPeers#f496b0c6: field chats: %w" , err ) 
			} 
			s .Chats  = append (s .Chats , value ) 
		} 
	} 
	{ 
		headerLen , err  := b .VectorHeader () 
		if  err  != nil  { 
			return  fmt .Errorf ("unable to decode channels.sendAsPeers#f496b0c6: 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 channels.sendAsPeers#f496b0c6: field users: %w" , err ) 
			} 
			s .Users  = append (s .Users , value ) 
		} 
	} 
	return  nil  
} 
 
 
func  (s  *ChannelsSendAsPeers ) GetPeers  () (value  []SendAsPeer ) { 
	if  s  == nil  { 
		return  
	} 
	return  s .Peers  
} 
 
 
func  (s  *ChannelsSendAsPeers ) GetChats  () (value  []ChatClass ) { 
	if  s  == nil  { 
		return  
	} 
	return  s .Chats  
} 
 
 
func  (s  *ChannelsSendAsPeers ) GetUsers  () (value  []UserClass ) { 
	if  s  == nil  { 
		return  
	} 
	return  s .Users  
} 
 
 
func  (s  *ChannelsSendAsPeers ) MapChats  () (value  ChatClassArray ) { 
	return  ChatClassArray (s .Chats ) 
} 
 
 
func  (s  *ChannelsSendAsPeers ) MapUsers  () (value  UserClassArray ) { 
	return  UserClassArray (s .Users ) 
} 
  
The pages are generated with Golds   v0.6.7 . (GOOS=linux GOARCH=amd64)
Golds  is a Go 101  project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @Go100and1  (reachable from the left QR code) to get the latest news of Golds .