@zebpay_rajesh/zebpay-mcp-server 1.0.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.
Files changed (72) hide show
  1. package/.env.example +14 -0
  2. package/README.md +223 -0
  3. package/dist/config.d.ts +19 -0
  4. package/dist/config.js +81 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/http/httpClient.d.ts +40 -0
  7. package/dist/http/httpClient.js +341 -0
  8. package/dist/http/httpClient.js.map +1 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.js +60 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/mcp/errors.d.ts +21 -0
  13. package/dist/mcp/errors.js +214 -0
  14. package/dist/mcp/errors.js.map +1 -0
  15. package/dist/mcp/logging.d.ts +21 -0
  16. package/dist/mcp/logging.js +241 -0
  17. package/dist/mcp/logging.js.map +1 -0
  18. package/dist/mcp/prompts.d.ts +9 -0
  19. package/dist/mcp/prompts.js +165 -0
  20. package/dist/mcp/prompts.js.map +1 -0
  21. package/dist/mcp/resources.d.ts +9 -0
  22. package/dist/mcp/resources.js +125 -0
  23. package/dist/mcp/resources.js.map +1 -0
  24. package/dist/mcp/tools_futures.d.ts +5 -0
  25. package/dist/mcp/tools_futures.js +694 -0
  26. package/dist/mcp/tools_futures.js.map +1 -0
  27. package/dist/mcp/tools_spot.d.ts +11 -0
  28. package/dist/mcp/tools_spot.js +2225 -0
  29. package/dist/mcp/tools_spot.js.map +1 -0
  30. package/dist/private/FuturesClient.d.ts +57 -0
  31. package/dist/private/FuturesClient.js +181 -0
  32. package/dist/private/FuturesClient.js.map +1 -0
  33. package/dist/private/SpotClient.d.ts +44 -0
  34. package/dist/private/SpotClient.js +201 -0
  35. package/dist/private/SpotClient.js.map +1 -0
  36. package/dist/private/ZebpayAPI.d.ts +19 -0
  37. package/dist/private/ZebpayAPI.js +172 -0
  38. package/dist/private/ZebpayAPI.js.map +1 -0
  39. package/dist/public/PublicClient.d.ts +79 -0
  40. package/dist/public/PublicClient.js +283 -0
  41. package/dist/public/PublicClient.js.map +1 -0
  42. package/dist/public/PublicFuturesClient.d.ts +27 -0
  43. package/dist/public/PublicFuturesClient.js +187 -0
  44. package/dist/public/PublicFuturesClient.js.map +1 -0
  45. package/dist/security/credentials.d.ts +42 -0
  46. package/dist/security/credentials.js +80 -0
  47. package/dist/security/credentials.js.map +1 -0
  48. package/dist/security/signing.d.ts +33 -0
  49. package/dist/security/signing.js +56 -0
  50. package/dist/security/signing.js.map +1 -0
  51. package/dist/types/responses.d.ts +130 -0
  52. package/dist/types/responses.js +6 -0
  53. package/dist/types/responses.js.map +1 -0
  54. package/dist/utils/cache.d.ts +29 -0
  55. package/dist/utils/cache.js +72 -0
  56. package/dist/utils/cache.js.map +1 -0
  57. package/dist/utils/fileLogger.d.ts +10 -0
  58. package/dist/utils/fileLogger.js +81 -0
  59. package/dist/utils/fileLogger.js.map +1 -0
  60. package/dist/utils/metrics.d.ts +35 -0
  61. package/dist/utils/metrics.js +94 -0
  62. package/dist/utils/metrics.js.map +1 -0
  63. package/dist/utils/responseFormatter.d.ts +93 -0
  64. package/dist/utils/responseFormatter.js +268 -0
  65. package/dist/utils/responseFormatter.js.map +1 -0
  66. package/dist/validation/schemas.d.ts +70 -0
  67. package/dist/validation/schemas.js +48 -0
  68. package/dist/validation/schemas.js.map +1 -0
  69. package/dist/validation/validators.d.ts +28 -0
  70. package/dist/validation/validators.js +129 -0
  71. package/dist/validation/validators.js.map +1 -0
  72. package/package.json +54 -0
