import { type ReadOnlySignal, type Signal } from '@wix/services-definitions/core-services/signals'; import { wixEventsV2, categories } from '@wix/events'; import { type Event } from './event-service.js'; import { ALL_EVENTS, PAST_EVENTS, UPCOMING_EVENTS } from '../constants.js'; export type Category = categories.Category; type StatusId = typeof UPCOMING_EVENTS | typeof PAST_EVENTS | typeof ALL_EVENTS; export interface EventListServiceAPI { /** Reactive signal containing the list of events */ events: Signal; /** Reactive signal containing the list of categories */ categories: Signal; /** Reactive signal containing the selected category id */ selectedCategoryId: Signal; /** Reactive signal containing the selected status id */ selectedStatusId: Signal; /** Reactive signal indicating if events are currently being loaded */ isLoading: Signal; /** Reactive signal indicating if more events are currently being loaded */ isLoadingMore: Signal; /** Reactive signal containing any error message, or null if no error */ error: Signal; /** Reactive signal containing the number of events per page */ pageSize: Signal; /** Reactive signal containing the current page index (zero-based) */ currentPage: Signal; /** Reactive signal containing the total number of pages */ totalPages: Signal; /** Reactive signal indicating if there are more events to load */ hasMoreEvents: ReadOnlySignal; /** Function to load events */ loadEvents: ({ categoryId, statusId }: LoadEventsParams) => Promise; /** Function to load more events */ loadMoreEvents: () => Promise; } export interface EventListServiceConfig { events: Event[]; categories: Category[]; pageSize: number; currentPage: number; totalPages: number; } export declare const EventListServiceDefinition: string & { __api: EventListServiceAPI; __config: EventListServiceConfig; isServiceDefinition?: boolean; } & EventListServiceAPI; export declare const EventListService: import("@wix/services-definitions").ServiceFactory; export declare function loadEventListServiceConfig(): Promise; export declare function queryEvents({ offset, limit, categoryId, status, }?: QueryEventsParams): Promise<{ items: wixEventsV2.Event[]; pageSize: number; currentPage: number; totalPages: number; }>; interface QueryEventsParams { offset?: number; limit?: number; categoryId?: string | null; status?: wixEventsV2.Status[]; } interface LoadEventsParams { categoryId?: string | null; statusId?: StatusId; } export {};