@madeonsol/plugin-madeonsol 1.3.0 → 1.4.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 +5 -42
- package/package.json +1 -1
- package/dist/actions/deployer-alerts.d.ts +0 -2
- package/dist/actions/deployer-alerts.js +0 -55
- package/dist/actions/kol-alerts-recent.d.ts +0 -2
- package/dist/actions/kol-alerts-recent.js +0 -48
- package/dist/actions/kol-compare.d.ts +0 -2
- package/dist/actions/kol-compare.js +0 -57
- package/dist/actions/kol-coordination.d.ts +0 -2
- package/dist/actions/kol-coordination.js +0 -50
- package/dist/actions/kol-feed.d.ts +0 -2
- package/dist/actions/kol-feed.js +0 -46
- package/dist/actions/kol-leaderboard.d.ts +0 -2
- package/dist/actions/kol-leaderboard.js +0 -45
- package/dist/actions/kol-token-entry-order.d.ts +0 -2
- package/dist/actions/kol-token-entry-order.js +0 -53
- package/dist/actions/wallet-tracker.d.ts +0 -3
- package/dist/actions/wallet-tracker.js +0 -84
- package/dist/client.d.ts +0 -404
- package/dist/client.js +0 -282
- package/dist/index.d.ts +0 -17
- package/dist/index.js +0 -72
package/dist/client.d.ts
DELETED
|
@@ -1,404 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MadeOnSol API client.
|
|
3
|
-
* Two auth modes: MadeOnSol API key (`msk_`, recommended) or x402 micropayments.
|
|
4
|
-
*
|
|
5
|
-
* v1.0 breaking change: RapidAPI auth has been removed (marketplace retired 2026-04-19).
|
|
6
|
-
* Get a free `msk_` key at https://madeonsol.com/developer.
|
|
7
|
-
*/
|
|
8
|
-
export interface MadeOnSolClientOptions {
|
|
9
|
-
baseUrl?: string;
|
|
10
|
-
/** MadeOnSol API key — get one free at https://madeonsol.com/developer. Preferred. */
|
|
11
|
-
apiKey?: string;
|
|
12
|
-
/** x402 payment-enabled fetch (for AI agents with SVM_PRIVATE_KEY). */
|
|
13
|
-
fetchFn?: typeof fetch;
|
|
14
|
-
}
|
|
15
|
-
export interface RateLimitInfo {
|
|
16
|
-
limit?: string;
|
|
17
|
-
remaining?: string;
|
|
18
|
-
reset?: string;
|
|
19
|
-
requestId?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare class MadeOnSolClient {
|
|
22
|
-
private baseUrl;
|
|
23
|
-
private fetchFn;
|
|
24
|
-
private authMode;
|
|
25
|
-
private authHeaders;
|
|
26
|
-
/** Most recent rate-limit headers, populated by every request. */
|
|
27
|
-
lastRateLimit: RateLimitInfo;
|
|
28
|
-
constructor(options?: MadeOnSolClientOptions);
|
|
29
|
-
private captureRateLimit;
|
|
30
|
-
query<T = unknown>(path: string, params?: Record<string, string | undefined>): Promise<{
|
|
31
|
-
data?: T;
|
|
32
|
-
error?: string;
|
|
33
|
-
status: number;
|
|
34
|
-
}>;
|
|
35
|
-
getKolFeed(params?: {
|
|
36
|
-
limit?: string;
|
|
37
|
-
before?: string;
|
|
38
|
-
action?: string;
|
|
39
|
-
kol?: string;
|
|
40
|
-
min_sol?: string;
|
|
41
|
-
token_age_max_min?: string;
|
|
42
|
-
exclude_sells?: string;
|
|
43
|
-
min_kol_winrate?: string;
|
|
44
|
-
strategy?: string;
|
|
45
|
-
}): Promise<{
|
|
46
|
-
data?: unknown;
|
|
47
|
-
error?: string;
|
|
48
|
-
status: number;
|
|
49
|
-
}>;
|
|
50
|
-
getKolCoordination(params?: {
|
|
51
|
-
period?: string;
|
|
52
|
-
min_kols?: string;
|
|
53
|
-
limit?: string;
|
|
54
|
-
/** v1.1 — include WIF/BONK/POPCAT etc. ("true" | "false", default "false") */
|
|
55
|
-
include_majors?: string;
|
|
56
|
-
/** v1.1 — peak-density window in minutes (1-60, default 15) */
|
|
57
|
-
window_minutes?: string;
|
|
58
|
-
/** v1.1 — minimum composite coordination_score (0-100) */
|
|
59
|
-
min_score?: string;
|
|
60
|
-
min_avg_winrate?: string;
|
|
61
|
-
unique_strategies?: string;
|
|
62
|
-
}): Promise<{
|
|
63
|
-
data?: unknown;
|
|
64
|
-
error?: string;
|
|
65
|
-
status: number;
|
|
66
|
-
}>;
|
|
67
|
-
getKolLeaderboard(params?: {
|
|
68
|
-
period?: string;
|
|
69
|
-
limit?: string;
|
|
70
|
-
}): Promise<{
|
|
71
|
-
data?: unknown;
|
|
72
|
-
error?: string;
|
|
73
|
-
status: number;
|
|
74
|
-
}>;
|
|
75
|
-
/**
|
|
76
|
-
* Get deployer alerts. The `tier` filter (elite/good/moderate/rising/cold)
|
|
77
|
-
* is PRO/ULTRA only — BASIC callers passing it receive HTTP 403.
|
|
78
|
-
* Cursor-paginated via `before` (preferred over `offset` at scale).
|
|
79
|
-
*/
|
|
80
|
-
getDeployerAlerts(params?: {
|
|
81
|
-
since?: string;
|
|
82
|
-
before?: string;
|
|
83
|
-
limit?: string;
|
|
84
|
-
offset?: string;
|
|
85
|
-
tier?: string;
|
|
86
|
-
alert_type?: string;
|
|
87
|
-
priority?: string;
|
|
88
|
-
min_kol_buys?: string;
|
|
89
|
-
}): Promise<{
|
|
90
|
-
data?: unknown;
|
|
91
|
-
error?: string;
|
|
92
|
-
status: number;
|
|
93
|
-
}>;
|
|
94
|
-
getKolPairs(params?: {
|
|
95
|
-
period?: string;
|
|
96
|
-
min_shared?: string;
|
|
97
|
-
limit?: string;
|
|
98
|
-
}): Promise<{
|
|
99
|
-
data?: unknown;
|
|
100
|
-
error?: string;
|
|
101
|
-
status: number;
|
|
102
|
-
}>;
|
|
103
|
-
getKolHotTokens(params?: {
|
|
104
|
-
period?: string;
|
|
105
|
-
min_kols?: string;
|
|
106
|
-
limit?: string;
|
|
107
|
-
}): Promise<{
|
|
108
|
-
data?: unknown;
|
|
109
|
-
error?: string;
|
|
110
|
-
status: number;
|
|
111
|
-
}>;
|
|
112
|
-
getKolTrendingTokens(params?: {
|
|
113
|
-
period?: string;
|
|
114
|
-
min_kols?: string;
|
|
115
|
-
limit?: string;
|
|
116
|
-
}): Promise<{
|
|
117
|
-
data?: unknown;
|
|
118
|
-
error?: string;
|
|
119
|
-
status: number;
|
|
120
|
-
}>;
|
|
121
|
-
getKolTokenEntryOrder(mint: string, params?: {
|
|
122
|
-
limit?: string;
|
|
123
|
-
}): Promise<{
|
|
124
|
-
data?: unknown;
|
|
125
|
-
error?: string;
|
|
126
|
-
status: number;
|
|
127
|
-
}>;
|
|
128
|
-
getKolCompare(wallets: string[]): Promise<{
|
|
129
|
-
data?: unknown;
|
|
130
|
-
error?: string;
|
|
131
|
-
status: number;
|
|
132
|
-
}>;
|
|
133
|
-
getKolAlertsRecent(params?: {
|
|
134
|
-
window?: string;
|
|
135
|
-
types?: string;
|
|
136
|
-
min_severity?: string;
|
|
137
|
-
limit?: string;
|
|
138
|
-
}): Promise<{
|
|
139
|
-
data?: unknown;
|
|
140
|
-
error?: string;
|
|
141
|
-
status: number;
|
|
142
|
-
}>;
|
|
143
|
-
getKolPnl(wallet: string, params?: {
|
|
144
|
-
period?: string;
|
|
145
|
-
}): Promise<{
|
|
146
|
-
data?: unknown;
|
|
147
|
-
error?: string;
|
|
148
|
-
status: number;
|
|
149
|
-
}>;
|
|
150
|
-
getKolTiming(wallet: string, params?: {
|
|
151
|
-
period?: string;
|
|
152
|
-
}): Promise<{
|
|
153
|
-
data?: unknown;
|
|
154
|
-
error?: string;
|
|
155
|
-
status: number;
|
|
156
|
-
}>;
|
|
157
|
-
getDeployerTrajectory(wallet: string): Promise<{
|
|
158
|
-
data?: unknown;
|
|
159
|
-
error?: string;
|
|
160
|
-
status: number;
|
|
161
|
-
}>;
|
|
162
|
-
private restRequest;
|
|
163
|
-
createWebhook(params: {
|
|
164
|
-
url: string;
|
|
165
|
-
events: string[];
|
|
166
|
-
filters?: Record<string, unknown>;
|
|
167
|
-
}): Promise<{
|
|
168
|
-
data?: unknown;
|
|
169
|
-
error?: string;
|
|
170
|
-
status: number;
|
|
171
|
-
}>;
|
|
172
|
-
listWebhooks(): Promise<{
|
|
173
|
-
data?: unknown;
|
|
174
|
-
error?: string;
|
|
175
|
-
status: number;
|
|
176
|
-
}>;
|
|
177
|
-
deleteWebhook(id: number): Promise<{
|
|
178
|
-
data?: unknown;
|
|
179
|
-
error?: string;
|
|
180
|
-
status: number;
|
|
181
|
-
}>;
|
|
182
|
-
testWebhook(webhookId: number): Promise<{
|
|
183
|
-
data?: unknown;
|
|
184
|
-
error?: string;
|
|
185
|
-
status: number;
|
|
186
|
-
}>;
|
|
187
|
-
getStreamToken(): Promise<{
|
|
188
|
-
data?: unknown;
|
|
189
|
-
error?: string;
|
|
190
|
-
status: number;
|
|
191
|
-
}>;
|
|
192
|
-
getWalletTrackerWatchlist(): Promise<{
|
|
193
|
-
data?: unknown;
|
|
194
|
-
error?: string;
|
|
195
|
-
status: number;
|
|
196
|
-
}>;
|
|
197
|
-
addToWatchlist(walletAddress: string, label?: string): Promise<{
|
|
198
|
-
data?: unknown;
|
|
199
|
-
error?: string;
|
|
200
|
-
status: number;
|
|
201
|
-
}>;
|
|
202
|
-
removeFromWatchlist(walletAddress: string): Promise<{
|
|
203
|
-
data?: unknown;
|
|
204
|
-
error?: string;
|
|
205
|
-
status: number;
|
|
206
|
-
}>;
|
|
207
|
-
getWalletTrackerTrades(params?: {
|
|
208
|
-
wallet?: string;
|
|
209
|
-
action?: string;
|
|
210
|
-
event_type?: string;
|
|
211
|
-
limit?: string;
|
|
212
|
-
before?: string;
|
|
213
|
-
}): Promise<{
|
|
214
|
-
data?: unknown;
|
|
215
|
-
error?: string;
|
|
216
|
-
status: number;
|
|
217
|
-
}>;
|
|
218
|
-
getWalletTrackerSummary(params?: {
|
|
219
|
-
period?: string;
|
|
220
|
-
wallet?: string;
|
|
221
|
-
}): Promise<{
|
|
222
|
-
data?: unknown;
|
|
223
|
-
error?: string;
|
|
224
|
-
status: number;
|
|
225
|
-
}>;
|
|
226
|
-
getAlphaLeaderboard(params?: {
|
|
227
|
-
limit?: string;
|
|
228
|
-
min_tokens?: string;
|
|
229
|
-
min_pnl?: string;
|
|
230
|
-
}): Promise<{
|
|
231
|
-
data?: unknown;
|
|
232
|
-
error?: string;
|
|
233
|
-
status: number;
|
|
234
|
-
}>;
|
|
235
|
-
getAlphaWallet(wallet: string): Promise<{
|
|
236
|
-
data?: unknown;
|
|
237
|
-
error?: string;
|
|
238
|
-
status: number;
|
|
239
|
-
}>;
|
|
240
|
-
getAlphaLinked(wallet: string): Promise<{
|
|
241
|
-
data?: unknown;
|
|
242
|
-
error?: string;
|
|
243
|
-
status: number;
|
|
244
|
-
}>;
|
|
245
|
-
getTokenCapTable(mint: string): Promise<{
|
|
246
|
-
data?: unknown;
|
|
247
|
-
error?: string;
|
|
248
|
-
status: number;
|
|
249
|
-
}>;
|
|
250
|
-
getTokenBuyerQuality(mint: string): Promise<{
|
|
251
|
-
data?: unknown;
|
|
252
|
-
error?: string;
|
|
253
|
-
status: number;
|
|
254
|
-
}>;
|
|
255
|
-
/** Bulk buyer-quality scoring for up to 50 mints. Shares the single-mint 5-min LRU cache. */
|
|
256
|
-
getTokenBuyerQualityBatch(mints: string[]): Promise<{
|
|
257
|
-
data?: unknown;
|
|
258
|
-
error?: string;
|
|
259
|
-
status: number;
|
|
260
|
-
}>;
|
|
261
|
-
/** Comprehensive per-mint snapshot: price, MC, volume, deployer, KOL activity, age, blacklist. */
|
|
262
|
-
getToken(mint: string): Promise<{
|
|
263
|
-
data?: unknown;
|
|
264
|
-
error?: string;
|
|
265
|
-
status: number;
|
|
266
|
-
}>;
|
|
267
|
-
/** Bulk lookup of up to 50 mints — same per-mint shape as getToken(). 10-20× cheaper than N sequential calls. */
|
|
268
|
-
getTokenBatch(mints: string[]): Promise<{
|
|
269
|
-
data?: unknown;
|
|
270
|
-
error?: string;
|
|
271
|
-
status: number;
|
|
272
|
-
}>;
|
|
273
|
-
copyTradeList(): Promise<{
|
|
274
|
-
data?: unknown;
|
|
275
|
-
error?: string;
|
|
276
|
-
status: number;
|
|
277
|
-
}>;
|
|
278
|
-
copyTradeCreate(params: {
|
|
279
|
-
name: string;
|
|
280
|
-
source_wallet: string;
|
|
281
|
-
is_active?: boolean;
|
|
282
|
-
webhook_url?: string;
|
|
283
|
-
delivery?: "webhook" | "websocket" | "both";
|
|
284
|
-
filters?: Record<string, unknown>;
|
|
285
|
-
}): Promise<{
|
|
286
|
-
data?: unknown;
|
|
287
|
-
error?: string;
|
|
288
|
-
status: number;
|
|
289
|
-
}>;
|
|
290
|
-
copyTradeGet(ruleId: string): Promise<{
|
|
291
|
-
data?: unknown;
|
|
292
|
-
error?: string;
|
|
293
|
-
status: number;
|
|
294
|
-
}>;
|
|
295
|
-
copyTradeUpdate(ruleId: string, updates: Record<string, unknown>): Promise<{
|
|
296
|
-
data?: unknown;
|
|
297
|
-
error?: string;
|
|
298
|
-
status: number;
|
|
299
|
-
}>;
|
|
300
|
-
copyTradeDelete(ruleId: string): Promise<{
|
|
301
|
-
data?: unknown;
|
|
302
|
-
error?: string;
|
|
303
|
-
status: number;
|
|
304
|
-
}>;
|
|
305
|
-
coordinationAlertsList(): Promise<{
|
|
306
|
-
data?: unknown;
|
|
307
|
-
error?: string;
|
|
308
|
-
status: number;
|
|
309
|
-
}>;
|
|
310
|
-
coordinationAlertsCreate(params: {
|
|
311
|
-
name?: string;
|
|
312
|
-
min_kols?: number;
|
|
313
|
-
window_minutes?: number;
|
|
314
|
-
min_score?: number;
|
|
315
|
-
include_majors?: boolean;
|
|
316
|
-
cooldown_min?: number;
|
|
317
|
-
score_jump_break?: number;
|
|
318
|
-
delivery_mode?: "websocket" | "webhook" | "both";
|
|
319
|
-
webhook_url?: string;
|
|
320
|
-
}): Promise<{
|
|
321
|
-
data?: unknown;
|
|
322
|
-
error?: string;
|
|
323
|
-
status: number;
|
|
324
|
-
}>;
|
|
325
|
-
coordinationAlertsGet(ruleId: string): Promise<{
|
|
326
|
-
data?: unknown;
|
|
327
|
-
error?: string;
|
|
328
|
-
status: number;
|
|
329
|
-
}>;
|
|
330
|
-
coordinationAlertsUpdate(ruleId: string, updates: Record<string, unknown>): Promise<{
|
|
331
|
-
data?: unknown;
|
|
332
|
-
error?: string;
|
|
333
|
-
status: number;
|
|
334
|
-
}>;
|
|
335
|
-
coordinationAlertsDelete(ruleId: string): Promise<{
|
|
336
|
-
data?: unknown;
|
|
337
|
-
error?: string;
|
|
338
|
-
status: number;
|
|
339
|
-
}>;
|
|
340
|
-
firstTouches(params?: {
|
|
341
|
-
since?: string;
|
|
342
|
-
before?: string;
|
|
343
|
-
limit?: number;
|
|
344
|
-
kol?: string;
|
|
345
|
-
min_kol_winrate_7d?: number;
|
|
346
|
-
min_scout_tier?: "S" | "A" | "B" | "C";
|
|
347
|
-
min_n_touches?: number;
|
|
348
|
-
strategy?: "scalper" | "day_trader" | "swing_trader" | "hodler" | "mixed";
|
|
349
|
-
token_age_max_min?: number;
|
|
350
|
-
min_first_buy_sol?: number;
|
|
351
|
-
mint_suffix?: string;
|
|
352
|
-
preset?: "scout" | "fresh_launch";
|
|
353
|
-
include?: string;
|
|
354
|
-
}): Promise<{
|
|
355
|
-
data?: unknown;
|
|
356
|
-
error?: string;
|
|
357
|
-
status: number;
|
|
358
|
-
}>;
|
|
359
|
-
firstTouchSubscriptionsList(): Promise<{
|
|
360
|
-
data?: unknown;
|
|
361
|
-
error?: string;
|
|
362
|
-
status: number;
|
|
363
|
-
}>;
|
|
364
|
-
firstTouchSubscriptionsCreate(params: {
|
|
365
|
-
name?: string;
|
|
366
|
-
filters?: {
|
|
367
|
-
kol?: string;
|
|
368
|
-
mint_suffix?: string;
|
|
369
|
-
min_first_buy_sol?: number;
|
|
370
|
-
min_scout_tier?: "S" | "A" | "B" | "C";
|
|
371
|
-
min_n_touches?: number;
|
|
372
|
-
};
|
|
373
|
-
delivery_mode?: "websocket" | "webhook" | "both";
|
|
374
|
-
webhook_url?: string;
|
|
375
|
-
}): Promise<{
|
|
376
|
-
data?: unknown;
|
|
377
|
-
error?: string;
|
|
378
|
-
status: number;
|
|
379
|
-
}>;
|
|
380
|
-
firstTouchSubscriptionsGet(id: string): Promise<{
|
|
381
|
-
data?: unknown;
|
|
382
|
-
error?: string;
|
|
383
|
-
status: number;
|
|
384
|
-
}>;
|
|
385
|
-
firstTouchSubscriptionsUpdate(id: string, updates: Record<string, unknown>): Promise<{
|
|
386
|
-
data?: unknown;
|
|
387
|
-
error?: string;
|
|
388
|
-
status: number;
|
|
389
|
-
}>;
|
|
390
|
-
firstTouchSubscriptionsDelete(id: string): Promise<{
|
|
391
|
-
data?: unknown;
|
|
392
|
-
error?: string;
|
|
393
|
-
status: number;
|
|
394
|
-
}>;
|
|
395
|
-
copyTradeSignals(params?: {
|
|
396
|
-
rule_id?: string;
|
|
397
|
-
limit?: string;
|
|
398
|
-
since?: string;
|
|
399
|
-
}): Promise<{
|
|
400
|
-
data?: unknown;
|
|
401
|
-
error?: string;
|
|
402
|
-
status: number;
|
|
403
|
-
}>;
|
|
404
|
-
}
|
package/dist/client.js
DELETED
|
@@ -1,282 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MadeOnSol API client.
|
|
3
|
-
* Two auth modes: MadeOnSol API key (`msk_`, recommended) or x402 micropayments.
|
|
4
|
-
*
|
|
5
|
-
* v1.0 breaking change: RapidAPI auth has been removed (marketplace retired 2026-04-19).
|
|
6
|
-
* Get a free `msk_` key at https://madeonsol.com/developer.
|
|
7
|
-
*/
|
|
8
|
-
const DEFAULT_BASE = "https://madeonsol.com";
|
|
9
|
-
export class MadeOnSolClient {
|
|
10
|
-
baseUrl;
|
|
11
|
-
fetchFn;
|
|
12
|
-
authMode;
|
|
13
|
-
authHeaders;
|
|
14
|
-
/** Most recent rate-limit headers, populated by every request. */
|
|
15
|
-
lastRateLimit = {};
|
|
16
|
-
constructor(options = {}) {
|
|
17
|
-
this.baseUrl = options.baseUrl || DEFAULT_BASE;
|
|
18
|
-
this.fetchFn = options.fetchFn || globalThis.fetch;
|
|
19
|
-
this.authHeaders = {};
|
|
20
|
-
if (options.apiKey) {
|
|
21
|
-
this.authMode = "madeonsol";
|
|
22
|
-
this.authHeaders = { Authorization: `Bearer ${options.apiKey}` };
|
|
23
|
-
}
|
|
24
|
-
else if (options.fetchFn) {
|
|
25
|
-
this.authMode = "x402";
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.authMode = "none";
|
|
29
|
-
console.warn("\n[madeonsol] MadeOnSolClient constructed without apiKey or fetchFn — every request will fail.\n" +
|
|
30
|
-
" → Get a free key (200 req/day, no card) at https://madeonsol.com/developer\n" +
|
|
31
|
-
" → Then: new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY })\n");
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
captureRateLimit(res) {
|
|
35
|
-
this.lastRateLimit = {
|
|
36
|
-
limit: res.headers.get("X-RateLimit-Limit") ?? undefined,
|
|
37
|
-
remaining: res.headers.get("X-RateLimit-Remaining") ?? undefined,
|
|
38
|
-
reset: res.headers.get("X-RateLimit-Reset") ?? undefined,
|
|
39
|
-
requestId: res.headers.get("X-Request-Id") ?? undefined,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
async query(path, params) {
|
|
43
|
-
const apiPath = this.authMode === "x402" || this.authMode === "none"
|
|
44
|
-
? path
|
|
45
|
-
: path.replace("/api/x402/", "/api/v1/");
|
|
46
|
-
const url = new URL(apiPath, this.baseUrl);
|
|
47
|
-
if (params) {
|
|
48
|
-
for (const [k, v] of Object.entries(params)) {
|
|
49
|
-
if (v !== undefined)
|
|
50
|
-
url.searchParams.set(k, v);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
const res = this.authMode === "x402"
|
|
54
|
-
? await this.fetchFn(url.toString(), { method: "GET" })
|
|
55
|
-
: await this.fetchFn(url.toString(), { method: "GET", headers: this.authHeaders });
|
|
56
|
-
this.captureRateLimit(res);
|
|
57
|
-
if (res.status === 402) {
|
|
58
|
-
const body = await res.json();
|
|
59
|
-
return { error: `Payment required: ${JSON.stringify(body.accepts?.[0] || body)}`, status: 402 };
|
|
60
|
-
}
|
|
61
|
-
if (!res.ok) {
|
|
62
|
-
const text = await res.text().catch(() => "Unknown error");
|
|
63
|
-
return { error: text, status: res.status };
|
|
64
|
-
}
|
|
65
|
-
const data = await res.json();
|
|
66
|
-
return { data, status: res.status };
|
|
67
|
-
}
|
|
68
|
-
getKolFeed(params) {
|
|
69
|
-
return this.query("/api/x402/kol/feed", params);
|
|
70
|
-
}
|
|
71
|
-
getKolCoordination(params) {
|
|
72
|
-
return this.query("/api/x402/kol/coordination", params);
|
|
73
|
-
}
|
|
74
|
-
getKolLeaderboard(params) {
|
|
75
|
-
return this.query("/api/x402/kol/leaderboard", params);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Get deployer alerts. The `tier` filter (elite/good/moderate/rising/cold)
|
|
79
|
-
* is PRO/ULTRA only — BASIC callers passing it receive HTTP 403.
|
|
80
|
-
* Cursor-paginated via `before` (preferred over `offset` at scale).
|
|
81
|
-
*/
|
|
82
|
-
getDeployerAlerts(params) {
|
|
83
|
-
return this.query("/api/x402/deployer-hunter/alerts", params);
|
|
84
|
-
}
|
|
85
|
-
getKolPairs(params) {
|
|
86
|
-
return this.query("/api/x402/kol/pairs", params);
|
|
87
|
-
}
|
|
88
|
-
getKolHotTokens(params) {
|
|
89
|
-
return this.query("/api/x402/kol/tokens/hot", params);
|
|
90
|
-
}
|
|
91
|
-
getKolTrendingTokens(params) {
|
|
92
|
-
return this.query("/api/x402/kol/tokens/trending", params);
|
|
93
|
-
}
|
|
94
|
-
getKolTokenEntryOrder(mint, params) {
|
|
95
|
-
return this.query(`/api/x402/kol/tokens/${encodeURIComponent(mint)}/entry-order`, params);
|
|
96
|
-
}
|
|
97
|
-
getKolCompare(wallets) {
|
|
98
|
-
return this.query("/api/x402/kol/compare", { wallets: wallets.join(",") });
|
|
99
|
-
}
|
|
100
|
-
getKolAlertsRecent(params) {
|
|
101
|
-
return this.query("/api/x402/kol/alerts/recent", params);
|
|
102
|
-
}
|
|
103
|
-
getKolPnl(wallet, params) {
|
|
104
|
-
const qs = params?.period ? `?period=${params.period}` : "";
|
|
105
|
-
return this.restRequest("GET", `/kol/${wallet}/pnl${qs}`);
|
|
106
|
-
}
|
|
107
|
-
getKolTiming(wallet, params) {
|
|
108
|
-
const qs = params?.period ? `?period=${params.period}` : "";
|
|
109
|
-
return this.restRequest("GET", `/kol/${wallet}/timing${qs}`);
|
|
110
|
-
}
|
|
111
|
-
getDeployerTrajectory(wallet) {
|
|
112
|
-
return this.restRequest("GET", `/deployer-hunter/${wallet}/trajectory`);
|
|
113
|
-
}
|
|
114
|
-
// ── REST helper (used by webhooks, streaming, alpha, copy-trade, wallet-tracker) ──
|
|
115
|
-
async restRequest(method, path, body) {
|
|
116
|
-
if (this.authMode !== "madeonsol") {
|
|
117
|
-
return { error: "MadeOnSol API key required for this endpoint. Get a free `msk_` key at https://madeonsol.com/developer", status: 401 };
|
|
118
|
-
}
|
|
119
|
-
const res = await this.fetchFn(`${this.baseUrl}/api/v1${path}`, {
|
|
120
|
-
method,
|
|
121
|
-
headers: {
|
|
122
|
-
"Content-Type": "application/json",
|
|
123
|
-
...this.authHeaders,
|
|
124
|
-
},
|
|
125
|
-
...(body ? { body: JSON.stringify(body) } : {}),
|
|
126
|
-
});
|
|
127
|
-
this.captureRateLimit(res);
|
|
128
|
-
if (!res.ok) {
|
|
129
|
-
const text = await res.text().catch(() => "Unknown error");
|
|
130
|
-
return { error: text, status: res.status };
|
|
131
|
-
}
|
|
132
|
-
return { data: await res.json(), status: res.status };
|
|
133
|
-
}
|
|
134
|
-
// ── Webhook management (PRO/ULTRA) ──
|
|
135
|
-
createWebhook(params) {
|
|
136
|
-
return this.restRequest("POST", "/webhooks", params);
|
|
137
|
-
}
|
|
138
|
-
listWebhooks() {
|
|
139
|
-
return this.restRequest("GET", "/webhooks");
|
|
140
|
-
}
|
|
141
|
-
deleteWebhook(id) {
|
|
142
|
-
return this.restRequest("DELETE", `/webhooks/${id}`);
|
|
143
|
-
}
|
|
144
|
-
testWebhook(webhookId) {
|
|
145
|
-
return this.restRequest("POST", "/webhooks/test", { webhook_id: webhookId });
|
|
146
|
-
}
|
|
147
|
-
getStreamToken() {
|
|
148
|
-
return this.restRequest("POST", "/stream/token");
|
|
149
|
-
}
|
|
150
|
-
// ── Wallet Tracker ──
|
|
151
|
-
getWalletTrackerWatchlist() {
|
|
152
|
-
return this.restRequest("GET", "/wallet-tracker/watchlist");
|
|
153
|
-
}
|
|
154
|
-
addToWatchlist(walletAddress, label) {
|
|
155
|
-
return this.restRequest("POST", "/wallet-tracker/watchlist", { wallet_address: walletAddress, ...(label ? { label } : {}) });
|
|
156
|
-
}
|
|
157
|
-
removeFromWatchlist(walletAddress) {
|
|
158
|
-
return this.restRequest("DELETE", `/wallet-tracker/watchlist/${encodeURIComponent(walletAddress)}`);
|
|
159
|
-
}
|
|
160
|
-
getWalletTrackerTrades(params) {
|
|
161
|
-
const qs = new URLSearchParams();
|
|
162
|
-
if (params) {
|
|
163
|
-
for (const [k, v] of Object.entries(params)) {
|
|
164
|
-
if (v !== undefined)
|
|
165
|
-
qs.set(k, v);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
169
|
-
return this.restRequest("GET", `/wallet-tracker/trades${query}`);
|
|
170
|
-
}
|
|
171
|
-
getWalletTrackerSummary(params) {
|
|
172
|
-
const qs = new URLSearchParams();
|
|
173
|
-
if (params?.period)
|
|
174
|
-
qs.set("period", params.period);
|
|
175
|
-
if (params?.wallet)
|
|
176
|
-
qs.set("wallet", params.wallet);
|
|
177
|
-
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
178
|
-
return this.restRequest("GET", `/wallet-tracker/summary${query}`);
|
|
179
|
-
}
|
|
180
|
-
// ── Alpha Wallet Intelligence ──
|
|
181
|
-
getAlphaLeaderboard(params) {
|
|
182
|
-
const qs = new URLSearchParams();
|
|
183
|
-
if (params)
|
|
184
|
-
for (const [k, v] of Object.entries(params))
|
|
185
|
-
if (v !== undefined)
|
|
186
|
-
qs.set(k, v);
|
|
187
|
-
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
188
|
-
return this.restRequest("GET", `/alpha/leaderboard${query}`);
|
|
189
|
-
}
|
|
190
|
-
getAlphaWallet(wallet) {
|
|
191
|
-
return this.restRequest("GET", `/alpha/wallet/${encodeURIComponent(wallet)}`);
|
|
192
|
-
}
|
|
193
|
-
getAlphaLinked(wallet) {
|
|
194
|
-
return this.restRequest("GET", `/alpha/${encodeURIComponent(wallet)}/linked`);
|
|
195
|
-
}
|
|
196
|
-
// ── Token Quality ──
|
|
197
|
-
getTokenCapTable(mint) {
|
|
198
|
-
return this.restRequest("GET", `/tokens/${encodeURIComponent(mint)}/cap-table`);
|
|
199
|
-
}
|
|
200
|
-
getTokenBuyerQuality(mint) {
|
|
201
|
-
return this.restRequest("GET", `/tokens/${encodeURIComponent(mint)}/buyer-quality`);
|
|
202
|
-
}
|
|
203
|
-
/** Bulk buyer-quality scoring for up to 50 mints. Shares the single-mint 5-min LRU cache. */
|
|
204
|
-
getTokenBuyerQualityBatch(mints) {
|
|
205
|
-
return this.restRequest("POST", "/tokens/batch/buyer-quality", { mints });
|
|
206
|
-
}
|
|
207
|
-
// ── Token intelligence (/token/{mint}) ──
|
|
208
|
-
/** Comprehensive per-mint snapshot: price, MC, volume, deployer, KOL activity, age, blacklist. */
|
|
209
|
-
getToken(mint) {
|
|
210
|
-
return this.restRequest("GET", `/token/${encodeURIComponent(mint)}`);
|
|
211
|
-
}
|
|
212
|
-
/** Bulk lookup of up to 50 mints — same per-mint shape as getToken(). 10-20× cheaper than N sequential calls. */
|
|
213
|
-
getTokenBatch(mints) {
|
|
214
|
-
return this.restRequest("POST", "/token/batch", { mints });
|
|
215
|
-
}
|
|
216
|
-
// ── Copy-Trade Rules (PRO/ULTRA) ──
|
|
217
|
-
copyTradeList() {
|
|
218
|
-
return this.restRequest("GET", "/copy-trade/rules");
|
|
219
|
-
}
|
|
220
|
-
copyTradeCreate(params) {
|
|
221
|
-
return this.restRequest("POST", "/copy-trade/rules", params);
|
|
222
|
-
}
|
|
223
|
-
copyTradeGet(ruleId) {
|
|
224
|
-
return this.restRequest("GET", `/copy-trade/rules/${encodeURIComponent(ruleId)}`);
|
|
225
|
-
}
|
|
226
|
-
copyTradeUpdate(ruleId, updates) {
|
|
227
|
-
return this.restRequest("PATCH", `/copy-trade/rules/${encodeURIComponent(ruleId)}`, updates);
|
|
228
|
-
}
|
|
229
|
-
copyTradeDelete(ruleId) {
|
|
230
|
-
return this.restRequest("DELETE", `/copy-trade/rules/${encodeURIComponent(ruleId)}`);
|
|
231
|
-
}
|
|
232
|
-
// ── Coordination alerts (PRO/ULTRA, v1.1) ──
|
|
233
|
-
coordinationAlertsList() {
|
|
234
|
-
return this.restRequest("GET", "/kol/coordination/alerts");
|
|
235
|
-
}
|
|
236
|
-
coordinationAlertsCreate(params) {
|
|
237
|
-
return this.restRequest("POST", "/kol/coordination/alerts", params);
|
|
238
|
-
}
|
|
239
|
-
coordinationAlertsGet(ruleId) {
|
|
240
|
-
return this.restRequest("GET", `/kol/coordination/alerts/${encodeURIComponent(ruleId)}`);
|
|
241
|
-
}
|
|
242
|
-
coordinationAlertsUpdate(ruleId, updates) {
|
|
243
|
-
return this.restRequest("PATCH", `/kol/coordination/alerts/${encodeURIComponent(ruleId)}`, updates);
|
|
244
|
-
}
|
|
245
|
-
coordinationAlertsDelete(ruleId) {
|
|
246
|
-
return this.restRequest("DELETE", `/kol/coordination/alerts/${encodeURIComponent(ruleId)}`);
|
|
247
|
-
}
|
|
248
|
-
// ── First-touch signal ──
|
|
249
|
-
firstTouches(params) {
|
|
250
|
-
const qs = new URLSearchParams();
|
|
251
|
-
if (params)
|
|
252
|
-
for (const [k, v] of Object.entries(params))
|
|
253
|
-
if (v !== undefined)
|
|
254
|
-
qs.set(k, String(v));
|
|
255
|
-
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
256
|
-
return this.restRequest("GET", `/kol/first-touches${query}`);
|
|
257
|
-
}
|
|
258
|
-
firstTouchSubscriptionsList() {
|
|
259
|
-
return this.restRequest("GET", "/kol/first-touches/subscriptions");
|
|
260
|
-
}
|
|
261
|
-
firstTouchSubscriptionsCreate(params) {
|
|
262
|
-
return this.restRequest("POST", "/kol/first-touches/subscriptions", params);
|
|
263
|
-
}
|
|
264
|
-
firstTouchSubscriptionsGet(id) {
|
|
265
|
-
return this.restRequest("GET", `/kol/first-touches/subscriptions/${encodeURIComponent(id)}`);
|
|
266
|
-
}
|
|
267
|
-
firstTouchSubscriptionsUpdate(id, updates) {
|
|
268
|
-
return this.restRequest("PATCH", `/kol/first-touches/subscriptions/${encodeURIComponent(id)}`, updates);
|
|
269
|
-
}
|
|
270
|
-
firstTouchSubscriptionsDelete(id) {
|
|
271
|
-
return this.restRequest("DELETE", `/kol/first-touches/subscriptions/${encodeURIComponent(id)}`);
|
|
272
|
-
}
|
|
273
|
-
copyTradeSignals(params) {
|
|
274
|
-
const qs = new URLSearchParams();
|
|
275
|
-
if (params)
|
|
276
|
-
for (const [k, v] of Object.entries(params))
|
|
277
|
-
if (v !== undefined)
|
|
278
|
-
qs.set(k, v);
|
|
279
|
-
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
280
|
-
return this.restRequest("GET", `/copy-trade/signals${query}`);
|
|
281
|
-
}
|
|
282
|
-
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from "@elizaos/core";
|
|
2
|
-
import { kolFeedAction } from "./actions/kol-feed.js";
|
|
3
|
-
import { kolCoordinationAction } from "./actions/kol-coordination.js";
|
|
4
|
-
import { kolLeaderboardAction } from "./actions/kol-leaderboard.js";
|
|
5
|
-
import { deployerAlertsAction } from "./actions/deployer-alerts.js";
|
|
6
|
-
import { walletTrackerWatchlistAction, walletTrackerTradesAction } from "./actions/wallet-tracker.js";
|
|
7
|
-
import { kolTokenEntryOrderAction } from "./actions/kol-token-entry-order.js";
|
|
8
|
-
import { kolCompareAction } from "./actions/kol-compare.js";
|
|
9
|
-
import { kolAlertsRecentAction } from "./actions/kol-alerts-recent.js";
|
|
10
|
-
/** Key used to store the initialized client on the runtime */
|
|
11
|
-
export declare const MADEONSOL_CLIENT_KEY = "madeonsol:client";
|
|
12
|
-
export declare const madeOnSolPlugin: Plugin;
|
|
13
|
-
export default madeOnSolPlugin;
|
|
14
|
-
export { MadeOnSolClient } from "./client.js";
|
|
15
|
-
export { kolFeedAction, kolCoordinationAction, kolLeaderboardAction, deployerAlertsAction };
|
|
16
|
-
export { walletTrackerWatchlistAction, walletTrackerTradesAction };
|
|
17
|
-
export { kolTokenEntryOrderAction, kolCompareAction, kolAlertsRecentAction };
|