sablier 2.0.4 → 3.0.0-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 (503) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +1 -4
  3. package/abi/airdrops/v3.0/SablierFactoryMerkleExecute.json +1056 -0
  4. package/abi/airdrops/v3.0/SablierFactoryMerkleInstant.json +1128 -0
  5. package/abi/airdrops/v3.0/SablierFactoryMerkleLL.json +1354 -0
  6. package/abi/airdrops/v3.0/SablierFactoryMerkleLT.json +1438 -0
  7. package/abi/airdrops/v3.0/SablierFactoryMerkleVCA.json +1181 -0
  8. package/abi/airdrops/v3.0/SablierMerkleExecute.json +1304 -0
  9. package/abi/airdrops/v3.0/SablierMerkleInstant.json +1632 -0
  10. package/abi/airdrops/v3.0/SablierMerkleLL.json +2131 -0
  11. package/abi/airdrops/v3.0/SablierMerkleLT.json +2068 -0
  12. package/abi/airdrops/v3.0/SablierMerkleVCA.json +1979 -0
  13. package/abi/bob/v1.0/SablierBob.json +1090 -0
  14. package/abi/bob/v1.0/SablierEscrow.json +877 -0
  15. package/abi/bob/v1.0/SablierLidoAdapter.json +985 -0
  16. package/abi/comptroller/v1.0/ERC1967Proxy.json +31 -0
  17. package/abi/comptroller/v2.0/ERC1967Proxy.json +67 -0
  18. package/abi/comptroller/v2.0/SablierComptroller.json +1089 -0
  19. package/abi/flow/v3.0/SablierFlow.json +2248 -0
  20. package/abi/lockup/v4.0/SablierBatchLockup.json +675 -0
  21. package/abi/lockup/v4.0/SablierLockup.json +2858 -0
  22. package/dist/cjs/evm/chains/builder.js +1 -0
  23. package/dist/cjs/evm/chains/builder.js.map +1 -1
  24. package/dist/cjs/evm/chains/chains.js +3 -3
  25. package/dist/cjs/evm/chains/chains.js.map +1 -1
  26. package/dist/cjs/evm/chains/custom.js +1 -26
  27. package/dist/cjs/evm/chains/custom.js.map +1 -1
  28. package/dist/cjs/evm/chains/specs.js +74 -85
  29. package/dist/cjs/evm/chains/specs.js.map +1 -1
  30. package/dist/cjs/evm/compatibility.js +1 -0
  31. package/dist/cjs/evm/compatibility.js.map +1 -1
  32. package/dist/cjs/evm/comptroller/deployments.js +1 -4
  33. package/dist/cjs/evm/comptroller/deployments.js.map +1 -1
  34. package/dist/cjs/evm/comptroller/index.js +6 -7
  35. package/dist/cjs/evm/comptroller/index.js.map +1 -1
  36. package/dist/cjs/evm/comptroller/v1.0/abi/ERC1967Proxy.js +33 -0
  37. package/dist/cjs/evm/comptroller/v1.0/abi/ERC1967Proxy.js.map +1 -0
  38. package/dist/cjs/evm/comptroller/v1.0/abi/SablierComptroller.js +436 -0
  39. package/dist/cjs/evm/comptroller/v1.0/abi/SablierComptroller.js.map +1 -0
  40. package/dist/cjs/evm/comptroller/v1.0/abi.js.map +1 -0
  41. package/dist/cjs/evm/comptroller/v1.0/index.js +10 -0
  42. package/dist/cjs/evm/comptroller/v1.0/index.js.map +1 -0
  43. package/dist/cjs/evm/comptroller/v1.0/manifest.js.map +1 -0
  44. package/dist/cjs/evm/comptroller/v2.0/abi/ERC1967Proxy.js +33 -0
  45. package/dist/cjs/evm/comptroller/v2.0/abi/ERC1967Proxy.js.map +1 -0
  46. package/dist/cjs/evm/comptroller/v2.0/abi/SablierComptroller.js +510 -0
  47. package/dist/cjs/evm/comptroller/v2.0/abi/SablierComptroller.js.map +1 -0
  48. package/dist/cjs/evm/comptroller/v2.0/abi.js +14 -0
  49. package/dist/cjs/evm/comptroller/v2.0/abi.js.map +1 -0
  50. package/dist/cjs/evm/comptroller/v2.0/index.js +10 -0
  51. package/dist/cjs/evm/comptroller/v2.0/index.js.map +1 -0
  52. package/dist/cjs/evm/comptroller/v2.0/manifest.js +8 -0
  53. package/dist/cjs/evm/comptroller/v2.0/manifest.js.map +1 -0
  54. package/dist/cjs/evm/contracts/alias-catalog.js +1 -0
  55. package/dist/cjs/evm/contracts/alias-catalog.js.map +1 -1
  56. package/dist/cjs/evm/contracts/catalog.js +1 -0
  57. package/dist/cjs/evm/contracts/catalog.js.map +1 -1
  58. package/dist/cjs/evm/contracts/names.js +27 -17
  59. package/dist/cjs/evm/contracts/names.js.map +1 -1
  60. package/dist/cjs/evm/enums.js +8 -0
  61. package/dist/cjs/evm/enums.js.map +1 -1
  62. package/dist/cjs/evm/helpers.js +1 -0
  63. package/dist/cjs/evm/helpers.js.map +1 -1
  64. package/dist/cjs/evm/releases/airdrops/index.js +2 -0
  65. package/dist/cjs/evm/releases/airdrops/index.js.map +1 -1
  66. package/dist/cjs/evm/releases/airdrops/v1.3/deployments.js +0 -12
  67. package/dist/cjs/evm/releases/airdrops/v1.3/deployments.js.map +1 -1
  68. package/dist/cjs/evm/releases/airdrops/v2.0/deployments.js +0 -18
  69. package/dist/cjs/evm/releases/airdrops/v2.0/deployments.js.map +1 -1
  70. package/dist/cjs/evm/releases/airdrops/v2.0/index.js +1 -1
  71. package/dist/cjs/evm/releases/airdrops/v2.0/index.js.map +1 -1
  72. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleExecute.js +205 -0
  73. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleExecute.js.map +1 -0
  74. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleInstant.js +197 -0
  75. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleInstant.js.map +1 -0
  76. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLL.js +225 -0
  77. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLL.js.map +1 -0
  78. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLT.js +260 -0
  79. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLT.js.map +1 -0
  80. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleVCA.js +232 -0
  81. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleVCA.js.map +1 -0
  82. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleExecute.js +310 -0
  83. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleExecute.js.map +1 -0
  84. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleInstant.js +395 -0
  85. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleInstant.js.map +1 -0
  86. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleLL.js +508 -0
  87. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleLL.js.map +1 -0
  88. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleLT.js +494 -0
  89. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleLT.js.map +1 -0
  90. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleVCA.js +528 -0
  91. package/dist/cjs/evm/releases/airdrops/v3.0/abi/SablierMerkleVCA.js.map +1 -0
  92. package/dist/cjs/evm/releases/airdrops/v3.0/abi.js +30 -0
  93. package/dist/cjs/evm/releases/airdrops/v3.0/abi.js.map +1 -0
  94. package/dist/cjs/evm/releases/airdrops/v3.0/aliases.js +15 -0
  95. package/dist/cjs/evm/releases/airdrops/v3.0/aliases.js.map +1 -0
  96. package/dist/cjs/evm/releases/airdrops/v3.0/deployments.js +619 -0
  97. package/dist/cjs/evm/releases/airdrops/v3.0/deployments.js.map +1 -0
  98. package/dist/cjs/evm/releases/airdrops/v3.0/index.js +26 -0
  99. package/dist/cjs/evm/releases/airdrops/v3.0/index.js.map +1 -0
  100. package/dist/cjs/evm/releases/airdrops/v3.0/manifest.js +19 -0
  101. package/dist/cjs/evm/releases/airdrops/v3.0/manifest.js.map +1 -0
  102. package/dist/cjs/evm/releases/bob/index.js +8 -0
  103. package/dist/cjs/evm/releases/bob/index.js.map +1 -0
  104. package/dist/cjs/evm/releases/bob/v1.0/abi/SablierBob.js +516 -0
  105. package/dist/cjs/evm/releases/bob/v1.0/abi/SablierBob.js.map +1 -0
  106. package/dist/cjs/evm/releases/bob/v1.0/abi/SablierEscrow.js +392 -0
  107. package/dist/cjs/evm/releases/bob/v1.0/abi/SablierEscrow.js.map +1 -0
  108. package/dist/cjs/evm/releases/bob/v1.0/abi/SablierLidoAdapter.js +466 -0
  109. package/dist/cjs/evm/releases/bob/v1.0/abi/SablierLidoAdapter.js.map +1 -0
  110. package/dist/cjs/evm/releases/bob/v1.0/abi.js +16 -0
  111. package/dist/cjs/evm/releases/bob/v1.0/abi.js.map +1 -0
  112. package/dist/cjs/evm/releases/bob/v1.0/aliases.js +13 -0
  113. package/dist/cjs/evm/releases/bob/v1.0/aliases.js.map +1 -0
  114. package/dist/cjs/evm/releases/bob/v1.0/deployments.js +35 -0
  115. package/dist/cjs/evm/releases/bob/v1.0/deployments.js.map +1 -0
  116. package/dist/cjs/evm/releases/bob/v1.0/index.js +26 -0
  117. package/dist/cjs/evm/releases/bob/v1.0/index.js.map +1 -0
  118. package/dist/cjs/evm/releases/bob/v1.0/manifest.js +9 -0
  119. package/dist/cjs/evm/releases/bob/v1.0/manifest.js.map +1 -0
  120. package/dist/cjs/evm/releases/data.js +8 -6
  121. package/dist/cjs/evm/releases/data.js.map +1 -1
  122. package/dist/cjs/evm/releases/flow/index.js +2 -0
  123. package/dist/cjs/evm/releases/flow/index.js.map +1 -1
  124. package/dist/cjs/evm/releases/flow/v1.0/deployments.js +0 -16
  125. package/dist/cjs/evm/releases/flow/v1.0/deployments.js.map +1 -1
  126. package/dist/cjs/evm/releases/flow/v1.1/deployments.js +0 -20
  127. package/dist/cjs/evm/releases/flow/v1.1/deployments.js.map +1 -1
  128. package/dist/cjs/evm/releases/flow/v2.0/deployments.js +0 -4
  129. package/dist/cjs/evm/releases/flow/v2.0/deployments.js.map +1 -1
  130. package/dist/cjs/evm/releases/flow/v2.0/index.js +1 -1
  131. package/dist/cjs/evm/releases/flow/v2.0/index.js.map +1 -1
  132. package/dist/cjs/evm/releases/flow/v3.0/abi/SablierFlow.js +989 -0
  133. package/dist/cjs/evm/releases/flow/v3.0/abi/SablierFlow.js.map +1 -0
  134. package/dist/cjs/evm/releases/flow/v3.0/abi.js +12 -0
  135. package/dist/cjs/evm/releases/flow/v3.0/abi.js.map +1 -0
  136. package/dist/cjs/evm/releases/flow/v3.0/aliases.js +11 -0
  137. package/dist/cjs/evm/releases/flow/v3.0/aliases.js.map +1 -0
  138. package/dist/cjs/evm/releases/flow/v3.0/deployments.js +133 -0
  139. package/dist/cjs/evm/releases/flow/v3.0/deployments.js.map +1 -0
  140. package/dist/cjs/evm/releases/flow/v3.0/index.js +26 -0
  141. package/dist/cjs/evm/releases/flow/v3.0/index.js.map +1 -0
  142. package/dist/cjs/evm/releases/flow/v3.0/manifest.js +8 -0
  143. package/dist/cjs/evm/releases/flow/v3.0/manifest.js.map +1 -0
  144. package/dist/cjs/evm/releases/lockup/index.js +2 -0
  145. package/dist/cjs/evm/releases/lockup/index.js.map +1 -1
  146. package/dist/cjs/evm/releases/lockup/v1.1/deployments.js +0 -42
  147. package/dist/cjs/evm/releases/lockup/v1.1/deployments.js.map +1 -1
  148. package/dist/cjs/evm/releases/lockup/v1.2/deployments.js +0 -120
  149. package/dist/cjs/evm/releases/lockup/v1.2/deployments.js.map +1 -1
  150. package/dist/cjs/evm/releases/lockup/v2.0/deployments.js +0 -35
  151. package/dist/cjs/evm/releases/lockup/v2.0/deployments.js.map +1 -1
  152. package/dist/cjs/evm/releases/lockup/v3.0/deployments.js +0 -7
  153. package/dist/cjs/evm/releases/lockup/v3.0/deployments.js.map +1 -1
  154. package/dist/cjs/evm/releases/lockup/v3.0/index.js +1 -1
  155. package/dist/cjs/evm/releases/lockup/v3.0/index.js.map +1 -1
  156. package/dist/cjs/evm/releases/lockup/v4.0/abi/SablierBatchLockup.js +280 -0
  157. package/dist/cjs/evm/releases/lockup/v4.0/abi/SablierBatchLockup.js.map +1 -0
  158. package/dist/cjs/evm/releases/lockup/v4.0/abi/SablierLockup.js +1287 -0
  159. package/dist/cjs/evm/releases/lockup/v4.0/abi/SablierLockup.js.map +1 -0
  160. package/dist/cjs/evm/releases/lockup/v4.0/abi.js +14 -0
  161. package/dist/cjs/evm/releases/lockup/v4.0/abi.js.map +1 -0
  162. package/dist/cjs/evm/releases/lockup/v4.0/aliases.js +11 -0
  163. package/dist/cjs/evm/releases/lockup/v4.0/aliases.js.map +1 -0
  164. package/dist/cjs/evm/releases/lockup/v4.0/deployments.js +214 -0
  165. package/dist/cjs/evm/releases/lockup/v4.0/deployments.js.map +1 -0
  166. package/dist/cjs/evm/releases/lockup/v4.0/index.js +23 -0
  167. package/dist/cjs/evm/releases/lockup/v4.0/index.js.map +1 -0
  168. package/dist/cjs/evm/releases/lockup/v4.0/manifest.js +11 -0
  169. package/dist/cjs/evm/releases/lockup/v4.0/manifest.js.map +1 -0
  170. package/dist/cjs/evm/types.js.map +1 -1
  171. package/dist/cjs/helpers.js +2 -2
  172. package/dist/cjs/helpers.js.map +1 -1
  173. package/dist/cjs/internal/factories/queries.js.map +1 -1
  174. package/dist/cjs/sablier.js.map +1 -1
  175. package/dist/cjs/shapes/airdrops.js +7 -0
  176. package/dist/cjs/shapes/airdrops.js.map +1 -1
  177. package/dist/cjs/shapes/constants.js +42 -1
  178. package/dist/cjs/shapes/constants.js.map +1 -1
  179. package/dist/cjs/shapes/enums.js +1 -0
  180. package/dist/cjs/shapes/enums.js.map +1 -1
  181. package/dist/cjs/shared/types.js.map +1 -1
  182. package/dist/cjs/solana/chains/chains.js +1 -0
  183. package/dist/cjs/solana/chains/chains.js.map +1 -1
  184. package/dist/esm/evm/chains/builder.js +1 -0
  185. package/dist/esm/evm/chains/builder.js.map +1 -1
  186. package/dist/esm/evm/chains/chains.js +2 -2
  187. package/dist/esm/evm/chains/chains.js.map +1 -1
  188. package/dist/esm/evm/chains/custom.js +0 -25
  189. package/dist/esm/evm/chains/custom.js.map +1 -1
  190. package/dist/esm/evm/chains/specs.js +76 -87
  191. package/dist/esm/evm/chains/specs.js.map +1 -1
  192. package/dist/esm/evm/compatibility.js +1 -0
  193. package/dist/esm/evm/compatibility.js.map +1 -1
  194. package/dist/esm/evm/comptroller/deployments.js +1 -4
  195. package/dist/esm/evm/comptroller/deployments.js.map +1 -1
  196. package/dist/esm/evm/comptroller/index.js +6 -4
  197. package/dist/esm/evm/comptroller/index.js.map +1 -1
  198. package/dist/esm/evm/comptroller/v1.0/abi/ERC1967Proxy.js +30 -0
  199. package/dist/esm/evm/comptroller/v1.0/abi/ERC1967Proxy.js.map +1 -0
  200. package/dist/esm/evm/comptroller/v1.0/abi/SablierComptroller.js +433 -0
  201. package/dist/esm/evm/comptroller/v1.0/abi/SablierComptroller.js.map +1 -0
  202. package/dist/esm/evm/comptroller/v1.0/abi.js.map +1 -0
  203. package/dist/esm/evm/comptroller/v1.0/index.js +4 -0
  204. package/dist/esm/evm/comptroller/v1.0/index.js.map +1 -0
  205. package/dist/esm/evm/comptroller/v1.0/manifest.js.map +1 -0
  206. package/dist/esm/evm/comptroller/v2.0/abi/ERC1967Proxy.js +30 -0
  207. package/dist/esm/evm/comptroller/v2.0/abi/ERC1967Proxy.js.map +1 -0
  208. package/dist/esm/evm/comptroller/v2.0/abi/SablierComptroller.js +507 -0
  209. package/dist/esm/evm/comptroller/v2.0/abi/SablierComptroller.js.map +1 -0
  210. package/dist/esm/evm/comptroller/v2.0/abi.js +8 -0
  211. package/dist/esm/evm/comptroller/v2.0/abi.js.map +1 -0
  212. package/dist/esm/evm/comptroller/v2.0/index.js +4 -0
  213. package/dist/esm/evm/comptroller/v2.0/index.js.map +1 -0
  214. package/dist/esm/evm/comptroller/v2.0/manifest.js +6 -0
  215. package/dist/esm/evm/comptroller/v2.0/manifest.js.map +1 -0
  216. package/dist/esm/evm/contracts/alias-catalog.js +1 -0
  217. package/dist/esm/evm/contracts/alias-catalog.js.map +1 -1
  218. package/dist/esm/evm/contracts/catalog.js +1 -0
  219. package/dist/esm/evm/contracts/catalog.js.map +1 -1
  220. package/dist/esm/evm/contracts/names.js +12 -2
  221. package/dist/esm/evm/contracts/names.js.map +1 -1
  222. package/dist/esm/evm/enums.js +8 -0
  223. package/dist/esm/evm/enums.js.map +1 -1
  224. package/dist/esm/evm/helpers.js +1 -0
  225. package/dist/esm/evm/helpers.js.map +1 -1
  226. package/dist/esm/evm/releases/airdrops/index.js +2 -0
  227. package/dist/esm/evm/releases/airdrops/index.js.map +1 -1
  228. package/dist/esm/evm/releases/airdrops/v1.3/deployments.js +0 -12
  229. package/dist/esm/evm/releases/airdrops/v1.3/deployments.js.map +1 -1
  230. package/dist/esm/evm/releases/airdrops/v2.0/deployments.js +0 -18
  231. package/dist/esm/evm/releases/airdrops/v2.0/deployments.js.map +1 -1
  232. package/dist/esm/evm/releases/airdrops/v2.0/index.js +1 -1
  233. package/dist/esm/evm/releases/airdrops/v2.0/index.js.map +1 -1
  234. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleExecute.js +202 -0
  235. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleExecute.js.map +1 -0
  236. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleInstant.js +194 -0
  237. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleInstant.js.map +1 -0
  238. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLL.js +222 -0
  239. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLL.js.map +1 -0
  240. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLT.js +257 -0
  241. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLT.js.map +1 -0
  242. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleVCA.js +229 -0
  243. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleVCA.js.map +1 -0
  244. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleExecute.js +307 -0
  245. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleExecute.js.map +1 -0
  246. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleInstant.js +392 -0
  247. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleInstant.js.map +1 -0
  248. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleLL.js +505 -0
  249. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleLL.js.map +1 -0
  250. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleLT.js +491 -0
  251. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleLT.js.map +1 -0
  252. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleVCA.js +525 -0
  253. package/dist/esm/evm/releases/airdrops/v3.0/abi/SablierMerkleVCA.js.map +1 -0
  254. package/dist/esm/evm/releases/airdrops/v3.0/abi.js +24 -0
  255. package/dist/esm/evm/releases/airdrops/v3.0/abi.js.map +1 -0
  256. package/dist/esm/evm/releases/airdrops/v3.0/aliases.js +10 -0
  257. package/dist/esm/evm/releases/airdrops/v3.0/aliases.js.map +1 -0
  258. package/dist/esm/evm/releases/airdrops/v3.0/deployments.js +613 -0
  259. package/dist/esm/evm/releases/airdrops/v3.0/deployments.js.map +1 -0
  260. package/dist/esm/evm/releases/airdrops/v3.0/index.js +20 -0
  261. package/dist/esm/evm/releases/airdrops/v3.0/index.js.map +1 -0
  262. package/dist/esm/evm/releases/airdrops/v3.0/manifest.js +17 -0
  263. package/dist/esm/evm/releases/airdrops/v3.0/manifest.js.map +1 -0
  264. package/dist/esm/evm/releases/bob/index.js +5 -0
  265. package/dist/esm/evm/releases/bob/index.js.map +1 -0
  266. package/dist/esm/evm/releases/bob/v1.0/abi/SablierBob.js +513 -0
  267. package/dist/esm/evm/releases/bob/v1.0/abi/SablierBob.js.map +1 -0
  268. package/dist/esm/evm/releases/bob/v1.0/abi/SablierEscrow.js +389 -0
  269. package/dist/esm/evm/releases/bob/v1.0/abi/SablierEscrow.js.map +1 -0
  270. package/dist/esm/evm/releases/bob/v1.0/abi/SablierLidoAdapter.js +463 -0
  271. package/dist/esm/evm/releases/bob/v1.0/abi/SablierLidoAdapter.js.map +1 -0
  272. package/dist/esm/evm/releases/bob/v1.0/abi.js +10 -0
  273. package/dist/esm/evm/releases/bob/v1.0/abi.js.map +1 -0
  274. package/dist/esm/evm/releases/bob/v1.0/aliases.js +8 -0
  275. package/dist/esm/evm/releases/bob/v1.0/aliases.js.map +1 -0
  276. package/dist/esm/evm/releases/bob/v1.0/deployments.js +29 -0
  277. package/dist/esm/evm/releases/bob/v1.0/deployments.js.map +1 -0
  278. package/dist/esm/evm/releases/bob/v1.0/index.js +20 -0
  279. package/dist/esm/evm/releases/bob/v1.0/index.js.map +1 -0
  280. package/dist/esm/evm/releases/bob/v1.0/manifest.js +7 -0
  281. package/dist/esm/evm/releases/bob/v1.0/manifest.js.map +1 -0
  282. package/dist/esm/evm/releases/data.js +2 -0
  283. package/dist/esm/evm/releases/data.js.map +1 -1
  284. package/dist/esm/evm/releases/flow/index.js +2 -0
  285. package/dist/esm/evm/releases/flow/index.js.map +1 -1
  286. package/dist/esm/evm/releases/flow/v1.0/deployments.js +0 -16
  287. package/dist/esm/evm/releases/flow/v1.0/deployments.js.map +1 -1
  288. package/dist/esm/evm/releases/flow/v1.1/deployments.js +0 -20
  289. package/dist/esm/evm/releases/flow/v1.1/deployments.js.map +1 -1
  290. package/dist/esm/evm/releases/flow/v2.0/deployments.js +0 -4
  291. package/dist/esm/evm/releases/flow/v2.0/deployments.js.map +1 -1
  292. package/dist/esm/evm/releases/flow/v2.0/index.js +1 -1
  293. package/dist/esm/evm/releases/flow/v2.0/index.js.map +1 -1
  294. package/dist/esm/evm/releases/flow/v3.0/abi/SablierFlow.js +986 -0
  295. package/dist/esm/evm/releases/flow/v3.0/abi/SablierFlow.js.map +1 -0
  296. package/dist/esm/evm/releases/flow/v3.0/abi.js +6 -0
  297. package/dist/esm/evm/releases/flow/v3.0/abi.js.map +1 -0
  298. package/dist/esm/evm/releases/flow/v3.0/aliases.js +6 -0
  299. package/dist/esm/evm/releases/flow/v3.0/aliases.js.map +1 -0
  300. package/dist/esm/evm/releases/flow/v3.0/deployments.js +127 -0
  301. package/dist/esm/evm/releases/flow/v3.0/deployments.js.map +1 -0
  302. package/dist/esm/evm/releases/flow/v3.0/index.js +20 -0
  303. package/dist/esm/evm/releases/flow/v3.0/index.js.map +1 -0
  304. package/dist/esm/evm/releases/flow/v3.0/manifest.js +6 -0
  305. package/dist/esm/evm/releases/flow/v3.0/manifest.js.map +1 -0
  306. package/dist/esm/evm/releases/lockup/index.js +2 -0
  307. package/dist/esm/evm/releases/lockup/index.js.map +1 -1
  308. package/dist/esm/evm/releases/lockup/v1.1/deployments.js +0 -42
  309. package/dist/esm/evm/releases/lockup/v1.1/deployments.js.map +1 -1
  310. package/dist/esm/evm/releases/lockup/v1.2/deployments.js +0 -120
  311. package/dist/esm/evm/releases/lockup/v1.2/deployments.js.map +1 -1
  312. package/dist/esm/evm/releases/lockup/v2.0/deployments.js +0 -35
  313. package/dist/esm/evm/releases/lockup/v2.0/deployments.js.map +1 -1
  314. package/dist/esm/evm/releases/lockup/v3.0/deployments.js +0 -7
  315. package/dist/esm/evm/releases/lockup/v3.0/deployments.js.map +1 -1
  316. package/dist/esm/evm/releases/lockup/v3.0/index.js +1 -1
  317. package/dist/esm/evm/releases/lockup/v3.0/index.js.map +1 -1
  318. package/dist/esm/evm/releases/lockup/v4.0/abi/SablierBatchLockup.js +277 -0
  319. package/dist/esm/evm/releases/lockup/v4.0/abi/SablierBatchLockup.js.map +1 -0
  320. package/dist/esm/evm/releases/lockup/v4.0/abi/SablierLockup.js +1284 -0
  321. package/dist/esm/evm/releases/lockup/v4.0/abi/SablierLockup.js.map +1 -0
  322. package/dist/esm/evm/releases/lockup/v4.0/abi.js +8 -0
  323. package/dist/esm/evm/releases/lockup/v4.0/abi.js.map +1 -0
  324. package/dist/esm/evm/releases/lockup/v4.0/aliases.js +6 -0
  325. package/dist/esm/evm/releases/lockup/v4.0/aliases.js.map +1 -0
  326. package/dist/esm/evm/releases/lockup/v4.0/deployments.js +208 -0
  327. package/dist/esm/evm/releases/lockup/v4.0/deployments.js.map +1 -0
  328. package/dist/esm/evm/releases/lockup/v4.0/index.js +17 -0
  329. package/dist/esm/evm/releases/lockup/v4.0/index.js.map +1 -0
  330. package/dist/esm/evm/releases/lockup/v4.0/manifest.js +9 -0
  331. package/dist/esm/evm/releases/lockup/v4.0/manifest.js.map +1 -0
  332. package/dist/esm/evm/types.js.map +1 -1
  333. package/dist/esm/helpers.js +2 -2
  334. package/dist/esm/helpers.js.map +1 -1
  335. package/dist/esm/internal/factories/queries.js.map +1 -1
  336. package/dist/esm/sablier.js.map +1 -1
  337. package/dist/esm/shapes/airdrops.js +8 -1
  338. package/dist/esm/shapes/airdrops.js.map +1 -1
  339. package/dist/esm/shapes/constants.js +41 -0
  340. package/dist/esm/shapes/constants.js.map +1 -1
  341. package/dist/esm/shapes/enums.js +1 -0
  342. package/dist/esm/shapes/enums.js.map +1 -1
  343. package/dist/esm/shared/types.js.map +1 -1
  344. package/dist/esm/solana/chains/chains.js +1 -0
  345. package/dist/esm/solana/chains/chains.js.map +1 -1
  346. package/dist/types/evm/chains/builder.d.ts +1 -0
  347. package/dist/types/evm/chains/builder.d.ts.map +1 -1
  348. package/dist/types/evm/chains/chains.d.ts +2 -2
  349. package/dist/types/evm/chains/chains.d.ts.map +1 -1
  350. package/dist/types/evm/chains/custom.d.ts +0 -44
  351. package/dist/types/evm/chains/custom.d.ts.map +1 -1
  352. package/dist/types/evm/chains/specs.d.ts +227 -798
  353. package/dist/types/evm/chains/specs.d.ts.map +1 -1
  354. package/dist/types/evm/compatibility.d.ts.map +1 -1
  355. package/dist/types/evm/comptroller/deployments.d.ts.map +1 -1
  356. package/dist/types/evm/comptroller/index.d.ts +1676 -774
  357. package/dist/types/evm/comptroller/index.d.ts.map +1 -1
  358. package/dist/types/evm/comptroller/v1.0/abi/ERC1967Proxy.d.ts +51 -0
  359. package/dist/types/evm/comptroller/v1.0/abi/ERC1967Proxy.d.ts.map +1 -0
  360. package/dist/types/evm/comptroller/v1.0/abi/SablierComptroller.d.ts +720 -0
  361. package/dist/types/evm/comptroller/v1.0/abi/SablierComptroller.d.ts.map +1 -0
  362. package/dist/types/evm/comptroller/{abi.d.ts.map → v1.0/abi.d.ts.map} +1 -1
  363. package/dist/types/evm/comptroller/v1.0/index.d.ts +778 -0
  364. package/dist/types/evm/comptroller/v1.0/index.d.ts.map +1 -0
  365. package/dist/types/evm/comptroller/v1.0/manifest.d.ts.map +1 -0
  366. package/dist/types/evm/comptroller/v2.0/abi/ERC1967Proxy.d.ts +51 -0
  367. package/dist/types/evm/comptroller/v2.0/abi/ERC1967Proxy.d.ts.map +1 -0
  368. package/dist/types/evm/comptroller/v2.0/abi/SablierComptroller.d.ts +841 -0
  369. package/dist/types/evm/comptroller/v2.0/abi/SablierComptroller.d.ts.map +1 -0
  370. package/dist/types/evm/comptroller/v2.0/abi.d.ts +893 -0
  371. package/dist/types/evm/comptroller/v2.0/abi.d.ts.map +1 -0
  372. package/dist/types/evm/comptroller/v2.0/index.d.ts +899 -0
  373. package/dist/types/evm/comptroller/v2.0/index.d.ts.map +1 -0
  374. package/dist/types/evm/comptroller/v2.0/manifest.d.ts +6 -0
  375. package/dist/types/evm/comptroller/v2.0/manifest.d.ts.map +1 -0
  376. package/dist/types/evm/contracts/alias-catalog.d.ts.map +1 -1
  377. package/dist/types/evm/contracts/catalog.d.ts.map +1 -1
  378. package/dist/types/evm/contracts/index.d.ts +3 -0
  379. package/dist/types/evm/contracts/index.d.ts.map +1 -1
  380. package/dist/types/evm/contracts/names.d.ts +7 -3
  381. package/dist/types/evm/contracts/names.d.ts.map +1 -1
  382. package/dist/types/evm/enums.d.ts +10 -3
  383. package/dist/types/evm/enums.d.ts.map +1 -1
  384. package/dist/types/evm/helpers.d.ts.map +1 -1
  385. package/dist/types/evm/releases/airdrops/index.d.ts +5753 -0
  386. package/dist/types/evm/releases/airdrops/index.d.ts.map +1 -1
  387. package/dist/types/evm/releases/airdrops/v1.3/deployments.d.ts.map +1 -1
  388. package/dist/types/evm/releases/airdrops/v2.0/deployments.d.ts.map +1 -1
  389. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleExecute.d.ts +343 -0
  390. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleExecute.d.ts.map +1 -0
  391. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleInstant.d.ts +323 -0
  392. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleInstant.d.ts.map +1 -0
  393. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLL.d.ts +443 -0
  394. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLL.d.ts.map +1 -0
  395. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLT.d.ts +458 -0
  396. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleLT.d.ts.map +1 -0
  397. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleVCA.d.ts +418 -0
  398. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierFactoryMerkleVCA.d.ts.map +1 -0
  399. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleExecute.d.ts +501 -0
  400. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleExecute.d.ts.map +1 -0
  401. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleInstant.d.ts +666 -0
  402. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleInstant.d.ts.map +1 -0
  403. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleLL.d.ts +875 -0
  404. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleLL.d.ts.map +1 -0
  405. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleLT.d.ts +837 -0
  406. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleLT.d.ts.map +1 -0
  407. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleVCA.d.ts +897 -0
  408. package/dist/types/evm/releases/airdrops/v3.0/abi/SablierMerkleVCA.d.ts.map +1 -0
  409. package/dist/types/evm/releases/airdrops/v3.0/abi.d.ts +5754 -0
  410. package/dist/types/evm/releases/airdrops/v3.0/abi.d.ts.map +1 -0
  411. package/dist/types/evm/releases/airdrops/v3.0/aliases.d.ts +9 -0
  412. package/dist/types/evm/releases/airdrops/v3.0/aliases.d.ts.map +1 -0
  413. package/dist/types/evm/releases/airdrops/v3.0/deployments.d.ts +4 -0
  414. package/dist/types/evm/releases/airdrops/v3.0/deployments.d.ts.map +1 -0
  415. package/dist/types/evm/releases/airdrops/v3.0/index.d.ts +5755 -0
  416. package/dist/types/evm/releases/airdrops/v3.0/index.d.ts.map +1 -0
  417. package/dist/types/evm/releases/airdrops/v3.0/manifest.d.ts +17 -0
  418. package/dist/types/evm/releases/airdrops/v3.0/manifest.d.ts.map +1 -0
  419. package/dist/types/evm/releases/bob/index.d.ts +2263 -0
  420. package/dist/types/evm/releases/bob/index.d.ts.map +1 -0
  421. package/dist/types/evm/releases/bob/v1.0/abi/SablierBob.d.ts +831 -0
  422. package/dist/types/evm/releases/bob/v1.0/abi/SablierBob.d.ts.map +1 -0
  423. package/dist/types/evm/releases/bob/v1.0/abi/SablierEscrow.d.ts +672 -0
  424. package/dist/types/evm/releases/bob/v1.0/abi/SablierEscrow.d.ts.map +1 -0
  425. package/dist/types/evm/releases/bob/v1.0/abi/SablierLidoAdapter.d.ts +757 -0
  426. package/dist/types/evm/releases/bob/v1.0/abi/SablierLidoAdapter.d.ts.map +1 -0
  427. package/dist/types/evm/releases/bob/v1.0/abi.d.ts +2260 -0
  428. package/dist/types/evm/releases/bob/v1.0/abi.d.ts.map +1 -0
  429. package/dist/types/evm/releases/bob/v1.0/aliases.d.ts +7 -0
  430. package/dist/types/evm/releases/bob/v1.0/aliases.d.ts.map +1 -0
  431. package/dist/types/evm/releases/bob/v1.0/deployments.d.ts +4 -0
  432. package/dist/types/evm/releases/bob/v1.0/deployments.d.ts.map +1 -0
  433. package/dist/types/evm/releases/bob/v1.0/index.d.ts +2261 -0
  434. package/dist/types/evm/releases/bob/v1.0/index.d.ts.map +1 -0
  435. package/dist/types/evm/releases/bob/v1.0/manifest.d.ts +7 -0
  436. package/dist/types/evm/releases/bob/v1.0/manifest.d.ts.map +1 -0
  437. package/dist/types/evm/releases/data.d.ts +1 -35673
  438. package/dist/types/evm/releases/data.d.ts.map +1 -1
  439. package/dist/types/evm/releases/flow/index.d.ts +1720 -0
  440. package/dist/types/evm/releases/flow/index.d.ts.map +1 -1
  441. package/dist/types/evm/releases/flow/v1.0/deployments.d.ts.map +1 -1
  442. package/dist/types/evm/releases/flow/v1.1/deployments.d.ts.map +1 -1
  443. package/dist/types/evm/releases/flow/v2.0/deployments.d.ts.map +1 -1
  444. package/dist/types/evm/releases/flow/v3.0/abi/SablierFlow.d.ts +1719 -0
  445. package/dist/types/evm/releases/flow/v3.0/abi/SablierFlow.d.ts.map +1 -0
  446. package/dist/types/evm/releases/flow/v3.0/abi.d.ts +1721 -0
  447. package/dist/types/evm/releases/flow/v3.0/abi.d.ts.map +1 -0
  448. package/dist/types/evm/releases/flow/v3.0/aliases.d.ts +5 -0
  449. package/dist/types/evm/releases/flow/v3.0/aliases.d.ts.map +1 -0
  450. package/dist/types/evm/releases/flow/v3.0/deployments.d.ts +4 -0
  451. package/dist/types/evm/releases/flow/v3.0/deployments.d.ts.map +1 -0
  452. package/dist/types/evm/releases/flow/v3.0/index.d.ts +1722 -0
  453. package/dist/types/evm/releases/flow/v3.0/index.d.ts.map +1 -0
  454. package/dist/types/evm/releases/flow/v3.0/manifest.d.ts +6 -0
  455. package/dist/types/evm/releases/flow/v3.0/manifest.d.ts.map +1 -0
  456. package/dist/types/evm/releases/lockup/index.d.ts +2699 -0
  457. package/dist/types/evm/releases/lockup/index.d.ts.map +1 -1
  458. package/dist/types/evm/releases/lockup/v1.1/deployments.d.ts.map +1 -1
  459. package/dist/types/evm/releases/lockup/v1.2/deployments.d.ts.map +1 -1
  460. package/dist/types/evm/releases/lockup/v2.0/deployments.d.ts.map +1 -1
  461. package/dist/types/evm/releases/lockup/v3.0/deployments.d.ts.map +1 -1
  462. package/dist/types/evm/releases/lockup/v4.0/abi/SablierBatchLockup.d.ts +521 -0
  463. package/dist/types/evm/releases/lockup/v4.0/abi/SablierBatchLockup.d.ts.map +1 -0
  464. package/dist/types/evm/releases/lockup/v4.0/abi/SablierLockup.d.ts +2178 -0
  465. package/dist/types/evm/releases/lockup/v4.0/abi/SablierLockup.d.ts.map +1 -0
  466. package/dist/types/evm/releases/lockup/v4.0/abi.d.ts +2700 -0
  467. package/dist/types/evm/releases/lockup/v4.0/abi.d.ts.map +1 -0
  468. package/dist/types/evm/releases/lockup/v4.0/aliases.d.ts +5 -0
  469. package/dist/types/evm/releases/lockup/v4.0/aliases.d.ts.map +1 -0
  470. package/dist/types/evm/releases/lockup/v4.0/deployments.d.ts +4 -0
  471. package/dist/types/evm/releases/lockup/v4.0/deployments.d.ts.map +1 -0
  472. package/dist/types/evm/releases/lockup/v4.0/index.d.ts +2701 -0
  473. package/dist/types/evm/releases/lockup/v4.0/index.d.ts.map +1 -0
  474. package/dist/types/evm/releases/lockup/v4.0/manifest.d.ts +9 -0
  475. package/dist/types/evm/releases/lockup/v4.0/manifest.d.ts.map +1 -0
  476. package/dist/types/evm/types.d.ts +2 -1
  477. package/dist/types/evm/types.d.ts.map +1 -1
  478. package/dist/types/helpers.d.ts.map +1 -1
  479. package/dist/types/sablier.d.ts.map +1 -1
  480. package/dist/types/shapes/airdrops.d.ts +1 -0
  481. package/dist/types/shapes/airdrops.d.ts.map +1 -1
  482. package/dist/types/shapes/constants.d.ts +45 -0
  483. package/dist/types/shapes/constants.d.ts.map +1 -1
  484. package/dist/types/shapes/enums.d.ts +2 -1
  485. package/dist/types/shapes/enums.d.ts.map +1 -1
  486. package/dist/types/shapes/index.d.ts +1 -0
  487. package/dist/types/shapes/index.d.ts.map +1 -1
  488. package/dist/types/shared/types.d.ts +1 -0
  489. package/dist/types/shared/types.d.ts.map +1 -1
  490. package/dist/types/solana/chains/chains.d.ts.map +1 -1
  491. package/package.json +4 -3
  492. package/dist/cjs/evm/comptroller/abi.js.map +0 -1
  493. package/dist/cjs/evm/comptroller/manifest.js.map +0 -1
  494. package/dist/esm/evm/comptroller/abi.js.map +0 -1
  495. package/dist/esm/evm/comptroller/manifest.js.map +0 -1
  496. package/dist/types/evm/comptroller/manifest.d.ts.map +0 -1
  497. /package/abi/comptroller/{SablierComptroller.json → v1.0/SablierComptroller.json} +0 -0
  498. /package/dist/cjs/evm/comptroller/{abi.js → v1.0/abi.js} +0 -0
  499. /package/dist/cjs/evm/comptroller/{manifest.js → v1.0/manifest.js} +0 -0
  500. /package/dist/esm/evm/comptroller/{abi.js → v1.0/abi.js} +0 -0
  501. /package/dist/esm/evm/comptroller/{manifest.js → v1.0/manifest.js} +0 -0
  502. /package/dist/types/evm/comptroller/{abi.d.ts → v1.0/abi.d.ts} +0 -0
  503. /package/dist/types/evm/comptroller/{manifest.d.ts → v1.0/manifest.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/evm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AliasMap, Repository, Shared } from \"@/src/shared/types.js\";\nimport type * as enums from \"./enums.js\";\n\nexport namespace EVM {\n /** Ethereum address in the format 0x followed by 40 hex characters. */\n export type Address = `0x${string}`;\n\n export type AbiMap = { [contractName: string]: readonly object[] };\n export type Chain = Shared.Chain & {\n /** Whether this is a zkEVM like zkSync. */\n isZK: boolean;\n rpc: Shared.Chain[\"rpc\"] & {\n /** Alchemy RPC URL generator. */\n alchemy?: (apiKey: string) => string;\n /** Infura RPC URL generator. */\n infura?: (apiKey: string) => string;\n /** RouteMesh RPC URL generator. */\n routemesh?: (apiKey: string) => string;\n };\n };\n\n /**\n * The base contract type for EVM chains.\n */\n export type Contract = Shared.Contract<Address, Protocol, Version>;\n\n /**\n * Reverse mapping of contracts so that we can look up contracts by address.\n */\n export type ContractCatalog = {\n [protocol in Protocol]: {\n [chainId: number]: {\n [address: Address]: Contract;\n };\n };\n };\n\n /**\n * Reverse mapping of contracts by alias for O(1) lookup.\n */\n export type AliasCatalog = {\n [protocol in Protocol]: {\n [chainId: number]: {\n [alias: string]: Contract;\n };\n };\n };\n\n /** @internal */\n export type ContractMap = Shared.ContractMap<Address>;\n\n export type Protocol = `${enums.Protocol}` | enums.Protocol;\n\n export type CompilerSettings = {\n /** The EVM version such as shanghai, paris, etc. */\n evmVersion: string;\n /** Whether the optimizer is enabled. */\n optimizer: boolean;\n /** The number of optimizer runs. */\n optimizerRuns: number;\n /** Optional salt used for CREATE2 deployment. None implies deployment using CREATE. */\n salt?: string;\n /** The solc version used. */\n solcVersion: `v${number}.${number}.${number}`;\n /** Whether the IR is used. */\n viaIR: boolean;\n /** Optional zk version used, only valid for zkEVM chains. */\n zkVersion?: `v${number}.${number}.${number}`;\n };\n\n /* -------------------------------------------------------------------------- */\n /* DEPLOYMENT */\n /* -------------------------------------------------------------------------- */\n\n export namespace Deployment {\n export type Standard = {\n chainId: number;\n contracts: Contract[];\n /** TODO: Compiler settings for the contract. Not implemented yet. */\n compilerSettings?: CompilerSettings;\n };\n\n export type LockupV1 = Standard & {\n core: Contract[];\n periphery: Contract[];\n };\n }\n\n export type Deployment = Deployment.Standard | Deployment.LockupV1;\n\n /* -------------------------------------------------------------------------- */\n /* MANIFEST */\n /* -------------------------------------------------------------------------- */\n\n /**\n * Contract names for a given protocol and version.\n * Note that this may contain both deployed contracts and abstract contracts that are not deployed.\n */\n export namespace Manifest {\n export type LockupV1 = {\n core: Standard;\n periphery: Standard;\n };\n\n export type Standard = Shared.Manifest;\n }\n\n export type Manifest = Manifest.LockupV1 | Manifest.Standard;\n\n /* -------------------------------------------------------------------------- */\n /* RELEASE */\n /* -------------------------------------------------------------------------- */\n\n /**\n * A collection of deployments for a given protocol and version.\n */\n export namespace Release {\n type Common<TAbiMap extends AbiMap = AbiMap> = {\n abi: TAbiMap;\n /** A map of contract names to their aliases, used in the Sablier Interface and the Graph. */\n aliases?: AliasMap;\n /** An array of contract names. */\n contractNames: string[];\n /** Whether this is the latest release for this protocol. */\n isLatest: boolean;\n /** The kind of release. */\n kind: \"standard\" | \"lockupV1\";\n /** The Sablier protocol released, e.g. `airdrops`. */\n protocol: Protocol;\n /** Repository information for the release. */\n repository?: Repository;\n /** The version of the release, e.g., `v1.3`. */\n version: Version;\n };\n\n /**\n * Lockup v1.x release used to separate Lockup contracts into core and periphery sub-categories.\n * @see https://github.com/sablier-labs/v2-periphery\n */\n export type LockupV1<TAbiMap extends AbiMap = AbiMap> = Common<TAbiMap> & {\n deployments: Deployment.LockupV1[];\n kind: \"lockupV1\";\n manifest: Manifest.LockupV1;\n };\n\n export type Standard<TAbiMap extends AbiMap = AbiMap> = Common<TAbiMap> & {\n deployments: Deployment.Standard[];\n kind: \"standard\";\n manifest: Manifest.Standard;\n };\n }\n\n export type Release = Release.Standard | Release.LockupV1;\n\n /* -------------------------------------------------------------------------- */\n /* VERSION */\n /* -------------------------------------------------------------------------- */\n\n export namespace Version {\n export type Airdrops = `${enums.Version.Airdrops}` | enums.Version.Airdrops;\n\n export type Flow = `${enums.Version.Flow}` | enums.Version.Flow;\n\n export type Legacy = `${enums.Version.Legacy}` | enums.Version.Legacy;\n\n export type Lockup = `${enums.Version.Lockup}` | enums.Version.Lockup;\n }\n export type Version = Version.Airdrops | Version.Flow | Version.Legacy | Version.Lockup;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/evm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AliasMap, Repository, Shared } from \"@/src/shared/types.js\";\nimport type * as enums from \"./enums.js\";\n\nexport namespace EVM {\n /** Ethereum address in the format 0x followed by 40 hex characters. */\n export type Address = `0x${string}`;\n\n export type AbiMap = { [contractName: string]: readonly object[] };\n export type Chain = Shared.Chain & {\n /** Whether this is a zkEVM like zkSync. */\n isZK: boolean;\n rpc: Shared.Chain[\"rpc\"] & {\n /** Alchemy RPC URL generator. */\n alchemy?: (apiKey: string) => string;\n /** Infura RPC URL generator. */\n infura?: (apiKey: string) => string;\n /** RouteMesh RPC URL generator. */\n routemesh?: (apiKey: string) => string;\n };\n };\n\n /**\n * The base contract type for EVM chains.\n */\n export type Contract = Shared.Contract<Address, Protocol, Version>;\n\n /**\n * Reverse mapping of contracts so that we can look up contracts by address.\n */\n export type ContractCatalog = {\n [protocol in Protocol]: {\n [chainId: number]: {\n [address: Address]: Contract;\n };\n };\n };\n\n /**\n * Reverse mapping of contracts by alias for O(1) lookup.\n */\n export type AliasCatalog = {\n [protocol in Protocol]: {\n [chainId: number]: {\n [alias: string]: Contract;\n };\n };\n };\n\n /** @internal */\n export type ContractMap = Shared.ContractMap<Address>;\n\n export type Protocol = `${enums.Protocol}` | enums.Protocol;\n\n export type CompilerSettings = {\n /** The EVM version such as shanghai, paris, etc. */\n evmVersion: string;\n /** Whether the optimizer is enabled. */\n optimizer: boolean;\n /** The number of optimizer runs. */\n optimizerRuns: number;\n /** Optional salt used for CREATE2 deployment. None implies deployment using CREATE. */\n salt?: string;\n /** The solc version used. */\n solcVersion: `v${number}.${number}.${number}`;\n /** Whether the IR is used. */\n viaIR: boolean;\n /** Optional zk version used, only valid for zkEVM chains. */\n zkVersion?: `v${number}.${number}.${number}`;\n };\n\n /* -------------------------------------------------------------------------- */\n /* DEPLOYMENT */\n /* -------------------------------------------------------------------------- */\n\n export namespace Deployment {\n export type Standard = {\n chainId: number;\n contracts: Contract[];\n /** TODO: Compiler settings for the contract. Not implemented yet. */\n compilerSettings?: CompilerSettings;\n };\n\n export type LockupV1 = Standard & {\n core: Contract[];\n periphery: Contract[];\n };\n }\n\n export type Deployment = Deployment.Standard | Deployment.LockupV1;\n\n /* -------------------------------------------------------------------------- */\n /* MANIFEST */\n /* -------------------------------------------------------------------------- */\n\n /**\n * Contract names for a given protocol and version.\n * Note that this may contain both deployed contracts and abstract contracts that are not deployed.\n */\n export namespace Manifest {\n export type LockupV1 = {\n core: Standard;\n periphery: Standard;\n };\n\n export type Standard = Shared.Manifest;\n }\n\n export type Manifest = Manifest.LockupV1 | Manifest.Standard;\n\n /* -------------------------------------------------------------------------- */\n /* RELEASE */\n /* -------------------------------------------------------------------------- */\n\n /**\n * A collection of deployments for a given protocol and version.\n */\n export namespace Release {\n type Common<TAbiMap extends AbiMap = AbiMap> = {\n abi: TAbiMap;\n /** A map of contract names to their aliases, used in the Sablier Interface and the Graph. */\n aliases?: AliasMap;\n /** An array of contract names. */\n contractNames: string[];\n /** Whether this is the latest release for this protocol. */\n isLatest: boolean;\n /** The kind of release. */\n kind: \"standard\" | \"lockupV1\";\n /** The Sablier protocol released, e.g. `airdrops`. */\n protocol: Protocol;\n /** Repository information for the release. */\n repository?: Repository;\n /** The version of the release, e.g., `v1.3`. */\n version: Version;\n };\n\n /**\n * Lockup v1.x release used to separate Lockup contracts into core and periphery sub-categories.\n * @see https://github.com/sablier-labs/v2-periphery\n */\n export type LockupV1<TAbiMap extends AbiMap = AbiMap> = Common<TAbiMap> & {\n deployments: Deployment.LockupV1[];\n kind: \"lockupV1\";\n manifest: Manifest.LockupV1;\n };\n\n export type Standard<TAbiMap extends AbiMap = AbiMap> = Common<TAbiMap> & {\n deployments: Deployment.Standard[];\n kind: \"standard\";\n manifest: Manifest.Standard;\n };\n }\n\n export type Release = Release.Standard | Release.LockupV1;\n\n /* -------------------------------------------------------------------------- */\n /* VERSION */\n /* -------------------------------------------------------------------------- */\n\n export namespace Version {\n export type Airdrops = `${enums.Version.Airdrops}` | enums.Version.Airdrops;\n\n export type Bob = `${enums.Version.Bob}` | enums.Version.Bob;\n\n export type Flow = `${enums.Version.Flow}` | enums.Version.Flow;\n\n export type Legacy = `${enums.Version.Legacy}` | enums.Version.Legacy;\n\n export type Lockup = `${enums.Version.Lockup}` | enums.Version.Lockup;\n }\n export type Version =\n | Version.Airdrops\n | Version.Bob\n | Version.Flow\n | Version.Legacy\n | Version.Lockup;\n}\n"]}
