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<Record<string, any> | null>;
}
export interface EntityListCreateEntityProps {
    foreignId?: string;
    title?: string;
    content?: string;
    attachments?: Record<string, any>[];
    keywords?: string[];
    location?: {
        latitude: number;
        longitude: number;
    };
    metadata?: Record<string, any>;
    insertPosition?: "first" | "last";
}
export interface EntityListDeleteEntityProps {
    entityId: string;
}
export interface UseEntityListValues {
    entities: Entity[];
    infusedEntities: (Entity & Record<string, any>)[];
    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<EntityListFilters>, sort?: Partial<EntityListSort>, config?: EntityListConfig, options?: EntityListFetchOptions) => void;
    loadMore: () => void;
    createEntity: (props: EntityListCreateEntityProps) => Promise<Entity | undefined>;
    deleteEntity: (props: EntityListDeleteEntityProps) => Promise<void>;
}
declare function useEntityList({ listId, infuseData, }: UseEntityListProps): UseEntityListValues;
export default useEntityList;
