import { type EntityListFilters, type EntityListSort, type EntityListConfig, type EntityListFetchOptions } from "../../store/slices/entityListsSlice"; import { Entity } from "../../interfaces/models/Entity"; import { EntityListSortByOptions, SortByReaction, SortDirection, SortType } from "../../interfaces/EntityListSortByOptions"; import { LocationFilters } from "../../interfaces/entity-filters/LocationFilters"; import { TimeFrame } from "../../interfaces/TimeFrame"; import { MetadataFilters } from "../../interfaces/entity-filters/MetadataFilters"; import { TitleFilters } from "../../interfaces/entity-filters/TitleFilters"; import { ContentFilters } from "../../interfaces/entity-filters/ContentFilters"; import { AttachmentsFilters } from "../../interfaces/entity-filters/AttachmentsFilters"; import { KeywordsFilters } from "../../interfaces/entity-filters/KeywordsFilters"; export interface UseEntityListProps { listId: string; infuseData?: (foreignId: string) => Promise | null>; } export interface EntityListCreateEntityProps { foreignId?: string; title?: string; content?: string; attachments?: Record[]; keywords?: string[]; location?: { latitude: number; longitude: number; }; metadata?: Record; insertPosition?: "first" | "last"; } export interface EntityListDeleteEntityProps { entityId: string; } export interface UseEntityListValues { entities: Entity[]; infusedEntities: (Entity & Record)[]; loading: boolean; hasMore: boolean; sortBy: EntityListSortByOptions | null; sortByReaction: SortByReaction | null; sortDir: SortDirection | null; sortType: SortType | null; timeFrame: TimeFrame | null; sourceId: string | null; userId: string | null; followedOnly: boolean; keywordsFilters: KeywordsFilters | null; titleFilters: TitleFilters | null; contentFilters: ContentFilters | null; attachmentsFilters: AttachmentsFilters | null; locationFilters: LocationFilters | null; metadataFilters: MetadataFilters | null; fetchEntities: (filters: Partial, sort?: Partial, config?: EntityListConfig, options?: EntityListFetchOptions) => void; loadMore: () => void; createEntity: (props: EntityListCreateEntityProps) => Promise; deleteEntity: (props: EntityListDeleteEntityProps) => Promise; } declare function useEntityList({ listId, infuseData, }: UseEntityListProps): UseEntityListValues; export default useEntityList;