@@ -25,9 +25,9 @@ const enums_js_1 = require("./evm/enums.js");
25
25
  const helpers_js_1 = require("./evm/helpers.js");
26
26
  const chains_js_1 = require("./solana/chains/chains.js");
27
27
  const helpers_js_2 = require("./solana/helpers.js");
28
- const EVM_ONLY_PROTOCOLS = new Set([enums_js_1.Protocol.Flow, enums_js_1.Protocol.Legacy]);
29
28
  __exportStar(require("./evm/helpers.js"), exports);
30
29
  __exportStar(require("./solana/helpers.js"), exports);
30
+ const MULTI_ECOSYSTEM_PROTOCOLS = new Set([enums_js_1.Protocol.Airdrops, enums_js_1.Protocol.Lockup]);
31
31
  function compareVersions(a, b) {
32
32
  const [aMajor, aMinor] = a.slice(1).split(".").map(Number);
33
33
  const [bMajor, bMinor] = b.slice(1).split(".").map(Number);
@@ -54,7 +54,7 @@ exports.truncate = truncateAddress;
54
54
  function resolveStreamId(opts) {
55
55
  const { alias, chainId, tokenId, protocol } = opts;
56
56
  const isSolanaChain = chains_js_1.SOLANA_CHAIN_IDS.has(chainId);
57
- if (protocol && isSolanaChain && EVM_ONLY_PROTOCOLS.has(protocol)) {
57
+ if (protocol && isSolanaChain && !MULTI_ECOSYSTEM_PROTOCOLS.has(protocol)) {
58
58
  throw new Error(`Sablier SDK: Protocol "${protocol}" is EVM-only and not valid for Solana chain ${chainId}`);
59
59
  }
60
60
  if (isSolanaChain) {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA8BA,0CAQC;AAWD,0CAEC;AAWD,wCAEC;AAoBD,4CAKC;AAeD,0CAIC;AA6BD,0CA+BC;AAxKD,6CAAyD;AAEzD,iDAA+F;AAC/F,yDAA6D;AAC7D,oDAAmF;AAInF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAW,CAAC,IAAI,EAAE,mBAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAG3E,mDAAiC;AACjC,sDAAoC;AAkBpC,SAAgB,eAAe,CAAC,CAAU,EAAE,CAAU;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAWD,SAAgB,eAAe,CAAC,OAAgB,EAAE,MAAe;IAC/D,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAWD,SAAgB,cAAc,CAAC,OAAgB,EAAE,KAAc;IAC7D,OAAO,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AAoBD,SAAgB,gBAAgB,CAC9B,QAA4B,EAC5B,OAA4B;IAE5B,OAAO,IAAA,gCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAeD,SAAgB,eAAe,CAAC,OAAe,EAAE,OAAgC;IAC/E,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,IAAA,+BAAkB,EAAC,OAA8B,EAAE,OAAO,CAAC;QAC7D,CAAC,CAAC,IAAA,kCAAqB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAMY,QAAA,QAAQ,GAAG,eAAe,CAAC;AAuBxC,SAAgB,eAAe,CAAC,IAK/B;IACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,aAAa,GAAG,4BAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAGpD,IAAI,QAAQ,IAAI,aAAa,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAuB,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,gDAAgD,OAAO,EAAE,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,IAAA,kCAAqB,EAAC;YAC3B,KAAK;YACL,OAAO;YACP,QAAQ,EAAE,QAAmC;YAC7C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,+BAAkB,EAAC;QACxB,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,QAAgC;QAC1C,OAAO;KACR,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Protocol as EvmProtocol } from \"./evm/enums.js\";\nimport type { PayableEvmProtocol } from \"./evm/helpers.js\";\nimport { isEvmReleasePayable, resolveEvmStreamId, truncateEvmAddress } from \"./evm/helpers.js\";\nimport { SOLANA_CHAIN_IDS } from \"./solana/chains/chains.js\";\nimport { resolveSolanaStreamId, truncateSolanaAddress } from \"./solana/helpers.js\";\nimport type { Sablier, TruncateAddressOptions } from \"./types.js\";\n\n/** EVM-only protocols that don't exist on Solana */\nconst EVM_ONLY_PROTOCOLS = new Set([EvmProtocol.Flow, EvmProtocol.Legacy]);\n\n// Re-export platform-specific helpers\nexport * from \"./evm/helpers.js\";\nexport * from \"./solana/helpers.js\";\n\n// Re-export shared types\nexport type { TruncateAddressOptions } from \"./types.js\";\n\n/** Version type supporting both EVM and Solana protocols */\ntype Version = Sablier.EVM.Version | Sablier.Solana.Version;\n\n/**\n * Compare two semantic version strings.\n * @param a - First version string (e.g., \"v1.0\", \"v2.1\")\n * @param b - Second version string (e.g., \"v1.0\", \"v2.1\")\n * @returns -1 if a < b, 0 if a === b, 1 if a > b\n * @example\n * compareVersions(\"v1.0\", \"v2.0\") // -1\n * compareVersions(\"v2.0\", \"v1.0\") // 1\n * compareVersions(\"v1.1\", \"v1.1\") // 0\n */\nexport function compareVersions(a: Version, b: Version): number {\n const [aMajor, aMinor] = a.slice(1).split(\".\").map(Number);\n const [bMajor, bMinor] = b.slice(1).split(\".\").map(Number);\n\n if (aMajor !== bMajor) {\n return aMajor - bMajor;\n }\n return aMinor - bMinor;\n}\n\n/**\n * Check if a version comes before another chronologically.\n * @param version - The version to check\n * @param before - The reference version to compare against\n * @returns true if version comes before the reference version\n * @example\n * isVersionBefore(\"v1.0\", \"v2.0\") // true\n * isVersionBefore(\"v2.0\", \"v1.0\") // false\n */\nexport function isVersionBefore(version: Version, before: Version): boolean {\n return compareVersions(version, before) < 0;\n}\n\n/**\n * Check if a version comes after another chronologically.\n * @param version - The version to check\n * @param after - The reference version to compare against\n * @returns true if version comes after the reference version\n * @example\n * isVersionAfter(\"v2.0\", \"v1.0\") // true\n * isVersionAfter(\"v1.0\", \"v2.0\") // false\n */\nexport function isVersionAfter(version: Version, after: Version): boolean {\n return compareVersions(version, after) > 0;\n}\n\n/**\n * Check if a protocol release charges ETH fees on withdraw/claim operations.\n *\n * Starting from specific versions, Sablier contracts charge a small ETH fee when\n * recipients withdraw or claim tokens from streams and airdrops.\n *\n * @param protocol - The protocol name (\"airdrops\", \"flow\", or \"lockup\")\n * @param version - The version to check\n * @returns true if the release charges fees\n * @see {@link https://docs.sablier.com/concepts/fees} for fee details\n * @example\n * isReleasePayable(\"airdrops\", \"v1.2\") // false\n * isReleasePayable(\"airdrops\", \"v1.3\") // true\n * isReleasePayable(\"lockup\", \"v1.2\") // false\n * isReleasePayable(\"lockup\", \"v2.0\") // true\n * isReleasePayable(\"flow\", \"v1.0\") // false\n * isReleasePayable(\"flow\", \"v1.1\") // true\n */\nexport function isReleasePayable(\n protocol: PayableEvmProtocol,\n version: Sablier.EVM.Version\n): boolean {\n return isEvmReleasePayable(protocol, version);\n}\n\n/**\n * Truncate an Ethereum or Solana address for display purposes.\n * Automatically routes to the appropriate typed function based on address format.\n *\n * @param address - The address to truncate (Ethereum 0x-prefixed or Solana base58)\n * @param options - Optional truncation options with start and end character counts (default: 4 each)\n * @returns Truncated address in format \"0xcafe...beef\" or \"DYw8...NSKK\" or original if too short\n * @example\n * truncateAddress(\"0x1234567890abcdef1234567890abcdef12345678\") // \"0x1234...5678\"\n * truncateAddress(\"0x1234567890abcdef1234567890abcdef12345678\", { start: 6, end: 6 }) // \"0x123456...345678\"\n * truncateAddress(\"DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK\") // \"DYw8...NSKK\"\n * truncateAddress(\"0x123\") // \"0x123\" (too short, returns original)\n */\nexport function truncateAddress(address: string, options?: TruncateAddressOptions): string {\n return address.startsWith(\"0x\")\n ? truncateEvmAddress(address as Sablier.EVM.Address, options)\n : truncateSolanaAddress(address, options);\n}\n\n/**\n * Convenience alias for {@link truncateAddress}.\n * Also suitable for truncating arbitrary hex strings, not just addresses.\n */\nexport const truncate = truncateAddress;\n\n/**\n * Resolves a stream/airdrop entity ID for use with Sablier indexers.\n * Automatically routes to EVM or Solana based on chain ID.\n *\n * Format: `{contractAddress}-{chainId}-{tokenId}`\n *\n * @param opts - Configuration object\n * @param opts.alias - Contract/program alias (e.g., \"LL2\", \"LK2\", \"FL2\" for EVM; \"LL\" for Solana)\n * @param opts.chainId - Chain ID (EVM chains or Solana chains: 900000010, 900000020)\n * @param opts.tokenId - Stream/airdrop token ID\n * @param opts.protocol - Optional protocol to disambiguate aliases\n * @returns Stream ID in format \"0xabc...-1-123\" (EVM) or \"DYw8jC...-900000010-123\" (Solana)\n * @example\n * // EVM\n * resolveStreamId({ alias: \"LL2\", chainId: 1, tokenId: 123n })\n * // => \"0xabc...-1-123\"\n *\n * // Solana\n * resolveStreamId({ alias: \"LL\", chainId: 900000010, tokenId: 456n })\n * // => \"DYw8jC...-900000010-456\"\n */\nexport function resolveStreamId(opts: {\n alias: string;\n chainId: number;\n tokenId: bigint | string | number;\n protocol?: Sablier.EVM.Protocol | Sablier.Solana.Protocol;\n}): string {\n const { alias, chainId, tokenId, protocol } = opts;\n const isSolanaChain = SOLANA_CHAIN_IDS.has(chainId);\n\n // Validate protocol/chain compatibility\n if (protocol && isSolanaChain && EVM_ONLY_PROTOCOLS.has(protocol as EvmProtocol)) {\n throw new Error(\n `Sablier SDK: Protocol \"${protocol}\" is EVM-only and not valid for Solana chain ${chainId}`\n );\n }\n\n if (isSolanaChain) {\n return resolveSolanaStreamId({\n alias,\n chainId,\n protocol: protocol as Sablier.Solana.Protocol,\n tokenId,\n });\n }\n\n return resolveEvmStreamId({\n alias,\n chainId,\n protocol: protocol as Sablier.EVM.Protocol,\n tokenId,\n });\n}\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA8BA,0CAQC;AAWD,0CAEC;AAWD,wCAEC;AAoBD,4CAKC;AAeD,0CAIC;AA6BD,0CA+BC;AAxKD,6CAAyD;AAEzD,iDAA+F;AAC/F,yDAA6D;AAC7D,oDAAmF;AAInF,mDAAiC;AACjC,sDAAoC;AASpC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAW,CAAC,QAAQ,EAAE,mBAAW,CAAC,MAAM,CAAC,CAAC,CAAC;AAYtF,SAAgB,eAAe,CAAC,CAAU,EAAE,CAAU;IACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,GAAG,MAAM,CAAC;AACzB,CAAC;AAWD,SAAgB,eAAe,CAAC,OAAgB,EAAE,MAAe;IAC/D,OAAO,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9C,CAAC;AAWD,SAAgB,cAAc,CAAC,OAAgB,EAAE,KAAc;IAC7D,OAAO,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,CAAC;AAoBD,SAAgB,gBAAgB,CAC9B,QAA4B,EAC5B,OAA4B;IAE5B,OAAO,IAAA,gCAAmB,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAeD,SAAgB,eAAe,CAAC,OAAe,EAAE,OAAgC;IAC/E,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,IAAA,+BAAkB,EAAC,OAA8B,EAAE,OAAO,CAAC;QAC7D,CAAC,CAAC,IAAA,kCAAqB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAMY,QAAA,QAAQ,GAAG,eAAe,CAAC;AAuBxC,SAAgB,eAAe,CAAC,IAK/B;IACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,aAAa,GAAG,4BAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAGpD,IAAI,QAAQ,IAAI,aAAa,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,QAAuB,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,gDAAgD,OAAO,EAAE,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,IAAA,kCAAqB,EAAC;YAC3B,KAAK;YACL,OAAO;YACP,QAAQ,EAAE,QAAmC;YAC7C,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAA,+BAAkB,EAAC;QACxB,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,QAAgC;QAC1C,OAAO;KACR,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Protocol as EvmProtocol } from \"./evm/enums.js\";\nimport type { PayableEvmProtocol } from \"./evm/helpers.js\";\nimport { isEvmReleasePayable, resolveEvmStreamId, truncateEvmAddress } from \"./evm/helpers.js\";\nimport { SOLANA_CHAIN_IDS } from \"./solana/chains/chains.js\";\nimport { resolveSolanaStreamId, truncateSolanaAddress } from \"./solana/helpers.js\";\nimport type { Sablier, TruncateAddressOptions } from \"./types.js\";\n\n// Re-export platform-specific helpers\nexport * from \"./evm/helpers.js\";\nexport * from \"./solana/helpers.js\";\n\n// Re-export shared types\nexport type { TruncateAddressOptions } from \"./types.js\";\n\n/** Version type supporting both EVM and Solana protocols */\ntype Version = Sablier.EVM.Version | Sablier.Solana.Version;\n\n/** Protocols that exist on both EVM and Solana ecosystems */\nconst MULTI_ECOSYSTEM_PROTOCOLS = new Set([EvmProtocol.Airdrops, EvmProtocol.Lockup]);\n\n/**\n * Compare two semantic version strings.\n * @param a - First version string (e.g., \"v1.0\")\n * @param b - Second version string (e.g., \"v1.0\")\n * @returns -1 if a < b, 0 if a === b, 1 if a > b\n * @example\n * compareVersions(\"v1.0\", \"v2.0\") // -1\n * compareVersions(\"v2.0\", \"v1.0\") // 1\n * compareVersions(\"v1.1\", \"v1.1\") // 0\n */\nexport function compareVersions(a: Version, b: Version): number {\n const [aMajor, aMinor] = a.slice(1).split(\".\").map(Number);\n const [bMajor, bMinor] = b.slice(1).split(\".\").map(Number);\n\n if (aMajor !== bMajor) {\n return aMajor - bMajor;\n }\n return aMinor - bMinor;\n}\n\n/**\n * Check if a version comes before another chronologically.\n * @param version - The version to check\n * @param before - The reference version to compare against\n * @returns true if version comes before the reference version\n * @example\n * isVersionBefore(\"v1.0\", \"v2.0\") // true\n * isVersionBefore(\"v2.0\", \"v1.0\") // false\n */\nexport function isVersionBefore(version: Version, before: Version): boolean {\n return compareVersions(version, before) < 0;\n}\n\n/**\n * Check if a version comes after another chronologically.\n * @param version - The version to check\n * @param after - The reference version to compare against\n * @returns true if version comes after the reference version\n * @example\n * isVersionAfter(\"v2.0\", \"v1.0\") // true\n * isVersionAfter(\"v1.0\", \"v2.0\") // false\n */\nexport function isVersionAfter(version: Version, after: Version): boolean {\n return compareVersions(version, after) > 0;\n}\n\n/**\n * Check if a protocol release charges ETH fees on withdraw/claim operations.\n *\n * Starting from specific versions, Sablier contracts charge a small ETH fee when\n * recipients withdraw or claim tokens from streams and airdrops.\n *\n * @param protocol - The protocol name (\"airdrops\", \"flow\", or \"lockup\")\n * @param version - The version to check\n * @returns true if the release charges fees\n * @see {@link https://docs.sablier.com/concepts/fees} for fee details\n * @example\n * isReleasePayable(\"airdrops\", \"v1.2\") // false\n * isReleasePayable(\"airdrops\", \"v1.3\") // true\n * isReleasePayable(\"lockup\", \"v1.2\") // false\n * isReleasePayable(\"lockup\", \"v2.0\") // true\n * isReleasePayable(\"flow\", \"v1.0\") // false\n * isReleasePayable(\"flow\", \"v1.1\") // true\n */\nexport function isReleasePayable(\n protocol: PayableEvmProtocol,\n version: Sablier.EVM.Version\n): boolean {\n return isEvmReleasePayable(protocol, version);\n}\n\n/**\n * Truncate an Ethereum or Solana address for display purposes.\n * Automatically routes to the appropriate typed function based on address format.\n *\n * @param address - The address to truncate (Ethereum 0x-prefixed or Solana base58)\n * @param options - Optional truncation options with start and end character counts (default: 4 each)\n * @returns Truncated address in format \"0xcafe...beef\" or \"DYw8...NSKK\" or original if too short\n * @example\n * truncateAddress(\"0x1234567890abcdef1234567890abcdef12345678\") // \"0x1234...5678\"\n * truncateAddress(\"0x1234567890abcdef1234567890abcdef12345678\", { start: 6, end: 6 }) // \"0x123456...345678\"\n * truncateAddress(\"DYw8jCTfwHNRJhhmFcbXvVDTqWMEVFBX6ZKUmG5CNSKK\") // \"DYw8...NSKK\"\n * truncateAddress(\"0x123\") // \"0x123\" (too short, returns original)\n */\nexport function truncateAddress(address: string, options?: TruncateAddressOptions): string {\n return address.startsWith(\"0x\")\n ? truncateEvmAddress(address as Sablier.EVM.Address, options)\n : truncateSolanaAddress(address, options);\n}\n\n/**\n * Convenience alias for {@link truncateAddress}.\n * Also suitable for truncating arbitrary hex strings, not just addresses.\n */\nexport const truncate = truncateAddress;\n\n/**\n * Resolves a stream/airdrop entity ID for use with Sablier indexers.\n * Automatically routes to EVM or Solana based on chain ID.\n *\n * Format: `{contractAddress}-{chainId}-{tokenId}`\n *\n * @param opts - Configuration object\n * @param opts.alias - Contract/program alias (e.g., \"LL2\", \"LK2\", \"FL2\" for EVM; \"LL\" for Solana)\n * @param opts.chainId - Chain ID (EVM chains or Solana chains: 900000010, 900000020)\n * @param opts.tokenId - Stream/airdrop token ID\n * @param opts.protocol - Optional protocol to disambiguate aliases\n * @returns Stream ID in format \"0xabc...-1-123\" (EVM) or \"DYw8jC...-900000010-123\" (Solana)\n * @example\n * // EVM\n * resolveStreamId({ alias: \"LL2\", chainId: 1, tokenId: 123n })\n * // => \"0xabc...-1-123\"\n *\n * // Solana\n * resolveStreamId({ alias: \"LL\", chainId: 900000010, tokenId: 456n })\n * // => \"DYw8jC...-900000010-456\"\n */\nexport function resolveStreamId(opts: {\n alias: string;\n chainId: number;\n tokenId: bigint | string | number;\n protocol?: Sablier.EVM.Protocol | Sablier.Solana.Protocol;\n}): string {\n const { alias, chainId, tokenId, protocol } = opts;\n const isSolanaChain = SOLANA_CHAIN_IDS.has(chainId);\n\n // Validate protocol/chain compatibility\n if (protocol && isSolanaChain && !MULTI_ECOSYSTEM_PROTOCOLS.has(protocol as EvmProtocol)) {\n throw new Error(\n `Sablier SDK: Protocol \"${protocol}\" is EVM-only and not valid for Solana chain ${chainId}`\n );\n }\n\n if (isSolanaChain) {\n return resolveSolanaStreamId({\n alias,\n chainId,\n protocol: protocol as Sablier.Solana.Protocol,\n tokenId,\n });\n }\n\n return resolveEvmStreamId({\n alias,\n chainId,\n protocol: protocol as Sablier.EVM.Protocol,\n tokenId,\n });\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/internal/factories/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPath } from \"@/src/internal/utils/object-path.js\";\n\n/**\n * Factory function to create releases queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n */\nexport function createReleasesQueries<\n TProtocol extends string,\n TVersion extends string,\n TRelease extends {\n version: TVersion;\n deployments: Array<{ chainId: number }>;\n isLatest?: boolean;\n },\n>(config: {\n releases: Record<TProtocol, Record<string, TRelease>>;\n ProtocolEnum: Record<string, TProtocol>;\n}) {\n const { releases, ProtocolEnum } = config;\n\n return {\n get: (opts: { protocol: TProtocol; version: TVersion }): TRelease | undefined => {\n const { protocol, version } = opts;\n return getPath<TRelease>(releases, [protocol, version]);\n },\n /**\n * Get all releases for a protocol.\n * - {} ⇒ all releases for all protocols\n * - {protocol} ⇒ all releases for that protocol\n */\n getAll: (opts?: { protocol?: TProtocol }): TRelease[] => {\n const { protocol } = opts || {};\n if (protocol) {\n return Object.values(releases[protocol]) as TRelease[];\n }\n // Recursively get all releases from all protocols in the enum\n return Object.values(ProtocolEnum).flatMap((protocolName) =>\n Object.values(releases[protocolName])\n ) as TRelease[];\n },\n /**\n * Get the first release:\n * - {protocol} ⇒ first overall\n * - {protocol,chainId} ⇒ first on that chain\n */\n getFirst: (opts: { protocol: TProtocol; chainId?: number }): TRelease | undefined => {\n const { protocol, chainId } = opts;\n const list = Object.values(releases[protocol]) as TRelease[];\n\n if (chainId) {\n return list.find((r) => r.deployments.some((d) => d.chainId === chainId));\n }\n\n return list[0];\n },\n /**\n * Get the latest release for a protocol.\n * - {protocol}\n */\n getLatest: (opts: { protocol: TProtocol }): TRelease => {\n const list = Object.values(releases[opts.protocol]) as TRelease[];\n const latest = list.at(-1);\n if (!latest || !latest.isLatest) {\n throw new Error(\n `Sablier SDK: No latest release found for Sablier ${opts.protocol}. Please report on GitHub.`\n );\n }\n return latest;\n },\n };\n}\n\n/**\n * Factory function to create contract queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n *\n * @template TProtocol - The protocol type\n * @template TContract - The contract/program type with name and address fields\n * @template TDeployment - The deployment type containing contracts or programs\n * @template TRelease - The release type\n * @template TCatalog - The catalog type for reverse lookups\n * @template TAliasCatalog - The alias catalog type for alias-based lookups\n */\nexport function createContractsQueries<\n TProtocol extends string,\n TContract extends { name: string; address: string; alias?: string },\n TDeployment extends { chainId: number; contracts?: TContract[]; programs?: TContract[] },\n TRelease extends { version: string; deployments: TDeployment[] },\n TCatalog,\n TAliasCatalog = undefined,\n>(config: {\n getAliasCatalog?: () => TAliasCatalog;\n catalog: TCatalog;\n releasesQueries: {\n getAll: (opts?: { protocol?: TProtocol }) => TRelease[];\n getLatest: (opts: { protocol: TProtocol }) => TRelease;\n };\n protocols: TProtocol[];\n normalizeAddress: (address: string) => string;\n /** Field name for contracts (e.g., 'contracts' for EVM, 'programs' for Solana) */\n contractsField: \"contracts\" | \"programs\";\n}) {\n const { getAliasCatalog, catalog, releasesQueries, protocols, normalizeAddress, contractsField } =\n config;\n\n // Helper to safely get contracts/programs from deployment\n const getItems = (deployment: TDeployment | undefined): TContract[] => {\n if (!deployment) {\n return [];\n }\n return (deployment[contractsField] as TContract[]) || [];\n };\n\n // Helper to find deployment by chainId and get its contracts\n const getDeploymentItems = (release: TRelease, chainId: number): TContract[] => {\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n return getItems(dep);\n };\n\n // Helper to find contract by name in a release\n const findByName = (release: TRelease, chainId: number, name: string): TContract | undefined => {\n return getDeploymentItems(release, chainId).find((c) => c.name === name);\n };\n\n // Helper to find contract by address in a release\n const findByAddress = (\n release: TRelease,\n chainId: number,\n address: string\n ): TContract | undefined => {\n return getDeploymentItems(release, chainId).find(\n (c) => normalizeAddress(c.address) === address\n );\n };\n\n // Helper to check if release contains address on chain\n const releaseHasAddress = (release: TRelease, chainId: number, address: string): boolean => {\n return getDeploymentItems(release, chainId).some(\n (c) => normalizeAddress(c.address) === address\n );\n };\n\n // Helper to search catalog across all protocols\n const searchCatalog = (chainId: number, address: string): TContract | undefined => {\n for (const p of protocols) {\n const contract = getPath<TContract>(catalog, [p, chainId, address]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n };\n\n // Helper to find contract by address scoped to protocol (with duplicate check)\n const findByAddressInProtocol = (\n protocol: TProtocol,\n chainId: number,\n address: string,\n originalAddress: string\n ): TContract | undefined => {\n const releases = releasesQueries.getAll({ protocol });\n const matches = releases.filter((rel) => releaseHasAddress(rel, chainId, address));\n\n if (matches.length > 1) {\n const versions = matches.map((r) => r.version).join(\", \");\n throw new Error(\n `Sablier SDK: Contract ${originalAddress} exists in multiple releases (${versions}) for \"${protocol}\". ` +\n \"Specify release: { chainId, contractAddress, release }\"\n );\n }\n\n return getPath<TContract>(catalog, [protocol, chainId, address]);\n };\n\n // Helper to filter deployments by chainId and extract contracts\n const filterDeploymentsAndGetItems = (\n deployments: TDeployment[],\n chainId?: number\n ): TContract[] | undefined => {\n const filtered = chainId ? deployments.filter((d) => d.chainId === chainId) : deployments;\n if (chainId && filtered.length === 0) {\n return undefined;\n }\n return filtered.flatMap(getItems);\n };\n\n return {\n /**\n * Get a single contract using the following options:\n *\n * - { chainId, contractName, release }\n * - { chainId, contractAddress, protocol }\n * - { chainId, contractAddress, release }\n * - { chainId, contractAddress, protocol, release }\n *\n * Note: If a contract address exists in multiple releases for the same protocol, you must specify the release.\n */\n get: (opts: {\n chainId: number;\n contractAddress?: string;\n contractName?: string;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract | undefined => {\n const { chainId, contractAddress, contractName, protocol, release } = opts;\n\n // Validation\n if (contractAddress && contractName) {\n throw new Error(\"Sablier SDK: Cannot specify both contractAddress and contractName\");\n }\n\n // Query by name requires release\n if (contractName) {\n if (!release) {\n throw new Error(\"Sablier SDK: contractName requires release to be specified\");\n }\n return findByName(release, chainId, contractName);\n }\n\n // Query by address\n if (!contractAddress) {\n return undefined;\n }\n\n const address = normalizeAddress(contractAddress);\n\n // Scoped to specific release\n if (release) {\n return findByAddress(release, chainId, address);\n }\n\n // Scoped to protocol - check for duplicates across releases\n if (protocol) {\n return findByAddressInProtocol(protocol, chainId, address, contractAddress);\n }\n\n // Fallback: search all protocols\n return searchCatalog(chainId, address);\n },\n\n /**\n * Get many contracts.\n * - no options ⇒ all\n * - { chainId } ⇒ all for that chain\n * - { protocol } ⇒ all for that protocol\n * - { protocol, chainId } ⇒ all for that protocol and chain\n * - { release } ⇒ all deployments of that release\n * - { release, chainId } ⇒ all for that release and chain\n */\n getAll: (opts?: {\n chainId?: number;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract[] | undefined => {\n const { protocol, chainId, release } = opts || {};\n\n if (protocol && release) {\n throw new Error(\"Sablier SDK: Cannot specify both protocol and release as query options\");\n }\n\n // by protocol\n if (protocol) {\n const releases = releasesQueries.getAll({ protocol });\n const deployments = releases.flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n }\n\n // by explicit release\n if (release) {\n return filterDeploymentsAndGetItems(release.deployments, chainId);\n }\n\n // by chain id or no filters\n const deployments = releasesQueries.getAll().flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n },\n\n /**\n * Get a contract by its alias.\n * Aliases are version-specific (e.g., LK = Lockup v2.0, LK2 = Lockup v3.0).\n *\n * @example\n * contractsQueries.getByAlias({ alias: \"LK2\", chainId: 1 })\n * contractsQueries.getByAlias({ alias: \"FL3\", chainId: 137, protocol: \"flow\" })\n */\n getByAlias: (opts: {\n alias: string;\n chainId: number;\n protocol?: TProtocol;\n }): TContract | undefined => {\n const { alias, chainId, protocol } = opts;\n\n if (!getAliasCatalog) {\n return undefined;\n }\n\n const aliasCatalog = getAliasCatalog();\n if (!aliasCatalog) {\n return undefined;\n }\n\n if (protocol) {\n return getPath<TContract>(aliasCatalog, [protocol, chainId, alias]);\n }\n\n // Search all protocols\n for (const p of protocols) {\n const contract = getPath<TContract>(aliasCatalog, [p, chainId, alias]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n },\n\n /**\n * Get the latest contract by name for a protocol.\n * - { chainId, contractName, protocol }\n */\n getLatestByName: (opts: {\n chainId: number;\n contractName: string;\n protocol: TProtocol;\n }): TContract | undefined => {\n const { chainId, contractName, protocol } = opts;\n const release = releasesQueries.getLatest({ protocol });\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n const items = getItems(dep);\n return items.find((c) => c.name === contractName);\n },\n };\n}\n"]}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/internal/factories/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { getPath } from \"@/src/internal/utils/object-path.js\";\n\n/**\n * Factory function to create releases queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n */\nexport function createReleasesQueries<\n TProtocol extends string,\n TVersion extends string,\n TRelease extends {\n version: TVersion;\n deployments: Array<{ chainId: number }>;\n isLatest?: boolean;\n },\n>(config: {\n releases: Record<TProtocol, Record<string, TRelease>>;\n ProtocolEnum: Record<string, TProtocol>;\n}) {\n const { releases, ProtocolEnum } = config;\n\n return {\n get: (opts: { protocol: TProtocol; version: TVersion }): TRelease | undefined => {\n const { protocol, version } = opts;\n return getPath<TRelease>(releases, [protocol, version]);\n },\n /**\n * Get all releases for a protocol.\n * - {} ⇒ all releases for all protocols\n * - {protocol} ⇒ all releases for that protocol\n */\n getAll: (opts?: { protocol?: TProtocol }): TRelease[] => {\n const { protocol } = opts || {};\n if (protocol) {\n return Object.values(releases[protocol]) as TRelease[];\n }\n // Recursively get all releases from all protocols in the enum\n return Object.values(ProtocolEnum).flatMap((protocolName) =>\n Object.values(releases[protocolName])\n ) as TRelease[];\n },\n /**\n * Get the first release:\n * - {protocol} ⇒ first overall\n * - {protocol,chainId} ⇒ first on that chain\n */\n getFirst: (opts: { protocol: TProtocol; chainId?: number }): TRelease | undefined => {\n const { protocol, chainId } = opts;\n const list = Object.values(releases[protocol]) as TRelease[];\n\n if (chainId) {\n return list.find((r) => r.deployments.some((d) => d.chainId === chainId));\n }\n\n return list[0];\n },\n /**\n * Get the latest release for a protocol.\n * - {protocol}\n */\n getLatest: (opts: { protocol: TProtocol }): TRelease => {\n const list = Object.values(releases[opts.protocol]) as TRelease[];\n const latest = list.at(-1);\n if (!latest || !latest.isLatest) {\n throw new Error(\n `Sablier SDK: No latest release found for Sablier ${opts.protocol}. Please report on GitHub.`\n );\n }\n return latest;\n },\n };\n}\n\n/**\n * Factory function to create contract queries with platform-specific configuration.\n * This eliminates code duplication between EVM and Solana implementations.\n *\n * @template TProtocol - The protocol type\n * @template TContract - The contract/program type with name and address fields\n * @template TDeployment - The deployment type containing contracts or programs\n * @template TRelease - The release type\n * @template TCatalog - The catalog type for reverse lookups\n * @template TAliasCatalog - The alias catalog type for alias-based lookups\n */\nexport function createContractsQueries<\n TProtocol extends string,\n TContract extends { name: string; address: string; alias?: string },\n TDeployment extends { chainId: number; contracts?: TContract[]; programs?: TContract[] },\n TRelease extends { version: string; deployments: TDeployment[] },\n TCatalog,\n TAliasCatalog = undefined,\n>(config: {\n getAliasCatalog?: () => TAliasCatalog;\n catalog: TCatalog;\n releasesQueries: {\n getAll: (opts?: { protocol?: TProtocol }) => TRelease[];\n getLatest: (opts: { protocol: TProtocol }) => TRelease;\n };\n protocols: TProtocol[];\n normalizeAddress: (address: string) => string;\n /** Field name for contracts (e.g., 'contracts' for EVM, 'programs' for Solana) */\n contractsField: \"contracts\" | \"programs\";\n}) {\n const { getAliasCatalog, catalog, releasesQueries, protocols, normalizeAddress, contractsField } =\n config;\n\n // Helper to safely get contracts/programs from deployment\n const getItems = (deployment: TDeployment | undefined): TContract[] => {\n if (!deployment) {\n return [];\n }\n return (deployment[contractsField] as TContract[]) || [];\n };\n\n // Helper to find deployment by chainId and get its contracts\n const getDeploymentItems = (release: TRelease, chainId: number): TContract[] => {\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n return getItems(dep);\n };\n\n // Helper to find contract by name in a release\n const findByName = (release: TRelease, chainId: number, name: string): TContract | undefined => {\n return getDeploymentItems(release, chainId).find((c) => c.name === name);\n };\n\n // Helper to find contract by address in a release\n const findByAddress = (\n release: TRelease,\n chainId: number,\n address: string\n ): TContract | undefined => {\n return getDeploymentItems(release, chainId).find(\n (c) => normalizeAddress(c.address) === address\n );\n };\n\n // Helper to check if release contains address on chain\n const releaseHasAddress = (release: TRelease, chainId: number, address: string): boolean => {\n return getDeploymentItems(release, chainId).some(\n (c) => normalizeAddress(c.address) === address\n );\n };\n\n // Helper to search catalog across all protocols\n const searchCatalog = (chainId: number, address: string): TContract | undefined => {\n for (const p of protocols) {\n const contract = getPath<TContract>(catalog, [p, chainId, address]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n };\n\n // Helper to find contract by address scoped to protocol (with duplicate check)\n const findByAddressInProtocol = (\n protocol: TProtocol,\n chainId: number,\n address: string,\n originalAddress: string\n ): TContract | undefined => {\n const releases = releasesQueries.getAll({ protocol });\n const matches = releases.filter((rel) => releaseHasAddress(rel, chainId, address));\n\n if (matches.length > 1) {\n const versions = matches.map((r) => r.version).join(\", \");\n throw new Error(\n `Sablier SDK: Contract ${originalAddress} exists in multiple releases (${versions}) for \"${protocol}\". ` +\n \"Specify release: { chainId, contractAddress, release }\"\n );\n }\n\n return getPath<TContract>(catalog, [protocol, chainId, address]);\n };\n\n // Helper to filter deployments by chainId and extract contracts\n const filterDeploymentsAndGetItems = (\n deployments: TDeployment[],\n chainId?: number\n ): TContract[] | undefined => {\n const filtered = chainId ? deployments.filter((d) => d.chainId === chainId) : deployments;\n if (chainId && filtered.length === 0) {\n return undefined;\n }\n return filtered.flatMap(getItems);\n };\n\n return {\n /**\n * Get a single contract using the following options:\n *\n * - { chainId, contractName, release }\n * - { chainId, contractAddress, protocol }\n * - { chainId, contractAddress, release }\n * - { chainId, contractAddress, protocol, release }\n *\n * Note: If a contract address exists in multiple releases for the same protocol, you must specify the release.\n */\n get: (opts: {\n chainId: number;\n contractAddress?: string;\n contractName?: string;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract | undefined => {\n const { chainId, contractAddress, contractName, protocol, release } = opts;\n\n // Validation\n if (contractAddress && contractName) {\n throw new Error(\"Sablier SDK: Cannot specify both contractAddress and contractName\");\n }\n\n // Query by name requires release\n if (contractName) {\n if (!release) {\n throw new Error(\"Sablier SDK: contractName requires release to be specified\");\n }\n return findByName(release, chainId, contractName);\n }\n\n // Query by address\n if (!contractAddress) {\n return undefined;\n }\n\n const address = normalizeAddress(contractAddress);\n\n // Scoped to specific release\n if (release) {\n return findByAddress(release, chainId, address);\n }\n\n // Scoped to protocol - check for duplicates across releases\n if (protocol) {\n return findByAddressInProtocol(protocol, chainId, address, contractAddress);\n }\n\n // Fallback: search all protocols\n return searchCatalog(chainId, address);\n },\n\n /**\n * Get many contracts.\n * - no options ⇒ all\n * - { chainId } ⇒ all for that chain\n * - { protocol } ⇒ all for that protocol\n * - { protocol, chainId } ⇒ all for that protocol and chain\n * - { release } ⇒ all deployments of that release\n * - { release, chainId } ⇒ all for that release and chain\n */\n getAll: (opts?: {\n chainId?: number;\n protocol?: TProtocol;\n release?: TRelease;\n }): TContract[] | undefined => {\n const { protocol, chainId, release } = opts || {};\n\n if (protocol && release) {\n throw new Error(\"Sablier SDK: Cannot specify both protocol and release as query options\");\n }\n\n // by protocol\n if (protocol) {\n const releases = releasesQueries.getAll({ protocol });\n const deployments = releases.flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n }\n\n // by explicit release\n if (release) {\n return filterDeploymentsAndGetItems(release.deployments, chainId);\n }\n\n // by chain id or no filters\n const deployments = releasesQueries.getAll().flatMap((r) => r.deployments);\n return filterDeploymentsAndGetItems(deployments, chainId);\n },\n\n /**\n * Get a contract by its alias.\n * Aliases are version-specific (e.g., LK = Lockup v2.0, LK2 = Lockup v3.0, LK3 = Lockup v4.0).\n *\n * @example\n * contractsQueries.getByAlias({ alias: \"LK2\", chainId: 1 })\n * contractsQueries.getByAlias({ alias: \"FL3\", chainId: 137, protocol: \"flow\" })\n */\n getByAlias: (opts: {\n alias: string;\n chainId: number;\n protocol?: TProtocol;\n }): TContract | undefined => {\n const { alias, chainId, protocol } = opts;\n\n if (!getAliasCatalog) {\n return undefined;\n }\n\n const aliasCatalog = getAliasCatalog();\n if (!aliasCatalog) {\n return undefined;\n }\n\n if (protocol) {\n return getPath<TContract>(aliasCatalog, [protocol, chainId, alias]);\n }\n\n // Search all protocols\n for (const p of protocols) {\n const contract = getPath<TContract>(aliasCatalog, [p, chainId, alias]);\n if (contract) {\n return contract;\n }\n }\n return undefined;\n },\n\n /**\n * Get the latest contract by name for a protocol.\n * - { chainId, contractName, protocol }\n */\n getLatestByName: (opts: {\n chainId: number;\n contractName: string;\n protocol: TProtocol;\n }): TContract | undefined => {\n const { chainId, contractName, protocol } = opts;\n const release = releasesQueries.getLatest({ protocol });\n const dep = release.deployments.find((d) => d.chainId === chainId) as TDeployment | undefined;\n const items = getItems(dep);\n return items.find((c) => c.name === contractName);\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"sablier.js","sourceRoot":"","sources":["../../src/sablier.ts"],"names":[],"mappings":";;;AAyBA,wDAA4E;AAC5E,6DAAkE;AAClE,2DAAqF;AACrF,0DAAkF;AAClF,2DAAkF;AAClF,6DAAwF;AACxF,6DAAwF;AAMxF,MAAM,qBAAqB,GAAG;IAM5B,GAAG,EAAE,CAAC,IAGL,EAAsC,EAAE;QACvC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAA6B,EAAE;QACrC,OAAO,4BAAkB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC;CACF,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAM/B,GAAG,EAAE,CAAC,IAGL,EAAyC,EAAE;QAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAAgC,EAAE;QACxC,OAAO,4BAAqB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;CACF,CAAC;AAEF,MAAM,GAAG,GAAG;IACV,MAAM,EAAE,0BAAgB;IACxB,WAAW,EAAE,+BAAkB;IAC/B,SAAS,EAAE,6BAAmB;IAC9B,WAAW,EAAE,qBAAqB;IAClC,QAAQ,EAAE,4BAAkB;CAC7B,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,0BAAmB;IAC3B,WAAW,EAAE,wBAAwB;IACrC,QAAQ,EAAE,4BAAqB;IAC/B,QAAQ,EAAE,4BAAqB;CAChC,CAAC;AAEW,QAAA,OAAO,GAAG;IACrB,GAAG,GAAG;IACN,GAAG;IACH,MAAM;CACP,CAAC","sourcesContent":["/**\n * @file This file exports the Sablier object, singleton that contains the queries for the\n * chains, contracts, and releases for both evm and solana compatible chains.\n *\n * @example\n * ```typescript\n * import { sablier } from \"sablier\";\n *\n * // EVM\n * let lockupContract = sablier.evm.contracts.get({\n * chainId: mainnet.id,\n * contractName: \"SablierLockup\",\n * release: releases.lockup[\"v2.0\"],\n * });\n *\n * // Can also be accessed like this:\n * lockupContract = sablier.contracts.get({\n * chainId: mainnet.id,\n * contractName: \"SablierLockup\",\n * release: releases.lockup[\"v2.0\"],\n * });\n * const { address } = lockupContract;\n * ```\n */\n\nimport { chainsQueries as evmChainsQueries } from \"./evm/chains/queries.js\";\nimport { comptrollerQueries } from \"./evm/comptroller/queries.js\";\nimport { contractsQueries as evmContractsQueries } from \"./evm/contracts/queries.js\";\nimport { releasesQueries as evmReleasesQueries } from \"./evm/releases/queries.js\";\nimport { chainsQueries as solanaChainsQueries } from \"./solana/chains/queries.js\";\nimport { programsQueries as solanaProgramsQueries } from \"./solana/programs/queries.js\";\nimport { releasesQueries as solanaReleasesQueries } from \"./solana/releases/queries.js\";\nimport type { Sablier } from \"./types.js\";\n\n/**\n * Has to be defined here to avoid circular dependencies.\n */\nconst evmDeploymentsQueries = {\n /**\n * Get many deployments.\n * - default ⇒ all across all releases\n * - release ⇒ that release's deployments\n */\n get: (opts: {\n chainId: number;\n release: Sablier.EVM.Release;\n }): Sablier.EVM.Deployment | undefined => {\n const { release, chainId } = opts || {};\n return release.deployments.find((d) => d.chainId === chainId);\n },\n getAll: (): Sablier.EVM.Deployment[] => {\n return evmReleasesQueries.getAll().flatMap((r) => r.deployments);\n },\n};\n\nconst solanaDeploymentsQueries = {\n /**\n * Get many deployments.\n * - default ⇒ all across all releases\n * - release ⇒ that release's deployments\n */\n get: (opts: {\n chainId: number;\n release: Sablier.Solana.Release;\n }): Sablier.Solana.Deployment | undefined => {\n const { release, chainId } = opts || {};\n return release.deployments.find((d) => d.chainId === chainId);\n },\n getAll: (): Sablier.Solana.Deployment[] => {\n return solanaReleasesQueries.getAll().flatMap((r) => r.deployments);\n },\n};\n\nconst evm = {\n chains: evmChainsQueries,\n comptroller: comptrollerQueries,\n contracts: evmContractsQueries,\n deployments: evmDeploymentsQueries,\n releases: evmReleasesQueries,\n};\n\nconst solana = {\n chains: solanaChainsQueries,\n deployments: solanaDeploymentsQueries,\n programs: solanaProgramsQueries,\n releases: solanaReleasesQueries,\n};\n\nexport const sablier = {\n ...evm, // re-exporting for pre-v1.7 backward compatibility\n evm,\n solana,\n};\n"]}
