@catalyst-team/poly-sdk 0.1.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.
- package/.env +0 -0
- package/README.md +803 -0
- package/dist/__tests__/clob-api.test.d.ts +5 -0
- package/dist/__tests__/clob-api.test.d.ts.map +1 -0
- package/dist/__tests__/clob-api.test.js +240 -0
- package/dist/__tests__/clob-api.test.js.map +1 -0
- package/dist/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
- package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/bridge-client.integration.test.js +260 -0
- package/dist/__tests__/integration/bridge-client.integration.test.js.map +1 -0
- package/dist/__tests__/integration/clob-api.integration.test.d.ts +13 -0
- package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/clob-api.integration.test.js +170 -0
- package/dist/__tests__/integration/clob-api.integration.test.js.map +1 -0
- package/dist/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
- package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/ctf-client.integration.test.js +234 -0
- package/dist/__tests__/integration/ctf-client.integration.test.js.map +1 -0
- package/dist/__tests__/integration/data-api.integration.test.d.ts +9 -0
- package/dist/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/data-api.integration.test.js +161 -0
- package/dist/__tests__/integration/data-api.integration.test.js.map +1 -0
- package/dist/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
- package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/gamma-api.integration.test.js +170 -0
- package/dist/__tests__/integration/gamma-api.integration.test.js.map +1 -0
- package/dist/__tests__/test-utils.d.ts +92 -0
- package/dist/__tests__/test-utils.d.ts.map +1 -0
- package/dist/__tests__/test-utils.js +143 -0
- package/dist/__tests__/test-utils.js.map +1 -0
- package/dist/clients/bridge-client.d.ts +388 -0
- package/dist/clients/bridge-client.d.ts.map +1 -0
- package/dist/clients/bridge-client.js +587 -0
- package/dist/clients/bridge-client.js.map +1 -0
- package/dist/clients/clob-api.d.ts +318 -0
- package/dist/clients/clob-api.d.ts.map +1 -0
- package/dist/clients/clob-api.js +388 -0
- package/dist/clients/clob-api.js.map +1 -0
- package/dist/clients/ctf-client.d.ts +473 -0
- package/dist/clients/ctf-client.d.ts.map +1 -0
- package/dist/clients/ctf-client.js +915 -0
- package/dist/clients/ctf-client.js.map +1 -0
- package/dist/clients/data-api.d.ts +134 -0
- package/dist/clients/data-api.d.ts.map +1 -0
- package/dist/clients/data-api.js +265 -0
- package/dist/clients/data-api.js.map +1 -0
- package/dist/clients/gamma-api.d.ts +401 -0
- package/dist/clients/gamma-api.d.ts.map +1 -0
- package/dist/clients/gamma-api.js +352 -0
- package/dist/clients/gamma-api.js.map +1 -0
- package/dist/clients/trading-client.d.ts +252 -0
- package/dist/clients/trading-client.d.ts.map +1 -0
- package/dist/clients/trading-client.js +543 -0
- package/dist/clients/trading-client.js.map +1 -0
- package/dist/clients/websocket-manager.d.ts +100 -0
- package/dist/clients/websocket-manager.d.ts.map +1 -0
- package/dist/clients/websocket-manager.js +193 -0
- package/dist/clients/websocket-manager.js.map +1 -0
- package/dist/core/cache-adapter-bridge.d.ts +36 -0
- package/dist/core/cache-adapter-bridge.d.ts.map +1 -0
- package/dist/core/cache-adapter-bridge.js +81 -0
- package/dist/core/cache-adapter-bridge.js.map +1 -0
- package/dist/core/cache.d.ts +40 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +71 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/errors.d.ts +38 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +84 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +31 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +70 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/dist/core/types.d.ts +314 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +19 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/unified-cache.d.ts +63 -0
- package/dist/core/unified-cache.d.ts.map +1 -0
- package/dist/core/unified-cache.js +114 -0
- package/dist/core/unified-cache.js.map +1 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +258 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/errors.d.ts +33 -0
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +86 -0
- package/dist/mcp/errors.js.map +1 -0
- package/dist/mcp/index.d.ts +62 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +173 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +17 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +155 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/guide.d.ts +12 -0
- package/dist/mcp/tools/guide.d.ts.map +1 -0
- package/dist/mcp/tools/guide.js +801 -0
- package/dist/mcp/tools/guide.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +11 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +27 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/market.d.ts +11 -0
- package/dist/mcp/tools/market.d.ts.map +1 -0
- package/dist/mcp/tools/market.js +314 -0
- package/dist/mcp/tools/market.js.map +1 -0
- package/dist/mcp/tools/order.d.ts +10 -0
- package/dist/mcp/tools/order.d.ts.map +1 -0
- package/dist/mcp/tools/order.js +258 -0
- package/dist/mcp/tools/order.js.map +1 -0
- package/dist/mcp/tools/trade.d.ts +38 -0
- package/dist/mcp/tools/trade.d.ts.map +1 -0
- package/dist/mcp/tools/trade.js +314 -0
- package/dist/mcp/tools/trade.js.map +1 -0
- package/dist/mcp/tools/trader.d.ts +11 -0
- package/dist/mcp/tools/trader.d.ts.map +1 -0
- package/dist/mcp/tools/trader.js +277 -0
- package/dist/mcp/tools/trader.js.map +1 -0
- package/dist/mcp/tools/wallet.d.ts +274 -0
- package/dist/mcp/tools/wallet.d.ts.map +1 -0
- package/dist/mcp/tools/wallet.js +579 -0
- package/dist/mcp/tools/wallet.js.map +1 -0
- package/dist/mcp/types.d.ts +413 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +5 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/services/authorization-service.d.ts +97 -0
- package/dist/services/authorization-service.d.ts.map +1 -0
- package/dist/services/authorization-service.js +279 -0
- package/dist/services/authorization-service.js.map +1 -0
- package/dist/services/market-service.d.ts +108 -0
- package/dist/services/market-service.d.ts.map +1 -0
- package/dist/services/market-service.js +458 -0
- package/dist/services/market-service.js.map +1 -0
- package/dist/services/realtime-service.d.ts +82 -0
- package/dist/services/realtime-service.d.ts.map +1 -0
- package/dist/services/realtime-service.js +150 -0
- package/dist/services/realtime-service.js.map +1 -0
- package/dist/services/swap-service.d.ts +217 -0
- package/dist/services/swap-service.d.ts.map +1 -0
- package/dist/services/swap-service.js +695 -0
- package/dist/services/swap-service.js.map +1 -0
- package/dist/services/wallet-service.d.ts +94 -0
- package/dist/services/wallet-service.d.ts.map +1 -0
- package/dist/services/wallet-service.js +173 -0
- package/dist/services/wallet-service.js.map +1 -0
- package/dist/utils/price-utils.d.ts +153 -0
- package/dist/utils/price-utils.d.ts.map +1 -0
- package/dist/utils/price-utils.js +236 -0
- package/dist/utils/price-utils.js.map +1 -0
- package/docs/00-design.md +760 -0
- package/docs/01-mcp.md +2041 -0
- package/docs/02-API.md +1148 -0
- package/docs/e2e/01-trader-tools.md +159 -0
- package/docs/e2e/02-market-tools.md +180 -0
- package/docs/e2e/03-order-tools.md +166 -0
- package/docs/e2e/04-wallet-tools.md +224 -0
- package/docs/e2e/05-trading-tools.md +327 -0
- package/docs/e2e/06-integration-scenarios.md +481 -0
- package/docs/e2e/coordinator.md +376 -0
- package/examples/01-basic-usage.ts +68 -0
- package/examples/02-smart-money.ts +95 -0
- package/examples/03-market-analysis.ts +108 -0
- package/examples/04-kline-aggregation.ts +158 -0
- package/examples/05-follow-wallet-strategy.ts +156 -0
- package/examples/06-services-demo.ts +124 -0
- package/examples/07-realtime-websocket.ts +117 -0
- package/examples/08-trading-orders.ts +278 -0
- package/examples/09-rewards-tracking.ts +187 -0
- package/examples/10-ctf-operations.ts +336 -0
- package/examples/11-live-arbitrage-scan.ts +221 -0
- package/examples/12-trending-arb-monitor.ts +406 -0
- package/examples/README.md +179 -0
- package/package.json +62 -0
- package/scripts/README.md +163 -0
- package/scripts/approvals/approve-erc1155.ts +129 -0
- package/scripts/approvals/approve-neg-risk-erc1155.ts +149 -0
- package/scripts/approvals/approve-neg-risk.ts +102 -0
- package/scripts/approvals/check-all-allowances.ts +150 -0
- package/scripts/approvals/check-allowance.ts +129 -0
- package/scripts/approvals/check-ctf-approval.ts +158 -0
- package/scripts/datas/001-report.md +486 -0
- package/scripts/datas/clone-modal-screenshot.png +0 -0
- package/scripts/deposit/deposit-native-usdc.ts +179 -0
- package/scripts/deposit/deposit-usdc.ts +155 -0
- package/scripts/deposit/swap-usdc-to-usdce.ts +375 -0
- package/scripts/research/research-markets.ts +166 -0
- package/scripts/trading/check-orders.ts +50 -0
- package/scripts/trading/sell-nvidia-positions.ts +206 -0
- package/scripts/trading/test-order.ts +172 -0
- package/scripts/truth.md +440 -0
- package/scripts/verify/test-approve-trading.ts +98 -0
- package/scripts/verify/test-provider-fix.ts +43 -0
- package/scripts/verify/test-search-mcp.ts +113 -0
- package/scripts/verify/verify-all-apis.ts +160 -0
- package/scripts/wallet/check-wallet-balances.ts +75 -0
- package/scripts/wallet/test-wallet-operations.ts +191 -0
- package/scripts/wallet/verify-wallet-tools.ts +124 -0
- package/src/__tests__/clob-api.test.ts +301 -0
- package/src/__tests__/integration/bridge-client.integration.test.ts +314 -0
- package/src/__tests__/integration/clob-api.integration.test.ts +218 -0
- package/src/__tests__/integration/ctf-client.integration.test.ts +331 -0
- package/src/__tests__/integration/data-api.integration.test.ts +194 -0
- package/src/__tests__/integration/gamma-api.integration.test.ts +206 -0
- package/src/__tests__/test-utils.ts +170 -0
- package/src/clients/bridge-client.ts +841 -0
- package/src/clients/clob-api.ts +629 -0
- package/src/clients/ctf-client.ts +1216 -0
- package/src/clients/data-api.ts +469 -0
- package/src/clients/gamma-api.ts +597 -0
- package/src/clients/trading-client.ts +749 -0
- package/src/clients/websocket-manager.ts +267 -0
- package/src/core/cache-adapter-bridge.ts +94 -0
- package/src/core/cache.ts +85 -0
- package/src/core/errors.ts +117 -0
- package/src/core/rate-limiter.ts +74 -0
- package/src/core/types.ts +360 -0
- package/src/core/unified-cache.ts +153 -0
- package/src/index.ts +455 -0
- package/src/mcp/README.md +380 -0
- package/src/mcp/errors.ts +124 -0
- package/src/mcp/index.ts +309 -0
- package/src/mcp/server.ts +183 -0
- package/src/mcp/tools/guide.ts +821 -0
- package/src/mcp/tools/index.ts +73 -0
- package/src/mcp/tools/market.ts +363 -0
- package/src/mcp/tools/order.ts +326 -0
- package/src/mcp/tools/trade.ts +417 -0
- package/src/mcp/tools/trader.ts +322 -0
- package/src/mcp/tools/wallet.ts +683 -0
- package/src/mcp/types.ts +472 -0
- package/src/services/authorization-service.ts +357 -0
- package/src/services/market-service.ts +544 -0
- package/src/services/realtime-service.ts +196 -0
- package/src/services/swap-service.ts +896 -0
- package/src/services/wallet-service.ts +259 -0
- package/src/utils/price-utils.ts +307 -0
- package/tsconfig.json +8 -0
- package/vitest.config.ts +19 -0
- package/vitest.integration.config.ts +18 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prediction-router/poly-sdk
|
|
3
|
+
*
|
|
4
|
+
* Unified SDK for Polymarket APIs
|
|
5
|
+
* - Data API (positions, activity, trades, leaderboard)
|
|
6
|
+
* - Gamma API (markets, events, trending)
|
|
7
|
+
* - CLOB API (orderbook, market info, trading)
|
|
8
|
+
* - Services (WalletService, MarketService)
|
|
9
|
+
*/
|
|
10
|
+
export { RateLimiter, ApiType } from './core/rate-limiter.js';
|
|
11
|
+
export { Cache, CACHE_TTL } from './core/cache.js';
|
|
12
|
+
export { PolymarketError, ErrorCode, withRetry } from './core/errors.js';
|
|
13
|
+
export * from './core/types.js';
|
|
14
|
+
export type { UnifiedCache } from './core/unified-cache.js';
|
|
15
|
+
export { createUnifiedCache } from './core/unified-cache.js';
|
|
16
|
+
export { DataApiClient } from './clients/data-api.js';
|
|
17
|
+
export type { Position, Activity, Trade, LeaderboardEntry, LeaderboardPage, } from './clients/data-api.js';
|
|
18
|
+
export { GammaApiClient } from './clients/gamma-api.js';
|
|
19
|
+
export type { GammaMarket, GammaEvent, MarketSearchParams, } from './clients/gamma-api.js';
|
|
20
|
+
export { ClobApiClient } from './clients/clob-api.js';
|
|
21
|
+
export type { ClobMarket, ClobToken, Orderbook, OrderbookLevel, } from './clients/clob-api.js';
|
|
22
|
+
export { WalletService } from './services/wallet-service.js';
|
|
23
|
+
export type { WalletProfile, WalletActivitySummary, SellActivityResult, } from './services/wallet-service.js';
|
|
24
|
+
export { MarketService, getIntervalMs as getIntervalMsService } from './services/market-service.js';
|
|
25
|
+
export { WebSocketManager } from './clients/websocket-manager.js';
|
|
26
|
+
export type { WebSocketManagerConfig, WebSocketManagerEvents } from './clients/websocket-manager.js';
|
|
27
|
+
export { RealtimeService } from './services/realtime-service.js';
|
|
28
|
+
export type { Subscription, MarketSubscriptionHandlers } from './services/realtime-service.js';
|
|
29
|
+
export { TradingClient, POLYGON_MAINNET, POLYGON_AMOY } from './clients/trading-client.js';
|
|
30
|
+
export type { Side, OrderType, ApiCredentials, OrderParams, MarketOrderParams, Order, OrderResult, TradeInfo, TradingClientConfig, UserEarning, MarketReward, OrderScoring, } from './clients/trading-client.js';
|
|
31
|
+
export { CTFClient, CTF_CONTRACT, USDC_CONTRACT, // USDC.e (0x2791...) - Required for CTF
|
|
32
|
+
NATIVE_USDC_CONTRACT, // Native USDC (0x3c49...) - NOT for CTF
|
|
33
|
+
NEG_RISK_CTF_EXCHANGE, NEG_RISK_ADAPTER, USDC_DECIMALS, calculateConditionId, parseUsdc, formatUsdc, } from './clients/ctf-client.js';
|
|
34
|
+
export type { CTFConfig, SplitResult, MergeResult, RedeemResult, PositionBalance, MarketResolution, GasEstimate, TransactionStatus, TokenIds, } from './clients/ctf-client.js';
|
|
35
|
+
export { RevertReason } from './clients/ctf-client.js';
|
|
36
|
+
export { BridgeClient, SUPPORTED_CHAINS, BRIDGE_TOKENS, estimateBridgeOutput, getExplorerUrl, depositUsdc, swapAndDeposit, getSupportedDepositTokens, } from './clients/bridge-client.js';
|
|
37
|
+
export type { BridgeSupportedAsset, DepositAddress, CreateDepositResponse, DepositStatus, BridgeConfig, DepositResult, DepositOptions, SwapAndDepositOptions, SwapAndDepositResult, } from './clients/bridge-client.js';
|
|
38
|
+
export { SwapService, QUICKSWAP_ROUTER, POLYGON_TOKENS, TOKEN_DECIMALS, } from './services/swap-service.js';
|
|
39
|
+
export type { SupportedToken, SwapQuote, SwapResult, TokenBalance, TransferResult, } from './services/swap-service.js';
|
|
40
|
+
export { AuthorizationService } from './services/authorization-service.js';
|
|
41
|
+
export type { AllowanceInfo, AllowancesResult, ApprovalTxResult, ApprovalsResult, AuthorizationServiceConfig, } from './services/authorization-service.js';
|
|
42
|
+
export { roundPrice, roundSize, validatePrice, validateSize, calculateBuyAmount, calculateSellPayout, calculateSharesForAmount, calculateSpread, calculateMidpoint, formatPrice, formatUSDC, calculatePnL, checkArbitrage, getEffectivePrices, ROUNDING_CONFIG, } from './utils/price-utils.js';
|
|
43
|
+
export type { TickSize } from './utils/price-utils.js';
|
|
44
|
+
export { createMcpHandler, registerMcpTools, getToolDefinitions, allToolDefinitions, } from './mcp/index.js';
|
|
45
|
+
export type { ToolHandler, ToolDefinition, McpErrorResponse, } from './mcp/index.js';
|
|
46
|
+
export { McpToolError, ErrorCode as McpErrorCode } from './mcp/errors.js';
|
|
47
|
+
import { DataApiClient } from './clients/data-api.js';
|
|
48
|
+
import { GammaApiClient } from './clients/gamma-api.js';
|
|
49
|
+
import { ClobApiClient } from './clients/clob-api.js';
|
|
50
|
+
import { WalletService } from './services/wallet-service.js';
|
|
51
|
+
import { MarketService } from './services/market-service.js';
|
|
52
|
+
import type { UnifiedMarket, ProcessedOrderbook, ArbitrageOpportunity, PolySDKOptions } from './core/types.js';
|
|
53
|
+
export interface PolymarketSDKConfig extends PolySDKOptions {
|
|
54
|
+
}
|
|
55
|
+
export declare class PolymarketSDK {
|
|
56
|
+
private rateLimiter;
|
|
57
|
+
private cache;
|
|
58
|
+
readonly dataApi: DataApiClient;
|
|
59
|
+
readonly gammaApi: GammaApiClient;
|
|
60
|
+
readonly clobApi: ClobApiClient;
|
|
61
|
+
readonly wallets: WalletService;
|
|
62
|
+
readonly markets: MarketService;
|
|
63
|
+
constructor(config?: PolymarketSDKConfig);
|
|
64
|
+
/**
|
|
65
|
+
* Get market by slug or condition ID
|
|
66
|
+
* Uses Gamma for slug, CLOB for conditionId
|
|
67
|
+
*/
|
|
68
|
+
getMarket(identifier: string): Promise<UnifiedMarket>;
|
|
69
|
+
private getMarketBySlug;
|
|
70
|
+
private getMarketByConditionId;
|
|
71
|
+
/**
|
|
72
|
+
* Get processed orderbook with analytics
|
|
73
|
+
*/
|
|
74
|
+
getOrderbook(conditionId: string): Promise<ProcessedOrderbook>;
|
|
75
|
+
/**
|
|
76
|
+
* Detect arbitrage opportunity
|
|
77
|
+
*
|
|
78
|
+
* 使用有效价格计算套利机会(正确考虑镜像订单)
|
|
79
|
+
* 详细文档见: docs/01-polymarket-orderbook-arbitrage.md
|
|
80
|
+
*/
|
|
81
|
+
detectArbitrage(conditionId: string, threshold?: number): Promise<ArbitrageOpportunity | null>;
|
|
82
|
+
private mergeMarkets;
|
|
83
|
+
private fromGammaMarket;
|
|
84
|
+
private fromClobMarket;
|
|
85
|
+
/**
|
|
86
|
+
* Clear all cached data
|
|
87
|
+
*/
|
|
88
|
+
clearCache(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Invalidate cache for a specific market
|
|
91
|
+
*/
|
|
92
|
+
invalidateMarketCache(conditionId: string): void;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @prediction-router/poly-sdk
|
|
3
|
+
*
|
|
4
|
+
* Unified SDK for Polymarket APIs
|
|
5
|
+
* - Data API (positions, activity, trades, leaderboard)
|
|
6
|
+
* - Gamma API (markets, events, trending)
|
|
7
|
+
* - CLOB API (orderbook, market info, trading)
|
|
8
|
+
* - Services (WalletService, MarketService)
|
|
9
|
+
*/
|
|
10
|
+
// Core infrastructure
|
|
11
|
+
export { RateLimiter, ApiType } from './core/rate-limiter.js';
|
|
12
|
+
export { Cache, CACHE_TTL } from './core/cache.js';
|
|
13
|
+
export { PolymarketError, ErrorCode, withRetry } from './core/errors.js';
|
|
14
|
+
export * from './core/types.js';
|
|
15
|
+
export { createUnifiedCache } from './core/unified-cache.js';
|
|
16
|
+
// API Clients
|
|
17
|
+
export { DataApiClient } from './clients/data-api.js';
|
|
18
|
+
export { GammaApiClient } from './clients/gamma-api.js';
|
|
19
|
+
export { ClobApiClient } from './clients/clob-api.js';
|
|
20
|
+
// Services
|
|
21
|
+
export { WalletService } from './services/wallet-service.js';
|
|
22
|
+
export { MarketService, getIntervalMs as getIntervalMsService } from './services/market-service.js';
|
|
23
|
+
// Real-time
|
|
24
|
+
export { WebSocketManager } from './clients/websocket-manager.js';
|
|
25
|
+
export { RealtimeService } from './services/realtime-service.js';
|
|
26
|
+
// NOTE: ArbitrageService has been moved to @prediction-router/arb package
|
|
27
|
+
// See packages/arb/src/services/arbitrage-service.ts
|
|
28
|
+
// Trading
|
|
29
|
+
export { TradingClient, POLYGON_MAINNET, POLYGON_AMOY } from './clients/trading-client.js';
|
|
30
|
+
// CTF (Conditional Token Framework)
|
|
31
|
+
// NOTE: USDC_CONTRACT is USDC.e (bridged), required for Polymarket CTF
|
|
32
|
+
// NATIVE_USDC_CONTRACT is native USDC, NOT compatible with CTF
|
|
33
|
+
export { CTFClient, CTF_CONTRACT, USDC_CONTRACT, // USDC.e (0x2791...) - Required for CTF
|
|
34
|
+
NATIVE_USDC_CONTRACT, // Native USDC (0x3c49...) - NOT for CTF
|
|
35
|
+
NEG_RISK_CTF_EXCHANGE, NEG_RISK_ADAPTER, USDC_DECIMALS, calculateConditionId, parseUsdc, formatUsdc, } from './clients/ctf-client.js';
|
|
36
|
+
export { RevertReason } from './clients/ctf-client.js';
|
|
37
|
+
// Bridge (Cross-chain Deposits)
|
|
38
|
+
export { BridgeClient, SUPPORTED_CHAINS, BRIDGE_TOKENS, estimateBridgeOutput, getExplorerUrl, depositUsdc, swapAndDeposit, getSupportedDepositTokens, } from './clients/bridge-client.js';
|
|
39
|
+
// Swap Service (DEX swaps on Polygon)
|
|
40
|
+
export { SwapService, QUICKSWAP_ROUTER, POLYGON_TOKENS, TOKEN_DECIMALS, } from './services/swap-service.js';
|
|
41
|
+
// Authorization (ERC20/ERC1155 Approvals)
|
|
42
|
+
export { AuthorizationService } from './services/authorization-service.js';
|
|
43
|
+
// Price Utilities
|
|
44
|
+
export { roundPrice, roundSize, validatePrice, validateSize, calculateBuyAmount, calculateSellPayout, calculateSharesForAmount, calculateSpread, calculateMidpoint, formatPrice, formatUSDC, calculatePnL, checkArbitrage, getEffectivePrices, ROUNDING_CONFIG, } from './utils/price-utils.js';
|
|
45
|
+
// NOTE: ArbitrageService has been moved to @prediction-router/arb package
|
|
46
|
+
// See packages/arb/src/services/arbitrage-service.ts
|
|
47
|
+
// MCP (Model Context Protocol) Tools
|
|
48
|
+
export { createMcpHandler, registerMcpTools, getToolDefinitions, allToolDefinitions, } from './mcp/index.js';
|
|
49
|
+
export { McpToolError, ErrorCode as McpErrorCode } from './mcp/errors.js';
|
|
50
|
+
// ===== Main SDK Class =====
|
|
51
|
+
import { RateLimiter } from './core/rate-limiter.js';
|
|
52
|
+
import { DataApiClient } from './clients/data-api.js';
|
|
53
|
+
import { GammaApiClient } from './clients/gamma-api.js';
|
|
54
|
+
import { ClobApiClient } from './clients/clob-api.js';
|
|
55
|
+
import { WalletService } from './services/wallet-service.js';
|
|
56
|
+
import { MarketService } from './services/market-service.js';
|
|
57
|
+
import { PolymarketError, ErrorCode } from './core/errors.js';
|
|
58
|
+
import { createUnifiedCache } from './core/unified-cache.js';
|
|
59
|
+
export class PolymarketSDK {
|
|
60
|
+
// Infrastructure
|
|
61
|
+
rateLimiter;
|
|
62
|
+
cache;
|
|
63
|
+
// API Clients
|
|
64
|
+
dataApi;
|
|
65
|
+
gammaApi;
|
|
66
|
+
clobApi;
|
|
67
|
+
// Services
|
|
68
|
+
wallets;
|
|
69
|
+
markets;
|
|
70
|
+
constructor(config = {}) {
|
|
71
|
+
// Initialize infrastructure
|
|
72
|
+
this.rateLimiter = new RateLimiter();
|
|
73
|
+
// Create unified cache (supports both legacy Cache and CacheAdapter)
|
|
74
|
+
this.cache = createUnifiedCache(config.cache);
|
|
75
|
+
// Initialize API clients
|
|
76
|
+
this.dataApi = new DataApiClient(this.rateLimiter, this.cache);
|
|
77
|
+
this.gammaApi = new GammaApiClient(this.rateLimiter, this.cache);
|
|
78
|
+
this.clobApi = new ClobApiClient(this.rateLimiter, this.cache, {
|
|
79
|
+
chainId: config.chainId,
|
|
80
|
+
signer: config.signer,
|
|
81
|
+
creds: config.creds,
|
|
82
|
+
});
|
|
83
|
+
// Initialize services
|
|
84
|
+
this.wallets = new WalletService(this.dataApi, this.cache);
|
|
85
|
+
this.markets = new MarketService(this.gammaApi, this.clobApi, this.dataApi, this.cache);
|
|
86
|
+
}
|
|
87
|
+
// ===== Unified Market Access =====
|
|
88
|
+
/**
|
|
89
|
+
* Get market by slug or condition ID
|
|
90
|
+
* Uses Gamma for slug, CLOB for conditionId
|
|
91
|
+
*/
|
|
92
|
+
async getMarket(identifier) {
|
|
93
|
+
const isConditionId = identifier.startsWith('0x') || /^\d+$/.test(identifier);
|
|
94
|
+
if (isConditionId) {
|
|
95
|
+
return this.getMarketByConditionId(identifier);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
return this.getMarketBySlug(identifier);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async getMarketBySlug(slug) {
|
|
102
|
+
// Gamma as primary source for slug
|
|
103
|
+
const gammaMarket = await this.gammaApi.getMarketBySlug(slug);
|
|
104
|
+
if (!gammaMarket) {
|
|
105
|
+
throw new PolymarketError(ErrorCode.MARKET_NOT_FOUND, `Market not found: ${slug}`);
|
|
106
|
+
}
|
|
107
|
+
// Enrich with CLOB data
|
|
108
|
+
try {
|
|
109
|
+
const clobMarket = await this.clobApi.getMarket(gammaMarket.conditionId);
|
|
110
|
+
return this.mergeMarkets(gammaMarket, clobMarket);
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return this.fromGammaMarket(gammaMarket);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async getMarketByConditionId(conditionId) {
|
|
117
|
+
// CLOB as primary source for conditionId (more reliable)
|
|
118
|
+
try {
|
|
119
|
+
const clobMarket = await this.clobApi.getMarket(conditionId);
|
|
120
|
+
// Try to enrich with Gamma data
|
|
121
|
+
try {
|
|
122
|
+
const gammaMarket = await this.gammaApi.getMarketByConditionId(conditionId);
|
|
123
|
+
if (gammaMarket) {
|
|
124
|
+
return this.mergeMarkets(gammaMarket, clobMarket);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Gamma enrichment failed, use CLOB only
|
|
129
|
+
}
|
|
130
|
+
return this.fromClobMarket(clobMarket);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
throw new PolymarketError(ErrorCode.MARKET_NOT_FOUND, `Market not found: ${conditionId}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ===== Orderbook Analysis =====
|
|
137
|
+
/**
|
|
138
|
+
* Get processed orderbook with analytics
|
|
139
|
+
*/
|
|
140
|
+
async getOrderbook(conditionId) {
|
|
141
|
+
return this.clobApi.getProcessedOrderbook(conditionId);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Detect arbitrage opportunity
|
|
145
|
+
*
|
|
146
|
+
* 使用有效价格计算套利机会(正确考虑镜像订单)
|
|
147
|
+
* 详细文档见: docs/01-polymarket-orderbook-arbitrage.md
|
|
148
|
+
*/
|
|
149
|
+
async detectArbitrage(conditionId, threshold = 0.005) {
|
|
150
|
+
const orderbook = await this.getOrderbook(conditionId);
|
|
151
|
+
const { effectivePrices, longArbProfit, shortArbProfit } = orderbook.summary;
|
|
152
|
+
if (longArbProfit > threshold) {
|
|
153
|
+
return {
|
|
154
|
+
type: 'long',
|
|
155
|
+
profit: longArbProfit,
|
|
156
|
+
action: `Buy YES @ ${effectivePrices.effectiveBuyYes.toFixed(4)} + Buy NO @ ${effectivePrices.effectiveBuyNo.toFixed(4)}, merge for 1 USDC`,
|
|
157
|
+
expectedProfit: longArbProfit,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (shortArbProfit > threshold) {
|
|
161
|
+
return {
|
|
162
|
+
type: 'short',
|
|
163
|
+
profit: shortArbProfit,
|
|
164
|
+
action: `Split 1 USDC, Sell YES @ ${effectivePrices.effectiveSellYes.toFixed(4)} + Sell NO @ ${effectivePrices.effectiveSellNo.toFixed(4)}`,
|
|
165
|
+
expectedProfit: shortArbProfit,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
// ===== Helper Methods =====
|
|
171
|
+
mergeMarkets(gamma, clob) {
|
|
172
|
+
const yesToken = clob.tokens.find((t) => t.outcome === 'Yes');
|
|
173
|
+
const noToken = clob.tokens.find((t) => t.outcome === 'No');
|
|
174
|
+
return {
|
|
175
|
+
conditionId: clob.conditionId,
|
|
176
|
+
slug: gamma.slug,
|
|
177
|
+
question: clob.question,
|
|
178
|
+
description: clob.description || gamma.description,
|
|
179
|
+
tokens: {
|
|
180
|
+
yes: {
|
|
181
|
+
tokenId: yesToken?.tokenId || '',
|
|
182
|
+
price: yesToken?.price || gamma.outcomePrices[0] || 0.5,
|
|
183
|
+
},
|
|
184
|
+
no: {
|
|
185
|
+
tokenId: noToken?.tokenId || '',
|
|
186
|
+
price: noToken?.price || gamma.outcomePrices[1] || 0.5,
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
volume: gamma.volume,
|
|
190
|
+
volume24hr: gamma.volume24hr,
|
|
191
|
+
liquidity: gamma.liquidity,
|
|
192
|
+
spread: gamma.spread,
|
|
193
|
+
active: clob.active,
|
|
194
|
+
closed: clob.closed,
|
|
195
|
+
acceptingOrders: clob.acceptingOrders,
|
|
196
|
+
endDate: clob.endDateIso ? new Date(clob.endDateIso) : new Date(),
|
|
197
|
+
source: 'merged',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
fromGammaMarket(gamma) {
|
|
201
|
+
return {
|
|
202
|
+
conditionId: gamma.conditionId,
|
|
203
|
+
slug: gamma.slug,
|
|
204
|
+
question: gamma.question,
|
|
205
|
+
description: gamma.description,
|
|
206
|
+
tokens: {
|
|
207
|
+
yes: { tokenId: '', price: gamma.outcomePrices[0] || 0.5 },
|
|
208
|
+
no: { tokenId: '', price: gamma.outcomePrices[1] || 0.5 },
|
|
209
|
+
},
|
|
210
|
+
volume: gamma.volume,
|
|
211
|
+
volume24hr: gamma.volume24hr,
|
|
212
|
+
liquidity: gamma.liquidity,
|
|
213
|
+
spread: gamma.spread,
|
|
214
|
+
active: gamma.active,
|
|
215
|
+
closed: gamma.closed,
|
|
216
|
+
acceptingOrders: !gamma.closed,
|
|
217
|
+
endDate: gamma.endDate,
|
|
218
|
+
source: 'gamma',
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
fromClobMarket(clob) {
|
|
222
|
+
const yesToken = clob.tokens.find((t) => t.outcome === 'Yes');
|
|
223
|
+
const noToken = clob.tokens.find((t) => t.outcome === 'No');
|
|
224
|
+
return {
|
|
225
|
+
conditionId: clob.conditionId,
|
|
226
|
+
slug: clob.marketSlug,
|
|
227
|
+
question: clob.question,
|
|
228
|
+
description: clob.description,
|
|
229
|
+
tokens: {
|
|
230
|
+
yes: { tokenId: yesToken?.tokenId || '', price: yesToken?.price || 0.5 },
|
|
231
|
+
no: { tokenId: noToken?.tokenId || '', price: noToken?.price || 0.5 },
|
|
232
|
+
},
|
|
233
|
+
volume: 0, // CLOB doesn't have volume
|
|
234
|
+
volume24hr: undefined,
|
|
235
|
+
liquidity: 0,
|
|
236
|
+
spread: undefined,
|
|
237
|
+
active: clob.active,
|
|
238
|
+
closed: clob.closed,
|
|
239
|
+
acceptingOrders: clob.acceptingOrders,
|
|
240
|
+
endDate: clob.endDateIso ? new Date(clob.endDateIso) : new Date(),
|
|
241
|
+
source: 'clob',
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
// ===== Cache Management =====
|
|
245
|
+
/**
|
|
246
|
+
* Clear all cached data
|
|
247
|
+
*/
|
|
248
|
+
clearCache() {
|
|
249
|
+
this.cache.clear();
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Invalidate cache for a specific market
|
|
253
|
+
*/
|
|
254
|
+
invalidateMarketCache(conditionId) {
|
|
255
|
+
this.cache.invalidate(conditionId);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Error Handling for Polymarket Tools
|
|
3
|
+
*/
|
|
4
|
+
export declare enum ErrorCode {
|
|
5
|
+
INVALID_ADDRESS = "INVALID_ADDRESS",
|
|
6
|
+
MARKET_NOT_FOUND = "MARKET_NOT_FOUND",
|
|
7
|
+
INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
|
|
8
|
+
ORDER_REJECTED = "ORDER_REJECTED",
|
|
9
|
+
RATE_LIMITED = "RATE_LIMITED",
|
|
10
|
+
AUTH_REQUIRED = "AUTH_REQUIRED",
|
|
11
|
+
INVALID_INPUT = "INVALID_INPUT",
|
|
12
|
+
INTERNAL_ERROR = "INTERNAL_ERROR"
|
|
13
|
+
}
|
|
14
|
+
export declare class McpToolError extends Error {
|
|
15
|
+
code: ErrorCode;
|
|
16
|
+
details?: Record<string, unknown> | undefined;
|
|
17
|
+
constructor(code: ErrorCode, message: string, details?: Record<string, unknown> | undefined);
|
|
18
|
+
toResponse(): {
|
|
19
|
+
error: {
|
|
20
|
+
code: ErrorCode;
|
|
21
|
+
message: string;
|
|
22
|
+
details: Record<string, unknown> | undefined;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export declare function validateAddress(address: string): void;
|
|
27
|
+
export declare function validateConditionId(conditionId: string): void;
|
|
28
|
+
export declare function validateOutcome(outcome: string): void;
|
|
29
|
+
export declare function validateSide(side: string): void;
|
|
30
|
+
export declare function validatePrice(price: number): void;
|
|
31
|
+
export declare function validatePositiveNumber(value: number, name: string): void;
|
|
32
|
+
export declare function wrapError(err: unknown): McpToolError;
|
|
33
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,SAAS;IACnB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;CAClC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAM1C,UAAU;;;;;;;CASX;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAcrD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAepD"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Error Handling for Polymarket Tools
|
|
3
|
+
*/
|
|
4
|
+
export var ErrorCode;
|
|
5
|
+
(function (ErrorCode) {
|
|
6
|
+
ErrorCode["INVALID_ADDRESS"] = "INVALID_ADDRESS";
|
|
7
|
+
ErrorCode["MARKET_NOT_FOUND"] = "MARKET_NOT_FOUND";
|
|
8
|
+
ErrorCode["INSUFFICIENT_BALANCE"] = "INSUFFICIENT_BALANCE";
|
|
9
|
+
ErrorCode["ORDER_REJECTED"] = "ORDER_REJECTED";
|
|
10
|
+
ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
|
|
11
|
+
ErrorCode["AUTH_REQUIRED"] = "AUTH_REQUIRED";
|
|
12
|
+
ErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
|
|
13
|
+
ErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
14
|
+
})(ErrorCode || (ErrorCode = {}));
|
|
15
|
+
export class McpToolError extends Error {
|
|
16
|
+
code;
|
|
17
|
+
details;
|
|
18
|
+
constructor(code, message, details) {
|
|
19
|
+
super(message);
|
|
20
|
+
this.code = code;
|
|
21
|
+
this.details = details;
|
|
22
|
+
this.name = 'McpToolError';
|
|
23
|
+
}
|
|
24
|
+
toResponse() {
|
|
25
|
+
return {
|
|
26
|
+
error: {
|
|
27
|
+
code: this.code,
|
|
28
|
+
message: this.message,
|
|
29
|
+
details: this.details,
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function validateAddress(address) {
|
|
35
|
+
if (!address || typeof address !== 'string') {
|
|
36
|
+
throw new McpToolError(ErrorCode.INVALID_ADDRESS, 'Address is required');
|
|
37
|
+
}
|
|
38
|
+
if (!address.startsWith('0x') || address.length !== 42) {
|
|
39
|
+
throw new McpToolError(ErrorCode.INVALID_ADDRESS, 'Address must be a valid Ethereum address (0x...)', { address });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function validateConditionId(conditionId) {
|
|
43
|
+
if (!conditionId || typeof conditionId !== 'string') {
|
|
44
|
+
throw new McpToolError(ErrorCode.INVALID_INPUT, 'Condition ID is required');
|
|
45
|
+
}
|
|
46
|
+
if (!conditionId.startsWith('0x')) {
|
|
47
|
+
throw new McpToolError(ErrorCode.INVALID_INPUT, 'Condition ID must start with 0x', { conditionId });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function validateOutcome(outcome) {
|
|
51
|
+
if (!['Yes', 'No'].includes(outcome)) {
|
|
52
|
+
throw new McpToolError(ErrorCode.INVALID_INPUT, 'Outcome must be "Yes" or "No"', { outcome });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function validateSide(side) {
|
|
56
|
+
if (!['BUY', 'SELL'].includes(side)) {
|
|
57
|
+
throw new McpToolError(ErrorCode.INVALID_INPUT, 'Side must be "BUY" or "SELL"', { side });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function validatePrice(price) {
|
|
61
|
+
if (typeof price !== 'number' || price < 0.001 || price > 0.999) {
|
|
62
|
+
throw new McpToolError(ErrorCode.INVALID_INPUT, 'Price must be between 0.001 and 0.999', { price });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function validatePositiveNumber(value, name) {
|
|
66
|
+
if (typeof value !== 'number' || value <= 0) {
|
|
67
|
+
throw new McpToolError(ErrorCode.INVALID_INPUT, `${name} must be a positive number`, { [name]: value });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function wrapError(err) {
|
|
71
|
+
if (err instanceof McpToolError) {
|
|
72
|
+
return err;
|
|
73
|
+
}
|
|
74
|
+
if (err instanceof Error) {
|
|
75
|
+
// Check for known error types
|
|
76
|
+
if (err.message.includes('rate limit')) {
|
|
77
|
+
return new McpToolError(ErrorCode.RATE_LIMITED, 'Rate limit exceeded');
|
|
78
|
+
}
|
|
79
|
+
if (err.message.includes('not found')) {
|
|
80
|
+
return new McpToolError(ErrorCode.MARKET_NOT_FOUND, err.message);
|
|
81
|
+
}
|
|
82
|
+
return new McpToolError(ErrorCode.INTERNAL_ERROR, err.message);
|
|
83
|
+
}
|
|
84
|
+
return new McpToolError(ErrorCode.INTERNAL_ERROR, 'An unexpected error occurred');
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Polymarket MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* This module provides MCP (Model Context Protocol) tools for interacting with Polymarket.
|
|
5
|
+
* It can be used to build an MCP server that exposes Polymarket functionality to AI agents.
|
|
6
|
+
*
|
|
7
|
+
* Tool Categories:
|
|
8
|
+
* - Trader Tools: Analyze traders/wallets (positions, trades, profiles, leaderboard)
|
|
9
|
+
* - Market Tools: Discover and analyze markets (get, search, trending, trades)
|
|
10
|
+
* - Order Tools: Analyze orderbooks (depth, best prices, execution estimates)
|
|
11
|
+
* - Trade Tools: Execute trades (limit orders, market orders) - requires API credentials
|
|
12
|
+
* - Wallet Tools: Deposits and authorization management
|
|
13
|
+
*
|
|
14
|
+
* Usage:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { PolymarketSDK } from '@prediction-router/poly-sdk';
|
|
17
|
+
* import { createMcpHandler, allToolDefinitions } from '@prediction-router/poly-sdk/mcp';
|
|
18
|
+
*
|
|
19
|
+
* const sdk = new PolymarketSDK();
|
|
20
|
+
* const handler = createMcpHandler(sdk);
|
|
21
|
+
*
|
|
22
|
+
* // Use with MCP server
|
|
23
|
+
* const result = await handler('get_trader_positions', { address: '0x...' });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import { PolymarketSDK } from '../index.js';
|
|
27
|
+
export * from './types.js';
|
|
28
|
+
export * from './errors.js';
|
|
29
|
+
export { allToolDefinitions } from './tools/index.js';
|
|
30
|
+
export type ToolHandler = (toolName: string, args: Record<string, unknown>) => Promise<unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* Create an MCP tool handler for the given SDK instance
|
|
33
|
+
*/
|
|
34
|
+
export declare function createMcpHandler(sdk: PolymarketSDK): ToolHandler;
|
|
35
|
+
/**
|
|
36
|
+
* Get all tool definitions for MCP registration
|
|
37
|
+
*/
|
|
38
|
+
export declare function getToolDefinitions(): import("./types.js").ToolDefinition[];
|
|
39
|
+
/**
|
|
40
|
+
* MCP Server factory (for use with @modelcontextprotocol/sdk)
|
|
41
|
+
*
|
|
42
|
+
* Example usage with MCP SDK:
|
|
43
|
+
* ```typescript
|
|
44
|
+
* import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
45
|
+
* import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
46
|
+
* import { PolymarketSDK } from '@prediction-router/poly-sdk';
|
|
47
|
+
* import { registerMcpTools } from '@prediction-router/poly-sdk/mcp';
|
|
48
|
+
*
|
|
49
|
+
* const server = new Server(
|
|
50
|
+
* { name: 'poly-mcp', version: '1.0.0' },
|
|
51
|
+
* { capabilities: { tools: {} } }
|
|
52
|
+
* );
|
|
53
|
+
*
|
|
54
|
+
* const sdk = new PolymarketSDK();
|
|
55
|
+
* registerMcpTools(server, sdk);
|
|
56
|
+
*
|
|
57
|
+
* const transport = new StdioServerTransport();
|
|
58
|
+
* await server.connect(transport);
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function registerMcpTools(server: any, sdk: PolymarketSDK): void;
|
|
62
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,MAAM,WAAW,GAAG,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAwKhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,0CAEjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAE9B,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,aAAa,GACjB,IAAI,CA0BN"}
|