import { Entity } from "../../interfaces/models/Entity";
import { FeedSortByOptions } from "../../interfaces/FeedSortByOptions";
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 { MediaFilters } from "../../interfaces/entity-filters/MediaFilters";
import { KeywordsFilters } from "../../interfaces/entity-filters/KeywordsFilters";
export interface UseFeedDataProps {
    sortBy?: FeedSortByOptions;
    limit?: number;
    timeFrame?: TimeFrame | null;
    resource?: string | null;
    userId?: string | null;
    followedOnly?: boolean;
    keywordsFilters?: KeywordsFilters | null;
    titleFilters?: TitleFilters | null;
    contentFilters?: ContentFilters | null;
    mediaFilters?: MediaFilters | null;
    locationFilters?: LocationFilters | null;
    metadataFilters?: MetadataFilters | null;
    idle?: boolean;
    onReset?: () => void;
    infuseData?: (referenceId: string) => Promise<Record<string, any> | null>;
}
export interface UseFeedDataValues {
    entities: Entity[];
    infusedEntities: (Entity & Record<string, any>)[];
    loading: boolean;
    hasMore: boolean;
    resetting: boolean;
    sortBy: FeedSortByOptions | null;
    setSortBy: (sortBy: FeedSortByOptions) => void;
    timeFrame: TimeFrame | null;
    setTimeFrame: (timeFrame: TimeFrame | null) => void;
    followedOnly: boolean;
    setFollowedOnly: (state: boolean) => void;
    resource: string | null;
    setResource: (resource: string | null) => void;
    userId: string | null;
    setUserId: (userId: string | null) => void;
    keywordsFilters: KeywordsFilters | null;
    updateKeywordsFilters: (type: "add" | "remove" | "reset" | "replace", key: "includes" | "doesNotInclude" | "both", value?: string | string[]) => void;
    titleFilters: TitleFilters | null;
    setTitleFilters: (metadata: TitleFilters | null) => void;
    contentFilters: ContentFilters | null;
    setContentFilters: (metadata: ContentFilters | null) => void;
    mediaFilters: MediaFilters | null;
    setMediaFilters: (metadata: MediaFilters | null) => void;
    locationFilters: LocationFilters | null;
    setLocationFilters: (location: LocationFilters | null) => void;
    metadataFilters: MetadataFilters | null;
    setMetadataFilters: (metadata: MetadataFilters | null) => void;
    kickstart: () => void;
    loadMore: () => void;
    resetEntities: () => Promise<void>;
    createEntity: (props: {
        referenceId?: string;
        resource?: string;
        title?: string;
        content?: string;
        media?: any[];
        keywords?: string[];
        location?: {
            latitude: number;
            longitude: number;
        };
        metadata?: Record<string, any>;
        insertPosition?: "first" | "last";
    }) => Promise<Entity | undefined>;
    deleteEntity: (props: {
        entityId: string;
    }) => Promise<void>;
}
declare function useFeedData({ limit, sortBy: sortByProp, timeFrame: timeFrameProp, resource: resourceProp, userId: userIdProp, followedOnly: followedOnlyProp, keywordsFilters: keywordsFiltersProp, locationFilters: locationFiltersProp, metadataFilters: metadataFiltersProp, titleFilters: titleFiltersProp, contentFilters: contentFiltersProp, mediaFilters: mediaFiltersProp, idle, onReset, infuseData, }: UseFeedDataProps): UseFeedDataValues;
export default useFeedData;
