@across-protocol/sdk 4.1.43 → 4.1.45-beta.0

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 (184) hide show
  1. package/dist/cjs/addressAggregator/adapters/abstract.d.ts +15 -0
  2. package/dist/cjs/addressAggregator/adapters/abstract.js +83 -0
  3. package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -0
  4. package/dist/cjs/addressAggregator/adapters/bybit.d.ts +5 -9
  5. package/dist/cjs/addressAggregator/adapters/bybit.js +11 -12
  6. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
  7. package/dist/cjs/addressAggregator/adapters/env.d.ts +5 -7
  8. package/dist/cjs/addressAggregator/adapters/env.js +12 -11
  9. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
  10. package/dist/cjs/addressAggregator/adapters/file.d.ts +5 -7
  11. package/dist/cjs/addressAggregator/adapters/file.js +13 -12
  12. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
  13. package/dist/cjs/addressAggregator/adapters/risklabs.d.ts +5 -9
  14. package/dist/cjs/addressAggregator/adapters/risklabs.js +18 -14
  15. package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
  16. package/dist/cjs/addressAggregator/index.js +2 -2
  17. package/dist/cjs/addressAggregator/index.js.map +1 -1
  18. package/dist/cjs/addressAggregator/types.d.ts +9 -1
  19. package/dist/cjs/addressAggregator/types.js.map +1 -1
  20. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +13 -6
  21. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  22. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +9 -0
  23. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  24. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.d.ts +7 -6
  25. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +46 -35
  26. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  27. package/dist/cjs/clients/HubPoolClient.d.ts +2 -0
  28. package/dist/cjs/clients/HubPoolClient.js +27 -10
  29. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  30. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.d.ts +1 -0
  31. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +16 -3
  32. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  33. package/dist/cjs/clients/mocks/MockHubPoolClient.d.ts +2 -0
  34. package/dist/cjs/clients/mocks/MockHubPoolClient.js +18 -0
  35. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  36. package/dist/cjs/constants.d.ts +1 -0
  37. package/dist/cjs/constants.js +13 -1
  38. package/dist/cjs/constants.js.map +1 -1
  39. package/dist/cjs/svm/eventsClient.js +5 -12
  40. package/dist/cjs/svm/eventsClient.js.map +1 -1
  41. package/dist/cjs/svm/index.d.ts +2 -0
  42. package/dist/cjs/svm/index.js +3 -0
  43. package/dist/cjs/svm/index.js.map +1 -1
  44. package/dist/cjs/svm/utils/events.d.ts +6 -1
  45. package/dist/cjs/svm/utils/events.js +13 -4
  46. package/dist/cjs/svm/utils/events.js.map +1 -1
  47. package/dist/cjs/svm/utils/index.d.ts +1 -0
  48. package/dist/cjs/svm/utils/index.js +5 -0
  49. package/dist/cjs/svm/utils/index.js.map +1 -0
  50. package/dist/cjs/utils/DepositUtils.d.ts +1 -0
  51. package/dist/cjs/utils/DepositUtils.js +5 -1
  52. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  53. package/dist/cjs/utils/TokenUtils.d.ts +1 -0
  54. package/dist/cjs/utils/TokenUtils.js +5 -1
  55. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  56. package/dist/cjs/utils/common.d.ts +2 -0
  57. package/dist/cjs/utils/common.js +3 -1
  58. package/dist/cjs/utils/common.js.map +1 -1
  59. package/dist/esm/addressAggregator/adapters/abstract.d.ts +15 -0
  60. package/dist/esm/addressAggregator/adapters/abstract.js +80 -0
  61. package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -0
  62. package/dist/esm/addressAggregator/adapters/bybit.d.ts +5 -9
  63. package/dist/esm/addressAggregator/adapters/bybit.js +12 -13
  64. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
  65. package/dist/esm/addressAggregator/adapters/env.d.ts +5 -7
  66. package/dist/esm/addressAggregator/adapters/env.js +12 -11
  67. package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
  68. package/dist/esm/addressAggregator/adapters/file.d.ts +5 -7
  69. package/dist/esm/addressAggregator/adapters/file.js +14 -13
  70. package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
  71. package/dist/esm/addressAggregator/adapters/risklabs.d.ts +5 -9
  72. package/dist/esm/addressAggregator/adapters/risklabs.js +19 -15
  73. package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
  74. package/dist/esm/addressAggregator/index.js +2 -2
  75. package/dist/esm/addressAggregator/index.js.map +1 -1
  76. package/dist/esm/addressAggregator/types.d.ts +9 -1
  77. package/dist/esm/addressAggregator/types.js.map +1 -1
  78. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +14 -7
  79. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  80. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +15 -0
  81. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  82. package/dist/esm/clients/BundleDataClient/utils/FillUtils.d.ts +28 -6
  83. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +82 -49
  84. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  85. package/dist/esm/clients/HubPoolClient.d.ts +2 -0
  86. package/dist/esm/clients/HubPoolClient.js +31 -13
  87. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  88. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.d.ts +1 -0
  89. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +24 -11
  90. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  91. package/dist/esm/clients/mocks/MockHubPoolClient.d.ts +2 -0
  92. package/dist/esm/clients/mocks/MockHubPoolClient.js +18 -0
  93. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  94. package/dist/esm/constants.d.ts +1 -0
  95. package/dist/esm/constants.js +12 -0
  96. package/dist/esm/constants.js.map +1 -1
  97. package/dist/esm/svm/eventsClient.js +6 -13
  98. package/dist/esm/svm/eventsClient.js.map +1 -1
  99. package/dist/esm/svm/index.d.ts +2 -0
  100. package/dist/esm/svm/index.js +3 -0
  101. package/dist/esm/svm/index.js.map +1 -1
  102. package/dist/esm/svm/utils/events.d.ts +9 -1
  103. package/dist/esm/svm/utils/events.js +15 -3
  104. package/dist/esm/svm/utils/events.js.map +1 -1
  105. package/dist/esm/svm/utils/index.d.ts +1 -0
  106. package/dist/esm/svm/utils/index.js +2 -0
  107. package/dist/esm/svm/utils/index.js.map +1 -0
  108. package/dist/esm/utils/DepositUtils.d.ts +1 -0
  109. package/dist/esm/utils/DepositUtils.js +5 -1
  110. package/dist/esm/utils/DepositUtils.js.map +1 -1
  111. package/dist/esm/utils/TokenUtils.d.ts +1 -0
  112. package/dist/esm/utils/TokenUtils.js +3 -0
  113. package/dist/esm/utils/TokenUtils.js.map +1 -1
  114. package/dist/esm/utils/common.d.ts +2 -0
  115. package/dist/esm/utils/common.js +2 -0
  116. package/dist/esm/utils/common.js.map +1 -1
  117. package/dist/types/addressAggregator/adapters/abstract.d.ts +16 -0
  118. package/dist/types/addressAggregator/adapters/abstract.d.ts.map +1 -0
  119. package/dist/types/addressAggregator/adapters/bybit.d.ts +5 -9
  120. package/dist/types/addressAggregator/adapters/bybit.d.ts.map +1 -1
  121. package/dist/types/addressAggregator/adapters/env.d.ts +5 -7
  122. package/dist/types/addressAggregator/adapters/env.d.ts.map +1 -1
  123. package/dist/types/addressAggregator/adapters/file.d.ts +5 -7
  124. package/dist/types/addressAggregator/adapters/file.d.ts.map +1 -1
  125. package/dist/types/addressAggregator/adapters/risklabs.d.ts +5 -9
  126. package/dist/types/addressAggregator/adapters/risklabs.d.ts.map +1 -1
  127. package/dist/types/addressAggregator/types.d.ts +9 -1
  128. package/dist/types/addressAggregator/types.d.ts.map +1 -1
  129. package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
  130. package/dist/types/clients/BundleDataClient/utils/DataworkerUtils.d.ts.map +1 -1
  131. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts +28 -6
  132. package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts.map +1 -1
  133. package/dist/types/clients/HubPoolClient.d.ts +2 -0
  134. package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
  135. package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts +1 -0
  136. package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
  137. package/dist/types/clients/mocks/MockHubPoolClient.d.ts +2 -0
  138. package/dist/types/clients/mocks/MockHubPoolClient.d.ts.map +1 -1
  139. package/dist/types/constants.d.ts +1 -0
  140. package/dist/types/constants.d.ts.map +1 -1
  141. package/dist/types/svm/eventsClient.d.ts.map +1 -1
  142. package/dist/types/svm/index.d.ts +2 -0
  143. package/dist/types/svm/index.d.ts.map +1 -1
  144. package/dist/types/svm/utils/events.d.ts +9 -1
  145. package/dist/types/svm/utils/events.d.ts.map +1 -1
  146. package/dist/types/svm/utils/index.d.ts +2 -0
  147. package/dist/types/svm/utils/index.d.ts.map +1 -0
  148. package/dist/types/utils/DepositUtils.d.ts +1 -0
  149. package/dist/types/utils/DepositUtils.d.ts.map +1 -1
  150. package/dist/types/utils/TokenUtils.d.ts +1 -0
  151. package/dist/types/utils/TokenUtils.d.ts.map +1 -1
  152. package/dist/types/utils/common.d.ts +2 -0
  153. package/dist/types/utils/common.d.ts.map +1 -1
  154. package/package.json +1 -1
  155. package/src/addressAggregator/adapters/abstract.ts +74 -0
  156. package/src/addressAggregator/adapters/bybit.ts +10 -11
  157. package/src/addressAggregator/adapters/env.ts +10 -10
  158. package/src/addressAggregator/adapters/file.ts +11 -12
  159. package/src/addressAggregator/adapters/risklabs.ts +14 -13
  160. package/src/addressAggregator/index.ts +2 -2
  161. package/src/addressAggregator/types.ts +10 -1
  162. package/src/clients/BundleDataClient/BundleDataClient.ts +28 -18
  163. package/src/clients/BundleDataClient/utils/DataworkerUtils.ts +29 -0
  164. package/src/clients/BundleDataClient/utils/FillUtils.ts +128 -71
  165. package/src/clients/HubPoolClient.ts +38 -14
  166. package/src/clients/SpokePoolClient/SpokePoolClient.ts +40 -14
  167. package/src/clients/mocks/MockHubPoolClient.ts +16 -0
  168. package/src/constants.ts +13 -0
  169. package/src/svm/eventsClient.ts +6 -12
  170. package/src/svm/index.ts +2 -0
  171. package/src/svm/utils/events.ts +16 -4
  172. package/src/svm/utils/index.ts +1 -0
  173. package/src/utils/DepositUtils.ts +6 -1
  174. package/src/utils/TokenUtils.ts +6 -0
  175. package/src/utils/common.ts +2 -0
  176. package/dist/cjs/addressAggregator/adapters/util.d.ts +0 -4
  177. package/dist/cjs/addressAggregator/adapters/util.js +0 -66
  178. package/dist/cjs/addressAggregator/adapters/util.js.map +0 -1
  179. package/dist/esm/addressAggregator/adapters/util.d.ts +0 -4
  180. package/dist/esm/addressAggregator/adapters/util.js +0 -60
  181. package/dist/esm/addressAggregator/adapters/util.js.map +0 -1
  182. package/dist/types/addressAggregator/adapters/util.d.ts +0 -5
  183. package/dist/types/addressAggregator/adapters/util.d.ts.map +0 -1
  184. package/src/addressAggregator/adapters/util.ts +0 -47
