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,108 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.logger = exports.LoggerFactory = exports.PinoLogger = exports.WinstonLogger = exports.ConsoleLogger = exports.NoOpLogger = exports.LogLevelEnum = void 0;
5
+ var LogLevelEnum;
6
+ (function (LogLevelEnum) {
7
+ LogLevelEnum[LogLevelEnum["NONE"] = 0] = "NONE";
8
+ LogLevelEnum[LogLevelEnum["ERROR"] = 1] = "ERROR";
9
+ LogLevelEnum[LogLevelEnum["WARN"] = 2] = "WARN";
10
+ LogLevelEnum[LogLevelEnum["INFO"] = 3] = "INFO";
11
+ LogLevelEnum[LogLevelEnum["DEBUG"] = 4] = "DEBUG";
12
+ })(LogLevelEnum || (exports.LogLevelEnum = LogLevelEnum = {}));
13
+ // Default no-op logger (silent)
14
+ class NoOpLogger {
15
+ debug() { }
16
+ info() { }
17
+ warn() { }
18
+ error() { }
19
+ }
20
+ exports.NoOpLogger = NoOpLogger;
21
+ // Simple console logger for debugging
22
+ class ConsoleLogger {
23
+ constructor(options = {}) {
24
+ this._level = options.level ?? LogLevelEnum.NONE;
25
+ }
26
+ debug(message, meta) {
27
+ if (this._level >= LogLevelEnum.DEBUG) {
28
+ console.debug(`[DEBUG] ${message}`, meta);
29
+ }
30
+ }
31
+ info(message, meta) {
32
+ if (this._level >= LogLevelEnum.INFO) {
33
+ console.info(`[INFO] ${message}`, meta);
34
+ }
35
+ }
36
+ warn(message, meta) {
37
+ if (this._level >= LogLevelEnum.WARN) {
38
+ console.warn(`[WARN] ${message}`, meta);
39
+ }
40
+ }
41
+ error(message, error, meta) {
42
+ if (this._level >= LogLevelEnum.ERROR) {
43
+ console.error(`[ERROR] ${message}`, error, meta);
44
+ }
45
+ }
46
+ }
47
+ exports.ConsoleLogger = ConsoleLogger;
48
+ // Winston adapter
49
+ class WinstonLogger {
50
+ constructor(winstonInstance) {
51
+ this._logger = winstonInstance;
52
+ }
53
+ debug(message, meta) {
54
+ this._logger.debug(message, meta);
55
+ }
56
+ info(message, meta) {
57
+ this._logger.info(message, meta);
58
+ }
59
+ warn(message, meta) {
60
+ this._logger.warn(message, meta);
61
+ }
62
+ error(message, error, meta) {
63
+ this._logger.error(message, { error, ...meta });
64
+ }
65
+ }
66
+ exports.WinstonLogger = WinstonLogger;
67
+ // Pino adapter
68
+ class PinoLogger {
69
+ constructor(pinoInstance) {
70
+ this._logger = pinoInstance;
71
+ }
72
+ debug(message, meta) {
73
+ this._logger.debug(meta, message);
74
+ }
75
+ info(message, meta) {
76
+ this._logger.info(meta, message);
77
+ }
78
+ warn(message, meta) {
79
+ this._logger.warn(meta, message);
80
+ }
81
+ error(message, error, meta) {
82
+ this._logger.error({ err: error, ...meta }, message);
83
+ }
84
+ }
85
+ exports.PinoLogger = PinoLogger;
86
+ // SDK logging configuration
87
+ class LoggerFactory {
88
+ static getLogger() {
89
+ return LoggerFactory._instance;
90
+ }
91
+ static configure(logger) {
92
+ LoggerFactory._instance = logger;
93
+ }
94
+ static createConsoleLogger(options) {
95
+ return new ConsoleLogger(options);
96
+ }
97
+ static createWinstonLogger(winston) {
98
+ return new WinstonLogger(winston);
99
+ }
100
+ static createPinoLogger(pino) {
101
+ return new PinoLogger(pino);
102
+ }
103
+ }
104
+ exports.LoggerFactory = LoggerFactory;
105
+ LoggerFactory._instance = new NoOpLogger();
106
+ // Export a default logger instance (no-op by default)
107
+ exports.logger = LoggerFactory.getLogger();
108
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { SdkErrorEnum } from '../types/enums';
2
+ export declare const sdkError: (errorType: SdkErrorEnum, message: string) => Error;
3
+ //# sourceMappingURL=throw-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throw-error.d.ts","sourceRoot":"","sources":["../../../src/utils/throw-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,QAAQ,GAAI,WAAW,YAAY,EAAE,SAAS,MAAM,KAAG,KAEnE,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sdkError = void 0;
4
+ const sdkError = (errorType, message) => {
5
+ return new Error(`${errorType}: ${message}`);
6
+ };
7
+ exports.sdkError = sdkError;
8
+ //# sourceMappingURL=throw-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throw-error.js","sourceRoot":"","sources":["../../../src/utils/throw-error.ts"],"names":[],"mappings":";;;AAEO,MAAM,QAAQ,GAAG,CAAC,SAAuB,EAAE,OAAe,EAAS,EAAE;IAC1E,OAAO,IAAI,KAAK,CAAC,GAAG,SAAS,KAAK,OAAO,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=intent-protocol-suite.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-protocol-suite.test.d.ts","sourceRoot":"","sources":["../../../tests/core/intent-protocol-suite.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,485 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const enums_1 = require("../../src/types/enums");
4
+ const test_data_1 = require("../fixtures/test-data");
5
+ // Helper to safely create protocol instances
6
+ function createProtocolInstance(name, createFn) {
7
+ try {
8
+ return createFn();
9
+ }
10
+ catch (error) {
11
+ console.warn(`Failed to create ${name} instance for testing:`, error instanceof Error ? error.message : 'Unknown error');
12
+ return null;
13
+ }
14
+ }
15
+ // Create test configurations for protocols that need them
16
+ const TEST_CONFIGS = {
17
+ pumpfun: {
18
+ solanaRpcUrl: 'https://api.mainnet-beta.solana.com',
19
+ },
20
+ aftermath: {
21
+ suiRpcUrl: 'https://fullnode.mainnet.sui.io:443',
22
+ },
23
+ okx: {
24
+ okxCredentials: {
25
+ apiKey: 'test-api-key',
26
+ secretKey: 'test-secret-key',
27
+ passphrase: 'test-passphrase',
28
+ projectId: 'test-project-id',
29
+ },
30
+ },
31
+ zeroX: {
32
+ apiKey: 'test-api-key',
33
+ },
34
+ kyberswap: {
35
+ clientId: 'test-client-id',
36
+ },
37
+ };
38
+ // Attempt to load all protocol implementations
39
+ const PROTOCOL_CANDIDATES = [
40
+ {
41
+ name: 'Jupiter',
42
+ createFn: () => {
43
+ const { JupiterService } = require('../../src/protocols/jupiter/jupiter.service');
44
+ return new JupiterService();
45
+ },
46
+ },
47
+ {
48
+ name: 'Odos',
49
+ createFn: () => {
50
+ const { OdosService } = require('../../src/protocols/odos/odos.service');
51
+ return new OdosService();
52
+ },
53
+ },
54
+ {
55
+ name: 'Raydium V2',
56
+ createFn: () => {
57
+ const { RaydiumV2Service } = require('../../src/protocols/raydium/raydium-v2.service');
58
+ return new RaydiumV2Service();
59
+ },
60
+ },
61
+ {
62
+ name: 'PumpFun',
63
+ createFn: () => {
64
+ const { PumpFunService } = require('../../src/protocols/pumpfun/pumpfun.service');
65
+ return new PumpFunService(TEST_CONFIGS.pumpfun);
66
+ },
67
+ },
68
+ {
69
+ name: 'OpenOcean',
70
+ createFn: () => {
71
+ const { OpenOceanService } = require('../../src/protocols/openocean/openocean.service');
72
+ return new OpenOceanService();
73
+ },
74
+ },
75
+ {
76
+ name: 'Kyberswap',
77
+ createFn: () => {
78
+ const { KyberswapService } = require('../../src/protocols/kyberswap/kyberswap.service');
79
+ return new KyberswapService(TEST_CONFIGS.kyberswap);
80
+ },
81
+ },
82
+ {
83
+ name: 'ZeroX',
84
+ createFn: () => {
85
+ const { ZeroXService } = require('../../src/protocols/zeroX/zeroX.service');
86
+ return new ZeroXService(TEST_CONFIGS.zeroX);
87
+ },
88
+ },
89
+ {
90
+ name: 'Aftermath',
91
+ createFn: () => {
92
+ const { AftermathService } = require('../../src/protocols/aftermath/aftermath.service');
93
+ return new AftermathService(TEST_CONFIGS.aftermath);
94
+ },
95
+ },
96
+ {
97
+ name: 'OKX',
98
+ createFn: () => {
99
+ const { OkxService } = require('../../src/protocols/okx/okx.service');
100
+ return new OkxService(TEST_CONFIGS.okx);
101
+ },
102
+ },
103
+ {
104
+ name: 'DeBridge',
105
+ createFn: () => {
106
+ const { DeBridgeService } = require('../../src/protocols/debridge/debridge.service');
107
+ return new DeBridgeService();
108
+ },
109
+ },
110
+ {
111
+ name: 'Genius Bridge',
112
+ createFn: () => {
113
+ const { GeniusBridgeService, } = require('../../src/protocols/genius-bridge/genius-bridge.service');
114
+ return new GeniusBridgeService();
115
+ },
116
+ },
117
+ ];
118
+ // Load all available protocol implementations
119
+ const PROTOCOL_IMPLEMENTATIONS = PROTOCOL_CANDIDATES.map(candidate => {
120
+ const protocol = createProtocolInstance(candidate.name, candidate.createFn);
121
+ return protocol
122
+ ? {
123
+ name: candidate.name,
124
+ protocol,
125
+ className: candidate.name.replace(/\s+/g, '') + 'Service',
126
+ }
127
+ : null;
128
+ }).filter((impl) => impl !== null);
129
+ describe('IIntentProtocol Implementation Suite', () => {
130
+ beforeAll(() => {
131
+ console.log('\n=== PROTOCOL DISCOVERY RESULTS ===');
132
+ console.log(`Successfully loaded ${PROTOCOL_IMPLEMENTATIONS.length} protocol implementations:`);
133
+ PROTOCOL_IMPLEMENTATIONS.forEach((impl, index) => {
134
+ console.log(` ${index + 1}. ${impl.name} (${impl.className})`);
135
+ });
136
+ const failedCount = PROTOCOL_CANDIDATES.length - PROTOCOL_IMPLEMENTATIONS.length;
137
+ if (failedCount > 0) {
138
+ console.log(`\n${failedCount} protocols failed to load (likely due to missing dependencies or configuration issues)`);
139
+ }
140
+ console.log('===================================\n');
141
+ });
142
+ describe('Protocol Discovery and Registration', () => {
143
+ test('should discover at least some protocol implementations', () => {
144
+ expect(PROTOCOL_IMPLEMENTATIONS.length).toBeGreaterThan(0);
145
+ });
146
+ test('should have unique protocol identifiers', () => {
147
+ const protocolIds = PROTOCOL_IMPLEMENTATIONS.map(impl => impl.protocol.protocol);
148
+ const uniqueProtocolIds = [...new Set(protocolIds)];
149
+ expect(protocolIds).toHaveLength(uniqueProtocolIds.length);
150
+ });
151
+ });
152
+ // Test each protocol implementation
153
+ PROTOCOL_IMPLEMENTATIONS.forEach(({ name, protocol, className }) => {
154
+ describe(`${name} (${className})`, () => {
155
+ describe('Interface Compliance', () => {
156
+ test('should implement IIntentProtocol interface', () => {
157
+ expect(protocol).toBeDefined();
158
+ expect(typeof protocol.fetchPrice).toBe('function');
159
+ expect(typeof protocol.fetchQuote).toBe('function');
160
+ expect(typeof protocol.protocol).toBe('string');
161
+ expect(Array.isArray(protocol.chains)).toBe(true);
162
+ expect(typeof protocol.singleChain).toBe('boolean');
163
+ expect(typeof protocol.multiChain).toBe('boolean');
164
+ });
165
+ test('should have valid protocol properties', () => {
166
+ expect(protocol.protocol).toBeTruthy();
167
+ expect(protocol.chains.length).toBeGreaterThan(0);
168
+ expect(Object.values(enums_1.ProtocolEnum)).toContain(protocol.protocol);
169
+ });
170
+ test('should have consistent chain configuration', () => {
171
+ // Single-chain protocols should not be multi-chain
172
+ if (protocol.singleChain) {
173
+ expect(protocol.multiChain).toBe(false);
174
+ }
175
+ // Multi-chain protocols should not be single-chain
176
+ if (protocol.multiChain) {
177
+ expect(protocol.singleChain).toBe(false);
178
+ }
179
+ // At least one should be true
180
+ expect(protocol.singleChain || protocol.multiChain).toBe(true);
181
+ });
182
+ });
183
+ describe('Chain Support and Routing Capabilities', () => {
184
+ test('should have valid supported chains', () => {
185
+ protocol.chains.forEach(chain => {
186
+ expect(Object.values(enums_1.ChainIdEnum)).toContain(chain);
187
+ });
188
+ });
189
+ test('should indicate routing capabilities correctly', () => {
190
+ if (protocol.singleChain) {
191
+ // Single-chain protocols can only route within supported chains
192
+ expect(protocol.chains.length).toBeGreaterThan(0);
193
+ console.log(`${name}: Single-chain protocol supporting ${protocol.chains.length} chain(s) - ${protocol.chains.map(c => enums_1.ChainIdEnum[c]).join(', ')}`);
194
+ }
195
+ if (protocol.multiChain) {
196
+ // Multi-chain protocols should support multiple chains or be bridges
197
+ expect(protocol.chains.length).toBeGreaterThanOrEqual(1);
198
+ console.log(`${name}: Multi-chain protocol supporting ${protocol.chains.length} chain(s) - ${protocol.chains.map(c => enums_1.ChainIdEnum[c]).join(', ')}`);
199
+ }
200
+ });
201
+ test('should categorize protocol type correctly', () => {
202
+ const EVMChains = [
203
+ enums_1.ChainIdEnum.ETHEREUM,
204
+ enums_1.ChainIdEnum.ARBITRUM,
205
+ enums_1.ChainIdEnum.OPTIMISM,
206
+ enums_1.ChainIdEnum.POLYGON,
207
+ enums_1.ChainIdEnum.BSC,
208
+ enums_1.ChainIdEnum.AVALANCHE,
209
+ enums_1.ChainIdEnum.BASE,
210
+ enums_1.ChainIdEnum.BLAST,
211
+ enums_1.ChainIdEnum.SONIC,
212
+ ];
213
+ const isEVMOnly = protocol.chains.every(chain => EVMChains.includes(chain));
214
+ const isSolanaOnly = protocol.chains.length === 1 && protocol.chains[0] === enums_1.ChainIdEnum.SOLANA;
215
+ const isMoveOnly = protocol.chains.every(chain => [enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chain));
216
+ const isCrossVM = !isEVMOnly && !isSolanaOnly && !isMoveOnly;
217
+ const classification = {
218
+ isEVMOnly,
219
+ isSolanaOnly,
220
+ isMoveOnly,
221
+ isCrossVM,
222
+ chains: protocol.chains.map(c => enums_1.ChainIdEnum[c]),
223
+ chainCount: protocol.chains.length,
224
+ };
225
+ console.log(`${name} classification:`, classification);
226
+ // Protocol should fall into one of these categories
227
+ expect(isEVMOnly || isSolanaOnly || isMoveOnly || isCrossVM).toBe(true);
228
+ });
229
+ });
230
+ describe('Operational Capabilities Analysis', () => {
231
+ test('should determine possible operations based on chain configuration', () => {
232
+ const capabilities = analyzeProtocolCapabilities(protocol);
233
+ expect(capabilities).toHaveProperty('canDoIntraChainSwaps');
234
+ expect(capabilities).toHaveProperty('canDoCrossChainSwaps');
235
+ expect(capabilities).toHaveProperty('supportedVMs');
236
+ expect(capabilities).toHaveProperty('routingScenarios');
237
+ console.log(`${name} capabilities:`, capabilities);
238
+ });
239
+ test('should validate parameter compatibility for supported chains', () => {
240
+ // Test with each supported chain
241
+ let validChains = 0;
242
+ protocol.chains.forEach(chainId => {
243
+ const canCreateParams = canCreateValidParams(chainId);
244
+ if (canCreateParams) {
245
+ validChains++;
246
+ }
247
+ });
248
+ // At least some chains should have valid test data
249
+ expect(validChains).toBeGreaterThan(0);
250
+ console.log(`${name}: ${validChains}/${protocol.chains.length} chains have valid test parameters`);
251
+ });
252
+ });
253
+ describe('Routing Matrix Analysis', () => {
254
+ test('should generate valid routing matrix for supported chains', () => {
255
+ const routingMatrix = generateRoutingMatrix(protocol);
256
+ expect(routingMatrix).toHaveProperty('intraChainRoutes');
257
+ expect(routingMatrix).toHaveProperty('crossChainRoutes');
258
+ expect(routingMatrix).toHaveProperty('totalPossibleRoutes');
259
+ console.log(`${name} routing matrix:`, {
260
+ intraChainRoutes: routingMatrix.intraChainRoutes,
261
+ crossChainRoutes: routingMatrix.crossChainRoutes,
262
+ totalRoutes: routingMatrix.totalPossibleRoutes,
263
+ supportedChains: routingMatrix.supportedChains,
264
+ });
265
+ // Validate routing logic
266
+ if (protocol.singleChain) {
267
+ expect(routingMatrix.crossChainRoutes).toBe(0);
268
+ expect(routingMatrix.intraChainRoutes).toBeGreaterThan(0);
269
+ }
270
+ if (protocol.multiChain && protocol.chains.length > 1) {
271
+ expect(routingMatrix.crossChainRoutes).toBeGreaterThan(0);
272
+ }
273
+ });
274
+ });
275
+ describe('Feature Detection', () => {
276
+ test('should identify additional features', () => {
277
+ const features = detectProtocolFeatures(protocol);
278
+ console.log(`${name} detected features:`, features);
279
+ expect(features).toHaveProperty('hasApprovalSupport');
280
+ expect(features).toHaveProperty('hasBaseUrl');
281
+ expect(features).toHaveProperty('customProperties');
282
+ });
283
+ });
284
+ });
285
+ });
286
+ describe('Protocol Ecosystem Analysis', () => {
287
+ test('should categorize protocols by VM support', () => {
288
+ const EVMChains = [
289
+ enums_1.ChainIdEnum.ETHEREUM,
290
+ enums_1.ChainIdEnum.ARBITRUM,
291
+ enums_1.ChainIdEnum.OPTIMISM,
292
+ enums_1.ChainIdEnum.POLYGON,
293
+ enums_1.ChainIdEnum.BSC,
294
+ enums_1.ChainIdEnum.AVALANCHE,
295
+ enums_1.ChainIdEnum.BASE,
296
+ enums_1.ChainIdEnum.BLAST,
297
+ enums_1.ChainIdEnum.SONIC,
298
+ ];
299
+ const evmProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.chains.some(chain => EVMChains.includes(chain)));
300
+ const solanaProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.chains.includes(enums_1.ChainIdEnum.SOLANA));
301
+ const moveProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.chains.some(chain => [enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chain)));
302
+ console.log('\n=== ECOSYSTEM DISTRIBUTION ===');
303
+ console.log(`EVM Protocols (${evmProtocols.length}):`, evmProtocols.map(p => p.name));
304
+ console.log(`Solana Protocols (${solanaProtocols.length}):`, solanaProtocols.map(p => p.name));
305
+ console.log(`Move Protocols (${moveProtocols.length}):`, moveProtocols.map(p => p.name));
306
+ console.log(`Total Protocols: ${PROTOCOL_IMPLEMENTATIONS.length}`);
307
+ console.log('===============================\n');
308
+ expect(PROTOCOL_IMPLEMENTATIONS.length).toBeGreaterThan(0);
309
+ });
310
+ test('should identify bridge vs DEX aggregator protocols', () => {
311
+ const bridgeProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.multiChain || impl.name.toLowerCase().includes('bridge'));
312
+ const dexProtocols = PROTOCOL_IMPLEMENTATIONS.filter(impl => impl.protocol.singleChain && !impl.name.toLowerCase().includes('bridge'));
313
+ console.log('\n=== PROTOCOL TYPE DISTRIBUTION ===');
314
+ console.log(`Bridge/Cross-chain Protocols (${bridgeProtocols.length}):`, bridgeProtocols.map(p => p.name));
315
+ console.log(`DEX Aggregator Protocols (${dexProtocols.length}):`, dexProtocols.map(p => p.name));
316
+ console.log('==================================\n');
317
+ expect(bridgeProtocols.length + dexProtocols.length).toBe(PROTOCOL_IMPLEMENTATIONS.length);
318
+ });
319
+ test('should map routing capabilities across the ecosystem', () => {
320
+ const routingMap = new Map();
321
+ const crossChainCapabilities = new Map();
322
+ PROTOCOL_IMPLEMENTATIONS.forEach(impl => {
323
+ const capabilities = analyzeProtocolCapabilities(impl.protocol);
324
+ // Track which VMs each protocol supports
325
+ capabilities.supportedVMs.forEach(vm => {
326
+ if (!routingMap.has(vm)) {
327
+ routingMap.set(vm, new Set());
328
+ }
329
+ routingMap.get(vm).add(impl.name);
330
+ });
331
+ // Track cross-chain capabilities
332
+ if (capabilities.canDoCrossChainSwaps) {
333
+ crossChainCapabilities.set(impl.name, capabilities.routingScenarios.length);
334
+ }
335
+ });
336
+ console.log('\n=== ROUTING CAPABILITIES MAP ===');
337
+ routingMap.forEach((protocols, vm) => {
338
+ console.log(`${vm} VM Support:`, Array.from(protocols));
339
+ });
340
+ if (crossChainCapabilities.size > 0) {
341
+ console.log('\nCross-Chain Bridge Capabilities:');
342
+ crossChainCapabilities.forEach((scenarios, name) => {
343
+ console.log(` ${name}: ${scenarios} routing scenarios`);
344
+ });
345
+ }
346
+ console.log('================================\n');
347
+ expect(routingMap.size).toBeGreaterThan(0);
348
+ });
349
+ });
350
+ });
351
+ // Helper functions for analysis
352
+ function analyzeProtocolCapabilities(protocol) {
353
+ const supportedChains = protocol.chains;
354
+ const vmTypes = new Set();
355
+ supportedChains.forEach(chain => {
356
+ if ([
357
+ enums_1.ChainIdEnum.ETHEREUM,
358
+ enums_1.ChainIdEnum.ARBITRUM,
359
+ enums_1.ChainIdEnum.OPTIMISM,
360
+ enums_1.ChainIdEnum.POLYGON,
361
+ enums_1.ChainIdEnum.BSC,
362
+ enums_1.ChainIdEnum.AVALANCHE,
363
+ enums_1.ChainIdEnum.BASE,
364
+ enums_1.ChainIdEnum.BLAST,
365
+ enums_1.ChainIdEnum.SONIC,
366
+ ].includes(chain)) {
367
+ vmTypes.add('EVM');
368
+ }
369
+ else if (chain === enums_1.ChainIdEnum.SOLANA) {
370
+ vmTypes.add('Solana');
371
+ }
372
+ else if ([enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chain)) {
373
+ vmTypes.add('Move');
374
+ }
375
+ });
376
+ return {
377
+ canDoIntraChainSwaps: protocol.singleChain || protocol.multiChain,
378
+ canDoCrossChainSwaps: protocol.multiChain && supportedChains.length > 1,
379
+ supportedVMs: Array.from(vmTypes),
380
+ routingScenarios: generateRoutingScenarios(protocol),
381
+ chainCount: supportedChains.length,
382
+ };
383
+ }
384
+ function generateRoutingScenarios(protocol) {
385
+ const scenarios = [];
386
+ if (protocol.singleChain) {
387
+ protocol.chains.forEach(chain => {
388
+ scenarios.push(`Intra-chain swaps on ${enums_1.ChainIdEnum[chain]}`);
389
+ });
390
+ }
391
+ if (protocol.multiChain && protocol.chains.length > 1) {
392
+ for (let i = 0; i < protocol.chains.length; i++) {
393
+ for (let j = 0; j < protocol.chains.length; j++) {
394
+ if (i !== j) {
395
+ const fromChain = protocol.chains[i];
396
+ const toChain = protocol.chains[j];
397
+ if (fromChain !== undefined && toChain !== undefined) {
398
+ scenarios.push(`${enums_1.ChainIdEnum[fromChain]} → ${enums_1.ChainIdEnum[toChain]}`);
399
+ }
400
+ }
401
+ }
402
+ }
403
+ }
404
+ return scenarios;
405
+ }
406
+ function generateRoutingMatrix(protocol) {
407
+ const chains = protocol.chains;
408
+ let intraChainRoutes = 0;
409
+ let crossChainRoutes = 0;
410
+ if (protocol.singleChain) {
411
+ intraChainRoutes = chains.length; // Each chain can do internal swaps
412
+ }
413
+ if (protocol.multiChain && chains.length > 1) {
414
+ crossChainRoutes = chains.length * (chains.length - 1); // n * (n-1) cross-chain combinations
415
+ }
416
+ return {
417
+ intraChainRoutes,
418
+ crossChainRoutes,
419
+ totalPossibleRoutes: intraChainRoutes + crossChainRoutes,
420
+ supportedChains: chains.map(c => enums_1.ChainIdEnum[c]),
421
+ };
422
+ }
423
+ function canCreateValidParams(chainId) {
424
+ try {
425
+ // Try to create valid parameters for this chain
426
+ const wallet = getWalletForChain(chainId);
427
+ const tokens = getTokensForChain(chainId);
428
+ if (!wallet || !tokens)
429
+ return false;
430
+ (0, test_data_1.createPriceParams)({
431
+ networkIn: chainId,
432
+ networkOut: chainId,
433
+ tokenIn: tokens.tokenIn,
434
+ tokenOut: tokens.tokenOut,
435
+ from: wallet,
436
+ });
437
+ return true;
438
+ }
439
+ catch (error) {
440
+ return false;
441
+ }
442
+ }
443
+ function getWalletForChain(chainId) {
444
+ if ([
445
+ enums_1.ChainIdEnum.ETHEREUM,
446
+ enums_1.ChainIdEnum.ARBITRUM,
447
+ enums_1.ChainIdEnum.OPTIMISM,
448
+ enums_1.ChainIdEnum.POLYGON,
449
+ enums_1.ChainIdEnum.BSC,
450
+ enums_1.ChainIdEnum.AVALANCHE,
451
+ enums_1.ChainIdEnum.BASE,
452
+ enums_1.ChainIdEnum.BLAST,
453
+ enums_1.ChainIdEnum.SONIC,
454
+ ].includes(chainId)) {
455
+ return test_data_1.TEST_WALLETS.EVM;
456
+ }
457
+ else if (chainId === enums_1.ChainIdEnum.SOLANA) {
458
+ return test_data_1.TEST_WALLETS.SOLANA;
459
+ }
460
+ else if ([enums_1.ChainIdEnum.SUI, enums_1.ChainIdEnum.APTOS].includes(chainId)) {
461
+ return test_data_1.TEST_WALLETS.SUI;
462
+ }
463
+ return null;
464
+ }
465
+ function getTokensForChain(chainId) {
466
+ const chainTokens = test_data_1.TEST_TOKENS[chainId];
467
+ if (chainTokens) {
468
+ const tokens = Object.values(chainTokens);
469
+ if (tokens.length >= 2) {
470
+ return {
471
+ tokenIn: tokens[0],
472
+ tokenOut: tokens[1],
473
+ };
474
+ }
475
+ }
476
+ return null;
477
+ }
478
+ function detectProtocolFeatures(protocol) {
479
+ return {
480
+ hasApprovalSupport: 'includeApprovals' in protocol,
481
+ hasBaseUrl: 'baseUrl' in protocol,
482
+ customProperties: Object.keys(protocol).filter(key => !['protocol', 'chains', 'singleChain', 'multiChain', 'fetchPrice', 'fetchQuote'].includes(key)),
483
+ };
484
+ }
485
+ //# sourceMappingURL=intent-protocol-suite.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-protocol-suite.test.js","sourceRoot":"","sources":["../../../tests/core/intent-protocol-suite.test.ts"],"names":[],"mappings":"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"}