package co.smartreceipts.android.sync.model; import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import java.sql.Date; import co.smartreceipts.android.sync.model.impl.Identifier; import co.smartreceipts.android.sync.provider.SyncProvider; public interface SyncState extends Parcelable { /** * Gets the unique id associated with the "cloud" version of this object * * @param provider the {@link SyncProvider} for this identifier * @return the {@link Identifier} instance or {@code null} if this is an unknown provider */ @Nullable Identifier getSyncId(@NonNull SyncProvider provider); /** * Checks if this item has been synced * * @param provider the {@link SyncProvider} for to check for * @return {@code true} if this item is synced */ boolean isSynced(@NonNull SyncProvider provider); /** * Checks if this item has been marked for deletion * * @param provider the {@link SyncProvider} for to check for * @return {@code true} if this item is marked for remote deletion */ boolean isMarkedForDeletion(@NonNull SyncProvider provider); /** * Gets the last time (in UTC) that this item was modified locally * * @return the last {@link Date} time this item was modified */ @NonNull Date getLastLocalModificationTime(); }