pay-lobster 1.0.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 (120) hide show
  1. package/README.md +401 -0
  2. package/README.md.bak +401 -0
  3. package/dist/agent.d.ts +132 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +224 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/analytics.d.ts +120 -0
  8. package/dist/analytics.d.ts.map +1 -0
  9. package/dist/analytics.js +345 -0
  10. package/dist/analytics.js.map +1 -0
  11. package/dist/approvals.d.ts +168 -0
  12. package/dist/approvals.d.ts.map +1 -0
  13. package/dist/approvals.js +406 -0
  14. package/dist/approvals.js.map +1 -0
  15. package/dist/circle-client.d.ts +152 -0
  16. package/dist/circle-client.d.ts.map +1 -0
  17. package/dist/circle-client.js +266 -0
  18. package/dist/circle-client.js.map +1 -0
  19. package/dist/commission.d.ts +191 -0
  20. package/dist/commission.d.ts.map +1 -0
  21. package/dist/commission.js +475 -0
  22. package/dist/commission.js.map +1 -0
  23. package/dist/condition-builder.d.ts +98 -0
  24. package/dist/condition-builder.d.ts.map +1 -0
  25. package/dist/condition-builder.js +193 -0
  26. package/dist/condition-builder.js.map +1 -0
  27. package/dist/contacts.d.ts +179 -0
  28. package/dist/contacts.d.ts.map +1 -0
  29. package/dist/contacts.js +445 -0
  30. package/dist/contacts.js.map +1 -0
  31. package/dist/easy.d.ts +22 -0
  32. package/dist/easy.d.ts.map +1 -0
  33. package/dist/easy.js +40 -0
  34. package/dist/easy.js.map +1 -0
  35. package/dist/erc8004/constants.d.ts +152 -0
  36. package/dist/erc8004/constants.d.ts.map +1 -0
  37. package/dist/erc8004/constants.js +114 -0
  38. package/dist/erc8004/constants.js.map +1 -0
  39. package/dist/erc8004/discovery.d.ts +84 -0
  40. package/dist/erc8004/discovery.d.ts.map +1 -0
  41. package/dist/erc8004/discovery.js +217 -0
  42. package/dist/erc8004/discovery.js.map +1 -0
  43. package/dist/erc8004/identity.d.ts +91 -0
  44. package/dist/erc8004/identity.d.ts.map +1 -0
  45. package/dist/erc8004/identity.js +250 -0
  46. package/dist/erc8004/identity.js.map +1 -0
  47. package/dist/erc8004/index.d.ts +147 -0
  48. package/dist/erc8004/index.d.ts.map +1 -0
  49. package/dist/erc8004/index.js +225 -0
  50. package/dist/erc8004/index.js.map +1 -0
  51. package/dist/erc8004/reputation.d.ts +133 -0
  52. package/dist/erc8004/reputation.d.ts.map +1 -0
  53. package/dist/erc8004/reputation.js +277 -0
  54. package/dist/erc8004/reputation.js.map +1 -0
  55. package/dist/escrow-templates.d.ts +38 -0
  56. package/dist/escrow-templates.d.ts.map +1 -0
  57. package/dist/escrow-templates.js +419 -0
  58. package/dist/escrow-templates.js.map +1 -0
  59. package/dist/escrow.d.ts +320 -0
  60. package/dist/escrow.d.ts.map +1 -0
  61. package/dist/escrow.js +854 -0
  62. package/dist/escrow.js.map +1 -0
  63. package/dist/index.d.ts +11 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +33 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/invoices.d.ts +212 -0
  68. package/dist/invoices.d.ts.map +1 -0
  69. package/dist/invoices.js +393 -0
  70. package/dist/invoices.js.map +1 -0
  71. package/dist/notifications.d.ts +141 -0
  72. package/dist/notifications.d.ts.map +1 -0
  73. package/dist/notifications.js +350 -0
  74. package/dist/notifications.js.map +1 -0
  75. package/dist/tips.d.ts +171 -0
  76. package/dist/tips.d.ts.map +1 -0
  77. package/dist/tips.js +390 -0
  78. package/dist/tips.js.map +1 -0
  79. package/dist/types.d.ts +100 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +6 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/x402-client.d.ts +127 -0
  84. package/dist/x402-client.d.ts.map +1 -0
  85. package/dist/x402-client.js +350 -0
  86. package/dist/x402-client.js.map +1 -0
  87. package/dist/x402-server.d.ts +133 -0
  88. package/dist/x402-server.d.ts.map +1 -0
  89. package/dist/x402-server.js +330 -0
  90. package/dist/x402-server.js.map +1 -0
  91. package/lib/agent.ts +273 -0
  92. package/lib/analytics.ts +474 -0
  93. package/lib/analytics.ts.bak +474 -0
  94. package/lib/approvals.ts +585 -0
  95. package/lib/approvals.ts.bak +585 -0
  96. package/lib/circle-client.ts +376 -0
  97. package/lib/circle-client.ts.bak +376 -0
  98. package/lib/commission.ts +680 -0
  99. package/lib/commission.ts.bak +680 -0
  100. package/lib/condition-builder.ts +223 -0
  101. package/lib/condition-builder.ts.bak +223 -0
  102. package/lib/contacts.ts +615 -0
  103. package/lib/contacts.ts.bak +615 -0
  104. package/lib/easy.ts +46 -0
  105. package/lib/easy.ts.bak +352 -0
  106. package/lib/erc8004/constants.ts +175 -0
  107. package/lib/erc8004/discovery.ts +299 -0
  108. package/lib/erc8004/identity.ts +327 -0
  109. package/lib/erc8004/index.ts +285 -0
  110. package/lib/erc8004/reputation.ts +368 -0
  111. package/lib/escrow-templates.ts +462 -0
  112. package/lib/escrow.ts +1216 -0
  113. package/lib/index.ts +13 -0
  114. package/lib/invoices.ts +588 -0
  115. package/lib/notifications.ts +484 -0
  116. package/lib/tips.ts +570 -0
  117. package/lib/types.ts +108 -0
  118. package/lib/x402-client.ts +471 -0
  119. package/lib/x402-server.ts +462 -0
  120. package/package.json +58 -0
