@across-protocol/sdk 4.1.19 → 4.1.22

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 (264) hide show
  1. package/dist/cjs/addressAggregator/adapters/bybit.d.ts +10 -0
  2. package/dist/cjs/addressAggregator/adapters/bybit.js +42 -0
  3. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -0
  4. package/dist/cjs/addressAggregator/adapters/env.d.ts +8 -0
  5. package/dist/cjs/addressAggregator/adapters/env.js +33 -0
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -0
  7. package/dist/cjs/addressAggregator/adapters/file.d.ts +8 -0
  8. package/dist/cjs/addressAggregator/adapters/file.js +50 -0
  9. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -0
  10. package/dist/cjs/addressAggregator/adapters/index.d.ts +3 -0
  11. package/dist/cjs/addressAggregator/adapters/index.js +8 -0
  12. package/dist/cjs/addressAggregator/adapters/index.js.map +1 -0
  13. package/dist/cjs/addressAggregator/adapters/util.d.ts +4 -0
  14. package/dist/cjs/addressAggregator/adapters/util.js +66 -0
  15. package/dist/cjs/addressAggregator/adapters/util.js.map +1 -0
  16. package/dist/cjs/addressAggregator/index.d.ts +10 -0
  17. package/dist/cjs/addressAggregator/index.js +109 -0
  18. package/dist/cjs/addressAggregator/index.js.map +1 -0
  19. package/dist/cjs/addressAggregator/types.d.ts +6 -0
  20. package/dist/cjs/addressAggregator/types.js +5 -0
  21. package/dist/cjs/addressAggregator/types.js.map +1 -0
  22. package/dist/cjs/caching/Memory/MemoryCacheClient.d.ts +6 -0
  23. package/dist/cjs/caching/Memory/MemoryCacheClient.js +32 -0
  24. package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -0
  25. package/dist/cjs/caching/Memory/index.d.ts +1 -0
  26. package/dist/cjs/caching/Memory/index.js +5 -0
  27. package/dist/cjs/caching/Memory/index.js.map +1 -0
  28. package/dist/cjs/caching/index.d.ts +1 -0
  29. package/dist/cjs/caching/index.js +1 -0
  30. package/dist/cjs/caching/index.js.map +1 -1
  31. package/dist/cjs/clients/HubPoolClient.d.ts +1 -1
  32. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  33. package/dist/cjs/clients/SpokePoolClient.d.ts +2 -1
  34. package/dist/cjs/clients/SpokePoolClient.js +61 -71
  35. package/dist/cjs/clients/SpokePoolClient.js.map +1 -1
  36. package/dist/cjs/index.d.ts +2 -0
  37. package/dist/cjs/index.js +3 -1
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +2 -1
  40. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  41. package/dist/cjs/providers/cachedProvider.js +21 -20
  42. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  43. package/dist/cjs/providers/solana/baseRpcFactories.d.ts +2 -2
  44. package/dist/cjs/providers/solana/baseRpcFactories.js +2 -2
  45. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  46. package/dist/cjs/providers/solana/cachedRpcFactory.d.ts +16 -0
  47. package/dist/cjs/providers/solana/cachedRpcFactory.js +121 -0
  48. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -0
  49. package/dist/cjs/providers/solana/defaultRpcFactory.d.ts +1 -1
  50. package/dist/cjs/providers/solana/defaultRpcFactory.js +2 -2
  51. package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
  52. package/dist/cjs/providers/solana/index.d.ts +1 -0
  53. package/dist/cjs/providers/solana/index.js +1 -0
  54. package/dist/cjs/providers/solana/index.js.map +1 -1
  55. package/dist/cjs/providers/solana/rateLimitedRpcFactory.d.ts +2 -2
  56. package/dist/cjs/svm/eventsClient.d.ts +15 -0
  57. package/dist/cjs/svm/eventsClient.js +164 -0
  58. package/dist/cjs/svm/eventsClient.js.map +1 -0
  59. package/dist/cjs/svm/index.d.ts +1 -0
  60. package/dist/cjs/svm/index.js +5 -0
  61. package/dist/cjs/svm/index.js.map +1 -0
  62. package/dist/cjs/svm/types.d.ts +29 -0
  63. package/dist/cjs/svm/types.js +21 -0
  64. package/dist/cjs/svm/types.js.map +1 -0
  65. package/dist/cjs/svm/utils/events.d.ts +3 -0
  66. package/dist/cjs/svm/utils/events.js +38 -0
  67. package/dist/cjs/svm/utils/events.js.map +1 -0
  68. package/dist/cjs/svm/utils/helpers.d.ts +2 -0
  69. package/dist/cjs/svm/utils/helpers.js +19 -0
  70. package/dist/cjs/svm/utils/helpers.js.map +1 -0
  71. package/dist/cjs/utils/DepositUtils.js +2 -3
  72. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  73. package/dist/cjs/utils/JSONUtils.d.ts +2 -0
  74. package/dist/cjs/utils/JSONUtils.js +9 -1
  75. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  76. package/dist/cjs/utils/LogUtils.d.ts +4 -2
  77. package/dist/cjs/utils/LogUtils.js +10 -1
  78. package/dist/cjs/utils/LogUtils.js.map +1 -1
  79. package/dist/cjs/utils/SpokeUtils.d.ts +9 -0
  80. package/dist/cjs/utils/SpokeUtils.js +29 -1
  81. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  82. package/dist/cjs/utils/index.d.ts +0 -1
  83. package/dist/cjs/utils/index.js +0 -1
  84. package/dist/cjs/utils/index.js.map +1 -1
  85. package/dist/esm/addressAggregator/adapters/bybit.d.ts +10 -0
  86. package/dist/esm/addressAggregator/adapters/bybit.js +41 -0
  87. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -0
  88. package/dist/esm/addressAggregator/adapters/env.d.ts +8 -0
  89. package/dist/esm/addressAggregator/adapters/env.js +30 -0
  90. package/dist/esm/addressAggregator/adapters/env.js.map +1 -0
  91. package/dist/esm/addressAggregator/adapters/file.d.ts +8 -0
  92. package/dist/esm/addressAggregator/adapters/file.js +47 -0
  93. package/dist/esm/addressAggregator/adapters/file.js.map +1 -0
  94. package/dist/esm/addressAggregator/adapters/index.d.ts +3 -0
  95. package/dist/esm/addressAggregator/adapters/index.js +7 -0
  96. package/dist/esm/addressAggregator/adapters/index.js.map +1 -0
  97. package/dist/esm/addressAggregator/adapters/util.d.ts +4 -0
  98. package/dist/esm/addressAggregator/adapters/util.js +60 -0
  99. package/dist/esm/addressAggregator/adapters/util.js.map +1 -0
  100. package/dist/esm/addressAggregator/index.d.ts +10 -0
  101. package/dist/esm/addressAggregator/index.js +107 -0
  102. package/dist/esm/addressAggregator/index.js.map +1 -0
  103. package/dist/esm/addressAggregator/types.d.ts +6 -0
  104. package/dist/esm/addressAggregator/types.js +2 -0
  105. package/dist/esm/addressAggregator/types.js.map +1 -0
  106. package/dist/esm/caching/Memory/MemoryCacheClient.d.ts +9 -0
  107. package/dist/esm/caching/Memory/MemoryCacheClient.js +32 -0
  108. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -0
  109. package/dist/esm/caching/Memory/index.d.ts +1 -0
  110. package/dist/esm/caching/Memory/index.js +2 -0
  111. package/dist/esm/caching/Memory/index.js.map +1 -0
  112. package/dist/esm/caching/index.d.ts +1 -0
  113. package/dist/esm/caching/index.js +1 -0
  114. package/dist/esm/caching/index.js.map +1 -1
  115. package/dist/esm/clients/HubPoolClient.d.ts +1 -1
  116. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  117. package/dist/esm/clients/SpokePoolClient.d.ts +2 -1
  118. package/dist/esm/clients/SpokePoolClient.js +61 -70
  119. package/dist/esm/clients/SpokePoolClient.js.map +1 -1
  120. package/dist/esm/index.d.ts +2 -0
  121. package/dist/esm/index.js +4 -0
  122. package/dist/esm/index.js.map +1 -1
  123. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +2 -1
  124. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  125. package/dist/esm/providers/cachedProvider.js +21 -20
  126. package/dist/esm/providers/cachedProvider.js.map +1 -1
  127. package/dist/esm/providers/solana/baseRpcFactories.d.ts +2 -2
  128. package/dist/esm/providers/solana/baseRpcFactories.js +1 -1
  129. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  130. package/dist/esm/providers/solana/cachedRpcFactory.d.ts +16 -0
  131. package/dist/esm/providers/solana/cachedRpcFactory.js +128 -0
  132. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -0
  133. package/dist/esm/providers/solana/defaultRpcFactory.d.ts +1 -1
  134. package/dist/esm/providers/solana/defaultRpcFactory.js +1 -1
  135. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  136. package/dist/esm/providers/solana/index.d.ts +1 -0
  137. package/dist/esm/providers/solana/index.js +1 -0
  138. package/dist/esm/providers/solana/index.js.map +1 -1
  139. package/dist/esm/providers/solana/rateLimitedRpcFactory.d.ts +2 -2
  140. package/dist/esm/svm/eventsClient.d.ts +51 -0
  141. package/dist/esm/svm/eventsClient.js +202 -0
  142. package/dist/esm/svm/eventsClient.js.map +1 -0
  143. package/dist/esm/svm/index.d.ts +1 -0
  144. package/dist/esm/svm/index.js +2 -0
  145. package/dist/esm/svm/index.js.map +1 -0
  146. package/dist/esm/svm/types.d.ts +29 -0
  147. package/dist/esm/svm/types.js +18 -0
  148. package/dist/esm/svm/types.js.map +1 -0
  149. package/dist/esm/svm/utils/events.d.ts +9 -0
  150. package/dist/esm/svm/utils/events.js +43 -0
  151. package/dist/esm/svm/utils/events.js.map +1 -0
  152. package/dist/esm/svm/utils/helpers.d.ts +5 -0
  153. package/dist/esm/svm/utils/helpers.js +18 -0
  154. package/dist/esm/svm/utils/helpers.js.map +1 -0
  155. package/dist/esm/utils/DepositUtils.js +1 -2
  156. package/dist/esm/utils/DepositUtils.js.map +1 -1
  157. package/dist/esm/utils/JSONUtils.d.ts +8 -0
  158. package/dist/esm/utils/JSONUtils.js +12 -0
  159. package/dist/esm/utils/JSONUtils.js.map +1 -1
  160. package/dist/esm/utils/LogUtils.d.ts +4 -2
  161. package/dist/esm/utils/LogUtils.js +10 -1
  162. package/dist/esm/utils/LogUtils.js.map +1 -1
  163. package/dist/esm/utils/SpokeUtils.d.ts +9 -0
  164. package/dist/esm/utils/SpokeUtils.js +34 -1
  165. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  166. package/dist/esm/utils/index.d.ts +0 -1
  167. package/dist/esm/utils/index.js +0 -1
  168. package/dist/esm/utils/index.js.map +1 -1
  169. package/dist/types/addressAggregator/adapters/bybit.d.ts +11 -0
  170. package/dist/types/addressAggregator/adapters/bybit.d.ts.map +1 -0
  171. package/dist/types/addressAggregator/adapters/env.d.ts +9 -0
  172. package/dist/types/addressAggregator/adapters/env.d.ts.map +1 -0
  173. package/dist/types/addressAggregator/adapters/file.d.ts +9 -0
  174. package/dist/types/addressAggregator/adapters/file.d.ts.map +1 -0
  175. package/dist/types/addressAggregator/adapters/index.d.ts +4 -0
  176. package/dist/types/addressAggregator/adapters/index.d.ts.map +1 -0
  177. package/dist/types/addressAggregator/adapters/util.d.ts +5 -0
  178. package/dist/types/addressAggregator/adapters/util.d.ts.map +1 -0
  179. package/dist/types/addressAggregator/index.d.ts +11 -0
  180. package/dist/types/addressAggregator/index.d.ts.map +1 -0
  181. package/dist/types/addressAggregator/types.d.ts +7 -0
  182. package/dist/types/addressAggregator/types.d.ts.map +1 -0
  183. package/dist/types/caching/Memory/MemoryCacheClient.d.ts +10 -0
  184. package/dist/types/caching/Memory/MemoryCacheClient.d.ts.map +1 -0
  185. package/dist/types/caching/Memory/index.d.ts +2 -0
  186. package/dist/types/caching/Memory/index.d.ts.map +1 -0
  187. package/dist/types/caching/index.d.ts +1 -0
  188. package/dist/types/caching/index.d.ts.map +1 -1
  189. package/dist/types/clients/HubPoolClient.d.ts +1 -1
  190. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  191. package/dist/types/clients/SpokePoolClient.d.ts +2 -1
  192. package/dist/types/clients/SpokePoolClient.d.ts.map +1 -1
  193. package/dist/types/index.d.ts +2 -0
  194. package/dist/types/index.d.ts.map +1 -1
  195. package/dist/types/lpFeeCalculator/lpFeeCalculator.d.ts.map +1 -1
  196. package/dist/types/providers/solana/baseRpcFactories.d.ts +2 -2
  197. package/dist/types/providers/solana/baseRpcFactories.d.ts.map +1 -1
  198. package/dist/types/providers/solana/cachedRpcFactory.d.ts +17 -0
  199. package/dist/types/providers/solana/cachedRpcFactory.d.ts.map +1 -0
  200. package/dist/types/providers/solana/defaultRpcFactory.d.ts +1 -1
  201. package/dist/types/providers/solana/defaultRpcFactory.d.ts.map +1 -1
  202. package/dist/types/providers/solana/index.d.ts +1 -0
  203. package/dist/types/providers/solana/index.d.ts.map +1 -1
  204. package/dist/types/providers/solana/rateLimitedRpcFactory.d.ts +2 -2
  205. package/dist/types/providers/solana/rateLimitedRpcFactory.d.ts.map +1 -1
  206. package/dist/types/svm/eventsClient.d.ts +52 -0
  207. package/dist/types/svm/eventsClient.d.ts.map +1 -0
  208. package/dist/types/svm/index.d.ts +2 -0
  209. package/dist/types/svm/index.d.ts.map +1 -0
  210. package/dist/types/svm/types.d.ts +30 -0
  211. package/dist/types/svm/types.d.ts.map +1 -0
  212. package/dist/types/svm/utils/events.d.ts +10 -0
  213. package/dist/types/svm/utils/events.d.ts.map +1 -0
  214. package/dist/types/svm/utils/helpers.d.ts +6 -0
  215. package/dist/types/svm/utils/helpers.d.ts.map +1 -0
  216. package/dist/types/utils/DepositUtils.d.ts.map +1 -1
  217. package/dist/types/utils/JSONUtils.d.ts +8 -0
  218. package/dist/types/utils/JSONUtils.d.ts.map +1 -1
  219. package/dist/types/utils/LogUtils.d.ts +4 -2
  220. package/dist/types/utils/LogUtils.d.ts.map +1 -1
  221. package/dist/types/utils/SpokeUtils.d.ts +9 -0
  222. package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
  223. package/dist/types/utils/index.d.ts +0 -1
  224. package/dist/types/utils/index.d.ts.map +1 -1
  225. package/package.json +8 -3
  226. package/src/addressAggregator/adapters/bybit.ts +32 -0
  227. package/src/addressAggregator/adapters/env.ts +30 -0
  228. package/src/addressAggregator/adapters/file.ts +39 -0
  229. package/src/addressAggregator/adapters/index.ts +3 -0
  230. package/src/addressAggregator/adapters/util.ts +47 -0
  231. package/src/addressAggregator/index.ts +86 -0
  232. package/src/addressAggregator/types.ts +8 -0
  233. package/src/caching/Memory/MemoryCacheClient.ts +35 -0
  234. package/src/caching/Memory/index.ts +1 -0
  235. package/src/caching/index.ts +1 -0
  236. package/src/clients/HubPoolClient.ts +2 -2
  237. package/src/clients/SpokePoolClient.ts +16 -17
  238. package/src/index.ts +2 -0
  239. package/src/lpFeeCalculator/lpFeeCalculator.ts +6 -1
  240. package/src/providers/cachedProvider.ts +34 -34
  241. package/src/providers/solana/baseRpcFactories.ts +1 -1
  242. package/src/providers/solana/cachedRpcFactory.ts +124 -0
  243. package/src/providers/solana/defaultRpcFactory.ts +1 -1
  244. package/src/providers/solana/index.ts +1 -0
  245. package/src/providers/solana/rateLimitedRpcFactory.ts +2 -2
  246. package/src/svm/eventsClient.ts +205 -0
  247. package/src/svm/index.ts +1 -0
  248. package/src/svm/types.ts +47 -0
  249. package/src/svm/utils/events.ts +46 -0
  250. package/src/svm/utils/helpers.ts +9 -0
  251. package/src/utils/DepositUtils.ts +1 -2
  252. package/src/utils/JSONUtils.ts +14 -0
  253. package/src/utils/LogUtils.ts +3 -2
  254. package/src/utils/SpokeUtils.ts +42 -1
  255. package/src/utils/index.ts +0 -1
  256. package/dist/cjs/utils/FlowUtils.d.ts +0 -11
  257. package/dist/cjs/utils/FlowUtils.js +0 -34
  258. package/dist/cjs/utils/FlowUtils.js.map +0 -1
  259. package/dist/esm/utils/FlowUtils.d.ts +0 -11
  260. package/dist/esm/utils/FlowUtils.js +0 -36
  261. package/dist/esm/utils/FlowUtils.js.map +0 -1
  262. package/dist/types/utils/FlowUtils.d.ts +0 -12
  263. package/dist/types/utils/FlowUtils.d.ts.map +0 -1
  264. package/src/utils/FlowUtils.ts +0 -44
