@avalabs/fusion-sdk 0.1.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 (398) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +264 -0
  3. package/dist/_utils/chain.cjs +2 -0
  4. package/dist/_utils/chain.cjs.map +1 -0
  5. package/dist/_utils/chain.js +2 -0
  6. package/dist/_utils/chain.js.map +1 -0
  7. package/dist/_utils/math.cjs +2 -0
  8. package/dist/_utils/math.cjs.map +1 -0
  9. package/dist/_utils/math.js +2 -0
  10. package/dist/_utils/math.js.map +1 -0
  11. package/dist/_utils/merge-assets.cjs +2 -0
  12. package/dist/_utils/merge-assets.cjs.map +1 -0
  13. package/dist/_utils/merge-assets.js +2 -0
  14. package/dist/_utils/merge-assets.js.map +1 -0
  15. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  16. package/dist/constants.cjs +2 -0
  17. package/dist/constants.cjs.map +1 -0
  18. package/dist/constants.d.cts +102 -0
  19. package/dist/constants.d.ts +102 -0
  20. package/dist/constants.js +2 -0
  21. package/dist/constants.js.map +1 -0
  22. package/dist/errors.cjs +2 -0
  23. package/dist/errors.cjs.map +1 -0
  24. package/dist/errors.d.cts +115 -0
  25. package/dist/errors.d.ts +115 -0
  26. package/dist/errors.js +2 -0
  27. package/dist/errors.js.map +1 -0
  28. package/dist/mod.cjs +1 -0
  29. package/dist/mod.d.cts +19 -0
  30. package/dist/mod.d.ts +19 -0
  31. package/dist/mod.js +1 -0
  32. package/dist/quoter/_utils.cjs +2 -0
  33. package/dist/quoter/_utils.cjs.map +1 -0
  34. package/dist/quoter/_utils.js +2 -0
  35. package/dist/quoter/_utils.js.map +1 -0
  36. package/dist/quoter/constants.cjs +2 -0
  37. package/dist/quoter/constants.cjs.map +1 -0
  38. package/dist/quoter/constants.js +2 -0
  39. package/dist/quoter/constants.js.map +1 -0
  40. package/dist/quoter/quoter.cjs +2 -0
  41. package/dist/quoter/quoter.cjs.map +1 -0
  42. package/dist/quoter/quoter.d.cts +31 -0
  43. package/dist/quoter/quoter.d.ts +34 -0
  44. package/dist/quoter/quoter.js +2 -0
  45. package/dist/quoter/quoter.js.map +1 -0
  46. package/dist/transfer-manager.cjs +2 -0
  47. package/dist/transfer-manager.cjs.map +1 -0
  48. package/dist/transfer-manager.d.cts +17 -0
  49. package/dist/transfer-manager.d.ts +17 -0
  50. package/dist/transfer-manager.js +2 -0
  51. package/dist/transfer-manager.js.map +1 -0
  52. package/dist/transfer-service/_abis.cjs +2 -0
  53. package/dist/transfer-service/_abis.cjs.map +1 -0
  54. package/dist/transfer-service/_abis.js +2 -0
  55. package/dist/transfer-service/_abis.js.map +1 -0
  56. package/dist/transfer-service/_evm-gas.cjs +2 -0
  57. package/dist/transfer-service/_evm-gas.cjs.map +1 -0
  58. package/dist/transfer-service/_evm-gas.js +2 -0
  59. package/dist/transfer-service/_evm-gas.js.map +1 -0
  60. package/dist/transfer-service/_tracking-utilities.cjs +2 -0
  61. package/dist/transfer-service/_tracking-utilities.cjs.map +1 -0
  62. package/dist/transfer-service/_tracking-utilities.js +2 -0
  63. package/dist/transfer-service/_tracking-utilities.js.map +1 -0
  64. package/dist/transfer-service/_transfer-utilities.cjs +2 -0
  65. package/dist/transfer-service/_transfer-utilities.cjs.map +1 -0
  66. package/dist/transfer-service/_transfer-utilities.js +2 -0
  67. package/dist/transfer-service/_transfer-utilities.js.map +1 -0
  68. package/dist/transfer-service/_utils.cjs +2 -0
  69. package/dist/transfer-service/_utils.cjs.map +1 -0
  70. package/dist/transfer-service/_utils.js +2 -0
  71. package/dist/transfer-service/_utils.js.map +1 -0
  72. package/dist/transfer-service/_warden-config-schema.cjs +2 -0
  73. package/dist/transfer-service/_warden-config-schema.cjs.map +1 -0
  74. package/dist/transfer-service/_warden-config-schema.js +2 -0
  75. package/dist/transfer-service/_warden-config-schema.js.map +1 -0
  76. package/dist/transfer-service/_warden-config.cjs +2 -0
  77. package/dist/transfer-service/_warden-config.cjs.map +1 -0
  78. package/dist/transfer-service/_warden-config.js +2 -0
  79. package/dist/transfer-service/_warden-config.js.map +1 -0
  80. package/dist/transfer-service/avalanche-evm/_constants.cjs +2 -0
  81. package/dist/transfer-service/avalanche-evm/_constants.cjs.map +1 -0
  82. package/dist/transfer-service/avalanche-evm/_constants.js +2 -0
  83. package/dist/transfer-service/avalanche-evm/_constants.js.map +1 -0
  84. package/dist/transfer-service/avalanche-evm/_handlers/analyze-support.cjs +2 -0
  85. package/dist/transfer-service/avalanche-evm/_handlers/analyze-support.cjs.map +1 -0
  86. package/dist/transfer-service/avalanche-evm/_handlers/analyze-support.js +2 -0
  87. package/dist/transfer-service/avalanche-evm/_handlers/analyze-support.js.map +1 -0
  88. package/dist/transfer-service/avalanche-evm/_handlers/estimate-native-fee.cjs +2 -0
  89. package/dist/transfer-service/avalanche-evm/_handlers/estimate-native-fee.cjs.map +1 -0
  90. package/dist/transfer-service/avalanche-evm/_handlers/estimate-native-fee.js +2 -0
  91. package/dist/transfer-service/avalanche-evm/_handlers/estimate-native-fee.js.map +1 -0
  92. package/dist/transfer-service/avalanche-evm/_handlers/get-assets.cjs +2 -0
  93. package/dist/transfer-service/avalanche-evm/_handlers/get-assets.cjs.map +1 -0
  94. package/dist/transfer-service/avalanche-evm/_handlers/get-assets.js +2 -0
  95. package/dist/transfer-service/avalanche-evm/_handlers/get-assets.js.map +1 -0
  96. package/dist/transfer-service/avalanche-evm/_handlers/get-minimum-transfer-amount.cjs +2 -0
  97. package/dist/transfer-service/avalanche-evm/_handlers/get-minimum-transfer-amount.cjs.map +1 -0
  98. package/dist/transfer-service/avalanche-evm/_handlers/get-minimum-transfer-amount.js +2 -0
  99. package/dist/transfer-service/avalanche-evm/_handlers/get-minimum-transfer-amount.js.map +1 -0
  100. package/dist/transfer-service/avalanche-evm/_handlers/get-supported-chains.cjs +2 -0
  101. package/dist/transfer-service/avalanche-evm/_handlers/get-supported-chains.cjs.map +1 -0
  102. package/dist/transfer-service/avalanche-evm/_handlers/get-supported-chains.js +2 -0
  103. package/dist/transfer-service/avalanche-evm/_handlers/get-supported-chains.js.map +1 -0
  104. package/dist/transfer-service/avalanche-evm/_handlers/stream-quotes.cjs +2 -0
  105. package/dist/transfer-service/avalanche-evm/_handlers/stream-quotes.cjs.map +1 -0
  106. package/dist/transfer-service/avalanche-evm/_handlers/stream-quotes.js +2 -0
  107. package/dist/transfer-service/avalanche-evm/_handlers/stream-quotes.js.map +1 -0
  108. package/dist/transfer-service/avalanche-evm/_handlers/track-transfer.cjs +2 -0
  109. package/dist/transfer-service/avalanche-evm/_handlers/track-transfer.cjs.map +1 -0
  110. package/dist/transfer-service/avalanche-evm/_handlers/track-transfer.js +2 -0
  111. package/dist/transfer-service/avalanche-evm/_handlers/track-transfer.js.map +1 -0
  112. package/dist/transfer-service/avalanche-evm/_handlers/transfer-asset.cjs +2 -0
  113. package/dist/transfer-service/avalanche-evm/_handlers/transfer-asset.cjs.map +1 -0
  114. package/dist/transfer-service/avalanche-evm/_handlers/transfer-asset.js +2 -0
  115. package/dist/transfer-service/avalanche-evm/_handlers/transfer-asset.js.map +1 -0
  116. package/dist/transfer-service/avalanche-evm/_utils/fee.cjs +2 -0
  117. package/dist/transfer-service/avalanche-evm/_utils/fee.cjs.map +1 -0
  118. package/dist/transfer-service/avalanche-evm/_utils/fee.js +2 -0
  119. package/dist/transfer-service/avalanche-evm/_utils/fee.js.map +1 -0
  120. package/dist/transfer-service/avalanche-evm/_utils/get-config.cjs +2 -0
  121. package/dist/transfer-service/avalanche-evm/_utils/get-config.cjs.map +1 -0
  122. package/dist/transfer-service/avalanche-evm/_utils/get-config.js +2 -0
  123. package/dist/transfer-service/avalanche-evm/_utils/get-config.js.map +1 -0
  124. package/dist/transfer-service/avalanche-evm/_utils/transfer-data.cjs +2 -0
  125. package/dist/transfer-service/avalanche-evm/_utils/transfer-data.cjs.map +1 -0
  126. package/dist/transfer-service/avalanche-evm/_utils/transfer-data.js +2 -0
  127. package/dist/transfer-service/avalanche-evm/_utils/transfer-data.js.map +1 -0
  128. package/dist/transfer-service/avalanche-evm/_utils/unwrap.cjs +2 -0
  129. package/dist/transfer-service/avalanche-evm/_utils/unwrap.cjs.map +1 -0
  130. package/dist/transfer-service/avalanche-evm/_utils/unwrap.js +2 -0
  131. package/dist/transfer-service/avalanche-evm/_utils/unwrap.js.map +1 -0
  132. package/dist/transfer-service/avalanche-evm/_utils/validations.cjs +2 -0
  133. package/dist/transfer-service/avalanche-evm/_utils/validations.cjs.map +1 -0
  134. package/dist/transfer-service/avalanche-evm/_utils/validations.js +2 -0
  135. package/dist/transfer-service/avalanche-evm/_utils/validations.js.map +1 -0
  136. package/dist/transfer-service/avalanche-evm/_utils/wrap.cjs +2 -0
  137. package/dist/transfer-service/avalanche-evm/_utils/wrap.cjs.map +1 -0
  138. package/dist/transfer-service/avalanche-evm/_utils/wrap.js +2 -0
  139. package/dist/transfer-service/avalanche-evm/_utils/wrap.js.map +1 -0
  140. package/dist/transfer-service/avalanche-evm/avalanche-evm-service.cjs +2 -0
  141. package/dist/transfer-service/avalanche-evm/avalanche-evm-service.cjs.map +1 -0
  142. package/dist/transfer-service/avalanche-evm/avalanche-evm-service.js +2 -0
  143. package/dist/transfer-service/avalanche-evm/avalanche-evm-service.js.map +1 -0
  144. package/dist/transfer-service/fetch-utilities.cjs +4 -0
  145. package/dist/transfer-service/fetch-utilities.cjs.map +1 -0
  146. package/dist/transfer-service/fetch-utilities.js +4 -0
  147. package/dist/transfer-service/fetch-utilities.js.map +1 -0
  148. package/dist/transfer-service/lombard/_schema.cjs +2 -0
  149. package/dist/transfer-service/lombard/_schema.cjs.map +1 -0
  150. package/dist/transfer-service/lombard/_schema.js +2 -0
  151. package/dist/transfer-service/lombard/_schema.js.map +1 -0
  152. package/dist/transfer-service/lombard/_utils/asset.cjs +2 -0
  153. package/dist/transfer-service/lombard/_utils/asset.cjs.map +1 -0
  154. package/dist/transfer-service/lombard/_utils/asset.js +2 -0
  155. package/dist/transfer-service/lombard/_utils/asset.js.map +1 -0
  156. package/dist/transfer-service/lombard/_utils/chain.cjs +2 -0
  157. package/dist/transfer-service/lombard/_utils/chain.cjs.map +1 -0
  158. package/dist/transfer-service/lombard/_utils/chain.js +2 -0
  159. package/dist/transfer-service/lombard/_utils/chain.js.map +1 -0
  160. package/dist/transfer-service/lombard/_utils/fee.cjs +2 -0
  161. package/dist/transfer-service/lombard/_utils/fee.cjs.map +1 -0
  162. package/dist/transfer-service/lombard/_utils/fee.js +2 -0
  163. package/dist/transfer-service/lombard/_utils/fee.js.map +1 -0
  164. package/dist/transfer-service/lombard/_utils/metadata.cjs +2 -0
  165. package/dist/transfer-service/lombard/_utils/metadata.cjs.map +1 -0
  166. package/dist/transfer-service/lombard/_utils/metadata.js +2 -0
  167. package/dist/transfer-service/lombard/_utils/metadata.js.map +1 -0
  168. package/dist/transfer-service/lombard/_utils/utxo.cjs +2 -0
  169. package/dist/transfer-service/lombard/_utils/utxo.cjs.map +1 -0
  170. package/dist/transfer-service/lombard/_utils/utxo.js +2 -0
  171. package/dist/transfer-service/lombard/_utils/utxo.js.map +1 -0
  172. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/analyze-support.cjs +2 -0
  173. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/analyze-support.cjs.map +1 -0
  174. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/analyze-support.js +2 -0
  175. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/analyze-support.js.map +1 -0
  176. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/estimate-native-fee.cjs +2 -0
  177. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/estimate-native-fee.cjs.map +1 -0
  178. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/estimate-native-fee.js +2 -0
  179. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/estimate-native-fee.js.map +1 -0
  180. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-assets.cjs +2 -0
  181. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-assets.cjs.map +1 -0
  182. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-assets.js +2 -0
  183. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-assets.js.map +1 -0
  184. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-minimum-transfer-amount.cjs +2 -0
  185. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-minimum-transfer-amount.cjs.map +1 -0
  186. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-minimum-transfer-amount.js +2 -0
  187. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/get-minimum-transfer-amount.js.map +1 -0
  188. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/stream-quotes.cjs +2 -0
  189. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/stream-quotes.cjs.map +1 -0
  190. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/stream-quotes.js +2 -0
  191. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/stream-quotes.js.map +1 -0
  192. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/track-transfer.cjs +2 -0
  193. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/track-transfer.cjs.map +1 -0
  194. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/track-transfer.js +2 -0
  195. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/track-transfer.js.map +1 -0
  196. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/transfer-asset.cjs +2 -0
  197. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/transfer-asset.cjs.map +1 -0
  198. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/transfer-asset.js +2 -0
  199. package/dist/transfer-service/lombard/btc-to-btcb/_handlers/transfer-asset.js.map +1 -0
  200. package/dist/transfer-service/lombard/btc-to-btcb-service.cjs +2 -0
  201. package/dist/transfer-service/lombard/btc-to-btcb-service.cjs.map +1 -0
  202. package/dist/transfer-service/lombard/btc-to-btcb-service.js +2 -0
  203. package/dist/transfer-service/lombard/btc-to-btcb-service.js.map +1 -0
  204. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/analyze-support.cjs +2 -0
  205. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/analyze-support.cjs.map +1 -0
  206. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/analyze-support.js +2 -0
  207. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/analyze-support.js.map +1 -0
  208. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/estimate-native-fee.cjs +2 -0
  209. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/estimate-native-fee.cjs.map +1 -0
  210. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/estimate-native-fee.js +2 -0
  211. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/estimate-native-fee.js.map +1 -0
  212. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-assets.cjs +2 -0
  213. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-assets.cjs.map +1 -0
  214. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-assets.js +2 -0
  215. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/get-assets.js.map +1 -0
  216. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/stream-quotes.cjs +2 -0
  217. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/stream-quotes.cjs.map +1 -0
  218. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/stream-quotes.js +2 -0
  219. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/stream-quotes.js.map +1 -0
  220. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/track-transfer.cjs +2 -0
  221. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/track-transfer.cjs.map +1 -0
  222. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/track-transfer.js +2 -0
  223. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/track-transfer.js.map +1 -0
  224. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/transfer-asset.cjs +2 -0
  225. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/transfer-asset.cjs.map +1 -0
  226. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/transfer-asset.js +2 -0
  227. package/dist/transfer-service/lombard/btcb-to-btc/_handlers/transfer-asset.js.map +1 -0
  228. package/dist/transfer-service/lombard/btcb-to-btc-service.cjs +2 -0
  229. package/dist/transfer-service/lombard/btcb-to-btc-service.cjs.map +1 -0
  230. package/dist/transfer-service/lombard/btcb-to-btc-service.js +2 -0
  231. package/dist/transfer-service/lombard/btcb-to-btc-service.js.map +1 -0
  232. package/dist/transfer-service/lombard/constants.cjs +2 -0
  233. package/dist/transfer-service/lombard/constants.cjs.map +1 -0
  234. package/dist/transfer-service/lombard/constants.js +2 -0
  235. package/dist/transfer-service/lombard/constants.js.map +1 -0
  236. package/dist/transfer-service/markr/_abis/cross-chain-swap-wrapper-abi.cjs +2 -0
  237. package/dist/transfer-service/markr/_abis/cross-chain-swap-wrapper-abi.cjs.map +1 -0
  238. package/dist/transfer-service/markr/_abis/cross-chain-swap-wrapper-abi.js +2 -0
  239. package/dist/transfer-service/markr/_abis/cross-chain-swap-wrapper-abi.js.map +1 -0
  240. package/dist/transfer-service/markr/_abis/swap-wrapper-abi.cjs +2 -0
  241. package/dist/transfer-service/markr/_abis/swap-wrapper-abi.cjs.map +1 -0
  242. package/dist/transfer-service/markr/_abis/swap-wrapper-abi.js +2 -0
  243. package/dist/transfer-service/markr/_abis/swap-wrapper-abi.js.map +1 -0
  244. package/dist/transfer-service/markr/_api.cjs +2 -0
  245. package/dist/transfer-service/markr/_api.cjs.map +1 -0
  246. package/dist/transfer-service/markr/_api.js +2 -0
  247. package/dist/transfer-service/markr/_api.js.map +1 -0
  248. package/dist/transfer-service/markr/_handlers/analyze-support.cjs +2 -0
  249. package/dist/transfer-service/markr/_handlers/analyze-support.cjs.map +1 -0
  250. package/dist/transfer-service/markr/_handlers/analyze-support.js +2 -0
  251. package/dist/transfer-service/markr/_handlers/analyze-support.js.map +1 -0
  252. package/dist/transfer-service/markr/_handlers/estimate-native-fee.cjs +2 -0
  253. package/dist/transfer-service/markr/_handlers/estimate-native-fee.cjs.map +1 -0
  254. package/dist/transfer-service/markr/_handlers/estimate-native-fee.js +2 -0
  255. package/dist/transfer-service/markr/_handlers/estimate-native-fee.js.map +1 -0
  256. package/dist/transfer-service/markr/_handlers/get-assets.cjs +2 -0
  257. package/dist/transfer-service/markr/_handlers/get-assets.cjs.map +1 -0
  258. package/dist/transfer-service/markr/_handlers/get-assets.js +2 -0
  259. package/dist/transfer-service/markr/_handlers/get-assets.js.map +1 -0
  260. package/dist/transfer-service/markr/_handlers/get-minimum-transfer-amount.cjs +2 -0
  261. package/dist/transfer-service/markr/_handlers/get-minimum-transfer-amount.cjs.map +1 -0
  262. package/dist/transfer-service/markr/_handlers/get-minimum-transfer-amount.js +2 -0
  263. package/dist/transfer-service/markr/_handlers/get-minimum-transfer-amount.js.map +1 -0
  264. package/dist/transfer-service/markr/_handlers/stream-quotes.cjs +2 -0
  265. package/dist/transfer-service/markr/_handlers/stream-quotes.cjs.map +1 -0
  266. package/dist/transfer-service/markr/_handlers/stream-quotes.js +2 -0
  267. package/dist/transfer-service/markr/_handlers/stream-quotes.js.map +1 -0
  268. package/dist/transfer-service/markr/_handlers/track-transfer.cjs +2 -0
  269. package/dist/transfer-service/markr/_handlers/track-transfer.cjs.map +1 -0
  270. package/dist/transfer-service/markr/_handlers/track-transfer.js +2 -0
  271. package/dist/transfer-service/markr/_handlers/track-transfer.js.map +1 -0
  272. package/dist/transfer-service/markr/_handlers/transfer-asset.cjs +2 -0
  273. package/dist/transfer-service/markr/_handlers/transfer-asset.cjs.map +1 -0
  274. package/dist/transfer-service/markr/_handlers/transfer-asset.js +2 -0
  275. package/dist/transfer-service/markr/_handlers/transfer-asset.js.map +1 -0
  276. package/dist/transfer-service/markr/_schema.cjs +2 -0
  277. package/dist/transfer-service/markr/_schema.cjs.map +1 -0
  278. package/dist/transfer-service/markr/_schema.js +2 -0
  279. package/dist/transfer-service/markr/_schema.js.map +1 -0
  280. package/dist/transfer-service/markr/_type-guards.cjs +2 -0
  281. package/dist/transfer-service/markr/_type-guards.cjs.map +1 -0
  282. package/dist/transfer-service/markr/_type-guards.js +2 -0
  283. package/dist/transfer-service/markr/_type-guards.js.map +1 -0
  284. package/dist/transfer-service/markr/_utils.cjs +2 -0
  285. package/dist/transfer-service/markr/_utils.cjs.map +1 -0
  286. package/dist/transfer-service/markr/_utils.js +2 -0
  287. package/dist/transfer-service/markr/_utils.js.map +1 -0
  288. package/dist/transfer-service/markr/constants.cjs +2 -0
  289. package/dist/transfer-service/markr/constants.cjs.map +1 -0
  290. package/dist/transfer-service/markr/constants.js +2 -0
  291. package/dist/transfer-service/markr/constants.js.map +1 -0
  292. package/dist/transfer-service/markr/markr-service.cjs +2 -0
  293. package/dist/transfer-service/markr/markr-service.cjs.map +1 -0
  294. package/dist/transfer-service/markr/markr-service.js +2 -0
  295. package/dist/transfer-service/markr/markr-service.js.map +1 -0
  296. package/dist/transfer-service/service-schemas.cjs +2 -0
  297. package/dist/transfer-service/service-schemas.cjs.map +1 -0
  298. package/dist/transfer-service/service-schemas.js +2 -0
  299. package/dist/transfer-service/service-schemas.js.map +1 -0
  300. package/dist/transfer-service/wrap-unwrap/_handlers/analyze-support.cjs +2 -0
  301. package/dist/transfer-service/wrap-unwrap/_handlers/analyze-support.cjs.map +1 -0
  302. package/dist/transfer-service/wrap-unwrap/_handlers/analyze-support.js +2 -0
  303. package/dist/transfer-service/wrap-unwrap/_handlers/analyze-support.js.map +1 -0
  304. package/dist/transfer-service/wrap-unwrap/_handlers/estimate-native-fee.cjs +2 -0
  305. package/dist/transfer-service/wrap-unwrap/_handlers/estimate-native-fee.cjs.map +1 -0
  306. package/dist/transfer-service/wrap-unwrap/_handlers/estimate-native-fee.js +2 -0
  307. package/dist/transfer-service/wrap-unwrap/_handlers/estimate-native-fee.js.map +1 -0
  308. package/dist/transfer-service/wrap-unwrap/_handlers/get-assets.cjs +2 -0
  309. package/dist/transfer-service/wrap-unwrap/_handlers/get-assets.cjs.map +1 -0
  310. package/dist/transfer-service/wrap-unwrap/_handlers/get-assets.js +2 -0
  311. package/dist/transfer-service/wrap-unwrap/_handlers/get-assets.js.map +1 -0
  312. package/dist/transfer-service/wrap-unwrap/_handlers/get-minimum-transfer-amount.cjs +2 -0
  313. package/dist/transfer-service/wrap-unwrap/_handlers/get-minimum-transfer-amount.cjs.map +1 -0
  314. package/dist/transfer-service/wrap-unwrap/_handlers/get-minimum-transfer-amount.js +2 -0
  315. package/dist/transfer-service/wrap-unwrap/_handlers/get-minimum-transfer-amount.js.map +1 -0
  316. package/dist/transfer-service/wrap-unwrap/_handlers/stream-quotes.cjs +2 -0
  317. package/dist/transfer-service/wrap-unwrap/_handlers/stream-quotes.cjs.map +1 -0
  318. package/dist/transfer-service/wrap-unwrap/_handlers/stream-quotes.js +2 -0
  319. package/dist/transfer-service/wrap-unwrap/_handlers/stream-quotes.js.map +1 -0
  320. package/dist/transfer-service/wrap-unwrap/_handlers/track-transfer.cjs +2 -0
  321. package/dist/transfer-service/wrap-unwrap/_handlers/track-transfer.cjs.map +1 -0
  322. package/dist/transfer-service/wrap-unwrap/_handlers/track-transfer.js +2 -0
  323. package/dist/transfer-service/wrap-unwrap/_handlers/track-transfer.js.map +1 -0
  324. package/dist/transfer-service/wrap-unwrap/_handlers/transfer-asset.cjs +2 -0
  325. package/dist/transfer-service/wrap-unwrap/_handlers/transfer-asset.cjs.map +1 -0
  326. package/dist/transfer-service/wrap-unwrap/_handlers/transfer-asset.js +2 -0
  327. package/dist/transfer-service/wrap-unwrap/_handlers/transfer-asset.js.map +1 -0
  328. package/dist/transfer-service/wrap-unwrap/_utils.cjs +2 -0
  329. package/dist/transfer-service/wrap-unwrap/_utils.cjs.map +1 -0
  330. package/dist/transfer-service/wrap-unwrap/_utils.js +2 -0
  331. package/dist/transfer-service/wrap-unwrap/_utils.js.map +1 -0
  332. package/dist/transfer-service/wrap-unwrap/constants.cjs +2 -0
  333. package/dist/transfer-service/wrap-unwrap/constants.cjs.map +1 -0
  334. package/dist/transfer-service/wrap-unwrap/constants.js +2 -0
  335. package/dist/transfer-service/wrap-unwrap/constants.js.map +1 -0
  336. package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.cjs +2 -0
  337. package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.cjs.map +1 -0
  338. package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.js +2 -0
  339. package/dist/transfer-service/wrap-unwrap/wrap-unwrap-service.js.map +1 -0
  340. package/dist/type-guards.cjs +2 -0
  341. package/dist/type-guards.cjs.map +1 -0
  342. package/dist/type-guards.d.cts +16 -0
  343. package/dist/type-guards.d.ts +16 -0
  344. package/dist/type-guards.js +2 -0
  345. package/dist/type-guards.js.map +1 -0
  346. package/dist/types/asset.d.cts +61 -0
  347. package/dist/types/asset.d.ts +61 -0
  348. package/dist/types/bitcoin.d.cts +66 -0
  349. package/dist/types/bitcoin.d.ts +66 -0
  350. package/dist/types/caip.d.cts +30 -0
  351. package/dist/types/caip.d.ts +30 -0
  352. package/dist/types/chain.d.cts +17 -0
  353. package/dist/types/chain.d.ts +17 -0
  354. package/dist/types/fee.d.cts +13 -0
  355. package/dist/types/fee.d.ts +13 -0
  356. package/dist/types/quote.d.cts +140 -0
  357. package/dist/types/quote.d.ts +140 -0
  358. package/dist/types/service.d.cts +224 -0
  359. package/dist/types/service.d.ts +224 -0
  360. package/dist/types/signer.d.cts +50 -0
  361. package/dist/types/signer.d.ts +50 -0
  362. package/dist/types/transfer-manager.d.cts +115 -0
  363. package/dist/types/transfer-manager.d.ts +115 -0
  364. package/dist/types/transfer.d.cts +107 -0
  365. package/dist/types/transfer.d.ts +107 -0
  366. package/dist/types/utility-types.d.cts +21 -0
  367. package/dist/types/utility-types.d.ts +21 -0
  368. package/dist/utils/bitcoin-address.cjs +2 -0
  369. package/dist/utils/bitcoin-address.cjs.map +1 -0
  370. package/dist/utils/bitcoin-address.js +2 -0
  371. package/dist/utils/bitcoin-address.js.map +1 -0
  372. package/dist/utils/caip.cjs +2 -0
  373. package/dist/utils/caip.cjs.map +1 -0
  374. package/dist/utils/caip.d.cts +49 -0
  375. package/dist/utils/caip.d.ts +49 -0
  376. package/dist/utils/caip.js +2 -0
  377. package/dist/utils/caip.js.map +1 -0
  378. package/dist/utils/evm-address.cjs +2 -0
  379. package/dist/utils/evm-address.cjs.map +1 -0
  380. package/dist/utils/evm-address.js +2 -0
  381. package/dist/utils/evm-address.js.map +1 -0
  382. package/dist/utils/quote-fees.cjs +2 -0
  383. package/dist/utils/quote-fees.cjs.map +1 -0
  384. package/dist/utils/quote-fees.js +2 -0
  385. package/dist/utils/quote-fees.js.map +1 -0
  386. package/dist/utils/sol-address.cjs +2 -0
  387. package/dist/utils/sol-address.cjs.map +1 -0
  388. package/dist/utils/sol-address.js +2 -0
  389. package/dist/utils/sol-address.js.map +1 -0
  390. package/dist/utils/solana-transaction.d.cts +15 -0
  391. package/dist/utils/solana-transaction.d.ts +17 -0
  392. package/dist/utils/transfer-utils.cjs +2 -0
  393. package/dist/utils/transfer-utils.cjs.map +1 -0
  394. package/dist/utils/transfer-utils.d.cts +8 -0
  395. package/dist/utils/transfer-utils.d.ts +8 -0
  396. package/dist/utils/transfer-utils.js +2 -0
  397. package/dist/utils/transfer-utils.js.map +1 -0
  398. package/package.json +63 -0
