@nice2dev/ui-tools 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +36 -0
  2. package/dist/access-control.d.ts +726 -0
  3. package/dist/access-control.d.ts.map +1 -0
  4. package/dist/accessibility-i18n.d.ts +1017 -0
  5. package/dist/accessibility-i18n.d.ts.map +1 -0
  6. package/dist/ai-assistant.d.ts +263 -0
  7. package/dist/ai-assistant.d.ts.map +1 -0
  8. package/dist/ai-playgrounds.d.ts +842 -0
  9. package/dist/ai-playgrounds.d.ts.map +1 -0
  10. package/dist/alerting-incidents.d.ts +558 -0
  11. package/dist/alerting-incidents.d.ts.map +1 -0
  12. package/dist/api-designer.d.ts +1568 -0
  13. package/dist/api-designer.d.ts.map +1 -0
  14. package/dist/api-testing.d.ts +1146 -0
  15. package/dist/api-testing.d.ts.map +1 -0
  16. package/dist/apm-profiling.d.ts +656 -0
  17. package/dist/apm-profiling.d.ts.map +1 -0
  18. package/dist/artifacts.d.ts +421 -0
  19. package/dist/artifacts.d.ts.map +1 -0
  20. package/dist/audit-compliance.d.ts +752 -0
  21. package/dist/audit-compliance.d.ts.map +1 -0
  22. package/dist/certificates.d.ts +256 -0
  23. package/dist/certificates.d.ts.map +1 -0
  24. package/dist/chart-builder.d.ts +1404 -0
  25. package/dist/chart-builder.d.ts.map +1 -0
  26. package/dist/cloud-instances.d.ts +169 -0
  27. package/dist/cloud-instances.d.ts.map +1 -0
  28. package/dist/config-management.d.ts +350 -0
  29. package/dist/config-management.d.ts.map +1 -0
  30. package/dist/containers.d.ts +256 -0
  31. package/dist/containers.d.ts.map +1 -0
  32. package/dist/dashboard-designer.d.ts +1238 -0
  33. package/dist/dashboard-designer.d.ts.map +1 -0
  34. package/dist/data-management.d.ts +496 -0
  35. package/dist/data-management.d.ts.map +1 -0
  36. package/dist/data-pipeline.d.ts +1105 -0
  37. package/dist/data-pipeline.d.ts.map +1 -0
  38. package/dist/data-warehouse.d.ts +1097 -0
  39. package/dist/data-warehouse.d.ts.map +1 -0
  40. package/dist/dataset-management.d.ts +782 -0
  41. package/dist/dataset-management.d.ts.map +1 -0
  42. package/dist/db-adapters.d.ts +704 -0
  43. package/dist/db-adapters.d.ts.map +1 -0
  44. package/dist/db-admin.d.ts +699 -0
  45. package/dist/db-admin.d.ts.map +1 -0
  46. package/dist/db-designer.d.ts +366 -0
  47. package/dist/db-designer.d.ts.map +1 -0
  48. package/dist/debugger.d.ts +356 -0
  49. package/dist/debugger.d.ts.map +1 -0
  50. package/dist/device-management.d.ts +871 -0
  51. package/dist/device-management.d.ts.map +1 -0
  52. package/dist/distributed-tracing.d.ts +427 -0
  53. package/dist/distributed-tracing.d.ts.map +1 -0
  54. package/dist/dns-management.d.ts +215 -0
  55. package/dist/dns-management.d.ts.map +1 -0
  56. package/dist/download-manager.d.ts +271 -0
  57. package/dist/download-manager.d.ts.map +1 -0
  58. package/dist/download-torrent.d.ts +1062 -0
  59. package/dist/download-torrent.d.ts.map +1 -0
  60. package/dist/edge-computing.d.ts +720 -0
  61. package/dist/edge-computing.d.ts.map +1 -0
  62. package/dist/education.d.ts +1135 -0
  63. package/dist/education.d.ts.map +1 -0
  64. package/dist/email-template.d.ts +1141 -0
  65. package/dist/email-template.d.ts.map +1 -0
  66. package/dist/erp-enterprise.d.ts +1270 -0
  67. package/dist/erp-enterprise.d.ts.map +1 -0
  68. package/dist/form-builder.d.ts +1117 -0
  69. package/dist/form-builder.d.ts.map +1 -0
  70. package/dist/game-engine-advanced.d.ts +1049 -0
  71. package/dist/game-engine-advanced.d.ts.map +1 -0
  72. package/dist/git.d.ts +415 -0
  73. package/dist/git.d.ts.map +1 -0
  74. package/dist/hardware-integration.d.ts +966 -0
  75. package/dist/hardware-integration.d.ts.map +1 -0
  76. package/dist/iac.d.ts +318 -0
  77. package/dist/iac.d.ts.map +1 -0
  78. package/dist/icon-tools.d.ts +1023 -0
  79. package/dist/icon-tools.d.ts.map +1 -0
  80. package/dist/ide.d.ts +322 -0
  81. package/dist/ide.d.ts.map +1 -0
  82. package/dist/index.cjs +2 -0
  83. package/dist/index.cjs.map +1 -0
  84. package/dist/index.d.ts +176 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.mjs +1887 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/integration-platform.d.ts +857 -0
  89. package/dist/integration-platform.d.ts.map +1 -0
  90. package/dist/kubernetes.d.ts +278 -0
  91. package/dist/kubernetes.d.ts.map +1 -0
  92. package/dist/life-management.d.ts +1132 -0
  93. package/dist/life-management.d.ts.map +1 -0
  94. package/dist/log-management.d.ts +473 -0
  95. package/dist/log-management.d.ts.map +1 -0
  96. package/dist/mathematics.d.ts +870 -0
  97. package/dist/mathematics.d.ts.map +1 -0
  98. package/dist/message-queue.d.ts +1006 -0
  99. package/dist/message-queue.d.ts.map +1 -0
  100. package/dist/metrics-dashboard.d.ts +596 -0
  101. package/dist/metrics-dashboard.d.ts.map +1 -0
  102. package/dist/mobile-components.d.ts +766 -0
  103. package/dist/mobile-components.d.ts.map +1 -0
  104. package/dist/model-deployment.d.ts +787 -0
  105. package/dist/model-deployment.d.ts.map +1 -0
  106. package/dist/model-registry.d.ts +740 -0
  107. package/dist/model-registry.d.ts.map +1 -0
  108. package/dist/model-training.d.ts +706 -0
  109. package/dist/model-training.d.ts.map +1 -0
  110. package/dist/network-config.d.ts +334 -0
  111. package/dist/network-config.d.ts.map +1 -0
  112. package/dist/network-monitoring.d.ts +291 -0
  113. package/dist/network-monitoring.d.ts.map +1 -0
  114. package/dist/pdf-tools.d.ts +1003 -0
  115. package/dist/pdf-tools.d.ts.map +1 -0
  116. package/dist/pipelines.d.ts +250 -0
  117. package/dist/pipelines.d.ts.map +1 -0
  118. package/dist/remote-desktop.d.ts +207 -0
  119. package/dist/remote-desktop.d.ts.map +1 -0
  120. package/dist/report-designer.d.ts +1153 -0
  121. package/dist/report-designer.d.ts.map +1 -0
  122. package/dist/scada-industrial.d.ts +848 -0
  123. package/dist/scada-industrial.d.ts.map +1 -0
  124. package/dist/scientific-research.d.ts +1149 -0
  125. package/dist/scientific-research.d.ts.map +1 -0
  126. package/dist/secret-management.d.ts +617 -0
  127. package/dist/secret-management.d.ts.map +1 -0
  128. package/dist/security-scanning.d.ts +714 -0
  129. package/dist/security-scanning.d.ts.map +1 -0
  130. package/dist/self-service-analytics.d.ts +1208 -0
  131. package/dist/self-service-analytics.d.ts.map +1 -0
  132. package/dist/sensor-dashboard.d.ts +845 -0
  133. package/dist/sensor-dashboard.d.ts.map +1 -0
  134. package/dist/server-management.d.ts +331 -0
  135. package/dist/server-management.d.ts.map +1 -0
  136. package/dist/smart-home.d.ts +861 -0
  137. package/dist/smart-home.d.ts.map +1 -0
  138. package/dist/spreadsheet.d.ts +1043 -0
  139. package/dist/spreadsheet.d.ts.map +1 -0
  140. package/dist/sql-editor.d.ts +402 -0
  141. package/dist/sql-editor.d.ts.map +1 -0
  142. package/dist/terminal.d.ts +245 -0
  143. package/dist/terminal.d.ts.map +1 -0
  144. package/dist/testing-qa.d.ts +1013 -0
  145. package/dist/testing-qa.d.ts.map +1 -0
  146. package/dist/torrent-client.d.ts +298 -0
  147. package/dist/torrent-client.d.ts.map +1 -0
  148. package/dist/traceless.d.ts +759 -0
  149. package/dist/traceless.d.ts.map +1 -0
  150. package/dist/virtual-machines.d.ts +199 -0
  151. package/dist/virtual-machines.d.ts.map +1 -0
  152. package/dist/visual-scripting.d.ts +381 -0
  153. package/dist/visual-scripting.d.ts.map +1 -0
  154. package/dist/word-processor.d.ts +1124 -0
  155. package/dist/word-processor.d.ts.map +1 -0
  156. package/dist/workspace.d.ts +333 -0
  157. package/dist/workspace.d.ts.map +1 -0
  158. package/package.json +62 -0