@@ -0,0 +1,16 @@
1
+ import { RpcTransport, RpcFromTransport, SolanaRpcApiFromTransport } from "@solana/kit";
2
+ import { CachingMechanismInterface } from "../../interfaces";
3
+ import { SolanaClusterRpcFactory } from "./baseRpcFactories";
4
+ import { RateLimitedSolanaRpcFactory } from "./rateLimitedRpcFactory";
5
+ export declare class CachedSolanaRpcFactory extends SolanaClusterRpcFactory {
6
+ readonly redisClient?: CachingMechanismInterface | undefined;
7
+ readonly getTransactionCachePrefix: string;
8
+ protected rateLimitedTransport: RpcTransport;
9
+ protected rateLimitedRpcClient: RpcFromTransport<SolanaRpcApiFromTransport<RpcTransport>, RpcTransport>;
10
+ constructor(providerCacheNamespace: string, redisClient?: CachingMechanismInterface | undefined, ...rateLimitedConstructorParams: ConstructorParameters<typeof RateLimitedSolanaRpcFactory>);
11
+ createTransport(): RpcTransport;
12
+ private requestAndCacheFinalized;
13
+ private buildRedisKey;
14
+ private cacheType;
15
+ private isGetTransactionParams;
16
+ }
@@ -0,0 +1,128 @@
1
+ import { __awaiter, __extends, __generator, __spreadArray } from "tslib";
2
+ import { is, object, optional, string, tuple } from "superstruct";
3
+ import { SolanaClusterRpcFactory } from "./baseRpcFactories";
4
+ import { RateLimitedSolanaRpcFactory } from "./rateLimitedRpcFactory";
5
+ import { CacheType } from "../utils";
6
+ import { jsonReplacerWithBigInts, jsonReviverWithBigInts } from "../../utils";
7
+ var CachedSolanaRpcFactory = /** @class */ (function (_super) {
8
+ __extends(CachedSolanaRpcFactory, _super);
9
+ function CachedSolanaRpcFactory(providerCacheNamespace, redisClient) {
10
+ var _this = this;
11
+ var rateLimitedConstructorParams = [];
12
+ for (var _i = 2; _i < arguments.length; _i++) {
13
+ rateLimitedConstructorParams[_i - 2] = arguments[_i];
14
+ }
15
+ // SolanaClusterRpcFactory shares the last two constructor parameters with RateLimitedSolanaRpcFactory.
16
+ var superParams = rateLimitedConstructorParams.slice(-2);
17
+ _this = _super.apply(this, superParams) || this;
18
+ _this.redisClient = redisClient;
19
+ // Create the rate limited transport and RPC client.
20
+ var rateLimitedRpcFactory = new (RateLimitedSolanaRpcFactory.bind.apply(RateLimitedSolanaRpcFactory, __spreadArray([void 0], rateLimitedConstructorParams, false)))();
21
+ _this.rateLimitedTransport = rateLimitedRpcFactory.createTransport();
22
+ _this.rateLimitedRpcClient = rateLimitedRpcFactory.createRpcClient();
23
+ // Pre-compute as much of the redis key as possible.
24
+ var cachePrefix = "".concat(providerCacheNamespace, ",").concat(new URL(_this.clusterUrl).hostname, ",").concat(_this.chainId);
25
+ _this.getTransactionCachePrefix = "".concat(cachePrefix, ":getTransaction,");
26
+ return _this;
27
+ }
28
+ CachedSolanaRpcFactory.prototype.createTransport = function () {
29
+ var _this = this;
30
+ return function () {
31
+ var args = [];
32
+ for (var _i = 0; _i < arguments.length; _i++) {
33
+ args[_i] = arguments[_i];
34
+ }
35
+ return __awaiter(_this, void 0, void 0, function () {
36
+ var _a, method, params, cacheType, redisKey, redisResult;
37
+ var _b;
38
+ return __generator(this, function (_c) {
39
+ switch (_c.label) {
40
+ case 0:
41
+ _a = args[0].payload, method = _a.method, params = _a.params;
42
+ cacheType = this.redisClient ? this.cacheType(method) : CacheType.NONE;
43
+ if (cacheType === CacheType.NONE) {
44
+ return [2 /*return*/, this.rateLimitedTransport.apply(this, args)];
45
+ }
46
+ redisKey = this.buildRedisKey(method, params);
47
+ return [4 /*yield*/, ((_b = this.redisClient) === null || _b === void 0 ? void 0 : _b.get(redisKey))];
48
+ case 1:
49
+ redisResult = _c.sent();
50
+ // If cache has the result, parse the json and return it.
51
+ if (redisResult) {
52
+ return [2 /*return*/, JSON.parse(redisResult, jsonReviverWithBigInts)];
53
+ }
54
+ // Cache does not have the result. Query it directly and cache it if finalized.
55
+ return [2 /*return*/, this.requestAndCacheFinalized.apply(this, args)];
56
+ }
57
+ });
58
+ });
59
+ };
60
+ };
61
+ CachedSolanaRpcFactory.prototype.requestAndCacheFinalized = function () {
62
+ var _a, _b;
63
+ var args = [];
64
+ for (var _i = 0; _i < arguments.length; _i++) {
65
+ args[_i] = arguments[_i];
66
+ }
67
+ return __awaiter(this, void 0, void 0, function () {
68
+ var _c, method, params, getSignatureStatusesResponse, getTransactionResponse, redisKey;
69
+ return __generator(this, function (_d) {
70
+ switch (_d.label) {
71
+ case 0:
72
+ _c = args[0].payload, method = _c.method, params = _c.params;
73
+ // Only handles getTransaction right now.
74
+ if (method !== "getTransaction")
75
+ return [2 /*return*/, this.rateLimitedTransport.apply(this, args)];
76
+ // Do not throw if params are not valid, just skip caching and pass through to the underlying transport.
77
+ if (!this.isGetTransactionParams(params))
78
+ return [2 /*return*/, this.rateLimitedTransport.apply(this, args)];
79
+ return [4 /*yield*/, this.rateLimitedRpcClient
80
+ .getSignatureStatuses([params[0]], {
81
+ searchTransactionHistory: true,
82
+ })
83
+ .send()];
84
+ case 1:
85
+ getSignatureStatusesResponse = _d.sent();
86
+ return [4 /*yield*/, this.rateLimitedTransport.apply(this, args)];
87
+ case 2:
88
+ getTransactionResponse = _d.sent();
89
+ if (!(((_a = getSignatureStatusesResponse.value[0]) === null || _a === void 0 ? void 0 : _a.confirmationStatus) === "finalized")) return [3 /*break*/, 4];
90
+ redisKey = this.buildRedisKey(method, params);
91
+ return [4 /*yield*/, ((_b = this.redisClient) === null || _b === void 0 ? void 0 : _b.set(redisKey, JSON.stringify(getTransactionResponse, jsonReplacerWithBigInts), Number.POSITIVE_INFINITY))];
92
+ case 3:
93
+ _d.sent();
94
+ _d.label = 4;
95
+ case 4: return [2 /*return*/, getTransactionResponse];
96
+ }
97
+ });
98
+ });
99
+ };
100
+ CachedSolanaRpcFactory.prototype.buildRedisKey = function (method, params) {
101
+ // Only handles getTransaction right now.
102
+ switch (method) {
103
+ case "getTransaction":
104
+ return this.getTransactionCachePrefix + JSON.stringify(params, jsonReplacerWithBigInts);
105
+ default:
106
+ throw new Error("CachedSolanaRpcFactory::buildRedisKey: invalid JSON-RPC method ".concat(method));
107
+ }
108
+ };
109
+ CachedSolanaRpcFactory.prototype.cacheType = function (method) {
110
+ // Today, we only cache getTransaction.
111
+ if (method === "getTransaction") {
112
+ // We only store finalized transactions in the cache, hence TTL is not required.
113
+ return CacheType.NO_TTL;
114
+ }
115
+ else {
116
+ return CacheType.NONE;
117
+ }
118
+ };
119
+ CachedSolanaRpcFactory.prototype.isGetTransactionParams = function (params) {
120
+ return is(params, tuple([
121
+ string(),
122
+ optional(object()), // We use only the tx signature to get its commitment, but pass through the options as is.
123
+ ]));
124
+ };
125
+ return CachedSolanaRpcFactory;
126
+ }(SolanaClusterRpcFactory));
127
+ export { CachedSolanaRpcFactory };
128
+ //# sourceMappingURL=cachedRpcFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cachedRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/cachedRpcFactory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RpcTransport } from "@solana/web3.js";
1
+ import { RpcTransport } from "@solana/kit";
2
2
  import { SolanaClusterRpcFactory } from "./baseRpcFactories";
