@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
@@ -0,0 +1,383 @@
1
+ import { type ConnectOptions, type Chain, type Balance, type TransferOptions, type SwapOptions, type TransactionResult, type TransactionStatus, type Agent, type CreateAgentOptions, type McpConfig } from "./types/schemas.js";
2
+ /**
3
+ * SpongeWallet - The main SDK client for managing agent wallets
4
+ *
5
+ * @example
6
+ * ```typescript
7
+ * import { SpongeWallet } from '@spongewallet/sdk';
8
+ *
9
+ * // Connect (handles auth automatically)
10
+ * const wallet = await SpongeWallet.connect();
11
+ *
12
+ * // Get wallet addresses
13
+ * console.log(wallet.address('base')); // 0x...
14
+ * console.log(wallet.address('solana')); // 5x...
15
+ *
16
+ * // Check balances
17
+ * const balances = await wallet.getBalances();
18
+ *
19
+ * // Transfer tokens
20
+ * await wallet.transfer({
21
+ * chain: 'base',
22
+ * to: '0x...',
23
+ * amount: '10',
24
+ * currency: 'USDC',
25
+ * });
26
+ * ```
27
+ */
28
+ export declare class SpongeWallet {
29
+ private readonly http;
30
+ private readonly agents;
31
+ private readonly wallets;
32
+ private readonly transactions;
33
+ private readonly publicTools;
34
+ private readonly agentId;
35
+ private readonly baseUrl;
36
+ private addressCache;
37
+ private constructor();
38
+ /**
39
+ * Connect to SpongeWallet
40
+ *
41
+ * This method handles everything:
42
+ * 1. Checks for cached credentials or environment variable
43
+ * 2. If none, starts OAuth Device Flow
44
+ * 3. Creates a default agent if needed
45
+ * 4. Returns a connected SpongeWallet instance
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * // Simple connect (uses default agent or creates one)
50
+ * const wallet = await SpongeWallet.connect();
51
+ *
52
+ * // Connect with options
53
+ * const wallet = await SpongeWallet.connect({
54
+ * name: 'My Trading Bot',
55
+ * testnet: true,
56
+ * });
57
+ *
58
+ * // Connect with existing API key
59
+ * const wallet = await SpongeWallet.connect({
60
+ * apiKey: 'sponge_live_...',
61
+ * });
62
+ * ```
63
+ */
64
+ static connect(options?: ConnectOptions): Promise<SpongeWallet>;
65
+ /**
66
+ * Get wallet address for a specific chain
67
+ */
68
+ address(chain: Chain): string;
69
+ /**
70
+ * Get wallet address for a specific chain (async)
71
+ */
72
+ getAddress(chain: Chain): Promise<string | null>;
73
+ /**
74
+ * Get all wallet addresses
75
+ */
76
+ getAddresses(): Promise<Record<Chain, string>>;
77
+ /**
78
+ * Get balance for a specific chain
79
+ */
80
+ getBalance(chain: Chain): Promise<Balance>;
81
+ /**
82
+ * Get balances for all chains
83
+ */
84
+ getBalances(): Promise<Record<Chain, Balance>>;
85
+ /**
86
+ * Get detailed balances with per-token breakdown
87
+ */
88
+ getDetailedBalances(options?: {
89
+ chain?: Chain | "all";
90
+ allowedChains?: Chain[];
91
+ onlyUsdc?: boolean;
92
+ }): Promise<Record<string, {
93
+ address: string;
94
+ balances: {
95
+ amount: string;
96
+ token: string;
97
+ usdValue?: string | undefined;
98
+ }[];
99
+ }>>;
100
+ /**
101
+ * Transfer tokens
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * // Transfer USDC on Base
106
+ * const tx = await wallet.transfer({
107
+ * chain: 'base',
108
+ * to: '0x742d35Cc...',
109
+ * amount: '10',
110
+ * currency: 'USDC',
111
+ * });
112
+ * console.log(tx.txHash);
113
+ * ```
114
+ */
115
+ transfer(options: TransferOptions): Promise<TransactionResult>;
116
+ /**
117
+ * Transfer on EVM chains (allowlist + spending limits enforced)
118
+ */
119
+ evmTransfer(options: {
120
+ chain: "ethereum" | "base" | "sepolia" | "base-sepolia";
121
+ to: string;
122
+ amount: string;
123
+ currency: "ETH" | "USDC";
124
+ }): Promise<{
125
+ status: string;
126
+ transactionHash: string;
127
+ message?: string | undefined;
128
+ explorerUrl?: string | undefined;
129
+ }>;
130
+ /**
131
+ * Transfer on Solana (allowlist + spending limits enforced)
132
+ */
133
+ solanaTransfer(options: {
134
+ chain: "solana" | "solana-devnet";
135
+ to: string;
136
+ amount: string;
137
+ currency: "SOL" | "USDC";
138
+ }): Promise<{
139
+ status: string;
140
+ transactionHash: string;
141
+ message?: string | undefined;
142
+ explorerUrl?: string | undefined;
143
+ }>;
144
+ /**
145
+ * Swap tokens (Solana via Jupiter)
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * const tx = await wallet.swap({
150
+ * chain: 'solana',
151
+ * from: 'SOL',
152
+ * to: 'USDC',
153
+ * amount: '1',
154
+ * });
155
+ * ```
156
+ */
157
+ swap(options: SwapOptions): Promise<TransactionResult>;
158
+ /**
159
+ * Get transaction status
160
+ *
161
+ * @example
162
+ * ```typescript
163
+ * const status = await wallet.getTransactionStatus(txHash, 'base');
164
+ * console.log(status.status); // 'pending', 'confirmed', or 'failed'
165
+ * ```
166
+ */
167
+ getTransactionStatus(txHash: string, chain: Chain): Promise<TransactionStatus>;
168
+ /**
169
+ * Get transaction history
170
+ */
171
+ getTransactionHistory(options?: {
172
+ limit?: number;
173
+ offset?: number;
174
+ }): Promise<{
175
+ status: "unknown" | "pending" | "confirmed" | "failed";
176
+ txHash: string;
177
+ blockNumber: number | null;
178
+ confirmations: number | null;
179
+ errorMessage: string | null;
180
+ }[]>;
181
+ /**
182
+ * Get detailed transaction history with chain metadata
183
+ */
184
+ getTransactionHistoryDetailed(options?: {
185
+ limit?: number;
186
+ chain?: Chain;
187
+ }): Promise<{
188
+ transactions: {
189
+ value: string;
190
+ status: string;
191
+ chain: string;
192
+ to: string;
193
+ txHash: string | null;
194
+ from: string;
195
+ token: string;
196
+ direction: string;
197
+ timestamp: string;
198
+ }[];
199
+ total: number;
200
+ hasMore: boolean;
201
+ }>;
202
+ /**
203
+ * List all SPL tokens held by the Solana wallet
204
+ */
205
+ getSolanaTokens(chain: "solana" | "solana-devnet"): Promise<{
206
+ address: string;
207
+ tokens: {
208
+ symbol: string;
209
+ name: string;
210
+ balance: string;
211
+ decimals: number;
212
+ mint: string;
213
+ logoURI: string | null;
214
+ verified: boolean;
215
+ }[];
216
+ }>;
217
+ /**
218
+ * Search Jupiter token list on Solana
219
+ */
220
+ searchSolanaTokens(query: string, limit?: number): Promise<{
221
+ tokens: {
222
+ symbol: string;
223
+ name: string;
224
+ decimals: number;
225
+ mint: string;
226
+ logoURI: string | null;
227
+ verified: boolean;
228
+ }[];
229
+ }>;
230
+ /**
231
+ * Request funding from the owner (creates an approval request)
232
+ */
233
+ requestFunding(options: {
234
+ amount: string;
235
+ reason?: string;
236
+ chain?: Chain;
237
+ currency?: string;
238
+ }): Promise<{
239
+ message: string;
240
+ status: string;
241
+ success: boolean;
242
+ requestId: string;
243
+ }>;
244
+ /**
245
+ * Withdraw funds back to the owner's main wallet
246
+ */
247
+ withdrawToMainWallet(options: {
248
+ chain: Chain;
249
+ amount: string;
250
+ currency?: "native" | "USDC";
251
+ }): Promise<{
252
+ chainId: number;
253
+ amount: string;
254
+ txHash: string;
255
+ success: boolean;
256
+ toAddress: string;
257
+ explorerUrl?: string | undefined;
258
+ }>;
259
+ /**
260
+ * Call Sponge paid APIs via x402
261
+ */
262
+ sponge(request: Record<string, unknown>): Promise<{
263
+ status: "success" | "payment_required" | "error";
264
+ task: string;
265
+ provider: string;
266
+ summary?: string | undefined;
267
+ error?: string | undefined;
268
+ data?: unknown;
269
+ image_data?: string | undefined;
270
+ image_mime_type?: string | undefined;
271
+ payment?: {
272
+ decimals: number;
273
+ chain: string;
274
+ to: string;
275
+ amount: string;
276
+ token: string;
277
+ raw_amount: string;
278
+ } | undefined;
279
+ payment_made?: {
280
+ chain: string;
281
+ to: string;
282
+ amount: string;
283
+ token: string;
284
+ expiresAt: string;
285
+ } | undefined;
286
+ wallet_balance?: Record<string, {
287
+ address: string;
288
+ balances: {
289
+ amount: string;
290
+ token: string;
291
+ usdValue?: string | undefined;
292
+ }[];
293
+ }> | undefined;
294
+ next_step?: string | undefined;
295
+ api_error_details?: unknown;
296
+ receipt?: unknown;
297
+ }>;
298
+ /**
299
+ * Create an x402 payment payload
300
+ */
301
+ createX402Payment(options: {
302
+ chain: Chain;
303
+ to: string;
304
+ token?: string;
305
+ amount: string;
306
+ decimals?: number;
307
+ valid_for_seconds?: number;
308
+ resource_url?: string;
309
+ resource_description?: string;
310
+ fee_payer?: string;
311
+ http_method?: "GET" | "POST";
312
+ }): Promise<{
313
+ expiresAt: string;
314
+ paymentPayloadBase64: string;
315
+ paymentRequirements: {
316
+ scheme: "exact";
317
+ network: string;
318
+ maxAmountRequired: string;
319
+ asset: string;
320
+ payTo: string;
321
+ };
322
+ paymentPayload?: unknown;
323
+ headerName?: string | undefined;
324
+ }>;
325
+ /**
326
+ * Create a new agent
327
+ */
328
+ createAgent(options: CreateAgentOptions): Promise<Agent>;
329
+ /**
330
+ * Get all agents for this user
331
+ */
332
+ getAgents(): Promise<Agent[]>;
333
+ /**
334
+ * Get the current agent
335
+ */
336
+ getAgent(): Promise<Agent>;
337
+ /**
338
+ * Get MCP configuration for Claude Agent SDK
339
+ *
340
+ * @example
341
+ * ```typescript
342
+ * import { query } from '@anthropic-ai/claude-agent-sdk';
343
+ *
344
+ * const wallet = await SpongeWallet.connect();
345
+ *
346
+ * for await (const msg of query({
347
+ * prompt: 'Check my balance',
348
+ * options: {
349
+ * mcpServers: {
350
+ * wallet: wallet.mcp(),
351
+ * },
352
+ * },
353
+ * })) {
354
+ * console.log(msg);
355
+ * }
356
+ * ```
357
+ */
358
+ mcp(): McpConfig;
359
+ /**
360
+ * Get direct tools for use with raw Anthropic SDK
361
+ *
362
+ * @example
363
+ * ```typescript
364
+ * const tools = wallet.tools();
365
+ *
366
+ * const response = await anthropic.messages.create({
367
+ * model: 'claude-sonnet-4-20250514',
368
+ * tools: tools.definitions,
369
+ * messages: [{ role: 'user', content: 'Check balance' }],
370
+ * });
371
+ *
372
+ * if (response.stop_reason === 'tool_use') {
373
+ * const result = await tools.execute(toolCall.name, toolCall.input);
374
+ * }
375
+ * ```
376
+ */
377
+ tools(): any;
378
+ /**
379
+ * Get the agent ID
380
+ */
381
+ getAgentId(): string;
382
+ }
383
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}