using System; using System.Collections.Generic; using System.Threading.Tasks; using Itenso.TimePeriod; using Wino.Core.Domain.Entities.Calendar; using Wino.Core.Domain.Models.Calendar; namespace Wino.Core.Domain.Interfaces; public interface ICalendarService { Task> GetAccountCalendarsAsync(Guid accountId); Task GetAccountCalendarAsync(Guid accountCalendarId); Task DeleteCalendarItemAsync(Guid calendarItemId); Task DeleteAccountCalendarAsync(AccountCalendar accountCalendar); Task InsertAccountCalendarAsync(AccountCalendar accountCalendar); Task UpdateAccountCalendarAsync(AccountCalendar accountCalendar); Task CreateNewCalendarItemAsync(CalendarItem calendarItem, List attendees); /// /// Retrieves calendar events for a given calendar within the specified time period. /// /// The calendar to retrieve events from. /// The time period to query events for. /// List of calendar items including regular events and recurring event occurrences. Task> GetCalendarEventsAsync(IAccountCalendar calendar, ITimePeriod period); Task GetCalendarItemAsync(Guid accountCalendarId, string remoteEventId); Task UpdateCalendarDeltaSynchronizationToken(Guid calendarId, string deltaToken); /// /// Returns the correct calendar item based on the target details. /// /// Target details. Task GetCalendarItemTargetAsync(CalendarItemTarget targetDetails); Task GetCalendarItemAsync(Guid id); Task> GetAttendeesAsync(Guid calendarEventTrackingId); Task> ManageEventAttendeesAsync(Guid calendarItemId, List allAttendees); }