// see [[https://github.com/transmission/transmission/blob/master/libtransmission/transmission.h#L1649][transmission.h]].
export enum TransmissionTorrentStatus {
STOPPED = 0,
CHECK_WAIT = 1,
CHECK = 2,
DOWNLOAD_WAIT = 3,
DOWNLOAD = 4,
SEED_WAIT = 5,
SEED = 6
}
export interface TransmissionTorrentFiles {
bytesCompleted: number
length: number
name: string
}
export interface TransmissionTorrentFileStats {
bytesCompleted: number
wanted: boolean
priority: number
}
export interface TransmissionTorrentPeers {
address: string
clientName: string
clientIsChoked: boolean
clientIsInterested: boolean
flagStr: string
isDownloadingFrom: boolean
isEncrypted: boolean
isIncoming: boolean
isUploadingTo: boolean
isUTP: boolean
peerIsChoked: boolean
peerIsInterested: boolean
port: number
progress: number
rateToClient: number
rateToPeer: number
}
export interface TransmissionTorrentPeersFrom {
fromCache: number
fromDht: number
fromIncoming: number
fromLpd: number
fromLtep: number
fromPex: number
fromTracker: number
}
export type TransmissionTorrentPieces = string
export interface TransmissionTorrentTrackers {
announce: string
id: number
scrape: string
tier: number
}
export interface TransmissionTorrentTrackerStats {
announce: string
announceState: number
downloadCount: number
hasAnnounced: boolean
hasScraped: boolean
host: string
id: number
isBackup: boolean
lastAnnouncePeerCount: number
lastAnnounceResult: string
lastAnnounceStartTime: number
lastAnnounceSucceeded: boolean
lastAnnounceTime: number
lastAnnounceTimedOut: boolean
lastScrapeResult: string
lastScrapeStartTime: number
lastScrapeSucceeded: boolean
lastScrapeTime: number
lastScrapeTimedOut: boolean
leecherCount: number
nextAnnounceTime: number
nextScrapeTime: number
scrape: string
scrapeState: number
seederCount: number
tier: number
}
/**
* Fields that you can assign using the torrent-set method
* but you can't retrieve using the torrent-get method.
*
* You can access the relevent information using the other
* fields of the torrent-get method, attempting to access
* any of these will just return 0 for them.
*/
export interface TransmissionTorrent_WriteOnly {
"files-wanted": number[]
"files-unwanted": number[]
"location": string
"priority-high": number[]
"priority-low": number[]
"priority-normal": number[]
"trackerAdd": string[]
"trackerRemove": number[]
"trackerReplace": { [id: number]: string }
}
export enum TransmissionPriorityType {
HIGH = +1,
NORM = 0,
LOW = -1
}
/**
* Fields of {@code TransmissionTorrentType} that can be modified
* using the torrent-set method. Write only fields can also be found
* in {@code TransmissionTorrent_WriteOnly}. Any other fields are
* read only.
*/
export interface TransmissionTorrent_Mutable {
"bandwidthPriority": TransmissionPriorityType
"downloadLimit": number
"downloadLimited": boolean
"honorsSessionLimits": boolean
"ids": number[]
"labels": string[]
"peer-limit": number
"queuePosition": number
"seedIdleLimit": number
"seedIdleMode": number
"seedRatioLimit": number
"seedRatioMode": number
"uploadLimit": number
"uploadLimited": boolean
}
// see [[https://github.com/transmission/transmission/blob/master/libtransmission/transmission.h#L1674][tr_stat_errtype]].
export enum TransmissionError {
OK,
TRACKER_WARNING,
TRACKER_ERROR,
LOCAL_ERROR,
}
export interface TransmissionTorrent
extends TransmissionTorrent_Mutable, TransmissionTorrent_WriteOnly {
"activityDate": number
"addedDate": number
"comment": string
"corruptEver": number
"creator": string
"dateCreated": number
"desiredAvailable": number
"doneDate": number
"downloadDir": string
"downloadedEver": number
"editDate": number
"error": TransmissionError
"errorString": string
"eta": number
"etaIdle": number
"files": TransmissionTorrentFiles[]
"fileStats": TransmissionTorrentFileStats[]
"hashString": string
"haveUnchecked": number
"haveValid": number
"id": number
"isFinished": boolean
"isPrivate": boolean
"isStalled": boolean
"leftUntilDone": number
"magnetLink": string
"manualAnnounceTime": number
"maxConnectedPeers": number
"metadataPercentComplete": number
"name": string
"peers": TransmissionTorrentPeers[]
"peersFrom": TransmissionTorrentPeersFrom
"peersConnected": number
"peersGettingFromUs": number
"peersSendingToUs": number
"percentDone": number
"pieces": TransmissionTorrentPieces
"pieceCount": number
"pieceSize": number
"priorities": TransmissionPriorityType[]
"rateDownload": number
"rateUpload": number
"recheckProgress": number
"secondsDownloading": number
"secondsSeeding": number
"sizeWhenDone": number
"startDate": number
"status": TransmissionTorrentStatus
"totalSize": number
"torrentFile": string
"trackers": TransmissionTorrentTrackers[]
"trackerStats": TransmissionTorrentTrackerStats[]
"uploadedEver": number
"uploadRatio": number
"wanted": (0 | 1)[] // actually a number, 0 or 1.
"webseedsSendingToUs": number
"webseeds": string[]
}