genius-intents 0.1.4

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 (252) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE +21 -0
  3. package/README.md +376 -0
  4. package/dist/src/index.d.ts +27 -0
  5. package/dist/src/index.d.ts.map +1 -0
  6. package/dist/src/index.js +62 -0
  7. package/dist/src/index.js.map +1 -0
  8. package/dist/src/intents-protocols.d.ts +69 -0
  9. package/dist/src/intents-protocols.d.ts.map +1 -0
  10. package/dist/src/intents-protocols.js +371 -0
  11. package/dist/src/intents-protocols.js.map +1 -0
  12. package/dist/src/interfaces/intent-protocol.d.ts +21 -0
  13. package/dist/src/interfaces/intent-protocol.d.ts.map +1 -0
  14. package/dist/src/interfaces/intent-protocol.js +3 -0
  15. package/dist/src/interfaces/intent-protocol.js.map +1 -0
  16. package/dist/src/protocols/aftermath/aftermath.service.d.ts +28 -0
  17. package/dist/src/protocols/aftermath/aftermath.service.d.ts.map +1 -0
  18. package/dist/src/protocols/aftermath/aftermath.service.js +162 -0
  19. package/dist/src/protocols/aftermath/aftermath.service.js.map +1 -0
  20. package/dist/src/protocols/aftermath/aftermath.types.d.ts +100 -0
  21. package/dist/src/protocols/aftermath/aftermath.types.d.ts.map +1 -0
  22. package/dist/src/protocols/aftermath/aftermath.types.js +3 -0
  23. package/dist/src/protocols/aftermath/aftermath.types.js.map +1 -0
  24. package/dist/src/protocols/aftermath/index.d.ts +3 -0
  25. package/dist/src/protocols/aftermath/index.d.ts.map +1 -0
  26. package/dist/src/protocols/aftermath/index.js +7 -0
  27. package/dist/src/protocols/aftermath/index.js.map +1 -0
  28. package/dist/src/protocols/debridge/debridge.service.d.ts +157 -0
  29. package/dist/src/protocols/debridge/debridge.service.d.ts.map +1 -0
  30. package/dist/src/protocols/debridge/debridge.service.js +462 -0
  31. package/dist/src/protocols/debridge/debridge.service.js.map +1 -0
  32. package/dist/src/protocols/debridge/debridge.types.d.ts +82 -0
  33. package/dist/src/protocols/debridge/debridge.types.d.ts.map +1 -0
  34. package/dist/src/protocols/debridge/debridge.types.js +3 -0
  35. package/dist/src/protocols/debridge/debridge.types.js.map +1 -0
  36. package/dist/src/protocols/debridge/index.d.ts +3 -0
  37. package/dist/src/protocols/debridge/index.d.ts.map +1 -0
  38. package/dist/src/protocols/debridge/index.js +7 -0
  39. package/dist/src/protocols/debridge/index.js.map +1 -0
  40. package/dist/src/protocols/genius-bridge/genius-bridge.service.d.ts +36 -0
  41. package/dist/src/protocols/genius-bridge/genius-bridge.service.d.ts.map +1 -0
  42. package/dist/src/protocols/genius-bridge/genius-bridge.service.js +312 -0
  43. package/dist/src/protocols/genius-bridge/genius-bridge.service.js.map +1 -0
  44. package/dist/src/protocols/genius-bridge/genius-bridge.types.d.ts +100 -0
  45. package/dist/src/protocols/genius-bridge/genius-bridge.types.d.ts.map +1 -0
  46. package/dist/src/protocols/genius-bridge/genius-bridge.types.js +3 -0
  47. package/dist/src/protocols/genius-bridge/genius-bridge.types.js.map +1 -0
  48. package/dist/src/protocols/genius-bridge/index.d.ts +3 -0
  49. package/dist/src/protocols/genius-bridge/index.d.ts.map +1 -0
  50. package/dist/src/protocols/genius-bridge/index.js +7 -0
  51. package/dist/src/protocols/genius-bridge/index.js.map +1 -0
  52. package/dist/src/protocols/jupiter/index.d.ts +3 -0
  53. package/dist/src/protocols/jupiter/index.d.ts.map +1 -0
  54. package/dist/src/protocols/jupiter/index.js +7 -0
  55. package/dist/src/protocols/jupiter/index.js.map +1 -0
  56. package/dist/src/protocols/jupiter/jupiter.service.d.ts +37 -0
  57. package/dist/src/protocols/jupiter/jupiter.service.d.ts.map +1 -0
  58. package/dist/src/protocols/jupiter/jupiter.service.js +188 -0
  59. package/dist/src/protocols/jupiter/jupiter.service.js.map +1 -0
  60. package/dist/src/protocols/jupiter/jupiter.types.d.ts +272 -0
  61. package/dist/src/protocols/jupiter/jupiter.types.d.ts.map +1 -0
  62. package/dist/src/protocols/jupiter/jupiter.types.js +3 -0
  63. package/dist/src/protocols/jupiter/jupiter.types.js.map +1 -0
  64. package/dist/src/protocols/kyberswap/index.d.ts +3 -0
  65. package/dist/src/protocols/kyberswap/index.d.ts.map +1 -0
  66. package/dist/src/protocols/kyberswap/index.js +7 -0
  67. package/dist/src/protocols/kyberswap/index.js.map +1 -0
  68. package/dist/src/protocols/kyberswap/kyberswap.service.d.ts +34 -0
  69. package/dist/src/protocols/kyberswap/kyberswap.service.d.ts.map +1 -0
  70. package/dist/src/protocols/kyberswap/kyberswap.service.js +218 -0
  71. package/dist/src/protocols/kyberswap/kyberswap.service.js.map +1 -0
  72. package/dist/src/protocols/kyberswap/kyberswap.types.d.ts +114 -0
  73. package/dist/src/protocols/kyberswap/kyberswap.types.d.ts.map +1 -0
  74. package/dist/src/protocols/kyberswap/kyberswap.types.js +3 -0
  75. package/dist/src/protocols/kyberswap/kyberswap.types.js.map +1 -0
  76. package/dist/src/protocols/odos/index.d.ts +3 -0
  77. package/dist/src/protocols/odos/index.d.ts.map +1 -0
  78. package/dist/src/protocols/odos/index.js +7 -0
  79. package/dist/src/protocols/odos/index.js.map +1 -0
  80. package/dist/src/protocols/odos/odos.service.d.ts +39 -0
  81. package/dist/src/protocols/odos/odos.service.d.ts.map +1 -0
  82. package/dist/src/protocols/odos/odos.service.js +207 -0
  83. package/dist/src/protocols/odos/odos.service.js.map +1 -0
  84. package/dist/src/protocols/odos/odos.types.d.ts +114 -0
  85. package/dist/src/protocols/odos/odos.types.d.ts.map +1 -0
  86. package/dist/src/protocols/odos/odos.types.js +3 -0
  87. package/dist/src/protocols/odos/odos.types.js.map +1 -0
  88. package/dist/src/protocols/okx/index.d.ts +3 -0
  89. package/dist/src/protocols/okx/index.d.ts.map +1 -0
  90. package/dist/src/protocols/okx/index.js +7 -0
  91. package/dist/src/protocols/okx/index.js.map +1 -0
  92. package/dist/src/protocols/okx/okx.service.d.ts +36 -0
  93. package/dist/src/protocols/okx/okx.service.d.ts.map +1 -0
  94. package/dist/src/protocols/okx/okx.service.js +281 -0
  95. package/dist/src/protocols/okx/okx.service.js.map +1 -0
  96. package/dist/src/protocols/okx/okx.types.d.ts +119 -0
  97. package/dist/src/protocols/okx/okx.types.d.ts.map +1 -0
  98. package/dist/src/protocols/okx/okx.types.js +4 -0
  99. package/dist/src/protocols/okx/okx.types.js.map +1 -0
  100. package/dist/src/protocols/okx-bridge/okx-bridge.service.d.ts +1 -0
  101. package/dist/src/protocols/okx-bridge/okx-bridge.service.d.ts.map +1 -0
  102. package/dist/src/protocols/okx-bridge/okx-bridge.service.js +2 -0
  103. package/dist/src/protocols/okx-bridge/okx-bridge.service.js.map +1 -0
  104. package/dist/src/protocols/okx-bridge/okx-bridge.types.d.ts +1 -0
  105. package/dist/src/protocols/okx-bridge/okx-bridge.types.d.ts.map +1 -0
  106. package/dist/src/protocols/okx-bridge/okx-bridge.types.js +2 -0
  107. package/dist/src/protocols/okx-bridge/okx-bridge.types.js.map +1 -0
  108. package/dist/src/protocols/openocean/index.d.ts +3 -0
  109. package/dist/src/protocols/openocean/index.d.ts.map +1 -0
  110. package/dist/src/protocols/openocean/index.js +7 -0
  111. package/dist/src/protocols/openocean/index.js.map +1 -0
  112. package/dist/src/protocols/openocean/openocean.service.d.ts +29 -0
  113. package/dist/src/protocols/openocean/openocean.service.d.ts.map +1 -0
  114. package/dist/src/protocols/openocean/openocean.service.js +181 -0
  115. package/dist/src/protocols/openocean/openocean.service.js.map +1 -0
  116. package/dist/src/protocols/openocean/openocean.types.d.ts +68 -0
  117. package/dist/src/protocols/openocean/openocean.types.d.ts.map +1 -0
  118. package/dist/src/protocols/openocean/openocean.types.js +3 -0
  119. package/dist/src/protocols/openocean/openocean.types.js.map +1 -0
  120. package/dist/src/protocols/pumpfun/index.d.ts +3 -0
  121. package/dist/src/protocols/pumpfun/index.d.ts.map +1 -0
  122. package/dist/src/protocols/pumpfun/index.js +7 -0
  123. package/dist/src/protocols/pumpfun/index.js.map +1 -0
  124. package/dist/src/protocols/pumpfun/pumpfun.service.d.ts +45 -0
  125. package/dist/src/protocols/pumpfun/pumpfun.service.d.ts.map +1 -0
  126. package/dist/src/protocols/pumpfun/pumpfun.service.js +217 -0
  127. package/dist/src/protocols/pumpfun/pumpfun.service.js.map +1 -0
  128. package/dist/src/protocols/pumpfun/pumpfun.types.d.ts +14 -0
  129. package/dist/src/protocols/pumpfun/pumpfun.types.d.ts.map +1 -0
  130. package/dist/src/protocols/pumpfun/pumpfun.types.js +3 -0
  131. package/dist/src/protocols/pumpfun/pumpfun.types.js.map +1 -0
  132. package/dist/src/protocols/raydium/index.d.ts +3 -0
  133. package/dist/src/protocols/raydium/index.d.ts.map +1 -0
  134. package/dist/src/protocols/raydium/index.js +7 -0
  135. package/dist/src/protocols/raydium/index.js.map +1 -0
  136. package/dist/src/protocols/raydium/raydium-v2.service.d.ts +35 -0
  137. package/dist/src/protocols/raydium/raydium-v2.service.d.ts.map +1 -0
  138. package/dist/src/protocols/raydium/raydium-v2.service.js +301 -0
  139. package/dist/src/protocols/raydium/raydium-v2.service.js.map +1 -0
  140. package/dist/src/protocols/raydium/raydium-v2.types.d.ts +96 -0
  141. package/dist/src/protocols/raydium/raydium-v2.types.d.ts.map +1 -0
  142. package/dist/src/protocols/raydium/raydium-v2.types.js +3 -0
  143. package/dist/src/protocols/raydium/raydium-v2.types.js.map +1 -0
  144. package/dist/src/protocols/zeroX/index.d.ts +3 -0
  145. package/dist/src/protocols/zeroX/index.d.ts.map +1 -0
  146. package/dist/src/protocols/zeroX/index.js +7 -0
  147. package/dist/src/protocols/zeroX/index.js.map +1 -0
  148. package/dist/src/protocols/zeroX/zeroX.service.d.ts +37 -0
  149. package/dist/src/protocols/zeroX/zeroX.service.d.ts.map +1 -0
  150. package/dist/src/protocols/zeroX/zeroX.service.js +209 -0
  151. package/dist/src/protocols/zeroX/zeroX.service.js.map +1 -0
  152. package/dist/src/protocols/zeroX/zeroX.types.d.ts +120 -0
  153. package/dist/src/protocols/zeroX/zeroX.types.d.ts.map +1 -0
  154. package/dist/src/protocols/zeroX/zeroX.types.js +3 -0
  155. package/dist/src/protocols/zeroX/zeroX.types.js.map +1 -0
  156. package/dist/src/types/enums.d.ts +42 -0
  157. package/dist/src/types/enums.d.ts.map +1 -0
  158. package/dist/src/types/enums.js +49 -0
  159. package/dist/src/types/enums.js.map +1 -0
  160. package/dist/src/types/intents-protocols.d.ts +89 -0
  161. package/dist/src/types/intents-protocols.d.ts.map +1 -0
  162. package/dist/src/types/intents-protocols.js +3 -0
  163. package/dist/src/types/intents-protocols.js.map +1 -0
  164. package/dist/src/types/price-response.d.ts +26 -0
  165. package/dist/src/types/price-response.d.ts.map +1 -0
  166. package/dist/src/types/price-response.js +3 -0
  167. package/dist/src/types/price-response.js.map +1 -0
  168. package/dist/src/types/quote-response.d.ts +31 -0
  169. package/dist/src/types/quote-response.d.ts.map +1 -0
  170. package/dist/src/types/quote-response.js +3 -0
  171. package/dist/src/types/quote-response.js.map +1 -0
  172. package/dist/src/utils/address-validation.d.ts +9 -0
  173. package/dist/src/utils/address-validation.d.ts.map +1 -0
  174. package/dist/src/utils/address-validation.js +42 -0
  175. package/dist/src/utils/address-validation.js.map +1 -0
  176. package/dist/src/utils/address.d.ts +9 -0
  177. package/dist/src/utils/address.d.ts.map +1 -0
  178. package/dist/src/utils/address.js +74 -0
  179. package/dist/src/utils/address.js.map +1 -0
  180. package/dist/src/utils/base64-to-base58.d.ts +2 -0
  181. package/dist/src/utils/base64-to-base58.d.ts.map +1 -0
  182. package/dist/src/utils/base64-to-base58.js +22 -0
  183. package/dist/src/utils/base64-to-base58.js.map +1 -0
  184. package/dist/src/utils/chain-id-name.d.ts +3 -0
  185. package/dist/src/utils/chain-id-name.d.ts.map +1 -0
  186. package/dist/src/utils/chain-id-name.js +23 -0
  187. package/dist/src/utils/chain-id-name.js.map +1 -0
  188. package/dist/src/utils/check-vm.d.ts +8 -0
  189. package/dist/src/utils/check-vm.d.ts.map +1 -0
  190. package/dist/src/utils/check-vm.js +39 -0
  191. package/dist/src/utils/check-vm.js.map +1 -0
  192. package/dist/src/utils/constants.d.ts +7 -0
  193. package/dist/src/utils/constants.d.ts.map +1 -0
  194. package/dist/src/utils/constants.js +10 -0
  195. package/dist/src/utils/constants.js.map +1 -0
  196. package/dist/src/utils/create-error-message.d.ts +5 -0
  197. package/dist/src/utils/create-error-message.d.ts.map +1 -0
  198. package/dist/src/utils/create-error-message.js +42 -0
  199. package/dist/src/utils/create-error-message.js.map +1 -0
  200. package/dist/src/utils/fetch-spl-metadata.d.ts +4 -0
  201. package/dist/src/utils/fetch-spl-metadata.d.ts.map +1 -0
  202. package/dist/src/utils/fetch-spl-metadata.js +108 -0
  203. package/dist/src/utils/fetch-spl-metadata.js.map +1 -0
  204. package/dist/src/utils/is-native.d.ts +2 -0
  205. package/dist/src/utils/is-native.d.ts.map +1 -0
  206. package/dist/src/utils/is-native.js +23 -0
  207. package/dist/src/utils/is-native.js.map +1 -0
  208. package/dist/src/utils/logger.d.ts +56 -0
  209. package/dist/src/utils/logger.d.ts.map +1 -0
  210. package/dist/src/utils/logger.js +108 -0
  211. package/dist/src/utils/logger.js.map +1 -0
  212. package/dist/src/utils/throw-error.d.ts +3 -0
  213. package/dist/src/utils/throw-error.d.ts.map +1 -0
  214. package/dist/src/utils/throw-error.js +8 -0
  215. package/dist/src/utils/throw-error.js.map +1 -0
  216. package/dist/tests/core/intent-protocol-suite.test.d.ts +2 -0
  217. package/dist/tests/core/intent-protocol-suite.test.d.ts.map +1 -0
  218. package/dist/tests/core/intent-protocol-suite.test.js +485 -0
  219. package/dist/tests/core/intent-protocol-suite.test.js.map +1 -0
  220. package/dist/tests/core/intents-protocols.test.d.ts +2 -0
  221. package/dist/tests/core/intents-protocols.test.d.ts.map +1 -0
  222. package/dist/tests/core/intents-protocols.test.js +307 -0
  223. package/dist/tests/core/intents-protocols.test.js.map +1 -0
  224. package/dist/tests/core/protocol-test-runner.d.ts +62 -0
  225. package/dist/tests/core/protocol-test-runner.d.ts.map +1 -0
  226. package/dist/tests/core/protocol-test-runner.js +260 -0
  227. package/dist/tests/core/protocol-test-runner.js.map +1 -0
  228. package/dist/tests/core/setup.test.d.ts +1 -0
  229. package/dist/tests/core/setup.test.d.ts.map +1 -0
  230. package/dist/tests/core/setup.test.js +13 -0
  231. package/dist/tests/core/setup.test.js.map +1 -0
  232. package/dist/tests/fixtures/test-data.d.ts +84 -0
  233. package/dist/tests/fixtures/test-data.d.ts.map +1 -0
  234. package/dist/tests/fixtures/test-data.js +142 -0
  235. package/dist/tests/fixtures/test-data.js.map +1 -0
  236. package/dist/tests/integration/cross-chain.test.d.ts +2 -0
  237. package/dist/tests/integration/cross-chain.test.d.ts.map +1 -0
  238. package/dist/tests/integration/cross-chain.test.js +44 -0
  239. package/dist/tests/integration/cross-chain.test.js.map +1 -0
  240. package/dist/tests/protocols/simple-protocol.test.d.ts +2 -0
  241. package/dist/tests/protocols/simple-protocol.test.d.ts.map +1 -0
  242. package/dist/tests/protocols/simple-protocol.test.js +77 -0
  243. package/dist/tests/protocols/simple-protocol.test.js.map +1 -0
  244. package/dist/tests/setup.d.ts +24 -0
  245. package/dist/tests/setup.d.ts.map +1 -0
  246. package/dist/tests/setup.js +48 -0
  247. package/dist/tests/setup.js.map +1 -0
  248. package/dist/tests/utils/test-generator.d.ts +30 -0
  249. package/dist/tests/utils/test-generator.d.ts.map +1 -0
  250. package/dist/tests/utils/test-generator.js +153 -0
  251. package/dist/tests/utils/test-generator.js.map +1 -0
  252. package/package.json +102 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"okx-bridge.types.js","sourceRoot":"","sources":["../../../../src/protocols/okx-bridge/okx-bridge.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { OpenOceanService } from './openocean.service';
2
+ export type { OpenOceanConfig, OpenOceanTokenInfo, OpenOceanDexInfo, OpenOceanRouteInfo, OpenOceanPriceResponse, OpenOceanQuoteResponse, } from './openocean.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocols/openocean/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OpenOceanService = void 0;
4
+ // OpenOcean Protocol - All exports
5
+ var openocean_service_1 = require("./openocean.service");
6
+ Object.defineProperty(exports, "OpenOceanService", { enumerable: true, get: function () { return openocean_service_1.OpenOceanService; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/protocols/openocean/index.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,29 @@
1
+ import { IIntentProtocol } from '../../interfaces/intent-protocol';
2
+ import { ChainIdEnum, ProtocolEnum } from '../../types/enums';
3
+ import { IntentPriceParams } from '../../types/price-params';
4
+ import { PriceResponse, RawProtocolPriceResponse } from '../../types/price-response';
5
+ import { IntentQuoteParams } from '../../types/quote-params';
6
+ import { QuoteResponse } from '../../types/quote-response';
7
+ import { IntentsSDKConfig } from '../../types/sdk-config';
8
+ import { OpenOceanConfig, OpenOceanPriceResponse } from './openocean.types';
9
+ export declare class OpenOceanService implements IIntentProtocol {
10
+ readonly protocol = ProtocolEnum.OPEN_OCEAN;
11
+ readonly chains: ChainIdEnum[];
12
+ readonly singleChain = true;
13
+ readonly multiChain = false;
14
+ readonly baseUrl: string;
15
+ protected readonly apiVersion: string;
16
+ protected readonly disabledDexIds?: string;
17
+ protected readonly enabledDexIds?: string;
18
+ constructor(config?: IntentsSDKConfig & OpenOceanConfig);
19
+ isCorrectConfig<T extends {
20
+ [key: string]: string;
21
+ }>(_config: {
22
+ [key: string]: string;
23
+ }): _config is T;
24
+ fetchPrice(params: IntentPriceParams): Promise<PriceResponse>;
25
+ fetchQuote(params: IntentQuoteParams): Promise<QuoteResponse>;
26
+ protected validatePriceParams(params: IntentPriceParams): void;
27
+ protected isOpenOceanPriceResponse(response: RawProtocolPriceResponse): response is OpenOceanPriceResponse;
28
+ }
29
+ //# sourceMappingURL=openocean.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openocean.service.d.ts","sourceRoot":"","sources":["../../../../src/protocols/openocean/openocean.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAA0B,MAAM,mBAAmB,CAAC;AAKpG,qBAAa,gBAAiB,YAAW,eAAe;IACtD,SAAgB,QAAQ,2BAA2B;IACnD,SAAgB,MAAM,gBAapB;IACF,SAAgB,WAAW,QAAQ;IACnC,SAAgB,UAAU,SAAS;IAEnC,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBAE9B,MAAM,CAAC,EAAE,gBAAgB,GAAG,eAAe;IAiBvD,eAAe,CAAC,CAAC,SAAS;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE;QAC5D,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,GAAG,OAAO,IAAI,CAAC;IAKH,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IA+D7D,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IA6E1E,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAiB9D,SAAS,CAAC,wBAAwB,CAChC,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,sBAAsB;CAGtC"}
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OpenOceanService = void 0;
7
+ const enums_1 = require("../../types/enums");
8
+ const logger_1 = require("../../utils/logger");
9
+ const throw_error_1 = require("../../utils/throw-error");
10
+ const check_vm_1 = require("../../utils/check-vm");
11
+ const create_error_message_1 = require("../../utils/create-error-message");
12
+ const axios_1 = __importDefault(require("axios"));
13
+ let logger;
14
+ class OpenOceanService {
15
+ constructor(config) {
16
+ this.protocol = enums_1.ProtocolEnum.OPEN_OCEAN;
17
+ this.chains = [
18
+ enums_1.ChainIdEnum.ETHEREUM,
19
+ enums_1.ChainIdEnum.ARBITRUM,
20
+ enums_1.ChainIdEnum.OPTIMISM,
21
+ enums_1.ChainIdEnum.POLYGON,
22
+ enums_1.ChainIdEnum.BSC,
23
+ enums_1.ChainIdEnum.AVALANCHE,
24
+ enums_1.ChainIdEnum.BASE,
25
+ enums_1.ChainIdEnum.SOLANA,
26
+ enums_1.ChainIdEnum.SONIC,
27
+ // ChainIdEnum.APTOS,
28
+ // ChainIdEnum.SUI,
29
+ // Add other supported chains
30
+ ];
31
+ this.singleChain = true;
32
+ this.multiChain = false;
33
+ if (config?.debug) {
34
+ logger_1.LoggerFactory.configure(logger_1.LoggerFactory.createConsoleLogger({ level: logger_1.LogLevelEnum.DEBUG }));
35
+ }
36
+ // Use custom logger if provided
37
+ else if (config?.logger) {
38
+ logger_1.LoggerFactory.configure(config.logger);
39
+ }
40
+ logger = logger_1.LoggerFactory.getLogger();
41
+ // Apply configuration with defaults
42
+ this.baseUrl = config?.openOceanPrivateUrl || 'https://open-api.openocean.finance';
43
+ this.apiVersion = config?.openOceanApiVersion || 'v4';
44
+ this.disabledDexIds = config?.openOceanDisabledDexIds;
45
+ this.enabledDexIds = config?.openOceanEnabledDexIds;
46
+ }
47
+ isCorrectConfig(_config) {
48
+ // OpenOcean has no required config fields, all are optional
49
+ return true;
50
+ }
51
+ async fetchPrice(params) {
52
+ this.validatePriceParams(params);
53
+ const queryNetwork = (0, check_vm_1.isSolanaNetwork)(params.networkIn) ? 'solana' : params.networkIn;
54
+ try {
55
+ const url = `${this.baseUrl}/${this.apiVersion}/${queryNetwork}/quote`;
56
+ const queryParams = {
57
+ inTokenAddress: params.tokenIn,
58
+ outTokenAddress: params.tokenOut,
59
+ amount: params.amountIn,
60
+ disabledDexIds: this.disabledDexIds,
61
+ enabledDexIds: this.enabledDexIds,
62
+ gasPrice: 1,
63
+ };
64
+ const fullUrl = new URL(url);
65
+ Object.entries(queryParams).forEach(([key, value]) => {
66
+ if (value !== undefined) {
67
+ fullUrl.searchParams.append(key, value.toString());
68
+ }
69
+ });
70
+ logger.debug(`Making OpenOcean price request to: ${fullUrl}`);
71
+ const response = await axios_1.default.get(fullUrl.toString());
72
+ if (response.data.code !== 200 || !response.data.data) {
73
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `OpenOcean API returned error: ${JSON.stringify(response.data)}`);
74
+ }
75
+ const priceData = response.data.data;
76
+ logger.debug('Successfully received price info from OpenOcean', {
77
+ amountOut: priceData.outAmount,
78
+ estimatedGas: priceData.estimatedGas,
79
+ });
80
+ return {
81
+ protocol: this.protocol,
82
+ networkIn: params.networkIn,
83
+ networkOut: params.networkOut,
84
+ tokenIn: params.tokenIn,
85
+ tokenOut: params.tokenOut,
86
+ amountIn: params.amountIn,
87
+ amountOut: priceData.outAmount,
88
+ estimatedGas: priceData.estimatedGas,
89
+ slippage: params.slippage,
90
+ priceImpact: priceData.price_impact ? parseFloat(priceData.price_impact) : undefined,
91
+ protocolResponse: priceData,
92
+ };
93
+ }
94
+ catch (error) {
95
+ const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
96
+ logger.error(`Failed to fetch swap price from ${this.protocol}`, errorMessageError);
97
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Failed to fetch OpenOcean price, error: ${errorMessage}`);
98
+ }
99
+ }
100
+ async fetchQuote(params) {
101
+ this.validatePriceParams(params);
102
+ const { from, receiver, tokenIn, amountIn, networkIn, networkOut, slippage, tokenOut } = params;
103
+ const queryNetwork = (0, check_vm_1.isSolanaNetwork)(networkIn) ? 'solana' : networkIn;
104
+ try {
105
+ const url = `${this.baseUrl}/${this.apiVersion}/${queryNetwork}/swap`;
106
+ const queryParams = {
107
+ inTokenAddress: tokenIn,
108
+ outTokenAddress: tokenOut,
109
+ amount: amountIn,
110
+ gasPrice: 1, // Default gas price, could be made configurable
111
+ slippage: slippage.toString(),
112
+ account: from,
113
+ disabledDexIds: this.disabledDexIds,
114
+ enabledDexIds: this.enabledDexIds,
115
+ };
116
+ const fullUrl = new URL(url);
117
+ Object.entries(queryParams).forEach(([key, value]) => {
118
+ if (value !== undefined) {
119
+ fullUrl.searchParams.append(key, value.toString());
120
+ }
121
+ });
122
+ logger.debug(`Making OpenOcean quote request to: ${fullUrl}`);
123
+ const response = await axios_1.default.get(fullUrl.toString());
124
+ if (response.data.code !== 200 || !response.data.data) {
125
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `OpenOcean API returned error: ${JSON.stringify(response.data)}`);
126
+ }
127
+ const quoteData = response.data.data;
128
+ logger.debug('Successfully received quote info from OpenOcean', {
129
+ amountOut: quoteData.outAmount,
130
+ estimatedGas: quoteData.estimatedGas,
131
+ });
132
+ return {
133
+ protocol: this.protocol,
134
+ tokenIn: tokenIn,
135
+ tokenOut: params.tokenOut,
136
+ amountIn: amountIn,
137
+ amountOut: quoteData.outAmount,
138
+ from,
139
+ receiver: receiver || from,
140
+ executionPayload: {
141
+ transactionData: {
142
+ data: quoteData.data,
143
+ to: quoteData.to,
144
+ value: quoteData.value,
145
+ gasEstimate: quoteData.estimatedGas.toString(),
146
+ gasLimit: (parseInt(quoteData.estimatedGas) * 1.1).toString(), // 10% buffer
147
+ },
148
+ },
149
+ slippage,
150
+ networkIn,
151
+ networkOut,
152
+ protocolResponse: quoteData,
153
+ };
154
+ }
155
+ catch (error) {
156
+ const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
157
+ logger.error(`Failed to fetch quote from ${this.protocol}`, errorMessageError);
158
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `Failed to fetch OpenOcean quote, error: ${errorMessage}`);
159
+ }
160
+ }
161
+ validatePriceParams(params) {
162
+ const { networkIn, networkOut } = params;
163
+ if (!this.multiChain && networkIn !== networkOut) {
164
+ logger.error('Multi-chain swaps not supported');
165
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'Multi-chain swaps not supported');
166
+ }
167
+ if (!this.chains.includes(networkIn)) {
168
+ logger.error(`Network ${networkIn} not supported`);
169
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, `Network ${networkIn} not supported`);
170
+ }
171
+ if (!this.chains.includes(networkOut)) {
172
+ logger.error(`Network ${networkOut} not supported`);
173
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, `Network ${networkOut} not supported`);
174
+ }
175
+ }
176
+ isOpenOceanPriceResponse(response) {
177
+ return response && 'inToken' in response && 'outToken' in response && 'outAmount' in response;
178
+ }
179
+ }
180
+ exports.OpenOceanService = OpenOceanService;
181
+ //# sourceMappingURL=openocean.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openocean.service.js","sourceRoot":"","sources":["../../../../src/protocols/openocean/openocean.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ export type OpenOceanConfig = {
2
+ openOceanPrivateUrl?: string;
3
+ openOceanApiVersion?: string;
4
+ openOceanDisabledDexIds?: string;
5
+ openOceanEnabledDexIds?: string;
6
+ };
7
+ export type OpenOceanTokenInfo = {
8
+ address: string;
9
+ decimals: number;
10
+ symbol: string;
11
+ name: string;
12
+ usd?: string;
13
+ volume?: number;
14
+ };
15
+ export type OpenOceanDexInfo = {
16
+ dexIndex: number;
17
+ dexCode: string;
18
+ swapAmount: string;
19
+ };
20
+ export type OpenOceanRouteInfo = {
21
+ from: string;
22
+ to: string;
23
+ parts: number;
24
+ routes: {
25
+ parts: number;
26
+ percentage: number;
27
+ subRoutes: {
28
+ from: string;
29
+ to: string;
30
+ parts: number;
31
+ dexes: {
32
+ dex: string;
33
+ id: string;
34
+ parts: number;
35
+ percentage: number;
36
+ }[];
37
+ }[];
38
+ }[];
39
+ };
40
+ export type OpenOceanPriceResponse = {
41
+ inToken: OpenOceanTokenInfo;
42
+ outToken: OpenOceanTokenInfo;
43
+ inAmount: string;
44
+ outAmount: string;
45
+ estimatedGas: string;
46
+ dexes?: OpenOceanDexInfo[];
47
+ path?: OpenOceanRouteInfo;
48
+ save?: number;
49
+ price_impact?: string;
50
+ };
51
+ export type OpenOceanQuoteResponse = {
52
+ inToken: OpenOceanTokenInfo;
53
+ outToken: OpenOceanTokenInfo;
54
+ inAmount: string;
55
+ outAmount: string;
56
+ estimatedGas: string;
57
+ minOutAmount: string;
58
+ from: string;
59
+ to: string;
60
+ value: string;
61
+ gasPrice: string;
62
+ data: string;
63
+ chainId: number;
64
+ rfqDeadline?: number;
65
+ gmxFee?: number;
66
+ price_impact?: string;
67
+ };
68
+ //# sourceMappingURL=openocean.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openocean.types.d.ts","sourceRoot":"","sources":["../../../../src/protocols/openocean/openocean.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE;YACT,IAAI,EAAE,MAAM,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE;gBACL,GAAG,EAAE,MAAM,CAAC;gBACZ,EAAE,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC;gBACd,UAAU,EAAE,MAAM,CAAC;aACpB,EAAE,CAAC;SACL,EAAE,CAAC;KACL,EAAE,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=openocean.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openocean.types.js","sourceRoot":"","sources":["../../../../src/protocols/openocean/openocean.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { PumpFunService } from './pumpfun.service';
2
+ export type { PumpFunConfig, PumpFunPriceResponse, PumpFunQuoteResponse } from './pumpfun.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocols/pumpfun/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PumpFunService = void 0;
4
+ // PumpFun Protocol - All exports
5
+ var pumpfun_service_1 = require("./pumpfun.service");
6
+ Object.defineProperty(exports, "PumpFunService", { enumerable: true, get: function () { return pumpfun_service_1.PumpFunService; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/protocols/pumpfun/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
@@ -0,0 +1,45 @@
1
+ import { PublicKey, Transaction, Connection } from '@solana/web3.js';
2
+ import { BondingCurveAccount, PumpFunSDK } from 'pumpdotfun-sdk';
3
+ import { IIntentProtocol } from '../../interfaces/intent-protocol';
4
+ import { ChainIdEnum, ProtocolEnum } from '../../types/enums';
5
+ import { IntentPriceParams } from '../../types/price-params';
6
+ import { PriceResponse, RawProtocolPriceResponse } from '../../types/price-response';
7
+ import { IntentQuoteParams } from '../../types/quote-params';
8
+ import { QuoteResponse } from '../../types/quote-response';
9
+ import { IntentsSDKConfig } from '../../types/sdk-config';
10
+ import { PumpFunConfig } from './pumpfun.types';
11
+ export type PumpFunPriceResponse = {
12
+ tokenMint: string;
13
+ tokenAmount: string;
14
+ solAmount: string;
15
+ operation: 'buy' | 'sell';
16
+ feeBasisPoint: string;
17
+ };
18
+ export type PumpFunQuoteResponse = {
19
+ transactions: string[];
20
+ };
21
+ export declare class PumpFunService implements IIntentProtocol {
22
+ readonly protocol = ProtocolEnum.PUMPFUN;
23
+ readonly chains: ChainIdEnum[];
24
+ readonly singleChain = true;
25
+ readonly multiChain = false;
26
+ protected readonly anchorProvider: {
27
+ connection: Connection;
28
+ publicKey: PublicKey;
29
+ signTransaction: (tx: Transaction) => Promise<Transaction>;
30
+ signAllTransactions: (txs: Transaction[]) => Promise<Transaction[]>;
31
+ };
32
+ protected readonly connection: Connection;
33
+ protected sdk: PumpFunSDK;
34
+ constructor(config: IntentsSDKConfig & PumpFunConfig);
35
+ isCorrectConfig<T extends {
36
+ [key: string]: string;
37
+ }>(config: {
38
+ [key: string]: string;
39
+ }): config is T;
40
+ fetchPrice(params: IntentPriceParams): Promise<PriceResponse>;
41
+ fetchQuote(params: IntentQuoteParams): Promise<QuoteResponse>;
42
+ protected getBondingCurveAccount(tokenMint: PublicKey): Promise<BondingCurveAccount | null>;
43
+ protected isPumpFunPriceResponse(response: RawProtocolPriceResponse): response is PumpFunPriceResponse;
44
+ }
45
+ //# sourceMappingURL=pumpfun.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pumpfun.service.d.ts","sourceRoot":"","sources":["../../../../src/protocols/pumpfun/pumpfun.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EACT,WAAW,EAEX,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,MAAM,oBAAoB,GAAG;IAEjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAIF,qBAAa,cAAe,YAAW,eAAe;IACpD,SAAgB,QAAQ,wBAAwB;IAChD,SAAgB,MAAM,gBAAwB;IAC9C,SAAgB,WAAW,QAAQ;IACnC,SAAgB,UAAU,SAAS;IAEnC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE;QACjC,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,EAAE,SAAS,CAAC;QACrB,eAAe,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3D,mBAAmB,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrE,CAAC;IAEF,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC;gBAEd,MAAM,EAAE,gBAAgB,GAAG,aAAa;IAwCpD,eAAe,CAAC,CAAC,SAAS;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,GAAG,MAAM,IAAI,CAAC;IAIF,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyF7D,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;cA6F1D,sBAAsB,CACpC,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAYtC,SAAS,CAAC,sBAAsB,CAC9B,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,oBAAoB;CASpC"}
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PumpFunService = void 0;
7
+ const web3_js_1 = require("@solana/web3.js");
8
+ const pumpdotfun_sdk_1 = require("pumpdotfun-sdk");
9
+ const bs58_1 = __importDefault(require("bs58"));
10
+ const enums_1 = require("../../types/enums");
11
+ const constants_1 = require("../../utils/constants");
12
+ const logger_1 = require("../../utils/logger");
13
+ const throw_error_1 = require("../../utils/throw-error");
14
+ const create_error_message_1 = require("../../utils/create-error-message");
15
+ let logger;
16
+ class PumpFunService {
17
+ constructor(config) {
18
+ this.protocol = enums_1.ProtocolEnum.PUMPFUN;
19
+ this.chains = [enums_1.ChainIdEnum.SOLANA];
20
+ this.singleChain = true;
21
+ this.multiChain = false;
22
+ // Configure logging
23
+ if (config.debug) {
24
+ logger_1.LoggerFactory.configure(logger_1.LoggerFactory.createConsoleLogger({ level: logger_1.LogLevelEnum.DEBUG }));
25
+ }
26
+ else if (config.logger) {
27
+ logger_1.LoggerFactory.configure(config.logger);
28
+ }
29
+ logger = logger_1.LoggerFactory.getLogger();
30
+ this.connection = new web3_js_1.Connection(config.solanaRpcUrl, 'confirmed');
31
+ // Initialize the anchor provider with a random keypair
32
+ const keyPair = web3_js_1.Keypair.generate();
33
+ this.anchorProvider = {
34
+ connection: this.connection,
35
+ publicKey: keyPair.publicKey,
36
+ signTransaction: async (tx) => {
37
+ tx.partialSign(keyPair);
38
+ return tx;
39
+ },
40
+ signAllTransactions: async (txs) => {
41
+ return txs.map(tx => {
42
+ tx.partialSign(keyPair);
43
+ return tx;
44
+ });
45
+ },
46
+ };
47
+ try {
48
+ this.sdk = new pumpdotfun_sdk_1.PumpFunSDK(this.anchorProvider);
49
+ }
50
+ catch (error) {
51
+ const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
52
+ logger.error('Failed to initialize PumpFun SDK', errorMessageError);
53
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, `Failed to initialize PumpFun SDK, error: ${errorMessage}`);
54
+ }
55
+ }
56
+ isCorrectConfig(config) {
57
+ return typeof config['solanaRpcUrl'] === 'string' && config['solanaRpcUrl'].length > 0;
58
+ }
59
+ async fetchPrice(params) {
60
+ // Validate networks
61
+ if (params.networkIn !== enums_1.ChainIdEnum.SOLANA || params.networkOut !== enums_1.ChainIdEnum.SOLANA) {
62
+ logger.error(`PumpFun only supports Solana network`);
63
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'PumpFun only supports Solana network');
64
+ }
65
+ try {
66
+ // Ensure one token is SOL and the other is a PumpFun token
67
+ const tokenIn = params.tokenIn;
68
+ const tokenOut = params.tokenOut;
69
+ // Check if one token is SOL
70
+ const tokenInIsSol = tokenIn === constants_1.SOL_NATIVE_ADDRESS;
71
+ const tokenOutIsSol = tokenOut === constants_1.SOL_NATIVE_ADDRESS;
72
+ if (!tokenInIsSol && !tokenOutIsSol) {
73
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'PumpFun swaps require one token to be SOL');
74
+ }
75
+ // Get the non-SOL token to check if it has a bonding curve
76
+ const tokenToCheck = tokenInIsSol ? tokenOut : tokenIn;
77
+ const tokenPk = new web3_js_1.PublicKey(tokenToCheck);
78
+ // Get bonding curve for the non-SOL token
79
+ const bondingCurve = await this.getBondingCurveAccount(tokenPk);
80
+ if (!bondingCurve) {
81
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Token ${tokenToCheck} does not have a PumpFun bonding curve`);
82
+ }
83
+ // Determine operation (buy = SOL to Token, sell = Token to SOL)
84
+ const operation = tokenInIsSol ? 'buy' : 'sell';
85
+ const { amountIn, slippage } = params;
86
+ const slippageBps = slippage * 100;
87
+ // Calculate amounts based on operation
88
+ let solAmount, tokenAmount;
89
+ if (operation === 'buy') {
90
+ // Buy operation: SOL -> PumpFun token
91
+ solAmount = BigInt(amountIn);
92
+ tokenAmount = bondingCurve.getBuyPrice(solAmount);
93
+ }
94
+ else {
95
+ // Sell operation: PumpFun token -> SOL
96
+ tokenAmount = BigInt(amountIn);
97
+ solAmount = bondingCurve.getSellPrice(tokenAmount, BigInt(slippageBps));
98
+ }
99
+ if (!solAmount || !tokenAmount) {
100
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, 'Failed to calculate price from bonding curve');
101
+ }
102
+ // Prepare response
103
+ const priceInfo = {
104
+ tokenMint: tokenPk.toBase58(),
105
+ tokenAmount: tokenAmount.toString(),
106
+ solAmount: solAmount.toString(),
107
+ operation,
108
+ feeBasisPoint: slippageBps.toString(),
109
+ };
110
+ return {
111
+ protocol: enums_1.ProtocolEnum.PUMPFUN,
112
+ networkIn: params.networkIn,
113
+ networkOut: params.networkOut,
114
+ tokenIn: params.tokenIn,
115
+ tokenOut: params.tokenOut,
116
+ amountIn: params.amountIn,
117
+ amountOut: operation === 'buy' ? tokenAmount.toString() : solAmount.toString(),
118
+ slippage: params.slippage,
119
+ protocolResponse: priceInfo,
120
+ };
121
+ }
122
+ catch (error) {
123
+ const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
124
+ logger.error(`Failed to fetch swap price from ${this.protocol}`, errorMessageError);
125
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Failed to fetch PumpFun price, error: ${errorMessage}`);
126
+ }
127
+ }
128
+ async fetchQuote(params) {
129
+ if (!this.connection) {
130
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.MISSING_RPC_URL, 'Connection not initialized');
131
+ }
132
+ const { from, receiver } = params;
133
+ let { priceResponse } = params;
134
+ // If no price response provided, fetch it
135
+ if (!priceResponse) {
136
+ priceResponse = await this.fetchPrice(params);
137
+ }
138
+ if (!this.isPumpFunPriceResponse(priceResponse.protocolResponse)) {
139
+ logger.error(`Invalid PumpFun price response`);
140
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Invalid PumpFun price response: ${JSON.stringify(priceResponse)}`);
141
+ }
142
+ try {
143
+ const pumpfunPrice = priceResponse.protocolResponse;
144
+ const operation = pumpfunPrice.operation;
145
+ const tokenMint = new web3_js_1.PublicKey(pumpfunPrice.tokenMint);
146
+ // Get fee recipient account
147
+ const global = await this.sdk.getGlobalAccount();
148
+ const feeRecipientAccount = global.feeRecipient;
149
+ // Get latest blockhash
150
+ const { blockhash } = await this.connection.getLatestBlockhash();
151
+ let instructions;
152
+ if (operation === 'buy') {
153
+ // Buy instructions: spending SOL to get tokens
154
+ instructions = await this.sdk.getBuyInstructions(new web3_js_1.PublicKey(from), tokenMint, feeRecipientAccount, BigInt(pumpfunPrice.tokenAmount), // amount of tokens to receive
155
+ BigInt(pumpfunPrice.solAmount));
156
+ }
157
+ else {
158
+ // Sell instructions: spending tokens to get SOL
159
+ instructions = await this.sdk.getSellInstructions(new web3_js_1.PublicKey(from), tokenMint, feeRecipientAccount, BigInt(pumpfunPrice.tokenAmount), // amount of tokens to sell
160
+ BigInt(pumpfunPrice.solAmount));
161
+ }
162
+ // Create versioned transaction
163
+ instructions.recentBlockhash = blockhash;
164
+ instructions.feePayer = new web3_js_1.PublicKey(from);
165
+ const messageV0 = new web3_js_1.MessageV0(instructions.compileMessage());
166
+ const versionedTransaction = new web3_js_1.VersionedTransaction(messageV0);
167
+ const encodedTransaction = bs58_1.default.encode(versionedTransaction.serialize());
168
+ // Prepare response
169
+ const pumpFunQuoteResponse = {
170
+ transactions: [encodedTransaction],
171
+ };
172
+ return {
173
+ protocol: enums_1.ProtocolEnum.PUMPFUN,
174
+ networkIn: params.networkIn,
175
+ networkOut: params.networkOut,
176
+ tokenIn: priceResponse.tokenIn,
177
+ tokenOut: priceResponse.tokenOut,
178
+ amountIn: priceResponse.amountIn,
179
+ amountOut: priceResponse.amountOut,
180
+ from,
181
+ receiver: receiver || from,
182
+ slippage: params.slippage,
183
+ executionPayload: {
184
+ transactionData: [encodedTransaction],
185
+ },
186
+ protocolResponse: pumpFunQuoteResponse,
187
+ };
188
+ }
189
+ catch (error) {
190
+ const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
191
+ logger.error(`Failed to fetch quote from ${this.protocol}`, errorMessageError);
192
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `Failed to fetch PumpFun quote, error: ${errorMessage}`);
193
+ }
194
+ }
195
+ // Helper: Get bonding curve account for a token
196
+ async getBondingCurveAccount(tokenMint) {
197
+ try {
198
+ const bondingCurveAccount = await this.sdk?.getBondingCurveAccount(tokenMint);
199
+ return bondingCurveAccount || null;
200
+ }
201
+ catch (error) {
202
+ const { errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
203
+ logger.error(`Failed to get bonding curve for ${tokenMint.toBase58()}`, errorMessageError);
204
+ return null;
205
+ }
206
+ }
207
+ // Helper: Check if a response is a PumpFun price response
208
+ isPumpFunPriceResponse(response) {
209
+ return (response &&
210
+ 'operation' in response &&
211
+ 'tokenMint' in response &&
212
+ 'tokenAmount' in response &&
213
+ 'solAmount' in response);
214
+ }
215
+ }
216
+ exports.PumpFunService = PumpFunService;
217
+ //# sourceMappingURL=pumpfun.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pumpfun.service.js","sourceRoot":"","sources":["../../../../src/protocols/pumpfun/pumpfun.service.ts"],"names":[],"mappings":"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"}