package/LICENSE ADDED
@@ -0,0 +1,9 @@
1
+ Copyright (C) 2025, Ava Labs, Inc. All rights reserved.
2
+
3
+ Subject to the limited license below (**”License””), you may not, and you may not permit anyone else to, copy, reproduce, aggregate, republish, download, post, distribute, license, sublicense, reverse engineer, modify, or create derivative works based on this software (collectively, **“Software”**).
4
+
5
+ You are hereby granted a limited, non-exclusive, non-sublicensable and non-transferable license to download and use the Software as-is solely (i) for use in connection with the Avalanche Public Blockchain platform, having a NetworkID of 1 (Mainnet) or 5 (Fuji), and associated blockchains, comprised exclusively of the Avalanche X-Chain, C-Chain, P-Chain and any subnets linked to the P-Chain (**“Avalanche Authorized Platform”**) or (ii) for non-production, testing or research purposes without any commercial application within the Avalanche ecosystem (**“Non-Commercial Use”**); provided that, in each case, you may not use or allow use of the Software (a) in connection with any forks of the Avalanche Authorized Platform, (b) in any manner not operationally connected to the Avalanche Authorized Platform other than for Non-Commercial Use, or (c) to the extent the number of monthly active users or the number of total installs of any software that uses the Software across all versions thereof exceeds 10,000 at any time. You may not modify or alter the Software in any way.
6
+
7
+ You hereby acknowledge and agree to the terms set forth at www.avalabs.org/important-notice.
8
+
9
+ **TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED ON AN “AS IS” BASIS, AND AVA LABS EXPRESSLY DISCLAIMS AND EXCLUDES ALL REPRESENTATIONS, WARRANTIES AND OTHER TERMS AND CONDITIONS, WHETHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION BY OPERATION OF LAW OR BY CUSTOM, STATUTE OR OTHERWISE, AND INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTY, TERM, OR CONDITION OF NON-INFRINGEMENT, MERCHANTABILITY, TITLE, OR FITNESS FOR PARTICULAR PURPOSE. YOU USE THE SOFTWARE AT YOUR OWN RISK. AVA LABS EXPRESSLY DISCLAIMS ALL LIABILITY (INCLUDING FOR ALL DIRECT, CONSEQUENTIAL OR OTHER DAMAGES OR LOSSES) RELATED TO ANY USE OF THE SOFTWARE.**
package/README.md ADDED
@@ -0,0 +1,264 @@
1
+ <p align="center">
2
+ <a href="https://subnets.avax.network/">
3
+ <picture>
4
+ <img alt="Avalanche Logo" src="https://images.ctfassets.net/gcj8jwzm6086/Gse8dqDEnJtT87RsbbEf4/1609daeb09e9db4a6617d44623028356/Avalanche_Horizontal_White.svg" width="auto" height="60">
5
+ </picture>
6
+ </a>
7
+ </p>
8
+
9
+ <p align="center">
10
+ Unify swaps and bridges under a single, chain-agnostic API for discovering assets, quoting, executing, and tracking transfers.
11
+ <p>
12
+
13
+ ## What is this?
14
+
15
+ `@avalabs/fusion-sdk` provides a single, ergonomic interface to move assets within and across chains. It aggregates multiple services (bridges, DEX aggregators, etc.), streams time-sensitive quotes, executes transfers with your custom signers, and tracks progress until completion.
16
+
17
+ Current integrations include:
18
+
19
+ - Avalanche EVM transfer service (Avalanche ↔ Ethereum flows, native and ERC-20 flows where supported)
20
+ - Lombard BTC ↔ BTC.b bridging services
21
+ - Markr (swaps and cross-chain swaps via Markr Orchestrator)
22
+ - Wrap/unwrap service for native ↔ wrapped native assets on supported EVM chains
23
+
24
+ ## Installation
25
+
26
+ This package is ESM-first. Install along with peer dependencies you use in your app:
27
+
28
+ ```sh
29
+ # with pnpm
30
+ pnpm add @avalabs/fusion-sdk @solana/kit viem zod
31
+
32
+ # with npm
33
+ npm install @avalabs/fusion-sdk @solana/kit viem zod
34
+
35
+ # with yarn
36
+ yarn add @avalabs/fusion-sdk @solana/kit viem zod
37
+ ```
38
+
39
+ ## Quickstart
40
+
41
+ Create a `TransferManager` by specifying an environment and enabling one or more services via initializers. Provide signers that match the services you enable.
42
+
43
+ ```ts
44
+ import {
45
+ createTransferManager,
46
+ Environment,
47
+ ServiceType,
48
+ AVALANCHE_MAINNET_CHAIN,
49
+ ETHEREUM_MAINNET_CHAIN,
50
+ TokenType,
51
+ type EvmSigner,
52
+ type Asset,
53
+ } from '@avalabs/fusion-sdk';
54
+ import { parseUnits } from 'viem';
55
+
56
+ // Minimal EVM signer. You can ignore the provided `dispatch` and
57
+ // relay with your wallet directly, returning the tx hash.
58
+ const evmSigner: EvmSigner = {
59
+ sign: async (tx, _dispatch, step) => {
60
+ // Example using an injected EIP-1193 provider
61
+ const hash: `0x${string}` = await (window as any).ethereum.request({
62
+ method: 'eth_sendTransaction',
63
+ params: [
64
+ {
65
+ from: tx.from,
66
+ to: tx.to ?? undefined,
67
+ data: tx.data ?? undefined,
68
+ value: tx.value ? `0x${tx.value.toString(16)}` : undefined,
69
+ maxFeePerGas: tx.maxFeePerGas ? `0x${tx.maxFeePerGas.toString(16)}` : undefined,
70
+ maxPriorityFeePerGas: tx.maxPriorityFeePerGas ? `0x${tx.maxPriorityFeePerGas.toString(16)}` : undefined,
71
+ },
72
+ ],
73
+ });
74
+
75
+ return hash;
76
+ },
77
+ };
78
+
79
+ // Enable services you want to use
80
+ const transferManager = await createTransferManager({
81
+ environment: Environment.PROD,
82
+ serviceInitializers: [
83
+ { type: ServiceType.AVALANCHE_EVM, evmSigner },
84
+ {
85
+ type: ServiceType.MARKR,
86
+ evmSigner,
87
+ markrApiUrl: 'https://orchestrator.markr.io', // Optional, defaults to use proxy endpoint.
88
+ markrApiToken: process.env.MARKR_API_TOKEN, // Optional, not needed if using default proxy url.
89
+ markrAppId: process.env.MARKR_APP_ID!, // Required.
90
+ },
91
+ ],
92
+ });
93
+
94
+ // Build a quoting intent
95
+ const sourceChain = ETHEREUM_MAINNET_CHAIN;
96
+ const targetChain = AVALANCHE_MAINNET_CHAIN;
97
+
98
+ const sourceAsset: Asset = sourceChain.networkToken; // e.g., ETH
99
+ const targetAsset: Asset = {
100
+ name: 'Wrapped Ether',
101
+ symbol: 'WETH.e',
102
+ decimals: 18,
103
+ type: TokenType.ERC20,
104
+ address: '0x49d5c2bdffac6ce2bfdb6640f4f80f226bc10bab',
105
+ };
106
+
107
+ const from = '0xYourAddress';
108
+ const to = from;
109
+
110
+ const quoter = transferManager.getQuoter({
111
+ amount: parseUnits('0.05', sourceAsset.decimals),
112
+ fromAddress: from,
113
+ slippageBps: 100, // 1%
114
+ sourceAsset,
115
+ sourceChain,
116
+ targetAsset,
117
+ targetChain,
118
+ toAddress: to,
119
+ });
120
+
121
+ // Subscribe for streaming quotes. Subscription starts immediately.
122
+ const unsubscribe = quoter.subscribe((event, payload) => {
123
+ if (event === 'quote') {
124
+ console.log('New quote', payload.bestQuote);
125
+ }
126
+ if (event === 'error') {
127
+ console.error('Quote error', payload);
128
+ }
129
+ if (event === 'done') {
130
+ console.log('Quote stream ended', payload.reason);
131
+ }
132
+ });
133
+
134
+ // ...later, stop streaming and pick the latest best quote
135
+ // This just simulates waiting for the user to start a "swap" after seeing quotes
136
+ // and selecting one to execute.
137
+ await wait(5000);
138
+ unsubscribe();
139
+
140
+ // This is a convenience method to get the latest quotes after streaming has stopped, but you can also maintain the latest quote in your own state from the subscription handler, which is recommended.
141
+ const [best, allQuotes] = quoter.getQuotes();
142
+ if (!best) throw new Error('No quotes available');
143
+
144
+ // Estimate the native fee for the transfer
145
+ const estimatedNativeFee = await transferManager.estimateNativeFee(best, { feeUnitsMarginBps: 2000 });
146
+ console.log('Estimated Native Fee (wei):', estimatedNativeFee.totalFee.toString());
147
+
148
+ // Execute the transfer
149
+ const transfer = await transferManager.transferAsset({
150
+ quote: best,
151
+ gasSettings: {
152
+ estimateGasMarginBps: 1500, // Adds 15% margin to the gas estimate to help prevent gas failures.
153
+ // maxFeePerGas, maxPriorityFeePerGas can be provided for EIP-1559 wallets
154
+ },
155
+ onStepChange: (step) => {
156
+ console.log('Signature step', step);
157
+ },
158
+ });
159
+
160
+ // Track until finalized (optional)
161
+ const { cancel, result } = transferManager.trackTransfer({
162
+ transfer,
163
+ updateListener: (updated) => console.log('Transfer update', updated),
164
+ });
165
+
166
+ // await cancel(); // to stop tracking early
167
+ const finalized = await result;
168
+ console.log('Finalized transfer', finalized);
169
+ ```
170
+
171
+ ## API Overview
172
+
173
+ ### `createTransferManager(options)`
174
+
175
+ Creates and returns a `TransferManager` that aggregates the services you enable.
176
+
177
+ ```ts
178
+ type CreateTransferManagerOptions = {
179
+ environment: Environment; // dev | production | test
180
+ serviceInitializers: readonly [ServiceInitializer, ...(readonly ServiceInitializer[])];
181
+ fetch?: Fetch;
182
+ };
183
+ ```
184
+
185
+ ### `TransferManager`
186
+
187
+ - `id: string`: Unique identifier for the transfer manager instance.
188
+ - `status(): TransferManagerStatus`: Returns initialization/status details per requested service.
189
+ - `getAssetBridgeMap({ sourceAsset, sourceChainId }): Promise<AssetBridgeMap | null>`: Given a source asset and chain, get possible bridge target assets per chain.
190
+ - `getSupportedChains(): Promise<ReadonlyMap<Caip2ChainId, ReadonlySet<Caip2ChainId>>>`: Supported source → destination chain pairs across initialized services.
191
+ - `getQuoter(props: QuoterProps, options?: QuoterOptions): QuoterInterface`: Create a streaming quote aggregator.
192
+ - `estimateNativeFee(quote, options?): Promise<NativeFeeEstimate>`: Service-aware native fee estimate.
193
+ - `getMinimumTransferAmount(props): Promise<{ [key in ServiceType]?: bigint } | null>`: Minimum amount per service for a given transfer intent.
194
+ - `transferAsset({ quote, gasSettings?, onStepChange? }): Promise<Transfer>`: Execute the selected quote.
195
+ - `trackTransfer({ transfer, updateListener }): { cancel, result }`: Track a transfer to completion.
196
+
197
+ ### `Quoter`
198
+
199
+ - `subscribe(handler)`: Starts streaming on first subscriber; returns unsubscribe.
200
+ - `getQuotes(): [bestQuote: Quote | null, allQuotes: readonly Quote[]]`: Snapshot of current _active_ quotes.
201
+
202
+ ### Quoter behavior
203
+
204
+ The `Quoter` aggregates all eligible initialized services for a single transfer intent and emits a unified stream of events:
205
+
206
+ - `quote`: emitted whenever a service returns a quote; payload includes `bestQuote`, the latest `quote`, and current active `quotes`.
207
+ - `error`: emitted when a service attempt errors; this is non-terminal by itself.
208
+ - `done`: terminal event with one of these reasons:
209
+ - `unsubscribed`: all subscribers removed.
210
+ - `no-eligible-services`: no initialized service can serve the requested pair.
211
+ - `no-quotes`: all eligible services have completed and no quote was produced.
212
+
213
+ Lifecycle notes:
214
+
215
+ - Streaming starts lazily on first subscription.
216
+ - Quotes are maintained as active (non-expired) quotes and internally re-ranked as updates arrive.
217
+ - Services with active quotes are refreshed before quote expiry.
218
+ - Services that finish without quotes are only retried after at least one quote has already been observed during the current session.
219
+ - If all eligible services finish during first pass with no quotes, quoter completes immediately with `done: no-quotes`.
220
+
221
+ ## Types and Constants
222
+
223
+ Key exports are available from the package entry:
224
+
225
+ - Chains: `AVALANCHE_MAINNET_CHAIN`, `AVALANCHE_FUJI_CHAIN`, `ETHEREUM_MAINNET_CHAIN`, `ETHEREUM_SEPOLIA_CHAIN`, `BITCOIN_MAINNET_CHAIN`, `BITCOIN_TESTNET_CHAIN`, `SOLANA_MAINNET_CHAIN`, `SOLANA_DEVNET_CHAIN`.
226
+ - Enums: `Environment`, `ServiceType`, `TokenType`.
227
+ - Types: `Asset`, `Chain`, `Quote`, `Transfer`, `EvmSigner`, `BtcSigner`, `ChainAssetMap`, `QuoterProps`.
228
+ - Errors: `SdkError`, `InvalidParamsError`, `ServiceInitializationError`, `ServiceUnavailableError`, `TimeoutError`, helpers like `isSdkError(...)`.
229
+ - Utilities: CAIP helpers from `utils/caip`.
230
+
231
+ Assets and chains use CAIP-2 identifiers internally (for example, `eip155:43114` for Avalanche C-Chain). See `ChainAssetMap` for the shape returned by `getAssets()`.
232
+
233
+ ## Notes on Signers
234
+
235
+ - The EVM signer interface gives you full control over signing and broadcasting. You may:
236
+ - Submit via your wallet (ignore `dispatch`) and return the tx hash, or
237
+ - Use the provided `dispatch(serializedTx)` to broadcast a pre-signed transaction.
238
+ - Some services require `fromAddress` and `toAddress` to be identical (e.g., Avalanche EVM service). The SDK enforces these rules per service.
239
+
240
+ ## Supported Services
241
+
242
+ - ✅ `ServiceType.AVALANCHE_EVM`
243
+ - ✅ `ServiceType.WRAP_UNWRAP`
244
+ - ✅ `ServiceType.LOMBARD_BTC_TO_BTCB`
245
+ - ✅ `ServiceType.LOMBARD_BTCB_TO_BTC`
246
+ - ✅ `ServiceType.MARKR`
247
+
248
+ ## Environment Support by Service
249
+
250
+ `createTransferManager({ environment, serviceInitializers })` evaluates each configured service against the selected `Environment`.
251
+
252
+ | ServiceType | `Environment.DEV` (`dev`) | `Environment.TEST` (`test`) | `Environment.PROD` (`production`) | Notes |
253
+ | --------------------------------- | ------------------------- | --------------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------- |
254
+ | `ServiceType.AVALANCHE_EVM` | ✅ | ✅ | ✅ | Uses Warden config for the selected environment. |
255
+ | `ServiceType.WRAP_UNWRAP` | ✅ | ✅ | ✅ | `test` uses testnet chain configs; `dev` and `production` currently use mainnet chain configs. |
256
+ | `ServiceType.LOMBARD_BTC_TO_BTCB` | ✅ | ✅ | ✅ | Environment maps to Lombard envs (`dev` → `Env.dev`, `test` → `Env.ibc`, `production` → `Env.prod`). |
257
+ | `ServiceType.LOMBARD_BTCB_TO_BTC` | ✅ | ✅ | ✅ | Environment maps to Lombard envs (`dev` → `Env.dev`, `test` → `Env.ibc`, `production` → `Env.prod`). |
258
+ | `ServiceType.MARKR` | ❌ | ❌ | ✅ | Production-only. In non-production, status is `unsupported-environment`. |
259
+
260
+ You can inspect initialization outcomes with `transferManager.status()` to see per-service states (`initialized`, `error`, or `unsupported-environment`).
261
+
262
+ ## License
263
+
264
+ Licensed under the Limited Ecosystem License. See the LICENSE file in this package for details.
@@ -0,0 +1,2 @@
1
+ const e=require(`../constants.cjs`),t=t=>t===e.EvmChainId.ETHEREUM_HOMESTEAD||t===e.EvmChainId.ETHEREUM_TEST_SEPOLIA,n=t=>e.EthereumChainIds.MAINNET===t||e.EthereumChainIds.SEPOLIA===t,r=t=>e.AvalancheChainIds.FUJI===t||e.AvalancheChainIds.MAINNET===t,i=e=>r(e.chainId),a=e=>e.startsWith(`solana:`),o=e=>e.startsWith(`eip155:`),s=t=>t===e.EthereumChainIds.MAINNET||t===e.AvalancheChainIds.MAINNET||t===e.BitcoinChainIds.MAINNET||t===e.SolanaChainIds.MAINNET,c=e=>s(e.chainId);exports.isAvalancheChain=i,exports.isCaip2AvalancheChainId=r,exports.isCaip2EthereumChainId=n,exports.isEthereumChainId=t,exports.isEvmNamespace=o,exports.isMainnetChain=c,exports.isSolanaNamespace=a;
2
+ //# sourceMappingURL=chain.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.cjs","names":["EvmChainId","EthereumChainIds","AvalancheChainIds","BitcoinChainIds","SolanaChainIds"],"sources":["../../src/_utils/chain.ts"],"sourcesContent":["import {\n AvalancheChainIds,\n BitcoinChainIds,\n Blockchain,\n EthereumChainIds,\n EvmChainId,\n SolanaChainIds,\n} from '../constants';\nimport type { Caip2ChainId } from '../types/caip';\nimport type { Chain } from '../types/chain';\n\n// EVM\nexport const isEthereumChainId = (\n chainId: number,\n): chainId is EvmChainId.ETHEREUM_HOMESTEAD | EvmChainId.ETHEREUM_TEST_SEPOLIA => {\n return chainId === EvmChainId.ETHEREUM_HOMESTEAD || chainId === EvmChainId.ETHEREUM_TEST_SEPOLIA;\n};\n\nexport const isCaip2EthereumChainId = (caip2ChainId: string): caip2ChainId is EthereumChainIds => {\n return EthereumChainIds.MAINNET === caip2ChainId || EthereumChainIds.SEPOLIA === caip2ChainId;\n};\n\nexport const isEthereumChain = (chain: Chain): boolean => {\n return isCaip2EthereumChainId(chain.chainId);\n};\n\nexport const isAvalancheChainId = (\n chainId: number,\n): chainId is EvmChainId.AVALANCHE_MAINNET | EvmChainId.AVALANCHE_TESTNET => {\n return chainId === EvmChainId.AVALANCHE_MAINNET || chainId === EvmChainId.AVALANCHE_TESTNET;\n};\n\nexport const isCaip2AvalancheChainId = (caip2ChainId: string): caip2ChainId is AvalancheChainIds => {\n return AvalancheChainIds.FUJI === caip2ChainId || AvalancheChainIds.MAINNET === caip2ChainId;\n};\n\nexport const isAvalancheChain = (chain: Chain): boolean => {\n return isCaip2AvalancheChainId(chain.chainId);\n};\n\nexport const chainIdToBlockchain = (chainId: number): Blockchain | undefined => {\n switch (chainId) {\n case EvmChainId.AVALANCHE_MAINNET:\n case EvmChainId.AVALANCHE_TESTNET:\n return Blockchain.AVALANCHE;\n case EvmChainId.ETHEREUM_HOMESTEAD:\n case EvmChainId.ETHEREUM_TEST_SEPOLIA:\n return Blockchain.ETHEREUM;\n }\n};\n\n// Solana\nexport const isCaip2SolanaChainId = (caip2ChainId: string): caip2ChainId is SolanaChainIds => {\n return caip2ChainId === SolanaChainIds.MAINNET || caip2ChainId === SolanaChainIds.DEVNET;\n};\n\nexport const isSolanaChain = (chain: Chain): boolean => {\n return isCaip2SolanaChainId(chain.chainId);\n};\n\n/**\n * Check if a CAIP-2 chain ID belongs to the `solana` namespace.\n * This is broader than `isCaip2SolanaChainId` which only matches known chains.\n */\nexport const isSolanaNamespace = (chainId: Caip2ChainId): boolean => {\n return chainId.startsWith('solana:');\n};\n\n/**\n * Check if a CAIP-2 chain ID belongs to the `eip155` (EVM) namespace.\n */\nexport const isEvmNamespace = (chainId: Caip2ChainId): boolean => {\n return chainId.startsWith('eip155:');\n};\n\n// Bitcoin\nexport const isBitcoinChainId = (chainId: number): chainId is EvmChainId.BITCOIN | EvmChainId.BITCOIN_TESTNET => {\n return chainId === EvmChainId.BITCOIN || chainId === EvmChainId.BITCOIN_TESTNET;\n};\n\nexport const isCaip2BitcoinChainId = (caip2ChainId: string): caip2ChainId is BitcoinChainIds => {\n return caip2ChainId === BitcoinChainIds.MAINNET || caip2ChainId === BitcoinChainIds.TESTNET;\n};\n\nexport const isBitcoinChain = (chain: Chain): boolean => {\n return isCaip2BitcoinChainId(chain.chainId);\n};\n\n// All Networks\nexport const isMainnetCaip2ChainId = (\n chainId: string,\n): chainId is\n | AvalancheChainIds.MAINNET\n | EthereumChainIds.MAINNET\n | BitcoinChainIds.MAINNET\n | SolanaChainIds.MAINNET => {\n return (\n chainId === EthereumChainIds.MAINNET ||\n chainId === AvalancheChainIds.MAINNET ||\n chainId === BitcoinChainIds.MAINNET ||\n chainId === SolanaChainIds.MAINNET\n );\n};\n\nexport const isTestnetCaip2ChainId = (chainId: string): boolean => {\n return !isMainnetCaip2ChainId(chainId);\n};\n\nexport const isMainnetChain = (chain: Chain): boolean => {\n return isMainnetCaip2ChainId(chain.chainId);\n};\n\nexport const isTestnetChain = (chain: Chain): boolean => {\n return !isMainnetChain(chain);\n};\n\nexport const isMainnetChainId = (\n chainId: number,\n): chainId is EvmChainId.AVALANCHE_MAINNET | EvmChainId.ETHEREUM_HOMESTEAD | EvmChainId.BITCOIN => {\n return (\n chainId === EvmChainId.AVALANCHE_MAINNET ||\n chainId === EvmChainId.ETHEREUM_HOMESTEAD ||\n chainId === EvmChainId.BITCOIN\n );\n};\n\nexport const isTestnetChainId = (chainId: number): boolean => {\n return !isMainnetChainId(chainId);\n};\n"],"mappings":"oCAYa,EACX,GAEO,IAAYA,EAAAA,WAAW,oBAAsB,IAAYA,EAAAA,WAAW,sBAGhE,EAA0B,GAC9BC,EAAAA,iBAAiB,UAAY,GAAgBA,EAAAA,iBAAiB,UAAY,EAatE,EAA2B,GAC/BC,EAAAA,kBAAkB,OAAS,GAAgBA,EAAAA,kBAAkB,UAAY,EAGrE,EAAoB,GACxB,EAAwB,EAAM,QAAQ,CA2BlC,EAAqB,GACzB,EAAQ,WAAW,UAAU,CAMzB,EAAkB,GACtB,EAAQ,WAAW,UAAU,CAiBzB,EACX,GAOE,IAAYD,EAAAA,iBAAiB,SAC7B,IAAYC,EAAAA,kBAAkB,SAC9B,IAAYC,EAAAA,gBAAgB,SAC5B,IAAYC,EAAAA,eAAe,QAQlB,EAAkB,GACtB,EAAsB,EAAM,QAAQ"}
@@ -0,0 +1,2 @@
1
+ import{AvalancheChainIds as e,BitcoinChainIds as t,EthereumChainIds as n,EvmChainId as r,SolanaChainIds as i}from"../constants.js";const a=e=>e===r.ETHEREUM_HOMESTEAD||e===r.ETHEREUM_TEST_SEPOLIA,o=e=>n.MAINNET===e||n.SEPOLIA===e,s=t=>e.FUJI===t||e.MAINNET===t,c=e=>s(e.chainId),l=e=>e.startsWith(`solana:`),u=e=>e.startsWith(`eip155:`),d=r=>r===n.MAINNET||r===e.MAINNET||r===t.MAINNET||r===i.MAINNET,f=e=>d(e.chainId);export{c as isAvalancheChain,s as isCaip2AvalancheChainId,o as isCaip2EthereumChainId,a as isEthereumChainId,u as isEvmNamespace,f as isMainnetChain,l as isSolanaNamespace};
2
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","names":[],"sources":["../../src/_utils/chain.ts"],"sourcesContent":["import {\n AvalancheChainIds,\n BitcoinChainIds,\n Blockchain,\n EthereumChainIds,\n EvmChainId,\n SolanaChainIds,\n} from '../constants';\nimport type { Caip2ChainId } from '../types/caip';\nimport type { Chain } from '../types/chain';\n\n// EVM\nexport const isEthereumChainId = (\n chainId: number,\n): chainId is EvmChainId.ETHEREUM_HOMESTEAD | EvmChainId.ETHEREUM_TEST_SEPOLIA => {\n return chainId === EvmChainId.ETHEREUM_HOMESTEAD || chainId === EvmChainId.ETHEREUM_TEST_SEPOLIA;\n};\n\nexport const isCaip2EthereumChainId = (caip2ChainId: string): caip2ChainId is EthereumChainIds => {\n return EthereumChainIds.MAINNET === caip2ChainId || EthereumChainIds.SEPOLIA === caip2ChainId;\n};\n\nexport const isEthereumChain = (chain: Chain): boolean => {\n return isCaip2EthereumChainId(chain.chainId);\n};\n\nexport const isAvalancheChainId = (\n chainId: number,\n): chainId is EvmChainId.AVALANCHE_MAINNET | EvmChainId.AVALANCHE_TESTNET => {\n return chainId === EvmChainId.AVALANCHE_MAINNET || chainId === EvmChainId.AVALANCHE_TESTNET;\n};\n\nexport const isCaip2AvalancheChainId = (caip2ChainId: string): caip2ChainId is AvalancheChainIds => {\n return AvalancheChainIds.FUJI === caip2ChainId || AvalancheChainIds.MAINNET === caip2ChainId;\n};\n\nexport const isAvalancheChain = (chain: Chain): boolean => {\n return isCaip2AvalancheChainId(chain.chainId);\n};\n\nexport const chainIdToBlockchain = (chainId: number): Blockchain | undefined => {\n switch (chainId) {\n case EvmChainId.AVALANCHE_MAINNET:\n case EvmChainId.AVALANCHE_TESTNET:\n return Blockchain.AVALANCHE;\n case EvmChainId.ETHEREUM_HOMESTEAD:\n case EvmChainId.ETHEREUM_TEST_SEPOLIA:\n return Blockchain.ETHEREUM;\n }\n};\n\n// Solana\nexport const isCaip2SolanaChainId = (caip2ChainId: string): caip2ChainId is SolanaChainIds => {\n return caip2ChainId === SolanaChainIds.MAINNET || caip2ChainId === SolanaChainIds.DEVNET;\n};\n\nexport const isSolanaChain = (chain: Chain): boolean => {\n return isCaip2SolanaChainId(chain.chainId);\n};\n\n/**\n * Check if a CAIP-2 chain ID belongs to the `solana` namespace.\n * This is broader than `isCaip2SolanaChainId` which only matches known chains.\n */\nexport const isSolanaNamespace = (chainId: Caip2ChainId): boolean => {\n return chainId.startsWith('solana:');\n};\n\n/**\n * Check if a CAIP-2 chain ID belongs to the `eip155` (EVM) namespace.\n */\nexport const isEvmNamespace = (chainId: Caip2ChainId): boolean => {\n return chainId.startsWith('eip155:');\n};\n\n// Bitcoin\nexport const isBitcoinChainId = (chainId: number): chainId is EvmChainId.BITCOIN | EvmChainId.BITCOIN_TESTNET => {\n return chainId === EvmChainId.BITCOIN || chainId === EvmChainId.BITCOIN_TESTNET;\n};\n\nexport const isCaip2BitcoinChainId = (caip2ChainId: string): caip2ChainId is BitcoinChainIds => {\n return caip2ChainId === BitcoinChainIds.MAINNET || caip2ChainId === BitcoinChainIds.TESTNET;\n};\n\nexport const isBitcoinChain = (chain: Chain): boolean => {\n return isCaip2BitcoinChainId(chain.chainId);\n};\n\n// All Networks\nexport const isMainnetCaip2ChainId = (\n chainId: string,\n): chainId is\n | AvalancheChainIds.MAINNET\n | EthereumChainIds.MAINNET\n | BitcoinChainIds.MAINNET\n | SolanaChainIds.MAINNET => {\n return (\n chainId === EthereumChainIds.MAINNET ||\n chainId === AvalancheChainIds.MAINNET ||\n chainId === BitcoinChainIds.MAINNET ||\n chainId === SolanaChainIds.MAINNET\n );\n};\n\nexport const isTestnetCaip2ChainId = (chainId: string): boolean => {\n return !isMainnetCaip2ChainId(chainId);\n};\n\nexport const isMainnetChain = (chain: Chain): boolean => {\n return isMainnetCaip2ChainId(chain.chainId);\n};\n\nexport const isTestnetChain = (chain: Chain): boolean => {\n return !isMainnetChain(chain);\n};\n\nexport const isMainnetChainId = (\n chainId: number,\n): chainId is EvmChainId.AVALANCHE_MAINNET | EvmChainId.ETHEREUM_HOMESTEAD | EvmChainId.BITCOIN => {\n return (\n chainId === EvmChainId.AVALANCHE_MAINNET ||\n chainId === EvmChainId.ETHEREUM_HOMESTEAD ||\n chainId === EvmChainId.BITCOIN\n );\n};\n\nexport const isTestnetChainId = (chainId: number): boolean => {\n return !isMainnetChainId(chainId);\n};\n"],"mappings":"mIAYA,MAAa,EACX,GAEO,IAAY,EAAW,oBAAsB,IAAY,EAAW,sBAGhE,EAA0B,GAC9B,EAAiB,UAAY,GAAgB,EAAiB,UAAY,EAatE,EAA2B,GAC/B,EAAkB,OAAS,GAAgB,EAAkB,UAAY,EAGrE,EAAoB,GACxB,EAAwB,EAAM,QAAQ,CA2BlC,EAAqB,GACzB,EAAQ,WAAW,UAAU,CAMzB,EAAkB,GACtB,EAAQ,WAAW,UAAU,CAiBzB,EACX,GAOE,IAAY,EAAiB,SAC7B,IAAY,EAAkB,SAC9B,IAAY,EAAgB,SAC5B,IAAY,EAAe,QAQlB,EAAkB,GACtB,EAAsB,EAAM,QAAQ"}
@@ -0,0 +1,2 @@
1
+ function e({amountOut:e,assetOut:t,slippageBps:n}){if(!Number.isInteger(n))throw RangeError(`slippageBps must be an integer, got: ${n}`);if(n<0)throw RangeError(`slippageBps must be non-negative, got: ${n}`);let r=t.decimals,i=10n**BigInt(r);return e*(i-BigInt(n)*i/10000n)/i}exports.calculateMinimumAmountOut=e;
2
+ //# sourceMappingURL=math.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.cjs","names":[],"sources":["../../src/_utils/math.ts"],"sourcesContent":["import type { Quote } from '../types/quote';\n\n/**\n * @internal\n *\n * Converts a number to a bigint representation based on the specified decimals.\n *\n * @param value - The number to convert.\n * @param decimals - The number of decimal places.\n * @returns The bigint representation of the number.\n *\n * @throws {RangeError} If decimals is negative.\n *\n * @example\n * ```ts\n * const bigIntValue = numberToBigInt(1.23, 6); // returns 1230000n\n * ```\n */\nexport function numberToBigInt(value: number, decimals: number): bigint {\n const factor = 10 ** decimals;\n\n return BigInt(Math.floor(value * factor));\n}\n\n/**\n * @internal\n *\n * Calculates the minimum acceptable amount out after accounting for slippage.\n *\n * @param quote - The quote object containing amountOut, assetOut, and slippageBps.\n * @returns The minimum acceptable amount out as a bigint.\n *\n * @throws {RangeError} If slippageBps is negative or not an integer.\n *\n * @example\n * ```ts\n * const minAmountOut = calculateMinimumAmountOut({\n * amountOut: 1_000_000n,\n * assetOut: { decimals: 6, ... },\n * slippageBps: 50, // 0.5%\n * }); // returns 995_000n\n * ```\n */\nexport function calculateMinimumAmountOut({\n amountOut,\n assetOut,\n slippageBps,\n}: Pick<Quote, 'amountOut' | 'assetOut' | 'slippageBps'>): bigint {\n if (!Number.isInteger(slippageBps)) {\n throw new RangeError(`slippageBps must be an integer, got: ${slippageBps}`);\n }\n\n if (slippageBps < 0) {\n throw new RangeError(`slippageBps must be non-negative, got: ${slippageBps}`);\n }\n\n const decimals = assetOut.decimals;\n\n const factor = 10n ** BigInt(decimals);\n\n const slippageMultiplier = factor - (BigInt(slippageBps) * factor) / 10_000n;\n\n const minAmountOut = (amountOut * slippageMultiplier) / factor;\n\n return minAmountOut;\n}\n"],"mappings":"AA2CA,SAAgB,EAA0B,CACxC,YACA,WACA,eACgE,CAChE,GAAI,CAAC,OAAO,UAAU,EAAY,CAChC,MAAU,WAAW,wCAAwC,IAAc,CAG7E,GAAI,EAAc,EAChB,MAAU,WAAW,0CAA0C,IAAc,CAG/E,IAAM,EAAW,EAAS,SAEpB,EAAS,KAAO,OAAO,EAAS,CAMtC,OAFsB,GAFK,EAAU,OAAO,EAAY,CAAG,EAAU,QAEb"}
@@ -0,0 +1,2 @@
1
+ function e({amountOut:e,assetOut:t,slippageBps:n}){if(!Number.isInteger(n))throw RangeError(`slippageBps must be an integer, got: ${n}`);if(n<0)throw RangeError(`slippageBps must be non-negative, got: ${n}`);let r=t.decimals,i=10n**BigInt(r);return e*(i-BigInt(n)*i/10000n)/i}export{e as calculateMinimumAmountOut};
2
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","names":[],"sources":["../../src/_utils/math.ts"],"sourcesContent":["import type { Quote } from '../types/quote';\n\n/**\n * @internal\n *\n * Converts a number to a bigint representation based on the specified decimals.\n *\n * @param value - The number to convert.\n * @param decimals - The number of decimal places.\n * @returns The bigint representation of the number.\n *\n * @throws {RangeError} If decimals is negative.\n *\n * @example\n * ```ts\n * const bigIntValue = numberToBigInt(1.23, 6); // returns 1230000n\n * ```\n */\nexport function numberToBigInt(value: number, decimals: number): bigint {\n const factor = 10 ** decimals;\n\n return BigInt(Math.floor(value * factor));\n}\n\n/**\n * @internal\n *\n * Calculates the minimum acceptable amount out after accounting for slippage.\n *\n * @param quote - The quote object containing amountOut, assetOut, and slippageBps.\n * @returns The minimum acceptable amount out as a bigint.\n *\n * @throws {RangeError} If slippageBps is negative or not an integer.\n *\n * @example\n * ```ts\n * const minAmountOut = calculateMinimumAmountOut({\n * amountOut: 1_000_000n,\n * assetOut: { decimals: 6, ... },\n * slippageBps: 50, // 0.5%\n * }); // returns 995_000n\n * ```\n */\nexport function calculateMinimumAmountOut({\n amountOut,\n assetOut,\n slippageBps,\n}: Pick<Quote, 'amountOut' | 'assetOut' | 'slippageBps'>): bigint {\n if (!Number.isInteger(slippageBps)) {\n throw new RangeError(`slippageBps must be an integer, got: ${slippageBps}`);\n }\n\n if (slippageBps < 0) {\n throw new RangeError(`slippageBps must be non-negative, got: ${slippageBps}`);\n }\n\n const decimals = assetOut.decimals;\n\n const factor = 10n ** BigInt(decimals);\n\n const slippageMultiplier = factor - (BigInt(slippageBps) * factor) / 10_000n;\n\n const minAmountOut = (amountOut * slippageMultiplier) / factor;\n\n return minAmountOut;\n}\n"],"mappings":"AA2CA,SAAgB,EAA0B,CACxC,YACA,WACA,eACgE,CAChE,GAAI,CAAC,OAAO,UAAU,EAAY,CAChC,MAAU,WAAW,wCAAwC,IAAc,CAG7E,GAAI,EAAc,EAChB,MAAU,WAAW,0CAA0C,IAAc,CAG/E,IAAM,EAAW,EAAS,SAEpB,EAAS,KAAO,OAAO,EAAS,CAMtC,OAFsB,GAFK,EAAU,OAAO,EAAY,CAAG,EAAU,QAEb"}
@@ -0,0 +1,2 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants.cjs`),t=require(`../errors.cjs`),n=require(`../utils/caip.cjs`),r=require(`../utils/evm-address.cjs`);let i=require(`viem`),a=require(`es-toolkit`);function o(e){return{destinations:Object.fromEntries(Object.entries(e.destinations).map(([e,t])=>[e,{address:t.address,bridgeProviders:[...t.bridgeProviders]}])),swapProviders:[...e.swapProviders]}}function s(e,t){for(let[r,i]of Object.entries(t)){if(!n.isCaip2ChainId(r))continue;let t=e[r];if(t){let n=new Set(t.bridgeProviders);for(let e of i.bridgeProviders)n.add(e);e[r]={address:t.address??i.address,bridgeProviders:Array.from(n)}}else e[r]={address:i.address,bridgeProviders:[...i.bridgeProviders]}}}function c(e,t){let n=new Set(e);for(let e of t)n.add(e);return Array.from(n)}function l(t,n){let r=t[e.TokenType.NATIVE];if(!r){t[e.TokenType.NATIVE]={...n,...o(n)};return}s(r.destinations,n.destinations),r.swapProviders=c(r.swapProviders,n.swapProviders)}function u(e,t){if(!e)return[{...t,...o(t),address:r.formatEvmAddress(t.address)}];let n=e.find(e=>(0,i.isAddressEqual)(e.address,t.address));return n?(s(n.destinations,t.destinations),n.swapProviders=c(n.swapProviders,t.swapProviders),e):(e.push({...t,...o(t)}),e)}function d(e,t){if(!e)return[{...t,...o(t)}];let n=e.find(e=>e.address===t.address);return n?(s(n.destinations,t.destinations),n.swapProviders=c(n.swapProviders,t.swapProviders),e):(e.push({...t,...o(t)}),e)}function f(r){let i={};for(let a of r)for(let[r,o]of Object.entries(a))if(n.isCaip2ChainId(r)){i[r]||(i[r]={});for(let n of o)switch(n.type){case e.TokenType.NATIVE:l(i[r],n);break;case e.TokenType.ERC20:i[r][e.TokenType.ERC20]=u(i[r][e.TokenType.ERC20],n);break;case e.TokenType.SPL:i[r][e.TokenType.SPL]=d(i[r][e.TokenType.SPL],n);break;default:throw new t.SdkError(`Unsupported asset type encountered during merge.`,t.ErrorCode.UNKNOWN,{details:JSON.stringify({asset:n})})}}let o={};for(let t of Object.keys(i)){if(!n.isCaip2ChainId(t))continue;let r=i[t];o[t]=[],r?.[e.TokenType.NATIVE]&&o[t].push(r[e.TokenType.NATIVE]),r?.[e.TokenType.ERC20]&&o[t].push(...(0,a.sortBy)(r[e.TokenType.ERC20],[`symbol`,`name`,`address`])),r?.[e.TokenType.SPL]&&o[t].push(...(0,a.sortBy)(r[e.TokenType.SPL],[`symbol`,`name`,`address`]))}return o}exports.mergeChainAssetMaps=f;
2
+ //# sourceMappingURL=merge-assets.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-assets.cjs","names":["isCaip2ChainId","TokenType","formatEvmAddress","SdkError","ErrorCode"],"sources":["../../src/_utils/merge-assets.ts"],"sourcesContent":["import { sortBy } from 'es-toolkit';\nimport { TokenType, type ServiceType } from '../constants';\nimport { ErrorCode, SdkError } from '../errors';\nimport type { ChainAssetMap, Erc20Asset, NativeAsset, SplAsset } from '../types/asset';\nimport type { Caip2ChainId } from '../types/caip';\nimport type { DeepMutable } from '../types/utility-types';\nimport { isCaip2ChainId } from '../utils/caip';\nimport { isAddressEqual } from 'viem';\nimport { formatEvmAddress } from '../utils/evm-address';\n\n/** @internal */\nexport interface TransferableData {\n destinations: { [chainId: Caip2ChainId]: { address: string; bridgeProviders: ServiceType[] } };\n swapProviders: ServiceType[];\n}\n\n/** @internal */\nexport interface ReadonlyTransferableData {\n destinations: {\n readonly [chainId: Caip2ChainId]: { readonly address: string; readonly bridgeProviders: readonly ServiceType[] };\n };\n swapProviders: readonly ServiceType[];\n}\n\ninterface ChainAssets {\n [TokenType.NATIVE]?: NativeAsset & TransferableData;\n [TokenType.ERC20]?: (Erc20Asset & TransferableData)[];\n [TokenType.SPL]?: (SplAsset & TransferableData)[];\n}\n\ninterface OrganizedChainAssetMap {\n [chainId: Caip2ChainId]: ChainAssets;\n}\n\nfunction cloneTransferableData(data: ReadonlyTransferableData): TransferableData {\n return {\n destinations: Object.fromEntries(\n Object.entries(data.destinations).map(([chainId, info]) => [\n chainId,\n { address: info.address, bridgeProviders: [...info.bridgeProviders] },\n ]),\n ),\n swapProviders: [...data.swapProviders],\n };\n}\n\nfunction mergeDestinations(\n target: TransferableData['destinations'],\n source: ReadonlyTransferableData['destinations'],\n): void {\n for (const [destChainId, info] of Object.entries(source)) {\n if (!isCaip2ChainId(destChainId)) {\n continue;\n }\n\n const existingInfo = target[destChainId];\n if (existingInfo) {\n const merged = new Set(existingInfo.bridgeProviders);\n for (const service of info.bridgeProviders) {\n merged.add(service);\n }\n // Keep existing address; if none, set from source\n const address = existingInfo.address ?? info.address;\n target[destChainId] = { address, bridgeProviders: Array.from(merged) };\n } else {\n target[destChainId] = { address: info.address, bridgeProviders: [...info.bridgeProviders] };\n }\n }\n}\n\nfunction mergeSwapProviders(target: ServiceType[], source: readonly ServiceType[]): ServiceType[] {\n const merged = new Set(target);\n for (const provider of source) {\n merged.add(provider);\n }\n return Array.from(merged);\n}\n\nfunction mergeNative(chainAssets: ChainAssets, asset: NativeAsset & ReadonlyTransferableData): void {\n const existingAsset = chainAssets[TokenType.NATIVE];\n if (!existingAsset) {\n chainAssets[TokenType.NATIVE] = {\n ...asset,\n ...cloneTransferableData(asset),\n };\n return;\n }\n\n mergeDestinations(existingAsset.destinations, asset.destinations);\n existingAsset.swapProviders = mergeSwapProviders(existingAsset.swapProviders, asset.swapProviders);\n}\n\nfunction upsertErc20(\n list: (Erc20Asset & TransferableData)[] | undefined,\n asset: Erc20Asset & ReadonlyTransferableData,\n): (Erc20Asset & TransferableData)[] {\n if (!list) {\n return [\n {\n ...asset,\n ...cloneTransferableData(asset),\n // format address to lowercase for consistency\n address: formatEvmAddress(asset.address),\n },\n ];\n }\n const matchingAsset = list.find((a) => isAddressEqual(a.address, asset.address));\n if (matchingAsset) {\n mergeDestinations(matchingAsset.destinations, asset.destinations);\n matchingAsset.swapProviders = mergeSwapProviders(matchingAsset.swapProviders, asset.swapProviders);\n return list;\n }\n list.push({ ...asset, ...cloneTransferableData(asset) });\n return list;\n}\n\nfunction upsertSpl(\n list: (SplAsset & TransferableData)[] | undefined,\n asset: SplAsset & ReadonlyTransferableData,\n): (SplAsset & TransferableData)[] {\n if (!list) {\n return [{ ...asset, ...cloneTransferableData(asset) }];\n }\n const matchingAsset = list.find((a) => a.address === asset.address);\n if (matchingAsset) {\n mergeDestinations(matchingAsset.destinations, asset.destinations);\n matchingAsset.swapProviders = mergeSwapProviders(matchingAsset.swapProviders, asset.swapProviders);\n return list;\n }\n list.push({ ...asset, ...cloneTransferableData(asset) });\n return list;\n}\n\nexport function mergeChainAssetMaps(chainAssetMaps: readonly ChainAssetMap[]): ChainAssetMap {\n const organizedMap: OrganizedChainAssetMap = {};\n\n for (const assetMap of chainAssetMaps) {\n for (const [chainId, assets] of Object.entries(assetMap)) {\n if (!isCaip2ChainId(chainId)) {\n continue;\n }\n\n if (!organizedMap[chainId]) {\n organizedMap[chainId] = {};\n }\n\n for (const asset of assets) {\n switch (asset.type) {\n case TokenType.NATIVE: {\n mergeNative(organizedMap[chainId], asset);\n break;\n }\n\n case TokenType.ERC20: {\n organizedMap[chainId][TokenType.ERC20] = upsertErc20(organizedMap[chainId][TokenType.ERC20], asset);\n break;\n }\n\n case TokenType.SPL: {\n organizedMap[chainId][TokenType.SPL] = upsertSpl(organizedMap[chainId][TokenType.SPL], asset);\n break;\n }\n\n default: {\n throw new SdkError('Unsupported asset type encountered during merge.', ErrorCode.UNKNOWN, {\n details: JSON.stringify({ asset }),\n });\n }\n }\n }\n }\n }\n\n // Convert organized map back to ChainAssetMap format\n const mergedAssetMap: DeepMutable<ChainAssetMap> = {};\n\n for (const chainId of Object.keys(organizedMap)) {\n if (!isCaip2ChainId(chainId)) {\n continue;\n }\n\n const assetsByType = organizedMap[chainId];\n\n mergedAssetMap[chainId] = [];\n\n // Add native asset if exists\n if (assetsByType?.[TokenType.NATIVE]) {\n mergedAssetMap[chainId].push(assetsByType[TokenType.NATIVE]);\n }\n\n // Add ERC20 assets if exist\n if (assetsByType?.[TokenType.ERC20]) {\n mergedAssetMap[chainId].push(...sortBy(assetsByType[TokenType.ERC20], ['symbol', 'name', 'address']));\n }\n\n // Add SPL assets if exist\n if (assetsByType?.[TokenType.SPL]) {\n mergedAssetMap[chainId].push(...sortBy(assetsByType[TokenType.SPL], ['symbol', 'name', 'address']));\n }\n }\n\n return mergedAssetMap as ChainAssetMap;\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{TokenType as e}from"../constants.js";import{ErrorCode as t,SdkError as n}from"../errors.js";import{isCaip2ChainId as r}from"../utils/caip.js";import{formatEvmAddress as i}from"../utils/evm-address.js";import{isAddressEqual as a}from"viem";import{sortBy as o}from"es-toolkit";function s(e){return{destinations:Object.fromEntries(Object.entries(e.destinations).map(([e,t])=>[e,{address:t.address,bridgeProviders:[...t.bridgeProviders]}])),swapProviders:[...e.swapProviders]}}function c(e,t){for(let[n,i]of Object.entries(t)){if(!r(n))continue;let t=e[n];if(t){let r=new Set(t.bridgeProviders);for(let e of i.bridgeProviders)r.add(e);e[n]={address:t.address??i.address,bridgeProviders:Array.from(r)}}else e[n]={address:i.address,bridgeProviders:[...i.bridgeProviders]}}}function l(e,t){let n=new Set(e);for(let e of t)n.add(e);return Array.from(n)}function u(t,n){let r=t[e.NATIVE];if(!r){t[e.NATIVE]={...n,...s(n)};return}c(r.destinations,n.destinations),r.swapProviders=l(r.swapProviders,n.swapProviders)}function d(e,t){if(!e)return[{...t,...s(t),address:i(t.address)}];let n=e.find(e=>a(e.address,t.address));return n?(c(n.destinations,t.destinations),n.swapProviders=l(n.swapProviders,t.swapProviders),e):(e.push({...t,...s(t)}),e)}function f(e,t){if(!e)return[{...t,...s(t)}];let n=e.find(e=>e.address===t.address);return n?(c(n.destinations,t.destinations),n.swapProviders=l(n.swapProviders,t.swapProviders),e):(e.push({...t,...s(t)}),e)}function p(i){let a={};for(let o of i)for(let[i,s]of Object.entries(o))if(r(i)){a[i]||(a[i]={});for(let r of s)switch(r.type){case e.NATIVE:u(a[i],r);break;case e.ERC20:a[i][e.ERC20]=d(a[i][e.ERC20],r);break;case e.SPL:a[i][e.SPL]=f(a[i][e.SPL],r);break;default:throw new n(`Unsupported asset type encountered during merge.`,t.UNKNOWN,{details:JSON.stringify({asset:r})})}}let s={};for(let t of Object.keys(a)){if(!r(t))continue;let n=a[t];s[t]=[],n?.[e.NATIVE]&&s[t].push(n[e.NATIVE]),n?.[e.ERC20]&&s[t].push(...o(n[e.ERC20],[`symbol`,`name`,`address`])),n?.[e.SPL]&&s[t].push(...o(n[e.SPL],[`symbol`,`name`,`address`]))}return s}export{p as mergeChainAssetMaps};
2
+ //# sourceMappingURL=merge-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-assets.js","names":[],"sources":["../../src/_utils/merge-assets.ts"],"sourcesContent":["import { sortBy } from 'es-toolkit';\nimport { TokenType, type ServiceType } from '../constants';\nimport { ErrorCode, SdkError } from '../errors';\nimport type { ChainAssetMap, Erc20Asset, NativeAsset, SplAsset } from '../types/asset';\nimport type { Caip2ChainId } from '../types/caip';\nimport type { DeepMutable } from '../types/utility-types';\nimport { isCaip2ChainId } from '../utils/caip';\nimport { isAddressEqual } from 'viem';\nimport { formatEvmAddress } from '../utils/evm-address';\n\n/** @internal */\nexport interface TransferableData {\n destinations: { [chainId: Caip2ChainId]: { address: string; bridgeProviders: ServiceType[] } };\n swapProviders: ServiceType[];\n}\n\n/** @internal */\nexport interface ReadonlyTransferableData {\n destinations: {\n readonly [chainId: Caip2ChainId]: { readonly address: string; readonly bridgeProviders: readonly ServiceType[] };\n };\n swapProviders: readonly ServiceType[];\n}\n\ninterface ChainAssets {\n [TokenType.NATIVE]?: NativeAsset & TransferableData;\n [TokenType.ERC20]?: (Erc20Asset & TransferableData)[];\n [TokenType.SPL]?: (SplAsset & TransferableData)[];\n}\n\ninterface OrganizedChainAssetMap {\n [chainId: Caip2ChainId]: ChainAssets;\n}\n\nfunction cloneTransferableData(data: ReadonlyTransferableData): TransferableData {\n return {\n destinations: Object.fromEntries(\n Object.entries(data.destinations).map(([chainId, info]) => [\n chainId,\n { address: info.address, bridgeProviders: [...info.bridgeProviders] },\n ]),\n ),\n swapProviders: [...data.swapProviders],\n };\n}\n\nfunction mergeDestinations(\n target: TransferableData['destinations'],\n source: ReadonlyTransferableData['destinations'],\n): void {\n for (const [destChainId, info] of Object.entries(source)) {\n if (!isCaip2ChainId(destChainId)) {\n continue;\n }\n\n const existingInfo = target[destChainId];\n if (existingInfo) {\n const merged = new Set(existingInfo.bridgeProviders);\n for (const service of info.bridgeProviders) {\n merged.add(service);\n }\n // Keep existing address; if none, set from source\n const address = existingInfo.address ?? info.address;\n target[destChainId] = { address, bridgeProviders: Array.from(merged) };\n } else {\n target[destChainId] = { address: info.address, bridgeProviders: [...info.bridgeProviders] };\n }\n }\n}\n\nfunction mergeSwapProviders(target: ServiceType[], source: readonly ServiceType[]): ServiceType[] {\n const merged = new Set(target);\n for (const provider of source) {\n merged.add(provider);\n }\n return Array.from(merged);\n}\n\nfunction mergeNative(chainAssets: ChainAssets, asset: NativeAsset & ReadonlyTransferableData): void {\n const existingAsset = chainAssets[TokenType.NATIVE];\n if (!existingAsset) {\n chainAssets[TokenType.NATIVE] = {\n ...asset,\n ...cloneTransferableData(asset),\n };\n return;\n }\n\n mergeDestinations(existingAsset.destinations, asset.destinations);\n existingAsset.swapProviders = mergeSwapProviders(existingAsset.swapProviders, asset.swapProviders);\n}\n\nfunction upsertErc20(\n list: (Erc20Asset & TransferableData)[] | undefined,\n asset: Erc20Asset & ReadonlyTransferableData,\n): (Erc20Asset & TransferableData)[] {\n if (!list) {\n return [\n {\n ...asset,\n ...cloneTransferableData(asset),\n // format address to lowercase for consistency\n address: formatEvmAddress(asset.address),\n },\n ];\n }\n const matchingAsset = list.find((a) => isAddressEqual(a.address, asset.address));\n if (matchingAsset) {\n mergeDestinations(matchingAsset.destinations, asset.destinations);\n matchingAsset.swapProviders = mergeSwapProviders(matchingAsset.swapProviders, asset.swapProviders);\n return list;\n }\n list.push({ ...asset, ...cloneTransferableData(asset) });\n return list;\n}\n\nfunction upsertSpl(\n list: (SplAsset & TransferableData)[] | undefined,\n asset: SplAsset & ReadonlyTransferableData,\n): (SplAsset & TransferableData)[] {\n if (!list) {\n return [{ ...asset, ...cloneTransferableData(asset) }];\n }\n const matchingAsset = list.find((a) => a.address === asset.address);\n if (matchingAsset) {\n mergeDestinations(matchingAsset.destinations, asset.destinations);\n matchingAsset.swapProviders = mergeSwapProviders(matchingAsset.swapProviders, asset.swapProviders);\n return list;\n }\n list.push({ ...asset, ...cloneTransferableData(asset) });\n return list;\n}\n\nexport function mergeChainAssetMaps(chainAssetMaps: readonly ChainAssetMap[]): ChainAssetMap {\n const organizedMap: OrganizedChainAssetMap = {};\n\n for (const assetMap of chainAssetMaps) {\n for (const [chainId, assets] of Object.entries(assetMap)) {\n if (!isCaip2ChainId(chainId)) {\n continue;\n }\n\n if (!organizedMap[chainId]) {\n organizedMap[chainId] = {};\n }\n\n for (const asset of assets) {\n switch (asset.type) {\n case TokenType.NATIVE: {\n mergeNative(organizedMap[chainId], asset);\n break;\n }\n\n case TokenType.ERC20: {\n organizedMap[chainId][TokenType.ERC20] = upsertErc20(organizedMap[chainId][TokenType.ERC20], asset);\n break;\n }\n\n case TokenType.SPL: {\n organizedMap[chainId][TokenType.SPL] = upsertSpl(organizedMap[chainId][TokenType.SPL], asset);\n break;\n }\n\n default: {\n throw new SdkError('Unsupported asset type encountered during merge.', ErrorCode.UNKNOWN, {\n details: JSON.stringify({ asset }),\n });\n }\n }\n }\n }\n }\n\n // Convert organized map back to ChainAssetMap format\n const mergedAssetMap: DeepMutable<ChainAssetMap> = {};\n\n for (const chainId of Object.keys(organizedMap)) {\n if (!isCaip2ChainId(chainId)) {\n continue;\n }\n\n const assetsByType = organizedMap[chainId];\n\n mergedAssetMap[chainId] = [];\n\n // Add native asset if exists\n if (assetsByType?.[TokenType.NATIVE]) {\n mergedAssetMap[chainId].push(assetsByType[TokenType.NATIVE]);\n }\n\n // Add ERC20 assets if exist\n if (assetsByType?.[TokenType.ERC20]) {\n mergedAssetMap[chainId].push(...sortBy(assetsByType[TokenType.ERC20], ['symbol', 'name', 'address']));\n }\n\n // Add SPL assets if exist\n if (assetsByType?.[TokenType.SPL]) {\n mergedAssetMap[chainId].push(...sortBy(assetsByType[TokenType.SPL], ['symbol', 'name', 'address']));\n }\n }\n\n return mergedAssetMap as ChainAssetMap;\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -0,0 +1,2 @@
1
+ let e=function(e){return e.DEV=`dev`,e.PROD=`production`,e.TEST=`test`,e}({}),t=function(e){return e.NATIVE=`native`,e.ERC20=`erc20`,e.SPL=`spl`,e}({}),n=function(e){return e.AVALANCHE_EVM=`avalanche-evm`,e.LOMBARD_BTC_TO_BTCB=`lombard-btc-to-btcb`,e.LOMBARD_BTCB_TO_BTC=`lombard-btcb-to-btc`,e.MARKR=`markr`,e.WRAP_UNWRAP=`wrap-unwrap`,e}({});const r=[n.LOMBARD_BTCB_TO_BTC,n.LOMBARD_BTC_TO_BTCB],i=[n.AVALANCHE_EVM,n.WRAP_UNWRAP];let a=function(e){return e.AddressOwnership=`address-ownership`,e.AllowanceApproval=`allowance-approval`,e.TokensTransfer=`tokens-transfer`,e.WrapToken=`wrap-token`,e}({}),o=function(e){return e.FUJI=`eip155:43113`,e.MAINNET=`eip155:43114`,e}({}),s=function(e){return e.MAINNET=`eip155:1`,e.SEPOLIA=`eip155:11155111`,e}({}),c=function(e){return e.MAINNET=`bip122:000000000019d6689c085ae165831e93`,e.TESTNET=`bip122:000000000933ea01ad0ee984209779ba`,e}({}),l=function(e){return e.MAINNET=`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,e.DEVNET=`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,e}({});const u={chainId:o.FUJI,chainName:`Avalanche Fuji`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18},rpcUrl:`https://api.avax-test.network/ext/bc/C/rpc`},d={chainId:o.MAINNET,chainName:`Avalanche Mainnet`,rpcUrl:`https://api.avax.network/ext/bc/C/rpc`,networkToken:{type:t.NATIVE,name:`AVAX`,symbol:`AVAX`,decimals:18}},f={chainId:s.SEPOLIA,chainName:`Ethereum Sepolia`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/sepolia`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18}},p={chainId:s.MAINNET,chainName:`Ethereum Mainnet`,rpcUrl:`https://proxy-api.avax.network/proxy/infura/mainnet`,networkToken:{type:t.NATIVE,name:`ETH`,symbol:`ETH`,decimals:18}},m={chainId:c.TESTNET,chainName:`Bitcoin Testnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},h={chainId:c.MAINNET,chainName:`Bitcoin Mainnet`,rpcUrl:``,networkToken:{type:t.NATIVE,name:`Bitcoin`,symbol:`BTC`,decimals:8}},g={chainId:l.MAINNET,chainName:`Solana`,rpcUrl:`https://proxy-api.avax.network/proxy/nownodes/sol`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},_={chainId:l.DEVNET,chainName:`Solana (Devnet)`,rpcUrl:`https://api.devnet.solana.com`,networkToken:{type:t.NATIVE,name:`SOL`,symbol:`SOL`,decimals:9}},v={type:t.NATIVE,name:`Avalanche`,symbol:`AVAX`,decimals:18},y={type:t.NATIVE,name:`Ether`,symbol:`ETH`,decimals:18};let b=function(e){return e.AVALANCHE=`avalanche`,e.BITCOIN=`bitcoin`,e.ETHEREUM=`ethereum`,e.SOLANA=`solana`,e.UNKNOWN=`_unknown`,e}({}),x=function(e){return e[e.AVALANCHE_MAINNET=43114]=`AVALANCHE_MAINNET`,e[e.AVALANCHE_TESTNET=43113]=`AVALANCHE_TESTNET`,e[e.ETHEREUM_HOMESTEAD=1]=`ETHEREUM_HOMESTEAD`,e[e.ETHEREUM_TEST_SEPOLIA=11155111]=`ETHEREUM_TEST_SEPOLIA`,e[e.BITCOIN=0xfffffffffffeb]=`BITCOIN`,e[e.BITCOIN_TESTNET=0xfffffffffffea]=`BITCOIN_TESTNET`,e}({});const S={slow:`low`,normal:`medium`,fast:`high`};exports.AVALANCHE_FUJI_CHAIN=u,exports.AVALANCHE_MAINNET_CHAIN=d,exports.AvalancheChainIds=o,exports.BITCOIN_MAINNET_CHAIN=h,exports.BITCOIN_TESTNET_CHAIN=m,exports.BTC_SERVICE_TYPES=r,exports.BitcoinChainIds=c,exports.Blockchain=b,exports.ERC_ZERO_ADDRESS=`0x0000000000000000000000000000000000000000`,exports.ETHEREUM_MAINNET_CHAIN=p,exports.ETHEREUM_SEPOLIA_CHAIN=f,exports.EVM_SERVICE_TYPES=i,exports.Environment=e,exports.EthereumChainIds=s,exports.EvmChainId=x,exports.FEE_RATE_TIER_TO_BITCOIN=S,exports.NATIVE_AVAX=v,exports.NATIVE_ETH=y,exports.SOLANA_DEVNET_CHAIN=_,exports.SOLANA_MAINNET_CHAIN=g,exports.SOL_MINT_ADDRESS=`So11111111111111111111111111111111111111112`,exports.ServiceType=n,exports.SolanaChainIds=l,exports.TokenType=t,exports.TransferSignatureReason=a;
2
+ //# sourceMappingURL=constants.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs","names":[],"sources":["../src/constants.ts"],"sourcesContent":["import type { Address as SolAddress } from '@solana/kit';\nimport type { Address as EvmAddress } from 'viem';\nimport type { NativeAsset } from './types/asset';\nimport type { BitcoinFeeRateTier } from './types/bitcoin';\nimport type { Chain } from './types/chain';\nimport type { FeeRateTier } from './types/fee';\n\nexport enum Environment {\n DEV = 'dev',\n PROD = 'production',\n TEST = 'test',\n}\n\nexport enum TokenType {\n NATIVE = 'native',\n ERC20 = 'erc20',\n SPL = 'spl',\n}\n\nexport enum ServiceType {\n /** Bridge between EVM chains within Avalanche (or EVM-compatible flows). */\n AVALANCHE_EVM = 'avalanche-evm',\n /** Bitcoin → Avalanche. */\n LOMBARD_BTC_TO_BTCB = 'lombard-btc-to-btcb',\n /** Avalanche → Bitcoin. */\n LOMBARD_BTCB_TO_BTC = 'lombard-btcb-to-btc',\n MARKR = 'markr',\n /** Same-chain wrap/unwrap of native ETH ↔ WETH and AVAX ↔ WAVAX. */\n WRAP_UNWRAP = 'wrap-unwrap',\n}\n\nexport const BTC_SERVICE_TYPES: readonly [ServiceType.LOMBARD_BTCB_TO_BTC, ServiceType.LOMBARD_BTC_TO_BTCB] = [\n ServiceType.LOMBARD_BTCB_TO_BTC,\n ServiceType.LOMBARD_BTC_TO_BTCB,\n];\n\nexport const EVM_SERVICE_TYPES: readonly [ServiceType.AVALANCHE_EVM, ServiceType.WRAP_UNWRAP] = [\n ServiceType.AVALANCHE_EVM,\n ServiceType.WRAP_UNWRAP,\n];\n\n/** Reasons for user signatures during execution. */\nexport enum TransferSignatureReason {\n AddressOwnership = 'address-ownership',\n /** ERC-20 allowance approval for router/bridge. */\n AllowanceApproval = 'allowance-approval',\n /** The primary token movement call (swap or bridge submit). */\n TokensTransfer = 'tokens-transfer',\n /** Optional wrap/unwrap step for native token handling. */\n WrapToken = 'wrap-token',\n}\n\nexport const ERC_ZERO_ADDRESS: EvmAddress = '0x0000000000000000000000000000000000000000';\nexport const SOL_MINT_ADDRESS: SolAddress = 'So11111111111111111111111111111111111111112' as SolAddress;\n\nexport enum AvalancheChainIds {\n FUJI = 'eip155:43113',\n MAINNET = 'eip155:43114',\n}\n\nexport enum EthereumChainIds {\n MAINNET = 'eip155:1',\n SEPOLIA = 'eip155:11155111',\n}\n\nexport enum BitcoinChainIds {\n MAINNET = 'bip122:000000000019d6689c085ae165831e93',\n TESTNET = 'bip122:000000000933ea01ad0ee984209779ba',\n}\n\nexport enum SolanaChainIds {\n MAINNET = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',\n DEVNET = 'solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1',\n}\n\nexport const AVALANCHE_FUJI_CHAIN: Chain = {\n chainId: AvalancheChainIds.FUJI,\n chainName: 'Avalanche Fuji',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n rpcUrl: 'https://api.avax-test.network/ext/bc/C/rpc',\n};\n\nexport const AVALANCHE_MAINNET_CHAIN: Chain = {\n chainId: AvalancheChainIds.MAINNET,\n chainName: 'Avalanche Mainnet',\n rpcUrl: 'https://api.avax.network/ext/bc/C/rpc',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'AVAX',\n symbol: 'AVAX',\n decimals: 18,\n },\n};\n\nexport const ETHEREUM_SEPOLIA_CHAIN: Chain = {\n chainId: EthereumChainIds.SEPOLIA,\n chainName: 'Ethereum Sepolia',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/sepolia',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n};\n\nexport const ETHEREUM_MAINNET_CHAIN: Chain = {\n chainId: EthereumChainIds.MAINNET,\n chainName: 'Ethereum Mainnet',\n rpcUrl: 'https://proxy-api.avax.network/proxy/infura/mainnet',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'ETH',\n symbol: 'ETH',\n decimals: 18,\n },\n};\n\nexport const BITCOIN_TESTNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.TESTNET,\n chainName: 'Bitcoin Testnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n },\n};\n\nexport const BITCOIN_MAINNET_CHAIN: Chain = {\n chainId: BitcoinChainIds.MAINNET,\n chainName: 'Bitcoin Mainnet',\n rpcUrl: '',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'Bitcoin',\n symbol: 'BTC',\n decimals: 8,\n },\n};\n\nexport const SOLANA_MAINNET_CHAIN: Chain = {\n chainId: SolanaChainIds.MAINNET,\n chainName: 'Solana',\n rpcUrl: 'https://proxy-api.avax.network/proxy/nownodes/sol',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n },\n};\n\nexport const SOLANA_DEVNET_CHAIN: Chain = {\n chainId: SolanaChainIds.DEVNET,\n chainName: 'Solana (Devnet)',\n rpcUrl: 'https://api.devnet.solana.com',\n networkToken: {\n type: TokenType.NATIVE,\n name: 'SOL',\n symbol: 'SOL',\n decimals: 9,\n },\n};\nexport const NATIVE_AVAX: NativeAsset = { type: TokenType.NATIVE, name: 'Avalanche', symbol: 'AVAX', decimals: 18 };\nexport const NATIVE_ETH: NativeAsset = { type: TokenType.NATIVE, name: 'Ether', symbol: 'ETH', decimals: 18 };\n\nexport enum Blockchain {\n AVALANCHE = 'avalanche',\n BITCOIN = 'bitcoin',\n ETHEREUM = 'ethereum',\n SOLANA = 'solana',\n UNKNOWN = '_unknown',\n}\n\nexport enum EvmChainId {\n AVALANCHE_MAINNET = 43114,\n AVALANCHE_TESTNET = 43113,\n ETHEREUM_HOMESTEAD = 1,\n ETHEREUM_TEST_SEPOLIA = 11155111,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN = 4_503_599_627_370_476 - 1,\n /**\n * This is not a real chain ID, as Bitcoin does not have a chain ID.\n * It is used internally to represent Bitcoin in a way that avoids\n * conflicts with real EVM chain IDs.\n */\n BITCOIN_TESTNET = 4_503_599_627_370_476 - 2,\n}\n\n/**\n * Maps the unified {@link FeeRateTier} to the Bitcoin-specific\n * {@link BitcoinFeeRateTier} (`low | medium | high`).\n */\nexport const FEE_RATE_TIER_TO_BITCOIN: Record<FeeRateTier, BitcoinFeeRateTier> = {\n slow: 'low',\n normal: 'medium',\n fast: 'high',\n};\n"],"mappings":"AAOA,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,IAAA,MACA,EAAA,KAAA,aACA,EAAA,KAAA,cAGU,EAAA,SAAA,EAAL,OACL,GAAA,OAAA,SACA,EAAA,MAAA,QACA,EAAA,IAAA,aAGU,EAAA,SAAA,EAAL,OAEL,GAAA,cAAA,gBAEA,EAAA,oBAAA,sBAEA,EAAA,oBAAA,sBACA,EAAA,MAAA,QAEA,EAAA,YAAA,qBAGF,MAAa,EAAiG,CAC5G,EAAY,oBACZ,EAAY,oBACb,CAEY,EAAmF,CAC9F,EAAY,cACZ,EAAY,YACb,CAGD,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,iBAAA,oBAEA,EAAA,kBAAA,qBAEA,EAAA,eAAA,kBAEA,EAAA,UAAA,oBAMU,EAAA,SAAA,EAAL,OACL,GAAA,KAAA,eACA,EAAA,QAAA,sBAGU,EAAA,SAAA,EAAL,OACL,GAAA,QAAA,WACA,EAAA,QAAA,yBAGU,EAAA,SAAA,EAAL,OACL,GAAA,QAAA,0CACA,EAAA,QAAA,iDAGU,EAAA,SAAA,EAAL,OACL,GAAA,QAAA,0CACA,EAAA,OAAA,iDAGF,MAAa,EAA8B,CACzC,QAAS,EAAkB,KAC3B,UAAW,iBACX,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,GACX,CACD,OAAQ,6CACT,CAEY,EAAiC,CAC5C,QAAS,EAAkB,QAC3B,UAAW,oBACX,OAAQ,wCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,OACN,OAAQ,OACR,SAAU,GACX,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAiB,QAC1B,UAAW,mBACX,OAAQ,sDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,GACX,CACF,CAEY,EAAgC,CAC3C,QAAS,EAAiB,QAC1B,UAAW,mBACX,OAAQ,sDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,GACX,CACF,CAEY,EAA+B,CAC1C,QAAS,EAAgB,QACzB,UAAW,kBACX,OAAQ,GACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,UACN,OAAQ,MACR,SAAU,EACX,CACF,CAEY,EAA+B,CAC1C,QAAS,EAAgB,QACzB,UAAW,kBACX,OAAQ,GACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,UACN,OAAQ,MACR,SAAU,EACX,CACF,CAEY,EAA8B,CACzC,QAAS,EAAe,QACxB,UAAW,SACX,OAAQ,oDACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,EACX,CACF,CAEY,EAA6B,CACxC,QAAS,EAAe,OACxB,UAAW,kBACX,OAAQ,gCACR,aAAc,CACZ,KAAM,EAAU,OAChB,KAAM,MACN,OAAQ,MACR,SAAU,EACX,CACF,CACY,EAA2B,CAAE,KAAM,EAAU,OAAQ,KAAM,YAAa,OAAQ,OAAQ,SAAU,GAAI,CACtG,EAA0B,CAAE,KAAM,EAAU,OAAQ,KAAM,QAAS,OAAQ,MAAO,SAAU,GAAI,CAE7G,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,UAAA,YACA,EAAA,QAAA,UACA,EAAA,SAAA,WACA,EAAA,OAAA,SACA,EAAA,QAAA,kBAGU,EAAA,SAAA,EAAL,OACL,GAAA,EAAA,kBAAA,OAAA,oBACA,EAAA,EAAA,kBAAA,OAAA,oBACA,EAAA,EAAA,mBAAA,GAAA,qBACA,EAAA,EAAA,sBAAA,UAAA,wBAMA,EAAA,EAAA,QAAA,iBAAA,UAMA,EAAA,EAAA,gBAAA,iBAAA,yBAOF,MAAa,EAAoE,CAC/E,KAAM,MACN,OAAQ,SACR,KAAM,OACP"}
@@ -0,0 +1,102 @@
1
+ import { BitcoinFeeRateTier } from "./types/bitcoin.cjs";
2
+ import { Chain } from "./types/chain.cjs";
3
+ import { FeeRateTier } from "./types/fee.cjs";
4
+ import { NativeAsset } from "./types/asset.cjs";
5
+ import { Address } from "viem";
6
+ import { Address as Address$1 } from "@solana/kit";
7
+
8
+ //#region src/constants.d.ts
9
+ declare enum Environment {
10
+ DEV = "dev",
11
+ PROD = "production",
12
+ TEST = "test"
13
+ }
14
+ declare enum TokenType {
15
+ NATIVE = "native",
16
+ ERC20 = "erc20",
17
+ SPL = "spl"
18
+ }
19
+ declare enum ServiceType {
20
+ /** Bridge between EVM chains within Avalanche (or EVM-compatible flows). */
21
+ AVALANCHE_EVM = "avalanche-evm",
22
+ /** Bitcoin → Avalanche. */
23
+ LOMBARD_BTC_TO_BTCB = "lombard-btc-to-btcb",
24
+ /** Avalanche → Bitcoin. */
25
+ LOMBARD_BTCB_TO_BTC = "lombard-btcb-to-btc",
26
+ MARKR = "markr",
27
+ /** Same-chain wrap/unwrap of native ETH ↔ WETH and AVAX ↔ WAVAX. */
28
+ WRAP_UNWRAP = "wrap-unwrap"
29
+ }
30
+ declare const BTC_SERVICE_TYPES: readonly [ServiceType.LOMBARD_BTCB_TO_BTC, ServiceType.LOMBARD_BTC_TO_BTCB];
31
+ declare const EVM_SERVICE_TYPES: readonly [ServiceType.AVALANCHE_EVM, ServiceType.WRAP_UNWRAP];
32
+ /** Reasons for user signatures during execution. */
33
+ declare enum TransferSignatureReason {
34
+ AddressOwnership = "address-ownership",
35
+ /** ERC-20 allowance approval for router/bridge. */
36
+ AllowanceApproval = "allowance-approval",
37
+ /** The primary token movement call (swap or bridge submit). */
38
+ TokensTransfer = "tokens-transfer",
39
+ /** Optional wrap/unwrap step for native token handling. */
40
+ WrapToken = "wrap-token"
41
+ }
42
+ declare const ERC_ZERO_ADDRESS: Address;
43
+ declare const SOL_MINT_ADDRESS: Address$1;
44
+ declare enum AvalancheChainIds {
45
+ FUJI = "eip155:43113",
46
+ MAINNET = "eip155:43114"
47
+ }
48
+ declare enum EthereumChainIds {
49
+ MAINNET = "eip155:1",
50
+ SEPOLIA = "eip155:11155111"
51
+ }
52
+ declare enum BitcoinChainIds {
53
+ MAINNET = "bip122:000000000019d6689c085ae165831e93",
54
+ TESTNET = "bip122:000000000933ea01ad0ee984209779ba"
55
+ }
56
+ declare enum SolanaChainIds {
57
+ MAINNET = "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
58
+ DEVNET = "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"
59
+ }
60
+ declare const AVALANCHE_FUJI_CHAIN: Chain;
61
+ declare const AVALANCHE_MAINNET_CHAIN: Chain;
62
+ declare const ETHEREUM_SEPOLIA_CHAIN: Chain;
63
+ declare const ETHEREUM_MAINNET_CHAIN: Chain;
64
+ declare const BITCOIN_TESTNET_CHAIN: Chain;
65
+ declare const BITCOIN_MAINNET_CHAIN: Chain;
66
+ declare const SOLANA_MAINNET_CHAIN: Chain;
67
+ declare const SOLANA_DEVNET_CHAIN: Chain;
68
+ declare const NATIVE_AVAX: NativeAsset;
69
+ declare const NATIVE_ETH: NativeAsset;
70
+ declare enum Blockchain {
71
+ AVALANCHE = "avalanche",
72
+ BITCOIN = "bitcoin",
73
+ ETHEREUM = "ethereum",
74
+ SOLANA = "solana",
75
+ UNKNOWN = "_unknown"
76
+ }
77
+ declare enum EvmChainId {
78
+ AVALANCHE_MAINNET = 43114,
79
+ AVALANCHE_TESTNET = 43113,
80
+ ETHEREUM_HOMESTEAD = 1,
81
+ ETHEREUM_TEST_SEPOLIA = 11155111,
82
+ /**
83
+ * This is not a real chain ID, as Bitcoin does not have a chain ID.
84
+ * It is used internally to represent Bitcoin in a way that avoids
85
+ * conflicts with real EVM chain IDs.
86
+ */
87
+ BITCOIN = 0xfffffffffffeb,
88
+ /**
89
+ * This is not a real chain ID, as Bitcoin does not have a chain ID.
90
+ * It is used internally to represent Bitcoin in a way that avoids
91
+ * conflicts with real EVM chain IDs.
92
+ */
93
+ BITCOIN_TESTNET = 0xfffffffffffea
94
+ }
95
+ /**
96
+ * Maps the unified {@link FeeRateTier} to the Bitcoin-specific
97
+ * {@link BitcoinFeeRateTier} (`low | medium | high`).
98
+ */
99
+ declare const FEE_RATE_TIER_TO_BITCOIN: Record<FeeRateTier, BitcoinFeeRateTier>;
100
+ //#endregion
101
+ export { AVALANCHE_FUJI_CHAIN, AVALANCHE_MAINNET_CHAIN, AvalancheChainIds, BITCOIN_MAINNET_CHAIN, BITCOIN_TESTNET_CHAIN, BTC_SERVICE_TYPES, BitcoinChainIds, Blockchain, ERC_ZERO_ADDRESS, ETHEREUM_MAINNET_CHAIN, ETHEREUM_SEPOLIA_CHAIN, EVM_SERVICE_TYPES, Environment, EthereumChainIds, EvmChainId, FEE_RATE_TIER_TO_BITCOIN, NATIVE_AVAX, NATIVE_ETH, SOLANA_DEVNET_CHAIN, SOLANA_MAINNET_CHAIN, SOL_MINT_ADDRESS, ServiceType, SolanaChainIds, TokenType, TransferSignatureReason };
102
+ //# sourceMappingURL=constants.d.cts.map