@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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","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.d.ts","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<{
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimitedRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/rateLimitedRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,MAAM,iBAAiB,CAAC;AAE5D,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAM9D,qBAAa,2BAA4B,SAAQ,uBAAuB;IAWpE,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAVzB,OAAO,CAAC,KAAK,CAAmC;IAGhD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAe;gBAK9C,cAAc,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAEf,EACF,GAAG,wBAAwB,EAAE,qBAAqB,CAAC,OAAO,uBAAuB,CAAC;YAkBtE,eAAe;IA0CtB,eAAe;;;;CAevB"}
1
+ {"version":3,"file":"rateLimitedRpcFactory.d.ts","sourceRoot":"","sources":["../../../../src/providers/solana/rateLimitedRpcFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAM9D,qBAAa,2BAA4B,SAAQ,uBAAuB;IAWpE,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM;IAVzB,OAAO,CAAC,KAAK,CAAmC;IAGhD,SAAS,CAAC,gBAAgB,EAAE,YAAY,CAAC;gBAKvC,cAAc,EAAE,MAAM,EACb,iBAAiB,EAAE,MAAM,EACzB,MAAM,EAAE,MAEf,EACF,GAAG,wBAAwB,EAAE,qBAAqB,CAAC,OAAO,uBAAuB,CAAC;YAkBtE,eAAe;IA0CtB,eAAe;;;;CAevB"}
@@ -0,0 +1,52 @@
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 {};
52
+ //# sourceMappingURL=eventsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eventsClient.d.ts","sourceRoot":"","sources":["../../../src/svm/eventsClient.ts"],"names":[],"mappings":"AAGA,OAAO,IAAI,EAAE,EAGX,0BAA0B,EAE1B,YAAY,EAEb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAa9D,KAAK,6BAA6B,GAAG,UAAU,CAAC,0BAA0B,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAI1G,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,GAAG,CAAyD;IACpE,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,sBAAsB,CAAU;IAExC;;OAEG;IACH,OAAO;IAUP;;OAEG;WACiB,MAAM,CACxB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,GAC1D,OAAO,CAAC,oBAAoB,CAAC;IAYhC;;;;;;;;OAQG;IACU,WAAW,CAAC,CAAC,SAAS,SAAS,EAC1C,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,6BAAwE,GAChF,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAK9B;;;;;;;OAOG;YACW,cAAc;IAoD5B;;;;;;OAMG;YACW,uBAAuB;IASrC;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;CAwC3B"}
@@ -0,0 +1,2 @@
1
+ export * from "./eventsClient";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/svm/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,30 @@
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
+ };
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/svm/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,MAAM,SAAS,GACjB,cAAc,CAAC,gBAAgB,GAC/B,cAAc,CAAC,aAAa,GAC5B,cAAc,CAAC,yBAAyB,GACxC,cAAc,CAAC,iBAAiB,GAChC,cAAc,CAAC,cAAc,GAC7B,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,eAAe,GAC9B,cAAc,CAAC,mBAAmB,GAClC,cAAc,CAAC,WAAW,GAC1B,cAAc,CAAC,cAAc,GAC7B,cAAc,CAAC,0BAA0B,GACzC,cAAc,CAAC,iBAAiB,GAChC,cAAc,CAAC,oBAAoB,GACnC,cAAc,CAAC,oBAAoB,CAAC;AAExC,oBAAY,aAAa;IACvB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,iBAAiB,sBAAsB;IACvC,yBAAyB,8BAA8B;IACvD,gBAAgB,qBAAqB;IACrC,cAAc,mBAAmB;IACjC,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,0BAA0B,+BAA+B;IACzD,iBAAiB,sBAAsB;IACvC,oBAAoB,yBAAyB;IAC7C,aAAa,kBAAkB;IAC/B,oBAAoB,yBAAyB;CAC9C;AAED,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,aAAa,CAAC;AAEnD,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,IAAI;IAC/C,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
@@ -0,0 +1,10 @@
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;
10
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/svm/utils/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,UAAU,CAAC;AAEpD;;GAEG;AAEH,wBAAgB,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,GAAG,CAsBlD;AASD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAGvD"}
@@ -0,0 +1,6 @@
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>;
6
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/svm/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAG5G"}
@@ -1 +1 @@
1
- {"version":3,"file":"DepositUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/DepositUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAc5G,oBAAY,WAAW;IACrB,gBAAgB,IAAI;IACpB,iBAAiB,IAAA;IACjB,YAAY,IAAA;IACZ,mBAAmB,IAAA;CACpB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,GAAG,eAAe,EAC5B,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CA6F9B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC,GAAG,OAAO,CAE7F;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAgB,GAAG,OAAO,CAE/D;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAI9D"}
1
+ {"version":3,"file":"DepositUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/DepositUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,yBAAyB,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAa5G,oBAAY,WAAW;IACrB,gBAAgB,IAAI;IACpB,iBAAiB,IAAA;IACjB,YAAY,IAAA;IACZ,mBAAmB,IAAA;CACpB;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC1C;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,eAAe,EAChC,IAAI,EAAE,IAAI,GAAG,eAAe,EAC5B,KAAK,CAAC,EAAE,yBAAyB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CA6F9B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC,GAAG,OAAO,CAE7F;AAED,wBAAgB,gCAAgC,CAC9C,CAAC,EAAE,IAAI,CAAC,IAAI,GAAG,eAAe,EAAE,aAAa,GAAG,aAAa,CAAC,GAC7D,OAAO,CAET;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAgB,GAAG,OAAO,CAE/D;AAED,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAI9D"}
@@ -29,4 +29,12 @@ export declare function jsonReplacerWithBigNumbers(_key: string, value: unknown)
29
29
  * @returns The converted value
30
30
  */
31
31
  export declare function jsonReviverWithBigNumbers(_key: string, value: unknown): unknown;
32
+ /**
33
+ * A replacer for `JSON.stringify` that converts BigInt to a decimal string with 'n' suffix.
34
+ */
35
+ export declare function jsonReplacerWithBigInts(_key: string, value: unknown): unknown;
36
+ /**
37
+ * A reviver for `JSON.parse` that converts strings ending in 'n' back to BigInt.
38
+ */
39
+ export declare function jsonReviverWithBigInts(_key: string, value: unknown): unknown;
32
40
  //# sourceMappingURL=JSONUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"JSONUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/JSONUtils.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAWlF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAOnE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAoBhF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAU/E"}
1
+ {"version":3,"file":"JSONUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/JSONUtils.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAWlF;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAOnE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAoBhF;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAU/E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAE7E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAE5E"}
@@ -1,4 +1,6 @@
1
- import { Logger } from "winston";
1
+ import winston from "winston";
2
+ export declare class Logger extends winston.Logger {
3
+ }
2
4
  export type DefaultLogLevels = "debug" | "info" | "warn" | "error";
3
5
  type LogParamType = {
4
6
  level: DefaultLogLevels;
@@ -9,6 +11,6 @@ type LogParamType = {
9
11
  };
10
12
  data?: Record<string | number, unknown>;
11
13
  };
12
- export declare function formattedLog(logger: Logger | undefined, { level, message, at: { location, function: fnName }, data }: LogParamType): void;
14
+ export declare function formattedLog(logger: winston.Logger | undefined, { level, message, at: { location, function: fnName }, data }: LogParamType): void;
13
15
  export {};
14
16
  //# sourceMappingURL=LogUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LogUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/LogUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,GACzE,IAAI,CAQN"}
1
+ {"version":3,"file":"LogUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/LogUtils.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,qBAAa,MAAO,SAAQ,OAAO,CAAC,MAAM;CAAG;AAC7C,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,KAAK,YAAY,GAAG;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE;QACF,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC,CAAC;AAEF,wBAAgB,YAAY,CAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,EAClC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,YAAY,GACzE,IAAI,CAQN"}
@@ -21,6 +21,15 @@ export declare function getRelayEventKey(data: Omit<RelayData, "message"> & {
21
21
  messageHash: string;
22
22
  destinationChainId: number;
23
23
  }): string;
24
+ export declare function validateFillForDeposit(relayData: Omit<RelayData, "message"> & {
25
+ messageHash: string;
26
+ destinationChainId: number;
27
+ }, deposit?: Omit<Deposit, "quoteTimestamp" | "fromLiteChain" | "toLiteChain">): {
28
+ valid: true;
29
+ } | {
30
+ valid: false;
31
+ reason: string;
32
+ };
24
33
  /**
25
34
  * Find the block range that contains the deposit ID. This is a binary search that searches for the block range
26
35
  * that contains the deposit ID.
@@ -1 +1 @@
1
- {"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/SpokeUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAwB,MAAM,QAAQ,CAAC;AAEpG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAuB,MAAM,kBAAkB,CAAC;AAQlE,KAAK,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;AAEnC;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,QAAQ,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EACrC,OAAO,EAAE,MAAM,EACf,gBAAgB,SAA6B,GAC5C,OAAO,CAAC,oBAAoB,CAAC,CAgC/B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GACrF,MAAM,CAkBR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,eAAe,EAAE,SAAS,EAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,eAAe,GACzB,OAAO,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAwHD;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAQlG;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CA+BzF;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,SAAS,GAAG;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAQ/D;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,SAAS,EACpB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,EAC5B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,SAAS,EAAE,EACtB,QAAQ,GAAE,QAAmB,GAC5B,OAAO,CAAC,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE,CAAC,CA8BrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgD7B;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,QAAQ,EACnB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,MAAM,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAoCpC;AAGD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/SpokeUtils.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,6 @@ export * from "./TypeGuards";
9
9
  export * from "./TypeUtils";
10
10
  export * from "./TokenUtils";
11
11
  export * from "./LogUtils";
12
- export * from "./FlowUtils";
13
12
  export * from "./BundleUtils";
14
13
  export * from "./JSONUtils";
15
14
  export * from "./IPFSUtils";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "4.1.19",
4
+ "version": "4.1.22",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -12,6 +12,8 @@
12
12
  "node": ">=20.18.0"
13
13
  },
14
14
  "scripts": {
15
+ "build-bigint-buffer": "[ -d node_modules/bigint-buffer ] && command -v node-gyp > /dev/null && cd node_modules/bigint-buffer && node-gyp configure && node-gyp build || echo 'Skipping bigint-buffer build: folder or node-gyp not found'",
16
+ "postinstall": "yarn build-bigint-buffer",
15
17
  "start": "yarn typechain && nodemon -e ts,tsx,json,js,jsx --watch ./src --ignore ./dist --exec 'yarn dev'",
16
18
  "build": "yarn run clean && yarn typechain && yarn run build:cjs & yarn run build:esm & yarn run build:types; wait",
17
19
  "dev": "yarn run build:cjs & yarn run build:esm & yarn run build:types; wait",
@@ -101,11 +103,13 @@
101
103
  "dependencies": {
102
104
  "@across-protocol/across-token": "^1.0.0",
103
105
  "@across-protocol/constants": "^3.1.38",
104
- "@across-protocol/contracts": "4.0.2",
106
+ "@across-protocol/contracts": "4.0.3",
107
+ "@coral-xyz/anchor": "^0.30.1",
105
108
  "@eth-optimism/sdk": "^3.3.1",
106
109
  "@ethersproject/bignumber": "^5.7.0",
107
110
  "@pinata/sdk": "^2.1.0",
108
- "@solana/web3.js": "^2.0.0",
111
+ "@solana/kit": "^2.1.0",
112
+ "@solana/web3.js": "^1.31.0",
109
113
  "@types/mocha": "^10.0.1",
110
114
  "@uma/sdk": "^0.34.10",
111
115
  "arweave": "^1.14.4",
@@ -116,6 +120,7 @@
116
120
  "ethers": "^5.7.2",
117
121
  "lodash": "^4.17.21",
118
122
  "lodash.get": "^4.4.2",
123
+ "node-gyp": "^11.0.0",
119
124
  "superstruct": "^0.15.4",
120
125
  "tslib": "^2.6.2",
121
126
  "viem": "^2.21.15"
@@ -0,0 +1,32 @@
1
+ import { array, defaulted, string, type } from "superstruct";
2
+ import { AddressListAdapter } from "../types";
3
+ import { logError, Logger, fetch } from "./util";
4
+
5
+ const DEFAULT_URL = "https://hackscan.hackbounty.io/public/hack-address.json";
6
+
7
+ // This type is a bit message and unweildy. Additional fields representing new chains may be added without notification.
8
+ const bybitResponse = type({
9
+ "0221": type({
10
+ eth: defaulted(array(string()), []),
11
+ bsc: defaulted(array(string()), []),
12
+ arbi: defaulted(array(string()), []),
13
+ }),
14
+ });
15
+
16
+ export class AddressList implements AddressListAdapter {
17
+ readonly timeout = 2000; // ms
18
+ readonly retries = 1;
19
+ readonly name = "bybit";
20
+
21
+ constructor(readonly url = DEFAULT_URL) {}
22
+
23
+ async update(logger?: Logger): Promise<string[]> {
24
+ const response = await fetch(this.name, this.url, this.timeout, this.retries);
25
+ if (!bybitResponse.is(response)) {
26
+ // nb. don't log the response because it might be very large.
27
+ return logError(this.name, "Failed to validate response", logger);
28
+ }
29
+
30
+ return [...response["0221"].eth, ...response["0221"].bsc, ...response["0221"].arbi];
31
+ }
32
+ }
@@ -0,0 +1,30 @@
1
+ import { array, defaulted, string } from "superstruct";
2
+ import { AddressListAdapter } from "../types";
3
+ import { Logger, logError } from "./util";
4
+
5
+ const envConfig = defaulted(array(string()), []);
6
+
7
+ export class AddressList implements AddressListAdapter {
8
+ readonly name = "process.env";
9
+
10
+ constructor(readonly envVar = "ACROSS_IGNORED_ADDRESSES") {}
11
+
12
+ update(logger?: Logger): Promise<string[]> {
13
+ const config = process.env[this.envVar];
14
+ if (!config) {
15
+ return Promise.resolve([]);
16
+ }
17
+
18
+ let addresses: unknown;
19
+ try {
20
+ addresses = JSON.parse(config);
21
+ if (!envConfig.is(addresses)) {
22
+ return logError(this.name, "Address format validation failure.", logger);
23
+ }
24
+ } catch (err) {
25
+ return logError(this.name, err, logger);
26
+ }
27
+
28
+ return Promise.resolve(addresses);
29
+ }
30
+ }
@@ -0,0 +1,39 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { array, defaulted, string } from "superstruct";
3
+ import { AddressListAdapter } from "../types";
4
+ import { Logger, logError } from "./util";
5
+
6
+ const fileConfig = defaulted(array(string()), []);
7
+
8
+ export class AddressList implements AddressListAdapter {
9
+ readonly name: string;
10
+
11
+ constructor(readonly path = "./addresses.json") {
12
+ this.name = `fs:${path}`;
13
+ }
14
+
15
+ async update(logger?: Logger): Promise<string[]> {
16
+ let data: string;
17
+ try {
18
+ data = await readFile(this.path, { encoding: "utf8" });
19
+ } catch (err) {
20
+ return logError(this.name, err, logger);
21
+ }
22
+
23
+ if (!data) {
24
+ return logError(this.name, `No addresses found in "${this.path}"`, logger);
25
+ }
26
+
27
+ let addresses: unknown;
28
+ try {
29
+ addresses = JSON.parse(data);
30
+ if (!fileConfig.is(addresses)) {
31
+ return logError(this.name, "Address format validation failure.", logger);
32
+ }
33
+ } catch (err) {
34
+ return logError(this.name, err, logger);
35
+ }
36
+
37
+ return Promise.resolve(addresses);
38
+ }
39
+ }
@@ -0,0 +1,3 @@
1
+ export * as bybit from "./bybit";
2
+ export * as processEnv from "./env";
3
+ export * as fs from "./file";
@@ -0,0 +1,47 @@
1
+ import axios from "axios";
2
+ import { Logger } from "../../utils";
3
+
4
+ export { Logger } from "../../utils";
5
+
6
+ const { ACROSS_USER_AGENT = "across-protocol" } = process.env;
7
+
8
+ function sleep(ms: number): Promise<void> {
9
+ return new Promise((r) => setTimeout(r, ms));
10
+ }
11
+
12
+ export function logError(name: string, error: unknown, logger?: Logger): Promise<string[]> {
13
+ let reason: string;
14
+ if (error instanceof Error) {
15
+ reason = error.message;
16
+ } else {
17
+ reason = typeof error === "string" ? error : "unknown error";
18
+ }
19
+
20
+ logger?.warn({
21
+ at: `${name}::update`,
22
+ message: `Failed to read addresses from ${name}.`,
23
+ reason,
24
+ });
25
+ return Promise.resolve([]);
26
+ }
27
+
28
+ export async function fetch(name: string, url: string, timeout = 2000, retries = 1): Promise<unknown> {
29
+ const args = {
30
+ headers: { "User-Agent": ACROSS_USER_AGENT },
31
+ timeout,
32
+ };
33
+
34
+ const errs: string[] = [];
35
+ let tries = 0;
36
+ do {
37
+ try {
38
+ return (await axios(url, args)).data;
39
+ } catch (err) {
40
+ const errMsg = axios.isAxiosError(err) || err instanceof Error ? err.message : "unknown error";
41
+ errs.push(errMsg);
42
+ if (++tries <= retries) await sleep(Math.pow(1.5, tries) * 1000); // simple backoff
43
+ }
44
+ } while (tries <= retries);
45
+
46
+ throw new Error(`${name} retrieval failure (${errs.join(", ")})`);
47
+ }
@@ -0,0 +1,86 @@
1
+ import { utils as ethersUtils } from "ethers";
2
+ import { Logger, mapAsync } from "../utils";
3
+ import { AddressListAdapter, INVALID_ADDRESS } from "./types";
4
+ import * as adapters from "./adapters";
5
+
6
+ export * as adapters from "./adapters";
7
+
8
+ export class AddressAggregator {
9
+ constructor(
10
+ readonly adapters: AddressListAdapter[],
11
+ protected readonly logger?: Logger
12
+ ) {}
13
+
14
+ static sources(): string[] {
15
+ return Object.keys(adapters);
16
+ }
17
+
18
+ async update(): Promise<Set<string>> {
19
+ this.logger?.debug({
20
+ at: "AddressAggregator::update",
21
+ message: "Updating addresses.",
22
+ sources: this.adapters.map((adapter) => adapter.name),
23
+ supportedSources: AddressAggregator.sources(),
24
+ });
25
+
26
+ const allAddresses = await mapAsync(this.adapters, async (adapter) => {
27
+ const invalidAddresses: string[] = [];
28
+ const addresses = (await adapter.update(this.logger))
29
+ .map((address) => {
30
+ try {
31
+ return ethersUtils.getAddress(address.toLowerCase());
32
+ } catch {
33
+ invalidAddresses.push(address);
34
+ return INVALID_ADDRESS;
35
+ }
36
+ })
37
+ .filter((address) => address !== INVALID_ADDRESS);
38
+
39
+ if (invalidAddresses.length > 0) {
40
+ this.logger?.warn({
41
+ at: "AddressAggregator::update()",
42
+ message: `Read ${invalidAddresses.length} malformed addresses on ${adapter.name}.`,
43
+ invalidAddresses,
44
+ });
45
+ }
46
+
47
+ this.logger?.debug({
48
+ at: "AddressAggregator::update",
49
+ message: `Loaded ${addresses.length} addresses from ${adapter.name}.`,
50
+ });
51
+
52
+ return addresses;
53
+ });
54
+
55
+ // Dedup the aggregated, normalised, filtered set of addresses.
56
+ const addresses = new Set(allAddresses.flat());
57
+
58
+ this.logger?.debug({
59
+ at: "AddressAggregator::update",
60
+ message: `Loaded ${addresses.size} addresses.`,
61
+ sources: this.adapters.map((adapter) => adapter.name),
62
+ });
63
+
64
+ return addresses;
65
+ }
66
+ }
67
+
68
+ async function run(): Promise<number> {
69
+ const addressList = new AddressAggregator([new adapters.bybit.AddressList(), new adapters.processEnv.AddressList()]);
70
+
71
+ const addresses = await addressList.update();
72
+ console.log(`Retrieved ${addresses.size} addresses: ${JSON.stringify(Array.from(addresses), null, 2)}`);
73
+
74
+ return 0;
75
+ }
76
+
77
+ if (require.main === module) {
78
+ run()
79
+ .then((result: number) => {
80
+ process.exitCode = result;
81
+ })
82
+ .catch((error) => {
83
+ console.error("Process exited with", error);
84
+ process.exitCode = 127;
85
+ });
86
+ }
@@ -0,0 +1,8 @@
1
+ import { Logger } from "../utils";
2
+
3
+ export interface AddressListAdapter {
4
+ readonly name: string;
5
+ update(logger?: Logger): Promise<string[]>;
6
+ }
7
+
8
+ export const INVALID_ADDRESS = "";
@@ -0,0 +1,35 @@
1
+ import { CachingMechanismInterface } from "../../interfaces";
2
+
3
+ interface CacheEntry {
4
+ value: unknown;
5
+ expiresAt?: number | null;
6
+ }
7
+
8
+ /**
9
+ * A simple in-memory cache client that stores values in a map with TTL support.
10
+ */
11
+ export class MemoryCacheClient implements CachingMechanismInterface {
12
+ private cache: Map<string, CacheEntry> = new Map();
13
+
14
+ get<T>(key: string): Promise<T | null> {
15
+ return new Promise((resolve) => {
16
+ const entry = this.cache.get(key);
17
+ if (entry === undefined) return resolve(null);
18
+
19
+ if (entry.expiresAt && entry.expiresAt < Date.now()) {
20
+ this.cache.delete(key);
21
+ return resolve(null);
22
+ }
23
+
24
+ resolve(entry.value as T);
25
+ });
26
+ }
27
+
28
+ set<T>(key: string, value: T, ttl?: number): Promise<string | undefined> {
29
+ return new Promise((resolve) => {
30
+ const expiresAt = ttl ? Date.now() + ttl * 1000 : null;
31
+ this.cache.set(key, { value, expiresAt });
32
+ resolve(key);
33
+ });
34
+ }
35
+ }
@@ -0,0 +1 @@
1
+ export * from "./MemoryCacheClient";
@@ -1,2 +1,3 @@
1
1
  export * from "./IPFS";
2
2
  export * from "./Arweave";
3
+ export * from "./Memory";
@@ -510,14 +510,14 @@ export class HubPoolClient extends BaseAbstractClient {
510
510
  return this.getTokenInfoForL1Token(l1TokenCounterpart);
511
511
  }
512
512
 
513
- getTokenInfoForDeposit(deposit: Deposit): L1Token | undefined {
513
+ getTokenInfoForDeposit(deposit: Pick<Deposit, "inputToken" | "originChainId">): L1Token | undefined {
514
514
  return this.getTokenInfoForL1Token(
515
515
  this.getL1TokenForL2TokenAtBlock(deposit.inputToken, deposit.originChainId, this.latestBlockSearched)
516
516
  );
517
517
  }
518
518
 
519
519
  getTokenInfo(chainId: number | string, tokenAddress: string): L1Token | undefined {
520
- const deposit = { originChainId: parseInt(chainId.toString()), inputToken: tokenAddress } as Deposit;
520
+ const deposit = { originChainId: parseInt(chainId.toString()), inputToken: tokenAddress };
521
521
  return this.getTokenInfoForDeposit(deposit);
522
522
  }
523
523