@paysponge/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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -0
  3. package/dist/admin.d.ts +81 -0
  4. package/dist/admin.d.ts.map +1 -0
  5. package/dist/admin.js +108 -0
  6. package/dist/admin.js.map +1 -0
  7. package/dist/api/agents.d.ts +37 -0
  8. package/dist/api/agents.d.ts.map +1 -0
  9. package/dist/api/agents.js +63 -0
  10. package/dist/api/agents.js.map +1 -0
  11. package/dist/api/http.d.ts +29 -0
  12. package/dist/api/http.d.ts.map +1 -0
  13. package/dist/api/http.js +101 -0
  14. package/dist/api/http.js.map +1 -0
  15. package/dist/api/index.d.ts +6 -0
  16. package/dist/api/index.d.ts.map +1 -0
  17. package/dist/api/index.js +6 -0
  18. package/dist/api/index.js.map +1 -0
  19. package/dist/api/public-tools.d.ts +52 -0
  20. package/dist/api/public-tools.d.ts.map +1 -0
  21. package/dist/api/public-tools.js +68 -0
  22. package/dist/api/public-tools.js.map +1 -0
  23. package/dist/api/transactions.d.ts +30 -0
  24. package/dist/api/transactions.d.ts.map +1 -0
  25. package/dist/api/transactions.js +176 -0
  26. package/dist/api/transactions.js.map +1 -0
  27. package/dist/api/wallets.d.ts +33 -0
  28. package/dist/api/wallets.d.ts.map +1 -0
  29. package/dist/api/wallets.js +121 -0
  30. package/dist/api/wallets.js.map +1 -0
  31. package/dist/auth/credentials.d.ts +37 -0
  32. package/dist/auth/credentials.d.ts.map +1 -0
  33. package/dist/auth/credentials.js +100 -0
  34. package/dist/auth/credentials.js.map +1 -0
  35. package/dist/auth/device-flow.d.ts +25 -0
  36. package/dist/auth/device-flow.d.ts.map +1 -0
  37. package/dist/auth/device-flow.js +161 -0
  38. package/dist/auth/device-flow.js.map +1 -0
  39. package/dist/auth/index.d.ts +3 -0
  40. package/dist/auth/index.d.ts.map +1 -0
  41. package/dist/auth/index.js +3 -0
  42. package/dist/auth/index.js.map +1 -0
  43. package/dist/bin/cli.d.ts +3 -0
  44. package/dist/bin/cli.d.ts.map +1 -0
  45. package/dist/bin/cli.js +116 -0
  46. package/dist/bin/cli.js.map +1 -0
  47. package/dist/client.d.ts +383 -0
  48. package/dist/client.d.ts.map +1 -0
  49. package/dist/client.js +384 -0
  50. package/dist/client.js.map +1 -0
  51. package/dist/index.d.ts +11 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +18 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/mcp/config.d.ts +27 -0
  56. package/dist/mcp/config.d.ts.map +1 -0
  57. package/dist/mcp/config.js +34 -0
  58. package/dist/mcp/config.js.map +1 -0
  59. package/dist/mcp/index.d.ts +2 -0
  60. package/dist/mcp/index.d.ts.map +1 -0
  61. package/dist/mcp/index.js +2 -0
  62. package/dist/mcp/index.js.map +1 -0
  63. package/dist/tools/definitions.d.ts +16 -0
  64. package/dist/tools/definitions.d.ts.map +1 -0
  65. package/dist/tools/definitions.js +330 -0
  66. package/dist/tools/definitions.js.map +1 -0
  67. package/dist/tools/executor.d.ts +56 -0
  68. package/dist/tools/executor.d.ts.map +1 -0
  69. package/dist/tools/executor.js +182 -0
  70. package/dist/tools/executor.js.map +1 -0
  71. package/dist/tools/index.d.ts +3 -0
  72. package/dist/tools/index.d.ts.map +1 -0
  73. package/dist/tools/index.js +3 -0
  74. package/dist/tools/index.js.map +1 -0
  75. package/dist/types/index.d.ts +2 -0
  76. package/dist/types/index.d.ts.map +1 -0
  77. package/dist/types/index.js +2 -0
  78. package/dist/types/index.js.map +1 -0
  79. package/dist/types/schemas.d.ts +924 -0
  80. package/dist/types/schemas.d.ts.map +1 -0
  81. package/dist/types/schemas.js +360 -0
  82. package/dist/types/schemas.js.map +1 -0
  83. package/package.json +70 -0
