package DataSource

type Torrent struct {
	ActivityDate            int64          `json:"activityDate"`
	AddedDate               int64          `json:"addedDate"`
	BandwidthPriority       int64          `json:"bandwidthPriority"`
	Comment                 string         `json:"comment"`
	CorruptEver             int64          `json:"corruptEver"`
	Creator                 string         `json:"creator"`
	DateCreated             int64          `json:"dateCreated"`
	DesiredAvailable        int64          `json:"desiredAvailable"`
	DoneDate                int64          `json:"doneDate"`
	DownloadDir             string         `json:"downloadDir"`
	DownloadedEver          int64          `json:"downloadedEver"`
	DownloadLimit           int64          `json:"downloadLimit"`
	DownloadLimited         bool           `json:"downloadLimited"`
	Error                   int64          `json:"error"`
	ErrorString             string         `json:"errorString"`
	Eta                     int64          `json:"eta"`
	EtaIdle                 int64          `json:"etaIdle"`
	Files                   []File         `json:"files"`
	FileStats               []FileStats    `json:"fileStats"`
	HashString              string         `json:"hashString"`
	HaveUnchecked           int64          `json:"haveUnchecked"`
	HaveValid               int64          `json:"haveValid"`
	HonorsSessionLimits     bool           `json:"honorsSessionLimits"`
	Id                      int64          `json:"id"`
	IsFinished              bool           `json:"isFinished"`
	IsPrivate               bool           `json:"isPrivate"`
	IsStalled               bool           `json:"isStalled"`
	LeftUntilDone           int64          `json:"leftUntilDone"`
	MagnetLink              string         `json:"magnetLink"`
	ManualAnnounceTime      int64          `json:"manualAnnounceTime"`
	MaxConnectedPeers       int64          `json:"maxConnectedPeers"`
	MetadataPercentComplete float64        `json:"metadataPercentComplete"`
	Name                    string         `json:"name"`
	PeerLimit               int64          `json:"peer-limit"`
	Peers                   []Peer         `json:"peers"`
	PeersConnected          int64          `json:"peersConnected"`
	PeersFrom               PeersFrom      `json:"peersFrom"`
	PeersGettingFromUs      int64          `json:"peersGettingFromUs"`
	PeersSendingToUs        int64          `json:"peersSendingToUs"`
	PercentDone             float64        `json:"percentDone"`
	Pieces                  []byte         `json:"pieces"` // n.b. marshalled as base64
	PieceCount              int64          `json:"pieceCount"`
	PieceSize               int64          `json:"pieceSize"`
	Priorities              []int64        `json:"priorities"` // one for each file in the file list
	QueuePosition           int64          `json:"queuePosition"`
	RateDownload_Bps        int64          `json:"rateDownload"`
	RateUpload_Bps          int64          `json:"rateUpload"`
	RecheckProgress         float64        `json:"recheckProgress"`
	SecondsDownloading      int64          `json:"secondsDownloading"`
	SecondsSeeding          int64          `json:"secondsSeeding"`
	SeedIdleLimit           int64          `json:"seedIdleLimit"`
	SeedIdleMode            int64          `json:"seedIdleMode"`
	SeedRatioLimit          float64        `json:"seedRatioLimit"`
	SeedRatioMode           int64          `json:"seedRatioMode"`
	SizeWhenDone            int64          `json:"sizeWhenDone"`
	StartDate               int64          `json:"startDate"`
	Status                  int64          `json:"status"`
	Trackers                []Tracker      `json:"trackers"`
	TrackerStats            []TrackerStats `json:"trackerStats"`
	TotalSize               int64          `json:"totalSize"`
	TorrentFile             string         `json:"torrentFile"`
	UploadedEver            int64          `json:"uploadedEver"`
	UploadLimit             int64          `json:"uploadLimit"`
	UploadLimited           bool           `json:"uploadLimited"`
	UploadRatio             float64        `json:"uploadRatio"`
	Wanted                  []bool         `json:"wanted"` // one for each file in the file list
	Webseeds                []Webseed      `json:"webseeds"`
	WebseedsSendingToUs     int64          `json:"webseedsSendingToUs"`
}
