@madeonsol/plugin-madeonsol 1.8.1 → 1.9.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 +41 -0
- package/dist/client.d.ts +70 -0
- package/dist/client.js +50 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -129,6 +129,47 @@ ULTRA only for subscriptions — up to 10 active. CRUD: `firstTouchSubscriptions
|
|
|
129
129
|
|
|
130
130
|
> **Don't poll — push.** Median lead time before the second KOL is 12 seconds. WebSocket channel: `kol:first_touches`.
|
|
131
131
|
|
|
132
|
+
### Price alerts *(new in 1.9)*
|
|
133
|
+
|
|
134
|
+
CRUD for token dip/recovery price alerts. Fires when a token's market cap crosses your threshold. PRO=5 rules, ULTRA=25.
|
|
135
|
+
|
|
136
|
+
| Action | Description |
|
|
137
|
+
|---|---|
|
|
138
|
+
| `PRICE_ALERTS_LIST` | List your price alert rules |
|
|
139
|
+
| `PRICE_ALERTS_CREATE` | Create a dip/recovery alert rule |
|
|
140
|
+
| `PRICE_ALERTS_DELETE` | Delete a price alert rule |
|
|
141
|
+
|
|
142
|
+
```ts
|
|
143
|
+
import { MadeOnSolClient } from "@madeonsol/plugin-madeonsol";
|
|
144
|
+
const client = new MadeOnSolClient({ apiKey: process.env.MADEONSOL_API_KEY });
|
|
145
|
+
|
|
146
|
+
const { alert, webhook_secret } = await client.priceAlertsCreate({
|
|
147
|
+
name: "SOL dip buy",
|
|
148
|
+
token_mint: "So11111111111111111111111111111111111111112",
|
|
149
|
+
condition: "below",
|
|
150
|
+
threshold_mc_usd: 5_000_000_000,
|
|
151
|
+
cooldown_min: 120,
|
|
152
|
+
delivery_mode: "both",
|
|
153
|
+
webhook_url: "https://you.com/hooks/price",
|
|
154
|
+
});
|
|
155
|
+
// store webhook_secret — shown ONCE
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Also available: `priceAlertsList()`, `priceAlertsGet(id)`, `priceAlertsUpdate(id, updates)`, `priceAlertsDelete(id)`.
|
|
159
|
+
|
|
160
|
+
### Scout leaderboard & KOL consensus *(new in 1.9)*
|
|
161
|
+
|
|
162
|
+
| Action | Description |
|
|
163
|
+
|---|---|
|
|
164
|
+
| `SCOUT_LEADERBOARD` | Top scout-tier KOLs ranked by first-touch follow-on rate, win rate, and ROI (PRO+) |
|
|
165
|
+
| `KOL_CONSENSUS` | Tokens with the strongest KOL agreement signal (PRO+) |
|
|
166
|
+
| `PEAK_HISTORY` | Historical peak-density windows for a token (PRO+) |
|
|
167
|
+
| `COORDINATION_HISTORY` | Global coordination event log (PRO+) |
|
|
168
|
+
|
|
169
|
+
### Wallet derived stats *(new in 1.9)*
|
|
170
|
+
|
|
171
|
+
`WALLET_STATS` now returns a `stats` object with derived fields: `win_rate` (0-1), `roi`, `verdict` ("strong" | "profitable" | "neutral" | "losing"), and `biggest_miss` (token with the highest post-exit gain the wallet missed).
|
|
172
|
+
|
|
132
173
|
Your agent can then respond to queries like:
|
|
133
174
|
- "What are KOLs buying right now?"
|
|
134
175
|
- "Show me the KOL leaderboard this week"
|
package/dist/client.d.ts
CHANGED
|
@@ -455,4 +455,74 @@ export declare class MadeOnSolClient {
|
|
|
455
455
|
error?: string;
|
|
456
456
|
status: number;
|
|
457
457
|
}>;
|
|
458
|
+
priceAlertsList(): Promise<{
|
|
459
|
+
data?: unknown;
|
|
460
|
+
error?: string;
|
|
461
|
+
status: number;
|
|
462
|
+
}>;
|
|
463
|
+
priceAlertsCreate(params: {
|
|
464
|
+
token_mint: string;
|
|
465
|
+
drop_pct: number;
|
|
466
|
+
recovery_pct?: number;
|
|
467
|
+
name?: string;
|
|
468
|
+
delivery_mode?: "webhook" | "websocket" | "both";
|
|
469
|
+
webhook_url?: string;
|
|
470
|
+
}): Promise<{
|
|
471
|
+
data?: unknown;
|
|
472
|
+
error?: string;
|
|
473
|
+
status: number;
|
|
474
|
+
}>;
|
|
475
|
+
priceAlertsGet(id: number | string): Promise<{
|
|
476
|
+
data?: unknown;
|
|
477
|
+
error?: string;
|
|
478
|
+
status: number;
|
|
479
|
+
}>;
|
|
480
|
+
priceAlertsUpdate(id: number | string, updates: Record<string, unknown>): Promise<{
|
|
481
|
+
data?: unknown;
|
|
482
|
+
error?: string;
|
|
483
|
+
status: number;
|
|
484
|
+
}>;
|
|
485
|
+
priceAlertsDelete(id: number | string): Promise<{
|
|
486
|
+
data?: unknown;
|
|
487
|
+
error?: string;
|
|
488
|
+
status: number;
|
|
489
|
+
}>;
|
|
490
|
+
priceAlertsEvents(params?: {
|
|
491
|
+
alert_id?: number;
|
|
492
|
+
event_type?: string;
|
|
493
|
+
since?: string;
|
|
494
|
+
limit?: number;
|
|
495
|
+
}): Promise<{
|
|
496
|
+
data?: unknown;
|
|
497
|
+
error?: string;
|
|
498
|
+
status: number;
|
|
499
|
+
}>;
|
|
500
|
+
scoutLeaderboard(params?: {
|
|
501
|
+
limit?: number;
|
|
502
|
+
scout_tier?: string;
|
|
503
|
+
sort?: string;
|
|
504
|
+
}): Promise<{
|
|
505
|
+
data?: unknown;
|
|
506
|
+
error?: string;
|
|
507
|
+
status: number;
|
|
508
|
+
}>;
|
|
509
|
+
coordinationHistory(params?: {
|
|
510
|
+
limit?: number;
|
|
511
|
+
since?: string;
|
|
512
|
+
min_score?: number;
|
|
513
|
+
}): Promise<{
|
|
514
|
+
data?: unknown;
|
|
515
|
+
error?: string;
|
|
516
|
+
status: number;
|
|
517
|
+
}>;
|
|
518
|
+
kolConsensus(mint: string): Promise<{
|
|
519
|
+
data?: unknown;
|
|
520
|
+
error?: string;
|
|
521
|
+
status: number;
|
|
522
|
+
}>;
|
|
523
|
+
peakHistory(mint: string): Promise<{
|
|
524
|
+
data?: unknown;
|
|
525
|
+
error?: string;
|
|
526
|
+
status: number;
|
|
527
|
+
}>;
|
|
458
528
|
}
|
package/dist/client.js
CHANGED
|
@@ -327,4 +327,54 @@ export class MadeOnSolClient {
|
|
|
327
327
|
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
328
328
|
return this.restRequest("GET", `/copy-trade/signals${query}`);
|
|
329
329
|
}
|
|
330
|
+
// ── Price alerts (PRO/ULTRA, v1.9) ──
|
|
331
|
+
priceAlertsList() {
|
|
332
|
+
return this.restRequest("GET", "/price-alerts");
|
|
333
|
+
}
|
|
334
|
+
priceAlertsCreate(params) {
|
|
335
|
+
return this.restRequest("POST", "/price-alerts", params);
|
|
336
|
+
}
|
|
337
|
+
priceAlertsGet(id) {
|
|
338
|
+
return this.restRequest("GET", `/price-alerts/${id}`);
|
|
339
|
+
}
|
|
340
|
+
priceAlertsUpdate(id, updates) {
|
|
341
|
+
return this.restRequest("PATCH", `/price-alerts/${id}`, updates);
|
|
342
|
+
}
|
|
343
|
+
priceAlertsDelete(id) {
|
|
344
|
+
return this.restRequest("DELETE", `/price-alerts/${id}`);
|
|
345
|
+
}
|
|
346
|
+
priceAlertsEvents(params) {
|
|
347
|
+
const qs = new URLSearchParams();
|
|
348
|
+
if (params)
|
|
349
|
+
for (const [k, v] of Object.entries(params))
|
|
350
|
+
if (v !== undefined)
|
|
351
|
+
qs.set(k, String(v));
|
|
352
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
353
|
+
return this.restRequest("GET", `/price-alerts/events${query}`);
|
|
354
|
+
}
|
|
355
|
+
// ── v1.9 new endpoints ──
|
|
356
|
+
scoutLeaderboard(params) {
|
|
357
|
+
const qs = new URLSearchParams();
|
|
358
|
+
if (params)
|
|
359
|
+
for (const [k, v] of Object.entries(params))
|
|
360
|
+
if (v !== undefined)
|
|
361
|
+
qs.set(k, String(v));
|
|
362
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
363
|
+
return this.restRequest("GET", `/kol/scouts/leaderboard${query}`);
|
|
364
|
+
}
|
|
365
|
+
coordinationHistory(params) {
|
|
366
|
+
const qs = new URLSearchParams();
|
|
367
|
+
if (params)
|
|
368
|
+
for (const [k, v] of Object.entries(params))
|
|
369
|
+
if (v !== undefined)
|
|
370
|
+
qs.set(k, String(v));
|
|
371
|
+
const query = qs.toString() ? `?${qs.toString()}` : "";
|
|
372
|
+
return this.restRequest("GET", `/kol/coordination/history${query}`);
|
|
373
|
+
}
|
|
374
|
+
kolConsensus(mint) {
|
|
375
|
+
return this.restRequest("GET", `/tokens/${encodeURIComponent(mint)}/kol-consensus`);
|
|
376
|
+
}
|
|
377
|
+
peakHistory(mint) {
|
|
378
|
+
return this.restRequest("GET", `/tokens/${encodeURIComponent(mint)}/peak-history`);
|
|
379
|
+
}
|
|
330
380
|
}
|
package/package.json
CHANGED