1
+ {"version":3,"file":"sablier.js","sourceRoot":"","sources":["../../src/sablier.ts"],"names":[],"mappings":";;;AA0BA,wDAA4E;AAC5E,6DAAkE;AAClE,2DAAqF;AACrF,0DAAkF;AAClF,2DAAkF;AAClF,6DAAwF;AACxF,6DAAwF;AAMxF,MAAM,qBAAqB,GAAG;IAM5B,GAAG,EAAE,CAAC,IAGL,EAAsC,EAAE;QACvC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAA6B,EAAE;QACrC,OAAO,4BAAkB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC;CACF,CAAC;AAEF,MAAM,wBAAwB,GAAG;IAM/B,GAAG,EAAE,CAAC,IAGL,EAAyC,EAAE;QAC1C,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,GAAgC,EAAE;QACxC,OAAO,4BAAqB,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;CACF,CAAC;AAEF,MAAM,GAAG,GAAG;IACV,MAAM,EAAE,0BAAgB;IACxB,WAAW,EAAE,+BAAkB;IAC/B,SAAS,EAAE,6BAAmB;IAC9B,WAAW,EAAE,qBAAqB;IAClC,QAAQ,EAAE,4BAAkB;CAC7B,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,MAAM,EAAE,0BAAmB;IAC3B,WAAW,EAAE,wBAAwB;IACrC,QAAQ,EAAE,4BAAqB;IAC/B,QAAQ,EAAE,4BAAqB;CAChC,CAAC;AAEW,QAAA,OAAO,GAAG;IACrB,GAAG,GAAG;IACN,GAAG;IACH,MAAM;CACP,CAAC","sourcesContent":["/**\n * @file This file exports the Sablier object, singleton that contains the queries for the\n * chains, contracts, and releases for both evm and solana compatible chains.\n *\n * @example\n * ```typescript\n * import { sablier } from \"sablier\";\n *\n * // EVM\n * const lockupRelease = sablier.evm.releases.getLatest({ protocol: \"lockup\" });\n * let lockupContract = sablier.evm.contracts.get({\n * chainId: mainnet.id,\n * contractName: \"SablierLockup\",\n * release: lockupRelease,\n * });\n *\n * // Can also be accessed like this:\n * lockupContract = sablier.contracts.get({\n * chainId: mainnet.id,\n * contractName: \"SablierLockup\",\n * release: lockupRelease,\n * });\n * const { address } = lockupContract;\n * ```\n */\n\nimport { chainsQueries as evmChainsQueries } from \"./evm/chains/queries.js\";\nimport { comptrollerQueries } from \"./evm/comptroller/queries.js\";\nimport { contractsQueries as evmContractsQueries } from \"./evm/contracts/queries.js\";\nimport { releasesQueries as evmReleasesQueries } from \"./evm/releases/queries.js\";\nimport { chainsQueries as solanaChainsQueries } from \"./solana/chains/queries.js\";\nimport { programsQueries as solanaProgramsQueries } from \"./solana/programs/queries.js\";\nimport { releasesQueries as solanaReleasesQueries } from \"./solana/releases/queries.js\";\nimport type { Sablier } from \"./types.js\";\n\n/**\n * Has to be defined here to avoid circular dependencies.\n */\nconst evmDeploymentsQueries = {\n /**\n * Get many deployments.\n * - default ⇒ all across all releases\n * - release ⇒ that release's deployments\n */\n get: (opts: {\n chainId: number;\n release: Sablier.EVM.Release;\n }): Sablier.EVM.Deployment | undefined => {\n const { release, chainId } = opts || {};\n return release.deployments.find((d) => d.chainId === chainId);\n },\n getAll: (): Sablier.EVM.Deployment[] => {\n return evmReleasesQueries.getAll().flatMap((r) => r.deployments);\n },\n};\n\nconst solanaDeploymentsQueries = {\n /**\n * Get many deployments.\n * - default ⇒ all across all releases\n * - release ⇒ that release's deployments\n */\n get: (opts: {\n chainId: number;\n release: Sablier.Solana.Release;\n }): Sablier.Solana.Deployment | undefined => {\n const { release, chainId } = opts || {};\n return release.deployments.find((d) => d.chainId === chainId);\n },\n getAll: (): Sablier.Solana.Deployment[] => {\n return solanaReleasesQueries.getAll().flatMap((r) => r.deployments);\n },\n};\n\nconst evm = {\n chains: evmChainsQueries,\n comptroller: comptrollerQueries,\n contracts: evmContractsQueries,\n deployments: evmDeploymentsQueries,\n releases: evmReleasesQueries,\n};\n\nconst solana = {\n chains: solanaChainsQueries,\n deployments: solanaDeploymentsQueries,\n programs: solanaProgramsQueries,\n releases: solanaReleasesQueries,\n};\n\nexport const sablier = {\n ...evm, // re-exporting for pre-v1.7 backward compatibility\n evm,\n solana,\n};\n"]}
@@ -41,6 +41,12 @@ const tranchedStepper = (0, types_js_1.defineAirdropShape)(enums_js_1.Shape.Aird
41
41
  isDeprecated: false,
42
42
  name: "Tranched Stepper",
43
43
  });