@@ -0,0 +1,165 @@
1
+ /*
2
+ MCP prompt registrations for common Zebpay trading workflows.
3
+ */
4
+ import { z } from "zod";
5
+ /**
6
+ * Registers MCP prompts for common Zebpay trading workflows.
7
+ * Prompts help LLMs understand common use cases and provide structured guidance.
8
+ */
9
+ export function registerPrompts(server, spot, publicClient, config) {
10
+ // Prompt: Check Balance Before Trading
11
+ if (spot) {
12
+ try {
13
+ server.prompt("check-balance-before-trade", "Check account balance before placing a trade to ensure sufficient funds are available. This prompt guides you through verifying balance and understanding trading requirements.", {
14
+ symbol: z.string().describe("Trading pair symbol in format BASE-QUOTE (e.g., 'BTC-INR', 'ETH-INR'). The symbol determines which currencies to check."),
15
+ side: z.enum(["BUY", "SELL"]).describe("Order side: 'BUY' checks quote currency balance (e.g., INR for BTC-INR), 'SELL' checks base currency balance (e.g., BTC for BTC-INR)."),
16
+ }, async ({ symbol, side }) => {
17
+ const normalizedSymbol = symbol.trim().toUpperCase();
18
+ const [baseCurrency, quoteCurrency] = normalizedSymbol.split("-");
19
+ const currencyToCheck = side === "BUY" ? quoteCurrency : baseCurrency;
20
+ return {
21
+ description: `Check balance for ${currencyToCheck} before ${side === "BUY" ? "buying" : "selling"} ${baseCurrency}`,
22
+ messages: [
23
+ {
24
+ role: "user",
25
+ content: {
26
+ type: "text",
27
+ text: `I want to ${side === "BUY" ? "buy" : "sell"} ${normalizedSymbol}.
28
+
29
+ Please:
30
+ 1. Check my ${currencyToCheck} balance using zebpay_spot_getBalance with currencies="${currencyToCheck}"
31
+ 2. Get the current price of ${normalizedSymbol} using zebpay_public_getTicker with symbol="${normalizedSymbol}"
32
+ 3. Calculate if I have sufficient funds for the trade
33
+ 4. If sufficient, place the order using zebpay_spot_placeMarketOrder
34
+ 5. If insufficient, inform me of the shortfall
35
+
36
+ For ${side === "BUY" ? "buy" : "sell"} orders, I need ${side === "BUY" ? quoteCurrency : baseCurrency} balance.`,
37
+ },
38
+ },
39
+ ],
40
+ };
41
+ });
42
+ console.error("Registered prompt: check-balance-before-trade");
43
+ }
44
+ catch (error) {
45
+ console.error("Error registering check-balance-before-trade prompt:", error);
46
+ }
47
+ }
48
+ // Prompt: Market Analysis
49
+ try {
50
+ server.prompt("analyze-market", "Perform comprehensive market analysis for a trading pair, including current price, order book depth, recent trades, and price history.", {
51
+ symbol: z.string().describe("Trading pair symbol in format BASE-QUOTE (e.g., 'BTC-INR', 'ETH-INR') to analyze."),
52
+ }, async ({ symbol }) => {
53
+ const normalizedSymbol = symbol.trim().toUpperCase();
54
+ return {
55
+ description: `Analyze market conditions for ${normalizedSymbol}`,
56
+ messages: [
57
+ {
58
+ role: "user",
59
+ content: {
60
+ type: "text",
61
+ text: `Please provide a comprehensive market analysis for ${normalizedSymbol}:
62
+
63
+ 1. Current Price: Use zebpay_public_getTicker with symbol="${normalizedSymbol}" to get current price and 24h statistics
64
+ 2. Order Book: Use zebpay_public_getOrderBook with symbol="${normalizedSymbol}" to analyze market depth and liquidity
65
+ 3. Recent Trades: Use zebpay_public_getTrades with symbol="${normalizedSymbol}" to see recent trading activity
66
+ 4. Price History: Use zebpay_public_getKlines with symbol="${normalizedSymbol}" to get historical price data (you'll need to specify interval, startTime, and endTime)
67
+
68
+ Please summarize:
69
+ - Current price and 24h change
70
+ - Market depth (spread, liquidity)
71
+ - Recent trading activity
72
+ - Price trends (if historical data is available)`,
73
+ },
74
+ },
75
+ ],
76
+ };
77
+ });
78
+ console.error("Registered prompt: analyze-market");
79
+ }
80
+ catch (error) {
81
+ console.error("Error registering analyze-market prompt:", error);
82
+ }
83
+ // Prompt: Compare Multiple Trading Pairs
84
+ try {
85
+ server.prompt("compare-trading-pairs", "Compare multiple trading pairs side-by-side to help make trading decisions. Shows prices, volumes, and price changes for multiple symbols.", {
86
+ symbols: z.string().describe("Comma-separated list of trading pair symbols (e.g., 'BTC-INR,ETH-INR,USDT-INR') to compare."),
87
+ }, async ({ symbols }) => {
88
+ const symbolList = symbols
89
+ .split(",")
90
+ .map((s) => s.trim().toUpperCase())
91
+ .filter(Boolean);
92
+ return {
93
+ description: `Compare trading pairs: ${symbolList.join(", ")}`,
94
+ messages: [
95
+ {
96
+ role: "user",
97
+ content: {
98
+ type: "text",
99
+ text: `Please compare the following trading pairs: ${symbolList.join(", ")}
100
+
101
+ For each symbol, use zebpay_public_getTicker to get:
102
+ - Current price
103
+ - 24h price change (absolute and percentage)
104
+ - 24h trading volume
105
+ - 24h high and low prices
106
+
107
+ Present the comparison in a clear table format showing:
108
+ 1. Symbol
109
+ 2. Current Price
110
+ 3. 24h Change (%)
111
+ 4. 24h Volume
112
+ 5. 24h High/Low
113
+
114
+ This will help me understand which pairs are most active and have the best trading opportunities.`,
115
+ },
116
+ },
117
+ ],
118
+ };
119
+ });
120
+ console.error("Registered prompt: compare-trading-pairs");
121
+ }
122
+ catch (error) {
123
+ console.error("Error registering compare-trading-pairs prompt:", error);
124
+ }
125
+ // Prompt: Get Exchange Information
126
+ try {
127
+ server.prompt("get-exchange-info", "Retrieve comprehensive exchange information including available trading pairs, trading rules, order limits, and supported currencies.", {}, async () => {
128
+ return {
129
+ description: "Get Zebpay exchange information and trading rules",
130
+ messages: [
131
+ {
132
+ role: "user",
133
+ content: {
134
+ type: "text",
135
+ text: `Please provide comprehensive information about the Zebpay exchange:
136
+
137
+ 1. Exchange Information: Use zebpay_public_getExchangeInfo to get:
138
+ - Available trading pairs
139
+ - Trading rules and limits
140
+ - Order types supported
141
+ - Exchange-wide settings
142
+
143
+ 2. Supported Currencies: Use zebpay_public_getCurrencies to get:
144
+ - List of all supported currencies
145
+ - Currency details (precision, type, etc.)
146
+ - Withdrawal/deposit settings
147
+ - Supported blockchain chains
148
+
149
+ Please summarize:
150
+ - Total number of trading pairs
151
+ - Major trading pairs available
152
+ - Supported currencies
153
+ - Key trading rules and limits`,
154
+ },
155
+ },
156
+ ],
157
+ };
158
+ });
159
+ console.error("Registered prompt: get-exchange-info");
160
+ }
161
+ catch (error) {
162
+ console.error("Error registering get-exchange-info prompt:", error);
163
+ }
164
+ }
165
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/mcp/prompts.ts"],"names":[],"mappings":"AAAA;;EAEE;AAEF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAiB,EACjB,IAAuB,EACvB,YAA0B,EAC1B,MAAiB;IAEjB,uCAAuC;IACvC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC;YACH,MAAM,CAAC,MAAM,CACX,4BAA4B,EAC5B,iLAAiL,EACjL;gBACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACzB,yHAAyH,CAC1H;gBACD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CACpC,uIAAuI,CACxI;aACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBACzB,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACrD,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAClE,MAAM,eAAe,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;gBAEtE,OAAO;oBACL,WAAW,EAAE,qBAAqB,eAAe,WAAW,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,IAAI,YAAY,EAAE;oBACnH,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,MAAM;4BACZ,OAAO,EAAE;gCACP,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,aAAa,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,gBAAgB;;;cAG1E,eAAe,0DAA0D,eAAe;8BACxE,gBAAgB,+CAA+C,gBAAgB;;;;;MAKvG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,mBAAmB,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,WAAW;6BAC/F;yBACF;qBACF;iBACF,CAAC;YACJ,CAAC,CACF,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CACX,gBAAgB,EAChB,wIAAwI,EACxI;YACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CACzB,mFAAmF,CACpF;SACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACnB,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAErD,OAAO;gBACL,WAAW,EAAE,iCAAiC,gBAAgB,EAAE;gBAChE,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,sDAAsD,gBAAgB;;6DAE/B,gBAAgB;6DAChB,gBAAgB;6DAChB,gBAAgB;6DAChB,gBAAgB;;;;;;iDAM5B;yBAClC;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CACF,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CACX,uBAAuB,EACvB,4IAA4I,EAC5I;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC1B,6FAA6F,CAC9F;SACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACpB,MAAM,UAAU,GAAG,OAAO;iBACvB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;iBAClC,MAAM,CAAC,OAAO,CAAC,CAAC;YAEnB,OAAO;gBACL,WAAW,EAAE,0BAA0B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9D,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,+CAA+C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;kGAeQ;yBACnF;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CACF,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;IAC1E,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,CACX,mBAAmB,EACnB,uIAAuI,EACvI,EAAE,EACF,KAAK,IAAI,EAAE;YACT,OAAO;gBACL,WAAW,EAAE,mDAAmD;gBAChE,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE;;;;;;;;;;;;;;;;;;+BAkBS;yBAChB;qBACF;iBACF;aACF,CAAC;QACJ,CAAC,CACF,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { PublicClient } from "../public/PublicClient.js";
3
+ import { SpotClient } from "../private/SpotClient.js";
4
+ import { AppConfig } from "../config.js";
5
+ /**
6
+ * Registers MCP resources for Zebpay exchange data.
7
+ * Resources provide read-only access to exchange information that can be referenced by LLMs.
8
+ */
9
+ export declare function registerResources(server: McpServer, publicClient: PublicClient, spot: SpotClient | null, config: AppConfig): void;
@@ -0,0 +1,125 @@
1
+ /*
2
+ MCP resource registrations for Zebpay exchange data.
3
+ */
4
+ import { createInternalError } from "./errors.js";
5
+ /**
6
+ * Registers MCP resources for Zebpay exchange data.
7
+ * Resources provide read-only access to exchange information that can be referenced by LLMs.
8
+ */
9
+ export function registerResources(server, publicClient, spot, config) {
10
+ // Resource: Exchange Information
11
+ try {
12
+ server.resource("exchange-info", "zebpay://exchange/info", {
13
+ title: "Exchange Information",
14
+ description: "Current exchange information including available trading pairs, trading rules, order limits, and other exchange metadata. This resource is updated periodically.",
15
+ mimeType: "application/json",
16
+ }, async () => {
17
+ try {
18
+ const data = await publicClient.getExchangeInfo();
19
+ return {
20
+ contents: [
21
+ {
22
+ uri: "zebpay://exchange/info",
23
+ mimeType: "application/json",
24
+ text: JSON.stringify(data, null, 2),
25
+ },
26
+ ],
27
+ };
28
+ }
29
+ catch (error) {
30
+ throw createInternalError(`Failed to fetch exchange information: ${error instanceof Error ? error.message : String(error)}`, {});
31
+ }
32
+ });
33
+ console.error("Registered resource: zebpay://exchange/info");
34
+ }
35
+ catch (error) {
36
+ console.error("Error registering exchange-info resource:", error);
37
+ }
38
+ // Resource: Supported Currencies
39
+ try {
40
+ server.resource("currencies", "zebpay://currencies", {
41
+ title: "Supported Currencies",
42
+ description: "List of all supported currencies and tokens on Zebpay exchange, including precision, type (crypto/fiat), withdrawal/deposit settings, supported blockchain chains, fees, and limits.",
43
+ mimeType: "application/json",
44
+ }, async () => {
45
+ try {
46
+ const data = await publicClient.getCurrencies();
47
+ return {
48
+ contents: [
49
+ {
50
+ uri: "zebpay://currencies",
51
+ mimeType: "application/json",
52
+ text: JSON.stringify(data, null, 2),
53
+ },
54
+ ],
55
+ };
56
+ }
57
+ catch (error) {
58
+ throw createInternalError(`Failed to fetch currencies: ${error instanceof Error ? error.message : String(error)}`, {});
59
+ }
60
+ });
61
+ console.error("Registered resource: zebpay://currencies");
62
+ }
63
+ catch (error) {
64
+ console.error("Error registering currencies resource:", error);
65
+ }
66
+ // Resource: All Tickers (Market Prices)
67
+ try {
68
+ server.resource("all-tickers", "zebpay://market/tickers", {
69
+ title: "All Market Tickers",
70
+ description: "Current ticker/price information for all trading pairs on Zebpay exchange, including last price, bid/ask, 24h high/low, volume, and price changes.",
71
+ mimeType: "application/json",
72
+ }, async () => {
73
+ try {
74
+ const data = await publicClient.getAllTickers();
75
+ return {
76
+ contents: [
77
+ {
78
+ uri: "zebpay://market/tickers",
79
+ mimeType: "application/json",
80
+ text: JSON.stringify(data, null, 2),
81
+ },
82
+ ],
83
+ };
84
+ }
85
+ catch (error) {
86
+ throw createInternalError(`Failed to fetch all tickers: ${error instanceof Error ? error.message : String(error)}`, {});
87
+ }
88
+ });
89
+ console.error("Registered resource: zebpay://market/tickers");
90
+ }
91
+ catch (error) {
92
+ console.error("Error registering all-tickers resource:", error);
93
+ }
94
+ // Resource: User Balance (only if authenticated)
95
+ if (spot) {
96
+ try {
97
+ server.resource("balance", "zebpay://account/balance", {
98
+ title: "Account Balance",
99
+ description: "Current balance of cryptocurrencies and fiat currencies in the user's spot trading account. Shows both available and locked balances.",
100
+ mimeType: "application/json",
101
+ }, async () => {
102
+ try {
103
+ const data = await spot.getBalance();
104
+ return {
105
+ contents: [
106
+ {
107
+ uri: "zebpay://account/balance",
108
+ mimeType: "application/json",
109
+ text: JSON.stringify(data, null, 2),
110
+ },
111
+ ],
112
+ };
113
+ }
114
+ catch (error) {
115
+ throw createInternalError(`Failed to fetch balance: ${error instanceof Error ? error.message : String(error)}`, {});
116
+ }
117
+ });
118
+ console.error("Registered resource: zebpay://account/balance");
119
+ }
120
+ catch (error) {
121
+ console.error("Error registering balance resource:", error);
122
+ }
123
+ }
124
+ }
125
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { PublicFuturesClient } from "../public/PublicFuturesClient.js";
3
+ import { FuturesClient } from "../private/FuturesClient.js";
4
+ import { AppConfig } from "../config.js";
5
+ export declare function registerFuturesTools(server: McpServer, futuresPublicClient: PublicFuturesClient, futuresPrivateClient: FuturesClient | null, config: AppConfig): void;