import { EntityType } from '../types/meta.types';
interface UseEntityWithMetaOptions {
    includeMeta?: string[] | boolean;
    autoFetch?: boolean;
    staleTime?: number;
    gcTime?: number;
}
/**
 * useEntityWithMeta - TanStack Query powered entity + metadata hook
 *
 * Provides entity management with metadata support:
 * - Automatic caching
 * - Optimistic updates for metadata
 * - No unnecessary refetches
 */
export declare function useEntityWithMeta<T = Record<string, unknown>>(entityType: EntityType, entityId: string, options?: UseEntityWithMetaOptions): {
    data: import("@tanstack/react-query").NoInfer<T & {
        meta?: Record<string, unknown>;
    }>;
    entity: import("@tanstack/react-query").NoInfer<T & {
        meta?: Record<string, unknown>;
    }> & {
        meta: any;
    };
    meta: Record<string, unknown>;
    loading: boolean;
    error: string;
    updateEntity: (updates: Partial<T>, metaUpdates?: Record<string, unknown>) => Promise<any>;
    updateMeta: (metaUpdates: Record<string, unknown>) => Promise<any>;
    getMeta: <MetaT = unknown>(metaKey: string, defaultValue?: MetaT) => MetaT;
    hasMeta: (metaKey: string) => boolean;
    refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<import("@tanstack/react-query").NoInfer<T & {
        meta?: Record<string, unknown>;
    }>, Error>>;
    isUpdating: boolean;
};
export declare function useUserWithMeta(userId: string, options?: UseEntityWithMetaOptions): {
    data: Record<string, unknown> & {
        meta?: Record<string, unknown>;
    };
    entity: Record<string, unknown> & {
        meta?: Record<string, unknown>;
    } & {
        meta: any;
    };
    meta: Record<string, unknown>;
    loading: boolean;
    error: string;
    updateEntity: (updates: Partial<Record<string, unknown>>, metaUpdates?: Record<string, unknown>) => Promise<any>;
    updateMeta: (metaUpdates: Record<string, unknown>) => Promise<any>;
    getMeta: <MetaT = unknown>(metaKey: string, defaultValue?: MetaT) => MetaT;
    hasMeta: (metaKey: string) => boolean;
    refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<Record<string, unknown> & {
        meta?: Record<string, unknown>;
    }, Error>>;
    isUpdating: boolean;
};
export declare function useTaskWithMeta(taskId: string, options?: UseEntityWithMetaOptions): {
    data: Record<string, unknown> & {
        meta?: Record<string, unknown>;
    };
    entity: Record<string, unknown> & {
        meta?: Record<string, unknown>;
    } & {
        meta: any;
    };
    meta: Record<string, unknown>;
    loading: boolean;
    error: string;
    updateEntity: (updates: Partial<Record<string, unknown>>, metaUpdates?: Record<string, unknown>) => Promise<any>;
    updateMeta: (metaUpdates: Record<string, unknown>) => Promise<any>;
    getMeta: <MetaT = unknown>(metaKey: string, defaultValue?: MetaT) => MetaT;
    hasMeta: (metaKey: string) => boolean;
    refetch: (options?: import("@tanstack/react-query").RefetchOptions) => Promise<import("@tanstack/react-query").QueryObserverResult<Record<string, unknown> & {
        meta?: Record<string, unknown>;
    }, Error>>;
    isUpdating: boolean;
};
export {};
//# sourceMappingURL=useEntityWithMeta.d.ts.map