forgex-cli 1.0.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 (275) hide show
  1. package/README.md +479 -0
  2. package/dist/bin/forgex.d.ts +12 -0
  3. package/dist/bin/forgex.d.ts.map +1 -0
  4. package/dist/bin/forgex.js +23 -0
  5. package/dist/bin/forgex.js.map +1 -0
  6. package/dist/src/adapters/codex-adapter.d.ts +238 -0
  7. package/dist/src/adapters/codex-adapter.d.ts.map +1 -0
  8. package/dist/src/adapters/codex-adapter.js +524 -0
  9. package/dist/src/adapters/codex-adapter.js.map +1 -0
  10. package/dist/src/adapters/connection.d.ts +20 -0
  11. package/dist/src/adapters/connection.d.ts.map +1 -0
  12. package/dist/src/adapters/connection.js +43 -0
  13. package/dist/src/adapters/connection.js.map +1 -0
  14. package/dist/src/adapters/ipfs.d.ts +17 -0
  15. package/dist/src/adapters/ipfs.d.ts.map +1 -0
  16. package/dist/src/adapters/ipfs.js +30 -0
  17. package/dist/src/adapters/ipfs.js.map +1 -0
  18. package/dist/src/adapters/jito-adapter.d.ts +194 -0
  19. package/dist/src/adapters/jito-adapter.d.ts.map +1 -0
  20. package/dist/src/adapters/jito-adapter.js +474 -0
  21. package/dist/src/adapters/jito-adapter.js.map +1 -0
  22. package/dist/src/adapters/rpc-adapter.d.ts +148 -0
  23. package/dist/src/adapters/rpc-adapter.d.ts.map +1 -0
  24. package/dist/src/adapters/rpc-adapter.js +410 -0
  25. package/dist/src/adapters/rpc-adapter.js.map +1 -0
  26. package/dist/src/adapters/sdk-adapter.d.ts +148 -0
  27. package/dist/src/adapters/sdk-adapter.d.ts.map +1 -0
  28. package/dist/src/adapters/sdk-adapter.js +554 -0
  29. package/dist/src/adapters/sdk-adapter.js.map +1 -0
  30. package/dist/src/commands/config/index.d.ts +8 -0
  31. package/dist/src/commands/config/index.d.ts.map +1 -0
  32. package/dist/src/commands/config/index.js +91 -0
  33. package/dist/src/commands/config/index.js.map +1 -0
  34. package/dist/src/commands/query/index.d.ts +10 -0
  35. package/dist/src/commands/query/index.d.ts.map +1 -0
  36. package/dist/src/commands/query/index.js +376 -0
  37. package/dist/src/commands/query/index.js.map +1 -0
  38. package/dist/src/commands/sniper/index.d.ts +16 -0
  39. package/dist/src/commands/sniper/index.d.ts.map +1 -0
  40. package/dist/src/commands/sniper/index.js +292 -0
  41. package/dist/src/commands/sniper/index.js.map +1 -0
  42. package/dist/src/commands/token/index.d.ts +16 -0
  43. package/dist/src/commands/token/index.d.ts.map +1 -0
  44. package/dist/src/commands/token/index.js +295 -0
  45. package/dist/src/commands/token/index.js.map +1 -0
  46. package/dist/src/commands/tools/index.d.ts +17 -0
  47. package/dist/src/commands/tools/index.d.ts.map +1 -0
  48. package/dist/src/commands/tools/index.js +626 -0
  49. package/dist/src/commands/tools/index.js.map +1 -0
  50. package/dist/src/commands/trade/index.d.ts +8 -0
  51. package/dist/src/commands/trade/index.d.ts.map +1 -0
  52. package/dist/src/commands/trade/index.js +531 -0
  53. package/dist/src/commands/trade/index.js.map +1 -0
  54. package/dist/src/commands/transfer/index.d.ts +16 -0
  55. package/dist/src/commands/transfer/index.d.ts.map +1 -0
  56. package/dist/src/commands/transfer/index.js +509 -0
  57. package/dist/src/commands/transfer/index.js.map +1 -0
  58. package/dist/src/commands/wallet/index.d.ts +10 -0
  59. package/dist/src/commands/wallet/index.d.ts.map +1 -0
  60. package/dist/src/commands/wallet/index.js +828 -0
  61. package/dist/src/commands/wallet/index.js.map +1 -0
  62. package/dist/src/config.d.ts +74 -0
  63. package/dist/src/config.d.ts.map +1 -0
  64. package/dist/src/config.js +190 -0
  65. package/dist/src/config.js.map +1 -0
  66. package/dist/src/const/IDL/index.d.ts +4 -0
  67. package/dist/src/const/IDL/index.d.ts.map +1 -0
  68. package/dist/src/const/IDL/index.js +2 -0
  69. package/dist/src/const/IDL/index.js.map +1 -0
  70. package/dist/src/const/IDL/meteora-DLMM.d.ts +10249 -0
  71. package/dist/src/const/IDL/meteora-DLMM.d.ts.map +1 -0
  72. package/dist/src/const/IDL/meteora-DLMM.js +4177 -0
  73. package/dist/src/const/IDL/meteora-DLMM.js.map +1 -0
  74. package/dist/src/const/IDL/pump-fun.d.ts +4811 -0
  75. package/dist/src/const/IDL/pump-fun.d.ts.map +1 -0
  76. package/dist/src/const/IDL/pump-fun.js +2954 -0
  77. package/dist/src/const/IDL/pump-fun.js.map +1 -0
  78. package/dist/src/const/IDL/pump-swap-IDL.d.ts +3119 -0
  79. package/dist/src/const/IDL/pump-swap-IDL.d.ts.map +1 -0
  80. package/dist/src/const/IDL/pump-swap-IDL.js +2095 -0
  81. package/dist/src/const/IDL/pump-swap-IDL.js.map +1 -0
  82. package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts +4031 -0
  83. package/dist/src/const/IDL/raydium-launchlab-IDL.d.ts.map +1 -0
  84. package/dist/src/const/IDL/raydium-launchlab-IDL.js +2110 -0
  85. package/dist/src/const/IDL/raydium-launchlab-IDL.js.map +1 -0
  86. package/dist/src/const/index.d.ts +40 -0
  87. package/dist/src/const/index.d.ts.map +1 -0
  88. package/dist/src/const/index.js +57 -0
  89. package/dist/src/const/index.js.map +1 -0
  90. package/dist/src/data-source.d.ts +270 -0
  91. package/dist/src/data-source.d.ts.map +1 -0
  92. package/dist/src/data-source.js +628 -0
  93. package/dist/src/data-source.js.map +1 -0
  94. package/dist/src/data-store/index.d.ts +87 -0
  95. package/dist/src/data-store/index.d.ts.map +1 -0
  96. package/dist/src/data-store/index.js +561 -0
  97. package/dist/src/data-store/index.js.map +1 -0
  98. package/dist/src/data-store/types.d.ts +91 -0
  99. package/dist/src/data-store/types.d.ts.map +1 -0
  100. package/dist/src/data-store/types.js +8 -0
  101. package/dist/src/data-store/types.js.map +1 -0
  102. package/dist/src/index.d.ts +8 -0
  103. package/dist/src/index.d.ts.map +1 -0
  104. package/dist/src/index.js +36 -0
  105. package/dist/src/index.js.map +1 -0
  106. package/dist/src/output.d.ts +52 -0
  107. package/dist/src/output.d.ts.map +1 -0
  108. package/dist/src/output.js +218 -0
  109. package/dist/src/output.js.map +1 -0
  110. package/dist/src/shims/store.d.ts +58 -0
  111. package/dist/src/shims/store.d.ts.map +1 -0
  112. package/dist/src/shims/store.js +55 -0
  113. package/dist/src/shims/store.js.map +1 -0
  114. package/dist/src/sol-sdk/account/index.d.ts +13 -0
  115. package/dist/src/sol-sdk/account/index.d.ts.map +1 -0
  116. package/dist/src/sol-sdk/account/index.js +174 -0
  117. package/dist/src/sol-sdk/account/index.js.map +1 -0
  118. package/dist/src/sol-sdk/account/lookupTable.d.ts +24 -0
  119. package/dist/src/sol-sdk/account/lookupTable.d.ts.map +1 -0
  120. package/dist/src/sol-sdk/account/lookupTable.js +103 -0
  121. package/dist/src/sol-sdk/account/lookupTable.js.map +1 -0
  122. package/dist/src/sol-sdk/batch/create.d.ts +23 -0
  123. package/dist/src/sol-sdk/batch/create.d.ts.map +1 -0
  124. package/dist/src/sol-sdk/batch/create.js +580 -0
  125. package/dist/src/sol-sdk/batch/create.js.map +1 -0
  126. package/dist/src/sol-sdk/batch/external-sniper.d.ts +31 -0
  127. package/dist/src/sol-sdk/batch/external-sniper.d.ts.map +1 -0
  128. package/dist/src/sol-sdk/batch/external-sniper.js +163 -0
  129. package/dist/src/sol-sdk/batch/external-sniper.js.map +1 -0
  130. package/dist/src/sol-sdk/batch/index.d.ts +144 -0
  131. package/dist/src/sol-sdk/batch/index.d.ts.map +1 -0
  132. package/dist/src/sol-sdk/batch/index.js +1573 -0
  133. package/dist/src/sol-sdk/batch/index.js.map +1 -0
  134. package/dist/src/sol-sdk/calc.d.ts +277 -0
  135. package/dist/src/sol-sdk/calc.d.ts.map +1 -0
  136. package/dist/src/sol-sdk/calc.js +590 -0
  137. package/dist/src/sol-sdk/calc.js.map +1 -0
  138. package/dist/src/sol-sdk/index.d.ts +1 -0
  139. package/dist/src/sol-sdk/index.d.ts.map +1 -0
  140. package/dist/src/sol-sdk/index.js +1 -0
  141. package/dist/src/sol-sdk/index.js.map +1 -0
  142. package/dist/src/sol-sdk/jito/index.d.ts +50 -0
  143. package/dist/src/sol-sdk/jito/index.d.ts.map +1 -0
  144. package/dist/src/sol-sdk/jito/index.js +225 -0
  145. package/dist/src/sol-sdk/jito/index.js.map +1 -0
  146. package/dist/src/sol-sdk/launchlab/index.d.ts +32 -0
  147. package/dist/src/sol-sdk/launchlab/index.d.ts.map +1 -0
  148. package/dist/src/sol-sdk/launchlab/index.js +78 -0
  149. package/dist/src/sol-sdk/launchlab/index.js.map +1 -0
  150. package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts +27 -0
  151. package/dist/src/sol-sdk/launchlab/instructions/buy.d.ts.map +1 -0
  152. package/dist/src/sol-sdk/launchlab/instructions/buy.js +124 -0
  153. package/dist/src/sol-sdk/launchlab/instructions/buy.js.map +1 -0
  154. package/dist/src/sol-sdk/launchlab/instructions/create.d.ts +27 -0
  155. package/dist/src/sol-sdk/launchlab/instructions/create.d.ts.map +1 -0
  156. package/dist/src/sol-sdk/launchlab/instructions/create.js +125 -0
  157. package/dist/src/sol-sdk/launchlab/instructions/create.js.map +1 -0
  158. package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts +15 -0
  159. package/dist/src/sol-sdk/launchlab/instructions/sell.d.ts.map +1 -0
  160. package/dist/src/sol-sdk/launchlab/instructions/sell.js +65 -0
  161. package/dist/src/sol-sdk/launchlab/instructions/sell.js.map +1 -0
  162. package/dist/src/sol-sdk/meteora/index.d.ts +32 -0
  163. package/dist/src/sol-sdk/meteora/index.d.ts.map +1 -0
  164. package/dist/src/sol-sdk/meteora/index.js +72 -0
  165. package/dist/src/sol-sdk/meteora/index.js.map +1 -0
  166. package/dist/src/sol-sdk/meteora/instructions/buy.d.ts +46 -0
  167. package/dist/src/sol-sdk/meteora/instructions/buy.d.ts.map +1 -0
  168. package/dist/src/sol-sdk/meteora/instructions/buy.js +153 -0
  169. package/dist/src/sol-sdk/meteora/instructions/buy.js.map +1 -0
  170. package/dist/src/sol-sdk/meteora/instructions/sell.d.ts +24 -0
  171. package/dist/src/sol-sdk/meteora/instructions/sell.d.ts.map +1 -0
  172. package/dist/src/sol-sdk/meteora/instructions/sell.js +98 -0
  173. package/dist/src/sol-sdk/meteora/instructions/sell.js.map +1 -0
  174. package/dist/src/sol-sdk/pump/index.d.ts +22 -0
  175. package/dist/src/sol-sdk/pump/index.d.ts.map +1 -0
  176. package/dist/src/sol-sdk/pump/index.js +101 -0
  177. package/dist/src/sol-sdk/pump/index.js.map +1 -0
  178. package/dist/src/sol-sdk/pump/instructions/buy.d.ts +29 -0
  179. package/dist/src/sol-sdk/pump/instructions/buy.d.ts.map +1 -0
  180. package/dist/src/sol-sdk/pump/instructions/buy.js +131 -0
  181. package/dist/src/sol-sdk/pump/instructions/buy.js.map +1 -0
  182. package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts +36 -0
  183. package/dist/src/sol-sdk/pump/instructions/createAndBuy.d.ts.map +1 -0
  184. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js +77 -0
  185. package/dist/src/sol-sdk/pump/instructions/createAndBuy.js.map +1 -0
  186. package/dist/src/sol-sdk/pump/instructions/sell.d.ts +7 -0
  187. package/dist/src/sol-sdk/pump/instructions/sell.d.ts.map +1 -0
  188. package/dist/src/sol-sdk/pump/instructions/sell.js +38 -0
  189. package/dist/src/sol-sdk/pump/instructions/sell.js.map +1 -0
  190. package/dist/src/sol-sdk/pumpswap/index.d.ts +9 -0
  191. package/dist/src/sol-sdk/pumpswap/index.d.ts.map +1 -0
  192. package/dist/src/sol-sdk/pumpswap/index.js +27 -0
  193. package/dist/src/sol-sdk/pumpswap/index.js.map +1 -0
  194. package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts +61 -0
  195. package/dist/src/sol-sdk/pumpswap/instructions/buy.d.ts.map +1 -0
  196. package/dist/src/sol-sdk/pumpswap/instructions/buy.js +215 -0
  197. package/dist/src/sol-sdk/pumpswap/instructions/buy.js.map +1 -0
  198. package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts +3 -0
  199. package/dist/src/sol-sdk/pumpswap/instructions/migrate.d.ts.map +1 -0
  200. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js +33 -0
  201. package/dist/src/sol-sdk/pumpswap/instructions/migrate.js.map +1 -0
  202. package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts +20 -0
  203. package/dist/src/sol-sdk/pumpswap/instructions/sell.d.ts.map +1 -0
  204. package/dist/src/sol-sdk/pumpswap/instructions/sell.js +107 -0
  205. package/dist/src/sol-sdk/pumpswap/instructions/sell.js.map +1 -0
  206. package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts +28 -0
  207. package/dist/src/sol-sdk/pumpswap/rpc/index.d.ts.map +1 -0
  208. package/dist/src/sol-sdk/pumpswap/rpc/index.js +63 -0
  209. package/dist/src/sol-sdk/pumpswap/rpc/index.js.map +1 -0
  210. package/dist/src/sol-sdk/raydium/index.d.ts +16 -0
  211. package/dist/src/sol-sdk/raydium/index.d.ts.map +1 -0
  212. package/dist/src/sol-sdk/raydium/index.js +47 -0
  213. package/dist/src/sol-sdk/raydium/index.js.map +1 -0
  214. package/dist/src/sol-sdk/raydium/instructions/buy.d.ts +29 -0
  215. package/dist/src/sol-sdk/raydium/instructions/buy.d.ts.map +1 -0
  216. package/dist/src/sol-sdk/raydium/instructions/buy.js +106 -0
  217. package/dist/src/sol-sdk/raydium/instructions/buy.js.map +1 -0
  218. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts +29 -0
  219. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.d.ts.map +1 -0
  220. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js +80 -0
  221. package/dist/src/sol-sdk/raydium/instructions/cpmmBuy.js.map +1 -0
  222. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts +17 -0
  223. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.d.ts.map +1 -0
  224. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js +56 -0
  225. package/dist/src/sol-sdk/raydium/instructions/cpmmSell.js.map +1 -0
  226. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts +8558 -0
  227. package/dist/src/sol-sdk/raydium/instructions/sell.d.ts.map +1 -0
  228. package/dist/src/sol-sdk/raydium/instructions/sell.js +70 -0
  229. package/dist/src/sol-sdk/raydium/instructions/sell.js.map +1 -0
  230. package/dist/src/sol-sdk/raydium/rpc/index.d.ts +39 -0
  231. package/dist/src/sol-sdk/raydium/rpc/index.d.ts.map +1 -0
  232. package/dist/src/sol-sdk/raydium/rpc/index.js +82 -0
  233. package/dist/src/sol-sdk/raydium/rpc/index.js.map +1 -0
  234. package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts +5 -0
  235. package/dist/src/sol-sdk/raydium/rpc/raydium.d.ts.map +1 -0
  236. package/dist/src/sol-sdk/raydium/rpc/raydium.js +18 -0
  237. package/dist/src/sol-sdk/raydium/rpc/raydium.js.map +1 -0
  238. package/dist/src/sol-sdk/rpc/index.d.ts +33 -0
  239. package/dist/src/sol-sdk/rpc/index.d.ts.map +1 -0
  240. package/dist/src/sol-sdk/rpc/index.js +128 -0
  241. package/dist/src/sol-sdk/rpc/index.js.map +1 -0
  242. package/dist/src/sol-sdk/transfer/index.d.ts +24 -0
  243. package/dist/src/sol-sdk/transfer/index.d.ts.map +1 -0
  244. package/dist/src/sol-sdk/transfer/index.js +65 -0
  245. package/dist/src/sol-sdk/transfer/index.js.map +1 -0
  246. package/dist/src/sol-sdk/turnover/index.d.ts +84 -0
  247. package/dist/src/sol-sdk/turnover/index.d.ts.map +1 -0
  248. package/dist/src/sol-sdk/turnover/index.js +569 -0
  249. package/dist/src/sol-sdk/turnover/index.js.map +1 -0
  250. package/dist/src/tx-tracker/detail-adapter.d.ts +100 -0
  251. package/dist/src/tx-tracker/detail-adapter.d.ts.map +1 -0
  252. package/dist/src/tx-tracker/detail-adapter.js +215 -0
  253. package/dist/src/tx-tracker/detail-adapter.js.map +1 -0
  254. package/dist/src/tx-tracker/index.d.ts +142 -0
  255. package/dist/src/tx-tracker/index.d.ts.map +1 -0
  256. package/dist/src/tx-tracker/index.js +447 -0
  257. package/dist/src/tx-tracker/index.js.map +1 -0
  258. package/dist/src/types/index.d.ts +76 -0
  259. package/dist/src/types/index.d.ts.map +1 -0
  260. package/dist/src/types/index.js +69 -0
  261. package/dist/src/types/index.js.map +1 -0
  262. package/dist/src/types/websocket.d.ts +15 -0
  263. package/dist/src/types/websocket.d.ts.map +1 -0
  264. package/dist/src/types/websocket.js +18 -0
  265. package/dist/src/types/websocket.js.map +1 -0
  266. package/dist/src/utils/index.d.ts +13 -0
  267. package/dist/src/utils/index.d.ts.map +1 -0
  268. package/dist/src/utils/index.js +174 -0
  269. package/dist/src/utils/index.js.map +1 -0
  270. package/dist/src/wallet-store.d.ts +124 -0
  271. package/dist/src/wallet-store.d.ts.map +1 -0
  272. package/dist/src/wallet-store.js +524 -0
  273. package/dist/src/wallet-store.js.map +1 -0
  274. package/package.json +86 -0
  275. package/scripts/postinstall.js +88 -0