@@ -0,0 +1,445 @@
1
+ "use strict";
2
+ /**
3
+ * Contact & Address Book Management
4
+ *
5
+ * Secure storage for payment contacts with labels, validation, and search.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.PREMIUM_CONTACT_PRICING = exports.ContactManager = void 0;
12
+ exports.generateX402VerificationUrl = generateX402VerificationUrl;
13
+ exports.verifyContactPremium = verifyContactPremium;
14
+ exports.mockContactVerification = mockContactVerification;
15
+ const crypto_1 = __importDefault(require("crypto"));
16
+ const promises_1 = __importDefault(require("fs/promises"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const DATA_DIR = process.env.USDC_DATA_DIR || './data';
19
+ /**
20
+ * Contact Manager
21
+ */
22
+ class ContactManager {
23
+ constructor(dataDir = DATA_DIR) {
24
+ this.dataPath = path_1.default.join(dataDir, 'contacts.json');
25
+ }
26
+ async loadContacts() {
27
+ try {
28
+ const data = await promises_1.default.readFile(this.dataPath, 'utf-8');
29
+ return JSON.parse(data);
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ }
35
+ async saveContacts(contacts) {
36
+ await promises_1.default.mkdir(path_1.default.dirname(this.dataPath), { recursive: true });
37
+ await promises_1.default.writeFile(this.dataPath, JSON.stringify(contacts, null, 2));
38
+ }
39
+ /**
40
+ * Add a new contact
41
+ */
42
+ async add(params) {
43
+ const contacts = await this.loadContacts();
44
+ // Check for duplicate alias
45
+ if (params.alias) {
46
+ const existing = contacts.find(c => c.alias?.toLowerCase() === params.alias.toLowerCase());
47
+ if (existing) {
48
+ throw new Error(`Alias "${params.alias}" already exists`);
49
+ }
50
+ }
51
+ const contact = {
52
+ id: crypto_1.default.randomUUID(),
53
+ name: params.name,
54
+ alias: params.alias,
55
+ email: params.email,
56
+ phone: params.phone,
57
+ addresses: (params.addresses || []).map(addr => ({
58
+ ...addr,
59
+ verified: this.isValidAddress(addr.address),
60
+ addedAt: new Date().toISOString(),
61
+ })),
62
+ tags: params.tags || [],
63
+ totalSent: '0',
64
+ totalReceived: '0',
65
+ transactionCount: 0,
66
+ notes: params.notes,
67
+ createdAt: new Date().toISOString(),
68
+ updatedAt: new Date().toISOString(),
69
+ };
70
+ // Set default address if provided
71
+ if (contact.addresses.length > 0) {
72
+ contact.defaultChain = contact.addresses[0].chain;
73
+ contact.defaultAddress = contact.addresses[0].address;
74
+ }
75
+ contacts.push(contact);
76
+ await this.saveContacts(contacts);
77
+ return contact;
78
+ }
79
+ /**
80
+ * Find contact by name, alias, or address
81
+ */
82
+ async find(query) {
83
+ const contacts = await this.loadContacts();
84
+ const lowerQuery = query.toLowerCase();
85
+ return contacts.find(c => c.name.toLowerCase() === lowerQuery ||
86
+ c.alias?.toLowerCase() === lowerQuery ||
87
+ c.addresses.some(a => a.address.toLowerCase() === lowerQuery)) || null;
88
+ }
89
+ /**
90
+ * Resolve a recipient (name, alias, or address) to an address
91
+ */
92
+ async resolveRecipient(recipient, chain) {
93
+ // If it's already a valid address, return it
94
+ if (this.isValidAddress(recipient)) {
95
+ const contact = await this.findByAddress(recipient);
96
+ return {
97
+ contact: contact || undefined,
98
+ address: recipient,
99
+ chain: chain || 'ETH-SEPOLIA',
100
+ };
101
+ }
102
+ // Look up contact
103
+ const contact = await this.find(recipient);
104
+ if (!contact) {
105
+ return null;
106
+ }
107
+ // Find address for requested chain or default
108
+ const targetChain = chain || contact.defaultChain || 'ETH-SEPOLIA';
109
+ const addr = contact.addresses.find(a => a.chain === targetChain) ||
110
+ contact.addresses[0];
111
+ if (!addr) {
112
+ return null;
113
+ }
114
+ return {
115
+ contact,
116
+ address: addr.address,
117
+ chain: addr.chain,
118
+ };
119
+ }
120
+ /**
121
+ * Search contacts
122
+ */
123
+ async search(query) {
124
+ const contacts = await this.loadContacts();
125
+ const lowerQuery = query.toLowerCase();
126
+ return contacts.filter(c => c.name.toLowerCase().includes(lowerQuery) ||
127
+ c.alias?.toLowerCase().includes(lowerQuery) ||
128
+ c.email?.toLowerCase().includes(lowerQuery) ||
129
+ c.tags.some(t => t.toLowerCase().includes(lowerQuery)) ||
130
+ c.notes?.toLowerCase().includes(lowerQuery));
131
+ }
132
+ /**
133
+ * List all contacts
134
+ */
135
+ async list(options) {
136
+ let contacts = await this.loadContacts();
137
+ if (options?.tag) {
138
+ contacts = contacts.filter(c => c.tags.some(t => t.toLowerCase() === options.tag.toLowerCase()));
139
+ }
140
+ switch (options?.sortBy) {
141
+ case 'recent':
142
+ contacts.sort((a, b) => {
143
+ const dateA = a.lastTransactionAt || a.createdAt;
144
+ const dateB = b.lastTransactionAt || b.createdAt;
145
+ return new Date(dateB).getTime() - new Date(dateA).getTime();
146
+ });
147
+ break;
148
+ case 'frequent':
149
+ contacts.sort((a, b) => b.transactionCount - a.transactionCount);
150
+ break;
151
+ case 'name':
152
+ default:
153
+ contacts.sort((a, b) => a.name.localeCompare(b.name));
154
+ }
155
+ return contacts;
156
+ }
157
+ /**
158
+ * Find contact by address
159
+ */
160
+ async findByAddress(address) {
161
+ const contacts = await this.loadContacts();
162
+ return contacts.find(c => c.addresses.some(a => a.address.toLowerCase() === address.toLowerCase())) || null;
163
+ }
164
+ /**
165
+ * Update contact
166
+ */
167
+ async update(id, updates) {
168
+ const contacts = await this.loadContacts();
169
+ const contact = contacts.find(c => c.id === id);
170
+ if (contact) {
171
+ Object.assign(contact, updates, { updatedAt: new Date().toISOString() });
172
+ await this.saveContacts(contacts);
173
+ }
174
+ return contact || null;
175
+ }
176
+ /**
177
+ * Add address to contact
178
+ */
179
+ async addAddress(contactId, address) {
180
+ const contacts = await this.loadContacts();
181
+ const contact = contacts.find(c => c.id === contactId);
182
+ if (contact) {
183
+ // Check if address already exists
184
+ if (contact.addresses.some(a => a.chain === address.chain &&
185
+ a.address.toLowerCase() === address.address.toLowerCase())) {
186
+ throw new Error('Address already exists for this chain');
187
+ }
188
+ contact.addresses.push({
189
+ ...address,
190
+ verified: this.isValidAddress(address.address),
191
+ addedAt: new Date().toISOString(),
192
+ });
193
+ contact.updatedAt = new Date().toISOString();
194
+ await this.saveContacts(contacts);
195
+ }
196
+ return contact || null;
197
+ }
198
+ /**
199
+ * Remove address from contact
200
+ */
201
+ async removeAddress(contactId, chain) {
202
+ const contacts = await this.loadContacts();
203
+ const contact = contacts.find(c => c.id === contactId);
204
+ if (contact) {
205
+ contact.addresses = contact.addresses.filter(a => a.chain !== chain);
206
+ contact.updatedAt = new Date().toISOString();
207
+ // Update default if removed
208
+ if (contact.defaultChain === chain && contact.addresses.length > 0) {
209
+ contact.defaultChain = contact.addresses[0].chain;
210
+ contact.defaultAddress = contact.addresses[0].address;
211
+ }
212
+ await this.saveContacts(contacts);
213
+ }
214
+ return contact || null;
215
+ }
216
+ /**
217
+ * Set default address for contact
218
+ */
219
+ async setDefault(contactId, chain) {
220
+ const contacts = await this.loadContacts();
221
+ const contact = contacts.find(c => c.id === contactId);
222
+ if (contact) {
223
+ const addr = contact.addresses.find(a => a.chain === chain);
224
+ if (addr) {
225
+ contact.defaultChain = addr.chain;
226
+ contact.defaultAddress = addr.address;
227
+ contact.updatedAt = new Date().toISOString();
228
+ await this.saveContacts(contacts);
229
+ }
230
+ }
231
+ return contact || null;
232
+ }
233
+ /**
234
+ * Add tags to contact
235
+ */
236
+ async addTags(contactId, tags) {
237
+ const contacts = await this.loadContacts();
238
+ const contact = contacts.find(c => c.id === contactId);
239
+ if (contact) {
240
+ const newTags = tags.filter(t => !contact.tags.includes(t));
241
+ contact.tags.push(...newTags);
242
+ contact.updatedAt = new Date().toISOString();
243
+ await this.saveContacts(contacts);
244
+ }
245
+ return contact || null;
246
+ }
247
+ /**
248
+ * Record a transaction with contact
249
+ */
250
+ async recordTransaction(address, type, amount) {
251
+ const contacts = await this.loadContacts();
252
+ const contact = contacts.find(c => c.addresses.some(a => a.address.toLowerCase() === address.toLowerCase()));
253
+ if (contact) {
254
+ const amountNum = parseFloat(amount);
255
+ if (type === 'sent') {
256
+ contact.totalSent = (parseFloat(contact.totalSent) + amountNum).toString();
257
+ }
258
+ else {
259
+ contact.totalReceived = (parseFloat(contact.totalReceived) + amountNum).toString();
260
+ }
261
+ contact.transactionCount++;
262
+ contact.lastTransactionAt = new Date().toISOString();
263
+ contact.updatedAt = new Date().toISOString();
264
+ await this.saveContacts(contacts);
265
+ }
266
+ }
267
+ /**
268
+ * Delete contact
269
+ */
270
+ async delete(id) {
271
+ const contacts = await this.loadContacts();
272
+ const index = contacts.findIndex(c => c.id === id);
273
+ if (index >= 0) {
274
+ contacts.splice(index, 1);
275
+ await this.saveContacts(contacts);
276
+ return true;
277
+ }
278
+ return false;
279
+ }
280
+ /**
281
+ * Export contacts to CSV
282
+ */
283
+ async exportCSV() {
284
+ const contacts = await this.loadContacts();
285
+ const header = 'Name,Alias,Email,Chain,Address,Tags,Total Sent,Total Received\n';
286
+ const rows = contacts.flatMap(c => c.addresses.map(a => `"${c.name}","${c.alias || ''}","${c.email || ''}","${a.chain}","${a.address}","${c.tags.join(';')}","${c.totalSent}","${c.totalReceived}"`));
287
+ return header + rows.join('\n');
288
+ }
289
+ /**
290
+ * Import contacts from CSV
291
+ */
292
+ async importCSV(csvContent) {
293
+ const lines = csvContent.split('\n').slice(1); // Skip header
294
+ let imported = 0;
295
+ let skipped = 0;
296
+ for (const line of lines) {
297
+ if (!line.trim())
298
+ continue;
299
+ try {
300
+ // Simple CSV parsing (doesn't handle all edge cases)
301
+ const parts = line.match(/(?:"[^"]*"|[^,])+/g) || [];
302
+ const [name, alias, email, chain, address, tags] = parts.map(p => p.replace(/^"|"$/g, ''));
303
+ if (!name || !address) {
304
+ skipped++;
305
+ continue;
306
+ }
307
+ // Check if contact exists
308
+ let contact = await this.find(name);
309
+ if (contact) {
310
+ // Add address to existing contact
311
+ await this.addAddress(contact.id, { chain: chain || 'ETH-SEPOLIA', address });
312
+ }
313
+ else {
314
+ // Create new contact
315
+ await this.add({
316
+ name,
317
+ alias: alias || undefined,
318
+ email: email || undefined,
319
+ addresses: [{ chain: chain || 'ETH-SEPOLIA', address }],
320
+ tags: tags ? tags.split(';') : [],
321
+ });
322
+ }
323
+ imported++;
324
+ }
325
+ catch (err) {
326
+ skipped++;
327
+ }
328
+ }
329
+ return { imported, skipped };
330
+ }
331
+ /**
332
+ * Validate Ethereum address
333
+ */
334
+ isValidAddress(address) {
335
+ return /^0x[a-fA-F0-9]{40}$/.test(address);
336
+ }
337
+ }
338
+ exports.ContactManager = ContactManager;
339
+ // Premium verification pricing (in USDC)
340
+ exports.PREMIUM_CONTACT_PRICING = {
341
+ basicVerification: '0.05', // Basic on-chain verification
342
+ fullVerification: '0.10', // Full verification + risk score
343
+ fraudCheck: '0.15', // Fraud detection analysis
344
+ fullReport: '0.25', // Complete verification report
345
+ };
346
+ /**
347
+ * Generate x402 verification URL for contact
348
+ */
349
+ function generateX402VerificationUrl(contactId, verificationType = 'basic', baseUrl) {
350
+ const base = baseUrl || process.env.X402_BASE_URL || 'https://api.lobster-pay.com';
351
+ return `${base}/contacts/${contactId}/verify/${verificationType}`;
352
+ }
353
+ /**
354
+ * Verify contact with premium features via x402
355
+ */
356
+ async function verifyContactPremium(contact, features, x402Fetch) {
357
+ const result = {
358
+ contact,
359
+ onChainVerified: false,
360
+ verified: false,
361
+ verifiedAt: new Date().toISOString(),
362
+ };
363
+ try {
364
+ // Determine verification type based on features
365
+ let verificationType = 'basic';
366
+ if (features.fraudDetection) {
367
+ verificationType = 'fraud';
368
+ }
369
+ else if (features.onChainVerification && features.riskAssessment && features.transactionHistory) {
370
+ verificationType = 'report';
371
+ }
372
+ else if (features.riskAssessment) {
373
+ verificationType = 'full';
374
+ }
375
+ // Call x402-protected verification endpoint
376
+ const url = generateX402VerificationUrl(contact.id, verificationType);
377
+ const response = await x402Fetch(url);
378
+ if (!response.ok) {
379
+ throw new Error(`Verification failed: ${response.statusText}`);
380
+ }
381
+ const data = await response.json();
382
+ // Parse verification results
383
+ result.onChainVerified = data.onChainVerified || false;
384
+ result.riskScore = data.riskScore;
385
+ result.fraudFlags = data.fraudFlags;
386
+ result.transactionSummary = data.transactionSummary;
387
+ result.verified = true;
388
+ }
389
+ catch (error) {
390
+ console.error('Contact verification error:', error);
391
+ result.verified = false;
392
+ }
393
+ return result;
394
+ }
395
+ /**
396
+ * Mock verification for testing
397
+ * Simulates what a real x402-protected endpoint would return
398
+ */
399
+ function mockContactVerification(contact) {
400
+ // Generate mock on-chain data
401
+ const addressCount = contact.addresses.length;
402
+ const hasMultipleChains = addressCount > 1;
403
+ // Calculate mock risk score
404
+ let riskScore = 20; // Base low risk
405
+ if (addressCount === 0)
406
+ riskScore += 40; // No addresses = higher risk
407
+ if (!contact.email && !contact.phone)
408
+ riskScore += 20; // No contact info
409
+ if (contact.transactionCount === 0)
410
+ riskScore += 30; // No transaction history
411
+ riskScore = Math.min(100, riskScore);
412
+ const riskLevel = riskScore < 25 ? 'low' :
413
+ riskScore < 50 ? 'medium' :
414
+ riskScore < 75 ? 'high' : 'critical';
415
+ const factors = [];
416
+ if (addressCount === 0)
417
+ factors.push('No wallet addresses on file');
418
+ if (contact.transactionCount === 0)
419
+ factors.push('No transaction history');
420
+ if (!contact.email && !contact.phone)
421
+ factors.push('No contact information');
422
+ if (hasMultipleChains)
423
+ factors.push('Active on multiple chains (positive)');
424
+ return {
425
+ contact,
426
+ onChainVerified: addressCount > 0,
427
+ riskScore: {
428
+ score: riskScore,
429
+ level: riskLevel,
430
+ factors,
431
+ },
432
+ fraudFlags: riskScore > 70 ? ['High risk score', 'Limited verification data'] : [],
433
+ transactionSummary: {
434
+ totalVolume: contact.totalSent || '0',
435
+ transactionCount: contact.transactionCount,
436
+ firstSeen: contact.createdAt,
437
+ lastSeen: contact.lastTransactionAt || contact.createdAt,
438
+ interactedWith: Math.floor(Math.random() * 50) + 5,
439
+ },
440
+ verified: true,
441
+ verifiedAt: new Date().toISOString(),
442
+ };
443
+ }
444
+ exports.default = ContactManager;
445
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../lib/contacts.ts"],"names":[],"mappings":"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"}
package/dist/easy.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Easy Mode API - Simplified interface for Pay Lobster
3
+ */
4
+ import { LobsterAgent } from './agent';
5
+ import type { LobsterConfig } from './types';
6
+ /**
7
+ * Create a new Lobster agent with minimal configuration
8
+ */
9
+ export declare function createLobsterAgent(config?: LobsterConfig): LobsterAgent;
10
+ /**
11
+ * Quick start - create and initialize an agent in one call
12
+ */
13
+ export declare function quickStart(config?: LobsterConfig): Promise<LobsterAgent>;
14
+ /**
15
+ * One-liner to send USDC
16
+ */
17
+ export declare function sendUSDC(to: string, amount: number, config?: LobsterConfig): Promise<string>;
18
+ /**
19
+ * One-liner to check balance
20
+ */
21
+ export declare function checkBalance(address: string, config?: LobsterConfig): Promise<string>;
22
+ //# sourceMappingURL=easy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easy.d.ts","sourceRoot":"","sources":["../lib/easy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,GAAE,aAAkB,GAAG,YAAY,CAE3E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAIlF;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,aAAkB,GACzB,OAAO,CAAC,MAAM,CAAC,CAGjB"}
package/dist/easy.js ADDED
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Easy Mode API - Simplified interface for Pay Lobster
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createLobsterAgent = createLobsterAgent;
7
+ exports.quickStart = quickStart;
8
+ exports.sendUSDC = sendUSDC;
9
+ exports.checkBalance = checkBalance;
10
+ const agent_1 = require("./agent");
11
+ /**
12
+ * Create a new Lobster agent with minimal configuration
13
+ */
14
+ function createLobsterAgent(config = {}) {
15
+ return new agent_1.LobsterAgent(config);
16
+ }
17
+ /**
18
+ * Quick start - create and initialize an agent in one call
19
+ */
20
+ async function quickStart(config = {}) {
21
+ const agent = createLobsterAgent(config);
22
+ await agent.initialize();
23
+ return agent;
24
+ }
25
+ /**
26
+ * One-liner to send USDC
27
+ */
28
+ async function sendUSDC(to, amount, config = {}) {
29
+ const agent = await quickStart(config);
30
+ const tx = await agent.send(to, amount);
31
+ return tx.id;
32
+ }
33
+ /**
34
+ * One-liner to check balance
35
+ */
36
+ async function checkBalance(address, config = {}) {
37
+ const agent = createLobsterAgent({ ...config, walletId: address });
38
+ return agent.getBalance();
39
+ }
40
+ //# sourceMappingURL=easy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easy.js","sourceRoot":"","sources":["../lib/easy.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAQH,gDAEC;AAKD,gCAIC;AAKD,4BAQC;AAKD,oCAMC;AAzCD,mCAAuC;AAGvC;;GAEG;AACH,SAAgB,kBAAkB,CAAC,SAAwB,EAAE;IAC3D,OAAO,IAAI,oBAAY,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAAC,SAAwB,EAAE;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;IACzB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,QAAQ,CAC5B,EAAU,EACV,MAAc,EACd,SAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,EAAE,CAAC;AACf,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,SAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC"}