using System;
using System.Collections.Generic;
using System.Linq;
using Telerik.Sitefinity.SiteSync;

/// <summary>
/// Interface for a snap-in that will handle syncing of an items from a specified type(s)
/// </summary>
public interface ISiteSyncSnapIn
{
    /// <summary>
    /// The supported type for this snapin
    /// </summary>
    string SupportedType { get; set; }

    IQueryable<ISiteSyncLogEntry> GetPendingItems(ISiteSyncExportContext context);

    int GetExportItemsCount(ISiteSyncExportContext context, Guid? siteId = null);

    IEnumerable<ISiteSyncExportTransaction> Export(ISiteSyncExportContext context);

    void Import(ISiteSyncImportTransaction transaction);
}