outsmart 2.0.0-alpha.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 (235) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +568 -0
  3. package/dist/cli.d.ts +44 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +1251 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/dex/byreal-clmm.d.ts +16 -0
  8. package/dist/dex/byreal-clmm.d.ts.map +1 -0
  9. package/dist/dex/byreal-clmm.js +39 -0
  10. package/dist/dex/byreal-clmm.js.map +1 -0
  11. package/dist/dex/dflow.d.ts +27 -0
  12. package/dist/dex/dflow.d.ts.map +1 -0
  13. package/dist/dex/dflow.js +200 -0
  14. package/dist/dex/dflow.js.map +1 -0
  15. package/dist/dex/fusion-amm.d.ts +44 -0
  16. package/dist/dex/fusion-amm.d.ts.map +1 -0
  17. package/dist/dex/fusion-amm.js +546 -0
  18. package/dist/dex/fusion-amm.js.map +1 -0
  19. package/dist/dex/futarchy-amm.d.ts +32 -0
  20. package/dist/dex/futarchy-amm.d.ts.map +1 -0
  21. package/dist/dex/futarchy-amm.js +443 -0
  22. package/dist/dex/futarchy-amm.js.map +1 -0
  23. package/dist/dex/futarchy-idl.d.ts +2568 -0
  24. package/dist/dex/futarchy-idl.d.ts.map +1 -0
  25. package/dist/dex/futarchy-idl.js +2570 -0
  26. package/dist/dex/futarchy-idl.js.map +1 -0
  27. package/dist/dex/futarchy-launchpad.d.ts +68 -0
  28. package/dist/dex/futarchy-launchpad.d.ts.map +1 -0
  29. package/dist/dex/futarchy-launchpad.js +377 -0
  30. package/dist/dex/futarchy-launchpad.js.map +1 -0
  31. package/dist/dex/index.d.ts +88 -0
  32. package/dist/dex/index.d.ts.map +1 -0
  33. package/dist/dex/index.js +159 -0
  34. package/dist/dex/index.js.map +1 -0
  35. package/dist/dex/jupiter-ultra.d.ts +27 -0
  36. package/dist/dex/jupiter-ultra.d.ts.map +1 -0
  37. package/dist/dex/jupiter-ultra.js +369 -0
  38. package/dist/dex/jupiter-ultra.js.map +1 -0
  39. package/dist/dex/meteora-damm-v1.d.ts +36 -0
  40. package/dist/dex/meteora-damm-v1.d.ts.map +1 -0
  41. package/dist/dex/meteora-damm-v1.js +314 -0
  42. package/dist/dex/meteora-damm-v1.js.map +1 -0
  43. package/dist/dex/meteora-damm-v2.d.ts +103 -0
  44. package/dist/dex/meteora-damm-v2.d.ts.map +1 -0
  45. package/dist/dex/meteora-damm-v2.js +1146 -0
  46. package/dist/dex/meteora-damm-v2.js.map +1 -0
  47. package/dist/dex/meteora-dbc.d.ts +38 -0
  48. package/dist/dex/meteora-dbc.d.ts.map +1 -0
  49. package/dist/dex/meteora-dbc.js +374 -0
  50. package/dist/dex/meteora-dbc.js.map +1 -0
  51. package/dist/dex/meteora-dlmm.d.ts +79 -0
  52. package/dist/dex/meteora-dlmm.d.ts.map +1 -0
  53. package/dist/dex/meteora-dlmm.js +735 -0
  54. package/dist/dex/meteora-dlmm.js.map +1 -0
  55. package/dist/dex/orca.d.ts +31 -0
  56. package/dist/dex/orca.d.ts.map +1 -0
  57. package/dist/dex/orca.js +536 -0
  58. package/dist/dex/orca.js.map +1 -0
  59. package/dist/dex/pancakeswap-clmm.d.ts +16 -0
  60. package/dist/dex/pancakeswap-clmm.d.ts.map +1 -0
  61. package/dist/dex/pancakeswap-clmm.js +39 -0
  62. package/dist/dex/pancakeswap-clmm.js.map +1 -0
  63. package/dist/dex/pumpfun-amm.d.ts +46 -0
  64. package/dist/dex/pumpfun-amm.d.ts.map +1 -0
  65. package/dist/dex/pumpfun-amm.js +692 -0
  66. package/dist/dex/pumpfun-amm.js.map +1 -0
  67. package/dist/dex/pumpfun.d.ts +41 -0
  68. package/dist/dex/pumpfun.d.ts.map +1 -0
  69. package/dist/dex/pumpfun.js +555 -0
  70. package/dist/dex/pumpfun.js.map +1 -0
  71. package/dist/dex/raydium-amm-v4.d.ts +11 -0
  72. package/dist/dex/raydium-amm-v4.d.ts.map +1 -0
  73. package/dist/dex/raydium-amm-v4.js +649 -0
  74. package/dist/dex/raydium-amm-v4.js.map +1 -0
  75. package/dist/dex/raydium-clmm.d.ts +12 -0
  76. package/dist/dex/raydium-clmm.d.ts.map +1 -0
  77. package/dist/dex/raydium-clmm.js +675 -0
  78. package/dist/dex/raydium-clmm.js.map +1 -0
  79. package/dist/dex/raydium-cpmm.d.ts +10 -0
  80. package/dist/dex/raydium-cpmm.d.ts.map +1 -0
  81. package/dist/dex/raydium-cpmm.js +613 -0
  82. package/dist/dex/raydium-cpmm.js.map +1 -0
  83. package/dist/dex/raydium-launchlab.d.ts +12 -0
  84. package/dist/dex/raydium-launchlab.d.ts.map +1 -0
  85. package/dist/dex/raydium-launchlab.js +530 -0
  86. package/dist/dex/raydium-launchlab.js.map +1 -0
  87. package/dist/dex/shared/clmm-base.d.ts +58 -0
  88. package/dist/dex/shared/clmm-base.d.ts.map +1 -0
  89. package/dist/dex/shared/clmm-base.js +891 -0
  90. package/dist/dex/shared/clmm-base.js.map +1 -0
  91. package/dist/dex/types.d.ts +601 -0
  92. package/dist/dex/types.d.ts.map +1 -0
  93. package/dist/dex/types.js +137 -0
  94. package/dist/dex/types.js.map +1 -0
  95. package/dist/dexscreener/index.d.ts +2 -0
  96. package/dist/dexscreener/index.d.ts.map +1 -0
  97. package/dist/dexscreener/index.js +18 -0
  98. package/dist/dexscreener/index.js.map +1 -0
  99. package/dist/dexscreener/info.d.ts +22 -0
  100. package/dist/dexscreener/info.d.ts.map +1 -0
  101. package/dist/dexscreener/info.js +104 -0
  102. package/dist/dexscreener/info.js.map +1 -0
  103. package/dist/helpers/check_balance.d.ts +10 -0
  104. package/dist/helpers/check_balance.d.ts.map +1 -0
  105. package/dist/helpers/check_balance.js +34 -0
  106. package/dist/helpers/check_balance.js.map +1 -0
  107. package/dist/helpers/config.d.ts +51 -0
  108. package/dist/helpers/config.d.ts.map +1 -0
  109. package/dist/helpers/config.js +118 -0
  110. package/dist/helpers/config.js.map +1 -0
  111. package/dist/helpers/index.d.ts +8 -0
  112. package/dist/helpers/index.d.ts.map +1 -0
  113. package/dist/helpers/index.js +29 -0
  114. package/dist/helpers/index.js.map +1 -0
  115. package/dist/helpers/logger.d.ts +27 -0
  116. package/dist/helpers/logger.d.ts.map +1 -0
  117. package/dist/helpers/logger.js +39 -0
  118. package/dist/helpers/logger.js.map +1 -0
  119. package/dist/helpers/token-2022.d.ts +32 -0
  120. package/dist/helpers/token-2022.d.ts.map +1 -0
  121. package/dist/helpers/token-2022.js +48 -0
  122. package/dist/helpers/token-2022.js.map +1 -0
  123. package/dist/helpers/unwrap_sol.d.ts +2 -0
  124. package/dist/helpers/unwrap_sol.d.ts.map +1 -0
  125. package/dist/helpers/unwrap_sol.js +67 -0
  126. package/dist/helpers/unwrap_sol.js.map +1 -0
  127. package/dist/helpers/util.d.ts +698 -0
  128. package/dist/helpers/util.d.ts.map +1 -0
  129. package/dist/helpers/util.js +181 -0
  130. package/dist/helpers/util.js.map +1 -0
  131. package/dist/helpers/utils.d.ts +10 -0
  132. package/dist/helpers/utils.d.ts.map +1 -0
  133. package/dist/helpers/utils.js +97 -0
  134. package/dist/helpers/utils.js.map +1 -0
  135. package/dist/helpers/wrap_sol.d.ts +3 -0
  136. package/dist/helpers/wrap_sol.d.ts.map +1 -0
  137. package/dist/helpers/wrap_sol.js +88 -0
  138. package/dist/helpers/wrap_sol.js.map +1 -0
  139. package/dist/index.d.ts +14 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +32 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/transactions/bloXroute_tips_tx_executor.d.ts +4 -0
  144. package/dist/transactions/bloXroute_tips_tx_executor.d.ts.map +1 -0
  145. package/dist/transactions/bloXroute_tips_tx_executor.js +70 -0
  146. package/dist/transactions/bloXroute_tips_tx_executor.js.map +1 -0
  147. package/dist/transactions/index.d.ts +6 -0
  148. package/dist/transactions/index.d.ts.map +1 -0
  149. package/dist/transactions/index.js +30 -0
  150. package/dist/transactions/index.js.map +1 -0
  151. package/dist/transactions/jito_tips_tx_executor.d.ts +15 -0
  152. package/dist/transactions/jito_tips_tx_executor.d.ts.map +1 -0
  153. package/dist/transactions/jito_tips_tx_executor.js +99 -0
  154. package/dist/transactions/jito_tips_tx_executor.js.map +1 -0
  155. package/dist/transactions/landing/index.d.ts +30 -0
  156. package/dist/transactions/landing/index.d.ts.map +1 -0
  157. package/dist/transactions/landing/index.js +60 -0
  158. package/dist/transactions/landing/index.js.map +1 -0
  159. package/dist/transactions/landing/nonce-manager.d.ts +116 -0
  160. package/dist/transactions/landing/nonce-manager.d.ts.map +1 -0
  161. package/dist/transactions/landing/nonce-manager.js +393 -0
  162. package/dist/transactions/landing/nonce-manager.js.map +1 -0
  163. package/dist/transactions/landing/orchestrator.d.ts +104 -0
  164. package/dist/transactions/landing/orchestrator.d.ts.map +1 -0
  165. package/dist/transactions/landing/orchestrator.js +329 -0
  166. package/dist/transactions/landing/orchestrator.js.map +1 -0
  167. package/dist/transactions/landing/providers/astralane.d.ts +12 -0
  168. package/dist/transactions/landing/providers/astralane.d.ts.map +1 -0
  169. package/dist/transactions/landing/providers/astralane.js +132 -0
  170. package/dist/transactions/landing/providers/astralane.js.map +1 -0
  171. package/dist/transactions/landing/providers/blockrazor.d.ts +11 -0
  172. package/dist/transactions/landing/providers/blockrazor.d.ts.map +1 -0
  173. package/dist/transactions/landing/providers/blockrazor.js +134 -0
  174. package/dist/transactions/landing/providers/blockrazor.js.map +1 -0
  175. package/dist/transactions/landing/providers/bloxroute.d.ts +12 -0
  176. package/dist/transactions/landing/providers/bloxroute.d.ts.map +1 -0
  177. package/dist/transactions/landing/providers/bloxroute.js +102 -0
  178. package/dist/transactions/landing/providers/bloxroute.js.map +1 -0
  179. package/dist/transactions/landing/providers/flashblock.d.ts +10 -0
  180. package/dist/transactions/landing/providers/flashblock.d.ts.map +1 -0
  181. package/dist/transactions/landing/providers/flashblock.js +102 -0
  182. package/dist/transactions/landing/providers/flashblock.js.map +1 -0
  183. package/dist/transactions/landing/providers/helius-sender.d.ts +11 -0
  184. package/dist/transactions/landing/providers/helius-sender.d.ts.map +1 -0
  185. package/dist/transactions/landing/providers/helius-sender.js +101 -0
  186. package/dist/transactions/landing/providers/helius-sender.js.map +1 -0
  187. package/dist/transactions/landing/providers/jito.d.ts +16 -0
  188. package/dist/transactions/landing/providers/jito.d.ts.map +1 -0
  189. package/dist/transactions/landing/providers/jito.js +110 -0
  190. package/dist/transactions/landing/providers/jito.js.map +1 -0
  191. package/dist/transactions/landing/providers/nextblock.d.ts +11 -0
  192. package/dist/transactions/landing/providers/nextblock.d.ts.map +1 -0
  193. package/dist/transactions/landing/providers/nextblock.js +109 -0
  194. package/dist/transactions/landing/providers/nextblock.js.map +1 -0
  195. package/dist/transactions/landing/providers/node1.d.ts +11 -0
  196. package/dist/transactions/landing/providers/node1.d.ts.map +1 -0
  197. package/dist/transactions/landing/providers/node1.js +101 -0
  198. package/dist/transactions/landing/providers/node1.js.map +1 -0
  199. package/dist/transactions/landing/providers/nozomi.d.ts +11 -0
  200. package/dist/transactions/landing/providers/nozomi.d.ts.map +1 -0
  201. package/dist/transactions/landing/providers/nozomi.js +124 -0
  202. package/dist/transactions/landing/providers/nozomi.js.map +1 -0
  203. package/dist/transactions/landing/providers/soyas.d.ts +16 -0
  204. package/dist/transactions/landing/providers/soyas.d.ts.map +1 -0
  205. package/dist/transactions/landing/providers/soyas.js +192 -0
  206. package/dist/transactions/landing/providers/soyas.js.map +1 -0
  207. package/dist/transactions/landing/providers/stellium.d.ts +11 -0
  208. package/dist/transactions/landing/providers/stellium.d.ts.map +1 -0
  209. package/dist/transactions/landing/providers/stellium.js +102 -0
  210. package/dist/transactions/landing/providers/stellium.js.map +1 -0
  211. package/dist/transactions/landing/providers/zero-slot.d.ts +10 -0
  212. package/dist/transactions/landing/providers/zero-slot.d.ts.map +1 -0
  213. package/dist/transactions/landing/providers/zero-slot.js +92 -0
  214. package/dist/transactions/landing/providers/zero-slot.js.map +1 -0
  215. package/dist/transactions/landing/tip-accounts.d.ts +22 -0
  216. package/dist/transactions/landing/tip-accounts.d.ts.map +1 -0
  217. package/dist/transactions/landing/tip-accounts.js +140 -0
  218. package/dist/transactions/landing/tip-accounts.js.map +1 -0
  219. package/dist/transactions/landing/types.d.ts +98 -0
  220. package/dist/transactions/landing/types.d.ts.map +1 -0
  221. package/dist/transactions/landing/types.js +30 -0
  222. package/dist/transactions/landing/types.js.map +1 -0
  223. package/dist/transactions/nozomi/tx-submission.d.ts +14 -0
  224. package/dist/transactions/nozomi/tx-submission.d.ts.map +1 -0
  225. package/dist/transactions/nozomi/tx-submission.js +107 -0
  226. package/dist/transactions/nozomi/tx-submission.js.map +1 -0
  227. package/dist/transactions/send-rpc.d.ts +54 -0
  228. package/dist/transactions/send-rpc.d.ts.map +1 -0
  229. package/dist/transactions/send-rpc.js +126 -0
  230. package/dist/transactions/send-rpc.js.map +1 -0
  231. package/dist/transactions/simple_tx_executor.d.ts +10 -0
  232. package/dist/transactions/simple_tx_executor.d.ts.map +1 -0
  233. package/dist/transactions/simple_tx_executor.js +33 -0
  234. package/dist/transactions/simple_tx_executor.js.map +1 -0
  235. package/package.json +112 -0
