madeonsol-x402 4.0.0 → 4.2.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.
@@ -0,0 +1,399 @@
1
+ import { expandEarlyFrame } from './early-codec.js';
2
+ export { expandEarlyFrame } from './early-codec.js';
3
+ const cursor = (v) => !!v && typeof v === 'object' && typeof v.instance === 'string' && Number.isSafeInteger(v.seq) && v.seq >= 0;
4
+ const encoder = new TextEncoder();
5
+ const idOf = (v) => v.sub_id ?? 'default';
6
+ function bounded(value, fallback, max) {
7
+ const n = value ?? fallback;
8
+ if (!Number.isSafeInteger(n) || n < 1 || n > max)
9
+ throw new Error('invalid_client_limit');
10
+ return n;
11
+ }
12
+ function subscription(input) {
13
+ if (!input || input.type !== 'subscribe' || !/^[A-Za-z0-9_.-]{1,64}$/.test(idOf(input)) ||
14
+ !Array.isArray(input.channels) || !input.channels.length || input.channels.length > 6 || input.channels.some(c => !['early:deploys', 'early:locks', 'early:trades', 'early:liquidity', 'early:migrations', 'early:token_changes'].includes(c)) ||
15
+ !['full', 'compact-v1'].includes(input.format ?? 'full') || (input.resume !== undefined && !cursor(input.resume)))
16
+ throw new Error('invalid_subscription');
17
+ const copy = JSON.parse(JSON.stringify(input));
18
+ if (JSON.stringify(copy).length > 32_000)
19
+ throw new Error('control_too_large');
20
+ return copy;
21
+ }
22
+ /** Managed ShredPrism early-stream client (4.1.0+). Bounded process-local
23
+ * recovery, per-subscription checkpoints, explicit gaps; never durable history. */
24
+ export class MadeOnSolEarlyStream {
25
+ options;
26
+ states = new Map();
27
+ limits;
28
+ socket = null;
29
+ pending = null;
30
+ replayTimers = new Map();
31
+ timer = null;
32
+ watchdog = null;
33
+ generation = 0;
34
+ stopped = true;
35
+ ready = false;
36
+ attempts = 0;
37
+ authFailures = 0;
38
+ queue = Promise.resolve();
39
+ queuedFrames = 0;
40
+ queuedBytes = 0;
41
+ constructor(options) {
42
+ this.options = options;
43
+ this.limits = {
44
+ attempts: bounded(options.maxReconnectAttempts, 10, 100), auth: bounded(options.maxAuthRetries, 3, 10),
45
+ backoff: bounded(options.backoffMs, 500, 60_000), maxBackoff: bounded(options.maxBackoffMs, 30_000, 300_000),
46
+ timeout: bounded(options.controlTimeoutMs, 15_000, 120_000), frames: bounded(options.maxPendingFrames, 2048, 100_000),
47
+ bytes: bounded(options.maxPendingBytes, 8 * 1024 * 1024, 64 * 1024 * 1024), dedupe: bounded(options.dedupeSize, 10_000, 100_000),
48
+ };
49
+ if (!Array.isArray(options.subscriptions) || options.subscriptions.length > 10)
50
+ throw new Error('invalid_subscriptions');
51
+ for (const raw of options.subscriptions) {
52
+ const control = subscription(raw), id = idOf(control);
53
+ if (this.states.has(id))
54
+ throw new Error('duplicate_sub_id');
55
+ this.states.set(id, { control, cursor: control.resume ? { ...control.resume } : null, progress: null, recovering: false, blocked: false, seen: new Set() });
56
+ delete control.resume;
57
+ }
58
+ }
59
+ status(type, detail = {}) {
60
+ try {
61
+ this.options.onStatus?.({ type, ...detail });
62
+ }
63
+ catch { /* diagnostics cannot advance or disrupt delivery */ }
64
+ }
65
+ getSubscriptions() { return [...this.states.values()].map(s => structuredClone(s.control)); }
66
+ getCursors() { return Object.fromEntries([...this.states].map(([id, s]) => [id, s.cursor && { ...s.cursor }])); }
67
+ /** Explicitly skip the reported missing range; never called automatically. */
68
+ acceptGap(id = 'default') {
69
+ const s = this.states.get(id);
70
+ if (!s || s.recovering || !this.ready || !s.progress)
71
+ throw new Error('gap_not_ready');
72
+ const from = s.cursor;
73
+ s.blocked = false;
74
+ s.cursor = { ...s.progress };
75
+ this.status('gap_accepted', { sub_id: id, from, to: s.cursor });
76
+ }
77
+ connect() {
78
+ if (!this.stopped)
79
+ return;
80
+ this.stopped = false;
81
+ this.attempts = 0;
82
+ this.authFailures = 0;
83
+ void this.open();
84
+ }
85
+ close() {
86
+ this.stopped = true;
87
+ this.ready = false;
88
+ this.generation++;
89
+ if (this.timer)
90
+ clearTimeout(this.timer);
91
+ this.timer = null;
92
+ if (this.watchdog)
93
+ clearTimeout(this.watchdog);
94
+ this.watchdog = null;
95
+ this.rejectPending('client_closed');
96
+ for (const timer of this.replayTimers.values())
97
+ clearTimeout(timer);
98
+ this.replayTimers.clear();
99
+ const ws = this.socket;
100
+ this.socket = null;
101
+ ws?.close(1000, 'Client stopped');
102
+ }
103
+ fatal(reason) { this.close(); this.status('fatal', { reason }); }
104
+ rejectPending(reason) {
105
+ const p = this.pending;
106
+ this.pending = null;
107
+ if (p) {
108
+ clearTimeout(p.timer);
109
+ p.reject(new Error(reason));
110
+ }
111
+ }
112
+ retry(code) {
113
+ if (this.stopped)
114
+ return;
115
+ if (code === 4001 && ++this.authFailures >= this.limits.auth) {
116
+ this.fatal('authorization_rejected');
117
+ return;
118
+ }
119
+ if ([1008, 4003].includes(code)) {
120
+ this.fatal('policy_rejected');
121
+ return;
122
+ }
123
+ if (this.options.autoReconnect === false || ++this.attempts > this.limits.attempts) {
124
+ this.fatal('reconnect_exhausted');
125
+ return;
126
+ }
127
+ const delayMs = Math.max(code === 4002 ? 60_000 : 0, Math.min(this.limits.maxBackoff, this.limits.backoff * 2 ** Math.min(this.attempts - 1, 20)) * (0.8 + Math.random() * 0.2));
128
+ this.status('reconnect', { code, attempt: this.attempts, delayMs });
129
+ this.timer = setTimeout(() => { this.timer = null; void this.open(); }, delayMs);
130
+ }
131
+ async open() {
132
+ const gen = ++this.generation;
133
+ this.ready = false;
134
+ this.watchdog = setTimeout(() => this.disconnect(gen, 1006, 'connection_timeout'), this.limits.timeout);
135
+ try {
136
+ const token = await this.options.getToken();
137
+ if (this.stopped || gen !== this.generation)
138
+ return;
139
+ if (!token.early_ws_url) {
140
+ this.fatal('early_stream_unavailable');
141
+ return;
142
+ }
143
+ if (!/^[A-Za-z0-9_-]{32,128}$/.test(token.token)) {
144
+ this.fatal('invalid_stream_token');
145
+ return;
146
+ }
147
+ const url = new URL(token.early_ws_url);
148
+ if ((url.protocol !== 'wss:' && !(url.protocol === 'ws:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname))) || url.username || url.password || url.hash || url.search) {
149
+ this.fatal('invalid_early_url');
150
+ return;
151
+ }
152
+ url.searchParams.set('token', token.token); // browser-compatible; never surfaced in diagnostics
153
+ const Impl = (this.options.WebSocketImpl ?? globalThis.WebSocket);
154
+ if (!Impl) {
155
+ this.fatal('websocket_unavailable');
156
+ return;
157
+ }
158
+ const ws = new Impl(url.toString());
159
+ this.socket = ws;
160
+ ws.onmessage = ev => this.enqueue(gen, ev.data);
161
+ ws.onerror = () => this.disconnect(gen, 1006, 'transport_error');
162
+ ws.onclose = ev => this.disconnect(gen, ev.code, 'socket_closed');
163
+ }
164
+ catch {
165
+ this.disconnect(gen, 1006, 'token_or_connect_failed');
166
+ }
167
+ }
168
+ disconnect(gen, code, reason) {
169
+ if (gen !== this.generation || this.stopped)
170
+ return;
171
+ this.generation++;
172
+ this.ready = false;
173
+ if (this.watchdog)
174
+ clearTimeout(this.watchdog);
175
+ this.watchdog = null;
176
+ this.rejectPending('connection_lost');
177
+ for (const timer of this.replayTimers.values())
178
+ clearTimeout(timer);
179
+ this.replayTimers.clear();
180
+ const ws = this.socket;
181
+ this.socket = null;
182
+ ws?.close(1000, 'Reconnect');
183
+ this.status('close', { code, reason });
184
+ this.retry(code);
185
+ }
186
+ enqueue(gen, raw) {
187
+ if (gen !== this.generation || this.stopped)
188
+ return;
189
+ if (typeof raw !== 'string') {
190
+ this.fatal('unexpected_binary_frame');
191
+ return;
192
+ }
193
+ if (raw.length > this.limits.bytes) {
194
+ this.fatal('client_queue_limit');
195
+ return;
196
+ }
197
+ const bytes = encoder.encode(raw).length;
198
+ if (this.queuedFrames + 1 > this.limits.frames || this.queuedBytes + bytes > this.limits.bytes) {
199
+ this.fatal('client_queue_limit');
200
+ return;
201
+ }
202
+ this.queuedFrames++;
203
+ this.queuedBytes += bytes;
204
+ this.queue = this.queue.then(async () => {
205
+ if (gen !== this.generation || this.stopped)
206
+ return;
207
+ let frame;
208
+ try {
209
+ frame = expandEarlyFrame(JSON.parse(raw));
210
+ }
211
+ catch {
212
+ this.fatal('invalid_frame');
213
+ return;
214
+ }
215
+ await this.receive(gen, frame);
216
+ }).catch(() => { if (gen === this.generation)
217
+ this.fatal('handler_failed'); }).finally(() => { this.queuedFrames--; this.queuedBytes -= bytes; });
218
+ }
219
+ async receive(gen, f) {
220
+ if (f.type === 'connected') {
221
+ if (this.watchdog)
222
+ clearTimeout(this.watchdog);
223
+ this.watchdog = null;
224
+ this.ready = true;
225
+ this.status('connected');
226
+ void this.restore(gen);
227
+ return;
228
+ }
229
+ const id = idOf(f), s = this.states.get(id);
230
+ if (f.type === 'warning') {
231
+ this.status('warning', { code: f.code });
232
+ this.rejectPending(typeof f.code === 'string' ? f.code : 'control_rejected');
233
+ return;
234
+ }
235
+ const p = this.pending;
236
+ if (p && f.type === p.ack && id === p.id) {
237
+ this.pending = null;
238
+ clearTimeout(p.timer);
239
+ p.apply(f);
240
+ p.resolve();
241
+ this.authFailures = 0;
242
+ this.status(String(f.type), { sub_id: id, wallet_list: f.wallet_list });
243
+ return;
244
+ }
245
+ if (f.type === 'gap' || f.event === 'early:gap') {
246
+ for (const [key, state] of this.states)
247
+ if (!f.sub_id || key === id)
248
+ state.blocked = true;
249
+ await this.options.onFrame(f);
250
+ this.status('gap', { sub_id: f.sub_id, reason: f.reason });
251
+ return;
252
+ }
253
+ if (f.type === 'wallet_list_updated') {
254
+ this.status('wallet_list_updated', { sub_id: id, wallet_list: f.wallet_list });
255
+ return;
256
+ }
257
+ if (f.type === 'wallet_list_unavailable') {
258
+ if (s) {
259
+ s.blocked = true;
260
+ s.recovering = false;
261
+ }
262
+ clearTimeout(this.replayTimers.get(id));
263
+ this.replayTimers.delete(id);
264
+ await this.options.onFrame({ type: 'gap', sub_id: id, reason: f.reason, wallet_list: f.wallet_list });
265
+ this.status('gap', { sub_id: id, reason: f.reason });
266
+ return;
267
+ }
268
+ if (!s)
269
+ return;
270
+ if (f.type === 'replay_start') {
271
+ s.recovering = true;
272
+ return;
273
+ }
274
+ if (f.type === 'replay_end') {
275
+ clearTimeout(this.replayTimers.get(id));
276
+ this.replayTimers.delete(id);
277
+ s.recovering = false;
278
+ if (f.complete === true && cursor(f.cursor) && !s.blocked) {
279
+ s.cursor = { ...f.cursor };
280
+ if (s.progress?.instance === s.cursor.instance && s.progress.seq > s.cursor.seq)
281
+ s.cursor = { ...s.progress };
282
+ }
283
+ else {
284
+ s.blocked = true;
285
+ await this.options.onFrame({ type: 'gap', sub_id: id, reason: f.reason ?? 'incomplete_replay', durable: false });
286
+ }
287
+ this.status('replay', { sub_id: id, complete: f.complete === true && !s.blocked, cursor: s.cursor });
288
+ return;
289
+ }
290
+ if (!['early:observed', 'early:outcome'].includes(f.event ?? ''))
291
+ return;
292
+ if (!cursor(f.cursor) || typeof f.id !== 'string' || !f.data || typeof f.data !== 'object' || Array.isArray(f.data)) {
293
+ this.fatal('invalid_event');
294
+ return;
295
+ }
296
+ const key = `${f.event}:${f.id}`;
297
+ if (!s.seen.has(key)) {
298
+ await this.options.onFrame(f);
299
+ if (gen !== this.generation || this.stopped)
300
+ return;
301
+ s.seen.add(key);
302
+ if (s.seen.size > this.limits.dedupe)
303
+ s.seen.delete(s.seen.values().next().value);
304
+ }
305
+ if (!s.progress || s.progress.instance !== f.cursor.instance || f.cursor.seq > s.progress.seq)
306
+ s.progress = { ...f.cursor };
307
+ if (!s.recovering && !s.blocked)
308
+ s.cursor = { ...s.progress };
309
+ this.attempts = 0;
310
+ }
311
+ command(control, ack, apply) {
312
+ if (!this.ready || this.socket?.readyState !== 1)
313
+ return Promise.reject(new Error('not_connected'));
314
+ if (this.pending)
315
+ return Promise.reject(new Error('control_in_progress'));
316
+ return new Promise((resolve, reject) => {
317
+ this.pending = { id: idOf(control), ack, apply, resolve, reject, timer: setTimeout(() => this.disconnect(this.generation, 1006, 'control_timeout'), this.limits.timeout) };
318
+ try {
319
+ this.socket.send(JSON.stringify(control));
320
+ }
321
+ catch {
322
+ this.disconnect(this.generation, 1006, 'control_send_failed');
323
+ }
324
+ });
325
+ }
326
+ async restore(gen) {
327
+ for (const [id, s] of this.states) {
328
+ if (gen !== this.generation || this.stopped)
329
+ return;
330
+ s.recovering = !!s.cursor;
331
+ // A new recovery re-evaluates the old range; any remaining gap is reported again.
332
+ if (s.recovering)
333
+ s.blocked = false;
334
+ if (s.recovering)
335
+ this.replayTimers.set(id, setTimeout(() => {
336
+ this.status('gap', { sub_id: id, reason: 'replay_timeout' });
337
+ this.disconnect(gen, 1006, 'replay_timeout');
338
+ }, this.limits.timeout));
339
+ try {
340
+ await this.command({ ...s.control, ...(s.cursor ? { resume: s.cursor } : {}) }, 'subscribed', f => {
341
+ if (cursor(f.cursor)) {
342
+ if (!s.cursor)
343
+ s.cursor = { ...f.cursor };
344
+ if (!s.progress || s.progress.instance !== f.cursor.instance || s.progress.seq < f.cursor.seq)
345
+ s.progress = { ...f.cursor };
346
+ }
347
+ });
348
+ }
349
+ catch (error) {
350
+ if (gen === this.generation && !this.stopped)
351
+ this.fatal(`subscription_rejected:${error.message}`);
352
+ return;
353
+ }
354
+ this.status('subscription_restored', { sub_id: id });
355
+ }
356
+ if (gen === this.generation)
357
+ this.status('ready');
358
+ }
359
+ /** Await the previous control before issuing another. A rejected update keeps
360
+ * the accepted configuration, including across reconnect. */
361
+ updateSubscription(id, change) {
362
+ const s = this.states.get(id);
363
+ if (!s || s.recovering || s.blocked)
364
+ return Promise.reject(new Error('subscription_not_ready'));
365
+ const patch = { ...(change.wallet_list === undefined ? {} : { wallet_list: change.wallet_list }), ...(change.filters === undefined ? {} : { filters: change.filters }), ...(change.format === undefined ? {} : { format: change.format }) };
366
+ const next = subscription({ ...s.control, ...patch });
367
+ return this.command({ type: 'update', sub_id: id, ...patch }, 'updated', () => { s.control = next; });
368
+ }
369
+ /** Configure with subscriptions: [] to manage lists before adding a stream. */
370
+ async manageWalletList(control) {
371
+ let result;
372
+ await this.command({ ...control, type: 'wallet_list' }, 'wallet_list_result', f => { result = f; });
373
+ return result;
374
+ }
375
+ subscribe(raw) {
376
+ const control = subscription(raw), id = idOf(control);
377
+ if (this.states.has(id) || this.states.size >= 10)
378
+ return Promise.reject(new Error('subscription_limit_or_duplicate'));
379
+ const from = control.resume ? { ...control.resume } : null;
380
+ const saved = { ...control };
381
+ delete saved.resume;
382
+ return this.command(control, 'subscribed', f => {
383
+ this.states.set(id, { control: saved, cursor: from ?? (cursor(f.cursor) ? { ...f.cursor } : null), progress: cursor(f.cursor) ? { ...f.cursor } : null, recovering: !!from, blocked: false, seen: new Set() });
384
+ if (from) {
385
+ const gen = this.generation;
386
+ this.replayTimers.set(id, setTimeout(() => {
387
+ this.status('gap', { sub_id: id, reason: 'replay_timeout' });
388
+ this.disconnect(gen, 1006, 'replay_timeout');
389
+ }, this.limits.timeout));
390
+ }
391
+ });
392
+ }
393
+ unsubscribe(id = 'default') {
394
+ if (!this.states.has(id))
395
+ return Promise.reject(new Error('unknown_sub_id'));
396
+ return this.command({ type: 'unsubscribe', sub_id: id }, 'unsubscribed', () => { this.states.delete(id); });
397
+ }
398
+ }
399
+ //# sourceMappingURL=early-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-stream.js","sourceRoot":"","sources":["../src/early-stream.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { EarlySubscribeControl, EarlyEventFormat, EarlyStreamFilters } from './types.js';
2
+ type Options = {
3
+ sub_id?: string;
4
+ format?: EarlyEventFormat;
5
+ };
6
+ export declare function followTokens(mints: string[], input?: Options): EarlySubscribeControl;
7
+ export declare function walletTrades(wallets: string[], input?: Options & Pick<EarlyStreamFilters, 'directions' | 'protocols' | 'amounts'>): EarlySubscribeControl;
8
+ export {};
9
+ //# sourceMappingURL=early-subscriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-subscriptions.d.ts","sourceRoot":"","sources":["../src/early-subscriptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC9F,KAAK,OAAO,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAW9D,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,OAAY,GAAG,qBAAqB,CAExF;AACD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,YAAY,GAAG,WAAW,GAAG,SAAS,CAAM,GAAG,qBAAqB,CAM7J"}
@@ -0,0 +1,25 @@
1
+ function addresses(values) {
2
+ if (!Array.isArray(values) || !values.length || values.length > 1000 || values.some(v => typeof v !== 'string' || !/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(v)))
3
+ throw new Error('invalid_address_filter');
4
+ return [...new Set(values)];
5
+ }
6
+ function options(input, allowed = ['sub_id', 'format']) {
7
+ if (!input || typeof input !== 'object' || Array.isArray(input) || Object.keys(input).some(k => !allowed.includes(k)))
8
+ throw new Error('unsupported_option');
9
+ if (input.sub_id !== undefined && !/^[A-Za-z0-9_.-]{1,64}$/.test(input.sub_id))
10
+ throw new Error('invalid_sub_id');
11
+ if (!['full', 'compact-v1'].includes(input.format ?? 'full'))
12
+ throw new Error('unsupported_format');
13
+ return { ...(input.sub_id === undefined ? {} : { sub_id: input.sub_id }), format: input.format ?? 'full' };
14
+ }
15
+ export function followTokens(mints, input = {}) {
16
+ return { type: 'subscribe', ...options(input), channels: ['early:deploys', 'early:locks', 'early:trades', 'early:liquidity', 'early:migrations', 'early:token_changes'], filters: { mints: addresses(mints) } };
17
+ }
18
+ export function walletTrades(wallets, input = {}) {
19
+ return { type: 'subscribe', ...options(input, ['sub_id', 'format', 'directions', 'protocols', 'amounts']), channels: ['early:trades'], filters: { wallets: addresses(wallets),
20
+ ...(input.directions === undefined ? {} : { directions: [...input.directions] }),
21
+ ...(input.protocols === undefined ? {} : { protocols: [...input.protocols] }),
22
+ ...(input.amounts === undefined ? {} : { amounts: structuredClone(input.amounts) }),
23
+ } };
24
+ }
25
+ //# sourceMappingURL=early-subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-subscriptions.js","sourceRoot":"","sources":["../src/early-subscriptions.ts"],"names":[],"mappings":"AAEA,SAAS,SAAS,CAAC,MAAgB;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvM,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AACD,SAAS,OAAO,CAAC,KAAc,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC7D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC7J,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClH,IAAI,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACpG,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC;AAC7G,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,KAAe,EAAE,QAAiB,EAAE;IAC/D,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;AAClN,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,OAAiB,EAAE,QAAoF,EAAE;IACpI,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC;YAC3K,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;SACpF,EAAE,CAAC;AACN,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,17 @@
1
+ export { followTokens, walletTrades } from './early-subscriptions.js';
2
+ import { MadeOnSolEarlyStream, type EarlyStreamOptions } from './early-stream.js';
3
+ export { MadeOnSolEarlyStream, expandEarlyFrame, type EarlyStreamOptions, type EarlyCursor, type EarlyFrame } from './early-stream.js';
4
+ export type { EarlyWalletList, EarlyWalletListSummary, EarlyWalletListControl, EarlyWalletListResult, EarlyChannel, EarlyAmountField, EarlyAmountFilter, EarlyStreamFilters, EarlyEventFormat, EarlySubscribeControl, EarlyUpdateControl, EarlyObservationBase, EarlyWalletLabel, EarlyDeployObservationData, EarlyTradeObservationData, EarlyLiquidityCreatePoolObservationData, EarlyLiquidityAddObservationData, EarlyLiquidityRemoveObservationData, EarlyLiquidityObservationData, EarlyMigrationObservationData, EarlyLockSchedule, EarlyLockObservationData, EarlyTokenAmountChangeObservationData, EarlyTokenFreezeObservationData, EarlyTokenAuthorityObservationData, EarlyTokenChangeObservationData, EarlyObservationData, EarlyOutcomeData } from './types.js';
1
5
  import { type SolanaPaymentPolicy } from "./solana-payment.js";
2
6
  import { type PaidResultProvenance, type RecoveryOptions } from "./x402-recovery.js";
3
7
  export { SolanaPaymentBudget, type SolanaPaymentPolicy, type SolanaPaymentProposal } from "./solana-payment.js";
4
8
  export { X402PaymentError, readPaidResult, x402RequestHash, recoveryMessage, paymentIdFromProof, classifyPaidResponse, PAYMENT_RECOVERY_HEADER, type PaidResultProvenance, type RecoveryOptions, } from "./x402-recovery.js";
5
- import type { KolFeedParams, KolFeedResponse, KolCoordinationParams, KolCoordinationResponse, KolLeaderboardParams, KolLeaderboardResponse, KolPairsParams, KolPairsResponse, KolTimingParams, KolTimingResponse, KolHotTokensParams, KolHotTokensResponse, KolEntryOrderParams, KolEntryOrderResponse, KolCompareParams, KolCompareResponse, KolAlertsParams, KolAlertsResponse, DeployerAlertsParams, DeployerAlertsResponse, DeployerTrajectoryResponse, DiscoveryResponse, CreateWebhookParams, UpdateWebhookParams, Webhook, WebhookWithSecret, WebhookDeliverySummary, UpdatedWebhook, WebhookDelivery, WebhookTestResult, WebhookTestOptions, StreamToken, StreamSessionsResponse, StreamSessionEvictResponse, AlphaLeaderboardParams, AlphaLeaderboardResponse, AlphaWalletResponse, AlphaLinkedResponse, TokenCapTableResponse, TokenBuyerQualityResponse, TokenRiskSingleResponse, TokenBatchRiskResponse, TokenBundleResponse, TokenPoolsResponse, TokenDepthParams, TokenDepthResponse, TokenHoldersResponse, TokenLocksParams, TokenLocksResponse, TokenLocksFeedParams, TokenLocksFeedResponse, TokenUnlocksParams, TokenUnlocksResponse, TokenFeeSharesResponse, TokenFeeClaimsParams, TokenFeeClaimsResponse, TokenSurgesParams, TokenSurgesResponse, DeployerHistoryResponse, DeployerAsOfResponse, DeployerRewardsResponse, DeployerActivityResponse, DeployerActivityParams, DeployerStatsResponse, DeployerLeaderboardParams, DeployerLeaderboardResponse, DeployerProfileResponse, DeployerTokensParams, DeployerTokensResponse, DeployerAlertStatsParams, DeployerAlertStatsResponse, BestTokensParams, BestTokensResponse, RecentBondsParams, RecentBondsResponse, CandlesParams, CandlesResponse, TokenFlowParams, TokenFlowResponse, CopyTradeSubscription, CopyTradeCreateParams, CopyTradeCreateResponse, CopyTradeUpdateParams, CopyTradeUpdateResponse, CopyTradeRuleWarning, CopyTradeSignalsParams, CopyTradeSignalsResponse, CoordinationAlertRule, CoordinationAlertCreateParams, CoordinationAlertUpdateParams, CoordinationAlertListResponse, CoordinationAlertCreateResponse, FirstTouchesParams, FirstTouchesResponse, FirstTouchSubscription, FirstTouchSubscriptionCreateParams, FirstTouchSubscriptionUpdateParams, FirstTouchSubscriptionListResponse, FirstTouchSubscriptionCreateResponse, WalletTrackerListResponse, WalletTrackerAddResponse, WalletTrackerUpdateResponse, WalletTrackerTradesParams, WalletTrackerTradesResponse, WalletTrackerSummaryParams, WalletTrackerSummaryResponse, MeResponse, TokensListParams, TokensListResponse, AlmostBondedParams, AlmostBondedResponse, WalletStatsResponse, WalletPnlResponse, WalletPositionsResponse, WalletHoldingsParams, WalletHoldingsResponse, WalletTradesParams, WalletTradesResponse, PriceAlertCreateParams, PriceAlertUpdateParams, PriceAlertListResponse, PriceAlertCreateResponse, PriceAlertGetResponse, PriceAlertUpdateResponse, PriceAlertDeleteResponse, PriceAlertEventsParams, PriceAlertEventsResponse, ScoutLeaderboardParams, KolConsensusResponse, PeakHistoryResponse, CoordinationHistoryParams, TokenSnapshotResponse, SignalPerformanceResponse, SignalsCatalogResponse, WalletBatchClassifyResponse, TokenTradesParams, TokenTradesResponse, TokenTopTradersParams, TokenTopTradersResponse, SniperRecentParams, SniperRecentResponse, SniperByDeployerResponse } from "./types.js";
9
+ import type { KolFeedParams, KolFeedResponse, KolCoordinationParams, KolCoordinationResponse, KolLeaderboardParams, KolLeaderboardResponse, KolPairsParams, KolPairsResponse, KolTimingParams, KolTimingResponse, KolHotTokensParams, KolHotTokensResponse, KolEntryOrderParams, KolEntryOrderResponse, KolCompareParams, KolCompareResponse, KolAlertsParams, KolAlertsResponse, DeployerAlertsParams, DeployerAlertsResponse, DeployerTrajectoryResponse, DiscoveryResponse, CreateWebhookParams, UpdateWebhookParams, Webhook, WebhookWithSecret, WebhookDeliverySummary, UpdatedWebhook, WebhookDelivery, WebhookTestResult, WebhookTestOptions, StreamToken, StreamSessionsResponse, StreamSessionEvictResponse, AlphaLeaderboardParams, AlphaLeaderboardResponse, AlphaWalletResponse, AlphaLinkedResponse, TokenCapTableResponse, TokenBuyerQualityResponse, TokenRiskSingleResponse, TokenBatchRiskResponse, TokenBundleResponse, TokenPoolsResponse, TokenDepthParams, TokenDepthResponse, TokenHoldersResponse, TokenLocksParams, TokenLocksResponse, TokenLocksFeedParams, TokenLocksFeedResponse, TokenIntelligenceParams, TokenIntelligenceResponse, TokenUnlocksParams, TokenUnlocksResponse, TokenFeeSharesResponse, TokenFeeClaimsParams, TokenFeeClaimsResponse, TokenSurgesParams, TokenSurgesResponse, DeployerHistoryResponse, DeployerAsOfResponse, DeployerRewardsResponse, DeployerActivityResponse, DeployerActivityParams, DeployerStatsResponse, DeployerLeaderboardParams, DeployerLeaderboardResponse, DeployerProfileResponse, DeployerTokensParams, DeployerTokensResponse, DeployerAlertStatsParams, DeployerAlertStatsResponse, BestTokensParams, BestTokensResponse, RecentBondsParams, RecentBondsResponse, CandlesParams, CandlesResponse, TokenFlowParams, TokenFlowResponse, CopyTradeSubscription, CopyTradeCreateParams, CopyTradeCreateResponse, CopyTradeUpdateParams, CopyTradeUpdateResponse, CopyTradeRuleWarning, CopyTradeSignalsParams, CopyTradeSignalsResponse, CoordinationAlertRule, CoordinationAlertCreateParams, CoordinationAlertUpdateParams, CoordinationAlertListResponse, CoordinationAlertCreateResponse, FirstTouchesParams, FirstTouchesResponse, FirstTouchSubscription, FirstTouchSubscriptionCreateParams, FirstTouchSubscriptionUpdateParams, FirstTouchSubscriptionListResponse, FirstTouchSubscriptionCreateResponse, WalletTrackerListResponse, WalletTrackerAddResponse, WalletTrackerUpdateResponse, WalletTrackerTradesParams, WalletTrackerTradesResponse, WalletTrackerSummaryParams, WalletTrackerSummaryResponse, MeResponse, TokensListParams, TokensListResponse, AlmostBondedParams, AlmostBondedResponse, WalletStatsResponse, WalletPnlResponse, WalletPositionsResponse, WalletHoldingsParams, WalletHoldingsResponse, WalletTradesParams, WalletTradesResponse, PriceAlertCreateParams, PriceAlertUpdateParams, PriceAlertListResponse, PriceAlertCreateResponse, PriceAlertGetResponse, PriceAlertUpdateResponse, PriceAlertDeleteResponse, PriceAlertEventsParams, PriceAlertEventsResponse, ScoutLeaderboardParams, KolConsensusResponse, PeakHistoryResponse, CoordinationHistoryParams, TokenSnapshotResponse, SignalPerformanceResponse, SignalsCatalogResponse, WalletBatchClassifyResponse, TokenTradesParams, TokenTradesResponse, TokenTopTradersParams, TokenTopTradersResponse, SniperRecentParams, SniperRecentResponse, SniperByDeployerResponse } from "./types.js";
6
10
  import { MadeOnSolStream } from "./stream.js";
7
11
  import type { StreamClientOptions } from "./stream.js";
8
12
  export { MadeOnSolStream, STREAM_CHANNELS } from "./stream.js";
9
13
  export type { StreamClientOptions, StreamChannel, StreamEventName, StreamEvent, StreamLifecycleEvent, StreamWarning, StreamCursor, StreamReplayResult, StreamGap, StreamFatal, StreamSubscription, StreamSubscribeOptions, } from "./stream.js";
10
- export type { KolTrade, KolStrategy, KolFeedParams, KolFeedResponse, KolCoordinationToken, KolCoordinationParams, KolCoordinationResponse, KolLeaderboardEntry, KolLeaderboardSort, KolLeaderboardParams, KolLeaderboardResponse, KolPair, KolPairsParams, KolPairsResponse, KolTimingData, KolTimingParams, KolTimingResponse, HotToken, KolHotTokensParams, KolHotTokensResponse, KolEntryOrderEntry, KolEntryOrderParams, KolEntryOrderResponse, KolCompareProfile, KolCompareOverlapToken, KolCompareParams, KolCompareResponse, KolAlert, KolAlertType, KolAlertWindow, KolAlertSeverity, KolAlertsParams, KolAlertsResponse, TrajectoryData, DeployerTrajectoryResponse, DeployerAlert, DeployerAlertsParams, DeployerAlertsResponse, DiscoveryEndpoint, DiscoveryResponse, WebhookEvent, WebhookFilters, Webhook, WebhookWithSecret, WebhookCondition, WebhookDeliverySummary, UpdatedWebhook, CreateWebhookParams, UpdateWebhookParams, WebhookDelivery, WebhookTestResult, WebhookTestOptions, StreamToken, StreamSession, StreamSessionsResponse, StreamSessionEvictResponse, AlphaPeriod, AlphaSort, AlphaLeaderboardParams, AlphaLeaderboardEntry, AlphaLeaderboardResponse, AlphaWalletSummary, AlphaWalletToken, AlphaWalletResponse, AlphaLinkedWallet, AlphaLinkedResponse, BuyerQualityConfidence, BuyerQualitySignal, CapTableBuyer, CapTableSummary, TradeCoverage, TokenCapTableResponse, TokenBuyerQualityResponse, TokenRiskBand, TokenRiskStatus, TokenRiskFactor, TokenRiskInputs, TokenRiskDev, TokenRiskResponse, TokenBatchRiskError, TokenBatchRiskResult, TokenBatchRiskResponse, TokenRiskUnavailableResponse, TokenRiskAssessment, LpBurnStatus, DeployerHistoryStatus, TradeEligibility, LeaderboardUniverse, TokenSnapshotDeployer, TokenSnapshotKolActivity, KolEntryOrderUnavailableResponse, BundleKind, BundleSummary, BundleWallet, TokenBundleResponse, TokenPool, TokenPoolsSummary, TokenPoolsResponse, TokenDepthParams, TokenDepthQuote, TokenDepthToMovePrice, TokenDepthPoolBase, TokenDepthPool, TokenDepthUnsupportedPool, TokenDepthResponse, TokenHolderLabel, TokenHolder, TokenHolderExcluded, TokenHoldersConcentration, TokenHoldersResponse, TokenLockProgram, TokenLockKind, TokenLockStatus, TokenUnlockEventKind, TokenLockToken, TokenLockNextUnlock, TokenLockProvider, TokenLockExplorer, TokenLockTranche, TokenLock, TokenLockFeedEntry, TokenLocksSummary, TokenLocksParams, TokenLocksResponse, TokenLocksFeedParams, TokenFeedPagination, TokenLocksFeedPagination, TokenFeedStreamPointer, TokenLocksFeedResponse, TokenUnlocksWithin, TokenUnlocksParams, TokenUnlockEvent, TokenUnlocksResponse, TokenLockStreamEvent, TokenLockLifecycleEventName, TokenUnlockKind, TokenLockLifecycleFilters, TokenLockLifecycleBase, TokenLockClaimedEvent, TokenLockCancelledEvent, TokenLockClosedEvent, TokenLockUpdatedEvent, TokenUnlockScheduleEvent, TokenLockLifecycleEvent, TokenCandlesFilters, TokenCandleClosedEvent, TokenCandleUpdateEvent, TokenRiskEventName, TokenRiskFilters, TokenRiskAuthorityChangedEvent, TokenRiskSupplyInflatedEvent, TokenRiskInputsSnapshot, TokenRiskEvent, WalletScoreEventName, WalletScoresFilters, WalletScoreSource, DeployerTierChangeValue, DeployerTierChangedEvent, KolScoreState, KolScoreStateChangedEvent, WalletScoreEvent, TokenFeeEventType, TokenFeeShareEntry, TokenFeeSocialIdentity, TokenFeeShareholder, TokenFeeSharingConfig, TokenFeeShareHistoryEntry, TokenFeeDistribution, TokenFeeSharesResponse, TokenFeeClaimsParams, TokenFeePayout, TokenFeeClaimEvent, TokenFeeClaimsResponse, TokenFeeClaimStreamEvent, TokenSurgeKind, TokenSurgeTier, TokenSurgeBirthSource, TokenSurgeBaselineSource, TokenSurgeTapeSource, TokenSurgeRiskFlag, TokenSurgeDeployerTier, TokenSurgeTape, TokenSurgeKol, TokenSurgeEarlyBuyers, TokenSurgeDeployer, TokenSurgeEvent, TokenSurgeOutcome, TokenSurgeFeedEntry, TokenSurgesParams, TokenSurgeStatsRow, TokenSurgeStats, TokenSurgesResponse, TokenSurgeStreamEvent, DeployerHistorySnapshot, DeployerHistoryResponse, DeployerAsOfSnapshot, DeployerAsOfResponse, DeployerRewardsResponse, DeployerActivityResponse, DeployerActivityParams, DeployerActivityEvent, DeployerActivityEventType, DeployerActivityFamilyCoverage, DeployerActivityHistoryPlan, DeployerActivityRange, DeployerStatsResponse, DeployerLeaderboardParams, DeployerLeaderboardResponse, DeployerProfileResponse, DeployerProfile, DeployerTokensParams, DeployerTokensResponse, DeployerAlertStatsParams, DeployerAlertStatsResponse, BestTokensParams, BestTokensResponse, RecentBondsParams, RecentBondsResponse, RecentBondDeployer, TokenRiskSingleResponse, TradeHistoryMeta, DeployerTrajectorySnapshot, McDeltaFields, CandleTimeframe, CandlesParams, Candle, CandlesResponse, TokenFlowWindow, TokenFlowParams, TokenFlowResponse, CopyTradeAction, CopyTradeSizingMode, CopyTradeDeliveryMode, CopyTradeSubscription, CopyTradeCreateParams, CopyTradeUpdateParams, CopyTradeCreateResponse, CopyTradeUpdateResponse, CopyTradeRuleWarning, CopyTradeSignal, CopyTradeSignalsParams, CopyTradeSignalsResponse, CoordinationDeliveryMode, CoordinationAlertRule, CoordinationAlertCreateParams, CoordinationAlertUpdateParams, CoordinationAlertListResponse, CoordinationAlertCreateResponse, ScoutTier, FirstTouchesParams, FirstTouchEvent, FirstTouchesResponse, FirstTouchSubscriptionFilters, FirstTouchSubscription, FirstTouchSubscriptionCreateParams, FirstTouchSubscriptionUpdateParams, FirstTouchSubscriptionListResponse, FirstTouchSubscriptionCreateResponse, KolCoordinationKol, WalletTrackerEntry, WalletTrackerListResponse, WalletTrackerAddResponse, WalletTrackerUpdateResponse, WalletTrackerAction, WalletTrackerEventType, WalletTrackerTradesParams, WalletTrackerTrade, WalletTrackerTradesResponse, WalletTrackerSummaryParams, WalletTrackerSummaryStats, WalletTrackerSummaryResponse, WalletStats, WalletFlags, WalletStatsResponse, WalletTopToken, WalletTradingStyle, WalletDeployerTierEntry, WalletDeployerBreakdown, WalletRecentTrade, WalletPnlSummary, WalletPnlCurvePoint, WalletClosedPosition, WalletOpenPosition, WalletPnlResponse, WalletPositionsResponse, WalletHoldingsParams, WalletHoldingsResponse, Holding, WalletTradesParams, WalletTrade, WalletTradesResponse, WalletStandoutTrade, WalletBiggestMiss, WalletVerdictTone, WalletVerdict, WalletDerivedStats, PriceAlertDeliveryMode, PriceAlertStatus, PriceAlert, PriceAlertCreateParams, PriceAlertUpdateParams, PriceAlertListResponse, PriceAlertCreateResponse, PriceAlertGetResponse, PriceAlertUpdateResponse, PriceAlertDeleteResponse, PriceAlertEvent, PriceAlertEventsParams, PriceAlertEventsResponse, ScoutLeaderboardSort, ScoutLeaderboardParams, KolConsensusResponse, KolConsensus, PeakHistoryResponse, PeakHistory, CoordinationHistoryParams, TokenSnapshotTopBuyer, TokenSnapshot, TokenSnapshotResponse, SignalName, SignalPerformanceBucket, SignalPerformanceHistoryPoint, SignalPerformanceResponse, SignalsCatalogEntry, SignalsCatalogResponse, AlmostBondedSort, AlmostBondedParams, AlmostBondedToken, AlmostBondedResponse, SniperFootprint, DumpClusterStats, WalletClassification, WalletBatchClassifyResponse, TokenTradesParams, TokenTrade, TokenTradesResponse, TokenTopTradersParams, TokenTopTrader, TokenTopTradersResponse, SniperRecentParams, SniperDeploy, SniperRecentResponse, SniperByDeployerResponse, } from "./types.js";
14
+ export type { KolTrade, KolStrategy, KolFeedParams, KolFeedResponse, KolCoordinationToken, KolCoordinationParams, KolCoordinationResponse, KolLeaderboardEntry, KolLeaderboardSort, KolLeaderboardParams, KolLeaderboardResponse, KolPair, KolPairsParams, KolPairsResponse, KolTimingData, KolTimingParams, KolTimingResponse, HotToken, KolHotTokensParams, KolHotTokensResponse, KolEntryOrderEntry, KolEntryOrderParams, KolEntryOrderResponse, KolCompareProfile, KolCompareOverlapToken, KolCompareParams, KolCompareResponse, KolAlert, KolAlertType, KolAlertWindow, KolAlertSeverity, KolAlertsParams, KolAlertsResponse, TrajectoryData, DeployerTrajectoryResponse, DeployerAlert, DeployerAlertsParams, DeployerAlertsResponse, DiscoveryEndpoint, DiscoveryResponse, WebhookEvent, WebhookFilters, Webhook, WebhookWithSecret, WebhookCondition, WebhookDeliverySummary, UpdatedWebhook, CreateWebhookParams, UpdateWebhookParams, WebhookDelivery, WebhookTestResult, WebhookTestOptions, StreamToken, StreamSession, StreamSessionsResponse, StreamSessionEvictResponse, AlphaPeriod, AlphaSort, AlphaLeaderboardParams, AlphaLeaderboardEntry, AlphaLeaderboardResponse, AlphaWalletSummary, AlphaWalletToken, AlphaWalletResponse, AlphaLinkedWallet, AlphaLinkedResponse, BuyerQualityConfidence, BuyerQualitySignal, CapTableBuyer, CapTableSummary, TradeCoverage, TokenCapTableResponse, TokenBuyerQualityResponse, TokenRiskBand, TokenRiskStatus, TokenRiskFactor, TokenRiskInputs, TokenRiskDev, TokenRiskResponse, TokenBatchRiskError, TokenBatchRiskResult, TokenBatchRiskResponse, TokenRiskUnavailableResponse, TokenRiskAssessment, LpBurnStatus, DeployerHistoryStatus, TradeEligibility, LeaderboardUniverse, TokenSnapshotDeployer, TokenSnapshotKolActivity, KolEntryOrderUnavailableResponse, BundleKind, BundleSummary, BundleWallet, TokenBundleResponse, TokenPool, TokenPoolsSummary, TokenPoolsResponse, TokenDepthParams, TokenDepthQuote, TokenDepthToMovePrice, TokenDepthPoolBase, TokenDepthPool, TokenDepthUnsupportedPool, TokenDepthResponse, TokenHolderLabel, TokenHolder, TokenHolderExcluded, TokenHoldersConcentration, TokenHoldersResponse, TokenLockProgram, TokenLockKind, TokenLockStatus, TokenUnlockEventKind, TokenLockToken, TokenLockNextUnlock, TokenLockProvider, TokenLockExplorer, TokenLockTranche, TokenLock, TokenLockFeedEntry, TokenLocksSummary, TokenLocksParams, TokenLocksResponse, TokenLocksFeedParams, TokenIntelligenceModuleId, TokenIntelligenceModuleStatus, TokenIntelligenceParams, TokenIntelligenceHistoricalCompleteness, TokenIntelligenceModule, TokenIntelligenceBudget, TokenIntelligenceResponse, TokenFeedPagination, TokenLocksFeedPagination, TokenFeedStreamPointer, TokenLocksFeedResponse, TokenUnlocksWithin, TokenUnlocksParams, TokenUnlockEvent, TokenUnlocksResponse, TokenLockStreamEvent, TokenLockLifecycleEventName, TokenUnlockKind, TokenLockLifecycleFilters, TokenLockLifecycleBase, TokenLockClaimedEvent, TokenLockCancelledEvent, TokenLockClosedEvent, TokenLockUpdatedEvent, TokenUnlockScheduleEvent, TokenLockLifecycleEvent, TokenCandlesFilters, TokenCandleClosedEvent, TokenCandleUpdateEvent, TokenRiskEventName, TokenRiskFilters, TokenRiskAuthorityChangedEvent, TokenRiskSupplyInflatedEvent, TokenRiskInputsSnapshot, TokenRiskEvent, WalletScoreEventName, WalletScoresFilters, WalletScoreSource, DeployerTierChangeValue, DeployerTierChangedEvent, KolScoreState, KolScoreStateChangedEvent, WalletScoreEvent, TokenFeeEventType, TokenFeeShareEntry, TokenFeeSocialIdentity, TokenFeeShareholder, TokenFeeSharingConfig, TokenFeeShareHistoryEntry, TokenFeeDistribution, TokenFeeSharesResponse, TokenFeeClaimsParams, TokenFeePayout, TokenFeeClaimEvent, TokenFeeClaimsResponse, TokenFeeClaimStreamEvent, TokenSurgeKind, TokenSurgeTier, TokenSurgeBirthSource, TokenSurgeBaselineSource, TokenSurgeTapeSource, TokenSurgeRiskFlag, TokenSurgeDeployerTier, TokenSurgeTape, TokenSurgeKol, TokenSurgeEarlyBuyers, TokenSurgeDeployer, TokenSurgeEvent, TokenSurgeOutcome, TokenSurgeFeedEntry, TokenSurgesParams, TokenSurgeStatsRow, TokenSurgeStats, TokenSurgesResponse, TokenSurgeStreamEvent, DeployerHistorySnapshot, DeployerHistoryResponse, DeployerAsOfSnapshot, DeployerAsOfResponse, DeployerRewardsResponse, DeployerActivityResponse, DeployerActivityParams, DeployerActivityEvent, DeployerActivityEventType, DeployerActivityFamilyCoverage, DeployerActivityHistoryPlan, DeployerActivityRange, DeployerStatsResponse, DeployerLeaderboardParams, DeployerLeaderboardResponse, DeployerProfileResponse, DeployerProfile, DeployerTokensParams, DeployerTokensResponse, DeployerAlertStatsParams, DeployerAlertStatsResponse, BestTokensParams, BestTokensResponse, RecentBondsParams, RecentBondsResponse, RecentBondDeployer, TokenRiskSingleResponse, TradeHistoryMeta, DeployerTrajectorySnapshot, McDeltaFields, CandleTimeframe, CandlesParams, Candle, CandlesResponse, TokenFlowWindow, TokenFlowParams, TokenFlowResponse, CopyTradeAction, CopyTradeSizingMode, CopyTradeDeliveryMode, CopyTradeSubscription, CopyTradeCreateParams, CopyTradeUpdateParams, CopyTradeCreateResponse, CopyTradeUpdateResponse, CopyTradeRuleWarning, CopyTradeSignal, CopyTradeSignalsParams, CopyTradeSignalsResponse, CoordinationDeliveryMode, CoordinationAlertRule, CoordinationAlertCreateParams, CoordinationAlertUpdateParams, CoordinationAlertListResponse, CoordinationAlertCreateResponse, ScoutTier, FirstTouchesParams, FirstTouchEvent, FirstTouchesResponse, FirstTouchSubscriptionFilters, FirstTouchSubscription, FirstTouchSubscriptionCreateParams, FirstTouchSubscriptionUpdateParams, FirstTouchSubscriptionListResponse, FirstTouchSubscriptionCreateResponse, KolCoordinationKol, WalletTrackerEntry, WalletTrackerListResponse, WalletTrackerAddResponse, WalletTrackerUpdateResponse, WalletTrackerAction, WalletTrackerEventType, WalletTrackerTradesParams, WalletTrackerTrade, WalletTrackerTradesResponse, WalletTrackerSummaryParams, WalletTrackerSummaryStats, WalletTrackerSummaryResponse, WalletStats, WalletFlags, WalletStatsResponse, WalletTopToken, WalletTradingStyle, WalletDeployerTierEntry, WalletDeployerBreakdown, WalletRecentTrade, WalletPnlSummary, WalletPnlCurvePoint, WalletClosedPosition, WalletOpenPosition, WalletPnlResponse, WalletPositionsResponse, WalletHoldingsParams, WalletHoldingsResponse, Holding, WalletTradesParams, WalletTrade, WalletTradesResponse, WalletStandoutTrade, WalletBiggestMiss, WalletVerdictTone, WalletVerdict, WalletDerivedStats, PriceAlertDeliveryMode, PriceAlertStatus, PriceAlert, PriceAlertCreateParams, PriceAlertUpdateParams, PriceAlertListResponse, PriceAlertCreateResponse, PriceAlertGetResponse, PriceAlertUpdateResponse, PriceAlertDeleteResponse, PriceAlertEvent, PriceAlertEventsParams, PriceAlertEventsResponse, ScoutLeaderboardSort, ScoutLeaderboardParams, KolConsensusResponse, KolConsensus, PeakHistoryResponse, PeakHistory, CoordinationHistoryParams, TokenSnapshotTopBuyer, TokenSnapshot, TokenSnapshotResponse, SignalName, SignalPerformanceBucket, SignalPerformanceHistoryPoint, SignalPerformanceResponse, SignalsCatalogEntry, SignalsCatalogResponse, AlmostBondedSort, AlmostBondedParams, AlmostBondedToken, AlmostBondedResponse, SniperFootprint, DumpClusterStats, WalletClassification, WalletBatchClassifyResponse, TokenTradesParams, TokenTrade, TokenTradesResponse, TokenTopTradersParams, TokenTopTrader, TokenTopTradersResponse, SniperRecentParams, SniperDeploy, SniperRecentResponse, SniperByDeployerResponse, } from "./types.js";
11
15
  export interface MadeOnSolClientOptions {
12
16
  /** MadeOnSol API key — get one free at https://madeonsol.com/pricing. */
13
17
  apiKey?: string;
@@ -434,6 +438,8 @@ export declare class MadeOnSolREST {
434
438
  getStreamToken(opts?: {
435
439
  rotate?: boolean;
436
440
  }): Promise<StreamToken>;
441
+ /** ULTRA+ ShredPrism early-stream client; `early_ws_url` must be present in token discovery. */
442
+ earlyStream(opts: Omit<EarlyStreamOptions, 'getToken'>): MadeOnSolEarlyStream;
437
443
  /**
438
444
  * Open a managed real-time WebSocket stream. Handles the token fetch (the
439
445
  * token does not expire; `getStreamToken()` is called on every (re)connect),
@@ -598,6 +604,19 @@ export declare class MadeOnSolREST {
598
604
  * BASIC receives HTTP 403.
599
605
  */
600
606
  tokenLocks(mint: string, params?: TokenLocksParams): Promise<TokenLocksResponse>;
607
+ /**
608
+ * **Staged, not released**: answers HTTP 404 `token_intelligence_not_released`
609
+ * until the API activates it. Include-scoped token intelligence for terminal
610
+ * panels, `GET /tokens/{mint}/intelligence?include=...`. Name every module you
611
+ * render (no default; at most 5 modules and total cost 8; `holders` is opt-in
612
+ * only). Each module carries its own `status` (ready / partial_history /
613
+ * unverified / unavailable / timeout), the source's `as_of`, `provenance` and
614
+ * history coverage; one failing module never fails or zeroes another, and a
615
+ * non-ready module carries no `data`.
616
+ * **KEYED (v1) — requires an `msk_` API key; there is no x402 route.** PRO+ —
617
+ * BASIC receives HTTP 403.
618
+ */
619
+ tokenIntelligence(mint: string, params: TokenIntelligenceParams): Promise<TokenIntelligenceResponse>;
601
620
  /**
602
621
  * v1.27 — Cross-token feed of NEW lock / vesting contracts, newest first —
603
622
  * who just locked tokens, of what mint, how much, until when — from Streamflow,