@debridge-finance/borderless-validation-sdk 0.0.1 → 0.0.2

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 (286) hide show
  1. package/README.md +164 -0
  2. package/dist/cjs/helpers/address.js +53 -18
  3. package/dist/cjs/helpers/address.js.map +1 -1
  4. package/dist/cjs/helpers/evm-action.js +3 -3
  5. package/dist/cjs/helpers/evm-action.js.map +1 -1
  6. package/dist/cjs/helpers/evm-dln-hook-pack.js +87 -0
  7. package/dist/cjs/helpers/evm-dln-hook-pack.js.map +1 -0
  8. package/dist/cjs/helpers/evm-gas-compensation-tx.js +102 -0
  9. package/dist/cjs/helpers/evm-gas-compensation-tx.js.map +1 -0
  10. package/dist/cjs/helpers/evm-intent-id.js +27 -13
  11. package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
  12. package/dist/cjs/helpers/evm-trade-amounts.js +36 -1
  13. package/dist/cjs/helpers/evm-trade-amounts.js.map +1 -1
  14. package/dist/cjs/helpers/gas-compensation.js +36 -0
  15. package/dist/cjs/helpers/gas-compensation.js.map +1 -0
  16. package/dist/cjs/helpers/hex.js +24 -0
  17. package/dist/cjs/helpers/hex.js.map +1 -0
  18. package/dist/cjs/helpers/placeholder.js +174 -0
  19. package/dist/cjs/helpers/placeholder.js.map +1 -0
  20. package/dist/cjs/helpers/sets.js +13 -0
  21. package/dist/cjs/helpers/sets.js.map +1 -0
  22. package/dist/cjs/types/enums.js +32 -2
  23. package/dist/cjs/types/enums.js.map +1 -1
  24. package/dist/cjs/types/request.js +36 -3
  25. package/dist/cjs/types/request.js.map +1 -1
  26. package/dist/cjs/types/response.js +125 -5
  27. package/dist/cjs/types/response.js.map +1 -1
  28. package/dist/cjs/types/validation.js +81 -10
  29. package/dist/cjs/types/validation.js.map +1 -1
  30. package/dist/cjs/validations/compensation-hook.js +203 -0
  31. package/dist/cjs/validations/compensation-hook.js.map +1 -0
  32. package/dist/cjs/validations/evm-caveats.js +4 -14
  33. package/dist/cjs/validations/evm-caveats.js.map +1 -1
  34. package/dist/cjs/validations/evm-op-budget.js +13 -10
  35. package/dist/cjs/validations/evm-op-budget.js.map +1 -1
  36. package/dist/cjs/validations/evm-op-hook.js +410 -3
  37. package/dist/cjs/validations/evm-op-hook.js.map +1 -1
  38. package/dist/cjs/validations/evm-op-wrap.js +10 -7
  39. package/dist/cjs/validations/evm-op-wrap.js.map +1 -1
  40. package/dist/cjs/validations/evm-required-actions.js +7 -9
  41. package/dist/cjs/validations/evm-required-actions.js.map +1 -1
  42. package/dist/cjs/validations/evm-sign712-metamask.js +17 -94
  43. package/dist/cjs/validations/evm-sign712-metamask.js.map +1 -1
  44. package/dist/cjs/validations/evm-sign712-shared.js +116 -0
  45. package/dist/cjs/validations/evm-sign712-shared.js.map +1 -0
  46. package/dist/cjs/validations/evm-sign7702.js +34 -22
  47. package/dist/cjs/validations/evm-sign7702.js.map +1 -1
  48. package/dist/cjs/validations/hooks-common.js +252 -37
  49. package/dist/cjs/validations/hooks-common.js.map +1 -1
  50. package/dist/cjs/validations/intent-destinations.js +197 -0
  51. package/dist/cjs/validations/intent-destinations.js.map +1 -0
  52. package/dist/cjs/validations/intent-tokens.js +347 -0
  53. package/dist/cjs/validations/intent-tokens.js.map +1 -0
  54. package/dist/cjs/validations/intent.js +288 -0
  55. package/dist/cjs/validations/intent.js.map +1 -0
  56. package/dist/cjs/validations/required-actions.js +7 -7
  57. package/dist/cjs/validations/required-actions.js.map +1 -1
  58. package/dist/cjs/validations/solana-hook.js +33 -22
  59. package/dist/cjs/validations/solana-hook.js.map +1 -1
  60. package/dist/cjs/validations/solana-op-budget.js +56 -18
  61. package/dist/cjs/validations/solana-op-budget.js.map +1 -1
  62. package/dist/cjs/validations/solana-op-wrap.js +46 -13
  63. package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
  64. package/dist/cjs/validations/solana-required-actions.js +3 -3
  65. package/dist/cjs/validations/solana-required-actions.js.map +1 -1
  66. package/dist/cjs/validations/solana-transaction.js +5 -5
  67. package/dist/cjs/validations/solana-transaction.js.map +1 -1
  68. package/dist/cjs/validations/trade-grouping.js +139 -1
  69. package/dist/cjs/validations/trade-grouping.js.map +1 -1
  70. package/dist/cjs/validations/trades.js +168 -40
  71. package/dist/cjs/validations/trades.js.map +1 -1
  72. package/dist/cjs/validator.js +11 -16
  73. package/dist/cjs/validator.js.map +1 -1
  74. package/dist/cjs/whitelists/environment-config.js +47 -28
  75. package/dist/cjs/whitelists/environment-config.js.map +1 -1
  76. package/dist/cjs/whitelists/evm/caveat-enforcers.js +21 -5
  77. package/dist/cjs/whitelists/evm/caveat-enforcers.js.map +1 -1
  78. package/dist/cjs/whitelists/evm/delegation-manager.js +7 -2
  79. package/dist/cjs/whitelists/evm/delegation-manager.js.map +1 -1
  80. package/dist/cjs/whitelists/evm/eip7702-delegation.js +7 -2
  81. package/dist/cjs/whitelists/evm/eip7702-delegation.js.map +1 -1
  82. package/dist/cjs/whitelists/evm/index.js +14 -1
  83. package/dist/cjs/whitelists/evm/index.js.map +1 -1
  84. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js +16 -0
  85. package/dist/cjs/whitelists/evm/metamask-delegation-chains.js.map +1 -0
  86. package/dist/cjs/whitelists/evm/permit2.js +16 -12
  87. package/dist/cjs/whitelists/evm/permit2.js.map +1 -1
  88. package/dist/cjs/whitelists/evm/weth.js +16 -5
  89. package/dist/cjs/whitelists/evm/weth.js.map +1 -1
  90. package/dist/cjs/whitelists/solana/intent-signature.js +0 -1
  91. package/dist/cjs/whitelists/solana/intent-signature.js.map +1 -1
  92. package/dist/cjs/whitelists/subscription-to-chain-id.js +10 -0
  93. package/dist/cjs/whitelists/subscription-to-chain-id.js.map +1 -1
  94. package/dist/cjs/whitelists/types.js +13 -3
  95. package/dist/cjs/whitelists/types.js.map +1 -1
  96. package/dist/esm/helpers/address.js +48 -17
  97. package/dist/esm/helpers/address.js.map +1 -1
  98. package/dist/esm/helpers/evm-action.js +3 -3
  99. package/dist/esm/helpers/evm-action.js.map +1 -1
  100. package/dist/esm/helpers/evm-dln-hook-pack.js +82 -0
  101. package/dist/esm/helpers/evm-dln-hook-pack.js.map +1 -0
  102. package/dist/esm/helpers/evm-gas-compensation-tx.js +99 -0
  103. package/dist/esm/helpers/evm-gas-compensation-tx.js.map +1 -0
  104. package/dist/esm/helpers/evm-intent-id.js +27 -13
  105. package/dist/esm/helpers/evm-intent-id.js.map +1 -1
  106. package/dist/esm/helpers/evm-trade-amounts.js +36 -1
  107. package/dist/esm/helpers/evm-trade-amounts.js.map +1 -1
  108. package/dist/esm/helpers/gas-compensation.js +33 -0
  109. package/dist/esm/helpers/gas-compensation.js.map +1 -0
  110. package/dist/esm/helpers/hex.js +20 -0
  111. package/dist/esm/helpers/hex.js.map +1 -0
  112. package/dist/esm/helpers/placeholder.js +168 -0
  113. package/dist/esm/helpers/placeholder.js.map +1 -0
  114. package/dist/esm/helpers/sets.js +10 -0
  115. package/dist/esm/helpers/sets.js.map +1 -0
  116. package/dist/esm/types/enums.js +31 -1
  117. package/dist/esm/types/enums.js.map +1 -1
  118. package/dist/esm/types/request.js +37 -4
  119. package/dist/esm/types/request.js.map +1 -1
  120. package/dist/esm/types/response.js +124 -4
  121. package/dist/esm/types/response.js.map +1 -1
  122. package/dist/esm/types/validation.js +81 -10
  123. package/dist/esm/types/validation.js.map +1 -1
  124. package/dist/esm/validations/compensation-hook.js +200 -0
  125. package/dist/esm/validations/compensation-hook.js.map +1 -0
  126. package/dist/esm/validations/evm-caveats.js +4 -14
  127. package/dist/esm/validations/evm-caveats.js.map +1 -1
  128. package/dist/esm/validations/evm-op-budget.js +13 -10
  129. package/dist/esm/validations/evm-op-budget.js.map +1 -1
  130. package/dist/esm/validations/evm-op-hook.js +409 -2
  131. package/dist/esm/validations/evm-op-hook.js.map +1 -1
  132. package/dist/esm/validations/evm-op-wrap.js +10 -7
  133. package/dist/esm/validations/evm-op-wrap.js.map +1 -1
  134. package/dist/esm/validations/evm-required-actions.js +7 -9
  135. package/dist/esm/validations/evm-required-actions.js.map +1 -1
  136. package/dist/esm/validations/evm-sign712-metamask.js +17 -94
  137. package/dist/esm/validations/evm-sign712-metamask.js.map +1 -1
  138. package/dist/esm/validations/evm-sign712-shared.js +110 -0
  139. package/dist/esm/validations/evm-sign712-shared.js.map +1 -0
  140. package/dist/esm/validations/evm-sign7702.js +33 -22
  141. package/dist/esm/validations/evm-sign7702.js.map +1 -1
  142. package/dist/esm/validations/hooks-common.js +251 -38
  143. package/dist/esm/validations/hooks-common.js.map +1 -1
  144. package/dist/esm/validations/intent-destinations.js +194 -0
  145. package/dist/esm/validations/intent-destinations.js.map +1 -0
  146. package/dist/esm/validations/intent-tokens.js +344 -0
  147. package/dist/esm/validations/intent-tokens.js.map +1 -0
  148. package/dist/esm/validations/intent.js +285 -0
  149. package/dist/esm/validations/intent.js.map +1 -0
  150. package/dist/esm/validations/required-actions.js +7 -7
  151. package/dist/esm/validations/required-actions.js.map +1 -1
  152. package/dist/esm/validations/solana-hook.js +35 -24
  153. package/dist/esm/validations/solana-hook.js.map +1 -1
  154. package/dist/esm/validations/solana-op-budget.js +56 -18
  155. package/dist/esm/validations/solana-op-budget.js.map +1 -1
  156. package/dist/esm/validations/solana-op-wrap.js +47 -14
  157. package/dist/esm/validations/solana-op-wrap.js.map +1 -1
  158. package/dist/esm/validations/solana-required-actions.js +3 -3
  159. package/dist/esm/validations/solana-required-actions.js.map +1 -1
  160. package/dist/esm/validations/solana-transaction.js +7 -7
  161. package/dist/esm/validations/solana-transaction.js.map +1 -1
  162. package/dist/esm/validations/trade-grouping.js +139 -1
  163. package/dist/esm/validations/trade-grouping.js.map +1 -1
  164. package/dist/esm/validations/trades.js +169 -41
  165. package/dist/esm/validations/trades.js.map +1 -1
  166. package/dist/esm/validator.js +11 -16
  167. package/dist/esm/validator.js.map +1 -1
  168. package/dist/esm/whitelists/environment-config.js +47 -28
  169. package/dist/esm/whitelists/environment-config.js.map +1 -1
  170. package/dist/esm/whitelists/evm/caveat-enforcers.js +20 -4
  171. package/dist/esm/whitelists/evm/caveat-enforcers.js.map +1 -1
  172. package/dist/esm/whitelists/evm/delegation-manager.js +6 -1
  173. package/dist/esm/whitelists/evm/delegation-manager.js.map +1 -1
  174. package/dist/esm/whitelists/evm/eip7702-delegation.js +6 -1
  175. package/dist/esm/whitelists/evm/eip7702-delegation.js.map +1 -1
  176. package/dist/esm/whitelists/evm/index.js +4 -4
  177. package/dist/esm/whitelists/evm/index.js.map +1 -1
  178. package/dist/esm/whitelists/evm/metamask-delegation-chains.js +13 -0
  179. package/dist/esm/whitelists/evm/metamask-delegation-chains.js.map +1 -0
  180. package/dist/esm/whitelists/evm/permit2.js +9 -5
  181. package/dist/esm/whitelists/evm/permit2.js.map +1 -1
  182. package/dist/esm/whitelists/evm/weth.js +16 -5
  183. package/dist/esm/whitelists/evm/weth.js.map +1 -1
  184. package/dist/esm/whitelists/solana/intent-signature.js +0 -1
  185. package/dist/esm/whitelists/solana/intent-signature.js.map +1 -1
  186. package/dist/esm/whitelists/subscription-to-chain-id.js +9 -0
  187. package/dist/esm/whitelists/subscription-to-chain-id.js.map +1 -1
  188. package/dist/esm/whitelists/types.js +14 -5
  189. package/dist/esm/whitelists/types.js.map +1 -1
  190. package/dist/types/helpers/address.d.ts +7 -7
  191. package/dist/types/helpers/address.d.ts.map +1 -1
  192. package/dist/types/helpers/evm-dln-hook-pack.d.ts +19 -0
  193. package/dist/types/helpers/evm-dln-hook-pack.d.ts.map +1 -0
  194. package/dist/types/helpers/evm-gas-compensation-tx.d.ts +13 -0
  195. package/dist/types/helpers/evm-gas-compensation-tx.d.ts.map +1 -0
  196. package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
  197. package/dist/types/helpers/evm-trade-amounts.d.ts +2 -2
  198. package/dist/types/helpers/evm-trade-amounts.d.ts.map +1 -1
  199. package/dist/types/helpers/gas-compensation.d.ts +10 -0
  200. package/dist/types/helpers/gas-compensation.d.ts.map +1 -0
  201. package/dist/types/helpers/hex.d.ts +3 -0
  202. package/dist/types/helpers/hex.d.ts.map +1 -0
  203. package/dist/types/helpers/placeholder.d.ts +41 -0
  204. package/dist/types/helpers/placeholder.d.ts.map +1 -0
  205. package/dist/types/helpers/sets.d.ts +2 -0
  206. package/dist/types/helpers/sets.d.ts.map +1 -0
  207. package/dist/types/types/enums.d.ts +24 -1
  208. package/dist/types/types/enums.d.ts.map +1 -1
  209. package/dist/types/types/request.d.ts +21 -11
  210. package/dist/types/types/request.d.ts.map +1 -1
  211. package/dist/types/types/response.d.ts +1015 -17
  212. package/dist/types/types/response.d.ts.map +1 -1
  213. package/dist/types/types/validation.d.ts +73 -11
  214. package/dist/types/types/validation.d.ts.map +1 -1
  215. package/dist/types/validations/compensation-hook.d.ts +3 -0
  216. package/dist/types/validations/compensation-hook.d.ts.map +1 -0
  217. package/dist/types/validations/evm-caveats.d.ts.map +1 -1
  218. package/dist/types/validations/evm-op-budget.d.ts +2 -2
  219. package/dist/types/validations/evm-op-budget.d.ts.map +1 -1
  220. package/dist/types/validations/evm-op-hook.d.ts +4 -2
  221. package/dist/types/validations/evm-op-hook.d.ts.map +1 -1
  222. package/dist/types/validations/evm-op-wrap.d.ts +2 -2
  223. package/dist/types/validations/evm-op-wrap.d.ts.map +1 -1
  224. package/dist/types/validations/evm-required-actions.d.ts +2 -2
  225. package/dist/types/validations/evm-required-actions.d.ts.map +1 -1
  226. package/dist/types/validations/evm-sign712-metamask.d.ts.map +1 -1
  227. package/dist/types/validations/evm-sign712-shared.d.ts +7 -0
  228. package/dist/types/validations/evm-sign712-shared.d.ts.map +1 -0
  229. package/dist/types/validations/evm-sign7702.d.ts +2 -1
  230. package/dist/types/validations/evm-sign7702.d.ts.map +1 -1
  231. package/dist/types/validations/hooks-common.d.ts +1 -0
  232. package/dist/types/validations/hooks-common.d.ts.map +1 -1
  233. package/dist/types/validations/intent-destinations.d.ts +4 -0
  234. package/dist/types/validations/intent-destinations.d.ts.map +1 -0
  235. package/dist/types/validations/intent-tokens.d.ts +4 -0
  236. package/dist/types/validations/intent-tokens.d.ts.map +1 -0
  237. package/dist/types/validations/intent.d.ts +5 -0
  238. package/dist/types/validations/intent.d.ts.map +1 -0
  239. package/dist/types/validations/required-actions.d.ts +2 -1
  240. package/dist/types/validations/required-actions.d.ts.map +1 -1
  241. package/dist/types/validations/solana-hook.d.ts +4 -2
  242. package/dist/types/validations/solana-hook.d.ts.map +1 -1
  243. package/dist/types/validations/solana-op-budget.d.ts +2 -2
  244. package/dist/types/validations/solana-op-budget.d.ts.map +1 -1
  245. package/dist/types/validations/solana-op-wrap.d.ts +2 -2
  246. package/dist/types/validations/solana-op-wrap.d.ts.map +1 -1
  247. package/dist/types/validations/solana-required-actions.d.ts +2 -2
  248. package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
  249. package/dist/types/validations/solana-transaction.d.ts +3 -3
  250. package/dist/types/validations/solana-transaction.d.ts.map +1 -1
  251. package/dist/types/validations/trade-grouping.d.ts +6 -2
  252. package/dist/types/validations/trade-grouping.d.ts.map +1 -1
  253. package/dist/types/validations/trades.d.ts.map +1 -1
  254. package/dist/types/validator.d.ts.map +1 -1
  255. package/dist/types/whitelists/environment-config.d.ts.map +1 -1
  256. package/dist/types/whitelists/evm/caveat-enforcers.d.ts +8 -0
  257. package/dist/types/whitelists/evm/caveat-enforcers.d.ts.map +1 -1
  258. package/dist/types/whitelists/evm/delegation-manager.d.ts +2 -0
  259. package/dist/types/whitelists/evm/delegation-manager.d.ts.map +1 -1
  260. package/dist/types/whitelists/evm/eip7702-delegation.d.ts +2 -0
  261. package/dist/types/whitelists/evm/eip7702-delegation.d.ts.map +1 -1
  262. package/dist/types/whitelists/evm/index.d.ts +4 -4
  263. package/dist/types/whitelists/evm/index.d.ts.map +1 -1
  264. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts +3 -0
  265. package/dist/types/whitelists/evm/metamask-delegation-chains.d.ts.map +1 -0
  266. package/dist/types/whitelists/evm/permit2.d.ts +1 -0
  267. package/dist/types/whitelists/evm/permit2.d.ts.map +1 -1
  268. package/dist/types/whitelists/evm/weth.d.ts.map +1 -1
  269. package/dist/types/whitelists/solana/intent-signature.d.ts.map +1 -1
  270. package/dist/types/whitelists/subscription-to-chain-id.d.ts +1 -0
  271. package/dist/types/whitelists/subscription-to-chain-id.d.ts.map +1 -1
  272. package/dist/types/whitelists/types.d.ts +1 -1
  273. package/dist/types/whitelists/types.d.ts.map +1 -1
  274. package/package.json +4 -3
  275. package/dist/cjs/helpers/constants.js +0 -6
  276. package/dist/cjs/helpers/constants.js.map +0 -1
  277. package/dist/cjs/validations/evm-op-gas-compensation.js +0 -152
  278. package/dist/cjs/validations/evm-op-gas-compensation.js.map +0 -1
  279. package/dist/esm/helpers/constants.js +0 -3
  280. package/dist/esm/helpers/constants.js.map +0 -1
  281. package/dist/esm/validations/evm-op-gas-compensation.js +0 -149
  282. package/dist/esm/validations/evm-op-gas-compensation.js.map +0 -1
  283. package/dist/types/helpers/constants.d.ts +0 -2
  284. package/dist/types/helpers/constants.d.ts.map +0 -1
  285. package/dist/types/validations/evm-op-gas-compensation.d.ts +0 -3
  286. package/dist/types/validations/evm-op-gas-compensation.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"weth.d.ts","sourceRoot":"","sources":["../../../../src/whitelists/evm/weth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,cAAc,EAAE,eAanB,CAAC"}
