pub mod config;
pub mod engine;
pub mod error;
#[cfg(feature = "http")]
pub mod http;
pub(crate) mod priority_queue;
pub mod protocol;
pub(crate) mod scheduler;
pub mod storage;
#[cfg(feature = "torrent")]
pub mod torrent;
pub(crate) mod types;
pub use config::{AllocationMode, EngineConfig, HttpConfig, TorrentConfig};
pub use engine::DownloadEngine;
pub use error::{EngineError, NetworkErrorKind, ProtocolErrorKind, Result, StorageErrorKind};
pub use protocol::{ProtocolError, ProtocolResult};
pub use types::{
DownloadEvent, DownloadId, DownloadKind, DownloadMetadata, DownloadOptions, DownloadProgress,
DownloadState, DownloadStatus, GlobalStats, PeerInfo, TorrentFile, TorrentInfo,
TorrentStatusInfo,
};
#[cfg(feature = "recursive-http")]
pub use types::{
RecursiveEntry, RecursiveJob, RecursiveJobEvent, RecursiveJobProgress, RecursiveJobState,
RecursiveJobStatus, RecursiveManifest, RecursiveOptions, TrackedRecursiveJob,
};
#[cfg(feature = "storage")]
pub use storage::SqliteStorage;
pub use storage::{MemoryStorage, Segment, SegmentState, Storage};
pub use priority_queue::{DownloadPriority, PriorityQueue, PriorityQueueStats};
pub use scheduler::{BandwidthLimits, BandwidthScheduler, ScheduleRule};
#[cfg(feature = "http")]
pub use http::{
ConnectionPool, HttpDownloader, ResumeInfo, RetryPolicy, SegmentedDownload, ServerCapabilities,
SpeedCalculator,
};