@@ -0,0 +1,98 @@
1
+ import { Program } from '@coral-xyz/anchor';
2
+ import { Keypair, PublicKey, Transaction, SystemProgram, } from '@solana/web3.js';
3
+ import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddress, TOKEN_PROGRAM_ID, NATIVE_MINT, createInitializeAccountInstruction, createCloseAccountInstruction, } from '@solana/spl-token';
4
+ import { BN } from 'bn.js';
5
+ import BigNumber from 'bignumber.js';
6
+ import { IDL } from '../../../const/IDL/meteora-DLMM.js';
7
+ import { METEORA_DLMM_PROGRAM, METEORA_DLMM_EVENT_AUTHORITY } from '../../../const/index.js';
8
+ export async function sellInstructions({ provider, owner, mint, poolInfo, amount, minAmountOut, needCreateAtaAccount = true, needCloseTokenAccount = false, needCloseWsolAccount = true, initialWsolAccount, createWsolAccountInstruction, binArraysPubkey, }) {
9
+ const sellAmount = new BigNumber(amount.toString()).toString(10);
10
+ const inputMint = NATIVE_MINT.toBase58();
11
+ const randomAccount = Keypair.generate();
12
+ const seed = randomAccount.publicKey.toBase58().slice(0, 32);
13
+ if (poolInfo?.mintA !== inputMint && poolInfo?.mintB !== inputMint)
14
+ return Promise.reject(new Error('output mint does not match pool'));
15
+ const transaction = new Transaction();
16
+ const baseLamports = 2039280;
17
+ // 如果提供了初始 wsolAccount,使用它;否则创建新的
18
+ const wsolAccount = initialWsolAccount || (await PublicKey.createWithSeed(owner.publicKey, seed, TOKEN_PROGRAM_ID));
19
+ const createWsolAccount = createWsolAccountInstruction ||
20
+ SystemProgram.createAccountWithSeed({
21
+ fromPubkey: owner.publicKey,
22
+ newAccountPubkey: wsolAccount,
23
+ basePubkey: owner.publicKey,
24
+ lamports: new BN(baseLamports).toNumber(),
25
+ space: 165,
26
+ programId: TOKEN_PROGRAM_ID,
27
+ seed,
28
+ });
29
+ const tokenMint = poolInfo.mintA == NATIVE_MINT.toBase58() ? poolInfo.mintB : poolInfo.mintA;
30
+ const tokenAccount = await getAssociatedTokenAddress(new PublicKey(tokenMint), owner.publicKey);
31
+ // 检查代币账户余额
32
+ // let shouldCloseTokenAccount = false;
33
+ // try {
34
+ // const balance = await connection.getTokenAccountBalance(tokenAccount);
35
+ // shouldCloseTokenAccount = balance.value.amount === sellAmount;
36
+ // } catch (error) {
37
+ // // 如果获取余额失败,不关闭账户
38
+ // console.warn('Failed to get token account balance:', error);
39
+ // }
40
+ // 只有在需要创建 Token Account 时才创建
41
+ if (needCreateAtaAccount) {
42
+ transaction.add(createWsolAccount, createInitializeAccountInstruction(wsolAccount, NATIVE_MINT, owner.publicKey));
43
+ transaction.add(createAssociatedTokenAccountIdempotentInstruction(owner.publicKey, tokenAccount, owner.publicKey, new PublicKey(tokenMint)));
44
+ }
45
+ const program = new Program(IDL, provider);
46
+ const binsPubkey = binArraysPubkey.map(item => ({
47
+ pubkey: new PublicKey(item),
48
+ isWritable: true,
49
+ isSigner: false,
50
+ }));
51
+ transaction.add(await program.methods
52
+ .swap2(new BN(sellAmount.toString()), new BN(minAmountOut.toString()), {
53
+ slices: [
54
+ {
55
+ accountsType: {
56
+ transferHookX: {},
57
+ },
58
+ length: 0,
59
+ },
60
+ {
61
+ accountsType: {
62
+ transferHookY: {},
63
+ },
64
+ length: 0,
65
+ },
66
+ ],
67
+ })
68
+ .accounts({
69
+ lbPair: new PublicKey(poolInfo.poolId),
70
+ binArrayBitmapExtension: METEORA_DLMM_PROGRAM,
71
+ reserveX: new PublicKey(poolInfo.reverseX),
72
+ reserveY: new PublicKey(poolInfo.reverseY),
73
+ tokenXMint: new PublicKey(poolInfo.mintA),
74
+ tokenYMint: new PublicKey(poolInfo.mintB),
75
+ tokenXProgram: TOKEN_PROGRAM_ID,
76
+ tokenYProgram: TOKEN_PROGRAM_ID,
77
+ userTokenIn: tokenAccount,
78
+ userTokenOut: wsolAccount,
79
+ user: owner.publicKey,
80
+ oracle: new PublicKey(poolInfo.oracle),
81
+ hostFeeIn: METEORA_DLMM_PROGRAM,
82
+ eventAuthority: METEORA_DLMM_EVENT_AUTHORITY,
83
+ program: METEORA_DLMM_PROGRAM,
84
+ })
85
+ .remainingAccounts(binsPubkey)
86
+ .instruction());
87
+ // 只有在需要关闭 WSOL 账户时才添加关闭指令
88
+ if (needCloseWsolAccount) {
89
+ transaction.add(createCloseAccountInstruction(wsolAccount, owner.publicKey, owner.publicKey));
90
+ }
91
+ // // 只有在需要关闭 Token 账户时才添加关闭指令
92
+ // if (needCloseTokenAccount) {
93
+ // transaction.add(createCloseAccountInstruction(tokenAccount, owner.publicKey, owner.publicKey));
94
+ // }
95
+ transaction.feePayer = owner.publicKey;
96
+ return transaction;
97
+ }
98
+ //# sourceMappingURL=sell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sell.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/meteora/instructions/sell.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import { sellSPLInstructions } from './instructions/sell';
3
+ import { buySPLInstructions, calcCAPrice, buySPLFromAmountInstructions } from './instructions/buy';
4
+ import { createSPLInstruction, createAndDevBuyInstruction } from './instructions/createAndBuy';
5
+ import { Connection } from '@solana/web3.js';
6
+ export declare function getBondingCurvePDA(mint: PublicKey): PublicKey;
7
+ export declare const getCreatorVaultPDA: (creator: PublicKey) => PublicKey;
8
+ export declare const getGlobalVolumeAccmulatorPDA: () => PublicKey;
9
+ export declare const getUserVolumeAccumulatorPDA: (user: PublicKey) => PublicKey;
10
+ export declare const getPumpCurveState: (connection: Connection, poolId: string, times?: number) => Promise<any>;
11
+ /**
12
+ bondingCurveProgress = ((1_073_000_000* 10**6) - virtual_token_reserves) * 100 / (793_100_000 * 10**6)
13
+ */
14
+ export declare const getPumpProgress: (connection: Connection, poolId: string) => Promise<{
15
+ bondingCurve: string;
16
+ progress: number;
17
+ complete: any;
18
+ }>;
19
+ export declare function pumpFunFeeConfigPda(): PublicKey;
20
+ export declare const pumpSwapFeeConfigPda: () => PublicKey;
21
+ export { sellSPLInstructions as pumpSellSPLInstructions, buySPLInstructions as pumpBuySPLInstructions, calcCAPrice as pumpCalcCAPrice, createSPLInstruction as pumpCreateSPLInstruction, createAndDevBuyInstruction as pumpCreateAndDevBuyInstruction, buySPLFromAmountInstructions as pumpBuySPLFromAmountInstructions, };
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sol-sdk/pump/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,aAKjD;AAED,eAAO,MAAM,kBAAkB,GAAI,SAAS,SAAS,cAKpD,CAAC;AAEF,eAAO,MAAM,4BAA4B,iBAKxC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,MAAM,SAAS,cAK1D,CAAC;AAuCF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,UAAU,EACtB,QAAQ,MAAM,EACd,cAAS,KACR,OAAO,CAAC,GAAG,CA6Bb,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAU,YAAY,UAAU,EAAE,QAAQ,MAAM;;;;EAU3E,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,SAAS,CAK/C;AAED,eAAO,MAAM,oBAAoB,QAAO,SAKvC,CAAC;AAEF,OAAO,EACL,mBAAmB,IAAI,uBAAuB,EAC9C,kBAAkB,IAAI,sBAAsB,EAC5C,WAAW,IAAI,eAAe,EAC9B,oBAAoB,IAAI,wBAAwB,EAChD,0BAA0B,IAAI,8BAA8B,EAC5D,4BAA4B,IAAI,gCAAgC,GACjE,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { AnchorProvider, Program } from '@coral-xyz/anchor';
2
+ import { Keypair, PublicKey } from '@solana/web3.js';
3
+ import { PUMP_FUN_PROGRAM, PUMP_FEE_PROGRAM, PUMP_SWAP_PROGRAM } from '../../const/index.js';
4
+ import { sellSPLInstructions } from './instructions/sell.js';
5
+ import { buySPLInstructions, calcCAPrice, buySPLFromAmountInstructions } from './instructions/buy.js';
6
+ import { createSPLInstruction, createAndDevBuyInstruction } from './instructions/createAndBuy.js';
7
+ import { IDL as PumpFunIDL } from '../../const/IDL/pump-fun.js';
8
+ export function getBondingCurvePDA(mint) {
9
+ return PublicKey.findProgramAddressSync([Buffer.from('bonding-curve'), mint.toBuffer()], PUMP_FUN_PROGRAM)[0];
10
+ }
11
+ export const getCreatorVaultPDA = (creator) => {
12
+ return PublicKey.findProgramAddressSync([Buffer.from('creator-vault'), creator.toBuffer()], PUMP_FUN_PROGRAM)[0];
13
+ };
14
+ export const getGlobalVolumeAccmulatorPDA = () => {
15
+ return PublicKey.findProgramAddressSync([Buffer.from('global_volume_accumulator')], PUMP_FUN_PROGRAM)[0];
16
+ };
17
+ export const getUserVolumeAccumulatorPDA = (user) => {
18
+ return PublicKey.findProgramAddressSync([Buffer.from('user_volume_accumulator'), user.toBuffer()], PUMP_FUN_PROGRAM)[0];
19
+ };
20
+ const PUMP_CURVE_STATE_OFFSETS = {
21
+ VIRTUAL_TOKEN_RESERVES: 0x08,
22
+ VIRTUAL_SOL_RESERVES: 0x10,
23
+ REAL_TOKEN_RESERVES: 0x18,
24
+ REAL_SOL_RESERVES: 0x20,
25
+ TOKEN_TOTAL_SUPPLY: 0x28,
26
+ COMPLETE: 0x30,
27
+ };
28
+ function readBytes(buf, offset, length) {
29
+ const end = offset + length;
30
+ if (buf.byteLength < end)
31
+ throw new RangeError('range out of bounds');
32
+ return buf.subarray(offset, end);
33
+ }
34
+ function readBigUintLE(buf, offset, length) {
35
+ switch (length) {
36
+ case 1:
37
+ return BigInt(buf.readUint8(offset));
38
+ case 2:
39
+ return BigInt(buf.readUint16LE(offset));
40
+ case 4:
41
+ return BigInt(buf.readUint32LE(offset));
42
+ case 8:
43
+ return buf.readBigUint64LE(offset);
44
+ }
45
+ throw new Error(`unsupported data size (${length} bytes)`);
46
+ }
47
+ function readBoolean(buf, offset, length) {
48
+ const data = readBytes(buf, offset, length);
49
+ for (const b of data) {
50
+ if (b)
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ export const getPumpCurveState = async (connection, poolId, times = 0) => {
56
+ try {
57
+ const provider = new AnchorProvider(connection, {
58
+ publicKey: Keypair.generate().publicKey,
59
+ signTransaction: async () => {
60
+ throw new Error('不支持签名');
61
+ },
62
+ signAllTransactions: async () => {
63
+ throw new Error('不支持签名');
64
+ },
65
+ }, {});
66
+ const program = new Program(PumpFunIDL, provider);
67
+ const bondingCurveInfo = await program.account.bondingCurve.fetch(new PublicKey(poolId));
68
+ if (!bondingCurveInfo) {
69
+ throw new Error('Bonding curve account not found');
70
+ }
71
+ return bondingCurveInfo;
72
+ }
73
+ catch (error) {
74
+ if (times < 3) {
75
+ await new Promise(resolve => setTimeout(resolve, 500));
76
+ return getPumpCurveState(connection, poolId, times + 1);
77
+ }
78
+ throw new Error(`获取池子数据失败: ${error.message}`);
79
+ }
80
+ };
81
+ /**
82
+ bondingCurveProgress = ((1_073_000_000* 10**6) - virtual_token_reserves) * 100 / (793_100_000 * 10**6)
83
+ */
84
+ export const getPumpProgress = async (connection, poolId) => {
85
+ const data = await getPumpCurveState(connection, poolId);
86
+ const progress = ((1_073_000_000 * 10 ** 6 - Number(data.virtual_token_reserves)) * 100) /
87
+ (793_100_000 * 10 ** 6);
88
+ return {
89
+ bondingCurve: poolId,
90
+ progress,
91
+ complete: data.complete,
92
+ };
93
+ };
94
+ export function pumpFunFeeConfigPda() {
95
+ return PublicKey.findProgramAddressSync([Buffer.from('fee_config'), PUMP_FUN_PROGRAM.toBuffer()], PUMP_FEE_PROGRAM)[0];
96
+ }
97
+ export const pumpSwapFeeConfigPda = () => {
98
+ return PublicKey.findProgramAddressSync([Buffer.from('fee_config'), PUMP_SWAP_PROGRAM.toBuffer()], PUMP_FEE_PROGRAM)[0];
99
+ };
100
+ export { sellSPLInstructions as pumpSellSPLInstructions, buySPLInstructions as pumpBuySPLInstructions, calcCAPrice as pumpCalcCAPrice, createSPLInstruction as pumpCreateSPLInstruction, createAndDevBuyInstruction as pumpCreateAndDevBuyInstruction, buySPLFromAmountInstructions as pumpBuySPLFromAmountInstructions, };
101
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sol-sdk/pump/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Provider } from '@coral-xyz/anchor';
2
+ import { Connection, PublicKey, Transaction } from '@solana/web3.js';
3
+ /**
4
+ * 购买SPL代币
5
+ * @param provider anchor provider
6
+ * @param buyer 支付者
7
+ * @param mint CA Keypair
8
+ * @param feeRecipient fee接收者
9
+ * @param amount 购买数量
10
+ * @param maxSolCost 最大sol成本
11
+ */
12
+ export declare function buyInstructions(provider: Provider, buyer: PublicKey, mint: PublicKey, feeRecipient: PublicKey, amount: bigint, maxSolCost: bigint, creator: PublicKey): Promise<Transaction>;
13
+ /**
14
+ * 购买SPL代币
15
+ * @param connection
16
+ * @param provider
17
+ * @param payer 支付者
18
+ * @param caAddr CA地址
19
+ * @param buyAmount sol数量 Float String
20
+ * @param slippageDecimal 滑点
21
+ * @param caPrice CA价格
22
+ * @returns
23
+ */
24
+ export declare const buySPLInstructions: (provider: Provider, payer: PublicKey, caAddr: string, buyAmount: string, // 小数
25
+ slippageDecimal: number, caPrice: string, creator: PublicKey, tokenAmount?: string) => Promise<[string, Transaction]>;
26
+ export declare const buySPLFromAmountInstructions: (provider: Provider, payer: PublicKey, caAddr: string, receiveAmount: string, maxSolCost: string, creator: PublicKey, redis: ClientRedis) => Promise<Transaction>;
27
+ export declare const calcSPLOutAmount: (connection: Connection, token: string, amount: string, slippageDecimal: number) => Promise<string[]>;
28
+ export declare const calcCAPrice: (connection: Connection, token: string) => Promise<string>;
29
+ //# sourceMappingURL=buy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAW,SAAS,EAAoB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAuBhG;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA8CtB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,QAAQ,EAClB,OAAO,SAAS,EAChB,QAAQ,MAAM,EACd,WAAW,MAAM,EAAE,KAAK;AACxB,iBAAiB,MAAM,EACvB,SAAS,MAAM,EACf,SAAS,SAAS,EAClB,cAAc,MAAM,KACnB,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAkB/B,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,UAAU,QAAQ,EAClB,OAAO,SAAS,EAChB,QAAQ,MAAM,EACd,eAAe,MAAM,EACrB,YAAY,MAAM,EAClB,SAAS,SAAS,EAClB,OAAO,WAAW,KACjB,OAAO,CAAC,WAAW,CAcrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,YAAY,UAAU,EACtB,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,iBAAiB,MAAM,sBAuCxB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,YAAY,UAAU,EAAE,OAAO,MAAM,oBAUtE,CAAC"}
@@ -0,0 +1,131 @@
1
+ import { Program } from '@coral-xyz/anchor';
2
+ import { PublicKey, LAMPORTS_PER_SOL, Transaction } from '@solana/web3.js';
3
+ import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddress, } from '@solana/spl-token';
4
+ import { PUMP_FEE_RECEIPENT, PUMP_FUN_GLOBAL_ACCOUNT } from '../../../const/index.js';
5
+ import { IDL } from '../../../const/IDL/pump-fun.js';
6
+ import { getBondingCurvePDA, getPumpCurveState, getCreatorVaultPDA, getGlobalVolumeAccmulatorPDA, getUserVolumeAccumulatorPDA, } from '../index.js';
7
+ import { BN } from 'bn.js';
8
+ import BigNumber from 'bignumber.js';
9
+ /**
10
+ * 购买SPL代币
11
+ * @param provider anchor provider
12
+ * @param buyer 支付者
13
+ * @param mint CA Keypair
14
+ * @param feeRecipient fee接收者
15
+ * @param amount 购买数量
16
+ * @param maxSolCost 最大sol成本
17
+ */
18
+ export async function buyInstructions(provider, buyer, mint, feeRecipient, amount, maxSolCost, creator) {
19
+ let associatedBondingCurve;
20
+ let associatedUser;
21
+ [associatedBondingCurve, associatedUser] = await Promise.all([
22
+ getAssociatedTokenAddress(mint, getBondingCurvePDA(mint), true),
23
+ getAssociatedTokenAddress(mint, buyer, false),
24
+ ]);
25
+ const globalVolumeAccumulator = getGlobalVolumeAccmulatorPDA();
26
+ const userVolumeAccumulator = getUserVolumeAccumulatorPDA(buyer);
27
+ let transaction = new Transaction();
28
+ transaction.add(createAssociatedTokenAccountIdempotentInstruction(buyer, associatedUser, buyer, mint));
29
+ let program = new Program(IDL, provider);
30
+ const BondingCurve = getBondingCurvePDA(mint);
31
+ const creatorVault = creator ? getCreatorVaultPDA(creator) : undefined;
32
+ console.log('amount: ', amount.toString());
33
+ console.log('maxSolCost: ', maxSolCost.toString());
34
+ const trackVolume = { 0: true };
35
+ transaction.add(await program.methods
36
+ .buy(new BN(amount.toString()), new BN(maxSolCost.toString()), trackVolume)
37
+ .accounts({
38
+ feeRecipient: feeRecipient,
39
+ mint: mint,
40
+ global: PUMP_FUN_GLOBAL_ACCOUNT,
41
+ bondingCurve: BondingCurve,
42
+ associatedBondingCurve: associatedBondingCurve,
43
+ associatedUser: associatedUser,
44
+ user: buyer,
45
+ creatorVault,
46
+ globalVolumeAccumulator,
47
+ userVolumeAccumulator,
48
+ })
49
+ .instruction());
50
+ return transaction;
51
+ }
52
+ /**
53
+ * 购买SPL代币
54
+ * @param connection
55
+ * @param provider
56
+ * @param payer 支付者
57
+ * @param caAddr CA地址
58
+ * @param buyAmount sol数量 Float String
59
+ * @param slippageDecimal 滑点
60
+ * @param caPrice CA价格
61
+ * @returns
62
+ */
63
+ export const buySPLInstructions = async (provider, payer, caAddr, buyAmount, // 小数
64
+ slippageDecimal, caPrice, creator, tokenAmount) => {
65
+ const receiveAmount = tokenAmount
66
+ ? tokenAmount
67
+ : new BigNumber(buyAmount).div(caPrice).times(1000000).toFixed(0);
68
+ const solInWithSlippage = Number(buyAmount) * (1 + slippageDecimal);
69
+ const maxSolCost = new BigNumber(solInWithSlippage).toFixed(0);
70
+ const buyTx = await buyInstructions(provider, payer, new PublicKey(caAddr), PUMP_FEE_RECEIPENT, BigInt(receiveAmount), BigInt(maxSolCost), creator);
71
+ return [receiveAmount, buyTx];
72
+ };
73
+ export const buySPLFromAmountInstructions = async (provider, payer, caAddr, receiveAmount, maxSolCost, creator, redis) => {
74
+ const solCost = Number(maxSolCost) * LAMPORTS_PER_SOL;
75
+ const buyTx = await buyInstructions(provider, payer, new PublicKey(caAddr), PUMP_FEE_RECEIPENT, BigInt(receiveAmount), BigInt(Number(solCost).toFixed(0)), creator);
76
+ return buyTx;
77
+ };
78
+ export const calcSPLOutAmount = async (connection, token, amount, slippageDecimal) => {
79
+ try {
80
+ const poolInfo = await getPumpTokenInfo(connection, token);
81
+ // 计算SOL价格
82
+ const solPrice = new BigNumber(new BigNumber(poolInfo.virtual_sol_reserves).div(LAMPORTS_PER_SOL))
83
+ .div(new BigNumber(poolInfo.virtual_token_reserves).div('1000000'))
84
+ .toString(10);
85
+ // 计算常量k
86
+ const k = new BigNumber(poolInfo.virtual_sol_reserves)
87
+ .times(new BigNumber(poolInfo.virtual_token_reserves))
88
+ .toString(10);
89
+ // 计算新的SOL和TOKEN储备
90
+ const R_SOL_new = new BigNumber(poolInfo.virtual_sol_reserves)
91
+ .plus(new BigNumber(amount).times(LAMPORTS_PER_SOL))
92
+ .toString(10);
93
+ const R_TOKEN_new = new BigNumber(k).div(new BigNumber(R_SOL_new)).toString(10);
94
+ // 计算获得的TOKEN数量
95
+ const tokenObtained = new BigNumber(poolInfo.virtual_token_reserves)
96
+ .minus(new BigNumber(R_TOKEN_new))
97
+ .toString(10);
98
+ // 计算实际获得的TOKEN数量,考虑滑点
99
+ // const actualTokens = new BigNumber(tokenObtained).times(new BigNumber(1 - slippageDecimal)).toFixed(0);
100
+ const actualTokens = new BigNumber(tokenObtained).toFixed(0);
101
+ console.log('solPrice', solPrice);
102
+ console.log('actualTokens', actualTokens);
103
+ return [solPrice, actualTokens];
104
+ }
105
+ catch (e) {
106
+ return Promise.reject(new Error('计算SPL输出数量失败')); // 考虑更详细的错误处理
107
+ }
108
+ };
109
+ export const calcCAPrice = async (connection, token) => {
110
+ const poolInfo = await getPumpTokenInfo(connection, token);
111
+ if (!poolInfo.virtual_sol_reserves || !poolInfo.virtual_token_reserves) {
112
+ return Promise.reject(new Error('poolInfo is empty'));
113
+ }
114
+ const solPrice = new BigNumber(new BigNumber(poolInfo.virtual_sol_reserves).div(LAMPORTS_PER_SOL))
115
+ .div(new BigNumber(poolInfo.virtual_token_reserves).div('1000000'))
116
+ .toString(10);
117
+ console.log('solPrice', solPrice);
118
+ return solPrice;
119
+ };
120
+ async function getPumpTokenInfo(connection, token) {
121
+ const data = await getPumpCurveState(connection, token);
122
+ return {
123
+ virtual_sol_reserves: Number(data.virtual_sol_reserves),
124
+ virtual_token_reserves: Number(data.virtual_token_reserves),
125
+ real_sol_reserves: Number(data.real_sol_reserves),
126
+ real_token_reserves: Number(data.real_token_reserves),
127
+ token_total_supply: Number(data.token_total_supply),
128
+ complete: data.complete,
129
+ };
130
+ }
131
+ //# sourceMappingURL=buy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/buy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { Connection, Keypair, PublicKey, Transaction } from '@solana/web3.js';
2
+ /**
3
+ *
4
+ * @param payer 支付者 Keypair
5
+ * @param mint CA Keypair
6
+ * @param name CA名称
7
+ * @param symbol CA符号
8
+ * @param uri CA元数据uri
9
+ * @param buyAmount 购买数量 Float String
10
+ * @param priorityFeeInSol 优先级费用
11
+ * @param slippageDecimal 滑点
12
+ * @param rpcUrl rpc地址
13
+ * @returns
14
+ */
15
+ export declare const createAndDevBuyInstruction: ({ connection, payer, mint, name, symbol, uri, buyAmount, slippageDecimal, tokenAmount, }: {
16
+ connection: Connection;
17
+ payer: PublicKey;
18
+ mint: Keypair;
19
+ name: string;
20
+ symbol: string;
21
+ uri: string;
22
+ buyAmount: string;
23
+ slippageDecimal: number;
24
+ tokenAmount?: string;
25
+ }) => Promise<Transaction>;
26
+ /**
27
+ * 创建SPL代币
28
+ * @param provider anchor provider
29
+ * @param payer 支付者
30
+ * @param mint 代币mint地址
31
+ * @param memename 代币名称
32
+ * @param symbol 代币符号
33
+ * @param uri 代币元数据uri
34
+ */
35
+ export declare const createSPLInstruction: (connection: Connection, payer: PublicKey, mint: Keypair, memename: string, symbol: string, uri: string) => Promise<import("@solana/web3.js").TransactionInstruction>;
36
+ //# sourceMappingURL=createAndBuy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAndBuy.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/createAndBuy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,OAAO,EACP,SAAS,EAET,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AAUzB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,0BAA0B,GAAU,0FAU9C;IACD,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,KAAG,OAAO,CAAC,WAAW,CA6BtB,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,UAAU,EACtB,OAAO,SAAS,EAChB,MAAM,OAAO,EACb,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,KAAK,MAAM,8DAsCZ,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { AnchorProvider, Program } from '@coral-xyz/anchor';
2
+ import { Keypair, PublicKey, LAMPORTS_PER_SOL, Transaction, } from '@solana/web3.js';
3
+ import { getAssociatedTokenAddress } from '@solana/spl-token';
4
+ import { buySPLInstructions } from './buy.js';
5
+ import { IDL } from '../../../const/IDL/pump-fun.js';
6
+ import { MPLX_METADATA } from '../../../const/index.js';
7
+ import { getBondingCurvePDA } from '../index.js';
8
+ import BigNumber from 'bignumber.js';
9
+ /**
10
+ *
11
+ * @param payer 支付者 Keypair
12
+ * @param mint CA Keypair
13
+ * @param name CA名称
14
+ * @param symbol CA符号
15
+ * @param uri CA元数据uri
16
+ * @param buyAmount 购买数量 Float String
17
+ * @param priorityFeeInSol 优先级费用
18
+ * @param slippageDecimal 滑点
19
+ * @param rpcUrl rpc地址
20
+ * @returns
21
+ */
22
+ export const createAndDevBuyInstruction = async ({ connection, payer, mint, name, symbol, uri, buyAmount, slippageDecimal, tokenAmount, }) => {
23
+ const provider = new AnchorProvider(connection, {
24
+ publicKey: Keypair.generate().publicKey,
25
+ signTransaction: async () => {
26
+ throw new Error('不支持签名');
27
+ },
28
+ signAllTransactions: async () => {
29
+ throw new Error('不支持签名');
30
+ },
31
+ });
32
+ const caPrice = '0.000000028';
33
+ const createTx = await createSPLInstruction(connection, payer, mint, name, symbol, uri);
34
+ const buyTx = await buySPLInstructions(provider, payer, mint.publicKey.toBase58(), new BigNumber(buyAmount).times(LAMPORTS_PER_SOL).toFixed(0), slippageDecimal, caPrice, payer, tokenAmount);
35
+ const transaction = new Transaction();
36
+ transaction.add(createTx);
37
+ transaction.add(buyTx[1]);
38
+ return transaction;
39
+ };
40
+ /**
41
+ * 创建SPL代币
42
+ * @param provider anchor provider
43
+ * @param payer 支付者
44
+ * @param mint 代币mint地址
45
+ * @param memename 代币名称
46
+ * @param symbol 代币符号
47
+ * @param uri 代币元数据uri
48
+ */
49
+ export const createSPLInstruction = async (connection, payer, mint, memename, symbol, uri) => {
50
+ const provider = new AnchorProvider(connection, {
51
+ publicKey: Keypair.generate().publicKey,
52
+ signTransaction: async () => {
53
+ throw new Error('不支持签名');
54
+ },
55
+ signAllTransactions: async () => {
56
+ throw new Error('不支持签名');
57
+ },
58
+ });
59
+ const mplTokenMetadata = MPLX_METADATA;
60
+ const METADATA_SEED = 'metadata';
61
+ const [metadataPDA] = PublicKey.findProgramAddressSync([Buffer.from(METADATA_SEED), mplTokenMetadata.toBuffer(), mint.publicKey.toBuffer()], mplTokenMetadata);
62
+ let program = new Program(IDL, provider);
63
+ const bonding_curve_pda = getBondingCurvePDA(mint.publicKey);
64
+ const associatedBondingCurve = await getAssociatedTokenAddress(mint.publicKey, bonding_curve_pda, true);
65
+ return await program.methods
66
+ .create(memename, symbol, uri, payer)
67
+ .accounts({
68
+ mint: mint.publicKey,
69
+ // @ts-ignore
70
+ associatedBondingCurve: associatedBondingCurve,
71
+ metadata: metadataPDA,
72
+ user: payer,
73
+ })
74
+ .signers([mint])
75
+ .instruction();
76
+ };
77
+ //# sourceMappingURL=createAndBuy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAndBuy.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/createAndBuy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAEL,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,WAAW,GAEZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAAE,EAC/C,UAAU,EACV,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,GAAG,EACH,SAAS,EACT,eAAe,EACf,WAAW,GAWZ,EAAwB,EAAE;IACzB,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,UAAiB,EAAE;QACrD,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS;QACvC,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,aAAa,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAExF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CACpC,QAAQ,EACR,KAAK,EACL,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EACzB,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAC3D,eAAe,EACf,OAAO,EACP,KAAK,EACL,WAAW,CACZ,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1B,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AACF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,UAAsB,EACtB,KAAgB,EAChB,IAAa,EACb,QAAgB,EAChB,MAAc,EACd,GAAW,EACX,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,UAAiB,EAAE;QACrD,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS;QACvC,eAAe,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,mBAAmB,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IACH,MAAM,gBAAgB,GAAG,aAAa,CAAC;IACvC,MAAM,aAAa,GAAG,UAAU,CAAC;IACjC,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,sBAAsB,CACpD,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EACpF,gBAAgB,CACjB,CAAC;IAEF,IAAI,OAAO,GAAG,IAAI,OAAO,CAAU,GAAc,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE7D,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAC5D,IAAI,CAAC,SAAS,EACd,iBAAiB,EACjB,IAAI,CACL,CAAC;IAEF,OAAO,MAAM,OAAO,CAAC,OAAO;SACzB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC;SACpC,QAAQ,CAAC;QACR,IAAI,EAAE,IAAI,CAAC,SAAS;QACpB,aAAa;QACb,sBAAsB,EAAE,sBAAsB;QAC9C,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,KAAK;KACZ,CAAC;SACD,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;SACf,WAAW,EAAE,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Provider } from '@coral-xyz/anchor';
2
+ import { Keypair, PublicKey, Transaction } from '@solana/web3.js';
3
+ export declare const sellSPLInstructions: (provider: Provider, payer: Keypair, caAddr: string, // 要卖的合约地址
4
+ sellAmount: string, // 要卖的数量 单位6个0
5
+ maxSlippage: number, minSolOutput: string, creator: PublicKey) => Promise<Transaction>;
6
+ export declare function sellInstructions(provider: Provider, seller: Keypair, mint: PublicKey, feeRecipient: PublicKey, amount: bigint, minSolOutput: string, maxSlippage: number, creator: PublicKey): Promise<Transaction>;
7
+ //# sourceMappingURL=sell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAc,OAAO,EAAE,SAAS,EAAoB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAmBhG,eAAO,MAAM,mBAAmB,GAC9B,UAAU,QAAQ,EAClB,OAAO,OAAO,EACd,QAAQ,MAAM,EAAE,UAAU;AAC1B,YAAY,MAAM,EAAE,cAAc;AAClC,aAAa,MAAa,EAC1B,cAAc,MAAM,EACpB,SAAS,SAAS,KACjB,OAAO,CAAC,WAAW,CAarB,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,SAAS,EACvB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,WAAW,CAAC,CA4BtB"}
@@ -0,0 +1,38 @@
1
+ import { Program } from '@coral-xyz/anchor';
2
+ import { PublicKey, Transaction } from '@solana/web3.js';
3
+ import { getAssociatedTokenAddress, } from '@solana/spl-token';
4
+ import { PUMP_FEE_RECEIPENT } from '../../../const/index.js';
5
+ import { IDL } from '../../../const/IDL/pump-fun.js';
6
+ import { getBondingCurvePDA, getCreatorVaultPDA } from '../index.js';
7
+ import { BN } from 'bn.js';
8
+ import BigNumber from 'bignumber.js';
9
+ export const sellSPLInstructions = async (provider, payer, caAddr, // 要卖的合约地址
10
+ sellAmount, // 要卖的数量 单位6个0
11
+ maxSlippage = 0.01, minSolOutput, creator) => {
12
+ const sellTx = await sellInstructions(provider, payer, new PublicKey(caAddr), PUMP_FEE_RECEIPENT, BigInt(new BigNumber(sellAmount).toFixed(0)), minSolOutput, maxSlippage, creator);
13
+ return sellTx;
14
+ };
15
+ export async function sellInstructions(provider, seller, mint, feeRecipient, amount, minSolOutput, maxSlippage, creator) {
16
+ const [associatedBondingCurve, associatedUser] = await Promise.all([
17
+ getAssociatedTokenAddress(mint, getBondingCurvePDA(mint), true),
18
+ getAssociatedTokenAddress(mint, seller.publicKey, false),
19
+ ]);
20
+ const creatorVault = creator ? getCreatorVaultPDA(creator) : undefined;
21
+ let transaction = new Transaction();
22
+ const minSolOutputWithSlippage = new BigNumber(minSolOutput).times(1 - maxSlippage).toFixed(0);
23
+ let program = new Program(IDL, provider);
24
+ transaction.add(await program.methods
25
+ .sell(new BN(amount.toString()), new BN(minSolOutputWithSlippage))
26
+ .accounts({
27
+ feeRecipient: feeRecipient,
28
+ mint: mint,
29
+ // @ts-ignore
30
+ associatedBondingCurve: associatedBondingCurve,
31
+ associatedUser: associatedUser,
32
+ user: seller.publicKey,
33
+ creatorVault,
34
+ })
35
+ .instruction());
36
+ return transaction;
37
+ }
38
+ //# sourceMappingURL=sell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sell.js","sourceRoot":"","sources":["../../../../../src/sol-sdk/pump/instructions/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAY,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAuB,SAAS,EAAoB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhG,OAAO,EAGL,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAoB,MAAM,gBAAgB,CAAC;AAGtE,OAAO,EAAE,GAAG,EAAE,MAAM,6BAA6B,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE3B,OAAO,SAAS,MAAM,cAAc,CAAC;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,QAAkB,EAClB,KAAc,EACd,MAAc,EAAE,UAAU;AAC1B,UAAkB,EAAE,cAAc;AAClC,cAAsB,IAAI,EAC1B,YAAoB,EACpB,OAAkB,EACI,EAAE;IACxB,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,QAAQ,EACR,KAAK,EACL,IAAI,SAAS,CAAC,MAAM,CAAC,EACrB,kBAAkB,EAClB,MAAM,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAC5C,YAAY,EACZ,WAAW,EACX,OAAO,CACR,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,QAAkB,EAClB,MAAe,EACf,IAAe,EACf,YAAuB,EACvB,MAAc,EACd,YAAoB,EACpB,WAAmB,EACnB,OAAkB;IAElB,MAAM,CAAC,sBAAsB,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjE,yBAAyB,CAAC,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAC/D,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,IAAI,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACpC,MAAM,wBAAwB,GAAG,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE/F,IAAI,OAAO,GAAG,IAAI,OAAO,CAAU,GAAc,EAAE,QAAQ,CAAC,CAAC;IAC7D,WAAW,CAAC,GAAG,CACb,MAAM,OAAO,CAAC,OAAO;SAClB,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,wBAAwB,CAAC,CAAC;SACjE,QAAQ,CAAC;QACR,YAAY,EAAE,YAAY;QAC1B,IAAI,EAAE,IAAI;QACV,aAAa;QACb,sBAAsB,EAAE,sBAAsB;QAC9C,cAAc,EAAE,cAAc;QAC9B,IAAI,EAAE,MAAM,CAAC,SAAS;QACtB,YAAY;KACb,CAAC;SACD,WAAW,EAAE,CACjB,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ export { sellSPLInstructions as pumpSwapSellInstruction } from './instructions/sell';
3
+ export { getPoolInfo as pumpSwapGetPoolInfo, calcCAPrice as pumpSwapCalcCAPrice, buyInstruction as pumpSwapBuyInstruction, calcOutAmountByNewPool as pumpSwapCalcOutAmountByNewPool, } from './instructions/buy';
4
+ export { migrate as pumpSwapMigrate } from './instructions/migrate';
5
+ export { pumpSwapSearchPoolByMint, getPoolVault as pumpSwapGetPoolVault, getPumpSwapPoolId, } from './rpc';
6
+ export declare const getPumpSwapPoolByMint: (mint: string) => PublicKey;
7
+ export declare const getGlobalVolumeAccumulatorPDA: () => PublicKey;
8
+ export declare const getUserVolumeAccumulatorPDA: (user: PublicKey) => PublicKey;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sol-sdk/pumpswap/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EACL,WAAW,IAAI,mBAAmB,EAClC,WAAW,IAAI,mBAAmB,EAClC,cAAc,IAAI,sBAAsB,EACxC,sBAAsB,IAAI,8BAA8B,GACzD,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,wBAAwB,EACxB,YAAY,IAAI,oBAAoB,EACpC,iBAAiB,GAClB,MAAM,OAAO,CAAC;AASf,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,SAYpD,CAAC;AAEF,eAAO,MAAM,6BAA6B,iBAKzC,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,MAAM,SAAS,cAK1D,CAAC"}