// A game-downloading interface
interface OnlineGameDownloadInterface dependson(OnlineSubsystem);

enum EDownloadSpeed
{
	EDLS_Pause,
	EDLS_Slow,
	EDLS_Fast,
};

function bool IsGameComplete();

function bool IsChunkComplete( const int InChunkIndex, const bool bRequireFastAccess );
function bool AreChunksComplete( const array<int> ChunkIndices, const bool bRequireFastAccess );

function bool DoesGameNeedRefresh();
function RefreshGame();

function float GetChunkETA( const int InChunkIndex );
function float GetChunksETA( const array<int> ChunkIndices );

function float GetChunkProgress( const int InChunkIndex );
function float GetChunksProgress( const array<int> ChunkIndices );
function float GetOverallProgress();

function array<int> GetTodoList();

function SetChunksHighPriority( const array<int> ChunkIndices );
function SetDownloadSpeed( const EDownloadSpeed InSpeed );

delegate OnChunkComplete( const int ChunkIndex );
function AddOnChunkCompleteDelegate( delegate<OnChunkComplete> InDelegate );
function ClearOnChunkCompleteDelegate( delegate<OnChunkComplete> InDelegate );