namespace Tiku.Application.Catalog;

public interface ICatalogQueryService
{
    Task<CatalogList<RegionCatalogItem>> GetRegionsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<RegionModuleCatalogItem>> GetRegionModulesAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<ModuleNodeCatalogItem>> GetModuleNodesAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<SchoolCatalogItem>> GetSchoolsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<MajorCatalogItem>> GetMajorsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<SubjectCatalogItem>> GetSubjectsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<CategoryCatalogItem>> GetCategoriesAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<BannerCatalogItem>> GetBannersAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<FaqCatalogItem>> GetFaqsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<AnnouncementCatalogItem>> GetAnnouncementsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<ExamDateCatalogItem>> GetExamDatesAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<ProductCatalogItem>> GetProductsAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);

    Task<CatalogList<SvipPlanCatalogItem>> GetSvipPlansAsync(
        CatalogFilter filter,
        CancellationToken cancellationToken = default);
}