@@ -0,0 +1,555 @@
1
+ "use strict";
2
+ /**
3
+ * PumpFun Bonding Curve — IDexAdapter Implementation
4
+ *
5
+ * Program ID: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
6
+ *
7
+ * Wraps the PumpFun bonding curve program for:
8
+ * - buy: Buy tokens from a bonding curve (SOL → token)
9
+ * - sell: Sell tokens back to a bonding curve (token → SOL)
10
+ * - create: Create a new token + bonding curve
11
+ * - getPrice: Read on-chain bonding curve reserves to compute price
12
+ * - snipe: Competitive buy via landing layer (for future gRPC integration)
13
+ *
14
+ * All pump.fun tokens are 6 decimals. The bonding curve uses a Uniswap V2
15
+ * constant product formula with virtual reserves:
16
+ * tokens_out = (virtual_token_reserves * sol_in) / (virtual_sol_reserves + sol_in)
17
+ * sol_out = (virtual_sol_reserves * tokens_in) / (virtual_token_reserves + tokens_in)
18
+ * fee: 1% (100 bps) deducted from SOL
19
+ *
20
+ * IDL source: https://github.com/pump-fun/pump-public-docs/blob/main/idl/pump.json
21
+ */
22
+ var __importDefault = (this && this.__importDefault) || function (mod) {
23
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.PumpFunAdapter = void 0;
27
+ const bn_js_1 = __importDefault(require("bn.js"));
28
+ const web3_js_1 = require("@solana/web3.js");
29
+ const spl_token_1 = require("@solana/spl-token");
30
+ const config_1 = require("../helpers/config");
31
+ const landing_1 = require("../transactions/landing");
32
+ const send_rpc_1 = require("../transactions/send-rpc");
33
+ const types_1 = require("./types");
34
+ const index_1 = require("./index");
35
+ // ---------------------------------------------------------------------------
36
+ // Program constants
37
+ // ---------------------------------------------------------------------------
38
+ const PUMP_PROGRAM_ID = new web3_js_1.PublicKey("6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P");
39
+ const PUMP_GLOBAL = new web3_js_1.PublicKey("4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf");
40
+ const METAPLEX_TOKEN_METADATA_PROGRAM = new web3_js_1.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
41
+ const PUMP_FEE_PROGRAM = new web3_js_1.PublicKey("pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ");
42
+ // Fee recipients — randomly pick one per TX to improve throughput
43
+ // (1 from Global.fee_recipient + 7 from Global.fee_recipients)
44
+ const PUMP_FEE_RECIPIENTS = [
45
+ new web3_js_1.PublicKey("62qc2CNXwrYqQScmEdiZFFAnJR262PxWEuNQtxfafNgV"),
46
+ new web3_js_1.PublicKey("7VtfL8fvgNfhz17qKRMjzQEXgbdpnHHHQRh54R9jP2RJ"),
47
+ new web3_js_1.PublicKey("7hTckgnGnLQR6sdH7YkqFTAA7VwTfYFaZ6EhEsU3saCX"),
48
+ new web3_js_1.PublicKey("9rPYyANsfQZw3DnDmKE3YCQF5E8oD89UXoHn9JFEhJUz"),
49
+ new web3_js_1.PublicKey("AVmoTthdrX6tKt4nDjco2D775W2YK3sDhxPcMmzUAmTY"),
50
+ new web3_js_1.PublicKey("CebN5WGQ4jvEPvsVU4EoHEpgzq1VV7AbicfhtW4xC9iM"),
51
+ new web3_js_1.PublicKey("FWsW1xNtWscwNmKv6wVsU1iTzRN6wmmk3MjxRP5tT7hz"),
52
+ new web3_js_1.PublicKey("G5UZAVbAf46s7cKWoyKu8kYTip9DGTpbLZ2qa9Aq69dP"),
53
+ ];
54
+ // Instruction discriminators (from IDL)
55
+ const BUY_DISCRIMINATOR = Buffer.from([102, 6, 61, 18, 1, 218, 235, 234]);
56
+ const SELL_DISCRIMINATOR = Buffer.from([51, 230, 133, 164, 1, 127, 131, 173]);
57
+ const CREATE_DISCRIMINATOR = Buffer.from([24, 30, 200, 40, 5, 28, 7, 119]);
58
+ // BondingCurve account discriminator — used for deserialization
59
+ const BONDING_CURVE_DISCRIMINATOR = Buffer.from([23, 183, 248, 55, 96, 216, 172, 96]);
60
+ // All pump.fun tokens are 6 decimals
61
+ const PUMP_TOKEN_DECIMALS = 6;
62
+ function deserializeBondingCurve(data) {
63
+ // 8-byte discriminator + fields
64
+ let offset = 8;
65
+ const virtualTokenReserves = data.readBigUInt64LE(offset);
66
+ offset += 8;
67
+ const virtualSolReserves = data.readBigUInt64LE(offset);
68
+ offset += 8;
69
+ const realTokenReserves = data.readBigUInt64LE(offset);
70
+ offset += 8;
71
+ const realSolReserves = data.readBigUInt64LE(offset);
72
+ offset += 8;
73
+ const tokenTotalSupply = data.readBigUInt64LE(offset);
74
+ offset += 8;
75
+ const complete = data.readUInt8(offset) !== 0;
76
+ offset += 1;
77
+ const creator = new web3_js_1.PublicKey(data.subarray(offset, offset + 32));
78
+ offset += 32;
79
+ return {
80
+ virtualTokenReserves,
81
+ virtualSolReserves,
82
+ realTokenReserves,
83
+ realSolReserves,
84
+ tokenTotalSupply,
85
+ complete,
86
+ creator,
87
+ };
88
+ }
89
+ // ---------------------------------------------------------------------------
90
+ // PDA derivation helpers
91
+ // ---------------------------------------------------------------------------
92
+ function getBondingCurvePda(mint) {
93
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("bonding-curve"), mint.toBuffer()], PUMP_PROGRAM_ID);
94
+ return pda;
95
+ }
96
+ function getMintAuthorityPda() {
97
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("mint-authority")], PUMP_PROGRAM_ID);
98
+ return pda;
99
+ }
100
+ function getEventAuthorityPda() {
101
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("__event_authority")], PUMP_PROGRAM_ID);
102
+ return pda;
103
+ }
104
+ function getMetadataPda(mint) {
105
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([
106
+ Buffer.from("metadata"),
107
+ METAPLEX_TOKEN_METADATA_PROGRAM.toBuffer(),
108
+ mint.toBuffer(),
109
+ ], METAPLEX_TOKEN_METADATA_PROGRAM);
110
+ return pda;
111
+ }
112
+ function getCreatorVaultPda(creator) {
113
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("creator-vault"), creator.toBuffer()], PUMP_PROGRAM_ID);
114
+ return pda;
115
+ }
116
+ function getGlobalVolumeAccumulatorPda() {
117
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("global_volume_accumulator")], PUMP_PROGRAM_ID);
118
+ return pda;
119
+ }
120
+ function getUserVolumeAccumulatorPda(user) {
121
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("user_volume_accumulator"), user.toBuffer()], PUMP_PROGRAM_ID);
122
+ return pda;
123
+ }
124
+ function getFeeConfigPda() {
125
+ const [pda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("fee_config"), PUMP_PROGRAM_ID.toBuffer()], PUMP_FEE_PROGRAM);
126
+ return pda;
127
+ }
128
+ /** Pick a random fee recipient to improve program throughput */
129
+ function randomFeeRecipient() {
130
+ return PUMP_FEE_RECIPIENTS[Math.floor(Math.random() * PUMP_FEE_RECIPIENTS.length)];
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // Instruction builders
134
+ // ---------------------------------------------------------------------------
135
+ /**
136
+ * Build a PumpFun bonding curve BUY instruction.
137
+ *
138
+ * buy(amount, max_sol_cost, track_volume)
139
+ * - amount: exact number of tokens to buy (in raw 6-decimal units)
140
+ * - max_sol_cost: maximum lamports to spend (set to u64::MAX for no slippage)
141
+ * - track_volume: OptionBool (we pass None = [0])
142
+ */
143
+ function buildBuyInstruction(user, mint, bondingCurve, creator, amount, maxSolCost) {
144
+ const associatedBondingCurve = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, bondingCurve, true, spl_token_1.TOKEN_PROGRAM_ID);
145
+ const associatedUser = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, user, false, spl_token_1.TOKEN_PROGRAM_ID);
146
+ const creatorVault = getCreatorVaultPda(creator);
147
+ const eventAuthority = getEventAuthorityPda();
148
+ const globalVolumeAccumulator = getGlobalVolumeAccumulatorPda();
149
+ const userVolumeAccumulator = getUserVolumeAccumulatorPda(user);
150
+ const feeConfig = getFeeConfigPda();
151
+ // Encode args: amount (u64) + max_sol_cost (u64) + track_volume (OptionBool = None [0])
152
+ const data = Buffer.alloc(8 + 8 + 8 + 1);
153
+ BUY_DISCRIMINATOR.copy(data, 0);
154
+ data.writeBigUInt64LE(BigInt(amount.toString()), 8);
155
+ data.writeBigUInt64LE(BigInt(maxSolCost.toString()), 16);
156
+ // OptionBool None = 0 (no volume tracking)
157
+ data.writeUInt8(0, 24);
158
+ return new web3_js_1.TransactionInstruction({
159
+ programId: PUMP_PROGRAM_ID,
160
+ keys: [
161
+ { pubkey: PUMP_GLOBAL, isSigner: false, isWritable: false },
162
+ { pubkey: randomFeeRecipient(), isSigner: false, isWritable: true },
163
+ { pubkey: mint, isSigner: false, isWritable: false },
164
+ { pubkey: bondingCurve, isSigner: false, isWritable: true },
165
+ { pubkey: associatedBondingCurve, isSigner: false, isWritable: true },
166
+ { pubkey: associatedUser, isSigner: false, isWritable: true },
167
+ { pubkey: user, isSigner: true, isWritable: true },
168
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
169
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
170
+ { pubkey: creatorVault, isSigner: false, isWritable: true },
171
+ { pubkey: eventAuthority, isSigner: false, isWritable: false },
172
+ { pubkey: PUMP_PROGRAM_ID, isSigner: false, isWritable: false },
173
+ { pubkey: globalVolumeAccumulator, isSigner: false, isWritable: false },
174
+ { pubkey: userVolumeAccumulator, isSigner: false, isWritable: true },
175
+ { pubkey: feeConfig, isSigner: false, isWritable: false },
176
+ { pubkey: PUMP_FEE_PROGRAM, isSigner: false, isWritable: false },
177
+ ],
178
+ data,
179
+ });
180
+ }
181
+ /**
182
+ * Build a PumpFun bonding curve SELL instruction.
183
+ *
184
+ * sell(amount, min_sol_output)
185
+ * - amount: exact number of tokens to sell (in raw 6-decimal units)
186
+ * - min_sol_output: minimum lamports to receive (set to 0 for no slippage)
187
+ */
188
+ function buildSellInstruction(user, mint, bondingCurve, creator, amount, minSolOutput) {
189
+ const associatedBondingCurve = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, bondingCurve, true, spl_token_1.TOKEN_PROGRAM_ID);
190
+ const associatedUser = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, user, false, spl_token_1.TOKEN_PROGRAM_ID);
191
+ const creatorVault = getCreatorVaultPda(creator);
192
+ const eventAuthority = getEventAuthorityPda();
193
+ const feeConfig = getFeeConfigPda();
194
+ // Encode args: amount (u64) + min_sol_output (u64)
195
+ const data = Buffer.alloc(8 + 8 + 8);
196
+ SELL_DISCRIMINATOR.copy(data, 0);
197
+ data.writeBigUInt64LE(BigInt(amount.toString()), 8);
198
+ data.writeBigUInt64LE(BigInt(minSolOutput.toString()), 16);
199
+ return new web3_js_1.TransactionInstruction({
200
+ programId: PUMP_PROGRAM_ID,
201
+ keys: [
202
+ { pubkey: PUMP_GLOBAL, isSigner: false, isWritable: false },
203
+ { pubkey: randomFeeRecipient(), isSigner: false, isWritable: true },
204
+ { pubkey: mint, isSigner: false, isWritable: false },
205
+ { pubkey: bondingCurve, isSigner: false, isWritable: true },
206
+ { pubkey: associatedBondingCurve, isSigner: false, isWritable: true },
207
+ { pubkey: associatedUser, isSigner: false, isWritable: true },
208
+ { pubkey: user, isSigner: true, isWritable: true },
209
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
210
+ { pubkey: creatorVault, isSigner: false, isWritable: true },
211
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
212
+ { pubkey: eventAuthority, isSigner: false, isWritable: false },
213
+ { pubkey: PUMP_PROGRAM_ID, isSigner: false, isWritable: false },
214
+ { pubkey: feeConfig, isSigner: false, isWritable: false },
215
+ { pubkey: PUMP_FEE_PROGRAM, isSigner: false, isWritable: false },
216
+ ],
217
+ data,
218
+ });
219
+ }
220
+ /**
221
+ * Build a PumpFun CREATE instruction — creates a new token + bonding curve.
222
+ *
223
+ * create(name, symbol, uri, creator)
224
+ */
225
+ function buildCreateInstruction(user, mint, name, symbol, uri, creator) {
226
+ const bondingCurve = getBondingCurvePda(mint);
227
+ const associatedBondingCurve = (0, spl_token_1.getAssociatedTokenAddressSync)(mint, bondingCurve, true, spl_token_1.TOKEN_PROGRAM_ID);
228
+ const mintAuthority = getMintAuthorityPda();
229
+ const metadata = getMetadataPda(mint);
230
+ const eventAuthority = getEventAuthorityPda();
231
+ // Encode args: name (string) + symbol (string) + uri (string) + creator (pubkey)
232
+ // Borsh string encoding: 4-byte LE length + utf8 bytes
233
+ const nameBytes = Buffer.from(name, "utf8");
234
+ const symbolBytes = Buffer.from(symbol, "utf8");
235
+ const uriBytes = Buffer.from(uri, "utf8");
236
+ const creatorBytes = creator.toBuffer();
237
+ const dataSize = 8 + (4 + nameBytes.length) + (4 + symbolBytes.length) + (4 + uriBytes.length) + 32;
238
+ const data = Buffer.alloc(dataSize);
239
+ let offset = 0;
240
+ CREATE_DISCRIMINATOR.copy(data, offset);
241
+ offset += 8;
242
+ data.writeUInt32LE(nameBytes.length, offset);
243
+ offset += 4;
244
+ nameBytes.copy(data, offset);
245
+ offset += nameBytes.length;
246
+ data.writeUInt32LE(symbolBytes.length, offset);
247
+ offset += 4;
248
+ symbolBytes.copy(data, offset);
249
+ offset += symbolBytes.length;
250
+ data.writeUInt32LE(uriBytes.length, offset);
251
+ offset += 4;
252
+ uriBytes.copy(data, offset);
253
+ offset += uriBytes.length;
254
+ creatorBytes.copy(data, offset);
255
+ offset += 32;
256
+ return new web3_js_1.TransactionInstruction({
257
+ programId: PUMP_PROGRAM_ID,
258
+ keys: [
259
+ { pubkey: mint, isSigner: true, isWritable: true },
260
+ { pubkey: mintAuthority, isSigner: false, isWritable: false },
261
+ { pubkey: bondingCurve, isSigner: false, isWritable: true },
262
+ { pubkey: associatedBondingCurve, isSigner: false, isWritable: true },
263
+ { pubkey: PUMP_GLOBAL, isSigner: false, isWritable: false },
264
+ { pubkey: METAPLEX_TOKEN_METADATA_PROGRAM, isSigner: false, isWritable: false },
265
+ { pubkey: metadata, isSigner: false, isWritable: true },
266
+ { pubkey: user, isSigner: true, isWritable: true },
267
+ { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },
268
+ { pubkey: spl_token_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
269
+ { pubkey: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },
270
+ { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },
271
+ { pubkey: eventAuthority, isSigner: false, isWritable: false },
272
+ { pubkey: PUMP_PROGRAM_ID, isSigner: false, isWritable: false },
273
+ ],
274
+ data,
275
+ });
276
+ }
277
+ // ---------------------------------------------------------------------------
278
+ // Bonding curve math
279
+ // ---------------------------------------------------------------------------
280
+ /**
281
+ * Calculate how many tokens you get for a given SOL input (after fee).
282
+ * Formula: tokens_out = (virtual_token_reserves * net_sol_in) / (virtual_sol_reserves + net_sol_in)
283
+ * Fee: 1% deducted from SOL before swap.
284
+ */
285
+ function calculateBuyTokens(state, solLamports) {
286
+ // Fee is 1% (100 bps), deducted from SOL input
287
+ const fee = solLamports / 100n;
288
+ const netSol = solLamports - fee;
289
+ const tokensOut = (state.virtualTokenReserves * netSol) / (state.virtualSolReserves + netSol);
290
+ // Cap at real token reserves
291
+ return tokensOut < state.realTokenReserves ? tokensOut : state.realTokenReserves;
292
+ }
293
+ /**
294
+ * Calculate how much SOL you get for selling tokens (before fee).
295
+ * Formula: sol_out = (virtual_sol_reserves * tokens_in) / (virtual_token_reserves + tokens_in)
296
+ * Fee: 1% deducted from SOL output.
297
+ */
298
+ function calculateSellSol(state, tokenAmount) {
299
+ const grossSol = (state.virtualSolReserves * tokenAmount) / (state.virtualTokenReserves + tokenAmount);
300
+ const fee = grossSol / 100n;
301
+ return grossSol - fee;
302
+ }
303
+ // ---------------------------------------------------------------------------
304
+ // Adapter
305
+ // ---------------------------------------------------------------------------
306
+ class PumpFunAdapter {
307
+ name = "pumpfun";
308
+ protocol = "bonding-curve";
309
+ capabilities = (0, types_1.defaultCapabilities)({
310
+ canBuy: true,
311
+ canSell: true,
312
+ canSnipe: true,
313
+ canGetPrice: true,
314
+ });
315
+ // ----- Core: buy -----
316
+ async buy(params) {
317
+ const tokenMint = (0, types_1.requireTokenMint)(params, this.name);
318
+ const { amountSol, poolAddress, opts } = params;
319
+ const connection = (0, config_1.getConnection)();
320
+ const wallet = (0, config_1.getWallet)();
321
+ const mintPk = new web3_js_1.PublicKey(tokenMint);
322
+ const bondingCurve = poolAddress ? new web3_js_1.PublicKey(poolAddress) : getBondingCurvePda(mintPk);
323
+ // Fetch bonding curve state to calculate token amount and get creator
324
+ const accountInfo = await connection.getAccountInfo(bondingCurve);
325
+ if (!accountInfo)
326
+ throw new Error(`Bonding curve not found: ${bondingCurve.toBase58()}`);
327
+ const state = deserializeBondingCurve(accountInfo.data);
328
+ if (state.complete)
329
+ throw new Error("Bonding curve is complete — use pumpfun-amm for graduated tokens");
330
+ const solLamports = BigInt(Math.floor(amountSol * web3_js_1.LAMPORTS_PER_SOL));
331
+ const tokenAmount = calculateBuyTokens(state, solLamports);
332
+ if (tokenAmount === 0n)
333
+ throw new Error("Buy amount too small — would receive 0 tokens");
334
+ // Build instructions
335
+ const computeLimit = opts?.computeUnitLimit ?? types_1.DEFAULT_COMPUTE_UNIT_LIMIT;
336
+ const priorityFee = opts?.priorityFeeMicroLamports ?? types_1.DEFAULT_PRIORITY_FEE_MICRO_LAMPORTS;
337
+ const createAta = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(wallet.publicKey, (0, spl_token_1.getAssociatedTokenAddressSync)(mintPk, wallet.publicKey, false, spl_token_1.TOKEN_PROGRAM_ID), wallet.publicKey, mintPk, spl_token_1.TOKEN_PROGRAM_ID);
338
+ // max_sol_cost needs headroom — the program's internal fee calculation
339
+ // may round differently from ours. Add 5% buffer to avoid 6002 TooMuchSolRequired.
340
+ const maxSolCost = solLamports + solLamports / 20n;
341
+ const buyIx = buildBuyInstruction(wallet.publicKey, mintPk, bondingCurve, state.creator, new bn_js_1.default(tokenAmount.toString()), new bn_js_1.default(maxSolCost.toString()));
342
+ const ixs = [
343
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: computeLimit }),
344
+ web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee }),
345
+ createAta,
346
+ buyIx,
347
+ ];
348
+ // Submit via RPC send+confirm
349
+ const result = await (0, send_rpc_1.sendAndConfirmVtx)(connection, ixs, wallet);
350
+ return {
351
+ txSignature: result.txSignature,
352
+ confirmed: result.confirmed,
353
+ amountIn: amountSol,
354
+ amountInToken: "SOL",
355
+ amountOut: Number(tokenAmount) / Math.pow(10, PUMP_TOKEN_DECIMALS),
356
+ amountOutToken: tokenMint,
357
+ dex: this.name,
358
+ poolAddress: bondingCurve.toBase58(),
359
+ };
360
+ }
361
+ // ----- Core: sell -----
362
+ async sell(params) {
363
+ const tokenMint = (0, types_1.requireTokenMint)(params, this.name);
364
+ const { percentage, poolAddress, opts } = params;
365
+ const connection = (0, config_1.getConnection)();
366
+ const wallet = (0, config_1.getWallet)();
367
+ const mintPk = new web3_js_1.PublicKey(tokenMint);
368
+ const bondingCurve = poolAddress ? new web3_js_1.PublicKey(poolAddress) : getBondingCurvePda(mintPk);
369
+ // Fetch bonding curve state for creator
370
+ const accountInfo = await connection.getAccountInfo(bondingCurve);
371
+ if (!accountInfo)
372
+ throw new Error(`Bonding curve not found: ${bondingCurve.toBase58()}`);
373
+ const state = deserializeBondingCurve(accountInfo.data);
374
+ if (state.complete)
375
+ throw new Error("Bonding curve is complete — use pumpfun-amm for graduated tokens");
376
+ // Get token balance
377
+ const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(mintPk, wallet.publicKey, false, spl_token_1.TOKEN_PROGRAM_ID);
378
+ const tokenAccount = await (0, spl_token_1.getAccount)(connection, ata, "confirmed", spl_token_1.TOKEN_PROGRAM_ID);
379
+ const sellAmount = BigInt(Math.floor((Number(tokenAccount.amount) * percentage) / 100));
380
+ if (sellAmount === 0n)
381
+ throw new Error(`No balance to sell for ${tokenMint}`);
382
+ const computeLimit = opts?.computeUnitLimit ?? types_1.DEFAULT_COMPUTE_UNIT_LIMIT;
383
+ const priorityFee = opts?.priorityFeeMicroLamports ?? types_1.DEFAULT_PRIORITY_FEE_MICRO_LAMPORTS;
384
+ const sellIx = buildSellInstruction(wallet.publicKey, mintPk, bondingCurve, state.creator, new bn_js_1.default(sellAmount.toString()), new bn_js_1.default(0));
385
+ const ixs = [
386
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: computeLimit }),
387
+ web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee }),
388
+ sellIx,
389
+ ];
390
+ const result = await (0, send_rpc_1.sendAndConfirmVtx)(connection, ixs, wallet);
391
+ const humanSellAmount = Number(sellAmount) / Math.pow(10, PUMP_TOKEN_DECIMALS);
392
+ return {
393
+ txSignature: result.txSignature,
394
+ confirmed: result.confirmed,
395
+ amountIn: humanSellAmount,
396
+ amountInToken: tokenMint,
397
+ dex: this.name,
398
+ poolAddress: bondingCurve.toBase58(),
399
+ };
400
+ }
401
+ // ----- Snipe -----
402
+ async snipe(params) {
403
+ const { tokenMint, amountSol, poolAddress, tipSol, opts } = params;
404
+ const connection = (0, config_1.getConnection)();
405
+ const wallet = (0, config_1.getWallet)();
406
+ const mintPk = new web3_js_1.PublicKey(tokenMint);
407
+ const bondingCurve = new web3_js_1.PublicKey(poolAddress);
408
+ // Fetch bonding curve state
409
+ const accountInfo = await connection.getAccountInfo(bondingCurve);
410
+ if (!accountInfo)
411
+ throw new Error(`Bonding curve not found: ${poolAddress}`);
412
+ const state = deserializeBondingCurve(accountInfo.data);
413
+ const solLamports = BigInt(Math.floor(amountSol * web3_js_1.LAMPORTS_PER_SOL));
414
+ const tokenAmount = calculateBuyTokens(state, solLamports);
415
+ const maxSolCost = solLamports + solLamports / 20n;
416
+ const computeLimit = opts?.computeUnitLimit ?? types_1.DEFAULT_COMPUTE_UNIT_LIMIT;
417
+ const priorityFee = opts?.priorityFeeMicroLamports ?? 40_000_000;
418
+ const createAta = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(wallet.publicKey, (0, spl_token_1.getAssociatedTokenAddressSync)(mintPk, wallet.publicKey, false, spl_token_1.TOKEN_PROGRAM_ID), wallet.publicKey, mintPk, spl_token_1.TOKEN_PROGRAM_ID);
419
+ const buyIx = buildBuyInstruction(wallet.publicKey, mintPk, bondingCurve, state.creator, new bn_js_1.default(tokenAmount.toString()), new bn_js_1.default(maxSolCost.toString()));
420
+ const ixs = [
421
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: computeLimit }),
422
+ web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee }),
423
+ createAta,
424
+ buyIx,
425
+ ];
426
+ const blockhash = await connection.getLatestBlockhash();
427
+ const results = await (0, landing_1.landTransaction)(ixs, wallet, blockhash, {
428
+ dex: this.name,
429
+ operation: "snipe",
430
+ tipSol,
431
+ });
432
+ const accepted = results.find((r) => r.accepted);
433
+ return {
434
+ txSignature: accepted?.signature ?? "",
435
+ confirmed: !!accepted?.accepted,
436
+ amountIn: amountSol,
437
+ amountInToken: "SOL",
438
+ dex: this.name,
439
+ poolAddress,
440
+ };
441
+ }
442
+ // ----- buildSwapIxs -----
443
+ async buildSwapIxs(params) {
444
+ const tokenMint = (0, types_1.requireTokenMint)(params, this.name);
445
+ const connection = (0, config_1.getConnection)();
446
+ const wallet = (0, config_1.getWallet)();
447
+ if ("percentage" in params) {
448
+ // Sell
449
+ const p = params;
450
+ const mintPk = new web3_js_1.PublicKey(tokenMint);
451
+ const bondingCurve = p.poolAddress ? new web3_js_1.PublicKey(p.poolAddress) : getBondingCurvePda(mintPk);
452
+ const accountInfo = await connection.getAccountInfo(bondingCurve);
453
+ if (!accountInfo)
454
+ throw new Error(`Bonding curve not found`);
455
+ const state = deserializeBondingCurve(accountInfo.data);
456
+ const ata = (0, spl_token_1.getAssociatedTokenAddressSync)(mintPk, wallet.publicKey, false, spl_token_1.TOKEN_PROGRAM_ID);
457
+ const tokenAccount = await (0, spl_token_1.getAccount)(connection, ata, "confirmed", spl_token_1.TOKEN_PROGRAM_ID);
458
+ const sellAmount = BigInt(Math.floor((Number(tokenAccount.amount) * p.percentage) / 100));
459
+ const sellIx = buildSellInstruction(wallet.publicKey, mintPk, bondingCurve, state.creator, new bn_js_1.default(sellAmount.toString()), new bn_js_1.default(0));
460
+ return { instructions: [sellIx], signers: [] };
461
+ }
462
+ // Buy
463
+ const p = params;
464
+ const mintPk = new web3_js_1.PublicKey(tokenMint);
465
+ const bondingCurve = p.poolAddress ? new web3_js_1.PublicKey(p.poolAddress) : getBondingCurvePda(mintPk);
466
+ const accountInfo = await connection.getAccountInfo(bondingCurve);
467
+ if (!accountInfo)
468
+ throw new Error(`Bonding curve not found`);
469
+ const state = deserializeBondingCurve(accountInfo.data);
470
+ const solLamports = BigInt(Math.floor(p.amountSol * web3_js_1.LAMPORTS_PER_SOL));
471
+ const tokenAmount = calculateBuyTokens(state, solLamports);
472
+ const maxSolCost = solLamports + solLamports / 20n;
473
+ const createAta = (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(wallet.publicKey, (0, spl_token_1.getAssociatedTokenAddressSync)(mintPk, wallet.publicKey, false, spl_token_1.TOKEN_PROGRAM_ID), wallet.publicKey, mintPk, spl_token_1.TOKEN_PROGRAM_ID);
474
+ const buyIx = buildBuyInstruction(wallet.publicKey, mintPk, bondingCurve, state.creator, new bn_js_1.default(tokenAmount.toString()), new bn_js_1.default(maxSolCost.toString()));
475
+ return { instructions: [createAta, buyIx], signers: [] };
476
+ }
477
+ // ----- getPrice -----
478
+ async getPrice(poolAddress) {
479
+ const connection = (0, config_1.getConnection)();
480
+ const bondingCurvePk = new web3_js_1.PublicKey(poolAddress);
481
+ const accountInfo = await connection.getAccountInfo(bondingCurvePk);
482
+ if (!accountInfo)
483
+ throw new Error(`Bonding curve not found: ${poolAddress}`);
484
+ const state = deserializeBondingCurve(accountInfo.data);
485
+ // Price in SOL per token = virtual_sol_reserves / virtual_token_reserves
486
+ // Adjust for decimals: SOL is 9 decimals, token is 6 decimals
487
+ const price = (Number(state.virtualSolReserves) / web3_js_1.LAMPORTS_PER_SOL) /
488
+ (Number(state.virtualTokenReserves) / Math.pow(10, PUMP_TOKEN_DECIMALS));
489
+ // Derive baseMint by scanning the bonding curve's token accounts.
490
+ // The bonding curve PDA holds the token in an ATA — find which mint it holds.
491
+ let baseMint = "";
492
+ try {
493
+ const tokenAccounts = await connection.getTokenAccountsByOwner(bondingCurvePk, {
494
+ programId: spl_token_1.TOKEN_PROGRAM_ID,
495
+ });
496
+ for (const { account } of tokenAccounts.value) {
497
+ // SPL token account layout: mint is at offset 0, 32 bytes
498
+ const mint = new web3_js_1.PublicKey(account.data.subarray(0, 32));
499
+ if (!mint.equals(new web3_js_1.PublicKey(types_1.WSOL_MINT))) {
500
+ baseMint = mint.toBase58();
501
+ break;
502
+ }
503
+ }
504
+ }
505
+ catch {
506
+ // If token account scan fails, leave baseMint empty — caller must provide --token
507
+ }
508
+ return {
509
+ price,
510
+ baseMint,
511
+ quoteMint: types_1.WSOL_MINT,
512
+ source: "on-chain",
513
+ poolAddress,
514
+ timestamp: Date.now(),
515
+ };
516
+ }
517
+ // ----- Create token + bonding curve -----
518
+ /**
519
+ * Create a new PumpFun token with a bonding curve.
520
+ *
521
+ * @param name Token name (e.g. "My Token")
522
+ * @param symbol Token symbol (e.g. "MYTOKEN")
523
+ * @param uri Metadata URI (e.g. IPFS link to JSON metadata)
524
+ * @returns TxResult with the mint address in positionAddress
525
+ */
526
+ async create(name, symbol, uri) {
527
+ const connection = (0, config_1.getConnection)();
528
+ const wallet = (0, config_1.getWallet)();
529
+ const mintKeypair = web3_js_1.Keypair.generate();
530
+ const computeLimit = types_1.DEFAULT_COMPUTE_UNIT_LIMIT;
531
+ const priorityFee = types_1.DEFAULT_PRIORITY_FEE_MICRO_LAMPORTS;
532
+ const createIx = buildCreateInstruction(wallet.publicKey, mintKeypair.publicKey, name, symbol, uri, wallet.publicKey);
533
+ const ixs = [
534
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: computeLimit }),
535
+ web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports: priorityFee }),
536
+ createIx,
537
+ ];
538
+ const result = await (0, send_rpc_1.sendAndConfirmVtx)(connection, ixs, wallet, {
539
+ extraSigners: [mintKeypair],
540
+ });
541
+ return {
542
+ txSignature: result.txSignature,
543
+ confirmed: result.confirmed,
544
+ positionAddress: mintKeypair.publicKey.toBase58(), // The new mint address
545
+ poolAddress: getBondingCurvePda(mintKeypair.publicKey).toBase58(),
546
+ dex: this.name,
547
+ };
548
+ }
549
+ }
550
+ exports.PumpFunAdapter = PumpFunAdapter;
551
+ // ---------------------------------------------------------------------------
552
+ // Auto-register
553
+ // ---------------------------------------------------------------------------
554
+ (0, index_1.registerAdapter)(new PumpFunAdapter());
555
+ //# sourceMappingURL=pumpfun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pumpfun.js","sourceRoot":"","sources":["../../src/dex/pumpfun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Raydium AMM V4 DEX Adapter
3
+ *
4
+ * Implements IDexAdapter for Raydium's classic AMM V4 program (675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8).
5
+ * Supports buy, snipe, findPool, getPrice, and buildSwapIxs.
6
+ * No sell — the source module has no sell implementation.
7
+ *
8
+ * Ported from: 100x-algo-bots/trading-modules/raydium-amm-v4/
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=raydium-amm-v4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raydium-amm-v4.d.ts","sourceRoot":"","sources":["../../src/dex/raydium-amm-v4.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}