44
+ const variableClaimAmount = (0, types_js_1.defineAirdropShape)(enums_js_1.Shape.Airdrops.VariableClaimAmount, {
45
+ evm: constants_js_1.AIRDROP_EVM_VCA,
46
+ hasPredictableGas: true,
47
+ isDeprecated: false,
48
+ name: "Variable Claim Amount",
49
+ });
44
50
  exports.airdropShapes = {
45
51
  [enums_js_1.Shape.Airdrops.Cliff]: cliff,
46
52
  [enums_js_1.Shape.Airdrops.Instant]: instant,
@@ -48,5 +54,6 @@ exports.airdropShapes = {
48
54
  [enums_js_1.Shape.Airdrops.LinearUnlockCliff]: linearUnlockCliff,
49
55
  [enums_js_1.Shape.Airdrops.LinearUnlockLinear]: linearUnlockLinear,
50
56
  [enums_js_1.Shape.Airdrops.TranchedStepper]: tranchedStepper,
57
+ [enums_js_1.Shape.Airdrops.VariableClaimAmount]: variableClaimAmount,
51
58
  };
52
59
  //# sourceMappingURL=airdrops.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"airdrops.js","sourceRoot":"","sources":["../../../src/shapes/airdrops.ts"],"names":[],"mappings":";;;AAMA,iDAMwB;AACxB,yCAAmC;AAEnC,yCAAgD;AAMhD,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzD,GAAG,EAAE,kCAAmB;IACxB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,qCAAsB;CAC/B,CAAC,CAAC;AAMH,MAAM,MAAM,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;IACvD,GAAG,EAAE,6BAAc;IACnB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,QAAQ;CACf,CAAC,CAAC;AAMH,MAAM,KAAK,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;IACrD,GAAG,EAAE,6BAAc;IACnB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,OAAO;CACd,CAAC,CAAC;AAMH,MAAM,kBAAkB,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE;IAC/E,GAAG,EAAE,gCAAiB;IACtB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AAMH,MAAM,iBAAiB,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE;IAC7E,GAAG,EAAE,gCAAiB;IACtB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,qBAAqB;CAC5B,CAAC,CAAC;AAMH,MAAM,eAAe,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,eAAe,EAAE;IACzE,GAAG,EAAE,6BAAc;IACnB,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,kBAAkB;CACzB,CAAC,CAAC;AAMU,QAAA,aAAa,GAAG;IAC3B,CAAC,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK;IAC7B,CAAC,gBAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;IACjC,CAAC,gBAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAC/B,CAAC,gBAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;IACrD,CAAC,gBAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;IACvD,CAAC,gBAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe;CACpB,CAAC","sourcesContent":["/**\n * Airdrop shapes.\n *\n * Merkle-based token distribution with various vesting patterns.\n */\n\nimport {\n AIRDROP_EVM_INSTANT,\n AIRDROP_EVM_LL,\n AIRDROP_EVM_LL_V2,\n AIRDROP_EVM_LT,\n AIRDROP_SOLANA_INSTANT,\n} from \"./constants.js\";\nimport { Shape } from \"./enums.js\";\nimport type { AirdropShapesRecord } from \"./types.js\";\nimport { defineAirdropShape } from \"./types.js\";\n\n/**\n * Instant airdrop.\n * Tokens are claimable immediately with no vesting.\n */\nconst instant = defineAirdropShape(Shape.Airdrops.Instant, {\n evm: AIRDROP_EVM_INSTANT,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Instant\",\n solana: AIRDROP_SOLANA_INSTANT,\n});\n\n/**\n * Linear airdrop.\n * Claimed tokens vest linearly from start to end.\n */\nconst linear = defineAirdropShape(Shape.Airdrops.Linear, {\n evm: AIRDROP_EVM_LL,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Linear\",\n});\n\n/**\n * Cliff airdrop.\n * Claimed tokens vest with a cliff period followed by linear vesting.\n */\nconst cliff = defineAirdropShape(Shape.Airdrops.Cliff, {\n evm: AIRDROP_EVM_LL,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Cliff\",\n});\n\n/**\n * Linear with initial unlock, then linear vesting.\n * A percentage is immediately available, remainder vests linearly.\n */\nconst linearUnlockLinear = defineAirdropShape(Shape.Airdrops.LinearUnlockLinear, {\n evm: AIRDROP_EVM_LL_V2,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Linear Unlock Linear\",\n});\n\n/**\n * Linear with initial unlock, then cliff.\n * A percentage is immediately available, remainder vests after cliff.\n */\nconst linearUnlockCliff = defineAirdropShape(Shape.Airdrops.LinearUnlockCliff, {\n evm: AIRDROP_EVM_LL_V2,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Linear Unlock Cliff\",\n});\n\n/**\n * Step-based airdrop via tranches.\n * Claimed tokens unlock in discrete steps.\n */\nconst tranchedStepper = defineAirdropShape(Shape.Airdrops.TranchedStepper, {\n evm: AIRDROP_EVM_LT,\n hasPredictableGas: false,\n isDeprecated: false,\n name: \"Tranched Stepper\",\n});\n\n/**\n * All airdrop shapes indexed by shape ID.\n * Keys are alphabetically ordered for consistency.\n */\nexport const airdropShapes = {\n [Shape.Airdrops.Cliff]: cliff,\n [Shape.Airdrops.Instant]: instant,\n [Shape.Airdrops.Linear]: linear,\n [Shape.Airdrops.LinearUnlockCliff]: linearUnlockCliff,\n [Shape.Airdrops.LinearUnlockLinear]: linearUnlockLinear,\n [Shape.Airdrops.TranchedStepper]: tranchedStepper,\n} satisfies AirdropShapesRecord;\n"]}
1
+ {"version":3,"file":"airdrops.js","sourceRoot":"","sources":["../../../src/shapes/airdrops.ts"],"names":[],"mappings":";;;AAMA,iDAOwB;AACxB,yCAAmC;AAEnC,yCAAgD;AAMhD,MAAM,OAAO,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzD,GAAG,EAAE,kCAAmB;IACxB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,qCAAsB;CAC/B,CAAC,CAAC;AAMH,MAAM,MAAM,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;IACvD,GAAG,EAAE,6BAAc;IACnB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,QAAQ;CACf,CAAC,CAAC;AAMH,MAAM,KAAK,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;IACrD,GAAG,EAAE,6BAAc;IACnB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,OAAO;CACd,CAAC,CAAC;AAMH,MAAM,kBAAkB,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE;IAC/E,GAAG,EAAE,gCAAiB;IACtB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AAMH,MAAM,iBAAiB,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE;IAC7E,GAAG,EAAE,gCAAiB;IACtB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,qBAAqB;CAC5B,CAAC,CAAC;AAMH,MAAM,eAAe,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,eAAe,EAAE;IACzE,GAAG,EAAE,6BAAc;IACnB,iBAAiB,EAAE,KAAK;IACxB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,kBAAkB;CACzB,CAAC,CAAC;AAMH,MAAM,mBAAmB,GAAG,IAAA,6BAAkB,EAAC,gBAAK,CAAC,QAAQ,CAAC,mBAAmB,EAAE;IACjF,GAAG,EAAE,8BAAe;IACpB,iBAAiB,EAAE,IAAI;IACvB,YAAY,EAAE,KAAK;IACnB,IAAI,EAAE,uBAAuB;CAC9B,CAAC,CAAC;AAMU,QAAA,aAAa,GAAG;IAC3B,CAAC,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK;IAC7B,CAAC,gBAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;IACjC,CAAC,gBAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM;IAC/B,CAAC,gBAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB;IACrD,CAAC,gBAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,kBAAkB;IACvD,CAAC,gBAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe;IACjD,CAAC,gBAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB;CAC5B,CAAC","sourcesContent":["/**\n * Airdrop shapes.\n *\n * Merkle-based token distribution with various vesting patterns.\n */\n\nimport {\n AIRDROP_EVM_INSTANT,\n AIRDROP_EVM_LL,\n AIRDROP_EVM_LL_V2,\n AIRDROP_EVM_LT,\n AIRDROP_EVM_VCA,\n AIRDROP_SOLANA_INSTANT,\n} from \"./constants.js\";\nimport { Shape } from \"./enums.js\";\nimport type { AirdropShapesRecord } from \"./types.js\";\nimport { defineAirdropShape } from \"./types.js\";\n\n/**\n * Instant airdrop.\n * Tokens are claimable immediately with no vesting.\n */\nconst instant = defineAirdropShape(Shape.Airdrops.Instant, {\n evm: AIRDROP_EVM_INSTANT,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Instant\",\n solana: AIRDROP_SOLANA_INSTANT,\n});\n\n/**\n * Linear airdrop.\n * Claimed tokens vest linearly from start to end.\n */\nconst linear = defineAirdropShape(Shape.Airdrops.Linear, {\n evm: AIRDROP_EVM_LL,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Linear\",\n});\n\n/**\n * Cliff airdrop.\n * Claimed tokens vest with a cliff period followed by linear vesting.\n */\nconst cliff = defineAirdropShape(Shape.Airdrops.Cliff, {\n evm: AIRDROP_EVM_LL,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Cliff\",\n});\n\n/**\n * Linear with initial unlock, then linear vesting.\n * A percentage is immediately available, remainder vests linearly.\n */\nconst linearUnlockLinear = defineAirdropShape(Shape.Airdrops.LinearUnlockLinear, {\n evm: AIRDROP_EVM_LL_V2,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Linear Unlock Linear\",\n});\n\n/**\n * Linear with initial unlock, then cliff.\n * A percentage is immediately available, remainder vests after cliff.\n */\nconst linearUnlockCliff = defineAirdropShape(Shape.Airdrops.LinearUnlockCliff, {\n evm: AIRDROP_EVM_LL_V2,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Linear Unlock Cliff\",\n});\n\n/**\n * Step-based airdrop via tranches.\n * Claimed tokens unlock in discrete steps.\n */\nconst tranchedStepper = defineAirdropShape(Shape.Airdrops.TranchedStepper, {\n evm: AIRDROP_EVM_LT,\n hasPredictableGas: false,\n isDeprecated: false,\n name: \"Tranched Stepper\",\n});\n\n/**\n * Variable claim amount airdrop.\n * Each recipient can claim a different amount based on Merkle proof data.\n */\nconst variableClaimAmount = defineAirdropShape(Shape.Airdrops.VariableClaimAmount, {\n evm: AIRDROP_EVM_VCA,\n hasPredictableGas: true,\n isDeprecated: false,\n name: \"Variable Claim Amount\",\n});\n\n/**\n * All airdrop shapes indexed by shape ID.\n * Keys are alphabetically ordered for consistency.\n */\nexport const airdropShapes = {\n [Shape.Airdrops.Cliff]: cliff,\n [Shape.Airdrops.Instant]: instant,\n [Shape.Airdrops.Linear]: linear,\n [Shape.Airdrops.LinearUnlockCliff]: linearUnlockCliff,\n [Shape.Airdrops.LinearUnlockLinear]: linearUnlockLinear,\n [Shape.Airdrops.TranchedStepper]: tranchedStepper,\n [Shape.Airdrops.VariableClaimAmount]: variableClaimAmount,\n} satisfies AirdropShapesRecord;\n"]}
@@ -1,10 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AIRDROP_EVM_LT = exports.AIRDROP_EVM_LL_V2 = exports.AIRDROP_EVM_LL = exports.AIRDROP_SOLANA_INSTANT = exports.AIRDROP_EVM_INSTANT = exports.FLOW_EVM = exports.LOCKUP_EVM_LT = exports.LOCKUP_EVM_LD = exports.LOCKUP_SOLANA_LL = exports.LOCKUP_EVM_LL_V2 = exports.LOCKUP_EVM_LL = void 0;
3
+ exports.AIRDROP_EVM_LT = exports.AIRDROP_EVM_VCA = exports.AIRDROP_EVM_LL_V2 = exports.AIRDROP_EVM_LL = exports.AIRDROP_SOLANA_INSTANT = exports.AIRDROP_EVM_INSTANT = exports.FLOW_EVM = exports.LOCKUP_EVM_LT = exports.LOCKUP_EVM_LD = exports.LOCKUP_SOLANA_LL = exports.LOCKUP_EVM_LL_V2 = exports.LOCKUP_EVM_LL = void 0;
4
4
  const enums_js_1 = require("../evm/enums.js");
5
5
  const LL_METHODS = ["createWithDurationsLL", "createWithTimestampsLL"];
6
6
  const LL_V1_METHODS = ["createWithDurations", "createWithTimestamps"];
7
7
  exports.LOCKUP_EVM_LL = [
8
+ { contract: "SablierLockup", createMethods: LL_METHODS, version: enums_js_1.Version.Lockup.V4_0 },
8
9
  { contract: "SablierLockup", createMethods: LL_METHODS, version: enums_js_1.Version.Lockup.V3_0 },
9
10
  { contract: "SablierLockup", createMethods: LL_METHODS, version: enums_js_1.Version.Lockup.V2_0 },
10
11
  { contract: "SablierV2LockupLinear", createMethods: LL_V1_METHODS, version: enums_js_1.Version.Lockup.V1_2 },
@@ -12,6 +13,7 @@ exports.LOCKUP_EVM_LL = [
12
13
  { contract: "SablierV2LockupLinear", createMethods: LL_V1_METHODS, version: enums_js_1.Version.Lockup.V1_0 },
13
14
  ];
14
15
  exports.LOCKUP_EVM_LL_V2 = [
16
+ { contract: "SablierLockup", createMethods: LL_METHODS, version: enums_js_1.Version.Lockup.V4_0 },
15
17
  { contract: "SablierLockup", createMethods: LL_METHODS, version: enums_js_1.Version.Lockup.V3_0 },
16
18
  { contract: "SablierLockup", createMethods: LL_METHODS, version: enums_js_1.Version.Lockup.V2_0 },
17
19
  ];
@@ -25,6 +27,7 @@ exports.LOCKUP_SOLANA_LL = [
25
27
  const LD_METHODS = ["createWithDurationsLD", "createWithTimestampsLD"];
26
28
  const LD_V1_METHODS = ["createWithDurations", "createWithTimestamps"];
27
29
  exports.LOCKUP_EVM_LD = [
30
+ { contract: "SablierLockup", createMethods: LD_METHODS, version: enums_js_1.Version.Lockup.V4_0 },
28
31
  { contract: "SablierLockup", createMethods: LD_METHODS, version: enums_js_1.Version.Lockup.V3_0 },
29
32
  { contract: "SablierLockup", createMethods: LD_METHODS, version: enums_js_1.Version.Lockup.V2_0 },
30
33
  {
@@ -46,6 +49,7 @@ exports.LOCKUP_EVM_LD = [
46
49
  const LT_METHODS = ["createWithDurationsLT", "createWithTimestampsLT"];
47
50
  const LT_V1_METHODS = ["createWithDurations", "createWithTimestamps"];
48
51
  exports.LOCKUP_EVM_LT = [
52
+ { contract: "SablierLockup", createMethods: LT_METHODS, version: enums_js_1.Version.Lockup.V4_0 },
49
53
  { contract: "SablierLockup", createMethods: LT_METHODS, version: enums_js_1.Version.Lockup.V3_0 },
50
54
  { contract: "SablierLockup", createMethods: LT_METHODS, version: enums_js_1.Version.Lockup.V2_0 },
51
55
  {
@@ -55,6 +59,11 @@ exports.LOCKUP_EVM_LT = [
55
59
  },
56
60
  ];
57
61
  exports.FLOW_EVM = [
62
+ {
63
+ contract: "SablierFlow",
64
+ createMethods: ["create", "createAndDeposit"],
65
+ version: enums_js_1.Version.Flow.V3_0,
66
+ },
58
67
  {
59
68
  contract: "SablierFlow",
60
69
  createMethods: ["create", "createAndDeposit"],
@@ -72,6 +81,11 @@ exports.FLOW_EVM = [
72
81
  },
73
82
  ];
74
83
  exports.AIRDROP_EVM_INSTANT = [
84
+ {
85
+ contract: "SablierFactoryMerkleInstant",
86
+ createMethods: ["createMerkleInstant"],
87
+ version: enums_js_1.Version.Airdrops.V3_0,
88
+ },
75
89
  {
76
90
  contract: "SablierFactoryMerkleInstant",
77
91
  createMethods: ["createMerkleInstant"],
@@ -91,6 +105,11 @@ exports.AIRDROP_SOLANA_INSTANT = [
91
105
  },
92
106
  ];
93
107
  exports.AIRDROP_EVM_LL = [
108
+ {
109
+ contract: "SablierFactoryMerkleLL",
110
+ createMethods: ["createMerkleLL"],
111
+ version: enums_js_1.Version.Airdrops.V3_0,
112
+ },
94
113
  {
95
114
  contract: "SablierFactoryMerkleLL",
96
115
  createMethods: ["createMerkleLL"],
@@ -113,13 +132,35 @@ exports.AIRDROP_EVM_LL = [
113
132
  },
114
133
  ];
115
134
  exports.AIRDROP_EVM_LL_V2 = [
135
+ {
136
+ contract: "SablierFactoryMerkleLL",
137
+ createMethods: ["createMerkleLL"],
138
+ version: enums_js_1.Version.Airdrops.V3_0,
139
+ },
116
140
  {
117
141
  contract: "SablierFactoryMerkleLL",
118
142
  createMethods: ["createMerkleLL"],
119
143
  version: enums_js_1.Version.Airdrops.V2_0,
120
144
  },
121
145
  ];
146
+ exports.AIRDROP_EVM_VCA = [
147
+ {
148
+ contract: "SablierFactoryMerkleVCA",
149
+ createMethods: ["createMerkleVCA"],
150
+ version: enums_js_1.Version.Airdrops.V3_0,
151
+ },
152
+ {
153
+ contract: "SablierFactoryMerkleVCA",
154
+ createMethods: ["createMerkleVCA"],
155
+ version: enums_js_1.Version.Airdrops.V2_0,
156
+ },
157
+ ];
122
158
  exports.AIRDROP_EVM_LT = [
159
+ {
160
+ contract: "SablierFactoryMerkleLT",
161
+ createMethods: ["createMerkleLT"],
162
+ version: enums_js_1.Version.Airdrops.V3_0,
163
+ },
123
164
  {
124
165
  contract: "SablierFactoryMerkleLT",
125
166
  createMethods: ["createMerkleLT"],
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/shapes/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared EVM and Solana contract configurations for shape definitions.\n *\n * These constants eliminate code duplication across shape files by providing\n * reusable contract/method mappings organized by lockup type (LL, LD, LT).\n *\n * @remarks\n * Arrays are marked `as const` for type safety. Consumers should treat them\n * as read-only - do not mutate `shape.evm` or `createMethods` arrays.\n */\n\nimport { Version } from \"@/src/evm/enums.js\";\nimport type { ContractMethod, ProgramMethod } from \"./types.js\";\n\n/* -------------------------------------------------------------------------- */\n/* LOCKUP LINEAR (LL) CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\nconst LL_METHODS = [\"createWithDurationsLL\", \"createWithTimestampsLL\"] as const;\nconst LL_V1_METHODS = [\"createWithDurations\", \"createWithTimestamps\"] as const;\n\n/** Lockup Linear contracts - full version history (v1.0 through v3.0) */\nexport const LOCKUP_EVM_LL = [\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V2_0 },\n { contract: \"SablierV2LockupLinear\", createMethods: LL_V1_METHODS, version: Version.Lockup.V1_2 },\n { contract: \"SablierV2LockupLinear\", createMethods: LL_V1_METHODS, version: Version.Lockup.V1_1 },\n { contract: \"SablierV2LockupLinear\", createMethods: LL_V1_METHODS, version: Version.Lockup.V1_0 },\n] as const satisfies readonly ContractMethod[];\n\n/** Lockup Linear contracts - v2.0+ only (for shapes added in v2.0) */\nexport const LOCKUP_EVM_LL_V2 = [\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V2_0 },\n] as const satisfies readonly ContractMethod[];\n\n/** Solana Lockup Linear program */\nexport const LOCKUP_SOLANA_LL = [\n {\n createMethods: [\"create_with_durations_ll\", \"create_with_timestamps_ll\"],\n program: \"SablierLockupLinear\",\n version: \"v0.1\",\n },\n] as const satisfies readonly ProgramMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* LOCKUP DYNAMIC (LD) CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\nconst LD_METHODS = [\"createWithDurationsLD\", \"createWithTimestampsLD\"] as const;\nconst LD_V1_METHODS = [\"createWithDurations\", \"createWithTimestamps\"] as const;\n\n/** Lockup Dynamic contracts - full version history (v1.0 through v3.0) */\nexport const LOCKUP_EVM_LD = [\n { contract: \"SablierLockup\", createMethods: LD_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LD_METHODS, version: Version.Lockup.V2_0 },\n {\n contract: \"SablierV2LockupDynamic\",\n createMethods: LD_V1_METHODS,\n version: Version.Lockup.V1_2,\n },\n {\n contract: \"SablierV2LockupDynamic\",\n createMethods: LD_V1_METHODS,\n version: Version.Lockup.V1_1,\n },\n {\n contract: \"SablierV2LockupDynamic\",\n createMethods: LD_V1_METHODS,\n version: Version.Lockup.V1_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* LOCKUP TRANCHED (LT) CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\nconst LT_METHODS = [\"createWithDurationsLT\", \"createWithTimestampsLT\"] as const;\nconst LT_V1_METHODS = [\"createWithDurations\", \"createWithTimestamps\"] as const;\n\n/** Lockup Tranched contracts - v1.2+ only (LT introduced in v1.2) */\nexport const LOCKUP_EVM_LT = [\n { contract: \"SablierLockup\", createMethods: LT_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LT_METHODS, version: Version.Lockup.V2_0 },\n {\n contract: \"SablierV2LockupTranched\",\n createMethods: LT_V1_METHODS,\n version: Version.Lockup.V1_2,\n },\n] as const satisfies readonly ContractMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* FLOW CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\n/** Flow contracts - v1.0 through v2.0 */\nexport const FLOW_EVM = [\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V2_0,\n },\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V1_1,\n },\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V1_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* AIRDROP CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\n/** Airdrop Instant factory contracts - v1.3+ */\nexport const AIRDROP_EVM_INSTANT = [\n {\n contract: \"SablierFactoryMerkleInstant\",\n createMethods: [\"createMerkleInstant\"],\n version: Version.Airdrops.V2_0,\n },\n {\n contract: \"SablierMerkleFactory\",\n createMethods: [\"createMerkleInstant\"],\n version: Version.Airdrops.V1_3,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Solana Airdrop Instant program */\nexport const AIRDROP_SOLANA_INSTANT = [\n {\n createMethods: [\"create_campaign\"],\n program: \"SablierMerkleInstant\",\n version: \"v0.1\",\n },\n] as const satisfies readonly ProgramMethod[];\n\n/** Airdrop Linear (LL) factory contracts - full history */\nexport const AIRDROP_EVM_LL = [\n {\n contract: \"SablierFactoryMerkleLL\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V2_0,\n },\n {\n contract: \"SablierMerkleFactory\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V1_3,\n },\n {\n contract: \"SablierV2MerkleLockupFactory\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V1_2,\n },\n {\n contract: \"SablierV2MerkleStreamerFactory\",\n createMethods: [\"createMerkleStreamerLL\"],\n version: Version.Airdrops.V1_1,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Airdrop Linear (LL) factory contracts - v2.0+ only */\nexport const AIRDROP_EVM_LL_V2 = [\n {\n contract: \"SablierFactoryMerkleLL\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V2_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Airdrop Tranched (LT) factory contracts - v1.2+ */\nexport const AIRDROP_EVM_LT = [\n {\n contract: \"SablierFactoryMerkleLT\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V2_0,\n },\n {\n contract: \"SablierMerkleFactory\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V1_3,\n },\n {\n contract: \"SablierV2MerkleLockupFactory\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V1_2,\n },\n] as const satisfies readonly ContractMethod[];\n"]}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/shapes/constants.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared EVM and Solana contract configurations for shape definitions.\n *\n * These constants eliminate code duplication across shape files by providing\n * reusable contract/method mappings organized by lockup type (LL, LD, LT).\n *\n * @remarks\n * Arrays are marked `as const` for type safety. Consumers should treat them\n * as read-only - do not mutate `shape.evm` or `createMethods` arrays.\n */\n\nimport { Version } from \"@/src/evm/enums.js\";\nimport type { ContractMethod, ProgramMethod } from \"./types.js\";\n\n/* -------------------------------------------------------------------------- */\n/* LOCKUP LINEAR (LL) CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\nconst LL_METHODS = [\"createWithDurationsLL\", \"createWithTimestampsLL\"] as const;\nconst LL_V1_METHODS = [\"createWithDurations\", \"createWithTimestamps\"] as const;\n\n/** Lockup Linear contracts - full version history */\nexport const LOCKUP_EVM_LL = [\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V4_0 },\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V2_0 },\n { contract: \"SablierV2LockupLinear\", createMethods: LL_V1_METHODS, version: Version.Lockup.V1_2 },\n { contract: \"SablierV2LockupLinear\", createMethods: LL_V1_METHODS, version: Version.Lockup.V1_1 },\n { contract: \"SablierV2LockupLinear\", createMethods: LL_V1_METHODS, version: Version.Lockup.V1_0 },\n] as const satisfies readonly ContractMethod[];\n\n/** Lockup Linear contracts - v2.0+ only */\nexport const LOCKUP_EVM_LL_V2 = [\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V4_0 },\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LL_METHODS, version: Version.Lockup.V2_0 },\n] as const satisfies readonly ContractMethod[];\n\n/** Solana Lockup Linear program */\nexport const LOCKUP_SOLANA_LL = [\n {\n createMethods: [\"create_with_durations_ll\", \"create_with_timestamps_ll\"],\n program: \"SablierLockupLinear\",\n version: \"v0.1\",\n },\n] as const satisfies readonly ProgramMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* LOCKUP DYNAMIC (LD) CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\nconst LD_METHODS = [\"createWithDurationsLD\", \"createWithTimestampsLD\"] as const;\nconst LD_V1_METHODS = [\"createWithDurations\", \"createWithTimestamps\"] as const;\n\n/** Lockup Dynamic contracts - full version history */\nexport const LOCKUP_EVM_LD = [\n { contract: \"SablierLockup\", createMethods: LD_METHODS, version: Version.Lockup.V4_0 },\n { contract: \"SablierLockup\", createMethods: LD_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LD_METHODS, version: Version.Lockup.V2_0 },\n {\n contract: \"SablierV2LockupDynamic\",\n createMethods: LD_V1_METHODS,\n version: Version.Lockup.V1_2,\n },\n {\n contract: \"SablierV2LockupDynamic\",\n createMethods: LD_V1_METHODS,\n version: Version.Lockup.V1_1,\n },\n {\n contract: \"SablierV2LockupDynamic\",\n createMethods: LD_V1_METHODS,\n version: Version.Lockup.V1_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* LOCKUP TRANCHED (LT) CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\nconst LT_METHODS = [\"createWithDurationsLT\", \"createWithTimestampsLT\"] as const;\nconst LT_V1_METHODS = [\"createWithDurations\", \"createWithTimestamps\"] as const;\n\n/** Lockup Tranched contracts - v1.2+ only (LT introduced in v1.2) */\nexport const LOCKUP_EVM_LT = [\n { contract: \"SablierLockup\", createMethods: LT_METHODS, version: Version.Lockup.V4_0 },\n { contract: \"SablierLockup\", createMethods: LT_METHODS, version: Version.Lockup.V3_0 },\n { contract: \"SablierLockup\", createMethods: LT_METHODS, version: Version.Lockup.V2_0 },\n {\n contract: \"SablierV2LockupTranched\",\n createMethods: LT_V1_METHODS,\n version: Version.Lockup.V1_2,\n },\n] as const satisfies readonly ContractMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* FLOW CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\n/** Flow contracts - v1.0 through v3.0 */\nexport const FLOW_EVM = [\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V3_0,\n },\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V2_0,\n },\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V1_1,\n },\n {\n contract: \"SablierFlow\",\n createMethods: [\"create\", \"createAndDeposit\"],\n version: Version.Flow.V1_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/* -------------------------------------------------------------------------- */\n/* AIRDROP CONTRACTS */\n/* -------------------------------------------------------------------------- */\n\n/** Airdrop Instant factory contracts - v1.3+ */\nexport const AIRDROP_EVM_INSTANT = [\n {\n contract: \"SablierFactoryMerkleInstant\",\n createMethods: [\"createMerkleInstant\"],\n version: Version.Airdrops.V3_0,\n },\n {\n contract: \"SablierFactoryMerkleInstant\",\n createMethods: [\"createMerkleInstant\"],\n version: Version.Airdrops.V2_0,\n },\n {\n contract: \"SablierMerkleFactory\",\n createMethods: [\"createMerkleInstant\"],\n version: Version.Airdrops.V1_3,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Solana Airdrop Instant program */\nexport const AIRDROP_SOLANA_INSTANT = [\n {\n createMethods: [\"create_campaign\"],\n program: \"SablierMerkleInstant\",\n version: \"v0.1\",\n },\n] as const satisfies readonly ProgramMethod[];\n\n/** Airdrop Linear (LL) factory contracts - full history */\nexport const AIRDROP_EVM_LL = [\n {\n contract: \"SablierFactoryMerkleLL\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V3_0,\n },\n {\n contract: \"SablierFactoryMerkleLL\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V2_0,\n },\n {\n contract: \"SablierMerkleFactory\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V1_3,\n },\n {\n contract: \"SablierV2MerkleLockupFactory\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V1_2,\n },\n {\n contract: \"SablierV2MerkleStreamerFactory\",\n createMethods: [\"createMerkleStreamerLL\"],\n version: Version.Airdrops.V1_1,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Airdrop Linear (LL) factory contracts - v2.0+ only */\nexport const AIRDROP_EVM_LL_V2 = [\n {\n contract: \"SablierFactoryMerkleLL\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V3_0,\n },\n {\n contract: \"SablierFactoryMerkleLL\",\n createMethods: [\"createMerkleLL\"],\n version: Version.Airdrops.V2_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Airdrop VCA factory contracts - v2.0+ */\nexport const AIRDROP_EVM_VCA = [\n {\n contract: \"SablierFactoryMerkleVCA\",\n createMethods: [\"createMerkleVCA\"],\n version: Version.Airdrops.V3_0,\n },\n {\n contract: \"SablierFactoryMerkleVCA\",\n createMethods: [\"createMerkleVCA\"],\n version: Version.Airdrops.V2_0,\n },\n] as const satisfies readonly ContractMethod[];\n\n/** Airdrop Tranched (LT) factory contracts - v1.2+ */\nexport const AIRDROP_EVM_LT = [\n {\n contract: \"SablierFactoryMerkleLT\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V3_0,\n },\n {\n contract: \"SablierFactoryMerkleLT\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V2_0,\n },\n {\n contract: \"SablierMerkleFactory\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V1_3,\n },\n {\n contract: \"SablierV2MerkleLockupFactory\",\n createMethods: [\"createMerkleLT\"],\n version: Version.Airdrops.V1_2,\n },\n] as const satisfies readonly ContractMethod[];\n"]}
@@ -35,6 +35,7 @@ var Shape;
35
35
  Airdrops["LinearUnlockLinear"] = "linearUnlockLinear";
36
36
  Airdrops["LinearUnlockCliff"] = "linearUnlockCliff";
37
37
  Airdrops["TranchedStepper"] = "tranchedStepper";
38
+ Airdrops["VariableClaimAmount"] = "variableClaimAmount";
38
39
  })(Airdrops = Shape.Airdrops || (Shape.Airdrops = {}));
39
40
  })(Shape || (exports.Shape = Shape = {}));
40
41
  //# sourceMappingURL=enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/shapes/enums.ts"],"names":[],"mappings":";;;AAAA,IAAiB,KAAK,CAiCrB;AAjCD,WAAiB,KAAK;IACpB,IAAY,MAkBX;IAlBD,WAAY,MAAM;QAChB,2BAAiB,CAAA;QACjB,yBAAe,CAAA;QACf,6DAAmD,CAAA;QACnD,mDAAyC,CAAA;QACzC,uDAA6C,CAAA;QAC7C,6CAAmC,CAAA;QACnC,6CAAmC,CAAA;QACnC,+CAAqC,CAAA;QACrC,mDAAyC,CAAA;QACzC,iDAAuC,CAAA;QACvC,2CAAiC,CAAA;QACjC,6CAAmC,CAAA;QACnC,2CAAiC,CAAA;QACjC,2CAAiC,CAAA;QACjC,mDAAyC,CAAA;QACzC,qDAA2C,CAAA;QAC3C,qDAA2C,CAAA;IAC7C,CAAC,EAlBW,MAAM,GAAN,YAAM,KAAN,YAAM,QAkBjB;IAED,IAAY,IAEX;IAFD,WAAY,IAAI;QACd,qBAAa,CAAA;IACf,CAAC,EAFW,IAAI,GAAJ,UAAI,KAAJ,UAAI,QAEf;IAED,IAAY,QAOX;IAPD,WAAY,QAAQ;QAClB,+BAAmB,CAAA;QACnB,6BAAiB,CAAA;QACjB,2BAAe,CAAA;QACf,qDAAyC,CAAA;QACzC,mDAAuC,CAAA;QACvC,+CAAmC,CAAA;IACrC,CAAC,EAPW,QAAQ,GAAR,cAAQ,KAAR,cAAQ,QAOnB;AACH,CAAC,EAjCgB,KAAK,qBAAL,KAAK,QAiCrB","sourcesContent":["export namespace Shape {\n export enum Lockup {\n Linear = \"linear\",\n Cliff = \"cliff\",\n DynamicCliffExponential = \"dynamicCliffExponential\",\n DynamicExponential = \"dynamicExponential\",\n TranchedBackweighted = \"tranchedBackweighted\",\n TranchedStepper = \"tranchedStepper\",\n TranchedMonthly = \"tranchedMonthly\",\n TranchedTimelock = \"tranchedTimelock\",\n LinearUnlockLinear = \"linearUnlockLinear\",\n LinearUnlockCliff = \"linearUnlockCliff\",\n LinearTimelock = \"linearTimelock\",\n DynamicTimelock = \"dynamicTimelock\",\n DynamicMonthly = \"dynamicMonthly\",\n DynamicStepper = \"dynamicStepper\",\n DynamicUnlockCliff = \"dynamicUnlockCliff\",\n DynamicUnlockLinear = \"dynamicUnlockLinear\",\n DynamicDoubleUnlock = \"dynamicDoubleUnlock\",\n }\n\n export enum Flow {\n Flow = \"flow\",\n }\n\n export enum Airdrops {\n Instant = \"instant\",\n Linear = \"linear\",\n Cliff = \"cliff\",\n LinearUnlockLinear = \"linearUnlockLinear\",\n LinearUnlockCliff = \"linearUnlockCliff\",\n TranchedStepper = \"tranchedStepper\",\n }\n}\n"]}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/shapes/enums.ts"],"names":[],"mappings":";;;AAAA,IAAiB,KAAK,CAkCrB;AAlCD,WAAiB,KAAK;IACpB,IAAY,MAkBX;IAlBD,WAAY,MAAM;QAChB,2BAAiB,CAAA;QACjB,yBAAe,CAAA;QACf,6DAAmD,CAAA;QACnD,mDAAyC,CAAA;QACzC,uDAA6C,CAAA;QAC7C,6CAAmC,CAAA;QACnC,6CAAmC,CAAA;QACnC,+CAAqC,CAAA;QACrC,mDAAyC,CAAA;QACzC,iDAAuC,CAAA;QACvC,2CAAiC,CAAA;QACjC,6CAAmC,CAAA;QACnC,2CAAiC,CAAA;QACjC,2CAAiC,CAAA;QACjC,mDAAyC,CAAA;QACzC,qDAA2C,CAAA;QAC3C,qDAA2C,CAAA;IAC7C,CAAC,EAlBW,MAAM,GAAN,YAAM,KAAN,YAAM,QAkBjB;IAED,IAAY,IAEX;IAFD,WAAY,IAAI;QACd,qBAAa,CAAA;IACf,CAAC,EAFW,IAAI,GAAJ,UAAI,KAAJ,UAAI,QAEf;IAED,IAAY,QAQX;IARD,WAAY,QAAQ;QAClB,+BAAmB,CAAA;QACnB,6BAAiB,CAAA;QACjB,2BAAe,CAAA;QACf,qDAAyC,CAAA;QACzC,mDAAuC,CAAA;QACvC,+CAAmC,CAAA;QACnC,uDAA2C,CAAA;IAC7C,CAAC,EARW,QAAQ,GAAR,cAAQ,KAAR,cAAQ,QAQnB;AACH,CAAC,EAlCgB,KAAK,qBAAL,KAAK,QAkCrB","sourcesContent":["export namespace Shape {\n export enum Lockup {\n Linear = \"linear\",\n Cliff = \"cliff\",\n DynamicCliffExponential = \"dynamicCliffExponential\",\n DynamicExponential = \"dynamicExponential\",\n TranchedBackweighted = \"tranchedBackweighted\",\n TranchedStepper = \"tranchedStepper\",\n TranchedMonthly = \"tranchedMonthly\",\n TranchedTimelock = \"tranchedTimelock\",\n LinearUnlockLinear = \"linearUnlockLinear\",\n LinearUnlockCliff = \"linearUnlockCliff\",\n LinearTimelock = \"linearTimelock\",\n DynamicTimelock = \"dynamicTimelock\",\n DynamicMonthly = \"dynamicMonthly\",\n DynamicStepper = \"dynamicStepper\",\n DynamicUnlockCliff = \"dynamicUnlockCliff\",\n DynamicUnlockLinear = \"dynamicUnlockLinear\",\n DynamicDoubleUnlock = \"dynamicDoubleUnlock\",\n }\n\n export enum Flow {\n Flow = \"flow\",\n }\n\n export enum Airdrops {\n Instant = \"instant\",\n Linear = \"linear\",\n Cliff = \"cliff\",\n LinearUnlockLinear = \"linearUnlockLinear\",\n LinearUnlockCliff = \"linearUnlockCliff\",\n TranchedStepper = \"tranchedStepper\",\n VariableClaimAmount = \"variableClaimAmount\",\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Chain as ViemChain } from \"viem\";\n\n/**\n * @see https://github.com/wevm/viem/discussions/3678\n */\ntype ChainBlockExplorer = {\n name: string;\n url: string;\n apiUrl?: string | undefined;\n};\n\n/**\n * Repository metadata for Sablier protocol contracts.\n */\nexport type Repository = {\n commit: string;\n url: `https://github.com/sablier-labs/${string}`;\n};\n\n/**\n * Map of contract names to their aliases.\n * Used in the Sablier Interface and indexers.\n */\nexport type AliasMap = {\n [contractName: string]: string;\n};\n\nexport namespace Shared {\n /**\n * Common properties shared by EVM and Solana chains.\n * This type represents the minimal interface required for chain queries and operations.\n */\n export type Chain = ViemChain & {\n blockExplorers: {\n [key: string]: ChainBlockExplorer;\n default: ChainBlockExplorer;\n };\n /** Whether this chain is supported by the Sablier Interface at https://app.sablier.com. */\n isSupportedByUI: boolean;\n /** Whether this is a testnet network. */\n isTestnet: boolean;\n nativeCurrency: ViemChain[\"nativeCurrency\"] & {\n coinGeckoId: string;\n /** Address of the ERC-20 contract that wraps the native currency. */\n wrapperContract?: string;\n };\n rpc: {\n /** Default RPC URL. */\n defaults: string[];\n [key: string]: unknown;\n };\n /** Used in deployment files to identify the chain, e.g., arbitrum-sepolia. */\n slug: string;\n };\n\n /**\n * Generic contract mapping that supports both simple addresses and address-with-block tuples.\n * @internal\n */\n export type ContractMap<TAddress extends string> = {\n [contractName: string]: TAddress | [TAddress, number];\n };\n\n /**\n * Base manifest structure for contract names in a protocol version.\n */\n export type Manifest = {\n [contractKey: string]: string;\n };\n\n /**\n * Generic contract type shared across all platforms (EVM, Solana, etc.).\n * This provides a consistent interface for contract metadata regardless of the underlying blockchain.\n *\n * @template TAddress - The address type for the platform (e.g., `0x${string}` for EVM, `string` for Solana)\n * @template TProtocol - The protocol enum/type for the platform\n * @template TVersion - The version enum/type for the platform\n */\n export type Contract<TAddress extends string, TProtocol, TVersion> = {\n /** The address of the contract. */\n address: TAddress;\n /** Optional alias for the contract, used in the Sablier Interface and the indexers. */\n alias?: string;\n /** The block number at which the contract was deployed. */\n block?: number;\n /** The ID of the chain the contract is deployed on. */\n chainId: number;\n /** URL to the explorer page for the contract. */\n explorerURL?: string;\n /** The name of the contract. */\n name: string;\n /** The protocol the contract is part of (optional). */\n protocol: TProtocol | undefined;\n /** The release version the contract is part of (optional). */\n version: TVersion | undefined;\n };\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/shared/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Chain as ViemChain } from \"viem\";\n\n/**\n * @see https://github.com/wevm/viem/discussions/3678\n */\ntype ChainBlockExplorer = {\n name: string;\n url: string;\n apiUrl?: string | undefined;\n};\n\n/**\n * Repository metadata for Sablier protocol contracts.\n */\nexport type Repository = {\n commit: string;\n url: `https://github.com/sablier-labs/${string}`;\n};\n\n/**\n * Map of contract names to their aliases.\n * Used in the Sablier Interface and indexers.\n */\nexport type AliasMap = {\n [contractName: string]: string;\n};\n\nexport namespace Shared {\n /**\n * Common properties shared by EVM and Solana chains.\n * This type represents the minimal interface required for chain queries and operations.\n */\n export type Chain = ViemChain & {\n blockExplorers: {\n [key: string]: ChainBlockExplorer;\n default: ChainBlockExplorer;\n };\n /** CoinGecko asset platform ID for token price lookups via /simple/token_price/{platform}. */\n coinGeckoPlatformId?: string;\n /** Whether this chain is supported by the Sablier Interface at https://app.sablier.com. */\n isSupportedByUI: boolean;\n /** Whether this is a testnet network. */\n isTestnet: boolean;\n nativeCurrency: ViemChain[\"nativeCurrency\"] & {\n coinGeckoId: string;\n /** Address of the ERC-20 contract that wraps the native currency. */\n wrapperContract?: string;\n };\n rpc: {\n /** Default RPC URL. */\n defaults: string[];\n [key: string]: unknown;\n };\n /** Used in deployment files to identify the chain, e.g., arbitrum-sepolia. */\n slug: string;\n };\n\n /**\n * Generic contract mapping that supports both simple addresses and address-with-block tuples.\n * @internal\n */\n export type ContractMap<TAddress extends string> = {\n [contractName: string]: TAddress | [TAddress, number];\n };\n\n /**\n * Base manifest structure for contract names in a protocol version.\n */\n export type Manifest = {\n [contractKey: string]: string;\n };\n\n /**\n * Generic contract type shared across all platforms (EVM, Solana, etc.).\n * This provides a consistent interface for contract metadata regardless of the underlying blockchain.\n *\n * @template TAddress - The address type for the platform (e.g., `0x${string}` for EVM, `string` for Solana)\n * @template TProtocol - The protocol enum/type for the platform\n * @template TVersion - The version enum/type for the platform\n */\n export type Contract<TAddress extends string, TProtocol, TVersion> = {\n /** The address of the contract. */\n address: TAddress;\n /** Optional alias for the contract, used in the Sablier Interface and the indexers. */\n alias?: string;\n /** The block number at which the contract was deployed. */\n block?: number;\n /** The ID of the chain the contract is deployed on. */\n chainId: number;\n /** URL to the explorer page for the contract. */\n explorerURL?: string;\n /** The name of the contract. */\n name: string;\n /** The protocol the contract is part of (optional). */\n protocol: TProtocol | undefined;\n /** The release version the contract is part of (optional). */\n version: TVersion | undefined;\n };\n}\n"]}
@@ -51,6 +51,7 @@ exports.solanaMainnetBeta = {
51
51
  feed: "99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR",
52
52
  program: "HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny",
53
53
  },
54
+ coinGeckoPlatformId: "solana",
54
55
  contracts: {},
55
56
  definition: {
56
57
  chainCode: "SOL",
@@ -1 +1 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/solana/chains/chains.ts"],"names":[],"mappings":";;;AAKa,QAAA,4BAA4B,GAAG,WAAW,CAAC;AAC3C,QAAA,sBAAsB,GAAG,WAAW,CAAC;AAErC,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,oCAA4B,EAAE,8BAAsB,CAAC,CAAC,CAAC;AAEnF,QAAA,YAAY,GAAyB;IAChD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,uCAAuC,EAAE;QACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,wCAAwC,EAAE;QAC9E,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,mCAAmC,EAAE;KACvE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,SAAS,EAAE,EAAE;IACb,UAAU,EAAE;QACV,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,8BAAsB;QAC/B,OAAO,EAAE,QAAQ;KAClB;IACD,EAAE,EAAE,8BAAsB;IAC1B,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE;QACd,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,qCAAqC,CAAC;QACjD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,0CAA0C,GAAG,EAAE;KACjE;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,qCAAqC,CAAC;SAC9C;KACF;IACD,IAAI,EAAE,eAAe;CACb,CAAC;AAEE,QAAA,iBAAiB,GAAyB;IACrD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,EAAE;QACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE;QACzD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE;KACxD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,SAAS,EAAE,EAAE;IACb,UAAU,EAAE;QACV,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,oCAA4B;QACrC,OAAO,EAAE,cAAc;KACxB;IACD,EAAE,EAAE,oCAA4B;IAChC,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,KAAK;IAChB,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE;QACd,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,sCAAsC,CAAC;QAClD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,2CAA2C,GAAG,EAAE;KAClE;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,sCAAsC,CAAC;SAC/C;KACF;IACD,IAAI,EAAE,qBAAqB;CACnB,CAAC","sourcesContent":["import type { Sablier } from \"@/src/types.js\";\n\n/**\n * Solana does not have chain IDs. These are made-up numbers so that we can use the same type for EVM and Solana chains.\n */\nexport const CHAIN_ID_SOLANA_MAINNET_BETA = 900_000_010;\nexport const CHAIN_ID_SOLANA_DEVNET = 900_000_020;\n\nexport const SOLANA_CHAIN_IDS = new Set([CHAIN_ID_SOLANA_MAINNET_BETA, CHAIN_ID_SOLANA_DEVNET]);\n\nexport const solanaDevnet: Sablier.Solana.Chain = {\n blockExplorers: {\n default: { name: \"Orb\", url: \"https://orb.helius.dev?cluster=devnet\" },\n solanaFm: { name: \"Solana FM\", url: \"https://solana.fm?cluster=devnet-alpha\" },\n solscan: { name: \"Solscan\", url: \"https://solscan.io?cluster=devnet\" },\n },\n chainlink: {\n feed: \"99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR\",\n program: \"HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny\",\n },\n contracts: {},\n definition: {\n chainCode: \"SOLDEV\",\n chainId: CHAIN_ID_SOLANA_DEVNET,\n cluster: \"devnet\",\n },\n id: CHAIN_ID_SOLANA_DEVNET,\n isSupportedByUI: true,\n isTestnet: true,\n name: \"Devnet\",\n nativeCurrency: {\n coinGeckoId: \"solana\",\n decimals: 9,\n name: \"Solana\",\n symbol: \"SOL\",\n },\n rpc: {\n defaults: [\"https://api.devnet-beta.solana.com/\"],\n helius: (key) => `https://devnet.helius-rpc.com/?api-key=${key}`,\n },\n rpcUrls: {\n default: {\n http: [\"https://api.devnet-beta.solana.com/\"],\n },\n },\n slug: \"solana-devnet\",\n} as const;\n\nexport const solanaMainnetBeta: Sablier.Solana.Chain = {\n blockExplorers: {\n default: { name: \"Orb\", url: \"https://orb.helius.dev\" },\n solanaFm: { name: \"Solana FM\", url: \"https://solana.fm\" },\n solscan: { name: \"Solscan\", url: \"https://solscan.io\" },\n },\n chainlink: {\n feed: \"99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR\",\n program: \"HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny\",\n },\n contracts: {},\n definition: {\n chainCode: \"SOL\",\n chainId: CHAIN_ID_SOLANA_MAINNET_BETA,\n cluster: \"mainnet-beta\",\n },\n id: CHAIN_ID_SOLANA_MAINNET_BETA,\n isSupportedByUI: true,\n isTestnet: false,\n name: \"Solana\",\n nativeCurrency: {\n coinGeckoId: \"solana\",\n decimals: 9,\n name: \"Solana\",\n symbol: \"SOL\",\n },\n rpc: {\n defaults: [\"https://api.mainnet-beta.solana.com/\"],\n helius: (key) => `https://mainnet.helius-rpc.com/?api-key=${key}`,\n },\n rpcUrls: {\n default: {\n http: [\"https://api.mainnet-beta.solana.com/\"],\n },\n },\n slug: \"solana-mainnet-beta\",\n} as const;\n"]}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/solana/chains/chains.ts"],"names":[],"mappings":";;;AAKa,QAAA,4BAA4B,GAAG,WAAW,CAAC;AAC3C,QAAA,sBAAsB,GAAG,WAAW,CAAC;AAErC,QAAA,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,oCAA4B,EAAE,8BAAsB,CAAC,CAAC,CAAC;AAEnF,QAAA,YAAY,GAAyB;IAChD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,uCAAuC,EAAE;QACtE,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,wCAAwC,EAAE;QAC9E,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,mCAAmC,EAAE;KACvE;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,SAAS,EAAE,EAAE;IACb,UAAU,EAAE;QACV,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,8BAAsB;QAC/B,OAAO,EAAE,QAAQ;KAClB;IACD,EAAE,EAAE,8BAAsB;IAC1B,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,IAAI;IACf,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE;QACd,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,qCAAqC,CAAC;QACjD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,0CAA0C,GAAG,EAAE;KACjE;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,qCAAqC,CAAC;SAC9C;KACF;IACD,IAAI,EAAE,eAAe;CACb,CAAC;AAEE,QAAA,iBAAiB,GAAyB;IACrD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,wBAAwB,EAAE;QACvD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,mBAAmB,EAAE;QACzD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,oBAAoB,EAAE;KACxD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,8CAA8C;QACpD,OAAO,EAAE,8CAA8C;KACxD;IACD,mBAAmB,EAAE,QAAQ;IAC7B,SAAS,EAAE,EAAE;IACb,UAAU,EAAE;QACV,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,oCAA4B;QACrC,OAAO,EAAE,cAAc;KACxB;IACD,EAAE,EAAE,oCAA4B;IAChC,eAAe,EAAE,IAAI;IACrB,SAAS,EAAE,KAAK;IAChB,IAAI,EAAE,QAAQ;IACd,cAAc,EAAE;QACd,WAAW,EAAE,QAAQ;QACrB,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,KAAK;KACd;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,CAAC,sCAAsC,CAAC;QAClD,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,2CAA2C,GAAG,EAAE;KAClE;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,sCAAsC,CAAC;SAC/C;KACF;IACD,IAAI,EAAE,qBAAqB;CACnB,CAAC","sourcesContent":["import type { Sablier } from \"@/src/types.js\";\n\n/**\n * Solana does not have chain IDs. These are made-up numbers so that we can use the same type for EVM and Solana chains.\n */\nexport const CHAIN_ID_SOLANA_MAINNET_BETA = 900_000_010;\nexport const CHAIN_ID_SOLANA_DEVNET = 900_000_020;\n\nexport const SOLANA_CHAIN_IDS = new Set([CHAIN_ID_SOLANA_MAINNET_BETA, CHAIN_ID_SOLANA_DEVNET]);\n\nexport const solanaDevnet: Sablier.Solana.Chain = {\n blockExplorers: {\n default: { name: \"Orb\", url: \"https://orb.helius.dev?cluster=devnet\" },\n solanaFm: { name: \"Solana FM\", url: \"https://solana.fm?cluster=devnet-alpha\" },\n solscan: { name: \"Solscan\", url: \"https://solscan.io?cluster=devnet\" },\n },\n chainlink: {\n feed: \"99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR\",\n program: \"HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny\",\n },\n contracts: {},\n definition: {\n chainCode: \"SOLDEV\",\n chainId: CHAIN_ID_SOLANA_DEVNET,\n cluster: \"devnet\",\n },\n id: CHAIN_ID_SOLANA_DEVNET,\n isSupportedByUI: true,\n isTestnet: true,\n name: \"Devnet\",\n nativeCurrency: {\n coinGeckoId: \"solana\",\n decimals: 9,\n name: \"Solana\",\n symbol: \"SOL\",\n },\n rpc: {\n defaults: [\"https://api.devnet-beta.solana.com/\"],\n helius: (key) => `https://devnet.helius-rpc.com/?api-key=${key}`,\n },\n rpcUrls: {\n default: {\n http: [\"https://api.devnet-beta.solana.com/\"],\n },\n },\n slug: \"solana-devnet\",\n} as const;\n\nexport const solanaMainnetBeta: Sablier.Solana.Chain = {\n blockExplorers: {\n default: { name: \"Orb\", url: \"https://orb.helius.dev\" },\n solanaFm: { name: \"Solana FM\", url: \"https://solana.fm\" },\n solscan: { name: \"Solscan\", url: \"https://solscan.io\" },\n },\n chainlink: {\n feed: \"99B2bTijsU6f1GCT73HmdR7HCFFjGMBcPZY6jZ96ynrR\",\n program: \"HEvSKofvBgfaexv23kMabbYqxasxU3mQ4ibBMEmJWHny\",\n },\n coinGeckoPlatformId: \"solana\",\n contracts: {},\n definition: {\n chainCode: \"SOL\",\n chainId: CHAIN_ID_SOLANA_MAINNET_BETA,\n cluster: \"mainnet-beta\",\n },\n id: CHAIN_ID_SOLANA_MAINNET_BETA,\n isSupportedByUI: true,\n isTestnet: false,\n name: \"Solana\",\n nativeCurrency: {\n coinGeckoId: \"solana\",\n decimals: 9,\n name: \"Solana\",\n symbol: \"SOL\",\n },\n rpc: {\n defaults: [\"https://api.mainnet-beta.solana.com/\"],\n helius: (key) => `https://mainnet.helius-rpc.com/?api-key=${key}`,\n },\n rpcUrls: {\n default: {\n http: [\"https://api.mainnet-beta.solana.com/\"],\n },\n },\n slug: \"solana-mainnet-beta\",\n} as const;\n"]}
@@ -34,6 +34,7 @@ const buildChain = (key, spec) => {
34
34
  return {
35
35
  ...chain,
36
36
  blockExplorers: chain.blockExplorers,
37
+ coinGeckoPlatformId: spec.meta.coinGeckoPlatformId,
37
38
  isSupportedByUI,
38
39
  isTestnet,
39
40
  isZK: Boolean(spec.meta.isZk),
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../src/evm/chains/builder.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Chain as ViemChain } from \"viem\";\nimport { defineChain as viemDefine } from \"viem\";\nimport type { Sablier } from \"@/src/types.js\";\nimport { alchemyUrl, infuraUrl, routemeshUrl } from \"./providers.js\";\n\nexport type ChainSpec = {\n base: ViemChain;\n meta: {\n // Optional display overrides and metadata specific to Sablier.\n name?: string;\n isZk?: boolean;\n ui?: \"SUPPORTED\" | \"NOT_SUPPORTED\";\n slug?: string;\n };\n nativeCurrency: {\n // CoinGecko API ID for price lookups.\n coinGeckoId: string;\n // Wrapper contract for native token (if applicable).\n wrapperContract?: string;\n };\n rpc?: {\n alchemy?: string;\n infura?: string;\n routemesh?: boolean;\n };\n overrides?: Partial<ViemChain>;\n};\n\n/**\n * Merge a base viem chain with overrides while preserving core structure.\n *\n * We use `viemDefine` to keep any derived properties consistent with viem's\n * expected shape, while also allowing us to override partial fields like\n * block explorers or RPC URLs without losing the base chain data.\n */\nconst mergeChain = (base: ViemChain, overrides?: Partial<ViemChain>): ViemChain => {\n if (!overrides) {\n return base;\n }\n\n // Shallow merge: nested objects like blockExplorers are replaced, not deep-merged.\n // viemDefine normalizes the chain object and preserves derived fields.\n return viemDefine({\n ...base,\n ...overrides,\n blockExplorers: overrides.blockExplorers ?? base.blockExplorers,\n contracts: overrides.contracts ?? base.contracts,\n nativeCurrency: overrides.nativeCurrency ?? base.nativeCurrency,\n rpcUrls: overrides.rpcUrls ?? base.rpcUrls,\n });\n};\n\n/**\n * Build a Sablier chain from a spec, enforcing required metadata invariants.\n *\n * This centralizes validation (e.g. CoinGecko id presence), derives UI support\n * defaults, and wires provider RPC generators so the spec table can stay lean.\n */\nconst buildChain = (key: string, spec: ChainSpec): Sablier.EVM.Chain => {\n const chain = mergeChain(spec.base, spec.overrides);\n\n // Ensure viem-provided fields we rely on are present.\n if (!chain.blockExplorers) {\n throw new Error(`Chain ${chain.name} has no block explorers`);\n }\n\n const defaultRPCs = chain.rpcUrls.default.http;\n if (!defaultRPCs) {\n throw new Error(`Chain ${chain.name} has no default RPC`);\n }\n\n // CoinGecko id is required for pricing across the SDK.\n if (!spec.nativeCurrency.coinGeckoId) {\n throw new Error(`Chain ${chain.name} has no coinGecko ID`);\n }\n\n const alchemyNetwork = spec.rpc?.alchemy;\n const infuraNetwork = spec.rpc?.infura;\n const routemeshEnabled = spec.rpc?.routemesh !== false;\n\n // UI support is opt-in for testnets. Mainnets are supported by default unless flagged.\n const isTestnet = Boolean(chain.testnet);\n const uiOverride = spec.meta.ui;\n const isSupportedByUI = uiOverride ? uiOverride === \"SUPPORTED\" : !isTestnet;\n\n return {\n ...chain,\n blockExplorers: chain.blockExplorers,\n isSupportedByUI,\n isTestnet,\n isZK: Boolean(spec.meta.isZk),\n name: spec.meta.name ?? chain.name,\n nativeCurrency: {\n ...chain.nativeCurrency,\n coinGeckoId: spec.nativeCurrency.coinGeckoId,\n wrapperContract: spec.nativeCurrency.wrapperContract,\n },\n rpc: {\n // Provider URLs are generated from network slugs to avoid duplication.\n alchemy: alchemyNetwork ? (apiKey) => alchemyUrl(alchemyNetwork, apiKey) : undefined,\n defaults: defaultRPCs as string[],\n infura: infuraNetwork ? (apiKey) => infuraUrl(infuraNetwork, apiKey) : undefined,\n routemesh: routemeshEnabled ? (apiKey) => routemeshUrl(chain.id, apiKey) : undefined,\n },\n slug: spec.meta.slug ?? key,\n };\n};\n\n/**\n * Build the full chain registry from the specs object.\n *\n * We intentionally derive the registry from a single spec source so the type,\n * metadata, and provider configuration are assembled in one pass. This keeps\n * exports consistent and makes it hard to forget required metadata when a new\n * chain is added.\n */\nexport const buildChains = <T extends Record<string, ChainSpec>>(\n specs: T\n): { [K in keyof T]: Sablier.EVM.Chain } => {\n const entries = Object.entries(specs).map(([key, spec]) => [key, buildChain(key, spec)]);\n\n return Object.fromEntries(entries) as { [K in keyof T]: Sablier.EVM.Chain };\n};\n"]}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../../src/evm/chains/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiCrE,MAAM,UAAU,GAAG,CAAC,IAAe,EAAE,SAA8B,EAAa,EAAE;IAChF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAID,OAAO,UAAU,CAAC;QAChB,GAAG,IAAI;QACP,GAAG,SAAS;QACZ,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;QAC/D,SAAS,EAAE,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;QAChD,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc;QAC/D,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;KAC3C,CAAC,CAAC;AACL,CAAC,CAAC;AAQF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAe,EAAqB,EAAE;IACrE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAGpD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,yBAAyB,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,qBAAqB,CAAC,CAAC;IAC5D,CAAC;IAGD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,sBAAsB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACvC,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,KAAK,KAAK,CAAC;IAGvD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAChC,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,OAAO;QACL,GAAG,KAAK;QACR,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB;QAClD,eAAe;QACf,SAAS;QACT,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI;QAClC,cAAc,EAAE;YACd,GAAG,KAAK,CAAC,cAAc;YACvB,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW;YAC5C,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe;SACrD;QACD,GAAG,EAAE;YAEH,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACpF,QAAQ,EAAE,WAAuB;YACjC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YAChF,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;SACrF;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG;KAC5B,CAAC;AACJ,CAAC,CAAC;AAUF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAQ,EAC+B,EAAE;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEzF,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAA0C,CAAC;AAC9E,CAAC,CAAC","sourcesContent":["import type { Chain as ViemChain } from \"viem\";\nimport { defineChain as viemDefine } from \"viem\";\nimport type { Sablier } from \"@/src/types.js\";\nimport { alchemyUrl, infuraUrl, routemeshUrl } from \"./providers.js\";\n\nexport type ChainSpec = {\n base: ViemChain;\n meta: {\n // Optional display overrides and metadata specific to Sablier.\n coinGeckoPlatformId?: string;\n name?: string;\n isZk?: boolean;\n ui?: \"SUPPORTED\" | \"NOT_SUPPORTED\";\n slug?: string;\n };\n nativeCurrency: {\n // CoinGecko API ID for price lookups.\n coinGeckoId: string;\n // Wrapper contract for native token (if applicable).\n wrapperContract?: string;\n };\n rpc?: {\n alchemy?: string;\n infura?: string;\n routemesh?: boolean;\n };\n overrides?: Partial<ViemChain>;\n};\n\n/**\n * Merge a base viem chain with overrides while preserving core structure.\n *\n * We use `viemDefine` to keep any derived properties consistent with viem's\n * expected shape, while also allowing us to override partial fields like\n * block explorers or RPC URLs without losing the base chain data.\n */\nconst mergeChain = (base: ViemChain, overrides?: Partial<ViemChain>): ViemChain => {\n if (!overrides) {\n return base;\n }\n\n // Shallow merge: nested objects like blockExplorers are replaced, not deep-merged.\n // viemDefine normalizes the chain object and preserves derived fields.\n return viemDefine({\n ...base,\n ...overrides,\n blockExplorers: overrides.blockExplorers ?? base.blockExplorers,\n contracts: overrides.contracts ?? base.contracts,\n nativeCurrency: overrides.nativeCurrency ?? base.nativeCurrency,\n rpcUrls: overrides.rpcUrls ?? base.rpcUrls,\n });\n};\n\n/**\n * Build a Sablier chain from a spec, enforcing required metadata invariants.\n *\n * This centralizes validation (e.g. CoinGecko id presence), derives UI support\n * defaults, and wires provider RPC generators so the spec table can stay lean.\n */\nconst buildChain = (key: string, spec: ChainSpec): Sablier.EVM.Chain => {\n const chain = mergeChain(spec.base, spec.overrides);\n\n // Ensure viem-provided fields we rely on are present.\n if (!chain.blockExplorers) {\n throw new Error(`Chain ${chain.name} has no block explorers`);\n }\n\n const defaultRPCs = chain.rpcUrls.default.http;\n if (!defaultRPCs) {\n throw new Error(`Chain ${chain.name} has no default RPC`);\n }\n\n // CoinGecko id is required for pricing across the SDK.\n if (!spec.nativeCurrency.coinGeckoId) {\n throw new Error(`Chain ${chain.name} has no coinGecko ID`);\n }\n\n const alchemyNetwork = spec.rpc?.alchemy;\n const infuraNetwork = spec.rpc?.infura;\n const routemeshEnabled = spec.rpc?.routemesh !== false;\n\n // UI support is opt-in for testnets. Mainnets are supported by default unless flagged.\n const isTestnet = Boolean(chain.testnet);\n const uiOverride = spec.meta.ui;\n const isSupportedByUI = uiOverride ? uiOverride === \"SUPPORTED\" : !isTestnet;\n\n return {\n ...chain,\n blockExplorers: chain.blockExplorers,\n coinGeckoPlatformId: spec.meta.coinGeckoPlatformId,\n isSupportedByUI,\n isTestnet,\n isZK: Boolean(spec.meta.isZk),\n name: spec.meta.name ?? chain.name,\n nativeCurrency: {\n ...chain.nativeCurrency,\n coinGeckoId: spec.nativeCurrency.coinGeckoId,\n wrapperContract: spec.nativeCurrency.wrapperContract,\n },\n rpc: {\n // Provider URLs are generated from network slugs to avoid duplication.\n alchemy: alchemyNetwork ? (apiKey) => alchemyUrl(alchemyNetwork, apiKey) : undefined,\n defaults: defaultRPCs as string[],\n infura: infuraNetwork ? (apiKey) => infuraUrl(infuraNetwork, apiKey) : undefined,\n routemesh: routemeshEnabled ? (apiKey) => routemeshUrl(chain.id, apiKey) : undefined,\n },\n slug: spec.meta.slug ?? key,\n };\n};\n\n/**\n * Build the full chain registry from the specs object.\n *\n * We intentionally derive the registry from a single spec source so the type,\n * metadata, and provider configuration are assembled in one pass. This keeps\n * exports consistent and makes it hard to forget required metadata when a new\n * chain is added.\n */\nexport const buildChains = <T extends Record<string, ChainSpec>>(\n specs: T\n): { [K in keyof T]: Sablier.EVM.Chain } => {\n const entries = Object.entries(specs).map(([key, spec]) => [key, buildChain(key, spec)]);\n\n return Object.fromEntries(entries) as { [K in keyof T]: Sablier.EVM.Chain };\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import { buildChains } from "./builder.js";
2
2
  import { chainSpecs } from "./specs.js";
