robinhood-chain-sdk 0.1.2 → 0.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.
- package/README.md +181 -16
- package/dist/index.d.ts +609 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +165 -8
- package/dist/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/llms.txt +21 -8
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -176,6 +176,126 @@ export interface RhcKolProfileResponse {
|
|
|
176
176
|
trades: RhcKolProfileTrade[];
|
|
177
177
|
_rid?: string;
|
|
178
178
|
}
|
|
179
|
+
export type RhcCoordinationPeriod = "1h" | "6h" | "24h" | "7d";
|
|
180
|
+
/** Cohort direction over the window — net_eth ≥ 0 accumulating, else distributing. */
|
|
181
|
+
export type RhcCoordinationSignal = "accumulating" | "distributing";
|
|
182
|
+
export interface RhcKolCoordinationParams {
|
|
183
|
+
/** Rolling window. Default: "24h". */
|
|
184
|
+
period?: RhcCoordinationPeriod;
|
|
185
|
+
/** Minimum distinct KOL buyers for a token to qualify (2–50). Default: 2. */
|
|
186
|
+
min_kols?: number;
|
|
187
|
+
/** Max tokens (1–50). Default: 20. */
|
|
188
|
+
limit?: number;
|
|
189
|
+
/** Minimum market cap at the FIRST KOL buy (USD). Tokens with an unknown entry MC are dropped when a band is set. */
|
|
190
|
+
min_mc_usd?: number;
|
|
191
|
+
/** Maximum market cap at the first KOL buy (USD). */
|
|
192
|
+
max_mc_usd?: number;
|
|
193
|
+
}
|
|
194
|
+
/** One KOL's leg of a coordinated cohort. */
|
|
195
|
+
export interface RhcCoordinationKol {
|
|
196
|
+
evm_address: string;
|
|
197
|
+
name: string | null;
|
|
198
|
+
twitter_url: string | null;
|
|
199
|
+
buy_eth: number;
|
|
200
|
+
sell_eth: number;
|
|
201
|
+
/** Sold more ETH than they bought inside the window. */
|
|
202
|
+
exited: boolean;
|
|
203
|
+
}
|
|
204
|
+
/** One coordinated token — bought by `kol_count` distinct KOLs inside the window. */
|
|
205
|
+
export interface RhcCoordinationToken {
|
|
206
|
+
token_address: string;
|
|
207
|
+
token_symbol: string | null;
|
|
208
|
+
token_name: string | null;
|
|
209
|
+
launchpad: string | null;
|
|
210
|
+
is_graduated: boolean | null;
|
|
211
|
+
deployer_tier: DeployerTier | null;
|
|
212
|
+
token_age_minutes: number | null;
|
|
213
|
+
/** Distinct KOL buyers in the window (≥ min_kols). */
|
|
214
|
+
kol_count: number;
|
|
215
|
+
total_buys: number;
|
|
216
|
+
buy_eth: number;
|
|
217
|
+
sell_eth: number;
|
|
218
|
+
/** buy_eth − sell_eth over the window. */
|
|
219
|
+
net_eth: number;
|
|
220
|
+
signal: RhcCoordinationSignal;
|
|
221
|
+
/** KOLs that sold more than they bought. */
|
|
222
|
+
exited_count: number;
|
|
223
|
+
/** kol_count − exited_count. */
|
|
224
|
+
holders_count: number;
|
|
225
|
+
first_buy_at: string;
|
|
226
|
+
last_buy_at: string;
|
|
227
|
+
/** How fast the cohort piled in — last_buy_at − first_buy_at, seconds. */
|
|
228
|
+
time_to_consensus_sec: number;
|
|
229
|
+
market_cap_usd_at_first_buy: number | null;
|
|
230
|
+
current_mc_usd: number | null;
|
|
231
|
+
peak_mc_usd: number | null;
|
|
232
|
+
liquidity_usd: number | null;
|
|
233
|
+
/** Per-KOL breakdown, largest buyer first. */
|
|
234
|
+
kols: RhcCoordinationKol[];
|
|
235
|
+
}
|
|
236
|
+
export interface RhcKolCoordinationResponse {
|
|
237
|
+
chain: Chain;
|
|
238
|
+
coordination: RhcCoordinationToken[];
|
|
239
|
+
count: number;
|
|
240
|
+
period: RhcCoordinationPeriod;
|
|
241
|
+
min_kols: number;
|
|
242
|
+
_rid?: string;
|
|
243
|
+
}
|
|
244
|
+
export interface RhcFirstTouchesParams {
|
|
245
|
+
/** Max events (1–100). Default: 50 — clamped to 20 below PRO. */
|
|
246
|
+
limit?: number;
|
|
247
|
+
/** Only first-touches strictly newer than this ISO 8601 timestamp (poll forward). */
|
|
248
|
+
since?: string;
|
|
249
|
+
/** Cursor — only first-touches strictly older than this ISO 8601 timestamp. Pass `next_before`. */
|
|
250
|
+
before?: string;
|
|
251
|
+
/** Minimum first-buy size in ETH (0–100000). */
|
|
252
|
+
min_eth?: number;
|
|
253
|
+
/** Only tokens younger than N minutes at first touch (1–43200) — isolates genuinely early calls. */
|
|
254
|
+
token_age_max_min?: number;
|
|
255
|
+
/** Filter by launchpad: pons, flap, clanker, hood.fun, noxa, virtuals. */
|
|
256
|
+
launchpad?: string;
|
|
257
|
+
/** Minimum market cap at first buy (USD). */
|
|
258
|
+
min_mc_usd?: number;
|
|
259
|
+
/** Maximum market cap at first buy (USD). */
|
|
260
|
+
max_mc_usd?: number;
|
|
261
|
+
}
|
|
262
|
+
/** The KOL behind a first touch. `evm_address` is ULTRA/BUSINESS only. */
|
|
263
|
+
export interface RhcFirstTouchKol {
|
|
264
|
+
/** ULTRA/BUSINESS only — `name` and `twitter_url` are always returned. */
|
|
265
|
+
evm_address?: string;
|
|
266
|
+
name: string | null;
|
|
267
|
+
twitter_url: string | null;
|
|
268
|
+
}
|
|
269
|
+
/** The globally earliest KOL buy on a token — the discovery signal. */
|
|
270
|
+
export interface RhcFirstTouch {
|
|
271
|
+
token_address: string;
|
|
272
|
+
token_symbol: string | null;
|
|
273
|
+
token_name: string | null;
|
|
274
|
+
launchpad: string | null;
|
|
275
|
+
is_graduated: boolean | null;
|
|
276
|
+
first_buy_at: string;
|
|
277
|
+
/** Entry size in ETH. */
|
|
278
|
+
eth_amount: number | null;
|
|
279
|
+
token_amount: number | null;
|
|
280
|
+
tx_hash: string;
|
|
281
|
+
/** Token age at the first touch, minutes. */
|
|
282
|
+
token_age_minutes: number | null;
|
|
283
|
+
market_cap_usd_at_first_buy: number | null;
|
|
284
|
+
price_usd_at_first_buy: number | null;
|
|
285
|
+
current_mc_usd: number | null;
|
|
286
|
+
peak_mc_usd: number | null;
|
|
287
|
+
first_kol: RhcFirstTouchKol;
|
|
288
|
+
}
|
|
289
|
+
export interface RhcKolFirstTouchesResponse {
|
|
290
|
+
chain: Chain;
|
|
291
|
+
events: RhcFirstTouch[];
|
|
292
|
+
count: number;
|
|
293
|
+
/** Cursor for the next page — pass as `before` to fetch older first-touches. */
|
|
294
|
+
next_before: string | null;
|
|
295
|
+
/** Age of the newest event, seconds. */
|
|
296
|
+
data_age_seconds: number | null;
|
|
297
|
+
_rid?: string;
|
|
298
|
+
}
|
|
179
299
|
export interface RhcTradesParams {
|
|
180
300
|
/** Number of trades to return (1–100). Default: 50. */
|
|
181
301
|
limit?: number;
|
|
@@ -431,6 +551,68 @@ export interface RhcBuyerQualityResponse {
|
|
|
431
551
|
note?: string;
|
|
432
552
|
_rid?: string;
|
|
433
553
|
}
|
|
554
|
+
/** Deployer reputation attached to a batch entry. The rate fields are absent when the deployer has no reputation row yet. */
|
|
555
|
+
export interface RhcBatchTokenDeployer {
|
|
556
|
+
address: string;
|
|
557
|
+
/** How the deployer was attributed (e.g. the launchpad's factory event). */
|
|
558
|
+
source: string | null;
|
|
559
|
+
tier?: DeployerTier;
|
|
560
|
+
tokens_deployed?: number;
|
|
561
|
+
graduated?: number;
|
|
562
|
+
graduation_rate?: number;
|
|
563
|
+
runners?: number;
|
|
564
|
+
runner_rate?: number;
|
|
565
|
+
}
|
|
566
|
+
/** One entry of a `POST /rhc/token/batch` response. Unknown addresses come back as `found: false`. */
|
|
567
|
+
export type RhcBatchToken = {
|
|
568
|
+
address: string;
|
|
569
|
+
found: false;
|
|
570
|
+
} | {
|
|
571
|
+
address: string;
|
|
572
|
+
found: true;
|
|
573
|
+
symbol: string | null;
|
|
574
|
+
name: string | null;
|
|
575
|
+
decimals: number | null;
|
|
576
|
+
launchpad: string | null;
|
|
577
|
+
is_graduated: boolean | null;
|
|
578
|
+
graduated_at: string | null;
|
|
579
|
+
first_seen_at: string | null;
|
|
580
|
+
price_usd: number | null;
|
|
581
|
+
market_cap_usd: number | null;
|
|
582
|
+
fdv_usd: number | null;
|
|
583
|
+
liquidity_usd: number | null;
|
|
584
|
+
peak_mc_usd: number | null;
|
|
585
|
+
peak_mc_at: string | null;
|
|
586
|
+
primary_dex: string | null;
|
|
587
|
+
last_trade_time: string | null;
|
|
588
|
+
deployer: RhcBatchTokenDeployer | null;
|
|
589
|
+
};
|
|
590
|
+
export interface RhcTokenBatchResponse {
|
|
591
|
+
chain: Chain;
|
|
592
|
+
/** One entry per REQUESTED address, in order, after de-duplication. */
|
|
593
|
+
tokens: RhcBatchToken[];
|
|
594
|
+
/** Address count AFTER de-duplication. */
|
|
595
|
+
requested: number;
|
|
596
|
+
found: number;
|
|
597
|
+
_rid?: string;
|
|
598
|
+
}
|
|
599
|
+
/** One entry of a batch buyer-quality response — a score, or a per-token error. */
|
|
600
|
+
export type RhcBatchBuyerQuality = RhcBuyerQualityResponse | {
|
|
601
|
+
chain: Chain;
|
|
602
|
+
token_address: string;
|
|
603
|
+
error: string;
|
|
604
|
+
};
|
|
605
|
+
export interface RhcBatchBuyerQualityResponse {
|
|
606
|
+
chain: Chain;
|
|
607
|
+
tokens: RhcBatchBuyerQuality[];
|
|
608
|
+
requested: number;
|
|
609
|
+
/** Entries that scored (the rest carry `error`). */
|
|
610
|
+
scored: number;
|
|
611
|
+
/** Hard cap of 20 — lower than the Solana batch cap of 50, echoed so a rejected batch shows why. */
|
|
612
|
+
max_addresses: number;
|
|
613
|
+
coverage?: RhcBuyerQualityCoverage;
|
|
614
|
+
_rid?: string;
|
|
615
|
+
}
|
|
434
616
|
/** Robinhood Chain is an Arbitrum Orbit L2 with no atomic multi-signer tx — so no `atomic_tx` kind. */
|
|
435
617
|
export type RhcBundleKind = "same_block" | "none";
|
|
436
618
|
export interface RhcBundleSummary {
|
|
@@ -502,6 +684,7 @@ export interface RhcDeployerLeaderboardRow {
|
|
|
502
684
|
launchpads: string[];
|
|
503
685
|
first_deploy_at: string | null;
|
|
504
686
|
last_deploy_at: string | null;
|
|
687
|
+
/** Scored on `runner_rate` + 24h of deployer history — NOT on `graduation_rate` (only `spammer` still keys off that). */
|
|
505
688
|
tier: DeployerTier;
|
|
506
689
|
}
|
|
507
690
|
export interface RhcDeployerLeaderboardResponse {
|
|
@@ -555,6 +738,288 @@ export interface RhcDeployerProfileResponse {
|
|
|
555
738
|
recent_tokens_count: number;
|
|
556
739
|
_rid?: string;
|
|
557
740
|
}
|
|
741
|
+
/**
|
|
742
|
+
* Compact reputation row echoed by the trajectory / tokens routes.
|
|
743
|
+
*
|
|
744
|
+
* `tier` rides `runner_rate` (the $100K bar) and requires 24h of deployer history
|
|
745
|
+
* (migrations 267 + 269). `graduation_rate` still means the $40K bar and is still
|
|
746
|
+
* returned, but it no longer sets the tier — only `spammer` still keys off it.
|
|
747
|
+
*/
|
|
748
|
+
export interface RhcDeployerSummary {
|
|
749
|
+
deployer_address: string;
|
|
750
|
+
tokens_deployed: number;
|
|
751
|
+
/** Tokens that reached a $40K+ peak MC. */
|
|
752
|
+
graduated: number;
|
|
753
|
+
graduation_rate: number;
|
|
754
|
+
/** Tokens that peaked ≥ $100K MC — the metric the tier is scored on. */
|
|
755
|
+
runners: number;
|
|
756
|
+
runner_rate: number;
|
|
757
|
+
tier: DeployerTier;
|
|
758
|
+
}
|
|
759
|
+
/** Trailing run in the deployer's chronological launch history. */
|
|
760
|
+
export interface RhcDeployerStreak {
|
|
761
|
+
type: "bond" | "fail" | "none";
|
|
762
|
+
count: number;
|
|
763
|
+
}
|
|
764
|
+
/** A 10-launch window of the rolling success curve. */
|
|
765
|
+
export interface RhcDeployerRollingRate {
|
|
766
|
+
/** 1-based index of the last launch in the window. */
|
|
767
|
+
window_end: number;
|
|
768
|
+
/** Share of the window that graduated, 0–1. */
|
|
769
|
+
bond_rate: number;
|
|
770
|
+
}
|
|
771
|
+
export interface RhcDeployerStretch {
|
|
772
|
+
start_index: number;
|
|
773
|
+
end_index: number;
|
|
774
|
+
bond_rate: number;
|
|
775
|
+
}
|
|
776
|
+
export interface RhcDeployerTrajectory {
|
|
777
|
+
current_streak: RhcDeployerStreak;
|
|
778
|
+
longest_bond_streak: number;
|
|
779
|
+
longest_fail_streak: number;
|
|
780
|
+
/** Rolling 10-launch success rates, oldest window first. Empty below 10 launches. */
|
|
781
|
+
rolling_bond_rates: RhcDeployerRollingRate[];
|
|
782
|
+
/** Most recent rolling window vs the lifetime rate (±0.05 band). */
|
|
783
|
+
trend: "improving" | "declining" | "stable";
|
|
784
|
+
avg_days_between_deploys: number | null;
|
|
785
|
+
/** Launches burned between a miss and the next hit. */
|
|
786
|
+
avg_recovery_tokens: number | null;
|
|
787
|
+
best_stretch: RhcDeployerStretch | null;
|
|
788
|
+
worst_stretch: RhcDeployerStretch | null;
|
|
789
|
+
total_tokens_analyzed: number;
|
|
790
|
+
}
|
|
791
|
+
export interface RhcDeployerTrajectoryResponse {
|
|
792
|
+
chain: Chain;
|
|
793
|
+
/** False if this wallet has never deployed a tracked token (deployer + trajectory are then null). */
|
|
794
|
+
is_deployer: boolean;
|
|
795
|
+
address: string;
|
|
796
|
+
deployer: RhcDeployerSummary | null;
|
|
797
|
+
/** States what the `bond` wording actually counted — "graduated ($40K+ peak market cap)". */
|
|
798
|
+
success_metric?: string;
|
|
799
|
+
trajectory: RhcDeployerTrajectory | null;
|
|
800
|
+
/** True when the 500-token analysis cap was hit — the curve is partial. */
|
|
801
|
+
truncated?: boolean;
|
|
802
|
+
_rid?: string;
|
|
803
|
+
}
|
|
804
|
+
export type RhcDeployerTokensSort = "first_seen_at" | "peak_mc_usd";
|
|
805
|
+
export interface RhcDeployerTokensParams {
|
|
806
|
+
/** Page size (1–100). Default: 50. */
|
|
807
|
+
limit?: number;
|
|
808
|
+
/** Page offset (0–10000). Default: 0. */
|
|
809
|
+
offset?: number;
|
|
810
|
+
/** Ordering. Default: "first_seen_at" (newest first). `peak_mc_usd` sorts the fetched PAGE only. */
|
|
811
|
+
sort?: RhcDeployerTokensSort;
|
|
812
|
+
}
|
|
813
|
+
/** One launch in a deployer's paginated history. */
|
|
814
|
+
export interface RhcDeployerTokenRow {
|
|
815
|
+
address: string;
|
|
816
|
+
symbol: string | null;
|
|
817
|
+
name: string | null;
|
|
818
|
+
launchpad: string | null;
|
|
819
|
+
/** How the deployer was attributed for this token. */
|
|
820
|
+
deployer_source: string | null;
|
|
821
|
+
is_graduated: boolean | null;
|
|
822
|
+
graduated_at: string | null;
|
|
823
|
+
first_seen_at: string | null;
|
|
824
|
+
market_cap_usd: number | null;
|
|
825
|
+
peak_mc_usd: number | null;
|
|
826
|
+
peak_mc_at: string | null;
|
|
827
|
+
liquidity_usd: number | null;
|
|
828
|
+
}
|
|
829
|
+
export interface RhcDeployerTokensResponse {
|
|
830
|
+
chain: Chain;
|
|
831
|
+
is_deployer: boolean;
|
|
832
|
+
address: string;
|
|
833
|
+
deployer: RhcDeployerSummary | null;
|
|
834
|
+
tokens: RhcDeployerTokenRow[];
|
|
835
|
+
/** Lifetime launch count (deployer.tokens_deployed), not the page size. */
|
|
836
|
+
total: number;
|
|
837
|
+
limit: number;
|
|
838
|
+
offset: number;
|
|
839
|
+
has_more: boolean;
|
|
840
|
+
sort?: RhcDeployerTokensSort;
|
|
841
|
+
/** `page` when sort=peak_mc_usd — that ordering is applied to the fetched page only. */
|
|
842
|
+
sort_scope?: "page";
|
|
843
|
+
_rid?: string;
|
|
844
|
+
}
|
|
845
|
+
export type RhcBestTokensPeriod = "24h" | "7d" | "30d" | "all";
|
|
846
|
+
export interface RhcBestTokensParams {
|
|
847
|
+
/** Launch window. Default: "7d". */
|
|
848
|
+
period?: RhcBestTokensPeriod;
|
|
849
|
+
/** Max tokens (1–50). Default: 10. */
|
|
850
|
+
limit?: number;
|
|
851
|
+
}
|
|
852
|
+
export interface RhcBestToken {
|
|
853
|
+
address: string;
|
|
854
|
+
symbol: string | null;
|
|
855
|
+
name: string | null;
|
|
856
|
+
launchpad: string | null;
|
|
857
|
+
first_seen_at: string | null;
|
|
858
|
+
is_graduated: boolean | null;
|
|
859
|
+
market_cap_usd: number | null;
|
|
860
|
+
peak_mc_usd: number | null;
|
|
861
|
+
peak_mc_at: string | null;
|
|
862
|
+
liquidity_usd: number | null;
|
|
863
|
+
/** The reputable deployer behind the launch. */
|
|
864
|
+
deployer: {
|
|
865
|
+
address: string;
|
|
866
|
+
tier: "elite" | "good";
|
|
867
|
+
graduation_rate: number;
|
|
868
|
+
runner_rate: number;
|
|
869
|
+
tokens_deployed: number;
|
|
870
|
+
} | null;
|
|
871
|
+
}
|
|
872
|
+
export interface RhcBestTokensResponse {
|
|
873
|
+
chain: Chain;
|
|
874
|
+
/** Ranked by peak MC, highest first. */
|
|
875
|
+
tokens: RhcBestToken[];
|
|
876
|
+
period: RhcBestTokensPeriod;
|
|
877
|
+
limit: number;
|
|
878
|
+
/** Size of the elite+good population the ranking drew from. */
|
|
879
|
+
reputable_deployers: number;
|
|
880
|
+
/** Launches considered before ranking. */
|
|
881
|
+
candidates_scanned?: number;
|
|
882
|
+
/** True when the 1000-candidate scan cap was hit — the top-N is drawn from the most RECENT launches. */
|
|
883
|
+
truncated?: boolean;
|
|
884
|
+
_rid?: string;
|
|
885
|
+
}
|
|
886
|
+
export interface RhcDeployerStatsResponse {
|
|
887
|
+
chain: Chain;
|
|
888
|
+
total_deployers: number;
|
|
889
|
+
total_tokens: number;
|
|
890
|
+
/** elite + good. */
|
|
891
|
+
reputable_deployers: number;
|
|
892
|
+
by_tier: Record<string, {
|
|
893
|
+
deployers: number;
|
|
894
|
+
tokens: number;
|
|
895
|
+
}>;
|
|
896
|
+
/** Share of all indexed tokens deployed by spammers, 0–1. */
|
|
897
|
+
spam_token_share: number | null;
|
|
898
|
+
alerts_24h: number;
|
|
899
|
+
alerts_7d: number;
|
|
900
|
+
/** The thresholds actually in force — elite/good ride runner_rate + 24h of history, spammer keys off graduation_rate. */
|
|
901
|
+
tier_rules: Record<string, string>;
|
|
902
|
+
/** "peak market cap >= $40,000". */
|
|
903
|
+
graduation_definition: string;
|
|
904
|
+
/** "peak market cap >= $100,000". */
|
|
905
|
+
runner_definition: string;
|
|
906
|
+
_rid?: string;
|
|
907
|
+
}
|
|
908
|
+
export type RhcAlertType = "new_deploy" | "graduated";
|
|
909
|
+
/** RHC alert priorities — no `low`, unlike Solana. */
|
|
910
|
+
export type RhcAlertPriority = "high" | "medium";
|
|
911
|
+
export interface RhcDeployerAlertsParams {
|
|
912
|
+
/** Filter on the RESOLVED (read-time) tier, not the snapshot. */
|
|
913
|
+
deployer_tier?: DeployerTier;
|
|
914
|
+
priority?: RhcAlertPriority;
|
|
915
|
+
alert_type?: RhcAlertType;
|
|
916
|
+
/** Filter by launchpad (1–32 chars). */
|
|
917
|
+
launchpad?: string;
|
|
918
|
+
/** Minimum market cap at alert time (USD). */
|
|
919
|
+
min_mc?: number;
|
|
920
|
+
/** Max alerts (1–500). Default: 50 — BASIC/PRO are capped at 50, only ULTRA gets the full limit. */
|
|
921
|
+
limit?: number;
|
|
922
|
+
/** Page offset (0–10000). Default: 0. Ignored when `before` is set. */
|
|
923
|
+
offset?: number;
|
|
924
|
+
/** Poll forward — only alerts with `event_at` strictly newer than this ISO 8601 timestamp. Pass `next_event_at`. */
|
|
925
|
+
since?: string;
|
|
926
|
+
/** Page back — only alerts strictly older than this ISO 8601 timestamp. Pass `next_before`. Takes precedence over `offset`. */
|
|
927
|
+
before?: string;
|
|
928
|
+
/** Disables the default $100 liquidity gate and returns the raw tape. */
|
|
929
|
+
include_untradeable?: boolean;
|
|
930
|
+
}
|
|
931
|
+
/** One deployer alert. `tier` is resolved at READ time; `tier_at_alert` is the snapshot taken when it fired. */
|
|
932
|
+
export interface RhcDeployerAlert {
|
|
933
|
+
id: string;
|
|
934
|
+
deployer_address: string;
|
|
935
|
+
token_address: string;
|
|
936
|
+
token_symbol: string | null;
|
|
937
|
+
token_name: string | null;
|
|
938
|
+
alert_type: RhcAlertType;
|
|
939
|
+
title: string | null;
|
|
940
|
+
/** Restated at read time in terms of `runner_rate` — the metric that actually sets the tier. */
|
|
941
|
+
message: string | null;
|
|
942
|
+
launchpad: string | null;
|
|
943
|
+
/** The deployer's CURRENT tier, from the live reputation view. */
|
|
944
|
+
tier: DeployerTier | null;
|
|
945
|
+
/** The tier stored when the alert fired. */
|
|
946
|
+
tier_at_alert: DeployerTier | null;
|
|
947
|
+
/** True when the deployer's tier changed since the alert fired. */
|
|
948
|
+
tier_is_stale: boolean;
|
|
949
|
+
mc_at_alert: number | null;
|
|
950
|
+
current_mc_usd: number | null;
|
|
951
|
+
liquidity_usd: number | null;
|
|
952
|
+
priority: RhcAlertPriority;
|
|
953
|
+
is_active: boolean;
|
|
954
|
+
created_at: string;
|
|
955
|
+
event_at: string | null;
|
|
956
|
+
}
|
|
957
|
+
export interface RhcDeployerAlertsResponse {
|
|
958
|
+
chain: Chain;
|
|
959
|
+
alerts: RhcDeployerAlert[];
|
|
960
|
+
limit: number;
|
|
961
|
+
offset: number;
|
|
962
|
+
/** Echoes whether the default liquidity gate ran — `liquidity_usd >= $100` or `off (include_untradeable=true)`. */
|
|
963
|
+
tradability_filter: string;
|
|
964
|
+
/** Newest `event_at` on this page — pass back as `since` to poll forward. */
|
|
965
|
+
next_event_at: string | null;
|
|
966
|
+
/** Oldest `event_at` on this page — pass as `before` to page back. */
|
|
967
|
+
next_before: string | null;
|
|
968
|
+
/** Age of the newest alert, seconds. */
|
|
969
|
+
data_age_seconds: number | null;
|
|
970
|
+
_rid?: string;
|
|
971
|
+
}
|
|
972
|
+
export interface RhcDeployerHistoryParams {
|
|
973
|
+
/** Page size (1–1000). Default: 100. */
|
|
974
|
+
limit?: number;
|
|
975
|
+
/** Page offset (0–100000). Default: 0. */
|
|
976
|
+
offset?: number;
|
|
977
|
+
}
|
|
978
|
+
export interface RhcDeployerHistoryResponse {
|
|
979
|
+
chain: Chain;
|
|
980
|
+
is_deployer: boolean;
|
|
981
|
+
address: string;
|
|
982
|
+
deployer: RhcDeployerReputation | null;
|
|
983
|
+
tokens: RhcDeployerToken[];
|
|
984
|
+
/** Exact lifetime launch count. */
|
|
985
|
+
total: number;
|
|
986
|
+
limit: number;
|
|
987
|
+
offset: number;
|
|
988
|
+
has_more: boolean;
|
|
989
|
+
_rid?: string;
|
|
990
|
+
}
|
|
991
|
+
export interface RhcRecentBondsParams {
|
|
992
|
+
/** Filter by the token deployer's tier. */
|
|
993
|
+
deployer_tier?: DeployerTier;
|
|
994
|
+
/** Raise the peak-MC floor (USD). Never lowers it below the $40K graduation milestone. */
|
|
995
|
+
min_peak?: number;
|
|
996
|
+
/** Max tokens (1–200). Default: 50. */
|
|
997
|
+
limit?: number;
|
|
998
|
+
}
|
|
999
|
+
export interface RhcRecentBondToken {
|
|
1000
|
+
address: string;
|
|
1001
|
+
symbol: string | null;
|
|
1002
|
+
name: string | null;
|
|
1003
|
+
launchpad: string | null;
|
|
1004
|
+
is_graduated: boolean | null;
|
|
1005
|
+
deployer_address: string | null;
|
|
1006
|
+
deployer_tier: DeployerTier | null;
|
|
1007
|
+
first_seen_at: string | null;
|
|
1008
|
+
market_cap_usd: number | null;
|
|
1009
|
+
peak_mc_usd: number | null;
|
|
1010
|
+
peak_mc_at: string | null;
|
|
1011
|
+
}
|
|
1012
|
+
export interface RhcRecentBondsResponse {
|
|
1013
|
+
chain: Chain;
|
|
1014
|
+
/** The milestone that defines a graduation on this chain — 40000 USD peak MC. */
|
|
1015
|
+
graduation_mc: number;
|
|
1016
|
+
/** Newest peak first. */
|
|
1017
|
+
tokens: RhcRecentBondToken[];
|
|
1018
|
+
limit: number;
|
|
1019
|
+
/** Newest `peak_mc_at` on this page (informational). */
|
|
1020
|
+
next_peak_mc_at: string | null;
|
|
1021
|
+
_rid?: string;
|
|
1022
|
+
}
|
|
558
1023
|
export type AlphaClassificationFilter = "all" | "human" | "bot" | "smart_money";
|
|
559
1024
|
export type AlphaIdentityFilter = "all" | "known_kol" | "unknown";
|
|
560
1025
|
export type AlphaWalletClassification = "bot" | "smart_money" | "trader";
|
|
@@ -622,7 +1087,7 @@ export interface StreamToken {
|
|
|
622
1087
|
export interface RobinhoodConfig {
|
|
623
1088
|
/**
|
|
624
1089
|
* MadeOnSol API key (starts with `msk_`). The same key works across every tier.
|
|
625
|
-
* Get a
|
|
1090
|
+
* Get a key at https://madeonsol.com/pricing (3-day free trial on Pro/Ultra).
|
|
626
1091
|
*/
|
|
627
1092
|
apiKey: string;
|
|
628
1093
|
/** Max automatic retries on 429 / 5xx / network error (default: 2). */
|
|
@@ -656,11 +1121,30 @@ declare class KolClient {
|
|
|
656
1121
|
* @param wallet KOL EVM wallet address (0x, 40 hex).
|
|
657
1122
|
*/
|
|
658
1123
|
wallet(wallet: string): Promise<RhcKolProfileResponse>;
|
|
1124
|
+
/**
|
|
1125
|
+
* KOL clustering — tokens bought by `min_kols`+ DISTINCT tracked KOLs inside
|
|
1126
|
+
* the window, ranked by KOL count then buy volume. Deeper than `hotTokens()`:
|
|
1127
|
+
* each row carries the per-KOL breakdown, net ETH flow, an accumulating vs
|
|
1128
|
+
* distributing signal, exit state, and how fast the cohort piled in
|
|
1129
|
+
* (`time_to_consensus_sec`). Tier: **BASIC**.
|
|
1130
|
+
* @param params Optional: period (1h/6h/24h/7d, default 24h), min_kols (2–50), limit (1–50), min_mc_usd / max_mc_usd (MC at the FIRST KOL buy).
|
|
1131
|
+
*/
|
|
1132
|
+
coordination(params?: RhcKolCoordinationParams): Promise<RhcKolCoordinationResponse>;
|
|
1133
|
+
/**
|
|
1134
|
+
* First touches — the globally earliest buy by ANY tracked KOL per token, the
|
|
1135
|
+
* discovery signal. Each event carries the entry size in ETH, the MC at entry,
|
|
1136
|
+
* and the current + peak MC so you can score how the call aged. `limit` is
|
|
1137
|
+
* clamped to 20 below PRO, and `first_kol.evm_address` is ULTRA-only.
|
|
1138
|
+
* Tier: **BASIC**.
|
|
1139
|
+
* @param params Optional: limit, since, before cursor, min_eth, token_age_max_min, launchpad, min_mc_usd / max_mc_usd.
|
|
1140
|
+
*/
|
|
1141
|
+
firstTouches(params?: RhcFirstTouchesParams): Promise<RhcKolFirstTouchesResponse>;
|
|
659
1142
|
}
|
|
660
1143
|
declare class TokensClient {
|
|
661
1144
|
private readonly _fetch;
|
|
662
1145
|
private readonly _baseUrl;
|
|
663
|
-
|
|
1146
|
+
private readonly _post;
|
|
1147
|
+
constructor(_fetch: <T>(url: string) => Promise<T>, _baseUrl: string, _post: <T>(url: string, body?: unknown) => Promise<T>);
|
|
664
1148
|
/**
|
|
665
1149
|
* Robinhood Chain token discovery — live-priced tokens with MC, liquidity,
|
|
666
1150
|
* peak MC + drawdown, launchpad, and deployer tier. Tier: **PRO+**.
|
|
@@ -702,6 +1186,28 @@ declare class TokensClient {
|
|
|
702
1186
|
* @param address Token address (0x, 40 hex).
|
|
703
1187
|
*/
|
|
704
1188
|
bundle(address: string): Promise<RhcBundleResponse>;
|
|
1189
|
+
/**
|
|
1190
|
+
* Up to 50 tokens in ONE call — metadata, live price/MC/FDV/liquidity, peak MC,
|
|
1191
|
+
* primary DEX, and the deployer reputation block. Set-based server-side (three
|
|
1192
|
+
* queries regardless of batch size), not a fan-out of `get()`. Every requested
|
|
1193
|
+
* address is echoed back — unknown ones as `{ found: false }` — so positions
|
|
1194
|
+
* line up with what you sent. Narrower than `get()` on purpose: it does NOT
|
|
1195
|
+
* bundle buyer-quality; use `batchBuyerQuality()` for that. Tier: **BASIC**.
|
|
1196
|
+
* @param addresses 1–50 token addresses (0x, 40 hex). Duplicates are de-duplicated server-side.
|
|
1197
|
+
*/
|
|
1198
|
+
batch(addresses: string[]): Promise<RhcTokenBatchResponse>;
|
|
1199
|
+
/**
|
|
1200
|
+
* Early-buyer quality for several tokens in one call — the batched form of
|
|
1201
|
+
* `buyerQuality()`. A token that fails to score degrades to an entry carrying
|
|
1202
|
+
* `error` instead of failing the batch. Tier: **BASIC**.
|
|
1203
|
+
*
|
|
1204
|
+
* **The cap is 20, not the Solana batch cap of 50** — RHC buyer-quality is a
|
|
1205
|
+
* per-token cohort computation (ordered early-buyer scan + bundle detection +
|
|
1206
|
+
* alpha/cluster joins), not one set-based query, so 50 would mean ~200
|
|
1207
|
+
* round-trips behind a single request. The cap is echoed as `max_addresses`.
|
|
1208
|
+
* @param addresses 1–20 token addresses (0x, 40 hex).
|
|
1209
|
+
*/
|
|
1210
|
+
batchBuyerQuality(addresses: string[]): Promise<RhcBatchBuyerQualityResponse>;
|
|
705
1211
|
}
|
|
706
1212
|
declare class DeployerHunterClient {
|
|
707
1213
|
private readonly _fetch;
|
|
@@ -710,6 +1216,13 @@ declare class DeployerHunterClient {
|
|
|
710
1216
|
/**
|
|
711
1217
|
* Deployer reputation leaderboard — ranked over a 5-min-refresh rollup of every
|
|
712
1218
|
* launchpad token indexed (40k+ deployers). Tier: **BASIC**.
|
|
1219
|
+
*
|
|
1220
|
+
* Tier semantics (migrations 267 + 269): `elite` / `good` are earned on the
|
|
1221
|
+
* $100K `runner_rate` **and** require 24h of deployer history — the $40K bar
|
|
1222
|
+
* proved farmable by operators mass-relaunching one ticker across rotating
|
|
1223
|
+
* wallets. `graduation_rate` still means the $40K bar and is still returned,
|
|
1224
|
+
* but it no longer sets the tier; `spammer` is the one label that still keys
|
|
1225
|
+
* off it. Call `stats()` for the thresholds in force.
|
|
713
1226
|
* @param params Optional: sort, tier, min_tokens, limit (1–50), offset.
|
|
714
1227
|
*/
|
|
715
1228
|
leaderboard(params?: RhcDeployerLeaderboardParams): Promise<RhcDeployerLeaderboardResponse>;
|
|
@@ -720,6 +1233,92 @@ declare class DeployerHunterClient {
|
|
|
720
1233
|
* @param address Deployer EVM wallet address (0x, 40 hex).
|
|
721
1234
|
*/
|
|
722
1235
|
profile(address: string): Promise<RhcDeployerProfileResponse>;
|
|
1236
|
+
/**
|
|
1237
|
+
* Is this deployer getting better or worse? Current + longest hit/miss streaks,
|
|
1238
|
+
* a rolling 10-launch success curve, best/worst stretches, deploy cadence, and
|
|
1239
|
+
* how many launches they burn between a miss and the next hit. Tier: **BASIC**.
|
|
1240
|
+
*
|
|
1241
|
+
* The per-token success event is the **$40K peak-MC graduation** (echoed as
|
|
1242
|
+
* `success_metric`), deliberately NOT the $100K runner bar that migrations
|
|
1243
|
+
* 267 + 269 moved TIERS onto — $100K is rare enough that most deployers would
|
|
1244
|
+
* return an all-zero curve, and a trajectory needs events to have a shape.
|
|
1245
|
+
* Analysis is capped at 500 launches; `truncated` says whether the curve is
|
|
1246
|
+
* the whole story. Unknown wallets return 200 with `is_deployer: false`.
|
|
1247
|
+
* @param address Deployer EVM wallet address (0x, 40 hex).
|
|
1248
|
+
*/
|
|
1249
|
+
trajectory(address: string): Promise<RhcDeployerTrajectoryResponse>;
|
|
1250
|
+
/**
|
|
1251
|
+
* One deployer's full paginated launch history, enriched with live MC, peak MC
|
|
1252
|
+
* and liquidity. `profile()` caps `recent_tokens` at 50 and is a point-in-time
|
|
1253
|
+
* read — this is the enumerable list with limit/offset and `has_more`.
|
|
1254
|
+
* Tier: **BASIC**.
|
|
1255
|
+
*
|
|
1256
|
+
* Note `sort: "peak_mc_usd"` orders the fetched PAGE only (the response echoes
|
|
1257
|
+
* `sort_scope: "page"`), because peak MC lives in another table — it is not a
|
|
1258
|
+
* global top-tokens ranking. Use `bestTokens()` for a real ranking.
|
|
1259
|
+
* @param address Deployer EVM wallet address (0x, 40 hex).
|
|
1260
|
+
* @param params Optional: limit (1–100, default 50), offset, sort (first_seen_at | peak_mc_usd).
|
|
1261
|
+
*/
|
|
1262
|
+
tokens(address: string, params?: RhcDeployerTokensParams): Promise<RhcDeployerTokensResponse>;
|
|
1263
|
+
/**
|
|
1264
|
+
* Full token-deploy history for one deployer plus their reputation row.
|
|
1265
|
+
* Tier: **PRO+** — the point-in-time `profile()` stays BASIC. RHC has no
|
|
1266
|
+
* per-day reputation snapshots, so this is a deploy history, not a daily tier
|
|
1267
|
+
* time-series; for the shape-over-time read use `trajectory()`.
|
|
1268
|
+
* @param address Deployer EVM wallet address (0x, 40 hex).
|
|
1269
|
+
* @param params Optional: limit (1–1000, default 100), offset (0–100000).
|
|
1270
|
+
*/
|
|
1271
|
+
history(address: string, params?: RhcDeployerHistoryParams): Promise<RhcDeployerHistoryResponse>;
|
|
1272
|
+
/**
|
|
1273
|
+
* The highest-peaking tokens launched by REPUTABLE (good/elite) deployers in a
|
|
1274
|
+
* window — "what did the deployers worth tracking actually produce". Gated on
|
|
1275
|
+
* reputation rather than raw peak MC; the unfiltered version is
|
|
1276
|
+
* `client.tokens.list({ sort: "peak_mc" })`. Tier: **BASIC**.
|
|
1277
|
+
*
|
|
1278
|
+
* Reputation here is the $100K `runner_rate` tier (+ 24h of deployer history),
|
|
1279
|
+
* not `graduation_rate`. If `truncated` is true the top-N was drawn from the
|
|
1280
|
+
* 1000 most RECENT launches in the period rather than the whole period.
|
|
1281
|
+
* @param params Optional: period (24h/7d/30d/all, default 7d), limit (1–50, default 10).
|
|
1282
|
+
*/
|
|
1283
|
+
bestTokens(params?: RhcBestTokensParams): Promise<RhcBestTokensResponse>;
|
|
1284
|
+
/**
|
|
1285
|
+
* Chain-wide deployer reputation summary — population and token count per tier,
|
|
1286
|
+
* the reputable-deployer count, spam token share, and 24h/7d alert volume: the
|
|
1287
|
+
* denominator for any "is this deployer rare?" question. Tier: **BASIC**.
|
|
1288
|
+
*
|
|
1289
|
+
* Also returns `tier_rules`, the thresholds actually in force, so you can read
|
|
1290
|
+
* what `elite` currently means instead of guessing from the label — `elite` /
|
|
1291
|
+
* `good` are earned on the $100K `runner_rate` plus 24h of deployer history
|
|
1292
|
+
* (migrations 267 + 269), while `spammer` still keys off `graduation_rate`.
|
|
1293
|
+
*/
|
|
1294
|
+
stats(): Promise<RhcDeployerStatsResponse>;
|
|
1295
|
+
/**
|
|
1296
|
+
* Deployer signal feed — new deploys and graduations from tracked deployers,
|
|
1297
|
+
* newest first. Tier: **BASIC** (ULTRA gets the full limit; BASIC/PRO share a
|
|
1298
|
+
* 50-alert cap). Poll forward with `since: next_event_at`, page back with
|
|
1299
|
+
* `before: next_before`.
|
|
1300
|
+
*
|
|
1301
|
+
* Two things worth knowing. **Tradability is filtered by default**: alerts on
|
|
1302
|
+
* tokens with `liquidity_usd` under $100 — unknown liquidity included, since on
|
|
1303
|
+
* RHC that usually means a drained pool — are dropped, because a $45K-MC alert
|
|
1304
|
+
* on a $68 pool is not a signal. Pass `include_untradeable: true` for the raw
|
|
1305
|
+
* tape; the active setting is echoed as `tradability_filter`. And **`tier` is
|
|
1306
|
+
* resolved at read time** from the live reputation view, so an alert can never
|
|
1307
|
+
* advertise a reputation the deployer has since lost — the snapshot comes back
|
|
1308
|
+
* as `tier_at_alert` with `tier_is_stale` flagging drift, and `deployer_tier`
|
|
1309
|
+
* filters on the resolved value.
|
|
1310
|
+
* @param params Optional: deployer_tier, priority, alert_type, launchpad, min_mc, limit, offset, since, before, include_untradeable.
|
|
1311
|
+
*/
|
|
1312
|
+
alerts(params?: RhcDeployerAlertsParams): Promise<RhcDeployerAlertsResponse>;
|
|
1313
|
+
/**
|
|
1314
|
+
* Recent graduations, newest peak first, with token metadata and the deployer's
|
|
1315
|
+
* tier. On RHC a graduation is the **$40K peak-MC milestone**, not a
|
|
1316
|
+
* bonding-curve completion — noxa/pons/clanker launch direct-to-DEX with no
|
|
1317
|
+
* curve — so the set is defined purely by peak MC. `min_peak` only raises that
|
|
1318
|
+
* floor. Tier: **BASIC**.
|
|
1319
|
+
* @param params Optional: deployer_tier, min_peak, limit (1–200, default 50).
|
|
1320
|
+
*/
|
|
1321
|
+
recentBonds(params?: RhcRecentBondsParams): Promise<RhcRecentBondsResponse>;
|
|
723
1322
|
}
|
|
724
1323
|
declare class StreamClient {
|
|
725
1324
|
private readonly _post;
|
|
@@ -745,10 +1344,11 @@ declare class StreamClient {
|
|
|
745
1344
|
/**
|
|
746
1345
|
* Robinhood Chain API client (chain id 4663).
|
|
747
1346
|
*
|
|
748
|
-
* EVM-native on-chain trading intelligence —
|
|
749
|
-
*
|
|
750
|
-
*
|
|
751
|
-
*
|
|
1347
|
+
* All 25 Robinhood Chain endpoints: EVM-native on-chain trading intelligence —
|
|
1348
|
+
* live KOL trades and coordination, token discovery & bundles, the DEX trade
|
|
1349
|
+
* tape, OHLC candles, deployer reputation, and smart-money wallets.
|
|
1350
|
+
* Authenticate with a MadeOnSol `msk_` key (same key, same base URL as the
|
|
1351
|
+
* Solana API — Robinhood Chain is bundled into every tier).
|
|
752
1352
|
*
|
|
753
1353
|
* @example
|
|
754
1354
|
* ```ts
|
|
@@ -762,11 +1362,11 @@ declare class StreamClient {
|
|
|
762
1362
|
* ```
|
|
763
1363
|
*/
|
|
764
1364
|
export declare class RobinhoodClient {
|
|
765
|
-
/** KOL trade intelligence on Robinhood Chain — feed, leaderboard, hot tokens, per-wallet profile. */
|
|
1365
|
+
/** KOL trade intelligence on Robinhood Chain — feed, leaderboard, hot tokens, per-wallet profile, coordination, first touches. */
|
|
766
1366
|
readonly kol: KolClient;
|
|
767
|
-
/** Token intelligence — discovery, per-token snapshot, candles, KOL consensus, buyer quality, launch bundle. */
|
|
1367
|
+
/** Token intelligence — discovery, per-token snapshot, candles, KOL consensus, buyer quality, launch bundle, batch reads. */
|
|
768
1368
|
readonly tokens: TokensClient;
|
|
769
|
-
/** Deployer reputation — leaderboard
|
|
1369
|
+
/** Deployer reputation — leaderboard, profile, trajectory, launch history, best tokens, chain stats, alerts, recent graduations. */
|
|
770
1370
|
readonly deployerHunter: DeployerHunterClient;
|
|
771
1371
|
/** Managed WebSocket streaming (rhc:kol_trades, rhc:trades) — PRO+. */
|
|
772
1372
|
readonly stream: StreamClient;
|