1
+ {"version":3,"file":"weth.d.ts","sourceRoot":"","sources":["../../../../src/whitelists/evm/weth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,eAAO,MAAM,cAAc,EAAE,eAuBnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"intent-signature.d.ts","sourceRoot":"","sources":["../../../../src/whitelists/solana/intent-signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAerD,MAAM,MAAM,qBAAqB,GAAG;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,qBAAqB,CAWxF"}
1
+ {"version":3,"file":"intent-signature.d.ts","sourceRoot":"","sources":["../../../../src/whitelists/solana/intent-signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAcrD,MAAM,MAAM,qBAAqB,GAAG;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,UAAU,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,qBAAqB,CAWxF"}
@@ -1,4 +1,5 @@
1
1
  import { ChainId, SubscriptionId } from "../types/enums";
2
2
  export declare const SUBSCRIPTION_TO_CHAIN_ID: Record<SubscriptionId, ChainId>;
3
3
  export declare function resolveChainId(subscriptionId: number): ChainId | undefined;
4
+ export declare function resolveChainIdOrSelf(subscriptionId: number): ChainId;
4
5
  //# sourceMappingURL=subscription-to-chain-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscription-to-chain-id.d.ts","sourceRoot":"","sources":["../../../src/whitelists/subscription-to-chain-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEzD,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAyB3D,CAAC;AAEX,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAG1E"}
1
+ {"version":3,"file":"subscription-to-chain-id.d.ts","sourceRoot":"","sources":["../../../src/whitelists/subscription-to-chain-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEzD,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAyB3D,CAAC;AAEX,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAG1E;AAQD,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAEpE"}
@@ -3,6 +3,7 @@ import { IntentSignatureConfig } from "./solana/intent-signature";
3
3
  export type ChainAddressMap = {
4
4
  [chainId in ChainId]?: readonly string[];
5
5
  };
6
+ export declare function buildSameAddressMap(chains: readonly ChainId[], address: string): ChainAddressMap;
6
7
  export type EnvironmentConfig = {
7
8
  readonly allowanceHolderContracts: ChainAddressMap;
8
9
  readonly intentManagerContracts: ChainAddressMap;
@@ -12,7 +13,6 @@ export type EnvironmentConfig = {
12
13
  readonly solanaSignTransactionAllowedPrograms: ReadonlySet<string>;
13
14
  readonly solanaExpectedStatePdaBase58: string;
14
15
  readonly solanaSignatureConfig: IntentSignatureConfig;
15
- readonly allowedUrls: readonly string[];
16
16
  };
17
17
  export declare function isWhitelisted(map: ChainAddressMap, chainId: ChainId, address: string): boolean;
18
18
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/whitelists/types.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,MAAM,MAAM,eAAe,GAAG;KAAG,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE;CAAE,CAAC;AAI3E,MAAM,MAAM,iBAAiB,GAAG;IAE5B,QAAQ,CAAC,wBAAwB,EAAE,eAAe,CAAC;IACnD,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC;IAGjD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,gCAAgC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,oCAAoC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnE,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAG9C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGtD,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAC3C,CAAC;AAEF,wBAAgB,aAAa,CACzB,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAChB,OAAO,CAyBT"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/whitelists/types.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,MAAM,MAAM,eAAe,GAAG;KAAG,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE;CAAE,CAAC;AAI3E,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,OAAO,EAAE,MAAM,GAChB,eAAe,CAMjB;AAID,MAAM,MAAM,iBAAiB,GAAG;IAE5B,QAAQ,CAAC,wBAAwB,EAAE,eAAe,CAAC;IACnD,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC;IAGjD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,gCAAgC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,oCAAoC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnE,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAG9C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;CACzD,CAAC;AAEF,wBAAgB,aAAa,CACzB,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,GAChB,OAAO,CAyBT"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@debridge-finance/borderless-validation-sdk",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Validation SDK for deBridge borderless intents API responses",
5
5
  "author": "deBridge",
6
- "license": "MIT",
6
+ "license": "BUSL-1.1",
7
7
  "main": "./dist/cjs/index.js",
8
8
  "module": "./dist/esm/index.js",
9
9
  "browser": "./dist/esm/index.js",
@@ -29,7 +29,8 @@
29
29
  "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run build:fixup",
30
30
  "test": "jest --verbose",
31
31
  "coverage": "jest --verbose --coverage",
32
- "test:e2e": "jest --config e2e/jest.config.js --verbose"
32
+ "test:e2e": "jest --config e2e/jest.config.js --verbose",
33
+ "coverage:e2e": "jest --config e2e/jest.config.js --verbose --coverage"
33
34
  },
34
35
  "publishConfig": {
35
36
  "access": "restricted"
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_U64 = void 0;
4
- // Solana max u64 value (used for "unlimited" approve amounts)
5
- exports.MAX_U64 = (1n << 64n) - 1n;
6
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":";;;AAAA,8DAA8D;AACjD,QAAA,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -1,152 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateGasCompensationOperations = validateGasCompensationOperations;
4
- const types_1 = require("../types");
5
- const evm_calldata_1 = require("../helpers/evm-calldata");
6
- const evm_token_1 = require("../helpers/evm-token");
7
- const address_1 = require("../helpers/address");
8
- const evm_action_1 = require("../helpers/evm-action");
9
- function validateGasCompensationOperations(actions, basePath, request, realChainId) {
10
- const violations = [];
11
- const gasCompensationGroups = groupGasCompensationInfo(request);
12
- for (let i = 0; i < actions.length; i++) {
13
- const action = actions[i];
14
- if (!action.actions.includes(types_1.EvmActionOperation.GasCompensation)) {
15
- continue;
16
- }
17
- const actionPath = `${basePath}.requiredActions[${i}]`;
18
- const txCalls = (0, evm_action_1.getTransactionCalls)(action);
19
- // CRITICAL: transactionCalls must be present
20
- if (txCalls.length === 0) {
21
- violations.push({
22
- code: types_1.ViolationCode.GasCompensationTransactionCallsMissing,
23
- message: `GasCompensation must have at least one transactionCall`,
24
- path: `${actionPath}.details.transactionCalls`,
25
- actual: [],
26
- });
27
- continue;
28
- }
29
- // CRITICAL: GasCompensation must have exactly one transactionCall
30
- if (txCalls.length > 1) {
31
- violations.push({
32
- code: types_1.ViolationCode.GasCompensationTooManyTransactionCalls,
33
- message: `GasCompensation must have exactly 1 transactionCall`,
34
- path: `${actionPath}.details.transactionCalls`,
35
- expected: 1,
36
- actual: txCalls.length,
37
- });
38
- }
39
- violations.push(...validateGasCompensationPreHook(action, actionPath, gasCompensationGroups, realChainId), ...validateGasCompensationCalldata(txCalls[0], actionPath, gasCompensationGroups, realChainId));
40
- }
41
- return violations;
42
- }
43
- // CRITICAL: must have a corresponding preHook with gasCompensationInfo
44
- function validateGasCompensationPreHook(_action, actionPath, groups, _realChainId) {
45
- if (groups.length === 0) {
46
- return [{
47
- code: types_1.ViolationCode.GasCompensationNoMatchingPreHook,
48
- message: `GasCompensation has no corresponding preHook with gasCompensationInfo`,
49
- path: `${actionPath}.actions`,
50
- }];
51
- }
52
- // AI: for now we check that at least one gasCompensationInfo group exists.
53
- // A more precise matching (action <-> specific group) can be added later.
54
- return [];
55
- }
56
- // CRITICAL: validate calldata based on token type (ERC20 vs native)
57
- // Token type is determined by gasCompensationInfo.tokenAddress
58
- // CRITICAL: txCall.to must match a gasCompensationInfo group
59
- //
60
- // Note: `gasCompensationInfo` also has `sender` and `chainId`, but they cannot
61
- // be verified from the `transactionCall` data:
62
- // - `sender` maps to the hook's `from` field, not present in `requiredAction`
63
- // - `chainId` is implicitly matched by the trade group's `realChainId`
64
- function validateGasCompensationCalldata(txCall, actionPath, groups, realChainId) {
65
- // Check for native token group
66
- if (groups.some(g => (0, evm_token_1.isNativeToken)(g.tokenAddress))) {
67
- return validateGasCompensationNative(txCall, actionPath);
68
- }
69
- // Check for ERC20: txCall.to must match a group's tokenAddress
70
- const erc20Match = groups.some(g => (0, address_1.normalizeAddress)(realChainId, g.tokenAddress) === (0, address_1.normalizeAddress)(realChainId, txCall.to));
71
- if (erc20Match) {
72
- return validateGasCompensationErc20(txCall, actionPath);
73
- }
74
- // txCall.to doesn't match any gasCompensationInfo group
75
- return [{
76
- code: types_1.ViolationCode.GasCompensationToMismatch,
77
- message: `GasCompensation transactionCalls[0].to does not match any gasCompensationInfo.tokenAddress`,
78
- path: `${actionPath}.details.transactionCalls[0].to`,
79
- expected: groups.map(g => g.tokenAddress),
80
- actual: txCall.to,
81
- }];
82
- }
83
- // CRITICAL: for native: data === "0x", value > 0
84
- function validateGasCompensationNative(txCall, actionPath) {
85
- const violations = [];
86
- // CRITICAL: data must be empty for native token transfer
87
- if (txCall.data !== "0x") {
88
- violations.push({
89
- code: types_1.ViolationCode.GasCompensationCalldataInvalid,
90
- message: `GasCompensation native transfer must have data="0x"`,
91
- path: `${actionPath}.details.transactionCalls[0].data`,
92
- expected: "0x",
93
- actual: txCall.data,
94
- });
95
- }
96
- try {
97
- if (BigInt(txCall.value) <= 0n) {
98
- violations.push({
99
- code: types_1.ViolationCode.GasCompensationNativeValueZero,
100
- message: `GasCompensation native value must be > 0`,
101
- path: `${actionPath}.details.transactionCalls[0].value`,
102
- actual: txCall.value,
103
- });
104
- }
105
- }
106
- catch {
107
- violations.push({
108
- code: types_1.ViolationCode.GasCompensationNativeValueZero,
109
- message: `GasCompensation native value is not a valid number`,
110
- path: `${actionPath}.details.transactionCalls[0].value`,
111
- actual: txCall.value,
112
- });
113
- }
114
- return violations;
115
- }
116
- // CRITICAL: for ERC20: data must be valid transfer(address,uint256)
117
- function validateGasCompensationErc20(txCall, actionPath) {
118
- try {
119
- (0, evm_calldata_1.decodeTransferCalldata)(txCall.data);
120
- }
121
- catch (e) {
122
- return [{
123
- code: types_1.ViolationCode.GasCompensationCalldataInvalid,
124
- message: `GasCompensation calldata is not valid ERC20 transfer`,
125
- path: `${actionPath}.details.transactionCalls[0].data`,
126
- actual: txCall.data,
127
- details: e,
128
- }];
129
- }
130
- return [];
131
- }
132
- // Groups gasCompensationInfo from preHooks by (chainId, tokenAddress, sender)
133
- function groupGasCompensationInfo(request) {
134
- const seen = new Set();
135
- const groups = [];
136
- for (const hook of request.preHooks ?? []) {
137
- const info = hook.gasCompensationInfo;
138
- if (!info)
139
- continue;
140
- const key = `${info.chainId}:${(0, address_1.normalizeAddress)(info.chainId, info.tokenAddress)}:${(0, address_1.normalizeAddress)(info.chainId, info.sender)}`;
141
- if (!seen.has(key)) {
142
- seen.add(key);
143
- groups.push({
144
- chainId: info.chainId,
145
- tokenAddress: info.tokenAddress,
146
- sender: info.sender,
147
- });
148
- }
149
- }
150
- return groups;
151
- }
152
- //# sourceMappingURL=evm-op-gas-compensation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evm-op-gas-compensation.js","sourceRoot":"","sources":["../../../src/validations/evm-op-gas-compensation.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- // Solana max u64 value (used for "unlimited" approve amounts)
2
- export const MAX_U64 = (1n << 64n) - 1n;
3
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC"}
@@ -1,149 +0,0 @@
1
- import { ViolationCode, EvmActionOperation, } from "../types/index.js";
2
- import { decodeTransferCalldata } from "../helpers/evm-calldata.js";
3
- import { isNativeToken } from "../helpers/evm-token.js";
4
- import { normalizeAddress } from "../helpers/address.js";
5
- import { getTransactionCalls } from "../helpers/evm-action.js";
6
- export function validateGasCompensationOperations(actions, basePath, request, realChainId) {
7
- const violations = [];
8
- const gasCompensationGroups = groupGasCompensationInfo(request);
9
- for (let i = 0; i < actions.length; i++) {
10
- const action = actions[i];
11
- if (!action.actions.includes(EvmActionOperation.GasCompensation)) {
12
- continue;
13
- }
14
- const actionPath = `${basePath}.requiredActions[${i}]`;
15
- const txCalls = getTransactionCalls(action);
16
- // CRITICAL: transactionCalls must be present
17
- if (txCalls.length === 0) {
18
- violations.push({
19
- code: ViolationCode.GasCompensationTransactionCallsMissing,
20
- message: `GasCompensation must have at least one transactionCall`,
21
- path: `${actionPath}.details.transactionCalls`,
22
- actual: [],
23
- });
24
- continue;
25
- }
26
- // CRITICAL: GasCompensation must have exactly one transactionCall
27
- if (txCalls.length > 1) {
28
- violations.push({
29
- code: ViolationCode.GasCompensationTooManyTransactionCalls,
30
- message: `GasCompensation must have exactly 1 transactionCall`,
31
- path: `${actionPath}.details.transactionCalls`,
32
- expected: 1,
33
- actual: txCalls.length,
34
- });
35
- }
36
- violations.push(...validateGasCompensationPreHook(action, actionPath, gasCompensationGroups, realChainId), ...validateGasCompensationCalldata(txCalls[0], actionPath, gasCompensationGroups, realChainId));
37
- }
38
- return violations;
39
- }
40
- // CRITICAL: must have a corresponding preHook with gasCompensationInfo
41
- function validateGasCompensationPreHook(_action, actionPath, groups, _realChainId) {
42
- if (groups.length === 0) {
43
- return [{
44
- code: ViolationCode.GasCompensationNoMatchingPreHook,
45
- message: `GasCompensation has no corresponding preHook with gasCompensationInfo`,
46
- path: `${actionPath}.actions`,
47
- }];
48
- }
49
- // AI: for now we check that at least one gasCompensationInfo group exists.
50
- // A more precise matching (action <-> specific group) can be added later.
51
- return [];
52
- }
53
- // CRITICAL: validate calldata based on token type (ERC20 vs native)
54
- // Token type is determined by gasCompensationInfo.tokenAddress
55
- // CRITICAL: txCall.to must match a gasCompensationInfo group
56
- //
57
- // Note: `gasCompensationInfo` also has `sender` and `chainId`, but they cannot
58
- // be verified from the `transactionCall` data:
59
- // - `sender` maps to the hook's `from` field, not present in `requiredAction`
60
- // - `chainId` is implicitly matched by the trade group's `realChainId`
61
- function validateGasCompensationCalldata(txCall, actionPath, groups, realChainId) {
62
- // Check for native token group
63
- if (groups.some(g => isNativeToken(g.tokenAddress))) {
64
- return validateGasCompensationNative(txCall, actionPath);
65
- }
66
- // Check for ERC20: txCall.to must match a group's tokenAddress
67
- const erc20Match = groups.some(g => normalizeAddress(realChainId, g.tokenAddress) === normalizeAddress(realChainId, txCall.to));
68
- if (erc20Match) {
69
- return validateGasCompensationErc20(txCall, actionPath);
70
- }
71
- // txCall.to doesn't match any gasCompensationInfo group
72
- return [{
73
- code: ViolationCode.GasCompensationToMismatch,
74
- message: `GasCompensation transactionCalls[0].to does not match any gasCompensationInfo.tokenAddress`,
75
- path: `${actionPath}.details.transactionCalls[0].to`,
76
- expected: groups.map(g => g.tokenAddress),
77
- actual: txCall.to,
78
- }];
79
- }
80
- // CRITICAL: for native: data === "0x", value > 0
81
- function validateGasCompensationNative(txCall, actionPath) {
82
- const violations = [];
83
- // CRITICAL: data must be empty for native token transfer
84
- if (txCall.data !== "0x") {
85
- violations.push({
86
- code: ViolationCode.GasCompensationCalldataInvalid,
87
- message: `GasCompensation native transfer must have data="0x"`,
88
- path: `${actionPath}.details.transactionCalls[0].data`,
89
- expected: "0x",
90
- actual: txCall.data,
91
- });
92
- }
93
- try {
94
- if (BigInt(txCall.value) <= 0n) {
95
- violations.push({
96
- code: ViolationCode.GasCompensationNativeValueZero,
97
- message: `GasCompensation native value must be > 0`,
98
- path: `${actionPath}.details.transactionCalls[0].value`,
99
- actual: txCall.value,
100
- });
101
- }
102
- }
103
- catch {
104
- violations.push({
105
- code: ViolationCode.GasCompensationNativeValueZero,
106
- message: `GasCompensation native value is not a valid number`,
107
- path: `${actionPath}.details.transactionCalls[0].value`,
108
- actual: txCall.value,
109
- });
110
- }
111
- return violations;
112
- }
113
- // CRITICAL: for ERC20: data must be valid transfer(address,uint256)
114
- function validateGasCompensationErc20(txCall, actionPath) {
115
- try {
116
- decodeTransferCalldata(txCall.data);
117
- }
118
- catch (e) {
119
- return [{
120
- code: ViolationCode.GasCompensationCalldataInvalid,
121
- message: `GasCompensation calldata is not valid ERC20 transfer`,
122
- path: `${actionPath}.details.transactionCalls[0].data`,
123
- actual: txCall.data,
124
- details: e,
125
- }];
126
- }
127
- return [];
128
- }
129
- // Groups gasCompensationInfo from preHooks by (chainId, tokenAddress, sender)
130
- function groupGasCompensationInfo(request) {
131
- const seen = new Set();
132
- const groups = [];
133
- for (const hook of request.preHooks ?? []) {
134
- const info = hook.gasCompensationInfo;
135
- if (!info)
136
- continue;
137
- const key = `${info.chainId}:${normalizeAddress(info.chainId, info.tokenAddress)}:${normalizeAddress(info.chainId, info.sender)}`;
138
- if (!seen.has(key)) {
139
- seen.add(key);
140
- groups.push({
141
- chainId: info.chainId,
142
- tokenAddress: info.tokenAddress,
143
- sender: info.sender,
144
- });
145
- }
146
- }
147
- return groups;
148
- }
149
- //# sourceMappingURL=evm-op-gas-compensation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evm-op-gas-compensation.js","sourceRoot":"","sources":["../../../src/validations/evm-op-gas-compensation.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const MAX_U64: bigint;
2
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/helpers/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,QAAmB,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Violation, BundleCreationRequest, EvmRequiredAction, ChainId } from "../types";
2
- export declare function validateGasCompensationOperations(actions: EvmRequiredAction[], basePath: string, request: BundleCreationRequest, realChainId: ChainId): Violation[];
3
- //# sourceMappingURL=evm-op-gas-compensation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evm-op-gas-compensation.d.ts","sourceRoot":"","sources":["../../../src/validations/evm-op-gas-compensation.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EAET,qBAAqB,EACrB,iBAAiB,EAEjB,OAAO,EACV,MAAM,UAAU,CAAC;AAYlB,wBAAgB,iCAAiC,CAC7C,OAAO,EAAE,iBAAiB,EAAE,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,qBAAqB,EAC9B,WAAW,EAAE,OAAO,GACrB,SAAS,EAAE,CA8Cb"}