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,188 @@
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.JupiterService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const bs58_1 = __importDefault(require("bs58"));
9
+ const enums_1 = require("../../types/enums");
10
+ const constants_1 = require("../../utils/constants");
11
+ const logger_1 = require("../../utils/logger");
12
+ const throw_error_1 = require("../../utils/throw-error");
13
+ const axios_2 = require("axios");
14
+ const web3_js_1 = require("@solana/web3.js");
15
+ const create_error_message_1 = require("../../utils/create-error-message");
16
+ let logger;
17
+ class JupiterService {
18
+ constructor(config) {
19
+ this.protocol = enums_1.ProtocolEnum.JUPITER;
20
+ this.chains = [enums_1.ChainIdEnum.SOLANA];
21
+ this.singleChain = true;
22
+ this.multiChain = false;
23
+ this.priceParamOverrides = {
24
+ restrictIntermediateTokens: true,
25
+ onlyDirectRoutes: false,
26
+ // dynamicSlippage: true,
27
+ };
28
+ this.quoteParamOverrides = {
29
+ wrapAndUnwrapSol: true,
30
+ dynamicComputeUnitLimit: true,
31
+ dynamicSlippage: true,
32
+ skipUserAccountsRpcCalls: false,
33
+ };
34
+ this.priceEndpoint = '/quote';
35
+ this.quoteEndpoint = '/swap-instructions';
36
+ this.assemblyEndpoint = '/swap';
37
+ if (config?.debug) {
38
+ logger_1.LoggerFactory.configure(logger_1.LoggerFactory.createConsoleLogger({ level: logger_1.LogLevelEnum.DEBUG }));
39
+ }
40
+ // Use custom logger if provided
41
+ else if (config?.logger) {
42
+ logger_1.LoggerFactory.configure(config.logger);
43
+ }
44
+ logger = logger_1.LoggerFactory.getLogger();
45
+ // Jupiter API endpoint
46
+ this.baseUrl = config?.jupiterPrivateUrl || 'https://quote-api.jup.ag/v6';
47
+ }
48
+ isCorrectConfig(_config) {
49
+ // Jupiter has no required config fields, all are optional
50
+ return true;
51
+ }
52
+ async fetchPrice(params) {
53
+ if (params.networkIn !== enums_1.ChainIdEnum.SOLANA || params.networkOut !== enums_1.ChainIdEnum.SOLANA) {
54
+ logger.error(`Jupiter only supports Solana network`);
55
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'Jupiter only supports Solana network');
56
+ }
57
+ try {
58
+ const requestParams = this.priceParamsToRequestParams({
59
+ tokenIn: params.tokenIn,
60
+ tokenOut: params.tokenOut,
61
+ amountIn: params.amountIn,
62
+ slippage: params.slippage,
63
+ from: params.from,
64
+ });
65
+ // Apply price parameter overrides
66
+ const finalParams = {
67
+ ...requestParams,
68
+ ...this.priceParamOverrides,
69
+ };
70
+ if (finalParams.dynamicSlippage) {
71
+ delete finalParams.slippageBps;
72
+ }
73
+ const urlParams = new URLSearchParams(finalParams);
74
+ const endpoint = `${this.baseUrl}${this.priceEndpoint}?${urlParams.toString()}`;
75
+ logger.debug(`Making Jupiter API price request to: ${endpoint}`);
76
+ const response = await axios_1.default.get(endpoint);
77
+ const priceData = response.data;
78
+ if ('error' in priceData) {
79
+ logger.error(`Jupiter API returned error`, new Error(JSON.stringify(priceData, null, 2)));
80
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Jupiter API returned error: ${JSON.stringify(priceData.error, null, 2)}`);
81
+ }
82
+ const priceResponse = {
83
+ protocol: enums_1.ProtocolEnum.JUPITER,
84
+ networkIn: params.networkIn,
85
+ networkOut: params.networkOut,
86
+ tokenIn: params.tokenIn,
87
+ tokenOut: params.tokenOut,
88
+ amountIn: params.amountIn,
89
+ amountOut: priceData.outAmount,
90
+ slippage: params.slippage,
91
+ priceImpact: parseFloat(priceData.priceImpactPct) * 100,
92
+ protocolResponse: priceData,
93
+ };
94
+ return priceResponse;
95
+ }
96
+ catch (error) {
97
+ const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
98
+ logger.error(`Failed to fetch swap price from ${this.protocol}`, errorMessageError);
99
+ logger.error(`Failed to fetch Jupiter price`, errorMessageError);
100
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Failed to fetch Jupiter price, error: ${errorMessage}`);
101
+ }
102
+ }
103
+ async fetchQuote(params) {
104
+ const { from, receiver } = params;
105
+ let { priceResponse } = params;
106
+ if (!priceResponse || !this.isJupiterPriceResponse(priceResponse.protocolResponse)) {
107
+ priceResponse = await this.fetchPrice(params);
108
+ }
109
+ if (!this.isJupiterPriceResponse(priceResponse.protocolResponse)) {
110
+ logger.error(`Invalid Jupiter price response`);
111
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Invalid Jupiter price response: ${JSON.stringify(priceResponse)}`);
112
+ }
113
+ try {
114
+ logger.debug(`Making Jupiter API quote request for swap instructions`);
115
+ const swapParams = {
116
+ quoteResponse: priceResponse.protocolResponse,
117
+ userPublicKey: from,
118
+ ...this.quoteParamOverrides,
119
+ };
120
+ const swapTransactionResponse = await axios_1.default.post(`${this.baseUrl}${this.assemblyEndpoint}`, swapParams);
121
+ //will throw if transaction is too large
122
+ swapTransactionResponse.data.swapTransaction = bs58_1.default.encode(web3_js_1.VersionedTransaction.deserialize(Buffer.from(swapTransactionResponse.data.swapTransaction, 'base64')).serialize());
123
+ if (this.quoteParamOverrides.dynamicSlippage &&
124
+ !swapTransactionResponse?.data?.dynamicSlippageReport) {
125
+ throw new Error('Dynamic slippage report is not available');
126
+ }
127
+ //@ts-ignore // will never be undefined if dynamic slippage is enabled
128
+ if (this.quoteParamOverrides.dynamicSlippage &&
129
+ swapTransactionResponse.data.dynamicSlippageReport &&
130
+ swapTransactionResponse.data.dynamicSlippageReport.slippageBps > params.slippage * 100) {
131
+ throw new Error(`Dynamic slippage is higher than expected. Reported: ${swapTransactionResponse?.data?.dynamicSlippageReport?.slippageBps}bps, Max Tolerance: ${params.slippage * 100}bps`);
132
+ }
133
+ const quoteResponse = {
134
+ protocol: enums_1.ProtocolEnum.JUPITER,
135
+ networkIn: params.networkIn,
136
+ networkOut: params.networkOut,
137
+ tokenIn: priceResponse.tokenIn,
138
+ tokenOut: priceResponse.tokenOut,
139
+ amountIn: priceResponse.amountIn,
140
+ amountOut: priceResponse.amountOut,
141
+ from,
142
+ receiver: receiver || from,
143
+ //@ts-ignore // will never be undefined if dynamic slippage is enabled
144
+ slippage: this.quoteParamOverrides.dynamicSlippage &&
145
+ swapTransactionResponse?.data?.dynamicSlippageReport?.slippageBps
146
+ ? swapTransactionResponse?.data?.dynamicSlippageReport?.slippageBps / 100
147
+ : priceResponse.slippage,
148
+ priceImpact: priceResponse.priceImpact,
149
+ executionPayload: {
150
+ transactionData: [
151
+ {
152
+ ...swapTransactionResponse.data,
153
+ transaction: swapTransactionResponse.data.swapTransaction,
154
+ },
155
+ ],
156
+ },
157
+ protocolResponse: { transactions: [] },
158
+ };
159
+ return quoteResponse;
160
+ }
161
+ catch (error) {
162
+ const errorMessage = error instanceof axios_2.AxiosError
163
+ ? error?.response?.data?.error ||
164
+ error?.response?.data?.detail ||
165
+ error?.response?.data?.message
166
+ : error instanceof Error
167
+ ? error.message
168
+ : String(error);
169
+ logger.error(`Failed to fetch Jupiter quote`, errorMessage);
170
+ throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `Failed to fetch Jupiter quote, error: ${errorMessage}`);
171
+ }
172
+ }
173
+ priceParamsToRequestParams(params) {
174
+ const { tokenIn, tokenOut, amountIn, slippage } = params;
175
+ const requestParams = {
176
+ inputMint: tokenIn === constants_1.NATIVE_SOL ? constants_1.WRAPPED_SOL : tokenIn,
177
+ outputMint: tokenOut === constants_1.NATIVE_SOL ? constants_1.WRAPPED_SOL : tokenOut,
178
+ amount: parseInt(amountIn),
179
+ slippageBps: Math.round(slippage * 100),
180
+ };
181
+ return requestParams;
182
+ }
183
+ isJupiterPriceResponse(response) {
184
+ return (response && 'inputMint' in response && 'outputMint' in response && 'outAmount' in response);
185
+ }
186
+ }
187
+ exports.JupiterService = JupiterService;
188
+ //# sourceMappingURL=jupiter.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiter.service.js","sourceRoot":"","sources":["../../../../src/protocols/jupiter/jupiter.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,272 @@
1
+ export type JupiterConfig = {
2
+ jupiterPrivateUrl?: string;
3
+ };
4
+ export type JupiterSwapPlatformFee = {
5
+ amount: string;
6
+ feeBps: number;
7
+ };
8
+ export type JupiterSwapRoutePlanSwapInfo = {
9
+ ammKey: string;
10
+ label: string;
11
+ inputMint: string;
12
+ outputMint: string;
13
+ inAmount: string;
14
+ outAmount: string;
15
+ feeAmount: string;
16
+ feeMint: string;
17
+ };
18
+ export type JupiterSwapRoutePlan = {
19
+ swapInfo: JupiterSwapRoutePlanSwapInfo;
20
+ percent: number;
21
+ };
22
+ export type JupiterPriceResponse = {
23
+ inputMint: string;
24
+ inAmount: string;
25
+ outputMint: string;
26
+ outAmount: string;
27
+ otherAmountThreshold: string;
28
+ swapMode: 'ExactIn' | 'ExactOut';
29
+ slippageBps: number;
30
+ computedAutoSlippage?: number;
31
+ platformFee: JupiterSwapPlatformFee;
32
+ priceImpactPct: string;
33
+ routePlan: JupiterSwapRoutePlan[];
34
+ contextSlot: number;
35
+ timeTaken: number;
36
+ };
37
+ export type ComputeBudgetInstruction = {
38
+ programId: string;
39
+ accounts: any[];
40
+ data: string;
41
+ };
42
+ export type SetupInstruction = {
43
+ programId: string;
44
+ accounts: any[];
45
+ data: string;
46
+ };
47
+ export type Instructions = {
48
+ computeBudgetInstructions: ComputeBudgetInstruction[];
49
+ setupInstructions: SetupInstruction[];
50
+ };
51
+ export type JupiterPriceUrlParams = {
52
+ /**
53
+ * Required token mint address for the input token
54
+ * The token the user is swapping from
55
+ */
56
+ inputMint: string;
57
+ /**
58
+ * Required token mint address for the output token
59
+ * The token the user is swapping to
60
+ */
61
+ outputMint: string;
62
+ /**
63
+ * Required raw amount to swap (before decimals)
64
+ * - If swapMode=ExactIn: This is the input amount
65
+ * - If swapMode=ExactOut: This is the output amount
66
+ */
67
+ amount: number;
68
+ /**
69
+ * Slippage tolerance in basis points (1 bp = 0.01%)
70
+ * Controls how much price movement is acceptable
71
+ * Example: 50 = 0.5% slippage tolerance
72
+ */
73
+ slippageBps?: number;
74
+ /**
75
+ * Determines whether the input or output amount is fixed
76
+ * - ExactIn: User specifies exact input amount, output may vary within slippage
77
+ * - ExactOut: User specifies exact output amount, input may vary within slippage
78
+ * Note: Not all AMMs support ExactOut
79
+ * @default "ExactIn"
80
+ */
81
+ swapMode?: 'ExactIn' | 'ExactOut';
82
+ /**
83
+ * Specific DEXes to use for routing
84
+ * If specified, the route will ONLY use these DEXes
85
+ * Multiple DEXes can be passed as an array
86
+ * Example: ["Raydium", "Orca V2", "Meteora DLMM"]
87
+ */
88
+ dexes?: string[];
89
+ /**
90
+ * DEXes to exclude from routing
91
+ * If specified, the route will NOT use these DEXes
92
+ * Multiple DEXes can be passed as an array
93
+ * Example: ["Raydium", "Orca V2", "Meteora DLMM"]
94
+ */
95
+ excludeDexes?: string[];
96
+ /**
97
+ * Restricts intermediate tokens within a route to a set of more stable tokens
98
+ * Helps reduce exposure to potential high slippage routes
99
+ * @default true
100
+ */
101
+ restrictIntermediateTokens?: boolean;
102
+ /**
103
+ * Limits Jupiter routing to single hop routes only
104
+ * May result in worse pricing but simpler routes
105
+ * @default false
106
+ */
107
+ onlyDirectRoutes?: boolean;
108
+ /**
109
+ * Uses legacy transaction format instead of versioned transaction
110
+ * @default false
111
+ */
112
+ asLegacyTransaction?: boolean;
113
+ /**
114
+ * Platform fee in basis points (1 bp = 0.01%)
115
+ * Used together with feeAccount in /swap endpoint
116
+ */
117
+ platformFeeBps?: number;
118
+ /**
119
+ * Rough estimate of the max accounts to be used for the quote
120
+ * Useful when composing your own transaction or for more precise resource accounting
121
+ * @default 64
122
+ */
123
+ maxAccounts?: number;
124
+ /**
125
+ * Dynamic Slippage does not have any effect on price url
126
+ */
127
+ dynamicSlippage?: boolean;
128
+ };
129
+ export type JupiterSwapUrlParams = {
130
+ /**
131
+ * Required public key of the user initiating the swap
132
+ * This is the account that will sign the transaction
133
+ */
134
+ userPublicKey: string;
135
+ /**
136
+ * Required quote response object returned from a previous call to the quote endpoint
137
+ * Contains pricing information and routing details for the swap
138
+ */
139
+ quoteResponse: object;
140
+ /**
141
+ * Whether to automatically wrap/unwrap SOL in the transaction
142
+ * If false, it will use wSOL token account
143
+ * Parameter will be ignored if destinationTokenAccount is set because the
144
+ * destinationTokenAccount may belong to a different user that we have no authority to close
145
+ * @default true
146
+ */
147
+ wrapAndUnwrapSol?: boolean;
148
+ /**
149
+ * Enables the usage of shared program accounts
150
+ * Essential for complex routing that requires multiple intermediate token accounts
151
+ * The default is determined dynamically by the routing engine to optimize for compute units
152
+ * Note: shared accounts route will fail on some new AMMs with low liquidity tokens
153
+ */
154
+ useSharedAccounts?: boolean;
155
+ /**
156
+ * Token account that will be used to collect fees
157
+ * The mint of the token account can only be either the input or output mint of the swap
158
+ * No longer requires using the Referral Program
159
+ */
160
+ feeAccount?: string;
161
+ /**
162
+ * Any public key that belongs to you to track the transactions
163
+ * Useful for integrators to get all swap transactions from this public key
164
+ * Data can be queried using block explorers or analytics platforms
165
+ */
166
+ trackingAccount?: string;
167
+ /**
168
+ * Specifies additional fees to prioritize the transaction
169
+ * Can be used for EITHER priority fee OR Jito tip (not both simultaneously)
170
+ * For both, use /swap-instructions endpoint
171
+ * Can be set to 0 to skip adding priority fees
172
+ */
173
+ prioritizationFeeLamports?: {
174
+ /**
175
+ * Sets a priority level with a maximum lamport cap
176
+ */
177
+ priorityLevelWithMaxLamports?: {
178
+ /**
179
+ * Priority level for transaction processing
180
+ */
181
+ priorityLevel: 'medium' | 'high' | 'veryHigh';
182
+ /**
183
+ * Maximum lamports to cap the priority fee estimation
184
+ * Prevents overpaying for transaction priority
185
+ */
186
+ maxLamports: number;
187
+ };
188
+ /**
189
+ * Exact amount of tip to use in a Jito tip instruction
190
+ * Must be used with a connection to a Jito RPC
191
+ */
192
+ jitoTipLamports?: number;
193
+ } | number;
194
+ /**
195
+ * Builds a legacy transaction rather than the default versioned transaction
196
+ * Should be used together with asLegacyTransaction in /quote
197
+ * @default false
198
+ */
199
+ asLegacyTransaction?: boolean;
200
+ /**
201
+ * Public key of a token account that will receive the output tokens
202
+ * If not provided, the signer's token account will be used
203
+ * If provided, we assume the token account is already initialized
204
+ */
205
+ destinationTokenAccount?: string;
206
+ /**
207
+ * When enabled, performs a swap simulation to determine compute unit usage
208
+ * Sets the value in ComputeBudget's compute unit limit
209
+ * Requires one extra RPC call for simulation
210
+ * Recommended to estimate compute units correctly and reduce priority fees
211
+ * @default false
212
+ */
213
+ dynamicComputeUnitLimit?: boolean;
214
+ /**
215
+ * When enabled, skips additional RPC calls to check required accounts
216
+ * Only enable when you've already set up all accounts needed for the transaction
217
+ * @default false
218
+ */
219
+ skipUserAccountsRpcCalls?: boolean;
220
+ /**
221
+ * When enabled, estimates slippage and applies it directly in the swap transaction
222
+ * Overwrites the slippageBps parameter in the quote response
223
+ * Should be used together with dynamicSlippage in /quote
224
+ * @default false
225
+ */
226
+ dynamicSlippage?: boolean;
227
+ /**
228
+ * Exact compute unit price to calculate priority fee
229
+ * Total fee = computeUnitLimit (1400000) * computeUnitPriceMicroLamports
230
+ * Using prioritizationFeeLamports with dynamicComputeUnitLimit is recommended instead
231
+ */
232
+ computeUnitPriceMicroLamports?: number;
233
+ /**
234
+ * Number of slots for which the transaction will be valid
235
+ * Example: 10 slots ≈ 4 seconds (at ~400ms per slot) before expiration
236
+ */
237
+ blockhashSlotsToExpiry?: number;
238
+ };
239
+ export type JupiterTransactionData = {
240
+ swapTransaction: string;
241
+ lastValidBlockHeight: number;
242
+ prioritizationFeeLamports: number;
243
+ computeUnitLimit: number;
244
+ prioritizationType: {
245
+ computeBudget: {
246
+ microLamports: number;
247
+ estimatedMicroLamports: number;
248
+ };
249
+ };
250
+ simulationSlot: number | null;
251
+ dynamicSlippageReport: {
252
+ slippageBps: number;
253
+ otherAmount: null;
254
+ simulatedIncurredSlippageBps: null;
255
+ amplificationRatio: null;
256
+ categoryName: string;
257
+ heuristicMaxSlippageBps: number;
258
+ rtseSlippageBps: null;
259
+ failedTxnEstSlippage: number;
260
+ emaEstSlippage: number;
261
+ } | null;
262
+ simulationError: {
263
+ errorCode: string;
264
+ error: string;
265
+ } | null;
266
+ addressesByLookupTableAddress: null;
267
+ transaction: string;
268
+ };
269
+ export type JupiterQuoteResponses = {
270
+ transactions: string[];
271
+ };
272
+ //# sourceMappingURL=jupiter.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiter.types.d.ts","sourceRoot":"","sources":["../../../../src/protocols/jupiter/jupiter.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,4BAA4B,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,EAAE,sBAAsB,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,oBAAoB,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,yBAAyB,EAAE,wBAAwB,EAAE,CAAC;IACtD,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAElC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAEjB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAExB;;;;OAIG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAErC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;;OAKG;IACH,yBAAyB,CAAC,EACtB;QACE;;WAEG;QACH,4BAA4B,CAAC,EAAE;YAC7B;;eAEG;YACH,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;YAE9C;;;eAGG;YACH,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;QAEF;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GACD,MAAM,CAAC;IAEX;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;IAEvC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE;QAClB,aAAa,EAAE;YACb,aAAa,EAAE,MAAM,CAAC;YACtB,sBAAsB,EAAE,MAAM,CAAC;SAChC,CAAC;KACH,CAAC;IACF,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qBAAqB,EAAE;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,IAAI,CAAC;QAClB,4BAA4B,EAAE,IAAI,CAAC;QACnC,kBAAkB,EAAE,IAAI,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,uBAAuB,EAAE,MAAM,CAAC;QAChC,eAAe,EAAE,IAAI,CAAC;QACtB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;KACxB,GAAG,IAAI,CAAC;IACT,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IACT,6BAA6B,EAAE,IAAI,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=jupiter.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jupiter.types.js","sourceRoot":"","sources":["../../../../src/protocols/jupiter/jupiter.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { KyberswapService } from './kyberswap.service';
2
+ export type { KyberswapConfig, KyberswapPriceRequestBody, KyberswapQuoteRequestBody, PoolExtra, ExtraFee, Pool, RouteSummary, KyberswapPriceResponse, KyberswapQuoteResponse, KyberswapMultiPriceParams, KyberswapMultiQuoteParams, } from './kyberswap.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocols/kyberswap/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EACV,eAAe,EACf,yBAAyB,EACzB,yBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KyberswapService = void 0;
4
+ // Kyberswap Protocol - All exports
5
+ var kyberswap_service_1 = require("./kyberswap.service");
6
+ Object.defineProperty(exports, "KyberswapService", { enumerable: true, get: function () { return kyberswap_service_1.KyberswapService; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/protocols/kyberswap/index.ts"],"names":[],"mappings":";;;AAAA,mCAAmC;AACnC,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,34 @@
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 { KyberswapConfig, KyberswapPriceRequestBody, KyberswapPriceResponse, KyberswapQuoteResponse } from './kyberswap.types';
9
+ export declare class KyberswapService implements IIntentProtocol {
10
+ readonly protocol = ProtocolEnum.KYBERSWAP;
11
+ readonly chains: ChainIdEnum[];
12
+ readonly singleChain = true;
13
+ readonly multiChain = false;
14
+ readonly priceEndpoint = "/api/v1/routes";
15
+ readonly quoteEndpoint = "/api/v1/route/build";
16
+ baseUrl: string;
17
+ clientId: string;
18
+ constructor(config: IntentsSDKConfig & KyberswapConfig);
19
+ isCorrectConfig<T extends {
20
+ [key: string]: string;
21
+ }>(config: {
22
+ [key: string]: string;
23
+ }): config is T;
24
+ fetchPrice(params: IntentPriceParams): Promise<Omit<PriceResponse, 'protocolResponse'> & {
25
+ protocolResponse: KyberswapPriceResponse;
26
+ }>;
27
+ fetchQuote(params: IntentQuoteParams): Promise<QuoteResponse & {
28
+ protocolResponse: KyberswapQuoteResponse;
29
+ }>;
30
+ protected priceParamsToRequestBody(params: IntentPriceParams): KyberswapPriceRequestBody;
31
+ protected validatePriceParams(params: IntentPriceParams): void;
32
+ protected isKyberswapPriceResponse(response: RawProtocolPriceResponse): response is KyberswapPriceResponse;
33
+ }
34
+ //# sourceMappingURL=kyberswap.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kyberswap.service.d.ts","sourceRoot":"","sources":["../../../../src/protocols/kyberswap/kyberswap.service.ts"],"names":[],"mappings":"AACA,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;AAM1D,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EAEtB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAK3B,qBAAa,gBAAiB,YAAW,eAAe;IACtD,SAAgB,QAAQ,0BAA0B;IAClD,SAAgB,MAAM,gBASpB;IACF,SAAgB,WAAW,QAAQ;IACnC,SAAgB,UAAU,SAAS;IACnC,SAAgB,aAAa,oBAAoB;IACjD,SAAgB,aAAa,yBAAyB;IAE/C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,gBAAgB,GAAG,eAAe;IActD,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,CACrB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CACR,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG;QAAE,gBAAgB,EAAE,sBAAsB,CAAA;KAAE,CACvF;IA0EY,UAAU,CACrB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,aAAa,GAAG;QAAE,gBAAgB,EAAE,sBAAsB,CAAA;KAAE,CAAC;IAsFxE,SAAS,CAAC,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,yBAAyB;IAoBxF,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAsB9D,SAAS,CAAC,wBAAwB,CAChC,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,sBAAsB;CAGtC"}