@w3lib/solana-batch-call 0.4.0 → 0.6.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.
Files changed (223) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +343 -3
  3. package/dist/approvals.d.ts +129 -0
  4. package/dist/approvals.d.ts.map +1 -0
  5. package/dist/approvals.js +221 -0
  6. package/dist/approvals.js.map +1 -0
  7. package/dist/batchPlan.d.ts +52 -0
  8. package/dist/batchPlan.d.ts.map +1 -0
  9. package/dist/batchPlan.js +85 -0
  10. package/dist/batchPlan.js.map +1 -0
  11. package/dist/claim.d.ts +161 -0
  12. package/dist/claim.d.ts.map +1 -0
  13. package/dist/claim.js +197 -0
  14. package/dist/claim.js.map +1 -0
  15. package/dist/decode.d.ts +22 -0
  16. package/dist/decode.d.ts.map +1 -0
  17. package/dist/decode.js +187 -0
  18. package/dist/decode.js.map +1 -0
  19. package/dist/describe.d.ts +26 -0
  20. package/dist/describe.d.ts.map +1 -0
  21. package/dist/describe.js +58 -0
  22. package/dist/describe.js.map +1 -0
  23. package/dist/fees.d.ts +89 -0
  24. package/dist/fees.d.ts.map +1 -0
  25. package/dist/fees.js +166 -0
  26. package/dist/fees.js.map +1 -0
  27. package/dist/history.d.ts +125 -0
  28. package/dist/history.d.ts.map +1 -0
  29. package/dist/history.js +231 -0
  30. package/dist/history.js.map +1 -0
  31. package/dist/historyHelius.d.ts +52 -0
  32. package/dist/historyHelius.d.ts.map +1 -0
  33. package/dist/historyHelius.js +125 -0
  34. package/dist/historyHelius.js.map +1 -0
  35. package/dist/layout.d.ts +2 -0
  36. package/dist/layout.d.ts.map +1 -1
  37. package/dist/layout.js +2 -2
  38. package/dist/layout.js.map +1 -1
  39. package/dist/liquidity/orca.d.ts +6 -0
  40. package/dist/liquidity/orca.d.ts.map +1 -1
  41. package/dist/liquidity/orca.js +14 -3
  42. package/dist/liquidity/orca.js.map +1 -1
  43. package/dist/liquidity/raydiumClmm.d.ts +6 -0
  44. package/dist/liquidity/raydiumClmm.d.ts.map +1 -1
  45. package/dist/liquidity/raydiumClmm.js +12 -5
  46. package/dist/liquidity/raydiumClmm.js.map +1 -1
  47. package/dist/lp.d.ts +55 -15
  48. package/dist/lp.d.ts.map +1 -1
  49. package/dist/lp.js +98 -46
  50. package/dist/lp.js.map +1 -1
  51. package/dist/lpMath.d.ts +22 -0
  52. package/dist/lpMath.d.ts.map +1 -1
  53. package/dist/lpMath.js +21 -0
  54. package/dist/lpMath.js.map +1 -1
  55. package/dist/names.d.ts +68 -0
  56. package/dist/names.d.ts.map +1 -0
  57. package/dist/names.js +257 -0
  58. package/dist/names.js.map +1 -0
  59. package/dist/pools.d.ts +9 -0
  60. package/dist/pools.d.ts.map +1 -0
  61. package/dist/pools.js +45 -0
  62. package/dist/pools.js.map +1 -0
  63. package/dist/portfolio.d.ts +64 -0
  64. package/dist/portfolio.d.ts.map +1 -0
  65. package/dist/portfolio.js +57 -0
  66. package/dist/portfolio.js.map +1 -0
  67. package/dist/price.d.ts +90 -0
  68. package/dist/price.d.ts.map +1 -0
  69. package/dist/price.js +287 -0
  70. package/dist/price.js.map +1 -0
  71. package/dist/programs.d.ts +19 -0
  72. package/dist/programs.d.ts.map +1 -0
  73. package/dist/programs.js +175 -0
  74. package/dist/programs.js.map +1 -0
  75. package/dist/reclaim.d.ts +190 -0
  76. package/dist/reclaim.d.ts.map +1 -0
  77. package/dist/reclaim.js +399 -0
  78. package/dist/reclaim.js.map +1 -0
  79. package/dist/risk.d.ts +84 -0
  80. package/dist/risk.d.ts.map +1 -0
  81. package/dist/risk.js +211 -0
  82. package/dist/risk.js.map +1 -0
  83. package/dist/rpc.d.ts +2 -0
  84. package/dist/rpc.d.ts.map +1 -1
  85. package/dist/rpc.js +36 -10
  86. package/dist/rpc.js.map +1 -1
  87. package/dist/simulate.d.ts +106 -0
  88. package/dist/simulate.d.ts.map +1 -0
  89. package/dist/simulate.js +418 -0
  90. package/dist/simulate.js.map +1 -0
  91. package/dist/subpaths/approvals.d.ts +29 -0
  92. package/dist/subpaths/approvals.d.ts.map +1 -0
  93. package/dist/subpaths/approvals.js +30 -0
  94. package/dist/subpaths/approvals.js.map +1 -0
  95. package/dist/subpaths/claim.d.ts +31 -0
  96. package/dist/subpaths/claim.d.ts.map +1 -0
  97. package/dist/subpaths/claim.js +31 -0
  98. package/dist/subpaths/claim.js.map +1 -0
  99. package/dist/subpaths/fees.d.ts +23 -0
  100. package/dist/subpaths/fees.d.ts.map +1 -0
  101. package/dist/subpaths/fees.js +25 -0
  102. package/dist/subpaths/fees.js.map +1 -0
  103. package/dist/subpaths/history.d.ts +21 -0
  104. package/dist/subpaths/history.d.ts.map +1 -0
  105. package/dist/subpaths/history.js +22 -0
  106. package/dist/subpaths/history.js.map +1 -0
  107. package/dist/subpaths/lp.d.ts +2 -2
  108. package/dist/subpaths/lp.d.ts.map +1 -1
  109. package/dist/subpaths/lp.js +2 -2
  110. package/dist/subpaths/lp.js.map +1 -1
  111. package/dist/subpaths/names.d.ts +37 -0
  112. package/dist/subpaths/names.d.ts.map +1 -0
  113. package/dist/subpaths/names.js +27 -0
  114. package/dist/subpaths/names.js.map +1 -0
  115. package/dist/subpaths/price.d.ts +40 -0
  116. package/dist/subpaths/price.d.ts.map +1 -0
  117. package/dist/subpaths/price.js +43 -0
  118. package/dist/subpaths/price.js.map +1 -0
  119. package/dist/subpaths/reclaim.d.ts +34 -0
  120. package/dist/subpaths/reclaim.d.ts.map +1 -0
  121. package/dist/subpaths/reclaim.js +34 -0
  122. package/dist/subpaths/reclaim.js.map +1 -0
  123. package/dist/subpaths/risk.d.ts +28 -0
  124. package/dist/subpaths/risk.d.ts.map +1 -0
  125. package/dist/subpaths/risk.js +30 -0
  126. package/dist/subpaths/risk.js.map +1 -0
  127. package/dist/subpaths/simulate.d.ts +22 -0
  128. package/dist/subpaths/simulate.d.ts.map +1 -0
  129. package/dist/subpaths/simulate.js +23 -0
  130. package/dist/subpaths/simulate.js.map +1 -0
  131. package/dist/subpaths/swap.d.ts +22 -0
  132. package/dist/subpaths/swap.d.ts.map +1 -0
  133. package/dist/subpaths/swap.js +21 -0
  134. package/dist/subpaths/swap.js.map +1 -0
  135. package/dist/subpaths/write.d.ts +1 -1
  136. package/dist/subpaths/write.d.ts.map +1 -1
  137. package/dist/subpaths/write.js +1 -1
  138. package/dist/subpaths/write.js.map +1 -1
  139. package/dist/swap/amm.d.ts +20 -0
  140. package/dist/swap/amm.d.ts.map +1 -0
  141. package/dist/swap/amm.js +77 -0
  142. package/dist/swap/amm.js.map +1 -0
  143. package/dist/swap/clmmMath.d.ts +24 -0
  144. package/dist/swap/clmmMath.d.ts.map +1 -0
  145. package/dist/swap/clmmMath.js +82 -0
  146. package/dist/swap/clmmMath.js.map +1 -0
  147. package/dist/swap/common.d.ts +68 -0
  148. package/dist/swap/common.d.ts.map +1 -0
  149. package/dist/swap/common.js +65 -0
  150. package/dist/swap/common.js.map +1 -0
  151. package/dist/swap/cpmm.d.ts +28 -0
  152. package/dist/swap/cpmm.d.ts.map +1 -0
  153. package/dist/swap/cpmm.js +113 -0
  154. package/dist/swap/cpmm.js.map +1 -0
  155. package/dist/swap/index.d.ts +145 -0
  156. package/dist/swap/index.d.ts.map +1 -0
  157. package/dist/swap/index.js +349 -0
  158. package/dist/swap/index.js.map +1 -0
  159. package/dist/swap/orca.d.ts +50 -0
  160. package/dist/swap/orca.d.ts.map +1 -0
  161. package/dist/swap/orca.js +382 -0
  162. package/dist/swap/orca.js.map +1 -0
  163. package/dist/swap/raydiumClmm.d.ts +62 -0
  164. package/dist/swap/raydiumClmm.d.ts.map +1 -0
  165. package/dist/swap/raydiumClmm.js +447 -0
  166. package/dist/swap/raydiumClmm.js.map +1 -0
  167. package/dist/tradeCheck.d.ts +45 -0
  168. package/dist/tradeCheck.d.ts.map +1 -0
  169. package/dist/tradeCheck.js +131 -0
  170. package/dist/tradeCheck.js.map +1 -0
  171. package/dist/write/instructions.d.ts +9 -0
  172. package/dist/write/instructions.d.ts.map +1 -1
  173. package/dist/write/instructions.js +40 -1
  174. package/dist/write/instructions.js.map +1 -1
  175. package/dist/write/transaction.d.ts +23 -0
  176. package/dist/write/transaction.d.ts.map +1 -1
  177. package/dist/write/transaction.js +50 -0
  178. package/dist/write/transaction.js.map +1 -1
  179. package/package.json +66 -14
  180. package/src/approvals.ts +358 -0
  181. package/src/batchPlan.ts +137 -0
  182. package/src/claim.ts +323 -0
  183. package/src/decode.ts +202 -0
  184. package/src/describe.ts +77 -0
  185. package/src/fees.ts +259 -0
  186. package/src/history.ts +336 -0
  187. package/src/historyHelius.ts +136 -0
  188. package/src/layout.ts +2 -2
  189. package/src/liquidity/orca.ts +15 -5
  190. package/src/liquidity/raydiumClmm.ts +13 -5
  191. package/src/lp.ts +148 -59
  192. package/src/lpMath.ts +38 -0
  193. package/src/names.ts +329 -0
  194. package/src/pools.ts +43 -0
  195. package/src/portfolio.ts +124 -0
  196. package/src/price.ts +366 -0
  197. package/src/programs.ts +216 -0
  198. package/src/reclaim.ts +547 -0
  199. package/src/risk.ts +243 -0
  200. package/src/rpc.ts +39 -10
  201. package/src/simulate.ts +535 -0
  202. package/src/subpaths/approvals.ts +47 -0
  203. package/src/subpaths/claim.ts +53 -0
  204. package/src/subpaths/fees.ts +41 -0
  205. package/src/subpaths/history.ts +38 -0
  206. package/src/subpaths/lp.ts +5 -1
  207. package/src/subpaths/names.ts +45 -0
  208. package/src/subpaths/price.ts +62 -0
  209. package/src/subpaths/reclaim.ts +57 -0
  210. package/src/subpaths/risk.ts +36 -0
  211. package/src/subpaths/simulate.ts +37 -0
  212. package/src/subpaths/swap.ts +41 -0
  213. package/src/subpaths/write.ts +2 -0
  214. package/src/swap/amm.ts +88 -0
  215. package/src/swap/clmmMath.ts +96 -0
  216. package/src/swap/common.ts +113 -0
  217. package/src/swap/cpmm.ts +132 -0
  218. package/src/swap/index.ts +467 -0
  219. package/src/swap/orca.ts +397 -0
  220. package/src/swap/raydiumClmm.ts +464 -0
  221. package/src/tradeCheck.ts +166 -0
  222. package/src/write/instructions.ts +43 -1
  223. package/src/write/transaction.ts +62 -0
