class DriveStreamsManager implements GoogleApiClient.ConnectionCallbacks {

    @NonNull
    public synchronized Single<FileList> getFilesInFolder(@NonNull final String folderId) {
        Preconditions.checkNotNull(folderId);

        return newBlockUntilConnectedCompletable()
                .andThen(driveDataStreams.getFilesInFolder(folderId))
                .doOnError(throwable -> driveErrorStream.onNext(Optional.of(syncErrorTranslator.get(throwable))));
    }

    public  DriveStreamsManager(@NonNull Context context,
                               @NonNull DriveServiceHelper driveServiceHelper,
                               @NonNull GoogleDriveSyncMetadata googleDriveSyncMetadata,
                               @NonNull Subject<Optional<Throwable>> driveErrorStream);
    @VisibleForTesting  DriveStreamsManager(@NonNull DriveDataStreams driveDataStreams,
                        @NonNull DriveStreamMappings driveStreamMappings,
                        @NonNull Subject<Optional<Throwable>> driveErrorStream,
                        @NonNull DriveThrowableToSyncErrorTranslator syncErrorTranslator);

}