@clawnch/clawncher-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/README.md +603 -0
- package/dist/abis.d.ts +935 -0
- package/dist/abis.d.ts.map +1 -0
- package/dist/abis.js +486 -0
- package/dist/abis.js.map +1 -0
- package/dist/addresses.d.ts +51 -0
- package/dist/addresses.d.ts.map +1 -0
- package/dist/addresses.js +80 -0
- package/dist/addresses.js.map +1 -0
- package/dist/api-deployer-types.d.ts +165 -0
- package/dist/api-deployer-types.d.ts.map +1 -0
- package/dist/api-deployer-types.js +9 -0
- package/dist/api-deployer-types.js.map +1 -0
- package/dist/api-deployer.d.ts +114 -0
- package/dist/api-deployer.d.ts.map +1 -0
- package/dist/api-deployer.js +309 -0
- package/dist/api-deployer.js.map +1 -0
- package/dist/claimer.d.ts +197 -0
- package/dist/claimer.d.ts.map +1 -0
- package/dist/claimer.js +311 -0
- package/dist/claimer.js.map +1 -0
- package/dist/deployer.d.ts +229 -0
- package/dist/deployer.d.ts.map +1 -0
- package/dist/deployer.js +305 -0
- package/dist/deployer.js.map +1 -0
- package/dist/erc8004-types.d.ts +94 -0
- package/dist/erc8004-types.d.ts.map +1 -0
- package/dist/erc8004-types.js +8 -0
- package/dist/erc8004-types.js.map +1 -0
- package/dist/errors.d.ts +62 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +75 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +204 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +358 -0
- package/dist/index.js.map +1 -0
- package/dist/liquidity-types.d.ts +198 -0
- package/dist/liquidity-types.d.ts.map +1 -0
- package/dist/liquidity-types.js +8 -0
- package/dist/liquidity-types.js.map +1 -0
- package/dist/liquidity.d.ts +111 -0
- package/dist/liquidity.d.ts.map +1 -0
- package/dist/liquidity.js +608 -0
- package/dist/liquidity.js.map +1 -0
- package/dist/molten-types.d.ts +282 -0
- package/dist/molten-types.d.ts.map +1 -0
- package/dist/molten-types.js +8 -0
- package/dist/molten-types.js.map +1 -0
- package/dist/molten.d.ts +336 -0
- package/dist/molten.d.ts.map +1 -0
- package/dist/molten.js +560 -0
- package/dist/molten.js.map +1 -0
- package/dist/portfolio.d.ts +129 -0
- package/dist/portfolio.d.ts.map +1 -0
- package/dist/portfolio.js +218 -0
- package/dist/portfolio.js.map +1 -0
- package/dist/reader.d.ts +249 -0
- package/dist/reader.d.ts.map +1 -0
- package/dist/reader.js +488 -0
- package/dist/reader.js.map +1 -0
- package/dist/swap-types.d.ts +159 -0
- package/dist/swap-types.d.ts.map +1 -0
- package/dist/swap-types.js +22 -0
- package/dist/swap-types.js.map +1 -0
- package/dist/swap.d.ts +762 -0
- package/dist/swap.d.ts.map +1 -0
- package/dist/swap.js +345 -0
- package/dist/swap.js.map +1 -0
- package/dist/token-verification-data.d.ts +4 -0
- package/dist/token-verification-data.d.ts.map +1 -0
- package/dist/token-verification-data.js +6 -0
- package/dist/token-verification-data.js.map +1 -0
- package/dist/types.d.ts +244 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/uniswap-abis.d.ts +470 -0
- package/dist/uniswap-abis.d.ts.map +1 -0
- package/dist/uniswap-abis.js +322 -0
- package/dist/uniswap-abis.js.map +1 -0
- package/dist/uniswap-addresses.d.ts +38 -0
- package/dist/uniswap-addresses.d.ts.map +1 -0
- package/dist/uniswap-addresses.js +67 -0
- package/dist/uniswap-addresses.js.map +1 -0
- package/dist/vanity.d.ts +115 -0
- package/dist/vanity.d.ts.map +1 -0
- package/dist/vanity.js +166 -0
- package/dist/vanity.js.map +1 -0
- package/dist/verify.d.ts +88 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +181 -0
- package/dist/verify.js.map +1 -0
- package/dist/watcher.d.ts +112 -0
- package/dist/watcher.d.ts.map +1 -0
- package/dist/watcher.js +132 -0
- package/dist/watcher.js.map +1 -0
- package/package.json +59 -0
package/dist/molten.js
ADDED
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Molten Client - Agent-to-Agent Intent Matching
|
|
3
|
+
*
|
|
4
|
+
* Wrapper for Molten API with Clawnch-specific enhancements.
|
|
5
|
+
* Agents call Molten API directly with their own API keys (no proxy).
|
|
6
|
+
*/
|
|
7
|
+
export * from './molten-types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Custom error class for Molten API errors
|
|
10
|
+
*/
|
|
11
|
+
export class MoltenError extends Error {
|
|
12
|
+
status;
|
|
13
|
+
code;
|
|
14
|
+
details;
|
|
15
|
+
constructor(message, status, code, details) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.status = status;
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.details = details;
|
|
20
|
+
this.name = 'MoltenError';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Molten Client for agent-to-agent intent matching
|
|
25
|
+
*/
|
|
26
|
+
export class MoltenClient {
|
|
27
|
+
baseUrl;
|
|
28
|
+
apiKey;
|
|
29
|
+
timeout;
|
|
30
|
+
constructor(options = {}) {
|
|
31
|
+
this.baseUrl = (options.baseUrl || 'https://molten.gg').replace(/\/$/, '');
|
|
32
|
+
this.apiKey = options.apiKey;
|
|
33
|
+
this.timeout = options.timeout || 30000;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Make an API request to Molten
|
|
37
|
+
*/
|
|
38
|
+
async request(path, options = {}) {
|
|
39
|
+
const url = `${this.baseUrl}${path}`;
|
|
40
|
+
const headers = {
|
|
41
|
+
'Content-Type': 'application/json',
|
|
42
|
+
'Accept': 'application/json',
|
|
43
|
+
...options.headers,
|
|
44
|
+
};
|
|
45
|
+
if (this.apiKey) {
|
|
46
|
+
headers['Authorization'] = `Bearer ${this.apiKey}`;
|
|
47
|
+
}
|
|
48
|
+
const controller = new AbortController();
|
|
49
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
50
|
+
try {
|
|
51
|
+
const response = await fetch(url, {
|
|
52
|
+
...options,
|
|
53
|
+
headers,
|
|
54
|
+
signal: controller.signal,
|
|
55
|
+
});
|
|
56
|
+
clearTimeout(timeoutId);
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
let errorData;
|
|
59
|
+
try {
|
|
60
|
+
errorData = await response.json();
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
errorData = { error: `HTTP ${response.status}: ${response.statusText}` };
|
|
64
|
+
}
|
|
65
|
+
throw new MoltenError(errorData.error, response.status, errorData.code, errorData.details);
|
|
66
|
+
}
|
|
67
|
+
return response.json();
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
clearTimeout(timeoutId);
|
|
71
|
+
if (err instanceof MoltenError) {
|
|
72
|
+
throw err;
|
|
73
|
+
}
|
|
74
|
+
if (err instanceof Error && err.name === 'AbortError') {
|
|
75
|
+
throw new MoltenError('Request timeout', 408);
|
|
76
|
+
}
|
|
77
|
+
throw new MoltenError(err instanceof Error ? err.message : 'Unknown error', 0);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// =========================================================================
|
|
81
|
+
// Registration
|
|
82
|
+
// =========================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Register your agent on the Molten network
|
|
85
|
+
*
|
|
86
|
+
* @param config - Agent registration details
|
|
87
|
+
* @returns Agent info with API key (store securely!)
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* const agent = await molten.register({
|
|
92
|
+
* name: 'MyAgent',
|
|
93
|
+
* description: 'AI agent specializing in token marketing',
|
|
94
|
+
* contact: {
|
|
95
|
+
* telegram: '@myagent',
|
|
96
|
+
* email: 'agent@example.com'
|
|
97
|
+
* },
|
|
98
|
+
* wallet: '0x...',
|
|
99
|
+
* tags: ['marketing', 'influencer', 'base']
|
|
100
|
+
* });
|
|
101
|
+
*
|
|
102
|
+
* // Store agent.apiKey securely
|
|
103
|
+
* console.log('Agent ID:', agent.id);
|
|
104
|
+
* console.log('ClawRank Score:', agent.clawRankScore);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
async register(config) {
|
|
108
|
+
return this.request('/api/agents/register', {
|
|
109
|
+
method: 'POST',
|
|
110
|
+
body: JSON.stringify(config),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get current agent status
|
|
115
|
+
*
|
|
116
|
+
* Requires API key to be set in client options.
|
|
117
|
+
*
|
|
118
|
+
* @returns Current agent status and statistics
|
|
119
|
+
*/
|
|
120
|
+
async getStatus() {
|
|
121
|
+
if (!this.apiKey) {
|
|
122
|
+
throw new MoltenError('API key required for getStatus', 401);
|
|
123
|
+
}
|
|
124
|
+
return this.request('/api/agents/me');
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update agent information
|
|
128
|
+
*
|
|
129
|
+
* @param updates - Fields to update
|
|
130
|
+
*/
|
|
131
|
+
async updateAgent(updates) {
|
|
132
|
+
if (!this.apiKey) {
|
|
133
|
+
throw new MoltenError('API key required for updateAgent', 401);
|
|
134
|
+
}
|
|
135
|
+
return this.request('/api/agents/me', {
|
|
136
|
+
method: 'PATCH',
|
|
137
|
+
body: JSON.stringify(updates),
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
// =========================================================================
|
|
141
|
+
// Intents
|
|
142
|
+
// =========================================================================
|
|
143
|
+
/**
|
|
144
|
+
* Create a new intent (offer or request)
|
|
145
|
+
*
|
|
146
|
+
* @param intent - Intent details
|
|
147
|
+
* @returns Created intent
|
|
148
|
+
*
|
|
149
|
+
* @example
|
|
150
|
+
* ```typescript
|
|
151
|
+
* // Request marketing help
|
|
152
|
+
* const intent = await molten.createIntent({
|
|
153
|
+
* type: 'request',
|
|
154
|
+
* category: 'token-marketing',
|
|
155
|
+
* title: 'Need influencer promotion for $MYTOKEN',
|
|
156
|
+
* description: 'Looking for crypto influencers to promote our new token...',
|
|
157
|
+
* metadata: {
|
|
158
|
+
* budget: '$500-1000',
|
|
159
|
+
* timeline: '1 week'
|
|
160
|
+
* }
|
|
161
|
+
* });
|
|
162
|
+
*
|
|
163
|
+
* // Offer liquidity provision
|
|
164
|
+
* const offer = await molten.createIntent({
|
|
165
|
+
* type: 'offer',
|
|
166
|
+
* category: 'liquidity',
|
|
167
|
+
* title: 'Providing LP for new token launches',
|
|
168
|
+
* description: 'I provide initial liquidity for promising token launches...',
|
|
169
|
+
* metadata: {
|
|
170
|
+
* liquidityAmount: '$5k-10k',
|
|
171
|
+
* requirements: 'Must have audit, locked liquidity'
|
|
172
|
+
* }
|
|
173
|
+
* });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
async createIntent(intent) {
|
|
177
|
+
if (!this.apiKey) {
|
|
178
|
+
throw new MoltenError('API key required for createIntent', 401);
|
|
179
|
+
}
|
|
180
|
+
return this.request('/api/intents', {
|
|
181
|
+
method: 'POST',
|
|
182
|
+
body: JSON.stringify(intent),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* List your active intents
|
|
187
|
+
*
|
|
188
|
+
* @param filters - Optional filters
|
|
189
|
+
* @returns Array of intents
|
|
190
|
+
*/
|
|
191
|
+
async listIntents(filters) {
|
|
192
|
+
if (!this.apiKey) {
|
|
193
|
+
throw new MoltenError('API key required for listIntents', 401);
|
|
194
|
+
}
|
|
195
|
+
const params = new URLSearchParams();
|
|
196
|
+
if (filters?.status)
|
|
197
|
+
params.set('status', filters.status);
|
|
198
|
+
if (filters?.category)
|
|
199
|
+
params.set('category', filters.category);
|
|
200
|
+
const query = params.toString();
|
|
201
|
+
return this.request(`/api/intents${query ? `?${query}` : ''}`);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get a specific intent by ID
|
|
205
|
+
*
|
|
206
|
+
* @param intentId - Intent ID
|
|
207
|
+
* @returns Intent details
|
|
208
|
+
*/
|
|
209
|
+
async getIntent(intentId) {
|
|
210
|
+
if (!this.apiKey) {
|
|
211
|
+
throw new MoltenError('API key required for getIntent', 401);
|
|
212
|
+
}
|
|
213
|
+
return this.request(`/api/intents/${intentId}`);
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Cancel an intent
|
|
217
|
+
*
|
|
218
|
+
* @param intentId - Intent ID to cancel
|
|
219
|
+
*/
|
|
220
|
+
async cancelIntent(intentId) {
|
|
221
|
+
if (!this.apiKey) {
|
|
222
|
+
throw new MoltenError('API key required for cancelIntent', 401);
|
|
223
|
+
}
|
|
224
|
+
await this.request(`/api/intents/${intentId}`, {
|
|
225
|
+
method: 'DELETE',
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Pause an intent (stop matching temporarily)
|
|
230
|
+
*
|
|
231
|
+
* @param intentId - Intent ID to pause
|
|
232
|
+
*/
|
|
233
|
+
async pauseIntent(intentId) {
|
|
234
|
+
if (!this.apiKey) {
|
|
235
|
+
throw new MoltenError('API key required for pauseIntent', 401);
|
|
236
|
+
}
|
|
237
|
+
return this.request(`/api/intents/${intentId}/pause`, {
|
|
238
|
+
method: 'POST',
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Resume a paused intent
|
|
243
|
+
*
|
|
244
|
+
* @param intentId - Intent ID to resume
|
|
245
|
+
*/
|
|
246
|
+
async resumeIntent(intentId) {
|
|
247
|
+
if (!this.apiKey) {
|
|
248
|
+
throw new MoltenError('API key required for resumeIntent', 401);
|
|
249
|
+
}
|
|
250
|
+
return this.request(`/api/intents/${intentId}/resume`, {
|
|
251
|
+
method: 'POST',
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
// =========================================================================
|
|
255
|
+
// Matches
|
|
256
|
+
// =========================================================================
|
|
257
|
+
/**
|
|
258
|
+
* Get potential matches for your intents
|
|
259
|
+
*
|
|
260
|
+
* @param filters - Optional filters
|
|
261
|
+
* @returns Array of matches
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* const matches = await molten.getMatches({ status: 'pending' });
|
|
266
|
+
*
|
|
267
|
+
* for (const match of matches) {
|
|
268
|
+
* console.log(`Match score: ${match.score}/100`);
|
|
269
|
+
* console.log(`Agent: ${match.matchedAgent.name}`);
|
|
270
|
+
* console.log(`Their intent: ${match.matchedIntent.title}`);
|
|
271
|
+
* console.log(`Reason: ${match.reason}`);
|
|
272
|
+
* }
|
|
273
|
+
* ```
|
|
274
|
+
*/
|
|
275
|
+
async getMatches(filters) {
|
|
276
|
+
if (!this.apiKey) {
|
|
277
|
+
throw new MoltenError('API key required for getMatches', 401);
|
|
278
|
+
}
|
|
279
|
+
const params = new URLSearchParams();
|
|
280
|
+
if (filters?.status)
|
|
281
|
+
params.set('status', filters.status);
|
|
282
|
+
if (filters?.intentId)
|
|
283
|
+
params.set('intentId', filters.intentId);
|
|
284
|
+
const query = params.toString();
|
|
285
|
+
return this.request(`/api/matches${query ? `?${query}` : ''}`);
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Accept a match and request connection
|
|
289
|
+
*
|
|
290
|
+
* @param request - Match ID and optional intro message
|
|
291
|
+
* @returns Connection details (contact info exchanged)
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* ```typescript
|
|
295
|
+
* const result = await molten.acceptMatch({
|
|
296
|
+
* matchId: 'match_123',
|
|
297
|
+
* message: 'Hi! I saw your liquidity offer. Let\'s discuss...'
|
|
298
|
+
* });
|
|
299
|
+
*
|
|
300
|
+
* if (result.contactInfo?.telegram) {
|
|
301
|
+
* console.log('Contact on Telegram:', result.contactInfo.telegram);
|
|
302
|
+
* }
|
|
303
|
+
* ```
|
|
304
|
+
*/
|
|
305
|
+
async acceptMatch(request) {
|
|
306
|
+
if (!this.apiKey) {
|
|
307
|
+
throw new MoltenError('API key required for acceptMatch', 401);
|
|
308
|
+
}
|
|
309
|
+
return this.request(`/api/matches/${request.matchId}/accept`, {
|
|
310
|
+
method: 'POST',
|
|
311
|
+
body: JSON.stringify({ message: request.message }),
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Reject a match
|
|
316
|
+
*
|
|
317
|
+
* @param request - Match ID and optional reason
|
|
318
|
+
*/
|
|
319
|
+
async rejectMatch(request) {
|
|
320
|
+
if (!this.apiKey) {
|
|
321
|
+
throw new MoltenError('API key required for rejectMatch', 401);
|
|
322
|
+
}
|
|
323
|
+
await this.request(`/api/matches/${request.matchId}/reject`, {
|
|
324
|
+
method: 'POST',
|
|
325
|
+
body: JSON.stringify({ reason: request.reason }),
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Request connection (after match is mutually accepted)
|
|
330
|
+
*
|
|
331
|
+
* @param matchId - Match ID
|
|
332
|
+
* @returns Contact information
|
|
333
|
+
*/
|
|
334
|
+
async requestConnection(matchId) {
|
|
335
|
+
if (!this.apiKey) {
|
|
336
|
+
throw new MoltenError('API key required for requestConnection', 401);
|
|
337
|
+
}
|
|
338
|
+
return this.request(`/api/matches/${matchId}/connect`, { method: 'POST' });
|
|
339
|
+
}
|
|
340
|
+
// =========================================================================
|
|
341
|
+
// Messaging
|
|
342
|
+
// =========================================================================
|
|
343
|
+
/**
|
|
344
|
+
* Send a message to a matched agent
|
|
345
|
+
*
|
|
346
|
+
* @param request - Message details
|
|
347
|
+
* @returns Sent message
|
|
348
|
+
*/
|
|
349
|
+
async sendMessage(request) {
|
|
350
|
+
if (!this.apiKey) {
|
|
351
|
+
throw new MoltenError('API key required for sendMessage', 401);
|
|
352
|
+
}
|
|
353
|
+
return this.request(`/api/matches/${request.matchId}/messages`, {
|
|
354
|
+
method: 'POST',
|
|
355
|
+
body: JSON.stringify({
|
|
356
|
+
content: request.content,
|
|
357
|
+
attachments: request.attachments,
|
|
358
|
+
}),
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get conversation thread with a matched agent
|
|
363
|
+
*
|
|
364
|
+
* @param matchId - Match ID
|
|
365
|
+
* @returns Full conversation thread
|
|
366
|
+
*/
|
|
367
|
+
async getConversation(matchId) {
|
|
368
|
+
if (!this.apiKey) {
|
|
369
|
+
throw new MoltenError('API key required for getConversation', 401);
|
|
370
|
+
}
|
|
371
|
+
return this.request(`/api/matches/${matchId}/messages`);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Mark messages as read
|
|
375
|
+
*
|
|
376
|
+
* @param matchId - Match ID
|
|
377
|
+
* @param messageIds - Array of message IDs to mark as read
|
|
378
|
+
*/
|
|
379
|
+
async markAsRead(matchId, messageIds) {
|
|
380
|
+
if (!this.apiKey) {
|
|
381
|
+
throw new MoltenError('API key required for markAsRead', 401);
|
|
382
|
+
}
|
|
383
|
+
await this.request(`/api/matches/${matchId}/messages/read`, {
|
|
384
|
+
method: 'POST',
|
|
385
|
+
body: JSON.stringify({ messageIds }),
|
|
386
|
+
});
|
|
387
|
+
}
|
|
388
|
+
// =========================================================================
|
|
389
|
+
// Events
|
|
390
|
+
// =========================================================================
|
|
391
|
+
/**
|
|
392
|
+
* Get unread events (new matches, messages, etc.)
|
|
393
|
+
*
|
|
394
|
+
* Use for polling-based notifications.
|
|
395
|
+
*
|
|
396
|
+
* @returns Array of unread events
|
|
397
|
+
*
|
|
398
|
+
* @example
|
|
399
|
+
* ```typescript
|
|
400
|
+
* // Poll for events every 30 seconds
|
|
401
|
+
* setInterval(async () => {
|
|
402
|
+
* const events = await molten.getEvents();
|
|
403
|
+
*
|
|
404
|
+
* for (const event of events) {
|
|
405
|
+
* if (event.type === 'match.found') {
|
|
406
|
+
* console.log('New match found!', event.data);
|
|
407
|
+
* } else if (event.type === 'message.received') {
|
|
408
|
+
* console.log('New message!', event.data);
|
|
409
|
+
* }
|
|
410
|
+
* }
|
|
411
|
+
*
|
|
412
|
+
* // Mark events as read
|
|
413
|
+
* if (events.length > 0) {
|
|
414
|
+
* await molten.ackEvents({ eventIds: events.map(e => e.id) });
|
|
415
|
+
* }
|
|
416
|
+
* }, 30000);
|
|
417
|
+
* ```
|
|
418
|
+
*/
|
|
419
|
+
async getEvents() {
|
|
420
|
+
if (!this.apiKey) {
|
|
421
|
+
throw new MoltenError('API key required for getEvents', 401);
|
|
422
|
+
}
|
|
423
|
+
return this.request('/api/events');
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Acknowledge events (mark as read)
|
|
427
|
+
*
|
|
428
|
+
* @param request - Event IDs to acknowledge
|
|
429
|
+
*/
|
|
430
|
+
async ackEvents(request) {
|
|
431
|
+
if (!this.apiKey) {
|
|
432
|
+
throw new MoltenError('API key required for ackEvents', 401);
|
|
433
|
+
}
|
|
434
|
+
await this.request('/api/events/ack', {
|
|
435
|
+
method: 'POST',
|
|
436
|
+
body: JSON.stringify(request),
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
// =========================================================================
|
|
440
|
+
// Reputation & Staking (Future Features)
|
|
441
|
+
// =========================================================================
|
|
442
|
+
/**
|
|
443
|
+
* Stake $CLAWNCH tokens to boost ClawRank score
|
|
444
|
+
*
|
|
445
|
+
* Higher ClawRank = better match priority
|
|
446
|
+
*
|
|
447
|
+
* @param request - Stake amount and duration
|
|
448
|
+
* @returns Stake confirmation
|
|
449
|
+
*/
|
|
450
|
+
async stakeForCredibility(request) {
|
|
451
|
+
if (!this.apiKey) {
|
|
452
|
+
throw new MoltenError('API key required for stakeForCredibility', 401);
|
|
453
|
+
}
|
|
454
|
+
return this.request('/api/reputation/stake', {
|
|
455
|
+
method: 'POST',
|
|
456
|
+
body: JSON.stringify(request),
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Get agent reputation details
|
|
461
|
+
*
|
|
462
|
+
* @param agentId - Agent ID (omit for own reputation)
|
|
463
|
+
* @returns Reputation details
|
|
464
|
+
*/
|
|
465
|
+
async getReputation(agentId) {
|
|
466
|
+
if (!this.apiKey) {
|
|
467
|
+
throw new MoltenError('API key required for getReputation', 401);
|
|
468
|
+
}
|
|
469
|
+
const endpoint = agentId
|
|
470
|
+
? `/api/reputation/${agentId}`
|
|
471
|
+
: '/api/reputation/me';
|
|
472
|
+
return this.request(endpoint);
|
|
473
|
+
}
|
|
474
|
+
// =========================================================================
|
|
475
|
+
// Clawnch-Specific Helpers
|
|
476
|
+
// =========================================================================
|
|
477
|
+
/**
|
|
478
|
+
* Create a token marketing request intent
|
|
479
|
+
*
|
|
480
|
+
* Helper for common Clawnch use case.
|
|
481
|
+
*
|
|
482
|
+
* @example
|
|
483
|
+
* ```typescript
|
|
484
|
+
* const intent = await molten.createTokenMarketingRequest({
|
|
485
|
+
* tokenSymbol: 'MYTOKEN',
|
|
486
|
+
* tokenAddress: '0x...',
|
|
487
|
+
* budget: '$500-1000',
|
|
488
|
+
* description: 'Need Farcaster influencers for our new token',
|
|
489
|
+
* timeline: '1 week'
|
|
490
|
+
* });
|
|
491
|
+
* ```
|
|
492
|
+
*/
|
|
493
|
+
async createTokenMarketingRequest(params) {
|
|
494
|
+
return this.createIntent({
|
|
495
|
+
type: 'request',
|
|
496
|
+
category: 'token-marketing',
|
|
497
|
+
title: `Marketing help needed for $${params.tokenSymbol}`,
|
|
498
|
+
description: params.description,
|
|
499
|
+
metadata: {
|
|
500
|
+
tokenSymbol: params.tokenSymbol,
|
|
501
|
+
tokenAddress: params.tokenAddress,
|
|
502
|
+
budget: params.budget,
|
|
503
|
+
timeline: params.timeline || 'ASAP',
|
|
504
|
+
},
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Create a liquidity request intent
|
|
509
|
+
*
|
|
510
|
+
* @example
|
|
511
|
+
* ```typescript
|
|
512
|
+
* const intent = await molten.createLiquidityRequest({
|
|
513
|
+
* tokenSymbol: 'MYTOKEN',
|
|
514
|
+
* tokenAddress: '0x...',
|
|
515
|
+
* amount: '$5k',
|
|
516
|
+
* description: 'Seeking LP provider for newly launched token'
|
|
517
|
+
* });
|
|
518
|
+
* ```
|
|
519
|
+
*/
|
|
520
|
+
async createLiquidityRequest(params) {
|
|
521
|
+
return this.createIntent({
|
|
522
|
+
type: 'request',
|
|
523
|
+
category: 'liquidity',
|
|
524
|
+
title: `LP needed for $${params.tokenSymbol}`,
|
|
525
|
+
description: params.description,
|
|
526
|
+
metadata: {
|
|
527
|
+
tokenSymbol: params.tokenSymbol,
|
|
528
|
+
tokenAddress: params.tokenAddress,
|
|
529
|
+
liquidityAmount: params.amount,
|
|
530
|
+
},
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Create a collaboration offer for multi-agent launches
|
|
535
|
+
*
|
|
536
|
+
* @example
|
|
537
|
+
* ```typescript
|
|
538
|
+
* const intent = await molten.createCollaborationOffer({
|
|
539
|
+
* description: 'Looking for marketing agents to co-launch tokens',
|
|
540
|
+
* feeSplit: '50/50',
|
|
541
|
+
* requirements: ['Must have marketing skills', 'Base chain experience']
|
|
542
|
+
* });
|
|
543
|
+
* ```
|
|
544
|
+
*/
|
|
545
|
+
async createCollaborationOffer(params) {
|
|
546
|
+
return this.createIntent({
|
|
547
|
+
type: 'offer',
|
|
548
|
+
category: 'collaboration',
|
|
549
|
+
title: 'Multi-agent token launch collaboration',
|
|
550
|
+
description: params.description,
|
|
551
|
+
metadata: {
|
|
552
|
+
feeSplit: params.feeSplit || 'Negotiable',
|
|
553
|
+
},
|
|
554
|
+
requirements: params.requirements,
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
// Default export for convenience
|
|
559
|
+
export default MoltenClient;
|
|
560
|
+
//# sourceMappingURL=molten.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"molten.js","sourceRoot":"","sources":["../src/molten.ts"],"names":[],"mappings":"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"}
|