madeonsol 2.24.0 → 2.25.1

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/dist/index.d.ts CHANGED
@@ -1695,6 +1695,504 @@ export interface TokenHoldersResponse {
1695
1695
  deployer: TokenHoldersDeployer | null;
1696
1696
  source: TokenHoldersSource;
1697
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
+ }
1698
2196
  export type CandleTimeframe = "1m" | "5m" | "15m" | "1h" | "4h" | "1d";
1699
2197
  export interface CandlesParams {
1700
2198
  /** Bar size. Default "1h". */
@@ -2689,8 +3187,14 @@ export interface ToolsSearchResponse {
2689
3187
  }
2690
3188
  export interface StreamToken {
2691
3189
  token: string;
2692
- expires_at: string;
3190
+ /** Always `null` since 2026-08-27 — stream tokens never expire. Kept for wire compatibility; do not schedule refreshes on it. */
3191
+ expires_at: string | null;
3192
+ /** Always `null` since 2026-08-27 — the server never rotates a token on its own. Kept for wire compatibility. */
2693
3193
  next_refresh_at?: string | null;
3194
+ /** `true` when this call replaced your previous token (`rotate: true`); the old value keeps working for 60 s. */
3195
+ rotated?: boolean;
3196
+ /** Human-readable lifetime statement ("This token does not expire. …"). */
3197
+ lifetime?: string;
2694
3198
  ws_url: string;
2695
3199
  /** DEX trade stream URL — only present for Ultra tier subscribers */
2696
3200
  dex_ws_url?: string | null;
@@ -3105,6 +3609,128 @@ declare class TokenClient {
3105
3609
  * and at 1h/6h/24h/7d after bond.
3106
3610
  */
3107
3611
  peakHistory(mint: string): Promise<PeakHistoryResponse>;
3612
+ /**
3613
+ * v2.25 — Token locks & vesting on a mint (`GET /tokens/{mint}/locks`): every
3614
+ * on-chain Streamflow stream, Jupiter Lock vesting escrow and Bonfida
3615
+ * token-vesting contract, decoded from the locker programs' account state.
3616
+ * Each row carries the schedule (start / cliff / period / end, cliff and
3617
+ * per-period amounts), the terms (`cancelable_by_sender` — funds are locked
3618
+ * against the RECIPIENT, not the locker; `transferable`, `can_topup`) and a
3619
+ * LIVE-derived view computed at request time: `locked_raw` (still locked),
3620
+ * `unlocked`, `withdrawn`, `claimable`, `status`, `next_unlock`. `summary`
3621
+ * rolls up locked / deposited totals (raw + ui + usd + % of supply), the
3622
+ * 7d / 30d forward unlock schedule, the nearest `next_unlock` and
3623
+ * `active_cancelable_by_sender`. Answers "did the team lock, how much, until
3624
+ * when, and can they pull it".
3625
+ *
3626
+ * - `*_raw` amounts are base-unit **strings** (use `BigInt()`); ui / usd / pct
3627
+ * fields are `null` when decimals or price are unknown (`token.facts_resolved`).
3628
+ * - **LP locks are NOT included** — token / vesting locks only.
3629
+ * - `status` / `program` narrow `locks[]` only; `summary` always covers all rows.
3630
+ *
3631
+ * **PRO+** — BASIC receives HTTP 403. Keyed (`msk_`) API only.
3632
+ * @param mint Token mint address (base58).
3633
+ * @example
3634
+ * ```ts
3635
+ * const { summary, locks } = await client.token.locks(mint, { status: "active" });
3636
+ * console.log(`${summary.locked_pct_of_supply}% of supply locked, ${summary.unlocking_7d_usd} USD unlocking in 7d`);
3637
+ * console.log(`${summary.active_cancelable_by_sender} active locks the locker can still cancel`);
3638
+ * ```
3639
+ */
3640
+ locks(mint: string, params?: TokenLocksParams): Promise<TokenLocksResponse>;
3641
+ /**
3642
+ * v2.25 — Cross-token feed of NEW lock / vesting contracts, newest first
3643
+ * (`GET /tokens/locks`): who just locked tokens, of what mint, how much,
3644
+ * until when — Streamflow, Jupiter Lock and Bonfida vesting. Each row is the
3645
+ * same live-derived contract as `locks()` plus `token` (symbol, decimals,
3646
+ * price, MC). Poll incrementally with `since = pagination.next_since`, page
3647
+ * back with `before = pagination.next_before`, or subscribe to the
3648
+ * **`token:locks`** WS channel (event `token:lock`) for a push the moment the
3649
+ * contract lands on-chain. `min_usd` / `min_pct_of_supply` / `status`
3650
+ * post-filter (×4 over-fetch — a page may be shorter than `limit`).
3651
+ * Backfilled Jupiter Lock rows have no on-chain creation time and are
3652
+ * excluded unless `include_estimated: true`. **LP locks are NOT included.**
3653
+ * **PRO+** — BASIC receives HTTP 403.
3654
+ * @example
3655
+ * ```ts
3656
+ * let since: string | undefined;
3657
+ * for (;;) {
3658
+ * const page = await client.token.locksFeed({ since, min_usd: 10_000 });
3659
+ * for (const l of page.locks) console.log(l.token.symbol, l.amount_usd, "until", l.end_at);
3660
+ * since = page.pagination.next_since ?? since;
3661
+ * await new Promise((r) => setTimeout(r, 30_000));
3662
+ * }
3663
+ * ```
3664
+ */
3665
+ locksFeed(params?: TokenLocksFeedParams): Promise<TokenLocksFeedResponse>;
3666
+ /**
3667
+ * v2.25 — Upcoming unlock EVENTS across all active lock / vesting contracts
3668
+ * inside a window (`GET /tokens/unlocks`; `within` 1h | 6h | 24h | 3d | 7d
3669
+ * (default) | 14d | 30d | 90d): which tokens have locked supply hitting the
3670
+ * market, how much, from whose lock. One entry per active contract = its NEXT
3671
+ * unlock event in the window (`event`: cliff | period | final | tranche) with
3672
+ * `amount_*`, plus `window_amount_*` = that contract's total release over the
3673
+ * whole window. Continuous per-second streams (Streamflow payroll) contribute
3674
+ * only their cliff / final events. `sort` soonest (default) | largest_usd |
3675
+ * largest_pct. Base-unit amounts are strings; usd / pct null when price /
3676
+ * supply is unknown. **LP locks are NOT included.** **PRO+** — BASIC receives
3677
+ * HTTP 403.
3678
+ * @example
3679
+ * ```ts
3680
+ * const { unlocks } = await client.token.unlocks({ within: "24h", sort: "largest_usd", min_usd: 50_000 });
3681
+ * for (const u of unlocks) console.log(u.token.symbol, u.event, u.amount_usd, "in", u.in_seconds, "s");
3682
+ * ```
3683
+ */
3684
+ unlocks(params?: TokenUnlocksParams): Promise<TokenUnlocksResponse>;
3685
+ /**
3686
+ * v2.25 — pump.fun creator-fee sharing on a coin (`GET /tokens/{mint}/fee-shares`):
3687
+ * who its creator fees are redirected to. Decodes the on-chain `SharingConfig`
3688
+ * (pump_fees PDA `["sharing-config", mint]`): `admin`, `status`, each
3689
+ * shareholder's `share_bps` with `is_admin` / `is_social_pda` (a SocialFeePda =
3690
+ * fees earmarked for a platform identity — platform 2 = X, `social.user_id` is
3691
+ * the platform-native numeric id, NOT the handle — with its lifetime claimed),
3692
+ * `redirected_bps` (share going to non-admin addresses), `social_bps` and
3693
+ * `is_default` (100% to the creator — a real answer: pump creates one config
3694
+ * per coin). Plus `distributions` (every `distribute_creator_fees` payout,
3695
+ * pro-rata per shareholder; per-recipient received totals; `past_recipients`
3696
+ * no longer in the split), `history` (config created / updated / reset,
3697
+ * creator transferred) and `recent_distributions`. `config.source` is
3698
+ * `"stream"` (our table — only NON-default configs are stored) or `"chain"`
3699
+ * (live PDA read; `config_error` set and `config` null if every RPC endpoint
3700
+ * failed). Amounts are quote base units (SOL lamports unless a stable-quoted
3701
+ * coin) as strings. **Event / distribution history starts 2026-08-17.**
3702
+ * **PRO+** — BASIC receives HTTP 403.
3703
+ * @param mint Token mint address (base58).
3704
+ * @example
3705
+ * ```ts
3706
+ * const fs = await client.token.feeShares(mint);
3707
+ * if (fs.config?.is_default) console.log("100% of creator fees go to the creator");
3708
+ * else for (const s of fs.config?.shareholders ?? []) console.log(s.address, s.share_pct, "%", s.social?.platform_label ?? "");
3709
+ * ```
3710
+ */
3711
+ feeShares(mint: string): Promise<TokenFeeSharesResponse>;
3712
+ /**
3713
+ * v2.25 — pump.fun fee-event feed, newest first (`GET /tokens/fee-claims`).
3714
+ * `type`s: `distribution` (creator fees paid out pro-rata to the SharingConfig
3715
+ * shareholders — fees redirected to others — with `payouts[]` per address),
3716
+ * `social_claim` (fees earmarked for a platform identity — 2 = X — claimed to
3717
+ * a `recipient` wallet), `shares_created` / `shares_updated` / `shares_reset`
3718
+ * (config changes), `creator_transferred`, and `creator_claim` (the plain
3719
+ * creator vault claim — per creator, carries NO mint; excluded unless you ask
3720
+ * for it via `type`). Default 100%-to-creator configs and zero-amount
3721
+ * distributions are not stored. Filters `type` (comma list), `mint`,
3722
+ * `recipient`, `actor`, `social_platform`, `social_user_id`, `min_sol`; poll
3723
+ * with `since = pagination.next_since` or subscribe to the
3724
+ * **`token:fee_claims`** WS channel (event `token:fee_claim`). Amounts are
3725
+ * quote base units as strings + `amount` / `amount_usd`. **History starts
3726
+ * 2026-08-17.** **PRO+** — BASIC receives HTTP 403.
3727
+ * @example
3728
+ * ```ts
3729
+ * const { events } = await client.token.feeClaims({ type: "distribution,social_claim", min_sol: 1 });
3730
+ * for (const e of events) console.log(e.type, e.mint, e.amount, e.quote, e.recipient ?? e.payouts?.length);
3731
+ * ```
3732
+ */
3733
+ feeClaims(params?: TokenFeeClaimsParams): Promise<TokenFeeClaimsResponse>;
3108
3734
  }
3109
3735
  declare class DeployerClient {
3110
3736
  private readonly _fetch;
@@ -3632,13 +4258,22 @@ declare class StreamClient {
3632
4258
  private readonly _post;
3633
4259
  private readonly _delete;
3634
4260
  private readonly _baseUrl;
3635
- constructor(_get: <T>(url: string) => Promise<T>, _post: <T>(url: string) => Promise<T>, _delete: <T>(url: string) => Promise<T>, _baseUrl: string);
4261
+ constructor(_get: <T>(url: string) => Promise<T>, _post: <T>(url: string, body?: unknown) => Promise<T>, _delete: <T>(url: string) => Promise<T>, _baseUrl: string);
3636
4262
  /**
3637
- * Generate a 24-hour WebSocket streaming token.
4263
+ * Issue your WebSocket streaming token. Stream tokens never expire (since
4264
+ * 2026-08-27): every call returns the same token until your subscription
4265
+ * lapses or you pass `{ rotate: true }`, which replaces it (the previous
4266
+ * value keeps working for 60 s). `expires_at` / `next_refresh_at` are always
4267
+ * `null` — the server never rotates on its own and never sends
4268
+ * `token_refresh` unless you rotated. A `4001` close means "mint again"
4269
+ * (lapsed or rotated), never a timer. Authenticate the handshake with
4270
+ * `Authorization: Bearer <token>` (`?token=` still works, masked in logs).
3638
4271
  * Pro/Ultra: ws_url for KOL/deployer event streaming.
3639
4272
  * Ultra only: dex_ws_url for all-DEX trade streaming.
3640
4273
  */
3641
- getToken(): Promise<StreamToken>;
4274
+ getToken(opts?: {
4275
+ rotate?: boolean;
4276
+ }): Promise<StreamToken>;
3642
4277
  /**
3643
4278
  * List your live WebSocket sessions across the KOL/deployer (`ws-streaming`)
3644
4279
  * and all-DEX (`dex-stream`) services — id, tier, subscribed channels, connect