#ifndef COMPONENTS_SYNC_DRIVER_SYNC_CLIENT_H_
#define COMPONENTS_SYNC_DRIVER_SYNC_CLIENT_H_
#include "base/files/file_path.h"
#include "base/memory/ref_counted.h"
#include "components/sync/base/extensions_activity.h"
#include "components/sync/base/model_type.h"
#include "components/sync/driver/data_type_controller.h"
class PrefService;
namespace invalidation {
class InvalidationService;
}
namespace signin {
class IdentityManager;
}
namespace syncer {
class SyncApiComponentFactory;
class SyncInvalidationsService;
class SyncService;
class SyncTypePreferenceProvider;
class TrustedVaultClient;
class SyncClient {
public:
SyncClient() = default;
SyncClient(const SyncClient&) = delete;
SyncClient& operator=(const SyncClient&) = delete;
virtual ~SyncClient() = default;
virtual PrefService* GetPrefService() = 0;
virtual signin::IdentityManager* GetIdentityManager() = 0;
virtual base::FilePath GetLocalSyncBackendFolder() = 0;
virtual DataTypeController::TypeVector CreateDataTypeControllers(
SyncService* sync_service) = 0;
virtual invalidation::InvalidationService* GetInvalidationService() = 0;
virtual SyncInvalidationsService* GetSyncInvalidationsService() = 0;
virtual TrustedVaultClient* GetTrustedVaultClient() = 0;
virtual scoped_refptr<ExtensionsActivity> GetExtensionsActivity() = 0;
virtual SyncApiComponentFactory* GetSyncApiComponentFactory() = 0;
virtual SyncTypePreferenceProvider* GetPreferenceProvider() = 0;
virtual void OnLocalSyncTransportDataCleared() = 0;
};
}
#endif