using Hotline.Orders;
using Hotline.Share.Dtos.File;
using Hotline.Share.Dtos.FlowEngine.Workflow;
using Hotline.Share.Dtos.Snapshot;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XF.Domain.Repository;

namespace Hotline.File
{
	public interface IFileRepository : IRepository<File>
	{
		Task<List<FileJson>> AddFileAsync(List<FileDto> files ,string id, string flowId = "",CancellationToken cancellationToken = default);
		Task<List<FileDto>> GetFilesAsync(List<string> ids, CancellationToken cancellationToken = default);
		Task<List<FileDto>> GetPermissionFilesAsync(List<string> ids, CancellationToken cancellationToken = default);
		Task<List<WorkflowTraceDto>> WorkflowTraceRecursion(List<WorkflowTraceDto> dto, CancellationToken cancellationToken);
		Task<List<Hotline.File.File>> GetByKeyAsync(string key, CancellationToken cancellationToken);
        Task<List<FileJson>> AddFileAsync(IList<SnapshotFileInDto> files, string id, CancellationToken requestAborted);
		Task<List<FileJson>> AddFileAsync(IList<FileDto> files, string id, CancellationToken requestAborted);

	}
}