3
3
  const chains = buildChains(chainSpecs);
4
- export const { abstract, arbitrum, arbitrumSepolia, avalanche, base, baseSepolia, berachain, blast, blastSepolia, bsc, coreDao, form, gnosis, iotex, lightlink, linea, lineaSepolia, mainnet, meld, mode, modeTestnet, morph, optimism, optimismSepolia, polygon, ronin, scroll, sepolia, sonic, superseed, superseedSepolia, taiko, unichain, xdc, } = chains;
5
- export const { chiliz, denergy, hyperevm, monad, sei, sophon, taikoHekla, tangle, zksync, zksyncSepolia, } = chains;
4
+ export const { abstract, arbitrum, arbitrumSepolia, avalanche, base, baseSepolia, berachain, blast, bsc, coreDao, gnosis, hyperevm, lightlink, linea, lineaSepolia, mainnet, mode, morph, optimism, optimismSepolia, polygon, ronin, scroll, sepolia, sonic, superseed, superseedSepolia, taiko, unichain, xdc, } = chains;
5
+ export const { chiliz, denergy, monad, sei, sophon, tangle, zksync, zksyncSepolia } = chains;
6
6
  //# sourceMappingURL=chains.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/evm/chains/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAMvC,MAAM,CAAC,MAAM,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,SAAS,EACT,IAAI,EACJ,WAAW,EACX,SAAS,EACT,KAAK,EACL,YAAY,EACZ,GAAG,EACH,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,EACT,KAAK,EACL,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,KAAK,EACL,QAAQ,EACR,eAAe,EACf,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,GAAG,GACJ,GAAG,MAAM,CAAC;AAMX,MAAM,CAAC,MAAM,EACX,MAAM,EACN,OAAO,EACP,QAAQ,EACR,KAAK,EACL,GAAG,EACH,MAAM,EACN,UAAU,EACV,MAAM,EACN,MAAM,EACN,aAAa,GACd,GAAG,MAAM,CAAC","sourcesContent":["import { buildChains } from \"./builder.js\";\nimport { chainSpecs } from \"./specs.js\";\n\nconst chains = buildChains(chainSpecs);\n\n/* -------------------------------------------------------------------------- */\n/* NORMAL DEFINITIONS */\n/* -------------------------------------------------------------------------- */\n\nexport const {\n abstract,\n arbitrum,\n arbitrumSepolia,\n avalanche,\n base,\n baseSepolia,\n berachain,\n blast,\n blastSepolia,\n bsc,\n coreDao,\n form,\n gnosis,\n iotex,\n lightlink,\n linea,\n lineaSepolia,\n mainnet,\n meld,\n mode,\n modeTestnet,\n morph,\n optimism,\n optimismSepolia,\n polygon,\n ronin,\n scroll,\n sepolia,\n sonic,\n superseed,\n superseedSepolia,\n taiko,\n unichain,\n xdc,\n} = chains;\n\n/* -------------------------------------------------------------------------- */\n/* CUSTOM DEFINITIONS */\n/* -------------------------------------------------------------------------- */\n\nexport const {\n chiliz,\n denergy,\n hyperevm,\n monad,\n sei,\n sophon,\n taikoHekla,\n tangle,\n zksync,\n zksyncSepolia,\n} = chains;\n"]}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../../src/evm/chains/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;AAMvC,MAAM,CAAC,MAAM,EACX,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,SAAS,EACT,IAAI,EACJ,WAAW,EACX,SAAS,EACT,KAAK,EAEL,GAAG,EACH,OAAO,EACP,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,YAAY,EACZ,OAAO,EACP,IAAI,EAEJ,KAAK,EACL,QAAQ,EACR,eAAe,EACf,OAAO,EACP,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,QAAQ,EACR,GAAG,GACJ,GAAG,MAAM,CAAC;AAMX,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC","sourcesContent":["import { buildChains } from \"./builder.js\";\nimport { chainSpecs } from \"./specs.js\";\n\nconst chains = buildChains(chainSpecs);\n\n/* -------------------------------------------------------------------------- */\n/* NORMAL DEFINITIONS */\n/* -------------------------------------------------------------------------- */\n\nexport const {\n abstract,\n arbitrum,\n arbitrumSepolia,\n avalanche,\n base,\n baseSepolia,\n berachain,\n blast,\n\n bsc,\n coreDao,\n gnosis,\n hyperevm,\n lightlink,\n linea,\n lineaSepolia,\n mainnet,\n mode,\n\n morph,\n optimism,\n optimismSepolia,\n polygon,\n ronin,\n scroll,\n sepolia,\n sonic,\n superseed,\n superseedSepolia,\n taiko,\n unichain,\n xdc,\n} = chains;\n\n/* -------------------------------------------------------------------------- */\n/* CUSTOM DEFINITIONS */\n/* -------------------------------------------------------------------------- */\n\nexport const { chiliz, denergy, monad, sei, sophon, tangle, zksync, zksyncSepolia } = chains;\n"]}