@quantabit/recommend-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../src/services/recommendApi.js","../src/types/index.js","../src/hooks/useRecommend.js","../src/components/RecommendCard.jsx","../src/i18n/index.js","../src/index.js"],"sourcesContent":["/**\n * Recommend SDK - API 客户端\n * 推荐系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 推荐 API 客户端\n */\nexport class RecommendApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/recommend', config);\n }\n\n // ============ 个性化推荐 ============\n\n /**\n * 获取首页推荐\n * @param {Object} params - 推荐参数\n */\n async getHomeRecommendations(params = {}) {\n return this.get('/home', params);\n }\n\n async getHomeFeed(params = {}) {\n return this.getHomeRecommendations(params);\n }\n\n async getRecommendations(type = 'home', params = {}) {\n return this.get(`/${type}`, params);\n }\n\n /**\n * 获取内容推荐\n * @param {Object} params - 推荐参数\n */\n async getContentRecommendations(params = {}) {\n return this.get('/content', params);\n }\n\n /**\n * 获取商品推荐\n * @param {Object} params - 推荐参数\n */\n async getProductRecommendations(params = {}) {\n return this.get('/products', params);\n }\n\n /**\n * 获取用户推荐(可能认识的人)\n * @param {Object} params - 推荐参数\n */\n async getUserRecommendations(params = {}) {\n return this.get('/users', params);\n }\n\n // ============ 相关推荐 ============\n\n /**\n * 获取相关内容\n * @param {string} contentId - 内容 ID\n * @param {Object} params - 推荐参数\n */\n async getRelatedContent(contentId, params = {}) {\n return this.get(`/related/content/${contentId}`, params);\n }\n\n async getSimilar(itemType, itemId, limit = 10) {\n return this.get(`/related/${itemType}/${itemId}`, { limit });\n }\n\n /**\n * 获取相关商品\n * @param {string} productId - 商品 ID\n * @param {Object} params - 推荐参数\n */\n async getRelatedProducts(productId, params = {}) {\n return this.get(`/related/product/${productId}`, params);\n }\n\n /**\n * 获取相似用户\n * @param {string} userId - 用户 ID\n * @param {Object} params - 推荐参数\n */\n async getSimilarUsers(userId, params = {}) {\n return this.get(`/related/user/${userId}`, params);\n }\n\n // ============ 场景推荐 ============\n\n /**\n * 获取猜你喜欢\n * @param {Object} params - 推荐参数\n */\n async getGuessYouLike(params = {}) {\n return this.get('/guess-you-like', params);\n }\n\n async getAlsoViewed(itemId, itemType = 'content', params = {}) {\n return this.get('/also-viewed', { item_id: itemId, item_type: itemType, ...params });\n }\n\n async getAlsoBought(itemId, itemType = 'product', params = {}) {\n return this.get('/also-bought', { item_id: itemId, item_type: itemType, ...params });\n }\n\n /**\n * 获取热门推荐\n * @param {Object} params - 推荐参数\n */\n async getHotRecommendations(params = {}) {\n return this.get('/hot', params);\n }\n\n /**\n * 获取新品推荐\n * @param {Object} params - 推荐参数\n */\n async getNewRecommendations(params = {}) {\n return this.get('/new', params);\n }\n\n /**\n * 获取专题推荐\n * @param {string} topicId - 专题 ID\n * @param {Object} params - 推荐参数\n */\n async getTopicRecommendations(topicId, params = {}) {\n return this.get(`/topic/${topicId}`, params);\n }\n\n // ============ 反馈 ============\n\n /**\n * 不感兴趣\n * @param {string} itemId - 项目 ID\n * @param {string} itemType - 项目类型\n * @param {string} reason - 原因\n */\n async notInterested(itemId, itemType, reason = '') {\n return this.post('/feedback/not-interested', {\n item_id: itemId,\n item_type: itemType,\n reason,\n });\n }\n\n async markNotInterested(itemType, itemId, reason = '') {\n return this.notInterested(itemId, itemType, reason);\n }\n\n async feedback(itemType, itemId, feedbackType, context = {}) {\n return this.post('/feedback', {\n item_type: itemType,\n item_id: itemId,\n feedback_type: feedbackType,\n ...context,\n });\n }\n\n /**\n * 记录点击\n * @param {string} itemId - 项目 ID\n * @param {string} itemType - 项目类型\n * @param {Object} context - 上下文\n */\n async trackClick(itemId, itemType, context = {}) {\n return this.post('/feedback/click', {\n item_id: itemId,\n item_type: itemType,\n ...context,\n });\n }\n\n /**\n * 记录曝光\n * @param {Object[]} items - 曝光项目列表\n */\n async trackExposure(items) {\n return this.post('/feedback/exposure', { items });\n }\n\n // ============ 偏好设置 ============\n\n /**\n * 获取推荐偏好\n */\n async getPreferences() {\n return this.get('/preferences');\n }\n\n async getUserPreferences() {\n return this.getPreferences();\n }\n\n /**\n * 更新推荐偏好\n * @param {Object} preferences - 偏好设置\n */\n async updatePreferences(preferences) {\n return this.put('/preferences', preferences);\n }\n\n /**\n * 获取兴趣标签\n */\n async getInterestTags() {\n return this.get('/interests');\n }\n\n /**\n * 更新兴趣标签\n * @param {string[]} tagIds - 标签 ID 列表\n */\n async updateInterestTags(tagIds) {\n return this.put('/interests', { tag_ids: tagIds });\n }\n\n async getColdStartQuestions(params = {}) {\n return this.get('/cold-start/questions', params);\n }\n\n async submitColdStartAnswers(answers) {\n return this.post('/cold-start/answers', { answers });\n }\n}\n\n// 创建默认实例\nexport const recommendApi = new RecommendApiClient();\n\n\n\nexport default recommendApi;\n","/**\n * Recommend SDK - 类型定义\n */\n\n// 推荐类型\nexport const RecommendType = {\n CONTENT: 'content',\n PRODUCT: 'product',\n USER: 'user',\n COURSE: 'course',\n GROUP: 'group',\n ACTIVITY: 'activity',\n};\n\n// 推荐算法\nexport const RecommendAlgorithm = {\n COLLABORATIVE: 'collaborative', // 协同过滤\n CONTENT_BASED: 'content_based', // 基于内容\n HYBRID: 'hybrid', // 混合推荐\n POPULARITY: 'popularity', // 热门推荐\n TRENDING: 'trending', // 趋势推荐\n SIMILAR: 'similar', // 相似推荐\n};\n\n// 场景\nexport const RecommendScene = {\n HOME_FEED: 'home_feed',\n DETAIL_PAGE: 'detail_page',\n SEARCH_RESULT: 'search_result',\n CART: 'cart',\n CHECKOUT: 'checkout',\n PROFILE: 'profile',\n};\n\n// 反馈类型\nexport const FeedbackType = {\n CLICK: 'click',\n VIEW: 'view',\n LIKE: 'like',\n DISLIKE: 'dislike',\n SHARE: 'share',\n PURCHASE: 'purchase',\n NOT_INTERESTED: 'not_interested',\n};\n\nexport default { RecommendType, RecommendAlgorithm, RecommendScene, FeedbackType };\n","/**\n * Recommend SDK - React Hooks\n */\n\nimport { useState, useEffect, useCallback } from 'react';\nimport { recommendApi } from '../services/recommendApi';\n\n/**\n * useRecommendations - 推荐列表Hook\n */\nexport function useRecommendations(type, options = {}) {\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n\n const loadRecommendations = useCallback(async (isRefresh = false) => {\n if (isRefresh) {\n setRefreshing(true);\n } else {\n setLoading(true);\n }\n \n try {\n const result = await recommendApi.getRecommendations(type, options);\n setItems(result.items || []);\n } finally {\n setLoading(false);\n setRefreshing(false);\n }\n }, [type, options.scene, options.limit, options.algorithm]);\n\n // 提交反馈\n const feedback = useCallback(async (itemId, feedbackType) => {\n try {\n await recommendApi.feedback(type, itemId, feedbackType);\n return true;\n } catch (e) {\n return false;\n }\n }, [type]);\n\n // 标记不感兴趣\n const markNotInterested = useCallback(async (itemId, reason) => {\n try {\n await recommendApi.markNotInterested(type, itemId, reason);\n // 从列表中移除\n setItems(prev => prev.filter(item => item.id !== itemId));\n return true;\n } catch (e) {\n return false;\n }\n }, [type]);\n\n // 刷新\n const refresh = useCallback(() => {\n return loadRecommendations(true);\n }, [loadRecommendations]);\n\n useEffect(() => {\n loadRecommendations();\n }, [type, options.scene]);\n\n return {\n items,\n loading,\n refreshing,\n refresh,\n feedback,\n markNotInterested,\n };\n}\n\n/**\n * useSimilar - 相似推荐Hook\n */\nexport function useSimilar(itemType, itemId, limit = 10) {\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n\n const loadSimilar = useCallback(async () => {\n if (!itemType || !itemId) return;\n \n setLoading(true);\n try {\n const result = await recommendApi.getSimilar(itemType, itemId, limit);\n setItems(result.items || []);\n } finally {\n setLoading(false);\n }\n }, [itemType, itemId, limit]);\n\n useEffect(() => {\n loadSimilar();\n }, [itemType, itemId]);\n\n return { items, loading, refresh: loadSimilar };\n}\n\n/**\n * useHomeFeed - 首页Feed Hook\n */\nexport function useHomeFeed() {\n const [items, setItems] = useState([]);\n const [loading, setLoading] = useState(false);\n const [refreshing, setRefreshing] = useState(false);\n const [page, setPage] = useState(1);\n const [hasMore, setHasMore] = useState(true);\n\n const loadFeed = useCallback(async (reset = false) => {\n const currentPage = reset ? 1 : page;\n \n if (reset) {\n setRefreshing(true);\n } else {\n setLoading(true);\n }\n \n try {\n const result = await recommendApi.getHomeFeed({\n page: currentPage,\n pageSize: 20,\n });\n \n const newItems = result.items || [];\n setItems(prev => reset ? newItems : [...prev, ...newItems]);\n setHasMore(newItems.length >= 20);\n if (reset) setPage(1);\n } finally {\n setLoading(false);\n setRefreshing(false);\n }\n }, [page]);\n\n const loadMore = useCallback(() => {\n if (hasMore && !loading) {\n setPage(p => p + 1);\n }\n }, [hasMore, loading]);\n\n const refresh = useCallback(() => {\n return loadFeed(true);\n }, [loadFeed]);\n\n useEffect(() => {\n loadFeed(true);\n }, []);\n\n useEffect(() => {\n if (page > 1) loadFeed();\n }, [page]);\n\n return {\n items,\n loading,\n refreshing,\n hasMore,\n loadMore,\n refresh,\n };\n}\n\n/**\n * useColdStart - 冷启动引导Hook\n */\nexport function useColdStart() {\n const [questions, setQuestions] = useState([]);\n const [answers, setAnswers] = useState({});\n const [loading, setLoading] = useState(false);\n const [submitting, setSubmitting] = useState(false);\n const [completed, setCompleted] = useState(false);\n\n const loadQuestions = useCallback(async () => {\n setLoading(true);\n try {\n const result = await recommendApi.getColdStartQuestions();\n setQuestions(result.questions || []);\n } finally {\n setLoading(false);\n }\n }, []);\n\n const setAnswer = useCallback((questionId, answer) => {\n setAnswers(prev => ({ ...prev, [questionId]: answer }));\n }, []);\n\n const submit = useCallback(async () => {\n setSubmitting(true);\n try {\n await recommendApi.submitColdStartAnswers(answers);\n setCompleted(true);\n return true;\n } catch (e) {\n return false;\n } finally {\n setSubmitting(false);\n }\n }, [answers]);\n\n useEffect(() => {\n loadQuestions();\n }, []);\n\n return {\n questions,\n answers,\n loading,\n submitting,\n completed,\n setAnswer,\n submit,\n isComplete: Object.keys(answers).length >= questions.length,\n };\n}\n","export function RecommendCard() { return null; }\nexport function RecommendSection() { return null; }\nexport function GuessYouLike() { return null; }\nexport function SimilarItems() { return null; }\nexport default RecommendCard;\n","/**\n * QuantaBit Recommend SDK - i18n support\n */\n\nconst messages = {\n en: {\n recommendation: 'Recommendations',\n guessYouLike: 'Guess You Like',\n similarItems: 'Similar Items',\n alsoViewed: 'People also viewed',\n alsoBought: 'People also bought',\n notInterested: 'Not Interested',\n notInterestedFeedback: 'We will show you fewer items like this',\n loading: 'Loading recommendations...',\n noData: 'No recommendations available'\n },\n zh: {\n recommendation: '个性化推荐',\n guessYouLike: '猜你喜欢',\n similarItems: '相似推荐',\n alsoViewed: '看了还看',\n alsoBought: '买了还买',\n notInterested: '不感兴趣',\n notInterestedFeedback: '将减少此类内容的推荐',\n loading: '正在加载推荐内容...',\n noData: '暂无推荐内容'\n },\n ja: {\n recommendation: 'おすすめ',\n guessYouLike: 'あなたへのおすすめ',\n similarItems: '似たような商品',\n alsoViewed: 'この商品を見た人はこんな商品も見ています',\n alsoBought: 'この商品を買った人はこんな商品も買っています',\n notInterested: '興味がない',\n notInterestedFeedback: 'このようなアイテムの表示を減らします',\n loading: '読み込み中...',\n noData: 'おすすめはありません'\n },\n ko: {\n recommendation: '추천 콘텐츠',\n guessYouLike: '이런 콘텐츠는 어떠세요?',\n similarItems: '비슷한 콘텐츠',\n alsoViewed: '함께 본 콘텐츠',\n alsoBought: '함께 구매한 상품',\n notInterested: '관심 없음',\n notInterestedFeedback: '이와 같은 콘텐츠 추천을 줄입니다',\n loading: '추천 콘텐츠를 불러오는 중...',\n noData: '추천할 콘텐츠가 없습니다'\n }\n};\n\nconst SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\nlet currentLanguage = 'en';\n\nexport function setLanguage(lang) {\n if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang;\n}\n\nexport function getLanguage() {\n return currentLanguage;\n}\n\nexport function t(key) {\n return (messages[currentLanguage] || messages.en)[key] || key;\n}\n\nexport { messages, SUPPORTED_LANGUAGES };\n","/**\n * @quantabit/recommend-sdk\n * Recommendation SDK - Full Version\n */\n\n// API Client\nexport { recommendApi, RecommendApiClient } from './services/recommendApi';\n\n// Types\nexport { RecommendType, RecommendAlgorithm, RecommendScene, FeedbackType } from './types';\n\n// React Hooks\nexport { useRecommendations, useSimilar, useHomeFeed, useColdStart } from './hooks/useRecommend';\n\n// React Components\nexport { RecommendCard, RecommendSection, GuessYouLike, SimilarItems } from './components/RecommendCard';\n\n// i18n\nexport { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t } from './i18n';\n\n// Shortcut Methods\nimport { recommendApi } from './services/recommendApi';\n\nexport const getRecommendations = (...args) => recommendApi.getRecommendations(...args);\nexport const getHomeFeed = (...args) => recommendApi.getHomeFeed(...args);\nexport const getSimilar = (...args) => recommendApi.getSimilar(...args);\nexport const getGuessYouLike = (...args) => recommendApi.getGuessYouLike(...args);\nexport const getAlsoViewed = (...args) => recommendApi.getAlsoViewed(...args);\nexport const getAlsoBought = (...args) => recommendApi.getAlsoBought(...args);\nexport const feedback = (...args) => recommendApi.feedback(...args);\nexport const markNotInterested = (...args) => recommendApi.markNotInterested(...args);\nexport const getUserPreferences = (...args) => recommendApi.getUserPreferences(...args);\nexport const updatePreferences = (...args) => recommendApi.updatePreferences(...args);\nexport const getColdStartQuestions = (...args) => recommendApi.getColdStartQuestions(...args);\nexport const submitColdStartAnswers = (...args) => recommendApi.submitColdStartAnswers(...args);\n"],"names":["RecommendApiClient","BaseApiClient","constructor","config","getHomeRecommendations","params","get","getHomeFeed","getRecommendations","type","getContentRecommendations","getProductRecommendations","getUserRecommendations","getRelatedContent","contentId","getSimilar","itemType","itemId","limit","getRelatedProducts","productId","getSimilarUsers","userId","getGuessYouLike","getAlsoViewed","item_id","item_type","getAlsoBought","getHotRecommendations","getNewRecommendations","getTopicRecommendations","topicId","notInterested","reason","post","markNotInterested","feedback","feedbackType","context","feedback_type","trackClick","trackExposure","items","getPreferences","getUserPreferences","updatePreferences","preferences","put","getInterestTags","updateInterestTags","tagIds","tag_ids","getColdStartQuestions","submitColdStartAnswers","answers","recommendApi","RecommendType","CONTENT","PRODUCT","USER","COURSE","GROUP","ACTIVITY","RecommendAlgorithm","COLLABORATIVE","CONTENT_BASED","HYBRID","POPULARITY","TRENDING","SIMILAR","RecommendScene","HOME_FEED","DETAIL_PAGE","SEARCH_RESULT","CART","CHECKOUT","PROFILE","FeedbackType","CLICK","VIEW","LIKE","DISLIKE","SHARE","PURCHASE","NOT_INTERESTED","useRecommendations","options","setItems","useState","loading","setLoading","refreshing","setRefreshing","loadRecommendations","useCallback","isRefresh","result","scene","algorithm","e","prev","filter","item","id","refresh","useEffect","useSimilar","loadSimilar","useHomeFeed","page","setPage","hasMore","setHasMore","loadFeed","reset","currentPage","pageSize","newItems","length","loadMore","p","useColdStart","questions","setQuestions","setAnswers","submitting","setSubmitting","completed","setCompleted","loadQuestions","setAnswer","questionId","answer","submit","isComplete","Object","keys","RecommendCard","RecommendSection","GuessYouLike","SimilarItems","messages","en","recommendation","guessYouLike","similarItems","alsoViewed","alsoBought","notInterestedFeedback","noData","zh","ja","ko","SUPPORTED_LANGUAGES","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","args"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "@quantabit/recommend-sdk",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "QuantaBit Recommendation SDK - Personalized content/product/user recommendations and cold-start strategies",
6
+ "main": "dist/index.cjs",
7
+ "module": "dist/index.esm.js",
8
+ "files": [
9
+ "dist",
10
+ "README.md",
11
+ "LICENSE",
12
+ "types"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "types": "./types/index.d.ts",
17
+ "import": "./dist/index.esm.js",
18
+ "require": "./dist/index.cjs"
19
+ },
20
+ "./styles": "./dist/styles.css",
21
+ "./styles.css": "./dist/styles.css"
22
+ },
23
+ "scripts": {
24
+ "build": "rollup -c",
25
+ "dev": "rollup -c -w",
26
+ "clean": "rm -rf dist",
27
+ "prepublishOnly": "npm run build",
28
+ "test": "jest --passWithNoTests"
29
+ },
30
+ "devDependencies": {
31
+ "@babel/core": "^7.23.0",
32
+ "@babel/preset-env": "^7.23.0",
33
+ "@babel/preset-react": "^7.23.0",
34
+ "@rollup/plugin-babel": "^6.0.0",
35
+ "@rollup/plugin-commonjs": "^25.0.0",
36
+ "@rollup/plugin-node-resolve": "^15.0.0",
37
+ "babel-jest": "^29.7.0",
38
+ "identity-obj-proxy": "^3.0.0",
39
+ "jest": "^29.7.0",
40
+ "jest-environment-jsdom": "^29.7.0",
41
+ "react": "^18.2.0",
42
+ "react-dom": "^18.2.0",
43
+ "rollup": "^4.0.0",
44
+ "rollup-plugin-postcss": "^4.0.0"
45
+ },
46
+ "keywords": [
47
+ "recommend",
48
+ "personalization",
49
+ "algorithm",
50
+ "quantabit"
51
+ ],
52
+ "author": "QuantaBit Team",
53
+ "license": "MIT",
54
+ "publishConfig": {
55
+ "access": "public",
56
+ "registry": "https://registry.npmjs.org"
57
+ },
58
+ "dependencies": {
59
+ "@quantabit/sdk-config": "^1.0.6"
60
+ },
61
+ "peerDependencies": {
62
+ "react": ">=17.0.0",
63
+ "react-dom": ">=17.0.0"
64
+ },
65
+ "repository": {
66
+ "type": "git",
67
+ "url": "https://github.com/quantabit-chain/qbit-sdk.git",
68
+ "directory": "packages/recommend-sdk"
69
+ },
70
+ "homepage": "https://github.com/quantabit-chain/qbit-sdk/tree/main/packages/recommend-sdk#readme",
71
+ "bugs": {
72
+ "url": "https://github.com/quantabit-chain/qbit-sdk/issues"
73
+ },
74
+ "types": "types/index.d.ts",
75
+ "engines": {
76
+ "node": ">=18.0.0"
77
+ },
78
+ "sideEffects": false,
79
+ "qbit": {
80
+ "privacy": {
81
+ "level": "functional",
82
+ "dataCollection": "Feature-related data for personalization. Requires user consent.",
83
+ "gdprCompliant": true,
84
+ "ccpaCompliant": true
85
+ }
86
+ }
87
+ }
@@ -0,0 +1,140 @@
1
+ /**
2
+ * @quantabit/recommend-sdk TypeScript Type Definitions
3
+ *
4
+ * Auto-generated type stubs. Enhance with specific types as the SDK matures.
5
+ */
6
+
7
+ import { FC, ReactNode } from 'react';
8
+
9
+ // ============ Components ============
10
+
11
+ export interface RecommendCardProps {
12
+ className?: string;
13
+ style?: React.CSSProperties;
14
+ [key: string]: any;
15
+ }
16
+
17
+ export declare const RecommendCard: FC<RecommendCardProps>;
18
+
19
+ export interface RecommendSectionProps {
20
+ className?: string;
21
+ style?: React.CSSProperties;
22
+ [key: string]: any;
23
+ }
24
+
25
+ export declare const RecommendSection: FC<RecommendSectionProps>;
26
+
27
+ export interface GuessYouLikeProps {
28
+ className?: string;
29
+ style?: React.CSSProperties;
30
+ [key: string]: any;
31
+ }
32
+
33
+ export declare const GuessYouLike: FC<GuessYouLikeProps>;
34
+
35
+ export interface SimilarItemsProps {
36
+ className?: string;
37
+ style?: React.CSSProperties;
38
+ [key: string]: any;
39
+ }
40
+
41
+ export declare const SimilarItems: FC<SimilarItemsProps>;
42
+
43
+ // ============ Hooks ============
44
+
45
+ export interface UseRecommendationsReturn {
46
+ data: any;
47
+ loading: boolean;
48
+ error: string | null;
49
+ [key: string]: any;
50
+ }
51
+
52
+ export declare function useRecommendations(...args: any[]): UseRecommendationsReturn;
53
+
54
+ export interface UseSimilarReturn {
55
+ data: any;
56
+ loading: boolean;
57
+ error: string | null;
58
+ [key: string]: any;
59
+ }
60
+
61
+ export declare function useSimilar(...args: any[]): UseSimilarReturn;
62
+
63
+ export interface UseHomeFeedReturn {
64
+ data: any;
65
+ loading: boolean;
66
+ error: string | null;
67
+ [key: string]: any;
68
+ }
69
+
70
+ export declare function useHomeFeed(...args: any[]): UseHomeFeedReturn;
71
+
72
+ export interface UseColdStartReturn {
73
+ data: any;
74
+ loading: boolean;
75
+ error: string | null;
76
+ [key: string]: any;
77
+ }
78
+
79
+ export declare function useColdStart(...args: any[]): UseColdStartReturn;
80
+
81
+ // ============ Services ============
82
+
83
+ export declare const recommendApi: any;
84
+
85
+ export declare class RecommendApiClient {
86
+ constructor(config?: Record<string, any>);
87
+ setToken(token: string): void;
88
+ setBaseUrl(url: string): void;
89
+ destroy(): void;
90
+ getHomeRecommendations(params?: Record<string, any>): Promise<any>;
91
+ getHomeFeed(params?: Record<string, any>): Promise<any>;
92
+ getRecommendations(type?: string, params?: Record<string, any>): Promise<any>;
93
+ getContentRecommendations(params?: Record<string, any>): Promise<any>;
94
+ getProductRecommendations(params?: Record<string, any>): Promise<any>;
95
+ getUserRecommendations(params?: Record<string, any>): Promise<any>;
96
+ getRelatedContent(contentId: string, params?: Record<string, any>): Promise<any>;
97
+ getRelatedProducts(productId: string, params?: Record<string, any>): Promise<any>;
98
+ getSimilarUsers(userId: string, params?: Record<string, any>): Promise<any>;
99
+ getSimilar(itemType: string, itemId: string, limit?: number): Promise<any>;
100
+ getGuessYouLike(params?: Record<string, any>): Promise<any>;
101
+ getHotRecommendations(params?: Record<string, any>): Promise<any>;
102
+ getNewRecommendations(params?: Record<string, any>): Promise<any>;
103
+ getTopicRecommendations(topicId: string, params?: Record<string, any>): Promise<any>;
104
+ getAlsoViewed(itemId: string, itemType?: string, params?: Record<string, any>): Promise<any>;
105
+ getAlsoBought(itemId: string, itemType?: string, params?: Record<string, any>): Promise<any>;
106
+ notInterested(itemId: string, itemType: string, reason?: string): Promise<any>;
107
+ markNotInterested(itemType: string, itemId: string, reason?: string): Promise<any>;
108
+ feedback(itemType: string, itemId: string, feedbackType: string, context?: Record<string, any>): Promise<any>;
109
+ trackClick(itemId: string, itemType: string, context?: Record<string, any>): Promise<any>;
110
+ trackExposure(items: Record<string, any>[]): Promise<any>;
111
+ getPreferences(): Promise<any>;
112
+ getUserPreferences(): Promise<any>;
113
+ updatePreferences(preferences: Record<string, any>): Promise<any>;
114
+ getInterestTags(): Promise<any>;
115
+ updateInterestTags(tagIds: string[]): Promise<any>;
116
+ getColdStartQuestions(params?: Record<string, any>): Promise<any>;
117
+ submitColdStartAnswers(answers: Record<string, any>): Promise<any>;
118
+ }
119
+
120
+ // ============ Types & Enums ============
121
+
122
+ export declare const RecommendType: Record<string, string>;
123
+ export declare const RecommendAlgorithm: any;
124
+ export declare const RecommendScene: any;
125
+ export declare const FeedbackType: Record<string, string>;
126
+
127
+ // ============ Functions & Utilities ============
128
+
129
+ export declare function getRecommendations(...args: any[]): any;
130
+ export declare function getHomeFeed(...args: any[]): any;
131
+ export declare function getSimilar(...args: any[]): any;
132
+ export declare function getGuessYouLike(...args: any[]): any;
133
+ export declare function getAlsoViewed(...args: any[]): any;
134
+ export declare function getAlsoBought(...args: any[]): any;
135
+ export declare function feedback(...args: any[]): any;
136
+ export declare function markNotInterested(...args: any[]): any;
137
+ export declare function getUserPreferences(...args: any[]): any;
138
+ export declare function updatePreferences(...args: any[]): any;
139
+ export declare function getColdStartQuestions(...args: any[]): any;
140
+ export declare function submitColdStartAnswers(...args: any[]): any;