@@ -0,0 +1,1062 @@
1
+ /**
2
+ * @file download-torrent.ts
3
+ * @module @nice2dev/ui-tools
4
+ * @description PRO-31 — Download & Torrent Suite
5
+ *
6
+ * Types for download management, BitTorrent clients, streaming,
7
+ * automation, platform integrations, and media management.
8
+ */
9
+ /** Download status */
10
+ export type DownloadStatus = 'queued' | 'downloading' | 'paused' | 'completed' | 'failed' | 'cancelled' | 'seeding' | 'checking' | 'allocating' | 'stalled';
11
+ /** Download priority */
12
+ export type DownloadPriority = 'low' | 'normal' | 'high' | 'critical';
13
+ /** Transfer speed */
14
+ export interface TransferSpeed {
15
+ bytesPerSecond: number;
16
+ displayValue: string;
17
+ displayUnit: 'B/s' | 'KB/s' | 'MB/s' | 'GB/s';
18
+ }
19
+ /** Transfer stats */
20
+ export interface TransferStats {
21
+ downloaded: number;
22
+ uploaded: number;
23
+ remaining: number;
24
+ total: number;
25
+ progress: number;
26
+ downloadSpeed: TransferSpeed;
27
+ uploadSpeed: TransferSpeed;
28
+ eta?: number;
29
+ averageSpeed?: TransferSpeed;
30
+ peakSpeed?: TransferSpeed;
31
+ }
32
+ /** Bandwidth limit */
33
+ export interface BandwidthLimit {
34
+ download?: number;
35
+ upload?: number;
36
+ unit: 'B/s' | 'KB/s' | 'MB/s';
37
+ enabled: boolean;
38
+ }
39
+ /** Download manager config */
40
+ export interface DownloadManagerConfig {
41
+ defaultDownloadPath: string;
42
+ maxConcurrentDownloads: number;
43
+ bandwidthLimit?: BandwidthLimit;
44
+ retryAttempts: number;
45
+ retryDelay: number;
46
+ autoStart?: boolean;
47
+ resumeOnStartup?: boolean;
48
+ categories?: DownloadCategory[];
49
+ fileTypeFilters?: FileTypeFilter[];
50
+ }
51
+ /** Download category */
52
+ export interface DownloadCategory {
53
+ id: string;
54
+ name: string;
55
+ path: string;
56
+ fileTypes?: string[];
57
+ icon?: string;
58
+ color?: string;
59
+ }
60
+ /** File type filter */
61
+ export interface FileTypeFilter {
62
+ name: string;
63
+ extensions: string[];
64
+ category?: string;
65
+ mimeTypes?: string[];
66
+ }
67
+ /** Download item */
68
+ export interface DownloadItem {
69
+ id: string;
70
+ url: string;
71
+ filename: string;
72
+ path: string;
73
+ status: DownloadStatus;
74
+ priority: DownloadPriority;
75
+ size?: number;
76
+ downloadedBytes: number;
77
+ progress: number;
78
+ speed: TransferSpeed;
79
+ eta?: number;
80
+ addedDate: Date;
81
+ startedDate?: Date;
82
+ completedDate?: Date;
83
+ errorMessage?: string;
84
+ retryCount: number;
85
+ category?: string;
86
+ source?: DownloadSource;
87
+ checksum?: FileChecksum;
88
+ metadata?: DownloadMetadata;
89
+ }
90
+ /** Download source */
91
+ export interface DownloadSource {
92
+ type: DownloadSourceType;
93
+ protocol: DownloadProtocol;
94
+ host: string;
95
+ referrer?: string;
96
+ cookies?: string;
97
+ userAgent?: string;
98
+ auth?: DownloadAuth;
99
+ }
100
+ /** Download source type */
101
+ export type DownloadSourceType = 'direct' | 'torrent' | 'magnet' | 'metalink' | 'nzb' | 'file_host' | 'debrid' | 'cloud';
102
+ /** Download protocol */
103
+ export type DownloadProtocol = 'http' | 'https' | 'ftp' | 'sftp' | 'bittorrent' | 'nzbget' | 'webdav';
104
+ /** Download auth */
105
+ export interface DownloadAuth {
106
+ type: 'basic' | 'bearer' | 'api_key' | 'oauth';
107
+ username?: string;
108
+ password?: string;
109
+ token?: string;
110
+ apiKey?: string;
111
+ }
112
+ /** File checksum */
113
+ export interface FileChecksum {
114
+ algorithm: 'md5' | 'sha1' | 'sha256' | 'crc32';
115
+ value: string;
116
+ verified?: boolean;
117
+ }
118
+ /** Download metadata */
119
+ export interface DownloadMetadata {
120
+ title?: string;
121
+ description?: string;
122
+ tags?: string[];
123
+ customFields?: Record<string, string>;
124
+ }
125
+ /** Download schedule */
126
+ export interface DownloadSchedule {
127
+ startTime?: Date;
128
+ stopTime?: Date;
129
+ daysOfWeek?: number[];
130
+ priority?: DownloadPriority;
131
+ bandwidthLimit?: BandwidthLimit;
132
+ }
133
+ /** Download queue */
134
+ export interface DownloadQueue {
135
+ items: DownloadItem[];
136
+ totalSize: number;
137
+ totalProgress: number;
138
+ activeDownloads: number;
139
+ queuedDownloads: number;
140
+ completedDownloads: number;
141
+ }
142
+ /** URL parse result */
143
+ export interface URLParseResult {
144
+ url: string;
145
+ protocol: DownloadProtocol;
146
+ host: string;
147
+ filename: string;
148
+ extension?: string;
149
+ fileType?: string;
150
+ size?: number;
151
+ resumable?: boolean;
152
+ requiresAuth?: boolean;
153
+ isMagnet?: boolean;
154
+ isMetalink?: boolean;
155
+ magnetInfo?: MagnetLinkInfo;
156
+ }
157
+ /** Magnet link info */
158
+ export interface MagnetLinkInfo {
159
+ infoHash: string;
160
+ displayName?: string;
161
+ trackers?: string[];
162
+ exactLength?: number;
163
+ keywords?: string[];
164
+ }
165
+ /** Torrent client config */
166
+ export interface TorrentClientConfig {
167
+ downloadPath: string;
168
+ tempPath?: string;
169
+ maxActiveTorrents: number;
170
+ maxActiveSeedsperTorrent: number;
171
+ maxConnectionsPerTorrent: number;
172
+ maxGlobalConnections: number;
173
+ bandwidthLimit: BandwidthLimit;
174
+ dhtEnabled: boolean;
175
+ pexEnabled: boolean;
176
+ lpdEnabled: boolean;
177
+ upnpEnabled: boolean;
178
+ natPmpEnabled: boolean;
179
+ encryptionMode: EncryptionMode;
180
+ ipv6Enabled: boolean;
181
+ listeningPort: number;
182
+ proxySettings?: ProxySettings;
183
+ }
184
+ /** Encryption mode */
185
+ export type EncryptionMode = 'disabled' | 'enabled' | 'forced';
186
+ /** Proxy settings */
187
+ export interface ProxySettings {
188
+ type: ProxyType;
189
+ host: string;
190
+ port: number;
191
+ username?: string;
192
+ password?: string;
193
+ proxyPeerConnections?: boolean;
194
+ proxyTrackers?: boolean;
195
+ }
196
+ /** Proxy type */
197
+ export type ProxyType = 'http' | 'socks4' | 'socks5' | 'i2p' | 'tor';
198
+ /** Torrent */
199
+ export interface Torrent {
200
+ id: string;
201
+ infoHash: string;
202
+ name: string;
203
+ status: TorrentStatus;
204
+ progress: number;
205
+ size: number;
206
+ downloadedBytes: number;
207
+ uploadedBytes: number;
208
+ downloadSpeed: TransferSpeed;
209
+ uploadSpeed: TransferSpeed;
210
+ eta?: number;
211
+ ratio: number;
212
+ seeds: number;
213
+ peers: number;
214
+ addedDate: Date;
215
+ completedDate?: Date;
216
+ savePath: string;
217
+ files: TorrentFile[];
218
+ trackers: TorrentTracker[];
219
+ pieces: PieceStatus[];
220
+ comment?: string;
221
+ creator?: string;
222
+ creationDate?: Date;
223
+ isPrivate: boolean;
224
+ webSeeds?: string[];
225
+ errorMessage?: string;
226
+ label?: string;
227
+ priority: DownloadPriority;
228
+ }
229
+ /** Torrent status */
230
+ export type TorrentStatus = 'downloading' | 'seeding' | 'paused' | 'checking' | 'queued' | 'error' | 'stopped' | 'finished' | 'allocating' | 'moving';
231
+ /** Torrent file */
232
+ export interface TorrentFile {
233
+ index: number;
234
+ path: string;
235
+ name: string;
236
+ size: number;
237
+ downloaded: number;
238
+ progress: number;
239
+ priority: FilePriority;
240
+ wanted: boolean;
241
+ }
242
+ /** File priority */
243
+ export type FilePriority = 'skip' | 'low' | 'normal' | 'high';
244
+ /** Torrent tracker */
245
+ export interface TorrentTracker {
246
+ url: string;
247
+ tier: number;
248
+ status: TrackerStatus;
249
+ seeds?: number;
250
+ leechers?: number;
251
+ lastAnnounce?: Date;
252
+ nextAnnounce?: Date;
253
+ errorMessage?: string;
254
+ }
255
+ /** Tracker status */
256
+ export type TrackerStatus = 'working' | 'updating' | 'error' | 'disabled' | 'not_contacted';
257
+ /** Piece status */
258
+ export type PieceStatus = 'missing' | 'requested' | 'downloading' | 'complete';
259
+ /** Peer */
260
+ export interface Peer {
261
+ id: string;
262
+ ip: string;
263
+ port: number;
264
+ client: string;
265
+ country?: string;
266
+ flags: PeerFlags;
267
+ progress: number;
268
+ downloadSpeed: TransferSpeed;
269
+ uploadSpeed: TransferSpeed;
270
+ downloaded: number;
271
+ uploaded: number;
272
+ connectionType: 'incoming' | 'outgoing';
273
+ isEncrypted: boolean;
274
+ }
275
+ /** Peer flags */
276
+ export interface PeerFlags {
277
+ interested: boolean;
278
+ choked: boolean;
279
+ snubbed: boolean;
280
+ optimisticUnchoke: boolean;
281
+ peerInterested: boolean;
282
+ peerChoked: boolean;
283
+ supportsExtensions: boolean;
284
+ localConnection: boolean;
285
+ dht: boolean;
286
+ pex: boolean;
287
+ lpd: boolean;
288
+ utp: boolean;
289
+ webSeed: boolean;
290
+ }
291
+ /** Torrent creation options */
292
+ export interface TorrentCreationOptions {
293
+ name: string;
294
+ sourcePath: string;
295
+ trackers: string[];
296
+ webSeeds?: string[];
297
+ pieceSize?: number;
298
+ isPrivate?: boolean;
299
+ comment?: string;
300
+ source?: string;
301
+ }
302
+ /** Created torrent */
303
+ export interface CreatedTorrent {
304
+ infoHash: string;
305
+ magnetLink: string;
306
+ torrentFile: Uint8Array;
307
+ size: number;
308
+ pieceCount: number;
309
+ pieceSize: number;
310
+ }
311
+ /** Torrent dashboard stats */
312
+ export interface TorrentDashboardStats {
313
+ downloadSpeed: TransferSpeed;
314
+ uploadSpeed: TransferSpeed;
315
+ activeDownloads: number;
316
+ activeSeeders: number;
317
+ totalDownloaded: number;
318
+ totalUploaded: number;
319
+ globalRatio: number;
320
+ dhtNodes: number;
321
+ totalPeers: number;
322
+ sessionDuration: number;
323
+ }
324
+ /** Streaming player config */
325
+ export interface StreamingPlayerConfig {
326
+ bufferSize: number;
327
+ minBufferBeforePlay: number;
328
+ maxBufferAhead: number;
329
+ preferredQuality?: StreamQuality;
330
+ castEnabled?: boolean;
331
+ subtitleLanguages?: string[];
332
+ }
333
+ /** Stream quality */
334
+ export type StreamQuality = 'auto' | '4k' | '1080p' | '720p' | '480p' | '360p' | 'audio_only';
335
+ /** Stream status */
336
+ export interface StreamStatus {
337
+ isPlaying: boolean;
338
+ isBuffering: boolean;
339
+ bufferProgress: number;
340
+ playbackPosition: number;
341
+ duration?: number;
342
+ currentQuality: StreamQuality;
343
+ availableQualities: StreamQuality[];
344
+ castingTo?: CastDevice;
345
+ }
346
+ /** Cast device */
347
+ export interface CastDevice {
348
+ id: string;
349
+ name: string;
350
+ type: CastDeviceType;
351
+ status: 'idle' | 'casting' | 'unavailable';
352
+ }
353
+ /** Cast device type */
354
+ export type CastDeviceType = 'chromecast' | 'dlna' | 'airplay' | 'roku';
355
+ /** Video preview info */
356
+ export interface VideoPreviewInfo {
357
+ duration: number;
358
+ width: number;
359
+ height: number;
360
+ codec: string;
361
+ bitrate: number;
362
+ frameRate: number;
363
+ thumbnails?: VideoThumbnail[];
364
+ audioTracks?: AudioTrackInfo[];
365
+ subtitleTracks?: SubtitleTrackInfo[];
366
+ }
367
+ /** Video thumbnail */
368
+ export interface VideoThumbnail {
369
+ timestamp: number;
370
+ url: string;
371
+ width: number;
372
+ height: number;
373
+ }
374
+ /** Audio track info */
375
+ export interface AudioTrackInfo {
376
+ index: number;
377
+ language: string;
378
+ codec: string;
379
+ channels: number;
380
+ bitrate: number;
381
+ default: boolean;
382
+ }
383
+ /** Subtitle track info */
384
+ export interface SubtitleTrackInfo {
385
+ index: number;
386
+ language: string;
387
+ format: 'srt' | 'ass' | 'vtt' | 'sub';
388
+ default: boolean;
389
+ forced: boolean;
390
+ }
391
+ /** Audio preview info */
392
+ export interface AudioPreviewInfo {
393
+ duration: number;
394
+ codec: string;
395
+ bitrate: number;
396
+ sampleRate: number;
397
+ channels: number;
398
+ waveformData?: number[];
399
+ metadata?: AudioMetadata;
400
+ }
401
+ /** Audio metadata (ID3 tags) */
402
+ export interface AudioMetadata {
403
+ title?: string;
404
+ artist?: string;
405
+ album?: string;
406
+ year?: number;
407
+ track?: number;
408
+ genre?: string;
409
+ albumArt?: string;
410
+ duration?: number;
411
+ }
412
+ /** Archive contents */
413
+ export interface ArchiveContents {
414
+ format: ArchiveFormat;
415
+ files: ArchiveFile[];
416
+ totalSize: number;
417
+ compressedSize: number;
418
+ compressionRatio: number;
419
+ isEncrypted: boolean;
420
+ comment?: string;
421
+ }
422
+ /** Archive format */
423
+ export type ArchiveFormat = 'zip' | 'rar' | '7z' | 'tar' | 'tar.gz' | 'tar.bz2' | 'tar.xz';
424
+ /** Archive file */
425
+ export interface ArchiveFile {
426
+ path: string;
427
+ name: string;
428
+ size: number;
429
+ compressedSize: number;
430
+ isDirectory: boolean;
431
+ modifiedDate?: Date;
432
+ crc?: string;
433
+ }
434
+ /** Download scheduler config */
435
+ export interface DownloadSchedulerConfig {
436
+ enabled: boolean;
437
+ rules: ScheduleRule[];
438
+ defaultBandwidth: BandwidthLimit;
439
+ autoShutdown?: AutoShutdownConfig;
440
+ wakeOnLan?: WakeOnLanConfig;
441
+ }
442
+ /** Schedule rule */
443
+ export interface ScheduleRule {
444
+ id: string;
445
+ name: string;
446
+ enabled: boolean;
447
+ startTime: string;
448
+ endTime: string;
449
+ daysOfWeek: number[];
450
+ bandwidth?: BandwidthLimit;
451
+ priority?: DownloadPriority;
452
+ action?: ScheduleAction;
453
+ }
454
+ /** Schedule action */
455
+ export type ScheduleAction = 'start' | 'pause' | 'limit' | 'unlimited';
456
+ /** Auto shutdown config */
457
+ export interface AutoShutdownConfig {
458
+ enabled: boolean;
459
+ action: 'shutdown' | 'hibernate' | 'sleep' | 'logout';
460
+ whenQueueEmpty?: boolean;
461
+ afterTime?: number;
462
+ }
463
+ /** Wake on LAN config */
464
+ export interface WakeOnLanConfig {
465
+ enabled: boolean;
466
+ macAddress: string;
467
+ broadcastAddress: string;
468
+ port: number;
469
+ }
470
+ /** RSS feed config */
471
+ export interface RSSFeedConfig {
472
+ id: string;
473
+ name: string;
474
+ url: string;
475
+ enabled: boolean;
476
+ refreshInterval: number;
477
+ filters: RSSFilter[];
478
+ downloadPath?: string;
479
+ lastUpdated?: Date;
480
+ lastError?: string;
481
+ }
482
+ /** RSS filter */
483
+ export interface RSSFilter {
484
+ id: string;
485
+ name: string;
486
+ enabled: boolean;
487
+ matchType: 'include' | 'exclude';
488
+ pattern: string;
489
+ isRegex: boolean;
490
+ qualityPreference?: string[];
491
+ episodeRange?: {
492
+ min?: number;
493
+ max?: number;
494
+ };
495
+ }
496
+ /** RSS item */
497
+ export interface RSSItem {
498
+ id: string;
499
+ feedId: string;
500
+ title: string;
501
+ link: string;
502
+ pubDate: Date;
503
+ description?: string;
504
+ enclosure?: {
505
+ url: string;
506
+ type: string;
507
+ length: number;
508
+ };
509
+ matched: boolean;
510
+ downloaded: boolean;
511
+ }
512
+ /** Watch folder config */
513
+ export interface WatchFolderConfig {
514
+ id: string;
515
+ path: string;
516
+ enabled: boolean;
517
+ patterns: string[];
518
+ recursive: boolean;
519
+ processedPath?: string;
520
+ action: WatchFolderAction;
521
+ }
522
+ /** Watch folder action */
523
+ export type WatchFolderAction = 'add' | 'add_paused' | 'add_and_delete';
524
+ /** Automation rule */
525
+ export interface AutomationRule {
526
+ id: string;
527
+ name: string;
528
+ enabled: boolean;
529
+ trigger: AutomationTrigger;
530
+ conditions: AutomationCondition[];
531
+ actions: AutomationAction[];
532
+ }
533
+ /** Automation trigger */
534
+ export type AutomationTrigger = 'on_add' | 'on_start' | 'on_complete' | 'on_error' | 'on_ratio_reached' | 'on_seed_time_reached';
535
+ /** Automation condition */
536
+ export interface AutomationCondition {
537
+ field: AutomationField;
538
+ operator: AutomationOperator;
539
+ value: string | number;
540
+ }
541
+ /** Automation field */
542
+ export type AutomationField = 'name' | 'size' | 'category' | 'tracker' | 'file_type' | 'ratio' | 'seed_time';
543
+ /** Automation operator */
544
+ export type AutomationOperator = 'equals' | 'not_equals' | 'contains' | 'not_contains' | 'greater_than' | 'less_than' | 'matches_regex';
545
+ /** Automation action */
546
+ export interface AutomationAction {
547
+ type: AutomationActionType;
548
+ parameters?: Record<string, unknown>;
549
+ }
550
+ /** Automation action type */
551
+ export type AutomationActionType = 'move' | 'rename' | 'set_category' | 'set_label' | 'run_script' | 'send_notification' | 'pause' | 'resume' | 'remove' | 'remove_with_data';
552
+ /** Script config */
553
+ export interface ScriptConfig {
554
+ id: string;
555
+ name: string;
556
+ trigger: ScriptTrigger;
557
+ command: string;
558
+ shell?: 'cmd' | 'powershell' | 'bash' | 'sh';
559
+ arguments?: string[];
560
+ workingDirectory?: string;
561
+ timeout?: number;
562
+ variables?: ScriptVariable[];
563
+ }
564
+ /** Script trigger */
565
+ export type ScriptTrigger = 'on_download_start' | 'on_download_complete' | 'on_download_error' | 'on_torrent_complete' | 'on_ratio_reached';
566
+ /** Script variable */
567
+ export interface ScriptVariable {
568
+ name: string;
569
+ description: string;
570
+ example: string;
571
+ }
572
+ /** Usenet config */
573
+ export interface UsenetConfig {
574
+ servers: UsenetServer[];
575
+ downloadPath: string;
576
+ tempPath?: string;
577
+ maxConnections: number;
578
+ par2Repair: boolean;
579
+ autoExtract: boolean;
580
+ deleteAfterExtract: boolean;
581
+ }
582
+ /** Usenet server */
583
+ export interface UsenetServer {
584
+ id: string;
585
+ host: string;
586
+ port: number;
587
+ ssl: boolean;
588
+ username: string;
589
+ password: string;
590
+ connections: number;
591
+ priority: number;
592
+ enabled: boolean;
593
+ retention?: number;
594
+ }
595
+ /** NZB file */
596
+ export interface NZBFile {
597
+ id: string;
598
+ name: string;
599
+ status: UsenetStatus;
600
+ size: number;
601
+ downloaded: number;
602
+ progress: number;
603
+ speed: TransferSpeed;
604
+ eta?: number;
605
+ files: NZBFileEntry[];
606
+ parStatus?: ParStatus;
607
+ unpackStatus?: UnpackStatus;
608
+ }
609
+ /** Usenet status */
610
+ export type UsenetStatus = 'queued' | 'downloading' | 'verifying' | 'repairing' | 'extracting' | 'completed' | 'failed';
611
+ /** NZB file entry */
612
+ export interface NZBFileEntry {
613
+ name: string;
614
+ size: number;
615
+ downloaded: number;
616
+ segments: number;
617
+ segmentsDownloaded: number;
618
+ }
619
+ /** Par status */
620
+ export interface ParStatus {
621
+ status: 'none' | 'checking' | 'repairing' | 'success' | 'failed';
622
+ repairNeeded: boolean;
623
+ blocksNeeded?: number;
624
+ blocksAvailable?: number;
625
+ }
626
+ /** Unpack status */
627
+ export interface UnpackStatus {
628
+ status: 'none' | 'extracting' | 'success' | 'failed' | 'password_required';
629
+ progress: number;
630
+ errorMessage?: string;
631
+ }
632
+ /** Debrid service config */
633
+ export interface DebridServiceConfig {
634
+ service: DebridService;
635
+ apiKey: string;
636
+ enabled: boolean;
637
+ }
638
+ /** Debrid service */
639
+ export type DebridService = 'real_debrid' | 'all_debrid' | 'premiumize' | 'debrid_link';
640
+ /** Debrid account */
641
+ export interface DebridAccount {
642
+ service: DebridService;
643
+ username: string;
644
+ email?: string;
645
+ premium: boolean;
646
+ expirationDate?: Date;
647
+ pointsRemaining?: number;
648
+ trafficRemaining?: number;
649
+ trafficReset?: Date;
650
+ }
651
+ /** Unrestricted link */
652
+ export interface UnrestrictedLink {
653
+ original: string;
654
+ unrestricted: string;
655
+ filename: string;
656
+ size: number;
657
+ host: string;
658
+ streamable?: boolean;
659
+ }
660
+ /** Cloud storage config */
661
+ export interface CloudStorageConfig {
662
+ provider: CloudProvider;
663
+ credentials: CloudCredentials;
664
+ enabled: boolean;
665
+ syncPath?: string;
666
+ }
667
+ /** Cloud provider */
668
+ export type CloudProvider = 'mega' | 'google_drive' | 'onedrive' | 'dropbox' | 'pcloud' | 'box';
669
+ /** Cloud credentials */
670
+ export interface CloudCredentials {
671
+ accessToken?: string;
672
+ refreshToken?: string;
673
+ apiKey?: string;
674
+ expiresAt?: Date;
675
+ }
676
+ /** Cloud file */
677
+ export interface CloudFile {
678
+ id: string;
679
+ name: string;
680
+ path: string;
681
+ size: number;
682
+ mimeType: string;
683
+ modifiedDate: Date;
684
+ downloadUrl?: string;
685
+ isFolder: boolean;
686
+ }
687
+ /** YTDLP config */
688
+ export interface YTDLPConfig {
689
+ outputPath: string;
690
+ outputTemplate: string;
691
+ preferredFormat: MediaFormat;
692
+ preferredQuality: string;
693
+ embedMetadata: boolean;
694
+ embedThumbnail: boolean;
695
+ downloadSubtitles: boolean;
696
+ subtitleLanguages?: string[];
697
+ cookies?: string;
698
+ proxy?: string;
699
+ }
700
+ /** Media format */
701
+ export type MediaFormat = 'best' | 'bestvideo+bestaudio' | 'bestvideo' | 'bestaudio' | 'mp4' | 'webm' | 'mkv' | 'mp3' | 'flac' | 'opus';
702
+ /** YTDLP download */
703
+ export interface YTDLPDownload {
704
+ id: string;
705
+ url: string;
706
+ title: string;
707
+ uploader?: string;
708
+ duration?: number;
709
+ thumbnail?: string;
710
+ formats: YTDLPFormat[];
711
+ selectedFormat?: string;
712
+ status: DownloadStatus;
713
+ progress: number;
714
+ speed: TransferSpeed;
715
+ eta?: number;
716
+ outputPath?: string;
717
+ }
718
+ /** YTDLP format */
719
+ export interface YTDLPFormat {
720
+ formatId: string;
721
+ extension: string;
722
+ resolution?: string;
723
+ fps?: number;
724
+ vcodec?: string;
725
+ acodec?: string;
726
+ filesize?: number;
727
+ quality?: number;
728
+ }
729
+ /** Indexer config */
730
+ export interface IndexerConfig {
731
+ type: IndexerType;
732
+ name: string;
733
+ url: string;
734
+ apiKey: string;
735
+ enabled: boolean;
736
+ categories?: number[];
737
+ }
738
+ /** Indexer type */
739
+ export type IndexerType = 'torznab' | 'newznab' | 'rss';
740
+ /** Indexer search result */
741
+ export interface IndexerSearchResult {
742
+ indexer: string;
743
+ title: string;
744
+ link: string;
745
+ downloadUrl: string;
746
+ size: number;
747
+ seeders?: number;
748
+ leechers?: number;
749
+ pubDate: Date;
750
+ category?: string;
751
+ imdbId?: string;
752
+ tvdbId?: string;
753
+ }
754
+ /** Media organizer config */
755
+ export interface MediaOrganizerConfig {
756
+ enabled: boolean;
757
+ tvShowPath: string;
758
+ moviePath: string;
759
+ musicPath: string;
760
+ renameTemplate: RenameTemplate;
761
+ fetchMetadata: boolean;
762
+ downloadArtwork: boolean;
763
+ generateNfo: boolean;
764
+ duplicateHandling: DuplicateHandling;
765
+ }
766
+ /** Rename template */
767
+ export interface RenameTemplate {
768
+ tvShow: string;
769
+ movie: string;
770
+ music: string;
771
+ }
772
+ /** Duplicate handling */
773
+ export type DuplicateHandling = 'keep_both' | 'keep_larger' | 'keep_newer' | 'skip' | 'replace';
774
+ /** Media item */
775
+ export interface MediaItem {
776
+ id: string;
777
+ type: MediaItemType;
778
+ title: string;
779
+ originalPath: string;
780
+ organizedPath?: string;
781
+ metadata?: MediaItemMetadata;
782
+ status: MediaItemStatus;
783
+ }
784
+ /** Media item type */
785
+ export type MediaItemType = 'movie' | 'tv_episode' | 'music_track' | 'music_album' | 'unknown';
786
+ /** Media item metadata */
787
+ export interface MediaItemMetadata {
788
+ title: string;
789
+ year?: number;
790
+ overview?: string;
791
+ genres?: string[];
792
+ rating?: number;
793
+ posterUrl?: string;
794
+ backdropUrl?: string;
795
+ seriesTitle?: string;
796
+ season?: number;
797
+ episode?: number;
798
+ episodeTitle?: string;
799
+ artist?: string;
800
+ album?: string;
801
+ track?: number;
802
+ albumArtUrl?: string;
803
+ imdbId?: string;
804
+ tmdbId?: number;
805
+ tvdbId?: number;
806
+ musicBrainzId?: string;
807
+ }
808
+ /** Media item status */
809
+ export type MediaItemStatus = 'pending' | 'identified' | 'organized' | 'failed' | 'skipped';
810
+ /** Subtitle search result */
811
+ export interface SubtitleSearchResult {
812
+ id: string;
813
+ provider: SubtitleProvider;
814
+ language: string;
815
+ languageCode: string;
816
+ fileName: string;
817
+ format: SubtitleFormat;
818
+ uploadDate?: Date;
819
+ downloads?: number;
820
+ rating?: number;
821
+ hearingImpaired?: boolean;
822
+ matchScore?: number;
823
+ }
824
+ /** Subtitle provider */
825
+ export type SubtitleProvider = 'opensubtitles' | 'subscene' | 'addic7ed' | 'podnapisi';
826
+ /** Subtitle format */
827
+ export type SubtitleFormat = 'srt' | 'ass' | 'ssa' | 'vtt' | 'sub';
828
+ /** Media server notification */
829
+ export interface MediaServerNotification {
830
+ server: MediaServerType;
831
+ url: string;
832
+ apiKey?: string;
833
+ libraryId?: string;
834
+ enabled: boolean;
835
+ }
836
+ /** Media server type */
837
+ export type MediaServerType = 'plex' | 'emby' | 'jellyfin' | 'kodi';
838
+ /** Arr integration config */
839
+ export interface ArrIntegrationConfig {
840
+ type: ArrType;
841
+ url: string;
842
+ apiKey: string;
843
+ enabled: boolean;
844
+ priority?: number;
845
+ categories?: string[];
846
+ }
847
+ /** Arr type */
848
+ export type ArrType = 'sonarr' | 'radarr' | 'lidarr' | 'readarr' | 'prowlarr';
849
+ /** VPN integration config */
850
+ export interface VPNIntegrationConfig {
851
+ enabled: boolean;
852
+ killSwitch: boolean;
853
+ interface?: string;
854
+ splitTunneling?: SplitTunnelingConfig;
855
+ }
856
+ /** Split tunneling config */
857
+ export interface SplitTunnelingConfig {
858
+ enabled: boolean;
859
+ mode: 'include' | 'exclude';
860
+ apps: string[];
861
+ addresses?: string[];
862
+ }
863
+ /** VPN status */
864
+ export interface VPNStatus {
865
+ connected: boolean;
866
+ server?: string;
867
+ country?: string;
868
+ ip?: string;
869
+ protocol?: string;
870
+ uptime?: number;
871
+ }
872
+ /** Bandwidth monitor config */
873
+ export interface BandwidthMonitorConfig {
874
+ enabled: boolean;
875
+ trackPerApp: boolean;
876
+ dataCap?: DataCap;
877
+ alertThresholds?: AlertThreshold[];
878
+ }
879
+ /** Data cap */
880
+ export interface DataCap {
881
+ limit: number;
882
+ unit: 'MB' | 'GB' | 'TB';
883
+ period: 'daily' | 'weekly' | 'monthly';
884
+ resetDay?: number;
885
+ }
886
+ /** Alert threshold */
887
+ export interface AlertThreshold {
888
+ percentage: number;
889
+ notificationType: 'toast' | 'email' | 'both';
890
+ }
891
+ /** Bandwidth usage */
892
+ export interface BandwidthUsage {
893
+ downloaded: number;
894
+ uploaded: number;
895
+ period: string;
896
+ history: BandwidthHistoryEntry[];
897
+ }
898
+ /** Bandwidth history entry */
899
+ export interface BandwidthHistoryEntry {
900
+ timestamp: Date;
901
+ downloaded: number;
902
+ uploaded: number;
903
+ }
904
+ /** IP filter config */
905
+ export interface IPFilterConfig {
906
+ enabled: boolean;
907
+ blocklists: Blocklist[];
908
+ countryBlocking?: CountryBlocking;
909
+ customRanges?: IPRange[];
910
+ }
911
+ /** Blocklist */
912
+ export interface Blocklist {
913
+ id: string;
914
+ name: string;
915
+ url: string;
916
+ format: 'peerguardian' | 'emule' | 'text';
917
+ enabled: boolean;
918
+ autoUpdate: boolean;
919
+ updateInterval: number;
920
+ lastUpdated?: Date;
921
+ entryCount?: number;
922
+ }
923
+ /** Country blocking */
924
+ export interface CountryBlocking {
925
+ enabled: boolean;
926
+ mode: 'block' | 'allow';
927
+ countries: string[];
928
+ }
929
+ /** IP range */
930
+ export interface IPRange {
931
+ start: string;
932
+ end: string;
933
+ description?: string;
934
+ }
935
+ /** Web UI config */
936
+ export interface WebUIConfig {
937
+ enabled: boolean;
938
+ port: number;
939
+ https: boolean;
940
+ certPath?: string;
941
+ keyPath?: string;
942
+ username: string;
943
+ passwordHash: string;
944
+ allowedIPs?: string[];
945
+ sessionTimeout: number;
946
+ }
947
+ /** REST API config */
948
+ export interface RESTAPIConfig {
949
+ enabled: boolean;
950
+ port: number;
951
+ https: boolean;
952
+ apiKeys: APIKey[];
953
+ rateLimiting?: RateLimitConfig;
954
+ webhooks?: WebhookConfig[];
955
+ }
956
+ /** API key */
957
+ export interface APIKey {
958
+ id: string;
959
+ name: string;
960
+ key: string;
961
+ permissions: APIPermission[];
962
+ createdDate: Date;
963
+ lastUsed?: Date;
964
+ expiresAt?: Date;
965
+ }
966
+ /** API permission */
967
+ export type APIPermission = 'read' | 'write' | 'delete' | 'admin';
968
+ /** Rate limit config */
969
+ export interface RateLimitConfig {
970
+ enabled: boolean;
971
+ requestsPerMinute: number;
972
+ burstLimit: number;
973
+ }
974
+ /** Webhook config */
975
+ export interface WebhookConfig {
976
+ id: string;
977
+ name: string;
978
+ url: string;
979
+ events: WebhookEvent[];
980
+ secret?: string;
981
+ enabled: boolean;
982
+ }
983
+ /** Webhook event */
984
+ export type WebhookEvent = 'download_added' | 'download_started' | 'download_completed' | 'download_failed' | 'torrent_added' | 'torrent_completed' | 'ratio_reached';
985
+ /** Browser extension config */
986
+ export interface BrowserExtensionConfig {
987
+ enabled: boolean;
988
+ interceptDownloads: boolean;
989
+ minFileSize?: number;
990
+ fileTypes?: string[];
991
+ excludeHosts?: string[];
992
+ shareCookies: boolean;
993
+ }
994
+ /** Download statistics */
995
+ export interface DownloadStatistics {
996
+ totalDownloaded: number;
997
+ totalUploaded: number;
998
+ sessionDownloaded: number;
999
+ sessionUploaded: number;
1000
+ completedDownloads: number;
1001
+ failedDownloads: number;
1002
+ averageSpeed: TransferSpeed;
1003
+ peakSpeed: TransferSpeed;
1004
+ downloadsByCategory: Record<string, number>;
1005
+ downloadsByType: Record<string, number>;
1006
+ downloadHistory: DownloadHistoryEntry[];
1007
+ }
1008
+ /** Download history entry */
1009
+ export interface DownloadHistoryEntry {
1010
+ date: Date;
1011
+ downloaded: number;
1012
+ uploaded: number;
1013
+ count: number;
1014
+ }
1015
+ /** Torrent statistics */
1016
+ export interface TorrentStatistics {
1017
+ totalDownloaded: number;
1018
+ totalUploaded: number;
1019
+ globalRatio: number;
1020
+ totalSeedingTime: number;
1021
+ totalPeerConnections: number;
1022
+ trackerStats: TrackerStats[];
1023
+ peerCountryStats: Record<string, number>;
1024
+ }
1025
+ /** Tracker stats */
1026
+ export interface TrackerStats {
1027
+ host: string;
1028
+ announces: number;
1029
+ successfulAnnounces: number;
1030
+ failedAnnounces: number;
1031
+ averageResponseTime: number;
1032
+ }
1033
+ /** Report config */
1034
+ export interface ReportConfig {
1035
+ id: string;
1036
+ name: string;
1037
+ type: ReportType;
1038
+ format: ReportFormat;
1039
+ dateRange: ReportDateRange;
1040
+ includeCharts: boolean;
1041
+ schedule?: ReportSchedule;
1042
+ emailRecipients?: string[];
1043
+ }
1044
+ /** Report type */
1045
+ export type ReportType = 'download_summary' | 'torrent_summary' | 'bandwidth_usage' | 'category_breakdown' | 'full_report';
1046
+ /** Report format */
1047
+ export type ReportFormat = 'pdf' | 'excel' | 'csv' | 'html';
1048
+ /** Report date range */
1049
+ export interface ReportDateRange {
1050
+ type: 'last_7_days' | 'last_30_days' | 'last_90_days' | 'custom';
1051
+ startDate?: Date;
1052
+ endDate?: Date;
1053
+ }
1054
+ /** Report schedule */
1055
+ export interface ReportSchedule {
1056
+ enabled: boolean;
1057
+ frequency: 'daily' | 'weekly' | 'monthly';
1058
+ dayOfWeek?: number;
1059
+ dayOfMonth?: number;
1060
+ time: string;
1061
+ }
1062
+ //# sourceMappingURL=download-torrent.d.ts.map