package/dist/lp.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { RequestOptions, SolanaClient } from './client.js';
2
2
  import { type AccountInfo } from './layout.js';
3
+ import { type TickFeeData } from './lpMath.js';
4
+ import { type SolanaPriceSource } from './price.js';
3
5
  export declare const RAYDIUM_CLMM_PROGRAM_ID = "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK";
4
6
  export declare const ORCA_WHIRLPOOL_PROGRAM_ID = "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";
5
7
  export declare const RAYDIUM_AMM_PROGRAM_ID = "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
@@ -14,19 +16,7 @@ export declare const SOLANA_LP_PROTOCOLS: Readonly<Record<SolanaLpProtocol, {
14
16
  type: 'clmm' | 'amm';
15
17
  programId: string;
16
18
  }>>;
17
- export interface SolanaPriceSource {
18
- readonly name: string;
19
- /** 返回 mint → 美元价格;没有价格的不返回 */
20
- prices(ctx: {
21
- mints: readonly string[];
22
- fetch: typeof fetch;
23
- signal?: AbortSignal;
24
- }): Promise<Map<string, number>>;
25
- }
26
- /** DefiLlama 价格(免费免 Key,按 100 个一批查询);confidence 低于 minConfidence(默认 0.9)的价格不用 */
27
- export declare function defillamaPrices(options?: {
28
- minConfidence?: number;
29
- }): SolanaPriceSource;
19
+ export { defillamaPrices, type SolanaPriceSource, type SolanaPriceSourceContext } from './price.js';
30
20
  export interface SolanaLpToken {
31
21
  mint: string;
32
22
  /** 读不到时为 null;Wrapped SOL 为 'SOL'(按客户端的 nativeMints 配置) */
@@ -88,6 +78,23 @@ export interface SolanaLpClmmPosition extends SolanaLpPositionBase {
88
78
  fees1Formatted: string | null;
89
79
  /** 开启 prices 时:未领取手续费的美元价值(手续费为 null 或缺价格时为 null) */
90
80
  feesUsd?: number | null;
81
+ /** 开启 rewards 时:未领取的挖矿奖励(池子里已初始化的每个奖励一项,数量为 0 的也在) */
82
+ rewards?: SolanaLpReward[];
83
+ /** 开启 rewards 和 prices 时:未领取挖矿奖励的美元价值(有数量的奖励缺价格或读不到时为 null) */
84
+ rewardsUsd?: number | null;
85
+ }
86
+ /** 集中流动性仓位未领取的挖矿奖励(Raydium CLMM reward_infos / Orca Whirlpool reward_infos) */
87
+ export interface SolanaLpReward {
88
+ /** 奖励在池子里的位置(0~2) */
89
+ index: number;
90
+ mint: string;
91
+ symbol: string | null;
92
+ decimals: number | null;
93
+ /** 未领取的数量(最小单位):已记账的 + 按池子最新状态结算的新增;读不到两端的 tick 数据时为 null */
94
+ amount: string | null;
95
+ formatted: string | null;
96
+ /** 开启 prices 时:美元价值(没有价格时为 null) */
97
+ usd?: number | null;
91
98
  }
92
99
  export type SolanaLpPosition = SolanaLpAmmPosition | SolanaLpClmmPosition;
93
100
  export interface LpPositionsOptions extends RequestOptions {
@@ -105,7 +112,14 @@ export interface LpPositionsOptions extends RequestOptions {
105
112
  pools?: readonly string[];
106
113
  /** 返回已清空的仓位(流动性为 0、手续费也领完,NFT 还在)。默认 false */
107
114
  includeClosed?: boolean;
108
- /** 查美元价值:true 用 DefiLlama,也可以传自己的 SolanaPriceSource。默认不查 */
115
+ /**
116
+ * 集中流动性仓位同时算未领取的挖矿奖励(Raydium CLMM 农场奖励、Orca 的奖励 slot),放在 rewards 字段,照搬程序的结算:
117
+ * 池子的奖励增长按时间摊给当前流动性,再按仓位区间内的增长计算。默认 false。有奖励没领的仓位不算“已清空”
118
+ */
119
+ rewards?: boolean;
120
+ /** rewards 结算到哪个时刻(unix 秒),默认当前时间;链上用的是区块时间,差几秒影响很小 */
121
+ now?: number;
122
+ /** 查美元价值:true 用 DefiLlama,也可以传自己的 SolanaPriceSource(如 /price 的 combinePrices([defillamaPrices(), onchainPrices()]))。默认不查 */
109
123
  prices?: boolean | SolanaPriceSource;
110
124
  /**
111
125
  * 价格源出错时调用(服务不可用、被拦截等):这时照样返回仓位,只是 valueUsd / feesUsd 为 null,
@@ -128,6 +142,26 @@ export declare class Bytes {
128
142
  u128(o: number): bigint;
129
143
  key(o: number): string;
130
144
  }
145
+ export interface ClmmPositionState {
146
+ protocol: 'raydium-clmm' | 'orca-whirlpool';
147
+ address: string;
148
+ mint: string;
149
+ pool: string;
150
+ tickLower: number;
151
+ tickUpper: number;
152
+ liquidity: bigint;
153
+ growthLast0: bigint;
154
+ growthLast1: bigint;
155
+ owed0: bigint;
156
+ owed1: bigint;
157
+ /** 三个挖矿奖励:上次记录的区间内增长、已记账未领取的数量 */
158
+ rewards: Array<{
159
+ growthLast: bigint;
160
+ owed: bigint;
161
+ }>;
162
+ }
163
+ /** 按程序和账户大小解析仓位账户(Raydium PersonalPositionState 281 字节、Orca Position 216 字节);不是仓位账户时为 null */
164
+ export declare function parseClmmPosition(protocol: 'raydium-clmm' | 'orca-whirlpool', address: string, account: AccountInfo): ClmmPositionState | null;
131
165
  export interface AmmPoolState {
132
166
  protocol: 'raydium-amm' | 'raydium-cpmm';
133
167
  address: string;
@@ -155,6 +189,8 @@ export declare function orcaTickArray(pool: string, tick: number, spacing: numbe
155
189
  address: string;
156
190
  start: number;
157
191
  };
192
+ export declare function raydiumTick(account: AccountInfo, start: number, tick: number, spacing: number): TickFeeData | null;
193
+ export declare function orcaTick(account: AccountInfo, start: number, tick: number, spacing: number): TickFeeData | null;
158
194
  /**
159
195
  * 查一个地址的 LP 仓位:Raydium CLMM / Orca Whirlpool 的仓位 NFT,Raydium AMM v4 / CPMM 的 LP 代币。
160
196
  * 返回两种代币的数量、未领取的手续费(集中流动性),可选美元价值。
@@ -164,5 +200,9 @@ export declare function orcaTickArray(pool: string, tick: number, spacing: numbe
164
200
  * - 质押在农场里的 LP、Orca 的仓位组合(Position Bundle)、锁仓的 Raydium 仓位不在用户名下,查不到
165
201
  */
166
202
  export declare function lpPositions(client: SolanaClient, owner: string, options?: LpPositionsOptions): Promise<SolanaLpPosition[]>;
167
- export {};
203
+ /**
204
+ * 节点不提供这个方法(方法不存在、被拦截、需要付费 / Token、403 等):这时报错里说明怎么绕过。
205
+ * 多节点时所有节点都是这个原因才算;限频、超时、网络不对等原样抛出(资产总值 portfolio 也用)
206
+ */
207
+ export declare function methodUnavailable(err: unknown): boolean;
168
208
  //# sourceMappingURL=lp.d.ts.map
package/dist/lp.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
package/dist/lp.js CHANGED
@@ -3,7 +3,8 @@ import { base64 } from '@scure/base';
3
3
  import { decodeAddress, encodeAddress, findProgramAddress, isAddress } from './address.js';
4
4
  import { formatUnits, parseMint, parseTokenAccount } from './layout.js';
5
5
  import { AllNodesFailedError, HttpError, RpcError } from './rpc.js';
6
- import { getAmountsForLiquidity, getFeeGrowthInside, getFeesOwed, orcaSqrtPriceAtTick, raydiumSqrtPriceAtTick, sqrtPriceToPrice, tickToPrice } from './lpMath.js';
6
+ import { getAmountsForLiquidity, getFeeGrowthInside, getFeesOwed, getRewardGrowthInside, orcaSqrtPriceAtTick, raydiumSqrtPriceAtTick, rewardGrowthGlobal, sqrtPriceToPrice, tickToPrice, } from './lpMath.js';
7
+ import { defillamaPrices } from './price.js';
7
8
  export const RAYDIUM_CLMM_PROGRAM_ID = 'CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK';
8
9
  export const ORCA_WHIRLPOOL_PROGRAM_ID = 'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc';
9
10
  export const RAYDIUM_AMM_PROGRAM_ID = '675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8';
@@ -18,33 +19,8 @@ export const SOLANA_LP_PROTOCOLS = {
18
19
  'raydium-amm': { name: 'Raydium AMM v4', type: 'amm', programId: RAYDIUM_AMM_PROGRAM_ID },
19
20
  'raydium-cpmm': { name: 'Raydium CPMM', type: 'amm', programId: RAYDIUM_CPMM_PROGRAM_ID },
20
21
  };
21
- /** DefiLlama 价格(免费免 Key,按 100 个一批查询);confidence 低于 minConfidence(默认 0.9)的价格不用 */
22
- export function defillamaPrices(options = {}) {
23
- const minConfidence = options.minConfidence ?? 0.9;
24
- return {
25
- name: 'defillama',
26
- async prices({ mints, fetch: fetchFn, signal }) {
27
- const result = new Map();
28
- const batches = [];
29
- for (let i = 0; i < mints.length; i += 100) {
30
- batches.push(mints.slice(i, i + 100));
31
- }
32
- await Promise.all(batches.map(async (batch) => {
33
- const res = await fetchFn(`https://coins.llama.fi/prices/current/${batch.map((m) => `solana:${m}`).join(',')}`, { signal });
34
- if (!res.ok) {
35
- throw new Error(`DefiLlama prices: HTTP ${res.status}`);
36
- }
37
- const body = (await res.json());
38
- for (const [key, coin] of Object.entries(body.coins ?? {})) {
39
- if (typeof coin.price === 'number' && Number.isFinite(coin.price) && (coin.confidence === undefined || coin.confidence >= minConfidence)) {
40
- result.set(key.slice(key.indexOf(':') + 1), coin.price);
41
- }
42
- }
43
- }));
44
- return result;
45
- },
46
- };
47
- }
22
+ // 价格源在 price.ts(子路径 /price);这里继续导出,旧的 import 不受影响
23
+ export { defillamaPrices } from './price.js';
48
24
  // ---------------------------------------------------------------------------
49
25
  // 账户布局(各程序的 Anchor / 原生账户,偏移量含 8 字节判别符)
50
26
  // ---------------------------------------------------------------------------
@@ -78,6 +54,7 @@ export class Bytes {
78
54
  return encodeAddress(this.data.subarray(o, o + 32));
79
55
  }
80
56
  }
57
+ const ZERO_ADDRESS = '11111111111111111111111111111111';
81
58
  const RAYDIUM_POSITION_SIZE = 281;
82
59
  const ORCA_POSITION_SIZE = 216;
83
60
  /** 池子账户至少要读到的长度(Raydium PoolState 实际 1544 字节,Orca Whirlpool 653 字节) */
@@ -89,6 +66,7 @@ const RAYDIUM_TICK_ARRAY_SIZE = 60;
89
66
  const RAYDIUM_TICK_SIZE = 168;
90
67
  const ORCA_TICK_ARRAY_SIZE = 88;
91
68
  const ORCA_TICK_SIZE = 113;
69
+ const positionRewards = (b, offset) => [0, 1, 2].map((i) => ({ growthLast: b.u128(offset + i * 24), owed: b.u64(offset + i * 24 + 16) }));
92
70
  function raydiumPosition(address, b) {
93
71
  return {
94
72
  protocol: 'raydium-clmm',
@@ -102,6 +80,7 @@ function raydiumPosition(address, b) {
102
80
  growthLast1: b.u128(113),
103
81
  owed0: b.u64(129),
104
82
  owed1: b.u64(137),
83
+ rewards: positionRewards(b, 145),
105
84
  };
106
85
  }
107
86
  function orcaPosition(address, b) {
@@ -117,8 +96,47 @@ function orcaPosition(address, b) {
117
96
  owed0: b.u64(112),
118
97
  growthLast1: b.u128(120),
119
98
  owed1: b.u64(136),
99
+ rewards: positionRewards(b, 144),
120
100
  };
121
101
  }
102
+ /** 按程序和账户大小解析仓位账户(Raydium PersonalPositionState 281 字节、Orca Position 216 字节);不是仓位账户时为 null */
103
+ export function parseClmmPosition(protocol, address, account) {
104
+ if (protocol === 'raydium-clmm' && account.owner === RAYDIUM_CLMM_PROGRAM_ID && account.data.length === RAYDIUM_POSITION_SIZE) {
105
+ return raydiumPosition(address, new Bytes(account.data));
106
+ }
107
+ if (protocol === 'orca-whirlpool' && account.owner === ORCA_WHIRLPOOL_PROGRAM_ID && account.data.length === ORCA_POSITION_SIZE) {
108
+ return orcaPosition(address, new Bytes(account.data));
109
+ }
110
+ return null;
111
+ }
112
+ const U64_MAX_VALUE = (1n << 64n) - 1n;
113
+ /** Raydium reward_infos(每个 169 字节,从 397 开始):open_time +1、end_time +9、last_update_time +17、emissions_per_second_x64 +25、mint +57、growth_global +153 */
114
+ function raydiumRewards(b) {
115
+ if (b.data.length < 397 + 3 * 169) {
116
+ return [];
117
+ }
118
+ return [0, 1, 2].flatMap((index) => {
119
+ const o = 397 + index * 169;
120
+ const mint = b.key(o + 57);
121
+ return mint === ZERO_ADDRESS
122
+ ? []
123
+ : [{ index, mint, emission: { initialized: true, openTime: b.u64(o + 1), endTime: b.u64(o + 9), lastUpdated: b.u64(o + 17), emissionsPerSecondX64: b.u128(o + 25), growthGlobalX64: b.u128(o + 153) } }];
124
+ });
125
+ }
126
+ /** Orca reward_last_updated_timestamp(261)和 reward_infos(每个 128 字节,从 269 开始):mint +0、emissions_per_second_x64 +96、growth_global +112 */
127
+ function orcaRewards(b) {
128
+ if (b.data.length < 269 + 3 * 128) {
129
+ return [];
130
+ }
131
+ const lastUpdated = b.u64(261);
132
+ return [0, 1, 2].flatMap((index) => {
133
+ const o = 269 + index * 128;
134
+ const mint = b.key(o);
135
+ return mint === ZERO_ADDRESS
136
+ ? []
137
+ : [{ index, mint, emission: { initialized: true, openTime: 0n, endTime: U64_MAX_VALUE, lastUpdated, emissionsPerSecondX64: b.u128(o + 96), growthGlobalX64: b.u128(o + 112) } }];
138
+ });
139
+ }
122
140
  function raydiumPool(b) {
123
141
  return {
124
142
  ammConfig: b.key(9),
@@ -132,6 +150,8 @@ function raydiumPool(b) {
132
150
  global0: b.u128(277),
133
151
  global1: b.u128(293),
134
152
  fee: null,
153
+ liquidity: b.u128(237),
154
+ rewards: raydiumRewards(b),
135
155
  };
136
156
  }
137
157
  function orcaPool(b) {
@@ -147,6 +167,8 @@ function orcaPool(b) {
147
167
  global1: b.u128(245),
148
168
  decimals0: null,
149
169
  decimals1: null,
170
+ liquidity: b.u128(49),
171
+ rewards: orcaRewards(b),
150
172
  };
151
173
  }
152
174
  function ammPool(address, b) {
@@ -207,7 +229,8 @@ export function orcaTickArray(pool, tick, spacing) {
207
229
  const start = floorDiv(tick, spacing * ORCA_TICK_ARRAY_SIZE);
208
230
  return { address: findProgramAddress([utf8('tick_array'), decodeAddress(pool), utf8(String(start))], ORCA_WHIRLPOOL_PROGRAM_ID), start };
209
231
  }
210
- function raydiumTick(account, start, tick, spacing) {
232
+ const rewardOutside = (b, offset) => [b.u128(offset), b.u128(offset + 16), b.u128(offset + 32)];
233
+ export function raydiumTick(account, start, tick, spacing) {
211
234
  raydiumDiscriminator ??= discriminator('TickArrayState');
212
235
  const offset = 44 + ((tick - start) / spacing) * RAYDIUM_TICK_SIZE;
213
236
  // 先认判别符、查长度再读字段(PDA 上可能是别的账户,如被转过 SOL 的系统账户)
@@ -219,14 +242,14 @@ function raydiumTick(account, start, tick, spacing) {
219
242
  return null;
220
243
  }
221
244
  // Raydium 不区分是否初始化:没用过的 tick 各项都是 0,按程序的公式算出来就是对的
222
- return { initialized: true, feeGrowthOutside0: b.u128(offset + 36), feeGrowthOutside1: b.u128(offset + 52) };
245
+ return { initialized: true, feeGrowthOutside0: b.u128(offset + 36), feeGrowthOutside1: b.u128(offset + 52), rewardGrowthsOutside: rewardOutside(b, offset + 68) };
223
246
  }
224
247
  /** Anchor 账户判别符:sha256("account:<名称>") 的前 8 字节 */
225
248
  const discriminator = (name) => sha256(utf8(`account:${name}`)).subarray(0, 8);
226
249
  let orcaDiscriminators;
227
250
  let raydiumDiscriminator;
228
251
  const startsWith = (data, prefix) => data.length >= prefix.length && prefix.every((byte, i) => data[i] === byte);
229
- function orcaTick(account, start, tick, spacing) {
252
+ export function orcaTick(account, start, tick, spacing) {
230
253
  orcaDiscriminators ??= { fixed: discriminator('TickArray'), dynamic: discriminator('DynamicTickArray') };
231
254
  if (account.data.length < 60) {
232
255
  return null; // 两种格式的头部(判别符 + start + …)都放不下
@@ -239,7 +262,7 @@ function orcaTick(account, start, tick, spacing) {
239
262
  if (b.i32(8) !== start || offset + ORCA_TICK_SIZE > account.data.length) {
240
263
  return null;
241
264
  }
242
- return { initialized: b.u8(offset) === 1, feeGrowthOutside0: b.u128(offset + 33), feeGrowthOutside1: b.u128(offset + 49) };
265
+ return { initialized: b.u8(offset) === 1, feeGrowthOutside0: b.u128(offset + 33), feeGrowthOutside1: b.u128(offset + 49), rewardGrowthsOutside: rewardOutside(b, offset + 65) };
243
266
  }
244
267
  if (startsWith(account.data, orcaDiscriminators.dynamic)) {
245
268
  // 可变大小:start i32 | whirlpool | tick_bitmap u128 | ticks(未初始化 1 字节 0;初始化 1 字节 1 + 112 字节数据)
@@ -262,7 +285,7 @@ function orcaTick(account, start, tick, spacing) {
262
285
  if (offset + 113 > account.data.length) {
263
286
  return null;
264
287
  }
265
- return { initialized: true, feeGrowthOutside0: b.u128(offset + 33), feeGrowthOutside1: b.u128(offset + 49) };
288
+ return { initialized: true, feeGrowthOutside0: b.u128(offset + 33), feeGrowthOutside1: b.u128(offset + 49), rewardGrowthsOutside: rewardOutside(b, offset + 65) };
266
289
  }
267
290
  return null;
268
291
  }
@@ -325,12 +348,9 @@ export async function lpPositions(client, owner, options = {}) {
325
348
  if (!account) {
326
349
  return;
327
350
  }
328
- const program = SOLANA_LP_PROTOCOLS[c.protocol].programId;
329
- if (c.protocol === 'raydium-clmm' && account.owner === program && account.data.length === RAYDIUM_POSITION_SIZE) {
330
- positions.push(raydiumPosition(c.address, new Bytes(account.data)));
331
- }
332
- else if (c.protocol === 'orca-whirlpool' && account.owner === program && account.data.length === ORCA_POSITION_SIZE) {
333
- positions.push(orcaPosition(c.address, new Bytes(account.data)));
351
+ const parsed = parseClmmPosition(c.protocol, c.address, account);
352
+ if (parsed) {
353
+ positions.push(parsed);
334
354
  }
335
355
  });
336
356
  // LP mint 的权限是 AMM v4 / CPMM 的固定权限地址时才去找池子
@@ -434,10 +454,35 @@ export async function lpPositions(client, owner, options = {}) {
434
454
  fees1 = null;
435
455
  }
436
456
  }
437
- if (!options.includeClosed && position.liquidity === 0n && fees0 === 0n && fees1 === 0n) {
457
+ // 未领取的挖矿奖励:没有流动性时只有已记账的;有流动性时先把池子的奖励增长结算到 now,再按区间内的增长算新增
458
+ let rewards;
459
+ if (options.rewards) {
460
+ const now = BigInt(Math.floor(options.now ?? Date.now() / 1000));
461
+ const ticks = (() => {
462
+ if (!arrays)
463
+ return null;
464
+ const read = position.protocol === 'raydium-clmm' ? raydiumTick : orcaTick;
465
+ const lowerAccount = byAddress.get(arrays.lower.address);
466
+ const upperAccount = byAddress.get(arrays.upper.address);
467
+ const lower = lowerAccount ? read(lowerAccount, arrays.lower.start, position.tickLower, pool.tickSpacing) : null;
468
+ const upper = upperAccount ? read(upperAccount, arrays.upper.start, position.tickUpper, pool.tickSpacing) : null;
469
+ return lower && upper ? { lower, upper } : null;
470
+ })();
471
+ rewards = pool.rewards.map(({ index, mint, emission }) => {
472
+ const state = position.rewards[index];
473
+ if (!arrays)
474
+ return { index, mint, amount: state.owed };
475
+ if (!ticks)
476
+ return { index, mint, amount: null };
477
+ const global = rewardGrowthGlobal(pool.liquidity, emission, now);
478
+ const inside = getRewardGrowthInside(pool.tick, position.tickLower, ticks.lower, position.tickUpper, ticks.upper, index, global);
479
+ return { index, mint, amount: getFeesOwed(state.owed, position.liquidity, inside, state.growthLast) };
480
+ });
481
+ }
482
+ if (!options.includeClosed && position.liquidity === 0n && fees0 === 0n && fees1 === 0n && !rewards?.some((x) => x.amount !== 0n)) {
438
483
  continue;
439
484
  }
440
- raw.push({ type: 'clmm', position, pool: { ...pool, fee: pool.fee ?? (pool.ammConfig ? (feeRates.get(pool.ammConfig) ?? null) : null) }, amount0, amount1, fees0, fees1 });
485
+ raw.push({ type: 'clmm', position, pool: { ...pool, fee: pool.fee ?? (pool.ammConfig ? (feeRates.get(pool.ammConfig) ?? null) : null) }, amount0, amount1, fees0, fees1, rewards });
441
486
  }
442
487
  for (const pool of ammHeld) {
443
488
  const balance = held.get(pool.lpMint)?.amount ?? 0n;
@@ -464,9 +509,9 @@ export async function lpPositions(client, owner, options = {}) {
464
509
  }
465
510
  /**
466
511
  * 节点不提供这个方法(方法不存在、被拦截、需要付费 / Token、403 等):这时报错里说明怎么绕过。
467
- * 多节点时所有节点都是这个原因才算;限频、超时、网络不对等原样抛出
512
+ * 多节点时所有节点都是这个原因才算;限频、超时、网络不对等原样抛出(资产总值 portfolio 也用)
468
513
  */
469
- function methodUnavailable(err) {
514
+ export function methodUnavailable(err) {
470
515
  if (err instanceof AllNodesFailedError) {
471
516
  return err.errors.length > 0 && err.errors.every((e) => methodUnavailable(e.error));
472
517
  }
@@ -522,7 +567,7 @@ async function findAmmPool(client, protocol, lpMint, signal) {
522
567
  }
523
568
  async function finalize(client, raw, options) {
524
569
  const { signal } = options;
525
- const mints = [...new Set(raw.flatMap((r) => [r.pool.mint0, r.pool.mint1]))];
570
+ const mints = [...new Set(raw.flatMap((r) => [r.pool.mint0, r.pool.mint1, ...(r.type === 'clmm' ? (r.rewards ?? []).map((x) => x.mint) : [])]))];
526
571
  const priceSource = options.prices === true ? defillamaPrices() : options.prices || null;
527
572
  const fetchFn = options.fetch ?? ((...args) => fetch(...args));
528
573
  // 价格源出错(服务不可用、被拦截、同步抛错等)时照样返回仓位,只是不带价格;取消查询时照常 reject
@@ -531,8 +576,8 @@ async function finalize(client, raw, options) {
531
576
  return new Map();
532
577
  }
533
578
  try {
534
- // wSOL 的价格就是 SOL 的价格,DefiLlama 用 So111…112 查得到
535
- return await priceSource.prices({ mints, fetch: fetchFn, signal });
579
+ // wSOL 的价格就是 SOL 的价格,DefiLlama 用 So111…112 查得到;client 给链上价格源读池子
580
+ return await priceSource.prices({ mints, fetch: fetchFn, signal, client });
536
581
  }
537
582
  catch (err) {
538
583
  if (signal?.aborted) {
@@ -601,6 +646,11 @@ async function finalize(client, raw, options) {
601
646
  const d1 = token1.decimals;
602
647
  const fees0Formatted = r.fees0 === null ? null : fmt(r.fees0, token0);
603
648
  const fees1Formatted = r.fees1 === null ? null : fmt(r.fees1, token1);
649
+ const rewards = r.rewards?.map((x) => {
650
+ const t = token(x.mint, null);
651
+ const formatted = x.amount === null ? null : fmt(x.amount, t);
652
+ return { index: x.index, mint: x.mint, symbol: t.symbol, decimals: t.decimals, amount: x.amount === null ? null : x.amount.toString(), formatted, ...(priceSource ? { usd: x.amount === 0n ? 0 : usd(t, formatted) } : {}) };
653
+ });
604
654
  return {
605
655
  ...base,
606
656
  type: 'clmm',
@@ -621,6 +671,8 @@ async function finalize(client, raw, options) {
621
671
  fees0Formatted,
622
672
  fees1Formatted,
623
673
  ...(priceSource ? { feesUsd: r.fees0 === null || r.fees1 === null ? null : sum(usd(token0, fees0Formatted), usd(token1, fees1Formatted), r.fees0, r.fees1) } : {}),
674
+ ...(rewards ? { rewards } : {}),
675
+ ...(rewards && priceSource ? { rewardsUsd: rewards.some((x) => x.usd === null || x.usd === undefined) ? null : rewards.reduce((acc, x) => acc + (x.usd ?? 0), 0) } : {}),
624
676
  };
625
677
  });
626
678
  if (priceSource) {
package/dist/lp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lp.js","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lp.js","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"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"}
package/dist/lpMath.d.ts CHANGED
@@ -19,6 +19,8 @@ export interface TickFeeData {
19
19
  initialized: boolean;
20
20
  feeGrowthOutside0: bigint;
21
21
  feeGrowthOutside1: bigint;
22
+ /** 三个挖矿奖励的 tick 外增长(读 tick 时带上;只算手续费时可以不给) */
23
+ rewardGrowthsOutside?: readonly bigint[];
22
24
  }
23
25
  /**
24
26
  * 区间内的手续费增长(u128 回绕)。Raydium 不区分是否初始化(未初始化的 tick 各项为 0,传 initialized: true 即可);
@@ -30,6 +32,26 @@ export declare function getFeeGrowthInside(tick: number, tickLower: number, lowe
30
32
  * 新增部分超过 u64 时:Orca 程序记为 0(checked_mul_shift_right 失败),这里同样记为 0(正常仓位不会碰到)
31
33
  */
32
34
  export declare function getFeesOwed(owed: bigint, liquidity: bigint, growthInside: bigint, growthLast: bigint): bigint;
35
+ /** 池子里一个挖矿奖励的状态(两个程序的 reward_infos 里的同名字段) */
36
+ export interface RewardEmission {
37
+ /** 已初始化:奖励的 mint 不是默认地址 */
38
+ initialized: boolean;
39
+ emissionsPerSecondX64: bigint;
40
+ growthGlobalX64: bigint;
41
+ /** 上次更新的时间(秒)。Raydium 每个奖励自己记;Orca 是池子的 reward_last_updated_timestamp(三个奖励相同) */
42
+ lastUpdated: bigint;
43
+ /** 开始 / 结束时间(秒):Raydium 的 open_time / end_time;Orca 没有,传 0n / 2^64 − 1 */
44
+ openTime: bigint;
45
+ endTime: bigint;
46
+ }
47
+ /**
48
+ * 池子在 now 时刻的奖励全局增长:程序每次操作池子(交易、增减流动性、领取)前先把排放按时间摊给当前的流动性,
49
+ * Q64.64:growth += Δt · emissions_per_second / liquidity(向下取整,u128 回绕)。
50
+ * Raydium:now ≤ open_time 不动,Δt 到 end_time 为止;Orca:池子流动性为 0 或 Δt 为 0 不动
51
+ */
52
+ export declare function rewardGrowthGlobal(liquidity: bigint, reward: RewardEmission, now: bigint): bigint;
53
+ /** 区间内某个奖励的增长(u128 回绕),tick 未初始化的处理同 getFeeGrowthInside */
54
+ export declare function getRewardGrowthInside(tick: number, tickLower: number, lower: TickFeeData, tickUpper: number, upper: TickFeeData, index: number, global: bigint): bigint;
33
55
  /** Q64.64 sqrt 价格 → token1 / token0 的价格(按精度换算,浮点数,只用于展示) */
34
56
  export declare function sqrtPriceToPrice(sqrtPrice: bigint, decimals0: number, decimals1: number): number;
35
57
  /** tick → token1 / token0 的价格(1.0001^tick,按精度换算,只用于展示) */