@catalyst-team/poly-sdk 0.3.0 → 0.4.3
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.
- package/README.md +133 -1
- package/README.zh-CN.md +2 -0
- package/dist/scripts/dip-arb/auto-trade.d.ts +20 -0
- package/dist/scripts/dip-arb/auto-trade.d.ts.map +1 -0
- package/dist/scripts/dip-arb/auto-trade.js +373 -0
- package/dist/scripts/dip-arb/auto-trade.js.map +1 -0
- package/dist/scripts/dip-arb/example-basic.d.ts +30 -0
- package/dist/scripts/dip-arb/example-basic.d.ts.map +1 -0
- package/dist/scripts/dip-arb/example-basic.js +222 -0
- package/dist/scripts/dip-arb/example-basic.js.map +1 -0
- package/dist/scripts/dip-arb/redeem-positions.d.ts +11 -0
- package/dist/scripts/dip-arb/redeem-positions.d.ts.map +1 -0
- package/dist/scripts/dip-arb/redeem-positions.js +201 -0
- package/dist/scripts/dip-arb/redeem-positions.js.map +1 -0
- package/dist/scripts/dip-arb/scan-markets.d.ts +6 -0
- package/dist/scripts/dip-arb/scan-markets.d.ts.map +1 -0
- package/dist/scripts/dip-arb/scan-markets.js +73 -0
- package/dist/scripts/dip-arb/scan-markets.js.map +1 -0
- package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/bridge-client.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/ctf-client.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
- package/dist/{__tests__ → src/__tests__}/integration/data-api.integration.test.js +21 -18
- package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/gamma-api.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
- package/dist/{__tests__ → src/__tests__}/integration/market-service.integration.test.js +7 -0
- package/dist/src/__tests__/integration/market-service.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/trading-service.integration.test.js.map +1 -0
- package/dist/src/__tests__/test-utils.d.ts.map +1 -0
- package/dist/src/__tests__/test-utils.js.map +1 -0
- package/dist/src/catalyst/catalyst-query-service.d.ts +109 -0
- package/dist/src/catalyst/catalyst-query-service.d.ts.map +1 -0
- package/dist/src/catalyst/catalyst-query-service.js +141 -0
- package/dist/src/catalyst/catalyst-query-service.js.map +1 -0
- package/dist/src/catalyst/catalyst-realtime-service.d.ts +40 -0
- package/dist/src/catalyst/catalyst-realtime-service.d.ts.map +1 -0
- package/dist/src/catalyst/catalyst-realtime-service.js +125 -0
- package/dist/src/catalyst/catalyst-realtime-service.js.map +1 -0
- package/dist/src/catalyst/index.d.ts +4 -0
- package/dist/src/catalyst/index.d.ts.map +1 -0
- package/dist/src/catalyst/index.js +4 -0
- package/dist/src/catalyst/index.js.map +1 -0
- package/dist/src/catalyst/types.d.ts +178 -0
- package/dist/src/catalyst/types.d.ts.map +1 -0
- package/dist/src/catalyst/types.js +2 -0
- package/dist/src/catalyst/types.js.map +1 -0
- package/dist/src/clients/bridge-client.d.ts.map +1 -0
- package/dist/src/clients/bridge-client.js.map +1 -0
- package/dist/{clients → src/clients}/ctf-client.d.ts +6 -4
- package/dist/src/clients/ctf-client.d.ts.map +1 -0
- package/dist/src/clients/ctf-client.js.map +1 -0
- package/dist/{clients → src/clients}/data-api.d.ts +94 -20
- package/dist/src/clients/data-api.d.ts.map +1 -0
- package/dist/{clients → src/clients}/data-api.js +119 -52
- package/dist/src/clients/data-api.js.map +1 -0
- package/dist/{clients → src/clients}/gamma-api.d.ts +74 -0
- package/dist/src/clients/gamma-api.d.ts.map +1 -0
- package/dist/{clients → src/clients}/gamma-api.js +7 -0
- package/dist/src/clients/gamma-api.js.map +1 -0
- package/dist/src/clients/subgraph.d.ts.map +1 -0
- package/dist/src/clients/subgraph.js.map +1 -0
- package/dist/src/core/cache-adapter-bridge.d.ts.map +1 -0
- package/dist/src/core/cache-adapter-bridge.js.map +1 -0
- package/dist/{core → src/core}/cache.d.ts +2 -0
- package/dist/src/core/cache.d.ts.map +1 -0
- package/dist/{core → src/core}/cache.js +4 -0
- package/dist/src/core/cache.js.map +1 -0
- package/dist/src/core/errors.d.ts.map +1 -0
- package/dist/src/core/errors.js.map +1 -0
- package/dist/{core → src/core}/rate-limiter.d.ts +2 -1
- package/dist/src/core/rate-limiter.d.ts.map +1 -0
- package/dist/{core → src/core}/rate-limiter.js +7 -0
- package/dist/src/core/rate-limiter.js.map +1 -0
- package/dist/{core → src/core}/types.d.ts +105 -1
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +49 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/core/types.test.d.ts.map +1 -0
- package/dist/src/core/types.test.js.map +1 -0
- package/dist/src/core/unified-cache.d.ts.map +1 -0
- package/dist/src/core/unified-cache.js.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +24 -5
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +38 -4
- package/dist/src/index.js.map +1 -0
- package/dist/src/insider-scan/index.d.ts +3 -0
- package/dist/src/insider-scan/index.d.ts.map +1 -0
- package/dist/src/insider-scan/index.js +3 -0
- package/dist/src/insider-scan/index.js.map +1 -0
- package/dist/src/insider-scan/insider-scan-service.d.ts +63 -0
- package/dist/src/insider-scan/insider-scan-service.d.ts.map +1 -0
- package/dist/src/insider-scan/insider-scan-service.js +153 -0
- package/dist/src/insider-scan/insider-scan-service.js.map +1 -0
- package/dist/src/insider-scan/types.d.ts +205 -0
- package/dist/src/insider-scan/types.d.ts.map +1 -0
- package/dist/src/insider-scan/types.js +7 -0
- package/dist/src/insider-scan/types.js.map +1 -0
- package/dist/src/services/arbitrage-service.d.ts.map +1 -0
- package/dist/{services → src/services}/arbitrage-service.js +14 -4
- package/dist/src/services/arbitrage-service.js.map +1 -0
- package/dist/src/services/authorization-service.d.ts.map +1 -0
- package/dist/src/services/authorization-service.js.map +1 -0
- package/dist/src/services/binance-service.d.ts +154 -0
- package/dist/src/services/binance-service.d.ts.map +1 -0
- package/dist/src/services/binance-service.js +266 -0
- package/dist/src/services/binance-service.js.map +1 -0
- package/dist/src/services/dip-arb-service.d.ts +245 -0
- package/dist/src/services/dip-arb-service.d.ts.map +1 -0
- package/dist/src/services/dip-arb-service.js +1865 -0
- package/dist/src/services/dip-arb-service.js.map +1 -0
- package/dist/src/services/dip-arb-types.d.ts +553 -0
- package/dist/src/services/dip-arb-types.d.ts.map +1 -0
- package/dist/src/services/dip-arb-types.js +164 -0
- package/dist/src/services/dip-arb-types.js.map +1 -0
- package/dist/src/services/market-service.d.ts +431 -0
- package/dist/src/services/market-service.d.ts.map +1 -0
- package/dist/{services → src/services}/market-service.js +501 -17
- package/dist/src/services/market-service.js.map +1 -0
- package/dist/{services → src/services}/onchain-service.d.ts +10 -2
- package/dist/src/services/onchain-service.d.ts.map +1 -0
- package/dist/{services → src/services}/onchain-service.js +8 -0
- package/dist/src/services/onchain-service.js.map +1 -0
- package/dist/{services → src/services}/realtime-service-v2.d.ts +6 -0
- package/dist/src/services/realtime-service-v2.d.ts.map +1 -0
- package/dist/{services → src/services}/realtime-service-v2.js +44 -8
- package/dist/src/services/realtime-service-v2.js.map +1 -0
- package/dist/src/services/smart-money-service.d.ts +769 -0
- package/dist/src/services/smart-money-service.d.ts.map +1 -0
- package/dist/src/services/smart-money-service.js +1448 -0
- package/dist/src/services/smart-money-service.js.map +1 -0
- package/dist/src/services/swap-service.d.ts.map +1 -0
- package/dist/src/services/swap-service.js.map +1 -0
- package/dist/{services → src/services}/trading-service.d.ts +26 -0
- package/dist/src/services/trading-service.d.ts.map +1 -0
- package/dist/{services → src/services}/trading-service.js +72 -1
- package/dist/src/services/trading-service.js.map +1 -0
- package/dist/{services → src/services}/wallet-service.d.ts +81 -4
- package/dist/src/services/wallet-service.d.ts.map +1 -0
- package/dist/{services → src/services}/wallet-service.js +126 -8
- package/dist/src/services/wallet-service.js.map +1 -0
- package/dist/src/signal/index.d.ts +8 -0
- package/dist/src/signal/index.d.ts.map +1 -0
- package/dist/src/signal/index.js +7 -0
- package/dist/src/signal/index.js.map +1 -0
- package/dist/src/signal/signal-service.d.ts +89 -0
- package/dist/src/signal/signal-service.d.ts.map +1 -0
- package/dist/src/signal/signal-service.js +226 -0
- package/dist/src/signal/signal-service.js.map +1 -0
- package/dist/src/signal/types.d.ts +280 -0
- package/dist/src/signal/types.d.ts.map +1 -0
- package/dist/src/signal/types.js +7 -0
- package/dist/src/signal/types.js.map +1 -0
- package/dist/src/utils/price-utils.d.ts.map +1 -0
- package/dist/src/utils/price-utils.js.map +1 -0
- package/dist/src/utils/price-utils.test.d.ts.map +1 -0
- package/dist/src/utils/price-utils.test.js.map +1 -0
- package/dist/src/wallet-report/index.d.ts +3 -0
- package/dist/src/wallet-report/index.d.ts.map +1 -0
- package/dist/src/wallet-report/index.js +3 -0
- package/dist/src/wallet-report/index.js.map +1 -0
- package/dist/src/wallet-report/types.d.ts +187 -0
- package/dist/src/wallet-report/types.d.ts.map +1 -0
- package/dist/src/wallet-report/types.js +7 -0
- package/dist/src/wallet-report/types.js.map +1 -0
- package/dist/src/wallet-report/wallet-report-service.d.ts +91 -0
- package/dist/src/wallet-report/wallet-report-service.d.ts.map +1 -0
- package/dist/src/wallet-report/wallet-report-service.js +208 -0
- package/dist/src/wallet-report/wallet-report-service.js.map +1 -0
- package/dist/src/wallets/hot-wallet-service.d.ts +162 -0
- package/dist/src/wallets/hot-wallet-service.d.ts.map +1 -0
- package/dist/src/wallets/hot-wallet-service.js +251 -0
- package/dist/src/wallets/hot-wallet-service.js.map +1 -0
- package/dist/src/wallets/index.d.ts +15 -0
- package/dist/src/wallets/index.d.ts.map +1 -0
- package/dist/src/wallets/index.js +26 -0
- package/dist/src/wallets/index.js.map +1 -0
- package/package.json +7 -7
- package/dist/__tests__/clob-api.test.d.ts +0 -5
- package/dist/__tests__/clob-api.test.d.ts.map +0 -1
- package/dist/__tests__/clob-api.test.js +0 -240
- package/dist/__tests__/clob-api.test.js.map +0 -1
- package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +0 -1
- package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/bridge-client.integration.test.js.map +0 -1
- package/dist/__tests__/integration/clob-api.integration.test.d.ts +0 -13
- package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/clob-api.integration.test.js +0 -170
- package/dist/__tests__/integration/clob-api.integration.test.js.map +0 -1
- package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/ctf-client.integration.test.js.map +0 -1
- package/dist/__tests__/integration/data-api.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/data-api.integration.test.js.map +0 -1
- package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/gamma-api.integration.test.js.map +0 -1
- package/dist/__tests__/integration/market-service.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/market-service.integration.test.js.map +0 -1
- package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +0 -1
- package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/trading-service.integration.test.js.map +0 -1
- package/dist/__tests__/test-utils.d.ts.map +0 -1
- package/dist/__tests__/test-utils.js.map +0 -1
- package/dist/clients/bridge-client.d.ts.map +0 -1
- package/dist/clients/bridge-client.js.map +0 -1
- package/dist/clients/clob-api.d.ts +0 -391
- package/dist/clients/clob-api.d.ts.map +0 -1
- package/dist/clients/clob-api.js +0 -448
- package/dist/clients/clob-api.js.map +0 -1
- package/dist/clients/ctf-client.d.ts.map +0 -1
- package/dist/clients/ctf-client.js.map +0 -1
- package/dist/clients/data-api.d.ts.map +0 -1
- package/dist/clients/data-api.js.map +0 -1
- package/dist/clients/gamma-api.d.ts.map +0 -1
- package/dist/clients/gamma-api.js.map +0 -1
- package/dist/clients/subgraph.d.ts.map +0 -1
- package/dist/clients/subgraph.js.map +0 -1
- package/dist/clients/trading-client.d.ts +0 -252
- package/dist/clients/trading-client.d.ts.map +0 -1
- package/dist/clients/trading-client.js +0 -543
- package/dist/clients/trading-client.js.map +0 -1
- package/dist/clients/websocket-manager.d.ts +0 -103
- package/dist/clients/websocket-manager.d.ts.map +0 -1
- package/dist/clients/websocket-manager.js +0 -200
- package/dist/clients/websocket-manager.js.map +0 -1
- package/dist/core/cache-adapter-bridge.d.ts.map +0 -1
- package/dist/core/cache-adapter-bridge.js.map +0 -1
- package/dist/core/cache.d.ts.map +0 -1
- package/dist/core/cache.js.map +0 -1
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js.map +0 -1
- package/dist/core/rate-limiter.d.ts.map +0 -1
- package/dist/core/rate-limiter.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -19
- package/dist/core/types.js.map +0 -1
- package/dist/core/types.test.d.ts.map +0 -1
- package/dist/core/types.test.js.map +0 -1
- package/dist/core/unified-cache.d.ts.map +0 -1
- package/dist/core/unified-cache.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/services/arbitrage-service.d.ts.map +0 -1
- package/dist/services/arbitrage-service.js.map +0 -1
- package/dist/services/authorization-service.d.ts.map +0 -1
- package/dist/services/authorization-service.js.map +0 -1
- package/dist/services/market-service.d.ts +0 -208
- package/dist/services/market-service.d.ts.map +0 -1
- package/dist/services/market-service.js.map +0 -1
- package/dist/services/onchain-service.d.ts.map +0 -1
- package/dist/services/onchain-service.js.map +0 -1
- package/dist/services/realtime-service-v2.d.ts.map +0 -1
- package/dist/services/realtime-service-v2.js.map +0 -1
- package/dist/services/realtime-service.d.ts +0 -82
- package/dist/services/realtime-service.d.ts.map +0 -1
- package/dist/services/realtime-service.js +0 -182
- package/dist/services/realtime-service.js.map +0 -1
- package/dist/services/smart-money-service.d.ts +0 -196
- package/dist/services/smart-money-service.d.ts.map +0 -1
- package/dist/services/smart-money-service.js +0 -358
- package/dist/services/smart-money-service.js.map +0 -1
- package/dist/services/swap-service.d.ts.map +0 -1
- package/dist/services/swap-service.js.map +0 -1
- package/dist/services/trading-service.d.ts.map +0 -1
- package/dist/services/trading-service.js.map +0 -1
- package/dist/services/wallet-service.d.ts.map +0 -1
- package/dist/services/wallet-service.js.map +0 -1
- package/dist/utils/price-utils.d.ts.map +0 -1
- package/dist/utils/price-utils.js.map +0 -1
- package/dist/utils/price-utils.test.d.ts.map +0 -1
- package/dist/utils/price-utils.test.js.map +0 -1
- /package/dist/{__tests__ → src/__tests__}/integration/arbitrage-service.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/arbitrage-service.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/bridge-client.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/bridge-client.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/ctf-client.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/ctf-client.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/data-api.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/gamma-api.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/gamma-api.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/market-service.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/realtime-service-v2.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/realtime-service-v2.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/trading-service.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/trading-service.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/test-utils.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/test-utils.js +0 -0
- /package/dist/{clients → src/clients}/bridge-client.d.ts +0 -0
- /package/dist/{clients → src/clients}/bridge-client.js +0 -0
- /package/dist/{clients → src/clients}/ctf-client.js +0 -0
- /package/dist/{clients → src/clients}/subgraph.d.ts +0 -0
- /package/dist/{clients → src/clients}/subgraph.js +0 -0
- /package/dist/{core → src/core}/cache-adapter-bridge.d.ts +0 -0
- /package/dist/{core → src/core}/cache-adapter-bridge.js +0 -0
- /package/dist/{core → src/core}/errors.d.ts +0 -0
- /package/dist/{core → src/core}/errors.js +0 -0
- /package/dist/{core → src/core}/types.test.d.ts +0 -0
- /package/dist/{core → src/core}/types.test.js +0 -0
- /package/dist/{core → src/core}/unified-cache.d.ts +0 -0
- /package/dist/{core → src/core}/unified-cache.js +0 -0
- /package/dist/{services → src/services}/arbitrage-service.d.ts +0 -0
- /package/dist/{services → src/services}/authorization-service.d.ts +0 -0
- /package/dist/{services → src/services}/authorization-service.js +0 -0
- /package/dist/{services → src/services}/swap-service.d.ts +0 -0
- /package/dist/{services → src/services}/swap-service.js +0 -0
- /package/dist/{utils → src/utils}/price-utils.d.ts +0 -0
- /package/dist/{utils → src/utils}/price-utils.js +0 -0
- /package/dist/{utils → src/utils}/price-utils.test.d.ts +0 -0
- /package/dist/{utils → src/utils}/price-utils.test.js +0 -0
|
@@ -0,0 +1,769 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SmartMoneyService
|
|
3
|
+
*
|
|
4
|
+
* 聪明钱监控和自动跟单服务
|
|
5
|
+
*
|
|
6
|
+
* 核心功能:
|
|
7
|
+
* 1. 监听指定地址的交易 - subscribeSmartMoneyTrades()
|
|
8
|
+
* 2. 自动跟单 - startAutoCopyTrading()
|
|
9
|
+
* 3. 聪明钱信息获取 - getSmartMoneyList(), getSmartMoneyInfo()
|
|
10
|
+
*
|
|
11
|
+
* ============================================================================
|
|
12
|
+
* 设计决策
|
|
13
|
+
* ============================================================================
|
|
14
|
+
*
|
|
15
|
+
* ## 监控方式
|
|
16
|
+
* 使用 Activity WebSocket,延迟 < 100ms,实测验证有效。
|
|
17
|
+
*
|
|
18
|
+
* ## 下单方式
|
|
19
|
+
* | 方式 | 使用场景 | 特点 |
|
|
20
|
+
* |------|---------|------|
|
|
21
|
+
* | FOK | 小额跟单 | 全部成交或取消 |
|
|
22
|
+
* | FAK | 大额跟单 | 部分成交也接受 |
|
|
23
|
+
*
|
|
24
|
+
* ## 重要限制
|
|
25
|
+
* ⚠️ Activity WebSocket 不会广播用户自己的交易!
|
|
26
|
+
* 验证跟单结果请使用 TradingService.getTrades()
|
|
27
|
+
*/
|
|
28
|
+
import type { WalletService, TimePeriod } from './wallet-service.js';
|
|
29
|
+
import type { RealtimeServiceV2 } from './realtime-service-v2.js';
|
|
30
|
+
import type { TradingService, OrderResult } from './trading-service.js';
|
|
31
|
+
import type { DataApiClient } from '../clients/data-api.js';
|
|
32
|
+
/**
|
|
33
|
+
* Market category for classification
|
|
34
|
+
*/
|
|
35
|
+
export type MarketCategory = 'crypto' | 'politics' | 'sports' | 'entertainment' | 'economics' | 'science' | 'other';
|
|
36
|
+
/**
|
|
37
|
+
* Keywords for market categorization by category
|
|
38
|
+
*/
|
|
39
|
+
export declare const CATEGORY_KEYWORDS: Record<MarketCategory, RegExp>;
|
|
40
|
+
/**
|
|
41
|
+
* Categorize a market based on its title
|
|
42
|
+
*
|
|
43
|
+
* @param title - Market title to categorize
|
|
44
|
+
* @returns The market category
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { categorizeMarket } from '@catalyst-team/poly-sdk';
|
|
49
|
+
*
|
|
50
|
+
* categorizeMarket('Will BTC hit $100k?'); // 'crypto'
|
|
51
|
+
* categorizeMarket('Trump wins 2024?'); // 'politics'
|
|
52
|
+
* categorizeMarket('Lakers win NBA?'); // 'sports'
|
|
53
|
+
* categorizeMarket('Random event?'); // 'other'
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function categorizeMarket(title: string): MarketCategory;
|
|
57
|
+
/**
|
|
58
|
+
* Smart Money wallet information
|
|
59
|
+
*/
|
|
60
|
+
export interface SmartMoneyWallet {
|
|
61
|
+
address: string;
|
|
62
|
+
name?: string;
|
|
63
|
+
pnl: number;
|
|
64
|
+
volume: number;
|
|
65
|
+
score: number;
|
|
66
|
+
rank?: number;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Smart Money trade from Activity WebSocket
|
|
70
|
+
*/
|
|
71
|
+
export interface SmartMoneyTrade {
|
|
72
|
+
traderAddress: string;
|
|
73
|
+
traderName?: string;
|
|
74
|
+
conditionId?: string;
|
|
75
|
+
marketSlug?: string;
|
|
76
|
+
side: 'BUY' | 'SELL';
|
|
77
|
+
size: number;
|
|
78
|
+
price: number;
|
|
79
|
+
tokenId?: string;
|
|
80
|
+
outcome?: string;
|
|
81
|
+
txHash?: string;
|
|
82
|
+
timestamp: number;
|
|
83
|
+
isSmartMoney: boolean;
|
|
84
|
+
smartMoneyInfo?: SmartMoneyWallet;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Auto copy trading options
|
|
88
|
+
*/
|
|
89
|
+
export interface AutoCopyTradingOptions {
|
|
90
|
+
/** Specific wallet addresses to follow */
|
|
91
|
+
targetAddresses?: string[];
|
|
92
|
+
/** Follow top N from leaderboard */
|
|
93
|
+
topN?: number;
|
|
94
|
+
/** Scale factor for size (0.1 = 10%) */
|
|
95
|
+
sizeScale?: number;
|
|
96
|
+
/** Maximum USDC per trade */
|
|
97
|
+
maxSizePerTrade?: number;
|
|
98
|
+
/** Maximum slippage (e.g., 0.03 = 3%) */
|
|
99
|
+
maxSlippage?: number;
|
|
100
|
+
/** Order type: FOK or FAK */
|
|
101
|
+
orderType?: 'FOK' | 'FAK';
|
|
102
|
+
/** Delay before executing (ms) */
|
|
103
|
+
delay?: number;
|
|
104
|
+
/** Minimum trade value to copy (USDC) */
|
|
105
|
+
minTradeSize?: number;
|
|
106
|
+
/** Only copy BUY or SELL trades */
|
|
107
|
+
sideFilter?: 'BUY' | 'SELL';
|
|
108
|
+
/** Dry run mode */
|
|
109
|
+
dryRun?: boolean;
|
|
110
|
+
/** Callbacks */
|
|
111
|
+
onTrade?: (trade: SmartMoneyTrade, result: OrderResult) => void;
|
|
112
|
+
onError?: (error: Error) => void;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Auto copy trading statistics
|
|
116
|
+
*/
|
|
117
|
+
export interface AutoCopyTradingStats {
|
|
118
|
+
startTime: number;
|
|
119
|
+
tradesDetected: number;
|
|
120
|
+
tradesExecuted: number;
|
|
121
|
+
tradesSkipped: number;
|
|
122
|
+
tradesFailed: number;
|
|
123
|
+
totalUsdcSpent: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Auto copy trading subscription
|
|
127
|
+
*/
|
|
128
|
+
export interface AutoCopyTradingSubscription {
|
|
129
|
+
id: string;
|
|
130
|
+
targetAddresses: string[];
|
|
131
|
+
startTime: number;
|
|
132
|
+
isActive: boolean;
|
|
133
|
+
stats: AutoCopyTradingStats;
|
|
134
|
+
stop: () => void;
|
|
135
|
+
getStats: () => AutoCopyTradingStats;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Service configuration
|
|
139
|
+
*/
|
|
140
|
+
export interface SmartMoneyServiceConfig {
|
|
141
|
+
/** Minimum PnL to be considered Smart Money (default: $1000) */
|
|
142
|
+
minPnl?: number;
|
|
143
|
+
/** Cache TTL (default: 300000 = 5 min) */
|
|
144
|
+
cacheTtl?: number;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Leaderboard query options
|
|
148
|
+
*/
|
|
149
|
+
export interface LeaderboardOptions {
|
|
150
|
+
/** Time period: 'day' | 'week' | 'month' | 'all' */
|
|
151
|
+
period?: TimePeriod;
|
|
152
|
+
/** Maximum entries (default: 50, max: 500) */
|
|
153
|
+
limit?: number;
|
|
154
|
+
/** Sort by: 'pnl' | 'volume' */
|
|
155
|
+
sortBy?: 'pnl' | 'volume';
|
|
156
|
+
/** Pagination offset (default: 0, max: 10000) */
|
|
157
|
+
offset?: number;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Smart Money Leaderboard entry (extended from PeriodLeaderboardEntry)
|
|
161
|
+
*/
|
|
162
|
+
export interface SmartMoneyLeaderboardEntry {
|
|
163
|
+
address: string;
|
|
164
|
+
rank: number;
|
|
165
|
+
pnl: number;
|
|
166
|
+
volume: number;
|
|
167
|
+
tradeCount: number;
|
|
168
|
+
userName?: string;
|
|
169
|
+
profileImage?: string;
|
|
170
|
+
xUsername?: string;
|
|
171
|
+
verifiedBadge?: boolean;
|
|
172
|
+
totalPnl: number;
|
|
173
|
+
realizedPnl: number;
|
|
174
|
+
unrealizedPnl: number;
|
|
175
|
+
buyCount: number;
|
|
176
|
+
sellCount: number;
|
|
177
|
+
buyVolume: number;
|
|
178
|
+
sellVolume: number;
|
|
179
|
+
makerVolume: number;
|
|
180
|
+
takerVolume: number;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Leaderboard result with proper semantics
|
|
184
|
+
*
|
|
185
|
+
* Note: Polymarket API doesn't return total count.
|
|
186
|
+
*/
|
|
187
|
+
export interface SmartMoneyLeaderboardResult {
|
|
188
|
+
/** Leaderboard entries returned by the API */
|
|
189
|
+
entries: SmartMoneyLeaderboardEntry[];
|
|
190
|
+
/** Whether there may be more entries (entries.length === request.limit) */
|
|
191
|
+
hasMore: boolean;
|
|
192
|
+
/** Echo of request parameters for pagination convenience */
|
|
193
|
+
request: {
|
|
194
|
+
offset: number;
|
|
195
|
+
limit: number;
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Period ranking info
|
|
200
|
+
*/
|
|
201
|
+
export interface PeriodRanking {
|
|
202
|
+
rank: number;
|
|
203
|
+
pnl: number;
|
|
204
|
+
volume: number;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Wallet report - comprehensive wallet analysis
|
|
208
|
+
*/
|
|
209
|
+
export interface WalletReport {
|
|
210
|
+
address: string;
|
|
211
|
+
generatedAt: Date;
|
|
212
|
+
overview: {
|
|
213
|
+
totalPnL: number;
|
|
214
|
+
realizedPnL: number;
|
|
215
|
+
unrealizedPnL: number;
|
|
216
|
+
positionCount: number;
|
|
217
|
+
tradeCount: number;
|
|
218
|
+
smartScore: number;
|
|
219
|
+
lastActiveAt: Date;
|
|
220
|
+
};
|
|
221
|
+
rankings: {
|
|
222
|
+
daily: PeriodRanking | null;
|
|
223
|
+
weekly: PeriodRanking | null;
|
|
224
|
+
monthly: PeriodRanking | null;
|
|
225
|
+
allTime: PeriodRanking | null;
|
|
226
|
+
};
|
|
227
|
+
performance: {
|
|
228
|
+
winRate: number;
|
|
229
|
+
winCount: number;
|
|
230
|
+
lossCount: number;
|
|
231
|
+
avgPositionSize: number;
|
|
232
|
+
avgWinAmount: number;
|
|
233
|
+
avgLossAmount: number;
|
|
234
|
+
uniqueMarkets: number;
|
|
235
|
+
};
|
|
236
|
+
categoryBreakdown: Array<{
|
|
237
|
+
category: string;
|
|
238
|
+
positionCount: number;
|
|
239
|
+
totalPnl: number;
|
|
240
|
+
}>;
|
|
241
|
+
topPositions: Array<{
|
|
242
|
+
market: string;
|
|
243
|
+
slug?: string;
|
|
244
|
+
outcome: string;
|
|
245
|
+
size: number;
|
|
246
|
+
avgPrice: number;
|
|
247
|
+
currentPrice?: number;
|
|
248
|
+
pnl: number;
|
|
249
|
+
percentPnl?: number;
|
|
250
|
+
}>;
|
|
251
|
+
recentTrades: Array<{
|
|
252
|
+
timestamp: number;
|
|
253
|
+
side: 'BUY' | 'SELL';
|
|
254
|
+
size: number;
|
|
255
|
+
price: number;
|
|
256
|
+
usdcSize?: number;
|
|
257
|
+
title?: string;
|
|
258
|
+
slug?: string;
|
|
259
|
+
outcome?: string;
|
|
260
|
+
conditionId?: string;
|
|
261
|
+
}>;
|
|
262
|
+
activitySummary: {
|
|
263
|
+
totalBuys: number;
|
|
264
|
+
totalSells: number;
|
|
265
|
+
buyVolume: number;
|
|
266
|
+
sellVolume: number;
|
|
267
|
+
activeMarketsCount: number;
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Wallet comparison result
|
|
272
|
+
*/
|
|
273
|
+
export interface WalletComparison {
|
|
274
|
+
period: TimePeriod;
|
|
275
|
+
generatedAt: Date;
|
|
276
|
+
wallets: Array<{
|
|
277
|
+
address: string;
|
|
278
|
+
userName?: string;
|
|
279
|
+
rank: number | null;
|
|
280
|
+
pnl: number;
|
|
281
|
+
volume: number;
|
|
282
|
+
positionCount: number;
|
|
283
|
+
winRate: number;
|
|
284
|
+
}>;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Category color scheme for charts
|
|
288
|
+
*/
|
|
289
|
+
export declare const CATEGORY_COLORS: Record<MarketCategory, string>;
|
|
290
|
+
/**
|
|
291
|
+
* Category labels for display
|
|
292
|
+
*/
|
|
293
|
+
export declare const CATEGORY_LABELS: Record<MarketCategory, string>;
|
|
294
|
+
/**
|
|
295
|
+
* Daily summary statistics
|
|
296
|
+
*/
|
|
297
|
+
export interface DailySummary {
|
|
298
|
+
totalTrades: number;
|
|
299
|
+
buyCount: number;
|
|
300
|
+
sellCount: number;
|
|
301
|
+
buyVolume: number;
|
|
302
|
+
sellVolume: number;
|
|
303
|
+
realizedPnL: number;
|
|
304
|
+
positionsClosed: number;
|
|
305
|
+
positionsOpened: number;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Category statistics for breakdown
|
|
309
|
+
*/
|
|
310
|
+
export interface CategoryStats {
|
|
311
|
+
category: MarketCategory;
|
|
312
|
+
tradeCount: number;
|
|
313
|
+
volume: number;
|
|
314
|
+
pnl: number;
|
|
315
|
+
percentage: number;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Trade record for significant trades
|
|
319
|
+
*/
|
|
320
|
+
export interface TradeRecord {
|
|
321
|
+
market: string;
|
|
322
|
+
conditionId?: string;
|
|
323
|
+
outcome: string;
|
|
324
|
+
side: 'BUY' | 'SELL';
|
|
325
|
+
price: number;
|
|
326
|
+
size: number;
|
|
327
|
+
usdcValue: number;
|
|
328
|
+
timestamp: Date;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Position summary
|
|
332
|
+
*/
|
|
333
|
+
export interface PositionSummary {
|
|
334
|
+
market: string;
|
|
335
|
+
conditionId?: string;
|
|
336
|
+
outcome: string;
|
|
337
|
+
size: number;
|
|
338
|
+
avgPrice: number;
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Closed market summary
|
|
342
|
+
*/
|
|
343
|
+
export interface ClosedMarketSummary {
|
|
344
|
+
market: string;
|
|
345
|
+
conditionId: string;
|
|
346
|
+
outcome: string;
|
|
347
|
+
realizedPnL: number;
|
|
348
|
+
closePrice: number;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Daily wallet report
|
|
352
|
+
*/
|
|
353
|
+
export interface DailyWalletReport {
|
|
354
|
+
address: string;
|
|
355
|
+
reportDate: string;
|
|
356
|
+
generatedAt: Date;
|
|
357
|
+
summary: DailySummary;
|
|
358
|
+
categoryBreakdown: CategoryStats[];
|
|
359
|
+
significantTrades: TradeRecord[];
|
|
360
|
+
newPositions: PositionSummary[];
|
|
361
|
+
closedMarkets: ClosedMarketSummary[];
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Data range for lifecycle report
|
|
365
|
+
*/
|
|
366
|
+
export interface DataRange {
|
|
367
|
+
firstActivityAt: Date;
|
|
368
|
+
lastActivityAt: Date;
|
|
369
|
+
totalDays: number;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Performance metrics
|
|
373
|
+
*/
|
|
374
|
+
export interface PerformanceMetrics {
|
|
375
|
+
totalPnL: number;
|
|
376
|
+
realizedPnL: number;
|
|
377
|
+
unrealizedPnL: number;
|
|
378
|
+
totalVolume: number;
|
|
379
|
+
winRate: number;
|
|
380
|
+
profitFactor: number;
|
|
381
|
+
avgWin: number;
|
|
382
|
+
avgLoss: number;
|
|
383
|
+
maxWin: number;
|
|
384
|
+
maxLoss: number;
|
|
385
|
+
totalMarketsTraded: number;
|
|
386
|
+
winningMarkets: number;
|
|
387
|
+
losingMarkets: number;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Market statistics for top/worst markets
|
|
391
|
+
*/
|
|
392
|
+
export interface MarketStats {
|
|
393
|
+
market: string;
|
|
394
|
+
conditionId: string;
|
|
395
|
+
category: MarketCategory;
|
|
396
|
+
pnl: number;
|
|
397
|
+
volume: number;
|
|
398
|
+
tradeCount: number;
|
|
399
|
+
outcome: 'win' | 'lose' | 'open';
|
|
400
|
+
avgPrice: number;
|
|
401
|
+
closePrice?: number;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Trading patterns analysis
|
|
405
|
+
*/
|
|
406
|
+
export interface TradingPatterns {
|
|
407
|
+
avgTradesPerDay: number;
|
|
408
|
+
avgTradesPerWeek: number;
|
|
409
|
+
preferredSide: 'YES' | 'NO' | 'balanced';
|
|
410
|
+
avgPositionSize: number;
|
|
411
|
+
avgHoldingDays: number;
|
|
412
|
+
topCategories: MarketCategory[];
|
|
413
|
+
positionConcentration: number;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Current positions summary
|
|
417
|
+
*/
|
|
418
|
+
export interface CurrentPositionsSummary {
|
|
419
|
+
count: number;
|
|
420
|
+
totalValue: number;
|
|
421
|
+
unrealizedPnL: number;
|
|
422
|
+
categories: CategoryStats[];
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* Wallet lifecycle report
|
|
426
|
+
*/
|
|
427
|
+
export interface WalletLifecycleReport {
|
|
428
|
+
address: string;
|
|
429
|
+
generatedAt: Date;
|
|
430
|
+
dataRange: DataRange;
|
|
431
|
+
performance: PerformanceMetrics;
|
|
432
|
+
categoryDistribution: CategoryStats[];
|
|
433
|
+
topMarkets: MarketStats[];
|
|
434
|
+
worstMarkets: MarketStats[];
|
|
435
|
+
patterns: TradingPatterns;
|
|
436
|
+
currentPositions: CurrentPositionsSummary;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Pie chart slice
|
|
440
|
+
*/
|
|
441
|
+
export interface PieSlice {
|
|
442
|
+
name: string;
|
|
443
|
+
value: number;
|
|
444
|
+
percentage: number;
|
|
445
|
+
color: string;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Pie chart data
|
|
449
|
+
*/
|
|
450
|
+
export interface PieChartData {
|
|
451
|
+
name: string;
|
|
452
|
+
data: PieSlice[];
|
|
453
|
+
total: number;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Bar chart item
|
|
457
|
+
*/
|
|
458
|
+
export interface BarItem {
|
|
459
|
+
label: string;
|
|
460
|
+
value: number;
|
|
461
|
+
color: string;
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Bar chart data
|
|
465
|
+
*/
|
|
466
|
+
export interface BarChartData {
|
|
467
|
+
name: string;
|
|
468
|
+
data: BarItem[];
|
|
469
|
+
}
|
|
470
|
+
/**
|
|
471
|
+
* Monthly PnL item
|
|
472
|
+
*/
|
|
473
|
+
export interface MonthlyPnLItem extends BarItem {
|
|
474
|
+
month: string;
|
|
475
|
+
pnl: number;
|
|
476
|
+
tradeCount: number;
|
|
477
|
+
cumulativePnL: number;
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Monthly PnL chart data
|
|
481
|
+
*/
|
|
482
|
+
export interface MonthlyPnLData extends BarChartData {
|
|
483
|
+
data: MonthlyPnLItem[];
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Chart metadata
|
|
487
|
+
*/
|
|
488
|
+
export interface ChartMetadata {
|
|
489
|
+
address: string;
|
|
490
|
+
generatedAt: Date;
|
|
491
|
+
dataRange: {
|
|
492
|
+
from: Date;
|
|
493
|
+
to: Date;
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
/**
|
|
497
|
+
* Wallet chart data
|
|
498
|
+
*/
|
|
499
|
+
export interface WalletChartData {
|
|
500
|
+
tradeDistribution: PieChartData;
|
|
501
|
+
positionDistribution: PieChartData;
|
|
502
|
+
profitDistribution: PieChartData;
|
|
503
|
+
monthlyPnL?: MonthlyPnLData;
|
|
504
|
+
metadata: ChartMetadata;
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Report generation progress callback
|
|
508
|
+
*/
|
|
509
|
+
export type ReportProgressCallback = (progress: number, message: string) => void;
|
|
510
|
+
/**
|
|
511
|
+
* Lifecycle report options
|
|
512
|
+
*/
|
|
513
|
+
export interface LifecycleReportOptions {
|
|
514
|
+
onProgress?: ReportProgressCallback;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Text report output
|
|
518
|
+
*/
|
|
519
|
+
export interface TextReport {
|
|
520
|
+
address: string;
|
|
521
|
+
generatedAt: Date;
|
|
522
|
+
markdown: string;
|
|
523
|
+
metrics: {
|
|
524
|
+
totalPnL: number;
|
|
525
|
+
winRate: number;
|
|
526
|
+
profitFactor: number;
|
|
527
|
+
totalMarketsTraded: number;
|
|
528
|
+
totalDays: number;
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
export declare class SmartMoneyService {
|
|
532
|
+
private walletService;
|
|
533
|
+
private realtimeService;
|
|
534
|
+
private tradingService;
|
|
535
|
+
private dataApi;
|
|
536
|
+
private config;
|
|
537
|
+
private smartMoneyCache;
|
|
538
|
+
private smartMoneySet;
|
|
539
|
+
private cacheTimestamp;
|
|
540
|
+
private activeSubscription;
|
|
541
|
+
private tradeHandlers;
|
|
542
|
+
constructor(walletService: WalletService, realtimeService: RealtimeServiceV2, tradingService: TradingService, config?: SmartMoneyServiceConfig, dataApi?: DataApiClient);
|
|
543
|
+
/**
|
|
544
|
+
* Set DataApiClient for report generation
|
|
545
|
+
* This allows setting the client after construction
|
|
546
|
+
*/
|
|
547
|
+
setDataApiClient(dataApi: DataApiClient): void;
|
|
548
|
+
/**
|
|
549
|
+
* Get list of Smart Money wallets from leaderboard
|
|
550
|
+
*/
|
|
551
|
+
getSmartMoneyList(limit?: number): Promise<SmartMoneyWallet[]>;
|
|
552
|
+
/**
|
|
553
|
+
* Check if an address is Smart Money
|
|
554
|
+
*/
|
|
555
|
+
isSmartMoney(address: string): Promise<boolean>;
|
|
556
|
+
/**
|
|
557
|
+
* Get Smart Money info for an address
|
|
558
|
+
*/
|
|
559
|
+
getSmartMoneyInfo(address: string): Promise<SmartMoneyWallet | null>;
|
|
560
|
+
/**
|
|
561
|
+
* Subscribe to trades from specific addresses
|
|
562
|
+
*
|
|
563
|
+
* @example
|
|
564
|
+
* ```typescript
|
|
565
|
+
* const sub = smartMoneyService.subscribeSmartMoneyTrades(
|
|
566
|
+
* (trade) => {
|
|
567
|
+
* console.log(`${trade.traderName} ${trade.side} ${trade.size} @ ${trade.price}`);
|
|
568
|
+
* },
|
|
569
|
+
* { filterAddresses: ['0x1234...', '0x5678...'] }
|
|
570
|
+
* );
|
|
571
|
+
*
|
|
572
|
+
* // Stop listening
|
|
573
|
+
* sub.unsubscribe();
|
|
574
|
+
* ```
|
|
575
|
+
*/
|
|
576
|
+
subscribeSmartMoneyTrades(onTrade: (trade: SmartMoneyTrade) => void, options?: {
|
|
577
|
+
filterAddresses?: string[];
|
|
578
|
+
minSize?: number;
|
|
579
|
+
smartMoneyOnly?: boolean;
|
|
580
|
+
}): {
|
|
581
|
+
id: string;
|
|
582
|
+
unsubscribe: () => void;
|
|
583
|
+
};
|
|
584
|
+
private handleActivityTrade;
|
|
585
|
+
/**
|
|
586
|
+
* Start auto copy trading - 自动跟单
|
|
587
|
+
*
|
|
588
|
+
* @example
|
|
589
|
+
* ```typescript
|
|
590
|
+
* const sub = await smartMoneyService.startAutoCopyTrading({
|
|
591
|
+
* targetAddresses: ['0x1234...'],
|
|
592
|
+
* // 或者跟踪排行榜前N名
|
|
593
|
+
* topN: 10,
|
|
594
|
+
*
|
|
595
|
+
* sizeScale: 0.1, // 10%
|
|
596
|
+
* maxSizePerTrade: 50, // $50
|
|
597
|
+
* maxSlippage: 0.03, // 3%
|
|
598
|
+
* orderType: 'FOK',
|
|
599
|
+
*
|
|
600
|
+
* dryRun: true, // 测试模式
|
|
601
|
+
*
|
|
602
|
+
* onTrade: (trade, result) => console.log(result),
|
|
603
|
+
* });
|
|
604
|
+
*
|
|
605
|
+
* // 停止
|
|
606
|
+
* sub.stop();
|
|
607
|
+
* ```
|
|
608
|
+
*/
|
|
609
|
+
startAutoCopyTrading(options: AutoCopyTradingOptions): Promise<AutoCopyTradingSubscription>;
|
|
610
|
+
/**
|
|
611
|
+
* Get leaderboard by time period
|
|
612
|
+
*
|
|
613
|
+
* @example
|
|
614
|
+
* ```typescript
|
|
615
|
+
* // Get weekly top 100 by PnL
|
|
616
|
+
* const leaderboard = await sdk.smartMoney.getLeaderboard({
|
|
617
|
+
* period: 'week',
|
|
618
|
+
* limit: 100,
|
|
619
|
+
* sortBy: 'pnl'
|
|
620
|
+
* });
|
|
621
|
+
* ```
|
|
622
|
+
*/
|
|
623
|
+
getLeaderboard(options?: LeaderboardOptions): Promise<SmartMoneyLeaderboardResult>;
|
|
624
|
+
/**
|
|
625
|
+
* Generate comprehensive wallet report
|
|
626
|
+
*
|
|
627
|
+
* @example
|
|
628
|
+
* ```typescript
|
|
629
|
+
* const report = await sdk.smartMoney.getWalletReport('0x...');
|
|
630
|
+
* console.log(report.overview.totalPnL);
|
|
631
|
+
* console.log(report.rankings.weekly?.rank);
|
|
632
|
+
* ```
|
|
633
|
+
*/
|
|
634
|
+
getWalletReport(address: string): Promise<WalletReport>;
|
|
635
|
+
/**
|
|
636
|
+
* Analyze position categories based on title keywords
|
|
637
|
+
*/
|
|
638
|
+
private analyzeCategories;
|
|
639
|
+
/**
|
|
640
|
+
* Compare multiple wallets
|
|
641
|
+
*
|
|
642
|
+
* @example
|
|
643
|
+
* ```typescript
|
|
644
|
+
* const comparison = await sdk.smartMoney.compareWallets(
|
|
645
|
+
* ['0x111...', '0x222...', '0x333...'],
|
|
646
|
+
* { period: 'week' }
|
|
647
|
+
* );
|
|
648
|
+
* ```
|
|
649
|
+
*/
|
|
650
|
+
compareWallets(addresses: string[], options?: {
|
|
651
|
+
period?: TimePeriod;
|
|
652
|
+
}): Promise<WalletComparison>;
|
|
653
|
+
/**
|
|
654
|
+
* Get daily wallet report
|
|
655
|
+
*
|
|
656
|
+
* @param address - Wallet address
|
|
657
|
+
* @param date - Date for the report (default: today)
|
|
658
|
+
*
|
|
659
|
+
* @example
|
|
660
|
+
* ```typescript
|
|
661
|
+
* const report = await sdk.smartMoney.getDailyReport('0x...', new Date('2026-01-08'));
|
|
662
|
+
* console.log(report.summary.realizedPnL);
|
|
663
|
+
* ```
|
|
664
|
+
*/
|
|
665
|
+
getDailyReport(address: string, date?: Date): Promise<DailyWalletReport>;
|
|
666
|
+
/**
|
|
667
|
+
* Get wallet lifecycle report
|
|
668
|
+
*
|
|
669
|
+
* @param address - Wallet address
|
|
670
|
+
* @param options - Report options with progress callback
|
|
671
|
+
*
|
|
672
|
+
* @example
|
|
673
|
+
* ```typescript
|
|
674
|
+
* const report = await sdk.smartMoney.getLifecycleReport('0x...', {
|
|
675
|
+
* onProgress: (p, msg) => console.log(`${p * 100}%: ${msg}`)
|
|
676
|
+
* });
|
|
677
|
+
* console.log(report.performance.winRate);
|
|
678
|
+
* ```
|
|
679
|
+
*/
|
|
680
|
+
getLifecycleReport(address: string, options?: LifecycleReportOptions): Promise<WalletLifecycleReport>;
|
|
681
|
+
/**
|
|
682
|
+
* Get wallet chart data
|
|
683
|
+
*
|
|
684
|
+
* @param address - Wallet address
|
|
685
|
+
*
|
|
686
|
+
* @example
|
|
687
|
+
* ```typescript
|
|
688
|
+
* const chartData = await sdk.smartMoney.getWalletChartData('0x...');
|
|
689
|
+
* // Use chartData.tradeDistribution with recharts
|
|
690
|
+
* ```
|
|
691
|
+
*/
|
|
692
|
+
getWalletChartData(address: string): Promise<WalletChartData>;
|
|
693
|
+
/**
|
|
694
|
+
* Generate a text analysis report for a wallet
|
|
695
|
+
*
|
|
696
|
+
* @param address - Wallet address
|
|
697
|
+
* @param options - Report options with progress callback
|
|
698
|
+
*
|
|
699
|
+
* @example
|
|
700
|
+
* ```typescript
|
|
701
|
+
* const textReport = await sdk.smartMoney.generateTextReport('0x...');
|
|
702
|
+
* console.log(textReport.markdown);
|
|
703
|
+
* ```
|
|
704
|
+
*/
|
|
705
|
+
generateTextReport(address: string, options?: LifecycleReportOptions): Promise<TextReport>;
|
|
706
|
+
/**
|
|
707
|
+
* Build markdown text report from data
|
|
708
|
+
*/
|
|
709
|
+
private buildTextReport;
|
|
710
|
+
/**
|
|
711
|
+
* Analyze trading style from patterns
|
|
712
|
+
*/
|
|
713
|
+
private analyzeTradingStyle;
|
|
714
|
+
/**
|
|
715
|
+
* Assess risk profile
|
|
716
|
+
*/
|
|
717
|
+
private assessRisk;
|
|
718
|
+
/**
|
|
719
|
+
* Generate copy trading recommendation
|
|
720
|
+
*/
|
|
721
|
+
private generateRecommendation;
|
|
722
|
+
/**
|
|
723
|
+
* Categorize market based on title keywords
|
|
724
|
+
*/
|
|
725
|
+
private categorizeMarket;
|
|
726
|
+
/**
|
|
727
|
+
* Fetch all closed positions with pagination
|
|
728
|
+
*/
|
|
729
|
+
private fetchAllClosedPositions;
|
|
730
|
+
/**
|
|
731
|
+
* Calculate performance metrics from closed positions
|
|
732
|
+
*/
|
|
733
|
+
private calculatePerformanceMetricsFromClosed;
|
|
734
|
+
/**
|
|
735
|
+
* Calculate category distribution from closed positions
|
|
736
|
+
*/
|
|
737
|
+
private calculateCategoryDistributionFromClosed;
|
|
738
|
+
/**
|
|
739
|
+
* Calculate category distribution from current positions
|
|
740
|
+
*/
|
|
741
|
+
private calculateCategoryDistributionFromPositions;
|
|
742
|
+
/**
|
|
743
|
+
* Calculate category breakdown from activity trades
|
|
744
|
+
*/
|
|
745
|
+
private calculateCategoryBreakdownFromActivities;
|
|
746
|
+
/**
|
|
747
|
+
* Get top markets by PnL
|
|
748
|
+
*/
|
|
749
|
+
private getTopMarkets;
|
|
750
|
+
/**
|
|
751
|
+
* Get worst markets by PnL
|
|
752
|
+
*/
|
|
753
|
+
private getWorstMarkets;
|
|
754
|
+
/**
|
|
755
|
+
* Analyze trading patterns
|
|
756
|
+
*/
|
|
757
|
+
private analyzeTradingPatterns;
|
|
758
|
+
/**
|
|
759
|
+
* Build pie chart data
|
|
760
|
+
*/
|
|
761
|
+
private buildPieChart;
|
|
762
|
+
/**
|
|
763
|
+
* Format date as YYYY-MM-DD
|
|
764
|
+
*/
|
|
765
|
+
private formatDate;
|
|
766
|
+
private isCacheValid;
|
|
767
|
+
disconnect(): void;
|
|
768
|
+
}
|
|
769
|
+
//# sourceMappingURL=smart-money-service.d.ts.map
|