@@ -1,10 +1,12 @@
1
1
  import Decimal from "decimal.js";
2
+ import bs58 from "bs58";
2
3
  import { ethers } from "ethers";
3
4
  import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
4
5
  export type Decimalish = string | number | Decimal;
5
6
  export declare const AddressZero = "0x0000000000000000000000000000000000000000";
6
7
  export declare const MAX_BIG_INT: ethers.BigNumber;
7
8
  export declare const keccak256: typeof ethers.utils.keccak256;
9
+ export { bs58 };
8
10
  /**
9
11
  * toBNWei.
10
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAG9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,eAAO,MAAM,WAAW,+CAA+B,CAAC;AACxD,eAAO,MAAM,WAAW,kBAAqD,CAAC;AAE9E,eAAO,MAAQ,SAAS,+BAAiB,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,aAAa,MAAM,KAAG,EAA0C,CAAC;AAE1G;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,aAAa,MAAM,KAAG,MAA+C,CAAC;AAE/G;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AACD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AAED,eAAO,MAAM,oBAAoB,kBAAe,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,YAAY,EACxB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,UAAU,SAAK,EACf,cAAc,SAAK,GAClB,MAAM,CAIR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,YAAY,YAAY,KAAG,SAEnE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,QAAQ,SAAK,GACZ,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,CAE9E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,gBAC5B,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAGF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,gBACL,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAEF,CAAC;AACF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,QAAS,MAAM,OAAO,MAAM,QAAQ,MAAM,eAYvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,oBAEpC;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ1F;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,SAAS,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,aAAa,WAE5B"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAG9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,eAAO,MAAM,WAAW,+CAA+B,CAAC;AACxD,eAAO,MAAM,WAAW,kBAAqD,CAAC;AAE9E,eAAO,MAAQ,SAAS,+BAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,aAAa,MAAM,KAAG,EAA0C,CAAC;AAE1G;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,aAAa,MAAM,KAAG,MAA+C,CAAC;AAE/G;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AACD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AAED,eAAO,MAAM,oBAAoB,kBAAe,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,YAAY,EACxB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,UAAU,SAAK,EACf,cAAc,SAAK,GAClB,MAAM,CAIR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,YAAY,YAAY,KAAG,SAEnE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,QAAQ,SAAK,GACZ,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,CAE9E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,gBAC5B,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAGF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,gBACL,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAEF,CAAC;AACF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,QAAS,MAAM,OAAO,MAAM,QAAQ,MAAM,eAYvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,oBAEpC;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ1F;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,SAAS,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,aAAa,WAE5B"}
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.43",
4
+ "version": "4.1.45-beta.0",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "files": [
@@ -0,0 +1,74 @@
1
+ import axios from "axios";
2
+ import { AdapterOptions, AddressListAdapter } from "../types";
3
+ import { Logger } from "../../utils";
4
+
5
+ const { ACROSS_USER_AGENT = "across-protocol" } = process.env;
6
+
7
+ export abstract class AbstractAdapter implements AddressListAdapter {
8
+ readonly timeout: number;
9
+ readonly retries: number;
10
+ readonly throw: boolean;
11
+ readonly logger?: Logger;
12
+
13
+ constructor(
14
+ readonly name: string,
15
+ readonly path: string,
16
+ opts?: Omit<AdapterOptions, "name" | "path">
17
+ ) {
18
+ this.timeout = opts?.timeout ?? 2000;
19
+ this.retries = opts?.retries ?? 1;
20
+ this.throw = opts?.throwOnError ?? true;
21
+ this.logger = opts?.logger;
22
+ }
23
+
24
+ abstract update(logger?: Logger): Promise<string[]>;
25
+
26
+ protected sleep(ms: number): Promise<void> {
27
+ return new Promise((r) => setTimeout(r, ms));
28
+ }
29
+
30
+ protected async fetch(name: string, url: string, timeout = 2000, retries = 1): Promise<unknown> {
31
+ const args = {
32
+ headers: { "User-Agent": ACROSS_USER_AGENT },
33
+ timeout,
34
+ };
35
+
36
+ const errs: string[] = [];
37
+ let tries = 0;
38
+ do {
39
+ try {
40
+ return (await axios(url, args)).data;
41
+ } catch (err) {
42
+ const errMsg = axios.isAxiosError(err) || err instanceof Error ? err.message : "unknown error";
43
+ errs.push(errMsg);
44
+ if (++tries <= retries) await this.sleep(Math.pow(1.5, tries) * 1000); // simple backoff
45
+ }
46
+ } while (tries <= retries);
47
+
48
+ throw new Error(`${name} retrieval failure (${errs.join(", ")})`);
49
+ }
50
+
51
+ protected error(error: unknown): Promise<string[]> {
52
+ if (this.throw) {
53
+ throw error;
54
+ }
55
+
56
+ let reason: string;
57
+ if (error instanceof Error) {
58
+ reason = error.message;
59
+ } else {
60
+ reason = typeof error === "string" ? error : "unknown error";
61
+ }
62
+
63
+ const { name, path, timeout, retries } = this;
64
+ this.logger?.warn({
65
+ at: `${name}::update`,
66
+ message: `Failed to read addresses from ${name}.`,
67
+ reason,
68
+ path,
69
+ retries,
70
+ timeout,
71
+ });
72
+ return Promise.resolve([]);
73
+ }
74
+ }
@@ -1,7 +1,8 @@
1
1
  import { array, defaulted, string, type } from "superstruct";
2
- import { AddressListAdapter } from "../types";
3
- import { logError, Logger, fetch } from "./util";
2
+ import { AdapterOptions } from "../types";
3
+ import { AbstractAdapter } from "./abstract";
4
4
 
5
+ const DEFAULT_NAME = "bybit";
5
6
  const DEFAULT_URL = "https://hackscan.hackbounty.io/public/hack-address.json";
6
7
 
7
8
  // This type is a bit message and unweildy. Additional fields representing new chains may be added without notification.
@@ -13,18 +14,16 @@ const bybitResponse = type({
13
14
  }),
14
15
  });
15
16
 
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) {}
17
+ export class AddressList extends AbstractAdapter {
18
+ constructor(opts?: AdapterOptions) {
19
+ super(opts?.name ?? DEFAULT_NAME, opts?.path ?? DEFAULT_URL, opts);
20
+ }
22
21
 
23
- async update(logger?: Logger): Promise<string[]> {
24
- const response = await fetch(this.name, this.url, this.timeout, this.retries);
22
+ async update(): Promise<string[]> {
23
+ const response = await this.fetch(this.name, this.path, this.timeout, this.retries);
25
24
  if (!bybitResponse.is(response)) {
26
25
  // nb. don't log the response because it might be very large.
27
- return logError(this.name, "Failed to validate response", logger);
26
+ return this.error("Failed to validate response");
28
27
  }
29
28
 
30
29
  return [...response["0221"].eth, ...response["0221"].bsc, ...response["0221"].arbi];
@@ -1,16 +1,16 @@
1
1
  import { array, defaulted, string } from "superstruct";
2
- import { AddressListAdapter } from "../types";
3
- import { Logger, logError } from "./util";
2
+ import { AdapterOptions } from "../types";
3
+ import { AbstractAdapter } from "./abstract";
4
4
 
5
5
  const envConfig = defaulted(array(string()), []);
6
6
 
7
- export class AddressList implements AddressListAdapter {
8
- readonly name = "process.env";
9
-
10
- constructor(readonly envVar = "ACROSS_IGNORED_ADDRESSES") {}
7
+ export class AddressList extends AbstractAdapter {
8
+ constructor(opts?: AdapterOptions) {
9
+ super(opts?.name ?? "process.env", opts?.path ?? "ACROSS_IGNORED_ADDRESSES", opts);
10
+ }
11
11
 
12
- update(logger?: Logger): Promise<string[]> {
13
- const config = process.env[this.envVar];
12
+ update(): Promise<string[]> {
13
+ const config = process.env[this.path];
14
14
  if (!config) {
15
15
  return Promise.resolve([]);
16
16
  }
@@ -19,10 +19,10 @@ export class AddressList implements AddressListAdapter {
19
19
  try {
20
20
  addresses = JSON.parse(config);
21
21
  if (!envConfig.is(addresses)) {
22
- return logError(this.name, "Address format validation failure.", logger);
22
+ return this.error("Address format validation failure.");
23
23
  }
24
24
  } catch (err) {
25
- return logError(this.name, err, logger);
25
+ return this.error(err);
26
26
  }
27
27
 
28
28
  return Promise.resolve(addresses);
@@ -1,37 +1,36 @@
1
1
  import { readFile } from "node:fs/promises";
2
2
  import { array, defaulted, string } from "superstruct";
3
- import { AddressListAdapter } from "../types";
4
- import { Logger, logError } from "./util";
3
+ import { AdapterOptions } from "../types";
4
+ import { AbstractAdapter } from "./abstract";
5
5
 
6
6
  const fileConfig = defaulted(array(string()), []);
7
7
 
8
- export class AddressList implements AddressListAdapter {
9
- readonly name: string;
10
-
11
- constructor(readonly path = "./addresses.json") {
12
- this.name = `fs:${path}`;
8
+ export class AddressList extends AbstractAdapter {
9
+ constructor(opts?: AdapterOptions) {
10
+ const { path = "addresses.json" } = opts ?? {};
11
+ super(opts?.name ?? `fs:${path}`, path, opts);
13
12
  }
14
13
 
15
- async update(logger?: Logger): Promise<string[]> {
14
+ async update(): Promise<string[]> {
16
15
  let data: string;
17
16
  try {
18
17
  data = await readFile(this.path, { encoding: "utf8" });
19
18
  } catch (err) {
20
- return logError(this.name, err, logger);
19
+ return this.error(err);
21
20
  }
22
21
 
23
22
  if (!data) {
24
- return logError(this.name, `No addresses found in "${this.path}"`, logger);
23
+ return this.error("No addresses found");
25
24
  }
26
25
 
27
26
  let addresses: unknown;
28
27
  try {
29
28
  addresses = JSON.parse(data);
30
29
  if (!fileConfig.is(addresses)) {
31
- return logError(this.name, "Address format validation failure.", logger);
30
+ return this.error("Address format validation failure.");
32
31
  }
33
32
  } catch (err) {
34
- return logError(this.name, err, logger);
33
+ return this.error(err);
35
34
  }
36
35
 
37
36
  return Promise.resolve(addresses);
@@ -1,25 +1,26 @@
1
1
  import { array, string } from "superstruct";
2
- import { AddressListAdapter } from "../types";
3
- import { logError, Logger, fetch } from "./util";
2
+ import { AdapterOptions } from "../types";
3
+ import { AbstractAdapter } from "./abstract";
4
4
 
5
5
  const RESPONSE_TYPE = array(string());
6
6
  const DEFAULT_NAME = "Risk Labs";
7
7
  const DEFAULT_URL = "https://blacklist.risklabs.foundation/api/blacklist";
8
8
 
9
- export class AddressList implements AddressListAdapter {
10
- readonly timeout = 2000; // ms
11
- readonly retries = 1;
12
-
13
- constructor(
14
- readonly name = DEFAULT_NAME,
15
- readonly url = DEFAULT_URL
16
- ) {}
9
+ export class AddressList extends AbstractAdapter {
10
+ constructor(opts?: AdapterOptions) {
11
+ super(opts?.name ?? DEFAULT_NAME, opts?.path ?? DEFAULT_URL, opts);
12
+ }
17
13
 
18
- async update(logger?: Logger): Promise<string[]> {
19
- const response = await fetch(this.name, this.url, this.timeout, this.retries);
14
+ async update(): Promise<string[]> {
15
+ let response: unknown;
16
+ try {
17
+ response = await this.fetch(this.name, this.path, this.timeout, this.retries);
18
+ } catch (err) {
19
+ return this.error(err);
20
+ }
20
21
 
21
22
  if (!RESPONSE_TYPE.is(response)) {
22
- return logError(this.name, "Failed to validate response", logger);
23
+ return this.error("Failed to validate response");
23
24
  }
24
25
 
25
26
  return response;
@@ -25,7 +25,7 @@ export class AddressAggregator {
25
25
 
26
26
  const allAddresses = await mapAsync(this.adapters, async (adapter) => {
27
27
  const invalidAddresses: string[] = [];
28
- const addresses = (await adapter.update(this.logger))
28
+ const addresses = (await adapter.update())
29
29
  .map((address) => {
30
30
  try {
31
31
  return ethersUtils.getAddress(address.toLowerCase());
@@ -66,7 +66,7 @@ export class AddressAggregator {
66
66
  }
67
67
 
68
68
  async function run(): Promise<number> {
69
- const addressList = new AddressAggregator([new adapters.risklabs.AddressList()]);
69
+ const addressList = new AddressAggregator([new adapters.risklabs.AddressList({ throwOnError: true })]);
70
70
 
71
71
  const addresses = await addressList.update();
72
72
  console.log(`Retrieved ${addresses.size} addresses: ${JSON.stringify(Array.from(addresses), null, 2)}`);
@@ -1,8 +1,17 @@
1
1
  import { Logger } from "../utils";
2
2
 
3
+ export type AdapterOptions = {
4
+ name?: string;
5
+ path?: string;
6
+ retries?: number;
7
+ timeout?: number;
8
+ throwOnError?: boolean;
9
+ logger?: Logger;
10
+ };
11
+
3
12
  export interface AddressListAdapter {
4
13
  readonly name: string;
5
- update(logger?: Logger): Promise<string[]>;
14
+ update(): Promise<string[]>;
6
15
  }
7
16
 
8
17
  export const INVALID_ADDRESS = "";
@@ -42,6 +42,7 @@ import {
42
42
  chainIsEvm,
43
43
  isValidEvmAddress,
44
44
  duplicateEvent,
45
+ invalidOutputToken,
45
46
  } from "../../utils";
46
47
  import winston from "winston";
47
48
  import {
@@ -372,7 +373,8 @@ export class BundleDataClient {
372
373
  if (
373
374
  fill.blockNumber < blockRanges[chainIndex][0] ||
374
375
  fill.blockNumber > blockRanges[chainIndex][1] ||
375
- isZeroValueFillOrSlowFillRequest(fill)
376
+ isZeroValueFillOrSlowFillRequest(fill) ||
377
+ invalidOutputToken(fill)
376
378
  ) {
377
379
  return false;
378
380
  }
@@ -405,11 +407,12 @@ export class BundleDataClient {
405
407
  return;
406
408
  }
407
409
  const { chainToSendRefundTo, repaymentToken } = getRefundInformationFromFill(
408
- fill,
409
- this.clients.hubPoolClient,
410
- blockRanges,
411
- this.chainIdListForBundleEvaluationBlockNumbers,
412
- matchingDeposit.fromLiteChain
410
+ {
411
+ ...fill,
412
+ fromLiteChain: matchingDeposit.fromLiteChain,
413
+ quoteBlockNumber: matchingDeposit.quoteBlockNumber,
414
+ },
415
+ this.clients.hubPoolClient
413
416
  );
414
417
  // Assume that lp fees are 0 for the sake of speed. In the future we could batch compute
415
418
  // these or make hardcoded assumptions based on the origin-repayment chain direction. This might result
@@ -885,7 +888,10 @@ export class BundleDataClient {
885
888
  // tokens to the filler. We can't remove non-empty message deposit here in case there is a slow fill
886
889
  // request for the deposit, we'd want to see the fill took place.
887
890
  .filter(
888
- (fill) => fill.blockNumber <= destinationChainBlockRange[1] && !isZeroValueFillOrSlowFillRequest(fill)
891
+ (fill) =>
892
+ fill.blockNumber <= destinationChainBlockRange[1] &&
893
+ !isZeroValueFillOrSlowFillRequest(fill) &&
894
+ !invalidOutputToken(fill)
889
895
  ),
890
896
  async (fill) => {
891
897
  fillCounter++;
@@ -1054,7 +1060,9 @@ export class BundleDataClient {
1054
1060
  .getSlowFillRequestsForOriginChain(originChainId)
1055
1061
  .filter(
1056
1062
  (request) =>
1057
- request.blockNumber <= destinationChainBlockRange[1] && !isZeroValueFillOrSlowFillRequest(request)
1063
+ request.blockNumber <= destinationChainBlockRange[1] &&
1064
+ !isZeroValueFillOrSlowFillRequest(request) &&
1065
+ !invalidOutputToken(request)
1058
1066
  ),
1059
1067
  async (slowFillRequest: SlowFillRequestWithBlock) => {
1060
1068
  const relayDataHash = getRelayEventKey(slowFillRequest);
@@ -1376,11 +1384,12 @@ export class BundleDataClient {
1376
1384
  const matchedDeposit = deposits[0];
1377
1385
  assert(isDefined(matchedDeposit), "Deposit should exist in relay hash dictionary.");
1378
1386
  const { chainToSendRefundTo: paymentChainId } = getRefundInformationFromFill(
1379
- fill,
1380
- this.clients.hubPoolClient,
1381
- blockRangesForChains,
1382
- chainIds,
1383
- matchedDeposit.fromLiteChain
1387
+ {
1388
+ ...fill,
1389
+ fromLiteChain: matchedDeposit.fromLiteChain,
1390
+ quoteBlockNumber: matchedDeposit.quoteBlockNumber,
1391
+ },
1392
+ this.clients.hubPoolClient
1384
1393
  );
1385
1394
  return {
1386
1395
  ...fill,
@@ -1422,11 +1431,12 @@ export class BundleDataClient {
1422
1431
  const associatedDeposit = deposits[0];
1423
1432
  assert(isDefined(associatedDeposit), "Deposit should exist in relay hash dictionary.");
1424
1433
  const { chainToSendRefundTo, repaymentToken } = getRefundInformationFromFill(
1425
- fill,
1426
- this.clients.hubPoolClient,
1427
- blockRangesForChains,
1428
- chainIds,
1429
- associatedDeposit.fromLiteChain
1434
+ {
1435
+ ...fill,
1436
+ fromLiteChain: associatedDeposit.fromLiteChain,
1437
+ quoteBlockNumber: associatedDeposit.quoteBlockNumber,
1438
+ },
1439
+ this.clients.hubPoolClient
1430
1440
  );
1431
1441
  updateBundleFillsV3(bundleFillsV3, fill, realizedLpFeePct, chainToSendRefundTo, repaymentToken, fill.relayer);
1432
1442
  });
@@ -146,6 +146,13 @@ export function _buildPoolRebalanceRoot(
146
146
  const repaymentChainId = Number(_repaymentChainId);
147
147
  Object.entries(fillsForChain).forEach(
148
148
  ([l2TokenAddress, { realizedLpFees: totalRealizedLpFee, totalRefundAmount }]) => {
149
+ // If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
150
+ // there are no relevant L1 running balances.
151
+ if (
152
+ !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(l2TokenAddress, repaymentChainId, mainnetBundleEndBlock)
153
+ ) {
154
+ return;
155
+ }
149
156
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
150
157
  l2TokenAddress,
151
158
  repaymentChainId,
@@ -215,6 +222,17 @@ export function _buildPoolRebalanceRoot(
215
222
  Object.entries(bundleV3Deposits).forEach(([, depositsForChain]) => {
216
223
  Object.entries(depositsForChain).forEach(([, deposits]) => {
217
224
  deposits.forEach((deposit) => {
225
+ // If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
226
+ // there are no relevant L1 running balances.
227
+ if (
228
+ !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
229
+ deposit.inputToken,
230
+ deposit.originChainId,
231
+ mainnetBundleEndBlock
232
+ )
233
+ ) {
234
+ return;
235
+ }
218
236
  updateRunningBalanceForDeposit(runningBalances, clients.hubPoolClient, deposit, deposit.inputAmount.mul(-1));
219
237
  });
220
238
  });
@@ -229,6 +247,17 @@ export function _buildPoolRebalanceRoot(
229
247
  const originChainId = Number(_originChainId);
230
248
  Object.entries(depositsForChain).forEach(([inputToken, deposits]) => {
231
249
  deposits.forEach((deposit) => {
250
+ // If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
251
+ // there are no relevant L1 running balances.
252
+ if (
253
+ !clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
254
+ deposit.inputToken,
255
+ deposit.originChainId,
256
+ mainnetBundleEndBlock
257
+ )
258
+ ) {
259
+ return;
260
+ }
232
261
  const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
233
262
  inputToken,
234
263
  originChainId,