madeonsol 2.23.0 → 2.25.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 +132 -1
- package/dist/index.d.ts +788 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +171 -0
- package/dist/index.js.map +1 -1
- package/dist/stream.d.ts +2 -2
- package/dist/stream.d.ts.map +1 -1
- package/dist/stream.js.map +1 -1
- package/llms.txt +7 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1561,6 +1561,638 @@ export interface TokenPoolsResponse {
|
|
|
1561
1561
|
pools: TokenPool[];
|
|
1562
1562
|
summary: TokenPoolsSummary;
|
|
1563
1563
|
}
|
|
1564
|
+
/** Wallet-intelligence label on a live holder (`GET /tokens/{mint}/holders`).
|
|
1565
|
+
* Labels come from MadeOnSol's swap-ledger data — an empty `labels[]` means
|
|
1566
|
+
* "unknown to us", NOT "verified clean". */
|
|
1567
|
+
export type TokenHolderLabel = "deployer" | "kol" | "early_buyer" | "buyer" | "bundle" | "bot" | "dump_cluster";
|
|
1568
|
+
/** Why an owner was excluded from the circulating denominator and listed in
|
|
1569
|
+
* `excluded[]`: `pool` = vault authority of a known pool (`dex` + `pool_address`
|
|
1570
|
+
* set); `bonding_curve` = pump.fun / LaunchLab curve; `burn` = incinerator /
|
|
1571
|
+
* system program; `program_account` = an off-curve owner we could not attribute
|
|
1572
|
+
* to a known pool (vault, escrow, staking, unknown pool). */
|
|
1573
|
+
export type TokenHolderExcludedReason = "pool" | "bonding_curve" | "burn" | "program_account";
|
|
1574
|
+
/** How the holder set was read. `getProgramAccounts_census` = full mint-scoped
|
|
1575
|
+
* census (exact `holder_count`, ranks 1–100 retained). `getTokenLargestAccounts`
|
|
1576
|
+
* = the top-20 fallback used only when the provider refuses the census for a
|
|
1577
|
+
* mega-cap mint (`holder_count: null`, `source.census_fallback_reason` set). */
|
|
1578
|
+
export type TokenHoldersMethod = "getProgramAccounts_census" | "getTokenLargestAccounts";
|
|
1579
|
+
/** One disclosed holder — token accounts merged per owner wallet. */
|
|
1580
|
+
export interface TokenHolder {
|
|
1581
|
+
/** 1-based rank by balance among non-excluded owners. */
|
|
1582
|
+
rank: number;
|
|
1583
|
+
/** Owner wallet (owner of the token account(s)). */
|
|
1584
|
+
owner: string;
|
|
1585
|
+
/** Every non-zero token account of this owner for the mint. */
|
|
1586
|
+
token_accounts: string[];
|
|
1587
|
+
/** Raw u64 balance as a decimal STRING — never a float. Use BigInt(). */
|
|
1588
|
+
amount_raw: string;
|
|
1589
|
+
/** UI amount (`amount_raw / 10^decimals`); null when decimals are unknown. */
|
|
1590
|
+
amount: number | null;
|
|
1591
|
+
/** Share of TOTAL supply, 0–100. */
|
|
1592
|
+
pct_of_supply: number | null;
|
|
1593
|
+
/** Share of circulating supply (total minus pools/curves/burns), 0–100. */
|
|
1594
|
+
pct_of_circulating: number | null;
|
|
1595
|
+
/** MadeOnSol labels. Empty = unknown to us, not verified clean. */
|
|
1596
|
+
labels: TokenHolderLabel[];
|
|
1597
|
+
kol_name: string | null;
|
|
1598
|
+
/** This owner's rank in the token's early-buyer cohort, if any. */
|
|
1599
|
+
early_buyer_rank: number | null;
|
|
1600
|
+
/** Alpha-wallet classifier enum (`"none"`/`"low"`/`"medium"`/`"high"`), not a number. */
|
|
1601
|
+
bot_confidence: string | null;
|
|
1602
|
+
historical_win_rate: number | null;
|
|
1603
|
+
}
|
|
1604
|
+
/** An owner excluded from the circulating denominator (pool / bonding curve /
|
|
1605
|
+
* burn / unattributed program account), NAMED where possible. */
|
|
1606
|
+
export interface TokenHoldersExcluded {
|
|
1607
|
+
owner: string;
|
|
1608
|
+
token_accounts: string[];
|
|
1609
|
+
/** Raw u64 balance as a decimal STRING — never a float. */
|
|
1610
|
+
amount_raw: string;
|
|
1611
|
+
/** Share of TOTAL supply, 0–100. */
|
|
1612
|
+
pct_of_supply: number | null;
|
|
1613
|
+
reason: TokenHolderExcludedReason;
|
|
1614
|
+
/** pumpfun | pumpswap | raydium | launchlab | meteora | orca | jupiter — when named. */
|
|
1615
|
+
dex: string | null;
|
|
1616
|
+
pool_address: string | null;
|
|
1617
|
+
}
|
|
1618
|
+
/** Concentration over the FULL owner set — tier only governs how many ranks are
|
|
1619
|
+
* disclosed in `holders[]`; these numbers are identical on PRO/ULTRA/BUSINESS.
|
|
1620
|
+
* All `*_share` / `*_pct` values are 0–100 (or null when the denominator is
|
|
1621
|
+
* unknown). */
|
|
1622
|
+
export interface TokenHoldersConcentration {
|
|
1623
|
+
/** Exact distinct non-zero owners minus excluded pools/curves/burns, at `slot`
|
|
1624
|
+
* (census). null ONLY when the provider refused the census (see
|
|
1625
|
+
* `source.census_fallback_reason`) — never estimated from trades. */
|
|
1626
|
+
holder_count: number | null;
|
|
1627
|
+
holder_count_source: "census" | null;
|
|
1628
|
+
token_accounts_nonzero: number | null;
|
|
1629
|
+
/** Total supply, raw u64 as a string. */
|
|
1630
|
+
supply_raw: string | null;
|
|
1631
|
+
/** Supply minus excluded owners, raw u64 as a string. */
|
|
1632
|
+
circulating_raw: string | null;
|
|
1633
|
+
decimals: number | null;
|
|
1634
|
+
/** Shares of CIRCULATING supply held by ranks 1 / 1–10 / 1–20. */
|
|
1635
|
+
top1_share: number | null;
|
|
1636
|
+
top10_share: number | null;
|
|
1637
|
+
top20_share: number | null;
|
|
1638
|
+
/** Census only — null on the top-20 fallback. */
|
|
1639
|
+
top50_share: number | null;
|
|
1640
|
+
/** Census only — null on the top-20 fallback. */
|
|
1641
|
+
top100_share: number | null;
|
|
1642
|
+
/** Share of TOTAL supply in excluded owners (= pool_pct + burned_pct + program_pct). */
|
|
1643
|
+
pool_and_program_pct: number | null;
|
|
1644
|
+
/** Share of total supply in NAMED pools + bonding curves. */
|
|
1645
|
+
pool_pct: number | null;
|
|
1646
|
+
/** Share of total supply at burn addresses. */
|
|
1647
|
+
burned_pct: number | null;
|
|
1648
|
+
/** Share of total supply held by off-curve owners we could not attribute. */
|
|
1649
|
+
program_pct: number | null;
|
|
1650
|
+
/** Shares of circulating supply held by labelled cohorts. */
|
|
1651
|
+
deployer_pct: number | null;
|
|
1652
|
+
kol_pct: number | null;
|
|
1653
|
+
early_buyer_pct: number | null;
|
|
1654
|
+
bundle_pct: number | null;
|
|
1655
|
+
bot_pct: number | null;
|
|
1656
|
+
dump_cluster_pct: number | null;
|
|
1657
|
+
distinct_owners_in_top20: number;
|
|
1658
|
+
/** How many ranked owners the scan retained (≤100 census, ≤20 fallback). */
|
|
1659
|
+
ranked_owners_available: number;
|
|
1660
|
+
}
|
|
1661
|
+
export interface TokenHoldersDeployer {
|
|
1662
|
+
wallet: string;
|
|
1663
|
+
tier: string;
|
|
1664
|
+
bonding_rate: number | null;
|
|
1665
|
+
}
|
|
1666
|
+
export interface TokenHoldersSource {
|
|
1667
|
+
method: TokenHoldersMethod;
|
|
1668
|
+
/** SPL Token or Token-2022 program id the mint lives under (pump.fun = Token-2022). */
|
|
1669
|
+
token_program: string | null;
|
|
1670
|
+
/** Ranks retained by the scan: 100 (census) or 20 (fallback). */
|
|
1671
|
+
rpc_cap: number;
|
|
1672
|
+
commitment: string;
|
|
1673
|
+
scan_ms: number;
|
|
1674
|
+
/** Set when the census was refused and the top-20 fallback was served. */
|
|
1675
|
+
census_fallback_reason: string | null;
|
|
1676
|
+
note: string;
|
|
1677
|
+
}
|
|
1678
|
+
/** `GET /tokens/{mint}/holders` — live holder census + concentration for a
|
|
1679
|
+
* Solana mint, read from the ledger at `confirmed` (who holds NOW, as opposed
|
|
1680
|
+
* to `capTable`, which is who bought first). */
|
|
1681
|
+
export interface TokenHoldersResponse {
|
|
1682
|
+
mint: string;
|
|
1683
|
+
/** Ledger slot the holder set was read at. */
|
|
1684
|
+
slot: number;
|
|
1685
|
+
as_of: string;
|
|
1686
|
+
/** Disclosed ranks: PRO 1–10, ULTRA 1–50, BUSINESS 1–100 (≤20 on the fallback). */
|
|
1687
|
+
holders: TokenHolder[];
|
|
1688
|
+
count: number;
|
|
1689
|
+
/** Rank cap for your tier: 10 PRO, 50 ULTRA, 100 BUSINESS. */
|
|
1690
|
+
disclosed: number;
|
|
1691
|
+
/** Pools / bonding curves / burns / unattributed program accounts — excluded
|
|
1692
|
+
* from the circulating denominator, named where possible. */
|
|
1693
|
+
excluded: TokenHoldersExcluded[];
|
|
1694
|
+
concentration: TokenHoldersConcentration;
|
|
1695
|
+
deployer: TokenHoldersDeployer | null;
|
|
1696
|
+
source: TokenHoldersSource;
|
|
1697
|
+
}
|
|
1698
|
+
/** Locker program a contract lives under. LP locks are NOT covered (token / vesting locks only). */
|
|
1699
|
+
export type TokenLockProgram = "streamflow" | "jupiter_lock" | "bonfida_vesting";
|
|
1700
|
+
/** `lock` = whole amount released at one date; `vesting` = cliff and/or periodic release. */
|
|
1701
|
+
export type TokenLockKind = "lock" | "vesting";
|
|
1702
|
+
/** Contract status, derived at request time from the on-chain schedule + withdrawn/cancelled state. */
|
|
1703
|
+
export type TokenLockStatus = "active" | "completed" | "cancelled" | "closed";
|
|
1704
|
+
/** Kind of unlock event: `cliff`, periodic `period`, the `final` release, or a Bonfida `tranche`. */
|
|
1705
|
+
export type TokenUnlockEventKind = "cliff" | "period" | "final" | "tranche";
|
|
1706
|
+
/** Mint facts joined to a lock row / unlock event. All null when unknown (`facts_resolved`). */
|
|
1707
|
+
export interface TokenLockToken {
|
|
1708
|
+
symbol: string | null;
|
|
1709
|
+
name: string | null;
|
|
1710
|
+
decimals: number | null;
|
|
1711
|
+
price_usd: number | null;
|
|
1712
|
+
market_cap_usd: number | null;
|
|
1713
|
+
}
|
|
1714
|
+
/** The next unlock event of a single contract. `amount_raw` is a base-unit STRING. */
|
|
1715
|
+
export interface TokenLockNextUnlock {
|
|
1716
|
+
at: string;
|
|
1717
|
+
kind: TokenUnlockEventKind;
|
|
1718
|
+
amount_raw: string;
|
|
1719
|
+
amount: number | null;
|
|
1720
|
+
amount_usd: number | null;
|
|
1721
|
+
}
|
|
1722
|
+
/**
|
|
1723
|
+
* One on-chain lock / vesting contract with a LIVE-derived view (computed at
|
|
1724
|
+
* request time). `*_raw` = base units as decimal STRINGS — never floats; the
|
|
1725
|
+
* ui (`amount`, `locked`, …), `*_usd` and `*_pct_of_supply` fields are null when
|
|
1726
|
+
* decimals / price are unknown.
|
|
1727
|
+
*/
|
|
1728
|
+
export interface TokenLock {
|
|
1729
|
+
/** The contract account (Streamflow stream / Jupiter VestingEscrow / Bonfida vesting account). */
|
|
1730
|
+
lock_account: string;
|
|
1731
|
+
program: TokenLockProgram;
|
|
1732
|
+
kind: TokenLockKind;
|
|
1733
|
+
status: TokenLockStatus;
|
|
1734
|
+
mint: string;
|
|
1735
|
+
/** Creator / locker. Bonfida has none on-chain. */
|
|
1736
|
+
sender: string | null;
|
|
1737
|
+
recipient: string | null;
|
|
1738
|
+
name: string | null;
|
|
1739
|
+
/** Deposited amount. */
|
|
1740
|
+
amount_raw: string;
|
|
1741
|
+
amount: number | null;
|
|
1742
|
+
amount_usd: number | null;
|
|
1743
|
+
amount_pct_of_supply: number | null;
|
|
1744
|
+
/** Still locked right now (amount − unlocked-so-far); "0" unless active. */
|
|
1745
|
+
locked_raw: string;
|
|
1746
|
+
locked: number | null;
|
|
1747
|
+
locked_usd: number | null;
|
|
1748
|
+
locked_pct_of_supply: number | null;
|
|
1749
|
+
unlocked_raw: string;
|
|
1750
|
+
unlocked: number | null;
|
|
1751
|
+
/** Claimed so far. */
|
|
1752
|
+
withdrawn_raw: string;
|
|
1753
|
+
withdrawn: number | null;
|
|
1754
|
+
/** Unlocked but not yet withdrawn. */
|
|
1755
|
+
claimable_raw: string;
|
|
1756
|
+
claimable: number | null;
|
|
1757
|
+
start_at: string | null;
|
|
1758
|
+
cliff_at: string | null;
|
|
1759
|
+
/** Fully unlocked at; null = perpetual / no schedule. */
|
|
1760
|
+
end_at: string | null;
|
|
1761
|
+
period_seconds: number | null;
|
|
1762
|
+
/** period < 1h (per-second stream, e.g. Streamflow payroll). */
|
|
1763
|
+
continuous: boolean;
|
|
1764
|
+
amount_per_period_raw: string | null;
|
|
1765
|
+
amount_per_period: number | null;
|
|
1766
|
+
cliff_amount_raw: string | null;
|
|
1767
|
+
cliff_amount: number | null;
|
|
1768
|
+
perpetual: boolean;
|
|
1769
|
+
next_unlock: TokenLockNextUnlock | null;
|
|
1770
|
+
/** The locker can cancel — funds are locked against the RECIPIENT, not the locker (a weaker promise). */
|
|
1771
|
+
cancelable_by_sender: boolean | null;
|
|
1772
|
+
cancelable_by_recipient: boolean | null;
|
|
1773
|
+
transferable: boolean | null;
|
|
1774
|
+
can_topup: boolean | null;
|
|
1775
|
+
cancelled_at: string | null;
|
|
1776
|
+
created_at: string | null;
|
|
1777
|
+
/** Backfilled row with no on-chain creation time (Jupiter Lock). */
|
|
1778
|
+
created_at_estimated: boolean;
|
|
1779
|
+
tx_signature: string | null;
|
|
1780
|
+
}
|
|
1781
|
+
/** A lock row on the cross-token feed — the contract plus its mint's facts. */
|
|
1782
|
+
export interface TokenLockFeedEntry extends TokenLock {
|
|
1783
|
+
token: TokenLockToken;
|
|
1784
|
+
}
|
|
1785
|
+
/** Rollup over ALL contracts on a mint (the `status` / `program` filters only narrow `locks[]`). */
|
|
1786
|
+
export interface TokenLocksSummary {
|
|
1787
|
+
/** Exact count of contracts on the mint. */
|
|
1788
|
+
lock_count: number;
|
|
1789
|
+
/** false when the mint holds more than 5000 contracts — totals then cover the newest 5000 (`rows_considered`). */
|
|
1790
|
+
complete: boolean;
|
|
1791
|
+
rows_considered: number;
|
|
1792
|
+
active_count: number;
|
|
1793
|
+
by_program: Record<string, number>;
|
|
1794
|
+
by_kind: Record<string, number>;
|
|
1795
|
+
distinct_lockers: number;
|
|
1796
|
+
locked_raw: string;
|
|
1797
|
+
locked: number | null;
|
|
1798
|
+
locked_usd: number | null;
|
|
1799
|
+
locked_pct_of_supply: number | null;
|
|
1800
|
+
deposited_raw: string;
|
|
1801
|
+
deposited: number | null;
|
|
1802
|
+
deposited_usd: number | null;
|
|
1803
|
+
/** Forward unlock schedule — everything releasing in the next 7 / 30 days. */
|
|
1804
|
+
unlocking_7d_raw: string;
|
|
1805
|
+
unlocking_7d: number | null;
|
|
1806
|
+
unlocking_7d_usd: number | null;
|
|
1807
|
+
unlocking_7d_pct_of_supply: number | null;
|
|
1808
|
+
unlocking_30d_raw: string;
|
|
1809
|
+
unlocking_30d: number | null;
|
|
1810
|
+
unlocking_30d_usd: number | null;
|
|
1811
|
+
unlocking_30d_pct_of_supply: number | null;
|
|
1812
|
+
/** Nearest next unlock across all active contracts. */
|
|
1813
|
+
next_unlock: (TokenLockNextUnlock & {
|
|
1814
|
+
lock_account: string;
|
|
1815
|
+
}) | null;
|
|
1816
|
+
/** Active contracts the sender can still cancel (pull the funds back). */
|
|
1817
|
+
active_cancelable_by_sender: number;
|
|
1818
|
+
}
|
|
1819
|
+
/** Query params for GET /tokens/{mint}/locks. */
|
|
1820
|
+
export interface TokenLocksParams {
|
|
1821
|
+
/** Filter the list (the summary always covers all rows). */
|
|
1822
|
+
status?: TokenLockStatus;
|
|
1823
|
+
program?: TokenLockProgram;
|
|
1824
|
+
/** 1–500, default 200. */
|
|
1825
|
+
limit?: number;
|
|
1826
|
+
}
|
|
1827
|
+
/**
|
|
1828
|
+
* GET /tokens/{mint}/locks — every on-chain lock / vesting contract on a mint
|
|
1829
|
+
* (Streamflow, Jupiter Lock, Bonfida vesting) with a live-derived view + summary.
|
|
1830
|
+
* **LP locks are NOT included** (token / vesting locks only). PRO+, keyed only.
|
|
1831
|
+
*/
|
|
1832
|
+
export interface TokenLocksResponse {
|
|
1833
|
+
mint: string;
|
|
1834
|
+
token: TokenLockToken & {
|
|
1835
|
+
supply: number | null;
|
|
1836
|
+
facts_resolved: boolean;
|
|
1837
|
+
};
|
|
1838
|
+
summary: TokenLocksSummary;
|
|
1839
|
+
locks: TokenLock[];
|
|
1840
|
+
meta?: Record<string, unknown>;
|
|
1841
|
+
}
|
|
1842
|
+
/** Query params for GET /tokens/locks (cross-token feed of NEW contracts). */
|
|
1843
|
+
export interface TokenLocksFeedParams {
|
|
1844
|
+
/** ISO date-time — only contracts created after this instant (use `pagination.next_since`). */
|
|
1845
|
+
since?: string;
|
|
1846
|
+
/** ISO date-time — page back: only contracts created before this instant (`pagination.next_before`). */
|
|
1847
|
+
before?: string;
|
|
1848
|
+
mint?: string;
|
|
1849
|
+
sender?: string;
|
|
1850
|
+
recipient?: string;
|
|
1851
|
+
program?: TokenLockProgram;
|
|
1852
|
+
kind?: TokenLockKind;
|
|
1853
|
+
status?: TokenLockStatus;
|
|
1854
|
+
/** Deposited amount in USD ≥ (needs a known price; post-filter). */
|
|
1855
|
+
min_usd?: number;
|
|
1856
|
+
/** 0–100 (post-filter). */
|
|
1857
|
+
min_pct_of_supply?: number;
|
|
1858
|
+
/** Include backfilled Jupiter Lock rows that have no on-chain creation time (default: excluded). */
|
|
1859
|
+
include_estimated?: boolean;
|
|
1860
|
+
/** 1–100, default 50. */
|
|
1861
|
+
limit?: number;
|
|
1862
|
+
}
|
|
1863
|
+
/** Cursor pagination on the ISO-timestamp feeds. */
|
|
1864
|
+
export interface TokenFeedPagination {
|
|
1865
|
+
limit: number;
|
|
1866
|
+
count: number;
|
|
1867
|
+
has_more: boolean;
|
|
1868
|
+
/** Pass as `since` to fetch only what is newer. */
|
|
1869
|
+
next_since: string | null;
|
|
1870
|
+
/** Pass as `before` to page back. */
|
|
1871
|
+
next_before: string | null;
|
|
1872
|
+
}
|
|
1873
|
+
/** WebSocket pointer returned by the feed endpoints — the same rows are pushed live on `channel`. */
|
|
1874
|
+
export interface TokenFeedStreamPointer {
|
|
1875
|
+
channel: string;
|
|
1876
|
+
url: string;
|
|
1877
|
+
token_endpoint?: string;
|
|
1878
|
+
subscribe?: {
|
|
1879
|
+
type: "subscribe";
|
|
1880
|
+
channels: string[];
|
|
1881
|
+
};
|
|
1882
|
+
note?: string;
|
|
1883
|
+
}
|
|
1884
|
+
/** GET /tokens/locks — newest lock / vesting contracts across all mints. PRO+, keyed only. */
|
|
1885
|
+
export interface TokenLocksFeedResponse {
|
|
1886
|
+
locks: TokenLockFeedEntry[];
|
|
1887
|
+
pagination: TokenFeedPagination;
|
|
1888
|
+
/** Pointer to the `token:locks` WS channel (event `token:lock`). */
|
|
1889
|
+
stream: TokenFeedStreamPointer;
|
|
1890
|
+
meta?: Record<string, unknown>;
|
|
1891
|
+
}
|
|
1892
|
+
/** Look-ahead window for GET /tokens/unlocks. */
|
|
1893
|
+
export type TokenUnlocksWithin = "1h" | "6h" | "24h" | "3d" | "7d" | "14d" | "30d" | "90d";
|
|
1894
|
+
/** Query params for GET /tokens/unlocks. */
|
|
1895
|
+
export interface TokenUnlocksParams {
|
|
1896
|
+
/** Default "7d". */
|
|
1897
|
+
within?: TokenUnlocksWithin;
|
|
1898
|
+
mint?: string;
|
|
1899
|
+
program?: TokenLockProgram;
|
|
1900
|
+
kind?: TokenLockKind;
|
|
1901
|
+
/** Next-event amount in USD ≥ (needs a known price). */
|
|
1902
|
+
min_usd?: number;
|
|
1903
|
+
/** 0–100. */
|
|
1904
|
+
min_pct_of_supply?: number;
|
|
1905
|
+
/** Default "soonest". */
|
|
1906
|
+
sort?: "soonest" | "largest_usd" | "largest_pct";
|
|
1907
|
+
/** 1–200, default 50. */
|
|
1908
|
+
limit?: number;
|
|
1909
|
+
}
|
|
1910
|
+
/**
|
|
1911
|
+
* One upcoming unlock — the NEXT event of an active contract inside the window,
|
|
1912
|
+
* plus that contract's total release over the whole window (`window_amount_*`).
|
|
1913
|
+
*/
|
|
1914
|
+
export interface TokenUnlockEvent {
|
|
1915
|
+
unlock_at: string;
|
|
1916
|
+
in_seconds: number;
|
|
1917
|
+
event: TokenUnlockEventKind;
|
|
1918
|
+
amount_raw: string;
|
|
1919
|
+
amount: number | null;
|
|
1920
|
+
amount_usd: number | null;
|
|
1921
|
+
amount_pct_of_supply: number | null;
|
|
1922
|
+
window_amount_raw: string;
|
|
1923
|
+
window_amount: number | null;
|
|
1924
|
+
window_amount_usd: number | null;
|
|
1925
|
+
window_amount_pct_of_supply: number | null;
|
|
1926
|
+
mint: string;
|
|
1927
|
+
token: TokenLockToken;
|
|
1928
|
+
/** The contract this event belongs to (a subset of the {@link TokenLock} row). */
|
|
1929
|
+
lock: Pick<TokenLock, "lock_account" | "program" | "kind" | "name" | "sender" | "recipient" | "amount_raw" | "amount" | "amount_usd" | "locked_raw" | "locked" | "locked_usd" | "cliff_at" | "end_at" | "period_seconds" | "continuous" | "cancelable_by_sender">;
|
|
1930
|
+
}
|
|
1931
|
+
/** GET /tokens/unlocks — upcoming unlock events across all active contracts. PRO+, keyed only. */
|
|
1932
|
+
export interface TokenUnlocksResponse {
|
|
1933
|
+
window: {
|
|
1934
|
+
within: TokenUnlocksWithin;
|
|
1935
|
+
from: string;
|
|
1936
|
+
to: string;
|
|
1937
|
+
};
|
|
1938
|
+
unlocks: TokenUnlockEvent[];
|
|
1939
|
+
pagination: {
|
|
1940
|
+
limit: number;
|
|
1941
|
+
count: number;
|
|
1942
|
+
total_in_window: number;
|
|
1943
|
+
has_more: boolean;
|
|
1944
|
+
};
|
|
1945
|
+
meta?: Record<string, unknown>;
|
|
1946
|
+
}
|
|
1947
|
+
/**
|
|
1948
|
+
* Payload of a `token:lock` WS event (channel `token:locks`) — pushed by the
|
|
1949
|
+
* lock-tracker the moment a NEW contract's account is first seen (~seconds after
|
|
1950
|
+
* the create tx). A compact writer payload, NOT the full live-derived REST row:
|
|
1951
|
+
* poll GET /tokens/{mint}/locks for the live state. Updates (claims / cancels /
|
|
1952
|
+
* closes) are NOT pushed.
|
|
1953
|
+
*/
|
|
1954
|
+
export interface TokenLockStreamEvent {
|
|
1955
|
+
lock_account: string;
|
|
1956
|
+
program: TokenLockProgram;
|
|
1957
|
+
mint: string;
|
|
1958
|
+
kind: TokenLockKind;
|
|
1959
|
+
sender: string | null;
|
|
1960
|
+
recipient: string | null;
|
|
1961
|
+
/** Base-unit STRING. */
|
|
1962
|
+
amount_raw: string;
|
|
1963
|
+
/** May be null on the very first sighting of a mint. */
|
|
1964
|
+
decimals: number | null;
|
|
1965
|
+
start_at: string | null;
|
|
1966
|
+
cliff_at: string | null;
|
|
1967
|
+
end_at: string | null;
|
|
1968
|
+
name: string | null;
|
|
1969
|
+
tx_signature: string | null;
|
|
1970
|
+
slot: number | null;
|
|
1971
|
+
created_at: string;
|
|
1972
|
+
}
|
|
1973
|
+
/** pump.fun fee event types (`creator_claim` is excluded from the feed unless requested via `type=`). */
|
|
1974
|
+
export type TokenFeeEventType = "shares_created" | "shares_updated" | "shares_reset" | "distribution" | "social_pda_created" | "social_claim" | "creator_transferred" | "creator_claim";
|
|
1975
|
+
/** A shareholder on a SharingConfig: `{ address, share_bps }` (bps of the creator fee). */
|
|
1976
|
+
export interface TokenFeeShareEntry {
|
|
1977
|
+
address: string;
|
|
1978
|
+
share_bps: number;
|
|
1979
|
+
}
|
|
1980
|
+
/**
|
|
1981
|
+
* A pump_fees SocialFeePda — fees earmarked for a platform identity (platform 2 = X;
|
|
1982
|
+
* `user_id` is the platform-native numeric id, NOT the handle) until the identity's
|
|
1983
|
+
* owner claims them.
|
|
1984
|
+
*/
|
|
1985
|
+
export interface TokenFeeSocialIdentity {
|
|
1986
|
+
platform: number;
|
|
1987
|
+
/** "x" for platform 2; `platform_<n>` for platforms not yet observed. */
|
|
1988
|
+
platform_label: string | null;
|
|
1989
|
+
user_id: string;
|
|
1990
|
+
/** Base-unit STRING (quote lamports). */
|
|
1991
|
+
lifetime_claimed_raw: string;
|
|
1992
|
+
lifetime_claimed: number | null;
|
|
1993
|
+
lifetime_claimed_usd: number | null;
|
|
1994
|
+
last_claimed_at: string | null;
|
|
1995
|
+
}
|
|
1996
|
+
/** One shareholder / recipient of a coin's creator fees, with what it has received so far. */
|
|
1997
|
+
export interface TokenFeeShareholder {
|
|
1998
|
+
address: string;
|
|
1999
|
+
/** null for a past recipient no longer in the split. */
|
|
2000
|
+
share_bps: number | null;
|
|
2001
|
+
share_pct: number | null;
|
|
2002
|
+
/** The config admin (normally the coin creator). */
|
|
2003
|
+
is_admin: boolean;
|
|
2004
|
+
/** Address is a pump_fees SocialFeePda — fees earmarked for a platform identity. */
|
|
2005
|
+
is_social_pda: boolean;
|
|
2006
|
+
social: TokenFeeSocialIdentity | null;
|
|
2007
|
+
/** Total received via distributions since 2026-08-17 — base-unit STRING. */
|
|
2008
|
+
received_raw: string;
|
|
2009
|
+
received: number | null;
|
|
2010
|
+
received_usd: number | null;
|
|
2011
|
+
payout_count: number;
|
|
2012
|
+
last_payout_at: string | null;
|
|
2013
|
+
}
|
|
2014
|
+
/** The on-chain SharingConfig of a pump.fun coin (pump_fees PDA ["sharing-config", mint]). */
|
|
2015
|
+
export interface TokenFeeSharingConfig {
|
|
2016
|
+
sharing_config: string;
|
|
2017
|
+
admin: string | null;
|
|
2018
|
+
admin_revoked: boolean | null;
|
|
2019
|
+
status: string | null;
|
|
2020
|
+
version: number | null;
|
|
2021
|
+
/** true = 100% to the admin, no redirect (pump creates one per coin — a real answer, not "unknown"). */
|
|
2022
|
+
is_default: boolean | null;
|
|
2023
|
+
/** Share going to NON-admin addresses. */
|
|
2024
|
+
redirected_bps: number;
|
|
2025
|
+
redirected_pct: number;
|
|
2026
|
+
/** Share going to social PDAs. */
|
|
2027
|
+
social_bps: number;
|
|
2028
|
+
social_pct: number;
|
|
2029
|
+
shareholders: TokenFeeShareholder[];
|
|
2030
|
+
/** `stream` = our table (only non-default configs are stored); `chain` = live PDA read. */
|
|
2031
|
+
source: "stream" | "chain";
|
|
2032
|
+
updated_at: string | null;
|
|
2033
|
+
}
|
|
2034
|
+
/** Config change / creator transfer on the fee-shares history log. */
|
|
2035
|
+
export interface TokenFeeShareHistoryEntry {
|
|
2036
|
+
id: number;
|
|
2037
|
+
type: TokenFeeEventType;
|
|
2038
|
+
at: string;
|
|
2039
|
+
tx_signature: string;
|
|
2040
|
+
actor: string | null;
|
|
2041
|
+
admin: string | null;
|
|
2042
|
+
recipient: string | null;
|
|
2043
|
+
shareholders: TokenFeeShareEntry[] | null;
|
|
2044
|
+
amount_raw: string | null;
|
|
2045
|
+
amount: number | null;
|
|
2046
|
+
social: {
|
|
2047
|
+
platform: number;
|
|
2048
|
+
platform_label: string | null;
|
|
2049
|
+
user_id: string;
|
|
2050
|
+
pda: string | null;
|
|
2051
|
+
} | null;
|
|
2052
|
+
/** Full decoded Anchor event. */
|
|
2053
|
+
payload: Record<string, unknown> | null;
|
|
2054
|
+
}
|
|
2055
|
+
/** One `distribute_creator_fees` payout on the fee-shares view. */
|
|
2056
|
+
export interface TokenFeeDistribution {
|
|
2057
|
+
at: string;
|
|
2058
|
+
tx_signature: string;
|
|
2059
|
+
amount_raw: string;
|
|
2060
|
+
amount: number | null;
|
|
2061
|
+
amount_usd: number | null;
|
|
2062
|
+
shareholders: TokenFeeShareEntry[] | null;
|
|
2063
|
+
actor: string | null;
|
|
2064
|
+
}
|
|
2065
|
+
/**
|
|
2066
|
+
* GET /tokens/{mint}/fee-shares — pump.fun creator-fee sharing on a coin: who the
|
|
2067
|
+
* fees are redirected to (SharingConfig), the distribution rollup per recipient,
|
|
2068
|
+
* the config change log and recent payouts. **Event history starts 2026-08-17.**
|
|
2069
|
+
* PRO+, keyed only.
|
|
2070
|
+
*/
|
|
2071
|
+
export interface TokenFeeSharesResponse {
|
|
2072
|
+
mint: string;
|
|
2073
|
+
/** null when the live read failed on every RPC endpoint (see `config_error`). */
|
|
2074
|
+
config: TokenFeeSharingConfig | null;
|
|
2075
|
+
config_pda: string;
|
|
2076
|
+
config_error: string | null;
|
|
2077
|
+
/** Quote asset the fees are paid in (SOL unless a stable-quoted coin). */
|
|
2078
|
+
quote: {
|
|
2079
|
+
symbol: string;
|
|
2080
|
+
decimals: number;
|
|
2081
|
+
sol_usd: number | null;
|
|
2082
|
+
};
|
|
2083
|
+
distributions: {
|
|
2084
|
+
count: number;
|
|
2085
|
+
total_raw: string;
|
|
2086
|
+
total: number | null;
|
|
2087
|
+
total_usd: number | null;
|
|
2088
|
+
last_at: string | null;
|
|
2089
|
+
/** Everyone who received a payout (current + past shareholders), largest first. */
|
|
2090
|
+
recipients: TokenFeeShareholder[];
|
|
2091
|
+
/** Recipients no longer in the split. */
|
|
2092
|
+
past_recipients: TokenFeeShareholder[];
|
|
2093
|
+
payouts_considered: number;
|
|
2094
|
+
payouts_truncated: boolean;
|
|
2095
|
+
};
|
|
2096
|
+
/** Config changes + creator transfers, newest first (max 100). */
|
|
2097
|
+
history: TokenFeeShareHistoryEntry[];
|
|
2098
|
+
recent_distributions: TokenFeeDistribution[];
|
|
2099
|
+
meta?: Record<string, unknown>;
|
|
2100
|
+
}
|
|
2101
|
+
/** Query params for GET /tokens/fee-claims. */
|
|
2102
|
+
export interface TokenFeeClaimsParams {
|
|
2103
|
+
/** Comma list of {@link TokenFeeEventType} (default: all except `creator_claim`). */
|
|
2104
|
+
type?: string;
|
|
2105
|
+
mint?: string;
|
|
2106
|
+
/** Payout / claim recipient wallet, or the new creator. */
|
|
2107
|
+
recipient?: string;
|
|
2108
|
+
/** Transaction signer. */
|
|
2109
|
+
actor?: string;
|
|
2110
|
+
/** Raw platform id (2 = X). */
|
|
2111
|
+
social_platform?: number;
|
|
2112
|
+
/** Platform-native numeric user id. */
|
|
2113
|
+
social_user_id?: string;
|
|
2114
|
+
/** Amount floor in SOL. */
|
|
2115
|
+
min_sol?: number;
|
|
2116
|
+
/** ISO date-time (use `pagination.next_since`). */
|
|
2117
|
+
since?: string;
|
|
2118
|
+
/** ISO date-time (use `pagination.next_before`). */
|
|
2119
|
+
before?: string;
|
|
2120
|
+
/** 1–100, default 50. */
|
|
2121
|
+
limit?: number;
|
|
2122
|
+
}
|
|
2123
|
+
/** Pro-rata payout to one shareholder inside a `distribution` event. */
|
|
2124
|
+
export interface TokenFeePayout {
|
|
2125
|
+
address: string;
|
|
2126
|
+
share_bps: number;
|
|
2127
|
+
amount_raw: string;
|
|
2128
|
+
amount: number | null;
|
|
2129
|
+
amount_usd: number | null;
|
|
2130
|
+
}
|
|
2131
|
+
/** One decoded pump.fun fee event on the feed. Amounts are quote base units (SOL lamports unless a stable-quoted coin) as STRINGS. */
|
|
2132
|
+
export interface TokenFeeClaimEvent {
|
|
2133
|
+
id: number;
|
|
2134
|
+
type: TokenFeeEventType;
|
|
2135
|
+
at: string;
|
|
2136
|
+
tx_signature: string;
|
|
2137
|
+
slot: number | null;
|
|
2138
|
+
/** null for social claims and creator vault claims (per identity / per creator). */
|
|
2139
|
+
mint: string | null;
|
|
2140
|
+
admin: string | null;
|
|
2141
|
+
/** Transaction signer. */
|
|
2142
|
+
actor: string | null;
|
|
2143
|
+
recipient: string | null;
|
|
2144
|
+
amount_raw: string | null;
|
|
2145
|
+
amount: number | null;
|
|
2146
|
+
amount_usd: number | null;
|
|
2147
|
+
/** Quote symbol, e.g. "SOL". */
|
|
2148
|
+
quote: string;
|
|
2149
|
+
social: {
|
|
2150
|
+
platform: number;
|
|
2151
|
+
platform_label: string | null;
|
|
2152
|
+
user_id: string;
|
|
2153
|
+
pda: string | null;
|
|
2154
|
+
} | null;
|
|
2155
|
+
shareholders: TokenFeeShareEntry[] | null;
|
|
2156
|
+
/** `distribution` only: pro-rata amount per shareholder. */
|
|
2157
|
+
payouts: TokenFeePayout[] | null;
|
|
2158
|
+
/** Full decoded Anchor event. */
|
|
2159
|
+
payload: Record<string, unknown> | null;
|
|
2160
|
+
}
|
|
2161
|
+
/** GET /tokens/fee-claims — pump.fun fee-event feed, newest first. **History starts 2026-08-17.** PRO+, keyed only. */
|
|
2162
|
+
export interface TokenFeeClaimsResponse {
|
|
2163
|
+
events: TokenFeeClaimEvent[];
|
|
2164
|
+
pagination: TokenFeedPagination;
|
|
2165
|
+
/** Pointer to the `token:fee_claims` WS channel (event `token:fee_claim`). */
|
|
2166
|
+
stream: TokenFeedStreamPointer;
|
|
2167
|
+
meta?: Record<string, unknown>;
|
|
2168
|
+
}
|
|
2169
|
+
/**
|
|
2170
|
+
* Payload of a `token:fee_claim` WS event (channel `token:fee_claims`) — pushed by
|
|
2171
|
+
* the fee-claim-tracker the moment the tx confirms. A compact writer payload (flat
|
|
2172
|
+
* `event_type` / `block_time` / `social_*` fields), NOT the enriched REST row —
|
|
2173
|
+
* no ui / usd amounts or `payouts[]`; call GET /tokens/fee-claims for those.
|
|
2174
|
+
*/
|
|
2175
|
+
export interface TokenFeeClaimStreamEvent {
|
|
2176
|
+
id: number;
|
|
2177
|
+
event_type: TokenFeeEventType;
|
|
2178
|
+
tx_signature: string;
|
|
2179
|
+
slot: number | null;
|
|
2180
|
+
/** The event's own on-chain timestamp. */
|
|
2181
|
+
block_time: string;
|
|
2182
|
+
/** null for social claims and creator vault claims. */
|
|
2183
|
+
mint: string | null;
|
|
2184
|
+
sharing_config: string | null;
|
|
2185
|
+
admin: string | null;
|
|
2186
|
+
actor: string | null;
|
|
2187
|
+
recipient: string | null;
|
|
2188
|
+
/** Quote base units as a STRING (SOL lamports unless a stable-quoted coin). */
|
|
2189
|
+
amount_raw: string | null;
|
|
2190
|
+
quote_mint: string | null;
|
|
2191
|
+
social_platform: number | null;
|
|
2192
|
+
social_user_id: string | null;
|
|
2193
|
+
social_fee_pda: string | null;
|
|
2194
|
+
shareholders: TokenFeeShareEntry[] | null;
|
|
2195
|
+
}
|
|
1564
2196
|
export type CandleTimeframe = "1m" | "5m" | "15m" | "1h" | "4h" | "1d";
|
|
1565
2197
|
export interface CandlesParams {
|
|
1566
2198
|
/** Bar size. Default "1h". */
|
|
@@ -2830,6 +3462,40 @@ declare class AlphaClient {
|
|
|
2830
3462
|
* ≤10000; default 0.5,1,5,10).
|
|
2831
3463
|
*/
|
|
2832
3464
|
tokenDepth(mint: string, params?: TokenDepthParams): Promise<TokenDepthResponse>;
|
|
3465
|
+
/**
|
|
3466
|
+
* v2.24 — Live holders, holder count + concentration for a Solana mint
|
|
3467
|
+
* (`GET /tokens/{mint}/holders`): a full holder census read from the ledger
|
|
3468
|
+
* at `confirmed` (every token account of the mint, owner + balance, merged
|
|
3469
|
+
* per owner) — who holds NOW, as opposed to `capTable` (who bought first).
|
|
3470
|
+
*
|
|
3471
|
+
* Hard truths the payload states rather than hides:
|
|
3472
|
+
* - `amount_raw` (holders and excluded) is a raw u64 **string** — never a
|
|
3473
|
+
* float; use `BigInt()`. `amount` is the UI-scaled convenience number.
|
|
3474
|
+
* - `concentration.holder_count` is EXACT (distinct non-zero owners minus
|
|
3475
|
+
* excluded pools/curves/burns) and null ONLY when the provider refused the
|
|
3476
|
+
* census for a mega-cap mint — then `source.method` is
|
|
3477
|
+
* `"getTokenLargestAccounts"` (top-20 view) with `census_fallback_reason`
|
|
3478
|
+
* set. It is never estimated from trades.
|
|
3479
|
+
* - Pools, bonding curves, burns and unattributed program accounts are
|
|
3480
|
+
* EXCLUDED from the circulating denominator and listed in `excluded[]`,
|
|
3481
|
+
* each NAMED where we can (`pool` + `dex` + `pool_address`,
|
|
3482
|
+
* `bonding_curve` for pump.fun/LaunchLab, `burn`, else `program_account`).
|
|
3483
|
+
* The #1 raw account of a fresh memecoin is its own bonding curve.
|
|
3484
|
+
* - Disclosure is tier-gated (**PRO** ranks 1–10, **ULTRA** 1–50,
|
|
3485
|
+
* **BUSINESS** 1–100); the concentration maths is tier-independent.
|
|
3486
|
+
* - `labels[]` are from MadeOnSol data — empty means unknown to us, not clean.
|
|
3487
|
+
*
|
|
3488
|
+
* Latency: fresh pump.fun mints <1 s; 200k–550k-account tokens 6–11 s. If the
|
|
3489
|
+
* upstream scan is still running the API answers **503** with
|
|
3490
|
+
* `error_kind: "holder_scan_in_progress"` and `retry_after_seconds: 20` —
|
|
3491
|
+
* the scan continues and is cached, so the retry is instant. `503`
|
|
3492
|
+
* `holder_rpc_unavailable` (`retry_after_seconds: 15`) means fail-closed.
|
|
3493
|
+
* Both surface as a `MadeOnSolError` with `status === 503`; read
|
|
3494
|
+
* `error.body.error_kind` / `error.body.retry_after_seconds`. Unknown mint:
|
|
3495
|
+
* 404 `error_kind: "not_a_mint"`. **PRO+** — BASIC receives HTTP 403.
|
|
3496
|
+
* @param mint Token mint address.
|
|
3497
|
+
*/
|
|
3498
|
+
holders(mint: string): Promise<TokenHoldersResponse>;
|
|
2833
3499
|
}
|
|
2834
3500
|
declare class TokenClient {
|
|
2835
3501
|
private readonly _fetch;
|
|
@@ -2937,6 +3603,128 @@ declare class TokenClient {
|
|
|
2937
3603
|
* and at 1h/6h/24h/7d after bond.
|
|
2938
3604
|
*/
|
|
2939
3605
|
peakHistory(mint: string): Promise<PeakHistoryResponse>;
|
|
3606
|
+
/**
|
|
3607
|
+
* v2.25 — Token locks & vesting on a mint (`GET /tokens/{mint}/locks`): every
|
|
3608
|
+
* on-chain Streamflow stream, Jupiter Lock vesting escrow and Bonfida
|
|
3609
|
+
* token-vesting contract, decoded from the locker programs' account state.
|
|
3610
|
+
* Each row carries the schedule (start / cliff / period / end, cliff and
|
|
3611
|
+
* per-period amounts), the terms (`cancelable_by_sender` — funds are locked
|
|
3612
|
+
* against the RECIPIENT, not the locker; `transferable`, `can_topup`) and a
|
|
3613
|
+
* LIVE-derived view computed at request time: `locked_raw` (still locked),
|
|
3614
|
+
* `unlocked`, `withdrawn`, `claimable`, `status`, `next_unlock`. `summary`
|
|
3615
|
+
* rolls up locked / deposited totals (raw + ui + usd + % of supply), the
|
|
3616
|
+
* 7d / 30d forward unlock schedule, the nearest `next_unlock` and
|
|
3617
|
+
* `active_cancelable_by_sender`. Answers "did the team lock, how much, until
|
|
3618
|
+
* when, and can they pull it".
|
|
3619
|
+
*
|
|
3620
|
+
* - `*_raw` amounts are base-unit **strings** (use `BigInt()`); ui / usd / pct
|
|
3621
|
+
* fields are `null` when decimals or price are unknown (`token.facts_resolved`).
|
|
3622
|
+
* - **LP locks are NOT included** — token / vesting locks only.
|
|
3623
|
+
* - `status` / `program` narrow `locks[]` only; `summary` always covers all rows.
|
|
3624
|
+
*
|
|
3625
|
+
* **PRO+** — BASIC receives HTTP 403. Keyed (`msk_`) API only.
|
|
3626
|
+
* @param mint Token mint address (base58).
|
|
3627
|
+
* @example
|
|
3628
|
+
* ```ts
|
|
3629
|
+
* const { summary, locks } = await client.token.locks(mint, { status: "active" });
|
|
3630
|
+
* console.log(`${summary.locked_pct_of_supply}% of supply locked, ${summary.unlocking_7d_usd} USD unlocking in 7d`);
|
|
3631
|
+
* console.log(`${summary.active_cancelable_by_sender} active locks the locker can still cancel`);
|
|
3632
|
+
* ```
|
|
3633
|
+
*/
|
|
3634
|
+
locks(mint: string, params?: TokenLocksParams): Promise<TokenLocksResponse>;
|
|
3635
|
+
/**
|
|
3636
|
+
* v2.25 — Cross-token feed of NEW lock / vesting contracts, newest first
|
|
3637
|
+
* (`GET /tokens/locks`): who just locked tokens, of what mint, how much,
|
|
3638
|
+
* until when — Streamflow, Jupiter Lock and Bonfida vesting. Each row is the
|
|
3639
|
+
* same live-derived contract as `locks()` plus `token` (symbol, decimals,
|
|
3640
|
+
* price, MC). Poll incrementally with `since = pagination.next_since`, page
|
|
3641
|
+
* back with `before = pagination.next_before`, or subscribe to the
|
|
3642
|
+
* **`token:locks`** WS channel (event `token:lock`) for a push the moment the
|
|
3643
|
+
* contract lands on-chain. `min_usd` / `min_pct_of_supply` / `status`
|
|
3644
|
+
* post-filter (×4 over-fetch — a page may be shorter than `limit`).
|
|
3645
|
+
* Backfilled Jupiter Lock rows have no on-chain creation time and are
|
|
3646
|
+
* excluded unless `include_estimated: true`. **LP locks are NOT included.**
|
|
3647
|
+
* **PRO+** — BASIC receives HTTP 403.
|
|
3648
|
+
* @example
|
|
3649
|
+
* ```ts
|
|
3650
|
+
* let since: string | undefined;
|
|
3651
|
+
* for (;;) {
|
|
3652
|
+
* const page = await client.token.locksFeed({ since, min_usd: 10_000 });
|
|
3653
|
+
* for (const l of page.locks) console.log(l.token.symbol, l.amount_usd, "until", l.end_at);
|
|
3654
|
+
* since = page.pagination.next_since ?? since;
|
|
3655
|
+
* await new Promise((r) => setTimeout(r, 30_000));
|
|
3656
|
+
* }
|
|
3657
|
+
* ```
|
|
3658
|
+
*/
|
|
3659
|
+
locksFeed(params?: TokenLocksFeedParams): Promise<TokenLocksFeedResponse>;
|
|
3660
|
+
/**
|
|
3661
|
+
* v2.25 — Upcoming unlock EVENTS across all active lock / vesting contracts
|
|
3662
|
+
* inside a window (`GET /tokens/unlocks`; `within` 1h | 6h | 24h | 3d | 7d
|
|
3663
|
+
* (default) | 14d | 30d | 90d): which tokens have locked supply hitting the
|
|
3664
|
+
* market, how much, from whose lock. One entry per active contract = its NEXT
|
|
3665
|
+
* unlock event in the window (`event`: cliff | period | final | tranche) with
|
|
3666
|
+
* `amount_*`, plus `window_amount_*` = that contract's total release over the
|
|
3667
|
+
* whole window. Continuous per-second streams (Streamflow payroll) contribute
|
|
3668
|
+
* only their cliff / final events. `sort` soonest (default) | largest_usd |
|
|
3669
|
+
* largest_pct. Base-unit amounts are strings; usd / pct null when price /
|
|
3670
|
+
* supply is unknown. **LP locks are NOT included.** **PRO+** — BASIC receives
|
|
3671
|
+
* HTTP 403.
|
|
3672
|
+
* @example
|
|
3673
|
+
* ```ts
|
|
3674
|
+
* const { unlocks } = await client.token.unlocks({ within: "24h", sort: "largest_usd", min_usd: 50_000 });
|
|
3675
|
+
* for (const u of unlocks) console.log(u.token.symbol, u.event, u.amount_usd, "in", u.in_seconds, "s");
|
|
3676
|
+
* ```
|
|
3677
|
+
*/
|
|
3678
|
+
unlocks(params?: TokenUnlocksParams): Promise<TokenUnlocksResponse>;
|
|
3679
|
+
/**
|
|
3680
|
+
* v2.25 — pump.fun creator-fee sharing on a coin (`GET /tokens/{mint}/fee-shares`):
|
|
3681
|
+
* who its creator fees are redirected to. Decodes the on-chain `SharingConfig`
|
|
3682
|
+
* (pump_fees PDA `["sharing-config", mint]`): `admin`, `status`, each
|
|
3683
|
+
* shareholder's `share_bps` with `is_admin` / `is_social_pda` (a SocialFeePda =
|
|
3684
|
+
* fees earmarked for a platform identity — platform 2 = X, `social.user_id` is
|
|
3685
|
+
* the platform-native numeric id, NOT the handle — with its lifetime claimed),
|
|
3686
|
+
* `redirected_bps` (share going to non-admin addresses), `social_bps` and
|
|
3687
|
+
* `is_default` (100% to the creator — a real answer: pump creates one config
|
|
3688
|
+
* per coin). Plus `distributions` (every `distribute_creator_fees` payout,
|
|
3689
|
+
* pro-rata per shareholder; per-recipient received totals; `past_recipients`
|
|
3690
|
+
* no longer in the split), `history` (config created / updated / reset,
|
|
3691
|
+
* creator transferred) and `recent_distributions`. `config.source` is
|
|
3692
|
+
* `"stream"` (our table — only NON-default configs are stored) or `"chain"`
|
|
3693
|
+
* (live PDA read; `config_error` set and `config` null if every RPC endpoint
|
|
3694
|
+
* failed). Amounts are quote base units (SOL lamports unless a stable-quoted
|
|
3695
|
+
* coin) as strings. **Event / distribution history starts 2026-08-17.**
|
|
3696
|
+
* **PRO+** — BASIC receives HTTP 403.
|
|
3697
|
+
* @param mint Token mint address (base58).
|
|
3698
|
+
* @example
|
|
3699
|
+
* ```ts
|
|
3700
|
+
* const fs = await client.token.feeShares(mint);
|
|
3701
|
+
* if (fs.config?.is_default) console.log("100% of creator fees go to the creator");
|
|
3702
|
+
* else for (const s of fs.config?.shareholders ?? []) console.log(s.address, s.share_pct, "%", s.social?.platform_label ?? "");
|
|
3703
|
+
* ```
|
|
3704
|
+
*/
|
|
3705
|
+
feeShares(mint: string): Promise<TokenFeeSharesResponse>;
|
|
3706
|
+
/**
|
|
3707
|
+
* v2.25 — pump.fun fee-event feed, newest first (`GET /tokens/fee-claims`).
|
|
3708
|
+
* `type`s: `distribution` (creator fees paid out pro-rata to the SharingConfig
|
|
3709
|
+
* shareholders — fees redirected to others — with `payouts[]` per address),
|
|
3710
|
+
* `social_claim` (fees earmarked for a platform identity — 2 = X — claimed to
|
|
3711
|
+
* a `recipient` wallet), `shares_created` / `shares_updated` / `shares_reset`
|
|
3712
|
+
* (config changes), `creator_transferred`, and `creator_claim` (the plain
|
|
3713
|
+
* creator vault claim — per creator, carries NO mint; excluded unless you ask
|
|
3714
|
+
* for it via `type`). Default 100%-to-creator configs and zero-amount
|
|
3715
|
+
* distributions are not stored. Filters `type` (comma list), `mint`,
|
|
3716
|
+
* `recipient`, `actor`, `social_platform`, `social_user_id`, `min_sol`; poll
|
|
3717
|
+
* with `since = pagination.next_since` or subscribe to the
|
|
3718
|
+
* **`token:fee_claims`** WS channel (event `token:fee_claim`). Amounts are
|
|
3719
|
+
* quote base units as strings + `amount` / `amount_usd`. **History starts
|
|
3720
|
+
* 2026-08-17.** **PRO+** — BASIC receives HTTP 403.
|
|
3721
|
+
* @example
|
|
3722
|
+
* ```ts
|
|
3723
|
+
* const { events } = await client.token.feeClaims({ type: "distribution,social_claim", min_sol: 1 });
|
|
3724
|
+
* for (const e of events) console.log(e.type, e.mint, e.amount, e.quote, e.recipient ?? e.payouts?.length);
|
|
3725
|
+
* ```
|
|
3726
|
+
*/
|
|
3727
|
+
feeClaims(params?: TokenFeeClaimsParams): Promise<TokenFeeClaimsResponse>;
|
|
2940
3728
|
}
|
|
2941
3729
|
declare class DeployerClient {
|
|
2942
3730
|
private readonly _fetch;
|