package/dist/client.js ADDED
@@ -0,0 +1,384 @@
1
+ import { ConnectOptionsSchema, } from "./types/schemas.js";
2
+ import { loadCredentials, getApiKey, saveCredentials, } from "./auth/credentials.js";
3
+ import { deviceFlowAuth } from "./auth/device-flow.js";
4
+ import { HttpClient } from "./api/http.js";
5
+ import { AgentsApi } from "./api/agents.js";
6
+ import { WalletsApi } from "./api/wallets.js";
7
+ import { TransactionsApi } from "./api/transactions.js";
8
+ import { PublicToolsApi } from "./api/public-tools.js";
9
+ const DEFAULT_BASE_URL = "https://api.wallet.paysponge.com";
10
+ /**
11
+ * SpongeWallet - The main SDK client for managing agent wallets
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { SpongeWallet } from '@spongewallet/sdk';
16
+ *
17
+ * // Connect (handles auth automatically)
18
+ * const wallet = await SpongeWallet.connect();
19
+ *
20
+ * // Get wallet addresses
21
+ * console.log(wallet.address('base')); // 0x...
22
+ * console.log(wallet.address('solana')); // 5x...
23
+ *
24
+ * // Check balances
25
+ * const balances = await wallet.getBalances();
26
+ *
27
+ * // Transfer tokens
28
+ * await wallet.transfer({
29
+ * chain: 'base',
30
+ * to: '0x...',
31
+ * amount: '10',
32
+ * currency: 'USDC',
33
+ * });
34
+ * ```
35
+ */
36
+ export class SpongeWallet {
37
+ http;
38
+ agents;
39
+ wallets;
40
+ transactions;
41
+ publicTools;
42
+ agentId;
43
+ baseUrl;
44
+ // Cached wallet addresses
45
+ addressCache = null;
46
+ constructor(options) {
47
+ this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
48
+ this.agentId = options.agentId;
49
+ this.http = new HttpClient({
50
+ baseUrl: this.baseUrl,
51
+ apiKey: options.apiKey,
52
+ });
53
+ this.agents = new AgentsApi(this.http);
54
+ this.wallets = new WalletsApi(this.http);
55
+ this.transactions = new TransactionsApi(this.http, this.agentId);
56
+ this.publicTools = new PublicToolsApi(this.http);
57
+ }
58
+ /**
59
+ * Connect to SpongeWallet
60
+ *
61
+ * This method handles everything:
62
+ * 1. Checks for cached credentials or environment variable
63
+ * 2. If none, starts OAuth Device Flow
64
+ * 3. Creates a default agent if needed
65
+ * 4. Returns a connected SpongeWallet instance
66
+ *
67
+ * @example
68
+ * ```typescript
69
+ * // Simple connect (uses default agent or creates one)
70
+ * const wallet = await SpongeWallet.connect();
71
+ *
72
+ * // Connect with options
73
+ * const wallet = await SpongeWallet.connect({
74
+ * name: 'My Trading Bot',
75
+ * testnet: true,
76
+ * });
77
+ *
78
+ * // Connect with existing API key
79
+ * const wallet = await SpongeWallet.connect({
80
+ * apiKey: 'sponge_live_...',
81
+ * });
82
+ * ```
83
+ */
84
+ static async connect(options = {}) {
85
+ const validated = ConnectOptionsSchema.parse(options);
86
+ const baseUrl = validated.baseUrl ?? DEFAULT_BASE_URL;
87
+ // Step 1: Try to get API key
88
+ let apiKey = validated.apiKey ?? getApiKey();
89
+ let agentId = validated.agentId;
90
+ let credentials = null;
91
+ // Step 2: If no API key, do device flow
92
+ if (!apiKey) {
93
+ const tokenResponse = await deviceFlowAuth({
94
+ baseUrl,
95
+ noBrowser: validated.noBrowser,
96
+ testnet: validated.testnet,
97
+ agentName: validated.name ?? "Default Agent",
98
+ });
99
+ apiKey = tokenResponse.apiKey;
100
+ agentId = tokenResponse.agentId ?? undefined;
101
+ }
102
+ else {
103
+ // Load credentials to get agent ID if not provided
104
+ if (!agentId) {
105
+ credentials = loadCredentials();
106
+ agentId = credentials?.agentId;
107
+ }
108
+ }
109
+ // Step 3: Create HTTP client for API calls
110
+ const http = new HttpClient({ baseUrl, apiKey });
111
+ const agentsApi = new AgentsApi(http);
112
+ // Step 4: Get agent ID from the API key if not provided
113
+ if (!agentId) {
114
+ // Use the SDK endpoint to get the current agent (authenticated via API key)
115
+ try {
116
+ const currentAgent = await agentsApi.getCurrent();
117
+ agentId = currentAgent.id;
118
+ // Save the credentials for future use
119
+ saveCredentials({
120
+ apiKey,
121
+ agentId,
122
+ agentName: currentAgent.name,
123
+ testnet: validated.testnet,
124
+ createdAt: new Date(),
125
+ baseUrl: baseUrl !== DEFAULT_BASE_URL ? baseUrl : undefined,
126
+ });
127
+ }
128
+ catch {
129
+ // If getCurrent fails, the API key might be invalid
130
+ throw new Error("Failed to get agent info. The API key may be invalid or expired.");
131
+ }
132
+ }
133
+ return new SpongeWallet({
134
+ apiKey,
135
+ agentId,
136
+ baseUrl,
137
+ });
138
+ }
139
+ /**
140
+ * Get wallet address for a specific chain
141
+ */
142
+ address(chain) {
143
+ if (this.addressCache?.[chain]) {
144
+ return this.addressCache[chain];
145
+ }
146
+ // Return placeholder - actual address is fetched asynchronously
147
+ return `<loading ${chain} address...>`;
148
+ }
149
+ /**
150
+ * Get wallet address for a specific chain (async)
151
+ */
152
+ async getAddress(chain) {
153
+ if (this.addressCache?.[chain]) {
154
+ return this.addressCache[chain];
155
+ }
156
+ const address = await this.wallets.getAddress(this.agentId, chain);
157
+ // Update cache
158
+ if (address && !this.addressCache) {
159
+ this.addressCache = {};
160
+ }
161
+ if (address && this.addressCache) {
162
+ this.addressCache[chain] = address;
163
+ }
164
+ return address;
165
+ }
166
+ /**
167
+ * Get all wallet addresses
168
+ */
169
+ async getAddresses() {
170
+ if (this.addressCache) {
171
+ return this.addressCache;
172
+ }
173
+ this.addressCache = await this.wallets.getAllAddresses(this.agentId);
174
+ return this.addressCache;
175
+ }
176
+ /**
177
+ * Get balance for a specific chain
178
+ */
179
+ async getBalance(chain) {
180
+ const walletsList = await this.wallets.list(this.agentId);
181
+ const wallet = walletsList.find((w) => w.chainName === chain);
182
+ if (!wallet) {
183
+ return {};
184
+ }
185
+ return this.wallets.getBalance(wallet.id);
186
+ }
187
+ /**
188
+ * Get balances for all chains
189
+ */
190
+ async getBalances() {
191
+ return this.wallets.getAllBalances(this.agentId);
192
+ }
193
+ /**
194
+ * Get detailed balances with per-token breakdown
195
+ */
196
+ async getDetailedBalances(options) {
197
+ return this.publicTools.getDetailedBalances(options);
198
+ }
199
+ /**
200
+ * Transfer tokens
201
+ *
202
+ * @example
203
+ * ```typescript
204
+ * // Transfer USDC on Base
205
+ * const tx = await wallet.transfer({
206
+ * chain: 'base',
207
+ * to: '0x742d35Cc...',
208
+ * amount: '10',
209
+ * currency: 'USDC',
210
+ * });
211
+ * console.log(tx.txHash);
212
+ * ```
213
+ */
214
+ async transfer(options) {
215
+ return this.transactions.transfer(options);
216
+ }
217
+ /**
218
+ * Transfer on EVM chains (allowlist + spending limits enforced)
219
+ */
220
+ async evmTransfer(options) {
221
+ return this.publicTools.evmTransfer(options);
222
+ }
223
+ /**
224
+ * Transfer on Solana (allowlist + spending limits enforced)
225
+ */
226
+ async solanaTransfer(options) {
227
+ return this.publicTools.solanaTransfer(options);
228
+ }
229
+ /**
230
+ * Swap tokens (Solana via Jupiter)
231
+ *
232
+ * @example
233
+ * ```typescript
234
+ * const tx = await wallet.swap({
235
+ * chain: 'solana',
236
+ * from: 'SOL',
237
+ * to: 'USDC',
238
+ * amount: '1',
239
+ * });
240
+ * ```
241
+ */
242
+ async swap(options) {
243
+ return this.transactions.swap(options);
244
+ }
245
+ /**
246
+ * Get transaction status
247
+ *
248
+ * @example
249
+ * ```typescript
250
+ * const status = await wallet.getTransactionStatus(txHash, 'base');
251
+ * console.log(status.status); // 'pending', 'confirmed', or 'failed'
252
+ * ```
253
+ */
254
+ async getTransactionStatus(txHash, chain) {
255
+ return this.transactions.getStatus(txHash, chain);
256
+ }
257
+ /**
258
+ * Get transaction history
259
+ */
260
+ async getTransactionHistory(options) {
261
+ return this.transactions.getHistory(options);
262
+ }
263
+ /**
264
+ * Get detailed transaction history with chain metadata
265
+ */
266
+ async getTransactionHistoryDetailed(options) {
267
+ return this.publicTools.getTransactionHistoryDetailed(options);
268
+ }
269
+ /**
270
+ * List all SPL tokens held by the Solana wallet
271
+ */
272
+ async getSolanaTokens(chain) {
273
+ return this.publicTools.getSolanaTokens(chain);
274
+ }
275
+ /**
276
+ * Search Jupiter token list on Solana
277
+ */
278
+ async searchSolanaTokens(query, limit) {
279
+ return this.publicTools.searchSolanaTokens(query, limit);
280
+ }
281
+ /**
282
+ * Request funding from the owner (creates an approval request)
283
+ */
284
+ async requestFunding(options) {
285
+ return this.publicTools.requestFunding(options);
286
+ }
287
+ /**
288
+ * Withdraw funds back to the owner's main wallet
289
+ */
290
+ async withdrawToMainWallet(options) {
291
+ return this.publicTools.withdrawToMainWallet(options);
292
+ }
293
+ /**
294
+ * Call Sponge paid APIs via x402
295
+ */
296
+ async sponge(request) {
297
+ return this.publicTools.sponge(request);
298
+ }
299
+ /**
300
+ * Create an x402 payment payload
301
+ */
302
+ async createX402Payment(options) {
303
+ return this.publicTools.createX402Payment(options);
304
+ }
305
+ /**
306
+ * Create a new agent
307
+ */
308
+ async createAgent(options) {
309
+ const result = await this.agents.create(options);
310
+ return result.agent;
311
+ }
312
+ /**
313
+ * Get all agents for this user
314
+ */
315
+ async getAgents() {
316
+ return this.agents.list();
317
+ }
318
+ /**
319
+ * Get the current agent
320
+ */
321
+ async getAgent() {
322
+ return this.agents.getCurrent();
323
+ }
324
+ /**
325
+ * Get MCP configuration for Claude Agent SDK
326
+ *
327
+ * @example
328
+ * ```typescript
329
+ * import { query } from '@anthropic-ai/claude-agent-sdk';
330
+ *
331
+ * const wallet = await SpongeWallet.connect();
332
+ *
333
+ * for await (const msg of query({
334
+ * prompt: 'Check my balance',
335
+ * options: {
336
+ * mcpServers: {
337
+ * wallet: wallet.mcp(),
338
+ * },
339
+ * },
340
+ * })) {
341
+ * console.log(msg);
342
+ * }
343
+ * ```
344
+ */
345
+ mcp() {
346
+ return {
347
+ url: `${this.baseUrl}/mcp`,
348
+ headers: {
349
+ Authorization: `Bearer ${this.http.getApiKey()}`,
350
+ },
351
+ };
352
+ }
353
+ /**
354
+ * Get direct tools for use with raw Anthropic SDK
355
+ *
356
+ * @example
357
+ * ```typescript
358
+ * const tools = wallet.tools();
359
+ *
360
+ * const response = await anthropic.messages.create({
361
+ * model: 'claude-sonnet-4-20250514',
362
+ * tools: tools.definitions,
363
+ * messages: [{ role: 'user', content: 'Check balance' }],
364
+ * });
365
+ *
366
+ * if (response.stop_reason === 'tool_use') {
367
+ * const result = await tools.execute(toolCall.name, toolCall.input);
368
+ * }
369
+ * ```
370
+ */
371
+ tools() {
372
+ // Import dynamically to avoid circular dependencies
373
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
374
+ const { createTools } = require("./tools/index.js");
375
+ return createTools(this.http, this.agentId);
376
+ }
377
+ /**
378
+ * Get the agent ID
379
+ */
380
+ getAgentId() {
381
+ return this.agentId;
382
+ }
383
+ }
384
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAWrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,SAAS,EACT,eAAe,GAEhB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,YAAY;IACN,IAAI,CAAa;IACjB,MAAM,CAAY;IAClB,OAAO,CAAa;IACpB,YAAY,CAAkB;IAC9B,WAAW,CAAiB;IAC5B,OAAO,CAAS;IAChB,OAAO,CAAS;IAEjC,0BAA0B;IAClB,YAAY,GAAiC,IAAI,CAAC;IAE1D,YAAoB,OAInB;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAA0B,EAAE;QAC/C,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,gBAAgB,CAAC;QAEtD,6BAA6B;QAC7B,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;QAC7C,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QAChC,IAAI,WAAW,GAAuB,IAAI,CAAC;QAE3C,wCAAwC;QACxC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC;gBACzC,OAAO;gBACP,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,SAAS,EAAE,SAAS,CAAC,IAAI,IAAI,eAAe;aAC7C,CAAC,CAAC;YAEH,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;YAC9B,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,SAAS,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,WAAW,GAAG,eAAe,EAAE,CAAC;gBAChC,OAAO,GAAG,WAAW,EAAE,OAAO,CAAC;YACjC,CAAC;QACH,CAAC;QAED,2CAA2C;QAC3C,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;QAEtC,wDAAwD;QACxD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,4EAA4E;YAC5E,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;gBAClD,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC;gBAE1B,sCAAsC;gBACtC,eAAe,CAAC;oBACd,MAAM;oBACN,OAAO;oBACP,SAAS,EAAE,YAAY,CAAC,IAAI;oBAC5B,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,OAAO,EAAE,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;iBAC5D,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,oDAAoD;gBACpD,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,YAAY,CAAC;YACtB,MAAM;YACN,OAAO;YACP,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAY;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,gEAAgE;QAChE,OAAO,YAAY,KAAK,cAAc,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAY;QAC3B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAEnE,eAAe;QACf,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,IAAI,CAAC,YAAY,GAAG,EAA2B,CAAC;QAClD,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QACrC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,KAAY;QAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAIzB;QACC,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAKjB;QACC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAKpB;QACC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAAc,EAAE,KAAY;QACrD,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CAAC,OAA6C;QACvE,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,6BAA6B,CAAC,OAA2C;QAC7E,OAAO,IAAI,CAAC,WAAW,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,KAAiC;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,KAAc;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAKpB;QACC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB,CAAC,OAI1B;QACC,OAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAgC;QAC3C,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,OAWvB;QACC,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,OAA2B;QAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,GAAG;QACD,OAAO;YACL,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,MAAM;YAC1B,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;aACjD;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK;QACH,oDAAoD;QACpD,8DAA8D;QAC9D,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QACpD,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ export { SpongeWallet } from "./client.js";
2
+ export { SpongeAdmin } from "./admin.js";
3
+ export * from "./types/schemas.js";
4
+ export { loadCredentials, saveCredentials, deleteCredentials, hasCredentials, getApiKey, getAgentId, getCredentialsPath, } from "./auth/credentials.js";
5
+ export { deviceFlowAuth, type DeviceFlowOptions } from "./auth/device-flow.js";
6
+ export { createMcpConfig } from "./mcp/config.js";
7
+ export { createTools, ToolExecutor } from "./tools/executor.js";
8
+ export { TOOL_DEFINITIONS, type ToolDefinition } from "./tools/definitions.js";
9
+ export { HttpClient, SpongeApiError } from "./api/http.js";
10
+ export { PublicToolsApi } from "./api/public-tools.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,cAAc,oBAAoB,CAAC;AAGnC,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,UAAU,EACV,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ // Main client
2
+ export { SpongeWallet } from "./client.js";
3
+ // Admin client for programmatic agent creation
4
+ export { SpongeAdmin } from "./admin.js";
5
+ // Types
6
+ export * from "./types/schemas.js";
7
+ // Auth utilities (for advanced usage)
8
+ export { loadCredentials, saveCredentials, deleteCredentials, hasCredentials, getApiKey, getAgentId, getCredentialsPath, } from "./auth/credentials.js";
9
+ export { deviceFlowAuth } from "./auth/device-flow.js";
10
+ // MCP utilities
11
+ export { createMcpConfig } from "./mcp/config.js";
12
+ // Tools for Anthropic SDK
13
+ export { createTools, ToolExecutor } from "./tools/executor.js";
14
+ export { TOOL_DEFINITIONS } from "./tools/definitions.js";
15
+ // API client (for advanced usage)
16
+ export { HttpClient, SpongeApiError } from "./api/http.js";
17
+ export { PublicToolsApi } from "./api/public-tools.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,+CAA+C;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,QAAQ;AACR,cAAc,oBAAoB,CAAC;AAEnC,sCAAsC;AACtC,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,SAAS,EACT,UAAU,EACV,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAA0B,MAAM,uBAAuB,CAAC;AAE/E,gBAAgB;AAChB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,0BAA0B;AAC1B,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,wBAAwB,CAAC;AAE/E,kCAAkC;AAClC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { McpConfig } from "../types/schemas.js";
2
+ /**
3
+ * Create MCP configuration for Claude Agent SDK
4
+ *
5
+ * @param apiKey - API key for authentication
6
+ * @param baseUrl - Base URL for the API (optional)
7
+ * @returns MCP server configuration
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { query } from '@anthropic-ai/claude-agent-sdk';
12
+ * import { createMcpConfig } from '@spongewallet/sdk';
13
+ *
14
+ * for await (const msg of query({
15
+ * prompt: 'Check my balance',
16
+ * options: {
17
+ * mcpServers: {
18
+ * wallet: createMcpConfig('sponge_live_...'),
19
+ * },
20
+ * },
21
+ * })) {
22
+ * console.log(msg);
23
+ * }
24
+ * ```
25
+ */
26
+ export declare function createMcpConfig(apiKey: string, baseUrl?: string): McpConfig;
27
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAyB,GACjC,SAAS,CAOX"}
@@ -0,0 +1,34 @@
1
+ const DEFAULT_BASE_URL = "https://api.wallet.paysponge.com";
2
+ /**
3
+ * Create MCP configuration for Claude Agent SDK
4
+ *
5
+ * @param apiKey - API key for authentication
6
+ * @param baseUrl - Base URL for the API (optional)
7
+ * @returns MCP server configuration
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { query } from '@anthropic-ai/claude-agent-sdk';
12
+ * import { createMcpConfig } from '@spongewallet/sdk';
13
+ *
14
+ * for await (const msg of query({
15
+ * prompt: 'Check my balance',
16
+ * options: {
17
+ * mcpServers: {
18
+ * wallet: createMcpConfig('sponge_live_...'),
19
+ * },
20
+ * },
21
+ * })) {
22
+ * console.log(msg);
23
+ * }
24
+ * ```
25
+ */
26
+ export function createMcpConfig(apiKey, baseUrl = DEFAULT_BASE_URL) {
27
+ return {
28
+ url: `${baseUrl}/mcp`,
29
+ headers: {
30
+ Authorization: `Bearer ${apiKey}`,
31
+ },
32
+ };
33
+ }
34
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/mcp/config.ts"],"names":[],"mappings":"AAEA,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAc,EACd,UAAkB,gBAAgB;IAElC,OAAO;QACL,GAAG,EAAE,GAAG,OAAO,MAAM;QACrB,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;SAClC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./config.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Tool definitions for use with the Anthropic SDK
3
+ *
4
+ * These definitions follow the Anthropic tool schema format
5
+ */
6
+ export interface ToolDefinition {
7
+ name: string;
8
+ description: string;
9
+ input_schema: {
10
+ type: "object";
11
+ properties: Record<string, unknown>;
12
+ required?: string[];
13
+ };
14
+ }
15
+ export declare const TOOL_DEFINITIONS: ToolDefinition[];
16
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE;QACZ,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA+U5C,CAAC"}