3
3
  export declare class SolanaDefaultRpcFactory extends SolanaClusterRpcFactory {
4
4
  constructor(...clusterConstructorParams: ConstructorParameters<typeof SolanaClusterRpcFactory>);
@@ -1,5 +1,5 @@
1
1
  import { __extends } from "tslib";
2
- import { createDefaultRpcTransport } from "@solana/web3.js";
2
+ import { createDefaultRpcTransport } from "@solana/kit";
3
3
  import { SolanaClusterRpcFactory } from "./baseRpcFactories";
4
4
  // Exposes default RPC transport for Solana in the SolanaClusterRpcFactory class.
5
5
  var SolanaDefaultRpcFactory = /** @class */ (function (_super) {
@@ -1 +1 @@
1
- {"version":3,"file":"defaultRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/defaultRpcFactory.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,yBAAyB,EAAgB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,iFAAiF;AACjF;IAA6C,2CAAuB;IAClE;QAAY,kCAAkF;aAAlF,UAAkF,EAAlF,qBAAkF,EAAlF,IAAkF;YAAlF,6CAAkF;;kCACnF,wBAAwB;IACnC,CAAC;IAEM,iDAAe,GAAtB;QACE,OAAO,yBAAyB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IACH,8BAAC;AAAD,CAAC,AARD,CAA6C,uBAAuB,GAQnE"}
1
+ {"version":3,"file":"defaultRpcFactory.js","sourceRoot":"","sources":["../../../../src/providers/solana/defaultRpcFactory.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,yBAAyB,EAAgB,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,iFAAiF;AACjF;IAA6C,2CAAuB;IAClE;QAAY,kCAAkF;aAAlF,UAAkF,EAAlF,qBAAkF,EAAlF,IAAkF;YAAlF,6CAAkF;;kCACnF,wBAAwB;IACnC,CAAC;IAEM,iDAAe,GAAtB;QACE,OAAO,yBAAyB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IACH,8BAAC;AAAD,CAAC,AARD,CAA6C,uBAAuB,GAQnE"}
@@ -1,4 +1,5 @@
1
1
  export * from "./baseRpcFactories";
2
+ export * from "./cachedRpcFactory";
2
3
  export * from "./defaultRpcFactory";
3
4
  export * from "./rateLimitedRpcFactory";
4
5
  export * from "./utils";
@@ -1,4 +1,5 @@
1
1
  export * from "./baseRpcFactories";
2
+ export * from "./cachedRpcFactory";
2
3
  export * from "./defaultRpcFactory";
3
4
  export * from "./rateLimitedRpcFactory";
4
5
  export * from "./utils";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/solana/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/solana/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,SAAS,CAAC"}
@@ -1,4 +1,4 @@
1
- import { RpcResponse } from "@solana/web3.js";
1
+ import { RpcResponse, RpcTransport } from "@solana/kit";
2
2
  import { Logger } from "winston";
3
3
  import { SolanaClusterRpcFactory } from "./baseRpcFactories";
4
4
  import { SolanaDefaultRpcFactory } from "./defaultRpcFactory";
@@ -6,7 +6,7 @@ export declare class RateLimitedSolanaRpcFactory extends SolanaClusterRpcFactory
6
6
  readonly pctRpcCallsLogged: number;
7
7
  readonly logger: Logger;
8
8
  private queue;
9
- private readonly defaultTransport;
9
+ protected defaultTransport: RpcTransport;
10
10
  constructor(maxConcurrency: number, pctRpcCallsLogged: number, logger: Logger, ...defaultConstructorParams: ConstructorParameters<typeof SolanaDefaultRpcFactory>);
11
11
  private wrapSendWithLog;
12
12
  createTransport(): <TResponse>(config: Readonly<{
@@ -0,0 +1,51 @@
1
+ import web3, { GetSignaturesForAddressApi, RpcTransport } from "@solana/kit";
2
+ import { EventData, EventName, EventWithData } from "./types";
3
+ type GetSignaturesForAddressConfig = Parameters<GetSignaturesForAddressApi["getSignaturesForAddress"]>[1];
4
+ export declare class SvmSpokeEventsClient {
5
+ private rpc;
6
+ private svmSpokeAddress;
7
+ private svmSpokeEventAuthority;
8
+ /**
9
+ * Private constructor. Use the async create() method to instantiate.
10
+ */
11
+ private constructor();
12
+ /**
13
+ * Factory method to asynchronously create an instance of SvmSpokeEventsClient.
14
+ */
15
+ static create(rpc: web3.Rpc<web3.SolanaRpcApiFromTransport<RpcTransport>>): Promise<SvmSpokeEventsClient>;
16
+ /**
17
+ * Queries events for the SvmSpoke program filtered by event name.
18
+ *
19
+ * @param eventName - The name of the event to filter by.
20
+ * @param fromSlot - Optional starting slot.
21
+ * @param toSlot - Optional ending slot.
22
+ * @param options - Options for fetching signatures.
23
+ * @returns A promise that resolves to an array of events matching the eventName.
24
+ */
25
+ queryEvents<T extends EventData>(eventName: EventName, fromSlot?: bigint, toSlot?: bigint, options?: GetSignaturesForAddressConfig): Promise<EventWithData<T>[]>;
26
+ /**
27
+ * Queries all events for a specific program.
28
+ *
29
+ * @param fromSlot - Optional starting slot.
30
+ * @param toSlot - Optional ending slot.
31
+ * @param options - Options for fetching signatures.
32
+ * @returns A promise that resolves to an array of all events with additional metadata.
33
+ */
34
+ private queryAllEvents;
35
+ /**
36
+ * Reads events from a transaction signature.
37
+ *
38
+ * @param txSignature - The transaction signature.
39
+ * @param commitment - Commitment level.
40
+ * @returns A promise that resolves to an array of events.
41
+ */
42
+ private readEventsFromSignature;
43
+ /**
44
+ * Processes events from a transaction.
45
+ *
46
+ * @param txResult - The transaction result.
47
+ * @returns A promise that resolves to an array of events with their data and name.
48
+ */
49
+ private processEventFromTx;
50
+ }
51
+ export {};
@@ -0,0 +1,202 @@
1
+ import { __assign, __awaiter, __generator, __spreadArray } from "tslib";
2
+ import { getDeployedAddress, SvmSpokeIdl } from "@across-protocol/contracts";
3
+ import { getSolanaChainId } from "@across-protocol/contracts/dist/src/svm/web3-v1";
4
+ import { BorshEventCoder, utils } from "@coral-xyz/anchor";
5
+ import web3 from "@solana/kit";
6
+ import { getEventName, parseEventData } from "./utils/events";
7
+ import { isDevnet } from "./utils/helpers";
8
+ var SvmSpokeEventsClient = /** @class */ (function () {
9
+ /**
10
+ * Private constructor. Use the async create() method to instantiate.
11
+ */
12
+ function SvmSpokeEventsClient(rpc, svmSpokeAddress, eventAuthority) {
13
+ this.rpc = rpc;
14
+ this.svmSpokeAddress = svmSpokeAddress;
15
+ this.svmSpokeEventAuthority = eventAuthority;
16
+ }
17
+ /**
18
+ * Factory method to asynchronously create an instance of SvmSpokeEventsClient.
19
+ */
20
+ SvmSpokeEventsClient.create = function (rpc) {
21
+ return __awaiter(this, void 0, void 0, function () {
22
+ var isTestnet, programId, svmSpokeAddress, svmSpokeEventAuthority;
23
+ return __generator(this, function (_a) {
24
+ switch (_a.label) {
25
+ case 0: return [4 /*yield*/, isDevnet(rpc)];
26
+ case 1:
27
+ isTestnet = _a.sent();
28
+ programId = getDeployedAddress("SvmSpoke", getSolanaChainId(isTestnet ? "devnet" : "mainnet").toString());
29
+ if (!programId)
30
+ throw new Error("Program not found");
31
+ svmSpokeAddress = web3.address(programId);
32
+ return [4 /*yield*/, web3.getProgramDerivedAddress({
33
+ programAddress: svmSpokeAddress,
34
+ seeds: ["__event_authority"],
35
+ })];
36
+ case 2:
37
+ svmSpokeEventAuthority = (_a.sent())[0];
38
+ return [2 /*return*/, new SvmSpokeEventsClient(rpc, svmSpokeAddress, svmSpokeEventAuthority)];
39
+ }
40
+ });
41
+ });
42
+ };
43
+ /**
44
+ * Queries events for the SvmSpoke program filtered by event name.
45
+ *
46
+ * @param eventName - The name of the event to filter by.
47
+ * @param fromSlot - Optional starting slot.
48
+ * @param toSlot - Optional ending slot.
49
+ * @param options - Options for fetching signatures.
50
+ * @returns A promise that resolves to an array of events matching the eventName.
51
+ */
52
+ SvmSpokeEventsClient.prototype.queryEvents = function (eventName, fromSlot, toSlot, options) {
53
+ if (options === void 0) { options = { limit: 1000, commitment: "confirmed" }; }
54
+ return __awaiter(this, void 0, void 0, function () {
55
+ var events;
56
+ return __generator(this, function (_a) {
57
+ switch (_a.label) {
58
+ case 0: return [4 /*yield*/, this.queryAllEvents(fromSlot, toSlot, options)];
59
+ case 1:
60
+ events = _a.sent();
61
+ return [2 /*return*/, events.filter(function (event) { return event.name === eventName; })];
62
+ }
63
+ });
64
+ });
65
+ };
66
+ /**
67
+ * Queries all events for a specific program.
68
+ *
69
+ * @param fromSlot - Optional starting slot.
70
+ * @param toSlot - Optional ending slot.
71
+ * @param options - Options for fetching signatures.
72
+ * @returns A promise that resolves to an array of all events with additional metadata.
73
+ */
74
+ SvmSpokeEventsClient.prototype.queryAllEvents = function (fromSlot, toSlot, options) {
75
+ if (options === void 0) { options = { limit: 1000, commitment: "confirmed" }; }
76
+ return __awaiter(this, void 0, void 0, function () {
77
+ var allSignatures, hasMoreSignatures, currentOptions, signatures, filteredSignatures, eventsWithSlots;
78
+ var _this = this;
79
+ return __generator(this, function (_a) {
80
+ switch (_a.label) {
81
+ case 0:
82
+ allSignatures = [];
83
+ hasMoreSignatures = true;
84
+ currentOptions = options;
85
+ _a.label = 1;
86
+ case 1:
87
+ if (!hasMoreSignatures) return [3 /*break*/, 3];
88
+ return [4 /*yield*/, this.rpc
89
+ .getSignaturesForAddress(this.svmSpokeAddress, currentOptions)
90
+ .send()];
91
+ case 2:
92
+ signatures = _a.sent();
93
+ // Signatures are sorted by slot in descending order.
94
+ allSignatures.push.apply(allSignatures, signatures);
95
+ // Update options for the next batch. Set "before" to the last fetched signature.
96
+ if (signatures.length > 0) {
97
+ currentOptions = __assign(__assign({}, currentOptions), { before: signatures[signatures.length - 1].signature });
98
+ }
99
+ if (fromSlot && allSignatures.length > 0 && allSignatures[allSignatures.length - 1].slot < fromSlot) {
100
+ hasMoreSignatures = false;
101
+ }
102
+ hasMoreSignatures = Boolean(hasMoreSignatures && currentOptions.limit && signatures.length === currentOptions.limit);
103
+ return [3 /*break*/, 1];
104
+ case 3:
105
+ filteredSignatures = allSignatures.filter(function (signatureTransaction) {
106
+ if (fromSlot && signatureTransaction.slot < fromSlot)
107
+ return false;
108
+ if (toSlot && signatureTransaction.slot > toSlot)
109
+ return false;
110
+ return true;
111
+ });
112
+ return [4 /*yield*/, Promise.all(filteredSignatures.map(function (signatureTransaction) { return __awaiter(_this, void 0, void 0, function () {
113
+ var events;
114
+ return __generator(this, function (_a) {
115
+ switch (_a.label) {
116
+ case 0: return [4 /*yield*/, this.readEventsFromSignature(signatureTransaction.signature, options.commitment)];
117
+ case 1:
118
+ events = _a.sent();
119
+ return [2 /*return*/, events.map(function (event) { return (__assign(__assign({}, event), { confirmationStatus: signatureTransaction.confirmationStatus, blockTime: signatureTransaction.blockTime, signature: signatureTransaction.signature, slot: signatureTransaction.slot })); })];
120
+ }
121
+ });
122
+ }); }))];
123
+ case 4:
124
+ eventsWithSlots = _a.sent();
125
+ return [2 /*return*/, eventsWithSlots.flat()];
126
+ }
127
+ });
128
+ });
129
+ };
130
+ /**
131
+ * Reads events from a transaction signature.
132
+ *
133
+ * @param txSignature - The transaction signature.
134
+ * @param commitment - Commitment level.
135
+ * @returns A promise that resolves to an array of events.
136
+ */
137
+ SvmSpokeEventsClient.prototype.readEventsFromSignature = function (txSignature, commitment) {
138
+ if (commitment === void 0) { commitment = "confirmed"; }
139
+ return __awaiter(this, void 0, void 0, function () {
140
+ var txResult;
141
+ return __generator(this, function (_a) {
142
+ switch (_a.label) {
143
+ case 0: return [4 /*yield*/, this.rpc
144
+ .getTransaction(txSignature, { commitment: commitment, maxSupportedTransactionVersion: 0 })
145
+ .send()];
146
+ case 1:
147
+ txResult = _a.sent();
148
+ if (txResult === null)
149
+ return [2 /*return*/, []];
150
+ return [2 /*return*/, this.processEventFromTx(txResult)];
151
+ }
152
+ });
153
+ });
154
+ };
155
+ /**
156
+ * Processes events from a transaction.
157
+ *
158
+ * @param txResult - The transaction result.
159
+ * @returns A promise that resolves to an array of events with their data and name.
160
+ */
161
+ SvmSpokeEventsClient.prototype.processEventFromTx = function (txResult) {
162
+ var _a, _b, _c, _d, _e, _f, _g, _h;
163
+ if (!txResult)
164
+ return [];
165
+ var events = [];
166
+ var accountKeys = txResult.transaction.message.accountKeys;
167
+ var messageAccountKeys = __spreadArray([], accountKeys, true);
168
+ // Writable accounts come first, then readonly.
169
+ // See https://docs.anza.xyz/proposals/versioned-transactions#new-transaction-format
170
+ messageAccountKeys.push.apply(messageAccountKeys, ((_c = (_b = (_a = txResult === null || txResult === void 0 ? void 0 : txResult.meta) === null || _a === void 0 ? void 0 : _a.loadedAddresses) === null || _b === void 0 ? void 0 : _b.writable) !== null && _c !== void 0 ? _c : []));
171
+ messageAccountKeys.push.apply(messageAccountKeys, ((_f = (_e = (_d = txResult === null || txResult === void 0 ? void 0 : txResult.meta) === null || _d === void 0 ? void 0 : _d.loadedAddresses) === null || _e === void 0 ? void 0 : _e.readonly) !== null && _f !== void 0 ? _f : []));
172
+ for (var _i = 0, _j = (_h = (_g = txResult.meta) === null || _g === void 0 ? void 0 : _g.innerInstructions) !== null && _h !== void 0 ? _h : []; _i < _j.length; _i++) {
173
+ var ixBlock = _j[_i];
174
+ for (var _k = 0, _l = ixBlock.instructions; _k < _l.length; _k++) {
175
+ var ix = _l[_k];
176
+ var ixProgramId = messageAccountKeys[ix.programIdIndex];
177
+ var singleIxAccount = ix.accounts.length === 1 ? messageAccountKeys[ix.accounts[0]] : undefined;
178
+ if (ixProgramId !== undefined &&
179
+ singleIxAccount !== undefined &&
180
+ this.svmSpokeAddress === ixProgramId &&
181
+ this.svmSpokeEventAuthority === singleIxAccount) {
182
+ var ixData = utils.bytes.bs58.decode(ix.data);
183
+ // Skip the first 8 bytes (assumed header) and encode the rest.
184
+ var eventData = utils.bytes.base64.encode(Buffer.from(new Uint8Array(ixData).slice(8)));
185
+ var event_1 = new BorshEventCoder(SvmSpokeIdl).decode(eventData);
186
+ if (!(event_1 === null || event_1 === void 0 ? void 0 : event_1.name))
187
+ throw new Error("Event name is undefined");
188
+ var name_1 = getEventName(event_1.name);
189
+ events.push({
190
+ program: this.svmSpokeAddress,
191
+ data: parseEventData(event_1 === null || event_1 === void 0 ? void 0 : event_1.data),
192
+ name: name_1,
193
+ });
194
+ }
195
+ }
196
+ }
197
+ return events;
198
+ };
199
+ return SvmSpokeEventsClient;
200
+ }());
201
+ export { SvmSpokeEventsClient };
202
+ //# sourceMappingURL=eventsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventsClient.js","sourceRoot":"","sources":["../../../src/svm/eventsClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from "./eventsClient";
@@ -0,0 +1,2 @@
1
+ export * from "./eventsClient";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/svm/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Signature, Address, UnixTimestamp } from "@solana/kit";
2
+ import { SvmSpokeClient } from "@across-protocol/contracts";
3
+ export type EventData = SvmSpokeClient.BridgedToHubPool | SvmSpokeClient.TokensBridged | SvmSpokeClient.ExecutedRelayerRefundRoot | SvmSpokeClient.RelayedRootBundle | SvmSpokeClient.PausedDeposits | SvmSpokeClient.PausedFills | SvmSpokeClient.SetXDomainAdmin | SvmSpokeClient.EnabledDepositRoute | SvmSpokeClient.FilledRelay | SvmSpokeClient.FundsDeposited | SvmSpokeClient.EmergencyDeletedRootBundle | SvmSpokeClient.RequestedSlowFill | SvmSpokeClient.ClaimedRelayerRefund | SvmSpokeClient.TransferredOwnership;
4
+ export declare enum SVMEventNames {
5
+ FilledRelay = "FilledRelay",
6
+ FundsDeposited = "FundsDeposited",
7
+ EnabledDepositRoute = "EnabledDepositRoute",
8
+ RelayedRootBundle = "RelayedRootBundle",
9
+ ExecutedRelayerRefundRoot = "ExecutedRelayerRefundRoot",
10
+ BridgedToHubPool = "BridgedToHubPool",
11
+ PausedDeposits = "PausedDeposits",
12
+ PausedFills = "PausedFills",
13
+ SetXDomainAdmin = "SetXDomainAdmin",
14
+ EmergencyDeletedRootBundle = "EmergencyDeletedRootBundle",
15
+ RequestedSlowFill = "RequestedSlowFill",
16
+ ClaimedRelayerRefund = "ClaimedRelayerRefund",
17
+ TokensBridged = "TokensBridged",
18
+ TransferredOwnership = "TransferredOwnership"
19
+ }
20
+ export type EventName = keyof typeof SVMEventNames;
21
+ export type EventWithData<T extends EventData> = {
22
+ confirmationStatus: string | null;
23
+ blockTime: UnixTimestamp | null;
24
+ signature: Signature;
25
+ slot: bigint;
26
+ name: EventName;
27
+ data: T;
28
+ program: Address;
29
+ };
@@ -0,0 +1,18 @@
1
+ export var SVMEventNames;
2
+ (function (SVMEventNames) {
3
+ SVMEventNames["FilledRelay"] = "FilledRelay";
4
+ SVMEventNames["FundsDeposited"] = "FundsDeposited";
5
+ SVMEventNames["EnabledDepositRoute"] = "EnabledDepositRoute";
6
+ SVMEventNames["RelayedRootBundle"] = "RelayedRootBundle";
7
+ SVMEventNames["ExecutedRelayerRefundRoot"] = "ExecutedRelayerRefundRoot";
8
+ SVMEventNames["BridgedToHubPool"] = "BridgedToHubPool";
9
+ SVMEventNames["PausedDeposits"] = "PausedDeposits";
10
+ SVMEventNames["PausedFills"] = "PausedFills";
11
+ SVMEventNames["SetXDomainAdmin"] = "SetXDomainAdmin";
12
+ SVMEventNames["EmergencyDeletedRootBundle"] = "EmergencyDeletedRootBundle";
13
+ SVMEventNames["RequestedSlowFill"] = "RequestedSlowFill";
14
+ SVMEventNames["ClaimedRelayerRefund"] = "ClaimedRelayerRefund";
15
+ SVMEventNames["TokensBridged"] = "TokensBridged";
16
+ SVMEventNames["TransferredOwnership"] = "TransferredOwnership";
17
+ })(SVMEventNames || (SVMEventNames = {}));
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/svm/types.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAN,IAAY,aAeX;AAfD,WAAY,aAAa;IACvB,4CAA2B,CAAA;IAC3B,kDAAiC,CAAA;IACjC,4DAA2C,CAAA;IAC3C,wDAAuC,CAAA;IACvC,wEAAuD,CAAA;IACvD,sDAAqC,CAAA;IACrC,kDAAiC,CAAA;IACjC,4CAA2B,CAAA;IAC3B,oDAAmC,CAAA;IACnC,0EAAyD,CAAA;IACzD,wDAAuC,CAAA;IACvC,8DAA6C,CAAA;IAC7C,gDAA+B,CAAA;IAC/B,8DAA6C,CAAA;AAC/C,CAAC,EAfW,aAAa,KAAb,aAAa,QAexB"}
@@ -0,0 +1,9 @@
1
+ import { EventName } from "../types";
2
+ /**
3
+ * Parses event data from a transaction.
4
+ */
5
+ export declare function parseEventData(eventData: any): any;
6
+ /**
7
+ * Gets the event name from a raw name.
8
+ */
9
+ export declare function getEventName(rawName: string): EventName;
@@ -0,0 +1,43 @@
1
+ import { BN } from "@coral-xyz/anchor";
2
+ import web3 from "@solana/kit";
3
+ import { SVMEventNames } from "../types";
4
+ /**
5
+ * Parses event data from a transaction.
6
+ */
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ export function parseEventData(eventData) {
9
+ if (!eventData)
10
+ return eventData;
11
+ if (Array.isArray(eventData)) {
12
+ return eventData.map(parseEventData);
13
+ }
14
+ if (typeof eventData === "object") {
15
+ if (eventData.constructor.name === "PublicKey") {
16
+ return web3.address(eventData.toString());
17
+ }
18
+ if (BN.isBN(eventData)) {
19
+ return BigInt(eventData.toString());
20
+ }
21
+ // Convert each key from snake_case to camelCase and process the value recursively.
22
+ return Object.fromEntries(Object.entries(eventData).map(function (_a) {
23
+ var key = _a[0], value = _a[1];
24
+ return [snakeToCamel(key), parseEventData(value)];
25
+ }));
26
+ }
27
+ return eventData;
28
+ }
29
+ /**
30
+ * Converts a snake_case string to camelCase.
31
+ */
32
+ function snakeToCamel(s) {
33
+ return s.replace(/(_\w)/g, function (match) { return match[1].toUpperCase(); });
34
+ }
35
+ /**
36
+ * Gets the event name from a raw name.
37
+ */
38
+ export function getEventName(rawName) {
39
+ if (Object.values(SVMEventNames).some(function (name) { return rawName.includes(name); }))
40
+ return rawName;
41
+ throw new Error("Unknown event name: ".concat(rawName));
42
+ }
43
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/svm/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAa,aAAa,EAAE,MAAM,UAAU,CAAC;AAEpD;;GAEG;AACH,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,SAAc;IAC3C,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;QAC5B,OAAO,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;KACtC;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,IAAI,SAAS,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,EAAE;YAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC3C;QACD,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACtB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrC;QAED,mFAAmF;QACnF,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,UAAC,EAAY;gBAAX,GAAG,QAAA,EAAE,KAAK,QAAA;YAAM,OAAA,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;QAA1C,CAA0C,CAAC,CAC5F,CAAC;KACH;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAtB,CAAsB,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAtB,CAAsB,CAAC;QAAE,OAAO,OAAoB,CAAC;IACrG,MAAM,IAAI,KAAK,CAAC,8BAAuB,OAAO,CAAE,CAAC,CAAC;AACpD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import web3, { RpcTransport } from "@solana/kit";
2
+ /**
3
+ * Helper to determine if the current RPC network is devnet.
4
+ */
5
+ export declare function isDevnet(rpc: web3.Rpc<web3.SolanaRpcApiFromTransport<RpcTransport>>): Promise<boolean>;
@@ -0,0 +1,18 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ /**
3
+ * Helper to determine if the current RPC network is devnet.
4
+ */
5
+ export function isDevnet(rpc) {
6
+ return __awaiter(this, void 0, void 0, function () {
7
+ var genesisHash;
8
+ return __generator(this, function (_a) {
9
+ switch (_a.label) {
10
+ case 0: return [4 /*yield*/, rpc.getGenesisHash().send()];
11
+ case 1:
12
+ genesisHash = _a.sent();
13
+ return [2 /*return*/, genesisHash === "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG"];
14
+ }
15
+ });
16
+ });
17
+ }
18
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/svm/utils/helpers.ts"],"names":[],"mappings":";AAEA;;GAEG;AACH,MAAM,UAAgB,QAAQ,CAAC,GAA2D;;;;;wBACpE,qBAAM,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAA;;oBAA/C,WAAW,GAAG,SAAiC;oBACrD,sBAAO,WAAW,KAAK,8CAA8C,EAAC;;;;CACvE"}