@hot-labs/kit 1.2.0-alpha.1 → 1.2.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 (368) hide show
  1. package/README.md +2 -9
  2. package/build/HotConnector.d.ts +105 -0
  3. package/build/HotConnector.js +303 -0
  4. package/build/HotConnector.js.map +1 -0
  5. package/build/OmniConnector.d.ts +90 -0
  6. package/build/OmniConnector.js +121 -0
  7. package/build/OmniConnector.js.map +1 -0
  8. package/build/OmniWallet.d.ts +35 -0
  9. package/build/OmniWallet.js +56 -0
  10. package/build/OmniWallet.js.map +1 -0
  11. package/build/activity.d.ts +18 -0
  12. package/build/activity.js +87 -0
  13. package/build/activity.js.map +1 -0
  14. package/build/core/Intents.d.ts +100 -0
  15. package/build/core/Intents.js +472 -0
  16. package/build/core/Intents.js.map +1 -0
  17. package/build/core/api.d.ts +60 -0
  18. package/build/core/api.js +108 -0
  19. package/build/core/api.js.map +1 -0
  20. package/build/core/bridge.d.ts +3 -0
  21. package/build/core/bridge.js +36 -0
  22. package/build/core/bridge.js.map +1 -0
  23. package/build/core/chains.d.ts +115 -0
  24. package/build/core/chains.js +381 -0
  25. package/build/core/chains.js.map +1 -0
  26. package/build/core/defaultTokens.d.ts +17 -0
  27. package/build/core/defaultTokens.js +1079 -0
  28. package/build/core/defaultTokens.js.map +1 -0
  29. package/build/core/events.d.ts +42 -0
  30. package/build/core/events.js +64 -0
  31. package/build/core/events.js.map +1 -0
  32. package/build/core/index.d.ts +10 -0
  33. package/build/core/index.js +11 -0
  34. package/build/core/index.js.map +1 -0
  35. package/build/core/recipient.d.ts +10 -0
  36. package/build/core/recipient.js +40 -0
  37. package/build/core/recipient.js.map +1 -0
  38. package/build/core/telemetry.d.ts +13 -0
  39. package/build/core/telemetry.js +27 -0
  40. package/build/core/telemetry.js.map +1 -0
  41. package/build/core/token.d.ts +37 -0
  42. package/build/core/token.js +106 -0
  43. package/build/core/token.js.map +1 -0
  44. package/build/core/tokens.d.ts +14 -0
  45. package/build/core/tokens.js +51 -0
  46. package/build/core/tokens.js.map +1 -0
  47. package/build/core/types.d.ts +60 -0
  48. package/build/core/types.js +2 -0
  49. package/build/core/types.js.map +1 -0
  50. package/build/core/utils.d.ts +25 -0
  51. package/build/core/utils.js +170 -0
  52. package/build/core/utils.js.map +1 -0
  53. package/build/cosmos/connector.d.ts +36 -0
  54. package/build/cosmos/connector.js +211 -0
  55. package/build/cosmos/connector.js.map +1 -0
  56. package/build/cosmos/helpers.d.ts +2 -0
  57. package/build/cosmos/helpers.js +29 -0
  58. package/build/cosmos/helpers.js.map +1 -0
  59. package/build/cosmos/index.d.ts +6 -0
  60. package/build/cosmos/index.js +5 -0
  61. package/build/cosmos/index.js.map +1 -0
  62. package/build/cosmos/wallet.d.ts +26 -0
  63. package/build/cosmos/wallet.js +51 -0
  64. package/build/cosmos/wallet.js.map +1 -0
  65. package/build/defaults.d.ts +1 -0
  66. package/build/defaults.js +7 -0
  67. package/build/defaults.js.map +1 -0
  68. package/build/evm/abi.d.ts +17 -0
  69. package/build/evm/abi.js +38 -0
  70. package/build/evm/abi.js.map +1 -0
  71. package/build/evm/connector.d.ts +29 -0
  72. package/build/evm/connector.js +118 -0
  73. package/build/evm/connector.js.map +1 -0
  74. package/build/evm/index.d.ts +6 -0
  75. package/build/evm/index.js +5 -0
  76. package/build/evm/index.js.map +1 -0
  77. package/build/evm/injected.d.ts +1 -0
  78. package/build/evm/injected.js +33 -0
  79. package/build/evm/injected.js.map +1 -0
  80. package/build/evm/wallet.d.ts +42 -0
  81. package/build/evm/wallet.js +130 -0
  82. package/build/evm/wallet.js.map +1 -0
  83. package/build/exchange.d.ts +68 -0
  84. package/build/exchange.js +384 -0
  85. package/build/exchange.js.map +1 -0
  86. package/build/hot-wallet/google.d.ts +25 -0
  87. package/build/hot-wallet/google.js +117 -0
  88. package/build/hot-wallet/google.js.map +1 -0
  89. package/build/hot-wallet/iframe.d.ts +36 -0
  90. package/build/hot-wallet/iframe.js +140 -0
  91. package/build/hot-wallet/iframe.js.map +1 -0
  92. package/build/hot-wallet/index.d.ts +5 -0
  93. package/build/hot-wallet/index.js +4 -0
  94. package/build/hot-wallet/index.js.map +1 -0
  95. package/build/hot-wallet/proxy.d.ts +8 -0
  96. package/build/hot-wallet/proxy.js +45 -0
  97. package/build/hot-wallet/proxy.js.map +1 -0
  98. package/build/index.d.ts +6 -0
  99. package/build/index.js +7 -0
  100. package/build/index.js.map +1 -0
  101. package/build/near/connector.d.ts +18 -0
  102. package/build/near/connector.js +58 -0
  103. package/build/near/connector.js.map +1 -0
  104. package/build/near/index.d.ts +7 -0
  105. package/build/near/index.js +5 -0
  106. package/build/near/index.js.map +1 -0
  107. package/build/near/rpc.d.ts +23 -0
  108. package/build/near/rpc.js +153 -0
  109. package/build/near/rpc.js.map +1 -0
  110. package/build/near/wallet.d.ts +55 -0
  111. package/build/near/wallet.js +201 -0
  112. package/build/near/wallet.js.map +1 -0
  113. package/build/solana/WalletStandard.d.ts +25 -0
  114. package/build/solana/WalletStandard.js +56 -0
  115. package/build/solana/WalletStandard.js.map +1 -0
  116. package/build/solana/connector.d.ts +30 -0
  117. package/build/solana/connector.js +139 -0
  118. package/build/solana/connector.js.map +1 -0
  119. package/build/solana/index.d.ts +6 -0
  120. package/build/solana/index.js +5 -0
  121. package/build/solana/index.js.map +1 -0
  122. package/build/solana/injected/account.d.ts +11 -0
  123. package/build/solana/injected/account.js +41 -0
  124. package/build/solana/injected/account.js.map +1 -0
  125. package/build/solana/injected/index.d.ts +1 -0
  126. package/build/solana/injected/index.js +82 -0
  127. package/build/solana/injected/index.js.map +1 -0
  128. package/build/solana/injected/register.d.ts +2 -0
  129. package/build/solana/injected/register.js +41 -0
  130. package/build/solana/injected/register.js.map +1 -0
  131. package/build/solana/injected/solana-wallet.d.ts +34 -0
  132. package/build/solana/injected/solana-wallet.js +223 -0
  133. package/build/solana/injected/solana-wallet.js.map +1 -0
  134. package/build/solana/injected/utils.d.ts +32 -0
  135. package/build/solana/injected/utils.js +36 -0
  136. package/build/solana/injected/utils.js.map +1 -0
  137. package/build/solana/wallet.d.ts +40 -0
  138. package/build/solana/wallet.js +181 -0
  139. package/build/solana/wallet.js.map +1 -0
  140. package/build/solana/walletStandartList.d.ts +102 -0
  141. package/build/solana/walletStandartList.js +150 -0
  142. package/build/solana/walletStandartList.js.map +1 -0
  143. package/build/stellar/connector.d.ts +29 -0
  144. package/build/stellar/connector.js +64 -0
  145. package/build/stellar/connector.js.map +1 -0
  146. package/build/stellar/freigher.d.ts +46 -0
  147. package/build/stellar/freigher.js +110 -0
  148. package/build/stellar/freigher.js.map +1 -0
  149. package/build/stellar/hotWallet.d.ts +33 -0
  150. package/build/stellar/hotWallet.js +28 -0
  151. package/build/stellar/hotWallet.js.map +1 -0
  152. package/build/stellar/index.d.ts +6 -0
  153. package/build/stellar/index.js +5 -0
  154. package/build/stellar/index.js.map +1 -0
  155. package/build/stellar/wallet.d.ts +67 -0
  156. package/build/stellar/wallet.js +212 -0
  157. package/build/stellar/wallet.js.map +1 -0
  158. package/build/storage.d.ts +10 -0
  159. package/build/storage.js +12 -0
  160. package/build/storage.js.map +1 -0
  161. package/build/ton/connector.d.ts +24 -0
  162. package/build/ton/connector.js +111 -0
  163. package/build/ton/connector.js.map +1 -0
  164. package/build/ton/index.d.ts +7 -0
  165. package/build/ton/index.js +5 -0
  166. package/build/ton/index.js.map +1 -0
  167. package/build/ton/injected.d.ts +1 -0
  168. package/build/ton/injected.js +49 -0
  169. package/build/ton/injected.js.map +1 -0
  170. package/build/ton/utils.d.ts +45 -0
  171. package/build/ton/utils.js +63 -0
  172. package/build/ton/utils.js.map +1 -0
  173. package/build/ton/wallet.d.ts +54 -0
  174. package/build/ton/wallet.js +138 -0
  175. package/build/ton/wallet.js.map +1 -0
  176. package/build/tron/connector.d.ts +51 -0
  177. package/build/tron/connector.js +65 -0
  178. package/build/tron/connector.js.map +1 -0
  179. package/build/tron/index.d.ts +6 -0
  180. package/build/tron/index.js +5 -0
  181. package/build/tron/index.js.map +1 -0
  182. package/build/tron/wallet.d.ts +52 -0
  183. package/build/tron/wallet.js +122 -0
  184. package/build/tron/wallet.js.map +1 -0
  185. package/build/ui/Popup.d.ts +12 -0
  186. package/build/ui/Popup.js +43 -0
  187. package/build/ui/Popup.js.map +1 -0
  188. package/build/ui/bridge/Bridge.d.ts +29 -0
  189. package/build/ui/bridge/Bridge.js +389 -0
  190. package/build/ui/bridge/Bridge.js.map +1 -0
  191. package/build/ui/bridge/SelectRecipient.d.ts +14 -0
  192. package/build/ui/bridge/SelectRecipient.js +68 -0
  193. package/build/ui/bridge/SelectRecipient.js.map +1 -0
  194. package/build/ui/bridge/SelectSender.d.ts +13 -0
  195. package/build/ui/bridge/SelectSender.js +23 -0
  196. package/build/ui/bridge/SelectSender.js.map +1 -0
  197. package/build/ui/bridge/SelectToken.d.ts +13 -0
  198. package/build/ui/bridge/SelectToken.js +93 -0
  199. package/build/ui/bridge/SelectToken.js.map +1 -0
  200. package/build/ui/bridge/TokenCard.d.ts +21 -0
  201. package/build/ui/bridge/TokenCard.js +65 -0
  202. package/build/ui/bridge/TokenCard.js.map +1 -0
  203. package/build/ui/connect/AuthPopup.d.ts +2 -0
  204. package/build/ui/connect/AuthPopup.js +48 -0
  205. package/build/ui/connect/AuthPopup.js.map +1 -0
  206. package/build/ui/connect/ConnectWallet.d.ts +14 -0
  207. package/build/ui/connect/ConnectWallet.js +22 -0
  208. package/build/ui/connect/ConnectWallet.js.map +1 -0
  209. package/build/ui/connect/LogoutPopup.d.ts +10 -0
  210. package/build/ui/connect/LogoutPopup.js +8 -0
  211. package/build/ui/connect/LogoutPopup.js.map +1 -0
  212. package/build/ui/connect/PrimaryWallet.d.ts +6 -0
  213. package/build/ui/connect/PrimaryWallet.js +18 -0
  214. package/build/ui/connect/PrimaryWallet.js.map +1 -0
  215. package/build/ui/connect/WCPopup.d.ts +13 -0
  216. package/build/ui/connect/WCPopup.js +81 -0
  217. package/build/ui/connect/WCPopup.js.map +1 -0
  218. package/build/ui/connect/WCRequest.d.ts +9 -0
  219. package/build/ui/connect/WCRequest.js +13 -0
  220. package/build/ui/connect/WCRequest.js.map +1 -0
  221. package/build/ui/connect/WalletPicker.d.ts +11 -0
  222. package/build/ui/connect/WalletPicker.js +48 -0
  223. package/build/ui/connect/WalletPicker.js.map +1 -0
  224. package/build/ui/icons/arrow-right.d.ts +3 -0
  225. package/build/ui/icons/arrow-right.js +5 -0
  226. package/build/ui/icons/arrow-right.js.map +1 -0
  227. package/build/ui/icons/close.d.ts +1 -0
  228. package/build/ui/icons/close.js +5 -0
  229. package/build/ui/icons/close.js.map +1 -0
  230. package/build/ui/icons/exchange.d.ts +5 -0
  231. package/build/ui/icons/exchange.js +6 -0
  232. package/build/ui/icons/exchange.js.map +1 -0
  233. package/build/ui/icons/logout.d.ts +1 -0
  234. package/build/ui/icons/logout.js +3 -0
  235. package/build/ui/icons/logout.js.map +1 -0
  236. package/build/ui/icons/pending.d.ts +1 -0
  237. package/build/ui/icons/pending.js +5 -0
  238. package/build/ui/icons/pending.js.map +1 -0
  239. package/build/ui/icons/plus.d.ts +2 -0
  240. package/build/ui/icons/plus.js +6 -0
  241. package/build/ui/icons/plus.js.map +1 -0
  242. package/build/ui/icons/qr.d.ts +1 -0
  243. package/build/ui/icons/qr.js +5 -0
  244. package/build/ui/icons/qr.js.map +1 -0
  245. package/build/ui/icons/refresh.d.ts +2 -0
  246. package/build/ui/icons/refresh.js +6 -0
  247. package/build/ui/icons/refresh.js.map +1 -0
  248. package/build/ui/icons/search.d.ts +1 -0
  249. package/build/ui/icons/search.js +5 -0
  250. package/build/ui/icons/search.js.map +1 -0
  251. package/build/ui/icons/switch.d.ts +1 -0
  252. package/build/ui/icons/switch.js +5 -0
  253. package/build/ui/icons/switch.js.map +1 -0
  254. package/build/ui/icons/wallet.d.ts +1 -0
  255. package/build/ui/icons/wallet.js +5 -0
  256. package/build/ui/icons/wallet.js.map +1 -0
  257. package/build/ui/profile/DepositQR.d.ts +9 -0
  258. package/build/ui/profile/DepositQR.js +56 -0
  259. package/build/ui/profile/DepositQR.js.map +1 -0
  260. package/build/ui/profile/Payment.d.ts +23 -0
  261. package/build/ui/profile/Payment.js +150 -0
  262. package/build/ui/profile/Payment.js.map +1 -0
  263. package/build/ui/profile/Profile.d.ts +7 -0
  264. package/build/ui/profile/Profile.js +135 -0
  265. package/build/ui/profile/Profile.js.map +1 -0
  266. package/build/ui/router.d.ts +51 -0
  267. package/build/ui/router.js +68 -0
  268. package/build/ui/router.js.map +1 -0
  269. package/build/ui/styles.d.ts +13 -0
  270. package/build/ui/styles.js +281 -0
  271. package/build/ui/styles.js.map +1 -0
  272. package/build/ui/uikit/Stepper.d.ts +13 -0
  273. package/build/ui/uikit/Stepper.js +22 -0
  274. package/build/ui/uikit/Stepper.js.map +1 -0
  275. package/build/ui/uikit/Toast.d.ts +4 -0
  276. package/build/ui/uikit/Toast.js +33 -0
  277. package/build/ui/uikit/Toast.js.map +1 -0
  278. package/build/ui/uikit/button.d.ts +2 -0
  279. package/build/ui/uikit/button.js +52 -0
  280. package/build/ui/uikit/button.js.map +1 -0
  281. package/build/ui/uikit/image.d.ts +6 -0
  282. package/build/ui/uikit/image.js +38 -0
  283. package/build/ui/uikit/image.js.map +1 -0
  284. package/build/ui/uikit/loader.d.ts +2 -0
  285. package/build/ui/uikit/loader.js +50 -0
  286. package/build/ui/uikit/loader.js.map +1 -0
  287. package/build/ui/uikit/tabs.d.ts +12 -0
  288. package/build/ui/uikit/tabs.js +35 -0
  289. package/build/ui/uikit/tabs.js.map +1 -0
  290. package/build/ui/uikit/text.d.ts +6 -0
  291. package/build/ui/uikit/text.js +59 -0
  292. package/build/ui/uikit/text.js.map +1 -0
  293. package/build/ui/utils.d.ts +1 -0
  294. package/build/ui/utils.js +20 -0
  295. package/build/ui/utils.js.map +1 -0
  296. package/package.json +8 -4
  297. package/src/HotConnector.ts +24 -31
  298. package/src/OmniConnector.ts +10 -9
  299. package/src/OmniWallet.ts +24 -25
  300. package/src/core/Intents.ts +222 -151
  301. package/src/core/api.ts +56 -10
  302. package/src/core/bridge.ts +3 -2
  303. package/src/core/index.ts +1 -1
  304. package/src/core/telemetry.ts +28 -0
  305. package/src/core/token.ts +4 -0
  306. package/src/core/tokens.ts +0 -9
  307. package/src/core/types.ts +21 -0
  308. package/src/core/utils.ts +17 -1
  309. package/src/cosmos/connector.ts +22 -26
  310. package/src/cosmos/wallet.ts +3 -8
  311. package/src/evm/connector.ts +5 -0
  312. package/src/evm/wallet.ts +9 -6
  313. package/src/exchange.ts +24 -30
  314. package/src/hot-wallet/google.ts +12 -5
  315. package/src/hot-wallet/proxy.ts +2 -2
  316. package/src/index.ts +3 -1
  317. package/src/near/connector.ts +2 -2
  318. package/src/{core/nearRpc.ts → near/rpc.ts} +9 -23
  319. package/src/near/wallet.ts +39 -31
  320. package/src/solana/{protocol.ts → WalletStandard.ts} +2 -4
  321. package/src/solana/connector.ts +9 -8
  322. package/src/solana/injected/solana-wallet.ts +6 -6
  323. package/src/solana/wallet.ts +11 -20
  324. package/src/stellar/connector.ts +1 -6
  325. package/src/stellar/wallet.ts +17 -17
  326. package/src/ton/connector.ts +1 -5
  327. package/src/ton/wallet.ts +3 -3
  328. package/src/tron/connector.ts +89 -0
  329. package/src/tron/index.ts +7 -0
  330. package/src/tron/wallet.ts +146 -0
  331. package/src/ui/Popup.tsx +12 -4
  332. package/src/ui/{payment → bridge}/Bridge.tsx +266 -212
  333. package/src/ui/{payment → bridge}/SelectRecipient.tsx +5 -4
  334. package/src/ui/{payment → bridge}/SelectSender.tsx +5 -5
  335. package/src/ui/{payment → bridge}/SelectToken.tsx +6 -4
  336. package/src/ui/bridge/TokenCard.tsx +99 -0
  337. package/src/ui/connect/AuthPopup.tsx +1 -1
  338. package/src/ui/connect/ConnectWallet.tsx +16 -10
  339. package/src/ui/connect/PrimaryWallet.tsx +65 -0
  340. package/src/ui/connect/WCRequest.tsx +1 -1
  341. package/src/ui/connect/WalletPicker.tsx +1 -1
  342. package/src/ui/icons/arrow-right.tsx +3 -4
  343. package/src/ui/icons/close.tsx +1 -1
  344. package/src/ui/icons/exchange.tsx +4 -11
  345. package/src/ui/icons/logout.tsx +4 -13
  346. package/src/ui/icons/pending.tsx +2 -4
  347. package/src/ui/icons/plus.tsx +12 -0
  348. package/src/ui/icons/qr.tsx +1 -2
  349. package/src/ui/icons/refresh.tsx +20 -0
  350. package/src/ui/icons/search.tsx +4 -4
  351. package/src/ui/icons/switch.tsx +4 -4
  352. package/src/ui/icons/wallet.tsx +2 -4
  353. package/src/ui/profile/Payment.tsx +309 -0
  354. package/src/ui/{payment → profile}/Profile.tsx +110 -70
  355. package/src/ui/router.tsx +57 -17
  356. package/src/ui/styles.ts +4 -11
  357. package/src/ui/uikit/Stepper.tsx +50 -0
  358. package/src/ui/uikit/Toast.tsx +45 -0
  359. package/src/ui/uikit/button.tsx +53 -0
  360. package/src/ui/uikit/image.tsx +45 -0
  361. package/src/ui/uikit/loader.tsx +52 -0
  362. package/src/ui/uikit/tabs.tsx +56 -0
  363. package/src/ui/uikit/text.tsx +64 -0
  364. package/src/ui/utils.ts +14 -0
  365. package/src/ui/payment/Payment.tsx +0 -79
  366. package/src/ui/payment/TokenCard.tsx +0 -98
  367. /package/src/solana/{wallets.ts → walletStandartList.ts} +0 -0
  368. /package/src/ui/{payment → profile}/DepositQR.tsx +0 -0
@@ -0,0 +1,472 @@
1
+ import { sha256 } from "@noble/hashes/sha2.js";
2
+ import { rpc } from "../near/rpc";
3
+ import { OmniToken } from "./chains";
4
+ import { formatter } from "./utils";
5
+ import { tokens } from "./tokens";
6
+ import { api } from "./api";
7
+ import { openConnector, openConnectPrimaryWallet, openPayment, openToast } from "../ui/router";
8
+ export const TGAS = 1000000000000n;
9
+ export class Intents {
10
+ wibe3;
11
+ constructor(wibe3) {
12
+ this.wibe3 = wibe3;
13
+ }
14
+ static get builder() {
15
+ return new Intents();
16
+ }
17
+ signedHashes = [];
18
+ commitments = [];
19
+ need = new Map();
20
+ signer;
21
+ unsignedCommitment;
22
+ addIntent(intent) {
23
+ if (!this.unsignedCommitment)
24
+ this.unsignedCommitment = { intents: [] };
25
+ this.unsignedCommitment.intents.push(intent);
26
+ return this;
27
+ }
28
+ addNeed(token, amount) {
29
+ if (!this.need.has(token))
30
+ this.need.set(token, 0n);
31
+ this.need.set(token, this.need.get(token) + amount);
32
+ return this;
33
+ }
34
+ authCall(args) {
35
+ this.addNeed(OmniToken.NEAR, args.attachNear);
36
+ this.addIntent({
37
+ min_gas: (BigInt(args.tgas) * TGAS).toString(),
38
+ attached_deposit: args.attachNear.toString(),
39
+ contract_id: args.contractId,
40
+ intent: "auth_call",
41
+ msg: args.msg,
42
+ });
43
+ return this;
44
+ }
45
+ /**
46
+ * Use this method to pay for a merchant's item created in pay.hot-labs.org
47
+ */
48
+ merchantPayment({ merchantId, token, itemId, email, amount, memo }) {
49
+ return this.transfer({
50
+ msg: JSON.stringify({ merchant_id: merchantId, item_id: itemId, memo: memo }),
51
+ recipient: "pay.fi.tg",
52
+ amount,
53
+ token,
54
+ }).depositAndExecute({
55
+ title: `Pay ${this.wibe3?.omni(token).readable(amount)} ${this.wibe3?.omni(token).symbol}`,
56
+ serverSideProcessing: true,
57
+ payload: { email },
58
+ });
59
+ }
60
+ transfer(args) {
61
+ const omniToken = tokens.get(args.token);
62
+ const amount = (typeof args.amount === "number" ? omniToken.int(args.amount) : args.amount).toString();
63
+ const intent = {
64
+ min_gas: args.tgas ? (BigInt(args.tgas) * TGAS).toString() : undefined,
65
+ tokens: { [omniToken.omniAddress]: amount },
66
+ receiver_id: args.recipient.toLowerCase(),
67
+ intent: "transfer",
68
+ memo: args.memo,
69
+ msg: args.msg,
70
+ };
71
+ this.addNeed(args.token, BigInt(amount));
72
+ this.addIntent(intent);
73
+ return this;
74
+ }
75
+ batchTransfer(args) {
76
+ const tokensList = {};
77
+ for (const [token, amount] of Object.entries(args.tokens)) {
78
+ const omniToken = tokens.get(token);
79
+ const amountStr = typeof amount === "number" ? omniToken.int(amount).toString() : amount.toString();
80
+ tokensList[omniToken.omniAddress] = amountStr;
81
+ this.addNeed(token, BigInt(amountStr));
82
+ }
83
+ const intent = {
84
+ intent: "transfer",
85
+ receiver_id: args.recipient.toLowerCase(),
86
+ min_gas: args.tgas ? (BigInt(args.tgas) * TGAS).toString() : undefined,
87
+ tokens: tokensList,
88
+ memo: args.memo,
89
+ msg: args.msg,
90
+ };
91
+ this.addIntent(intent);
92
+ return this;
93
+ }
94
+ tokenDiff(args) {
95
+ const parse = (token, amount) => {
96
+ if (typeof amount === "number")
97
+ return [token.toString(), tokens.get(token).int(amount).toString()];
98
+ return [token.toString(), amount.toString()];
99
+ };
100
+ const intent = {
101
+ diff: Object.fromEntries(Object.entries(args).map(([token, amount]) => parse(token, amount))),
102
+ intent: "token_diff",
103
+ };
104
+ for (const [token, amountStr] of Object.entries(intent.diff)) {
105
+ const amount = BigInt(amountStr);
106
+ if (amount < 0n) {
107
+ const tokenKey = token;
108
+ this.addNeed(tokenKey, -amount);
109
+ }
110
+ }
111
+ this.addIntent(intent);
112
+ return this;
113
+ }
114
+ addRawIntent(rawIntent) {
115
+ if (!rawIntent.intent)
116
+ throw new Error("Intent must have 'intent' field");
117
+ const intentType = rawIntent.intent;
118
+ if (intentType === "token_diff") {
119
+ const tokenDiffArgs = {};
120
+ for (const [token, amountStr] of Object.entries(rawIntent.diff)) {
121
+ tokenDiffArgs[token] = BigInt(amountStr);
122
+ }
123
+ return this.tokenDiff(tokenDiffArgs);
124
+ }
125
+ if (intentType === "transfer") {
126
+ const tokens = {};
127
+ for (const [token, amount] of Object.entries(rawIntent.tokens)) {
128
+ tokens[token] = BigInt(amount);
129
+ }
130
+ return this.batchTransfer({
131
+ tgas: rawIntent.min_gas ? Number(BigInt(rawIntent.min_gas) / TGAS) : undefined,
132
+ recipient: rawIntent.receiver_id,
133
+ memo: rawIntent.memo,
134
+ msg: rawIntent.msg,
135
+ tokens,
136
+ });
137
+ }
138
+ if (intentType === "mt_withdraw") {
139
+ for (let i = 0; i < rawIntent.amounts.length; i++) {
140
+ const token = `nep245:${rawIntent.token}:${rawIntent.token_ids[i]}`;
141
+ this.addNeed(token, BigInt(rawIntent.amounts[i]));
142
+ }
143
+ this.addIntent({
144
+ intent: "mt_withdraw",
145
+ amounts: rawIntent.amounts,
146
+ receiver_id: rawIntent.receiver_id,
147
+ token_ids: rawIntent.token_ids,
148
+ token: rawIntent.token,
149
+ memo: rawIntent.memo,
150
+ msg: rawIntent.msg,
151
+ min_gas: rawIntent.min_gas,
152
+ });
153
+ return this;
154
+ }
155
+ if (intentType === "ft_withdraw") {
156
+ return this.withdraw({
157
+ token: `nep141:${rawIntent.token}`,
158
+ amount: BigInt(rawIntent.amount),
159
+ receiver: rawIntent.receiver_id,
160
+ memo: rawIntent.memo,
161
+ msg: rawIntent.msg,
162
+ });
163
+ }
164
+ if (intentType === "auth_call") {
165
+ return this.authCall({
166
+ attachNear: BigInt(rawIntent.attached_deposit),
167
+ tgas: Number(BigInt(rawIntent.min_gas) / TGAS),
168
+ contractId: rawIntent.contract_id,
169
+ msg: rawIntent.msg,
170
+ });
171
+ }
172
+ if (intentType === "add_public_key") {
173
+ return this.addPublicKey(rawIntent.public_key);
174
+ }
175
+ if (intentType === "remove_public_key") {
176
+ return this.removePublicKey(rawIntent.public_key);
177
+ }
178
+ if (intentType === "nft_withdraw") {
179
+ return this.withdraw({
180
+ token: rawIntent.token_id,
181
+ receiver: rawIntent.receiver_id,
182
+ memo: rawIntent.memo,
183
+ msg: rawIntent.msg,
184
+ tgas: rawIntent.min_gas ? Number(BigInt(rawIntent.min_gas) / TGAS) : undefined,
185
+ amount: 1n,
186
+ });
187
+ }
188
+ throw new Error(`Unsupported intent type: ${intentType}`);
189
+ }
190
+ addPublicKey(publicKey) {
191
+ this.addIntent({ intent: "add_public_key", public_key: publicKey });
192
+ return this;
193
+ }
194
+ removePublicKey(publicKey) {
195
+ this.addIntent({ intent: "remove_public_key", public_key: publicKey });
196
+ return this;
197
+ }
198
+ withdraw(args) {
199
+ const omniToken = tokens.get(args.token);
200
+ const amount = (typeof args.amount === "number" ? omniToken.int(args.amount) : args.amount).toString();
201
+ const [standart, ...tokenParts] = args.token.split(":");
202
+ this.addNeed(args.token, BigInt(amount));
203
+ if (standart === "nep245") {
204
+ const mtContract = tokenParts[0];
205
+ const tokenId = tokenParts.slice(1).join(":");
206
+ this.addIntent({
207
+ intent: "mt_withdraw",
208
+ amounts: [amount],
209
+ receiver_id: args.receiver,
210
+ token_ids: [tokenId],
211
+ token: mtContract,
212
+ memo: args.memo,
213
+ msg: args.msg,
214
+ min_gas: args.tgas ? (BigInt(args.tgas) * TGAS).toString() : undefined,
215
+ });
216
+ return this;
217
+ }
218
+ if (standart === "nep141") {
219
+ this.addIntent({
220
+ intent: "ft_withdraw",
221
+ receiver_id: args.receiver,
222
+ token: tokenParts.join(":"),
223
+ amount: amount,
224
+ memo: args.memo,
225
+ msg: args.msg,
226
+ });
227
+ return this;
228
+ }
229
+ if (standart === "nep171") {
230
+ this.addIntent({
231
+ intent: "nft_withdraw",
232
+ receiver_id: args.receiver,
233
+ token_id: tokenParts.join(":"),
234
+ min_gas: args.tgas ? (BigInt(args.tgas) * TGAS).toString() : undefined,
235
+ memo: args.memo,
236
+ msg: args.msg,
237
+ });
238
+ return this;
239
+ }
240
+ throw new Error(`Unsupported token: ${args.token}`);
241
+ }
242
+ attachHashes(hashes) {
243
+ this.signedHashes.push(...hashes);
244
+ return this;
245
+ }
246
+ attachWallet(wallet) {
247
+ this.signer = wallet;
248
+ return this;
249
+ }
250
+ attachDeadline(deadline) {
251
+ if (!this.unsignedCommitment)
252
+ this.unsignedCommitment = { intents: [] };
253
+ this.unsignedCommitment.deadline = deadline;
254
+ return this;
255
+ }
256
+ attachNonce(nonce) {
257
+ if (!this.unsignedCommitment)
258
+ this.unsignedCommitment = { intents: [] };
259
+ this.unsignedCommitment.nonce = nonce;
260
+ return this;
261
+ }
262
+ attachTimeout(seconds) {
263
+ if (!this.unsignedCommitment)
264
+ this.unsignedCommitment = { intents: [] };
265
+ this.unsignedCommitment.deadline = new Date(Date.now() + seconds * 1000);
266
+ return this;
267
+ }
268
+ attachSeed(seed) {
269
+ if (!this.unsignedCommitment)
270
+ this.unsignedCommitment = { intents: [] };
271
+ this.unsignedCommitment.nonce = new Uint8Array(sha256(new TextEncoder().encode(seed))).slice(0, 32);
272
+ return this;
273
+ }
274
+ attachCommitment(commitment) {
275
+ this.commitments.push(commitment);
276
+ return this;
277
+ }
278
+ take(token, amount) {
279
+ const intAmount = typeof amount === "number" ? tokens.get(token).int(amount) : amount;
280
+ // this.addNeed(token, -intAmount); Do we need to add the need here?
281
+ const tokenDiff = this.unsignedCommitment?.intents.find((intent) => intent.intent === "token_diff");
282
+ if (tokenDiff)
283
+ tokenDiff.diff[token.toString()] = intAmount.toString();
284
+ else
285
+ this.addIntent({ intent: "token_diff", diff: { [token.toString()]: intAmount.toString() } });
286
+ return this;
287
+ }
288
+ give(token, amount) {
289
+ const intAmount = typeof amount === "number" ? tokens.get(token).int(amount) : amount;
290
+ this.addNeed(token, intAmount);
291
+ const tokenDiff = this.unsignedCommitment?.intents.find((intent) => intent.intent === "token_diff");
292
+ if (tokenDiff)
293
+ tokenDiff.diff[token.toString()] = (-intAmount).toString();
294
+ else
295
+ this.addIntent({ intent: "token_diff", diff: { [token.toString()]: (-intAmount).toString() } });
296
+ return this;
297
+ }
298
+ async signSequence() {
299
+ const signer = this.signer;
300
+ if (!signer)
301
+ throw new Error("No signer attached");
302
+ if (!signer.omniAddress)
303
+ throw new Error("No omni address");
304
+ const commitments = [];
305
+ for (const intent of this.unsignedCommitment?.intents || []) {
306
+ commitments.push(await signer.signIntents([intent], {
307
+ deadline: this.unsignedCommitment?.deadline ? +this.unsignedCommitment.deadline : undefined,
308
+ nonce: this.unsignedCommitment?.nonce,
309
+ }));
310
+ }
311
+ return commitments;
312
+ }
313
+ async sign() {
314
+ const signer = this.signer;
315
+ if (!signer)
316
+ throw new Error("No signer attached");
317
+ if (!signer.omniAddress)
318
+ throw new Error("No omni address");
319
+ const commitment = await signer.signIntents(this.unsignedCommitment?.intents || [], {
320
+ deadline: this.unsignedCommitment?.deadline ? +this.unsignedCommitment.deadline : undefined,
321
+ nonce: this.unsignedCommitment?.nonce,
322
+ });
323
+ this.unsignedCommitment = undefined;
324
+ this.commitments.push(commitment);
325
+ return this;
326
+ }
327
+ async simulate() {
328
+ if (this.commitments.length === 0)
329
+ throw new Error("No commitments attached");
330
+ return await Intents.simulateIntents(this.commitments);
331
+ }
332
+ async setupSigner() {
333
+ if (!this.wibe3)
334
+ throw new Error("No wibe3 attached");
335
+ if (this.signer)
336
+ return this.signer;
337
+ if (this.wibe3.priorityWallet) {
338
+ this.signer = this.wibe3.priorityWallet;
339
+ return this.signer;
340
+ }
341
+ if (this.wibe3.wallets.length > 0)
342
+ await openConnectPrimaryWallet(this.wibe3);
343
+ else
344
+ await openConnector(this.wibe3);
345
+ if (this.wibe3.priorityWallet == undefined)
346
+ throw new Error("No signer attached");
347
+ this.signer = this.wibe3.priorityWallet;
348
+ return this.signer;
349
+ }
350
+ async openSignFlow({ title, allowedTokens, onConfirm }) {
351
+ if (!this.wibe3)
352
+ throw "Attach wibe3";
353
+ if (!this.signer)
354
+ throw "Attach signer";
355
+ // TODO: Handle multiple payables
356
+ const payableToken = tokens.get(Array.from(this.need.keys())[0]);
357
+ const payableAmount = this.need.get(payableToken.omniAddress) || 0n;
358
+ const balance = await this.wibe3.fetchToken(payableToken, this.signer);
359
+ const prepaidAmount = formatter.bigIntMin(payableAmount, balance);
360
+ return await openPayment(this.wibe3, {
361
+ onConfirm,
362
+ needAmount: payableAmount - prepaidAmount,
363
+ allowedTokens,
364
+ prepaidAmount,
365
+ payableToken,
366
+ intents: this,
367
+ title,
368
+ });
369
+ }
370
+ async depositAndExecute({ title = "Payment", message, allowedTokens, serverSideProcessing, payload } = {}) {
371
+ await this.setupSigner();
372
+ if (this.need.size === 0)
373
+ return this.execute();
374
+ await this.openSignFlow({
375
+ title,
376
+ allowedTokens,
377
+ onConfirm: async ({ depositQoute, processing }) => {
378
+ if (!serverSideProcessing)
379
+ return;
380
+ let depositAddress;
381
+ if (depositQoute?.qoute === "deposit")
382
+ await processing?.();
383
+ else if (depositQoute?.qoute === "withdraw")
384
+ await processing?.();
385
+ else
386
+ depositAddress = depositQoute?.qoute?.depositAddress;
387
+ await api.yieldIntentCall({
388
+ depositAddress: depositAddress,
389
+ commitment: this.commitments[0],
390
+ payload: payload || {},
391
+ });
392
+ },
393
+ });
394
+ if (serverSideProcessing)
395
+ return;
396
+ const close = openToast(message || "Executing payment");
397
+ await this.execute().finally(() => close());
398
+ }
399
+ async execute() {
400
+ if (this.unsignedCommitment != null)
401
+ await this.sign();
402
+ const task = Intents.publish(this.commitments, this.signedHashes);
403
+ this.commitments = [];
404
+ this.signedHashes = [];
405
+ const hash = await task;
406
+ await rpc.waitTransactionResult(hash, "intents.near");
407
+ return hash;
408
+ }
409
+ static async publish(signed, hashes = []) {
410
+ const result = await api.publishIntents(signed, hashes);
411
+ if (result.status === "FAILED")
412
+ throw result.reason;
413
+ const intentResult = result.intent_hashes[0];
414
+ const getStatus = async () => {
415
+ const statusResult = await api.getIntentsStatus(intentResult);
416
+ return statusResult;
417
+ };
418
+ const fetchResult = async () => {
419
+ await new Promise((resolve) => setTimeout(resolve, 1000));
420
+ const result = await getStatus().catch(() => null);
421
+ if (result == null)
422
+ return await fetchResult();
423
+ if (result.status === "SETTLED")
424
+ return result.data.hash;
425
+ if (result.status === "FAILED")
426
+ throw result.reason || "Failed to publish intents";
427
+ return await fetchResult();
428
+ };
429
+ const hash = await fetchResult();
430
+ return hash;
431
+ }
432
+ static async hasPublicKey(accountId, publicKey) {
433
+ return await rpc.viewMethod({
434
+ args: { account_id: accountId, public_key: publicKey },
435
+ methodName: "has_public_key",
436
+ contractId: "intents.near",
437
+ });
438
+ }
439
+ static async simulateIntents(signed) {
440
+ return await rpc.viewMethod({
441
+ args: { signed: signed },
442
+ methodName: "simulate_intents",
443
+ contractId: "intents.near",
444
+ });
445
+ }
446
+ static async getIntentsBalances(assets, accountId) {
447
+ const balances = await rpc.viewMethod({
448
+ args: { token_ids: assets, account_id: accountId },
449
+ methodName: "mt_batch_balance_of",
450
+ contractId: "intents.near",
451
+ });
452
+ return Object.fromEntries(assets.map((asset, index) => [asset, BigInt(balances[index] || 0n)]));
453
+ }
454
+ static async getIntentsAssets(accountId) {
455
+ const assets = [];
456
+ const limit = 250;
457
+ let fromIndex = 0n;
458
+ for (;;) {
459
+ const balances = await rpc.viewMethod({
460
+ args: { account_id: accountId, from_index: fromIndex.toString(), limit },
461
+ methodName: "mt_tokens_for_owner",
462
+ contractId: "intents.near",
463
+ });
464
+ assets.push(...balances.map((b) => b.token_id));
465
+ if (balances.length < limit)
466
+ break;
467
+ fromIndex += BigInt(limit);
468
+ }
469
+ return assets;
470
+ }
471
+ }
472
+ //# sourceMappingURL=Intents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Intents.js","sourceRoot":"","sources":["../../src/core/Intents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { Commitment } from "./types";
2
+ export declare class NetworkError extends Error {
3
+ readonly status: number;
4
+ readonly url: string;
5
+ readonly message: string;
6
+ name: string;
7
+ constructor(status: number, url: string, message: string);
8
+ }
9
+ export declare class TimeoutNetworkError extends NetworkError {
10
+ name: string;
11
+ constructor(url: string);
12
+ }
13
+ export interface PaymentStatus {
14
+ payment_id: string;
15
+ timestamp: number;
16
+ amount: string;
17
+ token_id: string;
18
+ sender_id: string;
19
+ near_trx: string;
20
+ status: string;
21
+ }
22
+ export interface TokenType {
23
+ icon: string;
24
+ symbol: string;
25
+ asset: string;
26
+ type: number;
27
+ links: Record<string, string>;
28
+ decimal: number;
29
+ contract_id: string;
30
+ chain_id: number;
31
+ amount: string;
32
+ amount_float: number;
33
+ usd_rate: number;
34
+ }
35
+ export declare class Api {
36
+ baseUrl: string;
37
+ apiKey: string;
38
+ request(url: string, options: RequestInit): Promise<any>;
39
+ getRpcUrl(chain: number): string;
40
+ getOneClickApiUrl(): string;
41
+ auth(commitment: Commitment, seed: string): Promise<string>;
42
+ validateAuth(jwt: string): Promise<any>;
43
+ getPortfolio(chain: number, address: string): Promise<TokenType[]>;
44
+ yieldIntentCall(args: {
45
+ commitment: Commitment;
46
+ depositAddress?: string;
47
+ payload?: Record<string, any>;
48
+ }): Promise<any>;
49
+ paymentStatus(memo: string): Promise<PaymentStatus>;
50
+ getPayments(merchantId: string): Promise<PaymentStatus[]>;
51
+ publishIntents(signed: Record<string, any>[], hashes: string[]): Promise<any>;
52
+ publishTelemetry(events: {
53
+ event: string;
54
+ value_str?: string;
55
+ value_float?: number;
56
+ ts: number;
57
+ }[], accountId: string): Promise<void>;
58
+ getIntentsStatus(intentHash: string): Promise<any>;
59
+ }
60
+ export declare const api: Api;
@@ -0,0 +1,108 @@
1
+ export class NetworkError extends Error {
2
+ status;
3
+ url;
4
+ message;
5
+ name = "NetworkError";
6
+ constructor(status, url, message) {
7
+ super(`${status} ${url}: ${message}`);
8
+ this.status = status;
9
+ this.url = url;
10
+ this.message = message;
11
+ }
12
+ }
13
+ export class TimeoutNetworkError extends NetworkError {
14
+ name = "TimeoutNetworkError";
15
+ constructor(url) {
16
+ super(0, url, "Timeout error");
17
+ }
18
+ }
19
+ export class Api {
20
+ baseUrl = "https://dev.herewallet.app";
21
+ apiKey = "";
22
+ async request(url, options) {
23
+ options.headers = {
24
+ "Content-Type": "application/json",
25
+ "Api-Key": this.apiKey,
26
+ ...options.headers,
27
+ };
28
+ const response = await fetch(`${this.baseUrl}${url}`, options);
29
+ if (!response.ok)
30
+ throw new NetworkError(response.status, url, await response.text());
31
+ return await response.json();
32
+ }
33
+ getRpcUrl(chain) {
34
+ return `${this.baseUrl}/api/v1/evm/rpc/${chain}`;
35
+ }
36
+ getOneClickApiUrl() {
37
+ return `${this.baseUrl}/api/v1/wibe3/1click`;
38
+ }
39
+ async auth(commitment, seed) {
40
+ return await this.request(`/api/v1/wibe3/auth`, {
41
+ body: JSON.stringify({ commitment, seed }),
42
+ method: "POST",
43
+ });
44
+ }
45
+ async validateAuth(jwt) {
46
+ return await this.request(`/api/v1/wibe3/validate-auth`, {
47
+ body: JSON.stringify({ jwt }),
48
+ method: "POST",
49
+ });
50
+ }
51
+ async getPortfolio(chain, address) {
52
+ const result = await this.request(`/api/v1/wibe3/portfolio`, {
53
+ body: JSON.stringify({ accounts: { [chain]: address } }),
54
+ method: "POST",
55
+ });
56
+ return result.balances?.[chain] || [];
57
+ }
58
+ async yieldIntentCall(args) {
59
+ return await this.request(`/api/v1/wibe3/yield_intent_call`, {
60
+ method: "POST",
61
+ body: JSON.stringify({
62
+ commitment: args.commitment,
63
+ deposit_address: args.depositAddress,
64
+ ...args.payload,
65
+ }),
66
+ });
67
+ }
68
+ async paymentStatus(memo) {
69
+ const result = await this.request(`/partners/processed_payments?memo=${memo}`, { method: "GET" });
70
+ return result.payments[0];
71
+ }
72
+ async getPayments(merchantId) {
73
+ const result = await this.request(`/partners/processed_payments?merchant_id=${merchantId}`, { method: "GET" });
74
+ return result.payments;
75
+ }
76
+ async publishIntents(signed, hashes) {
77
+ const result = await this.request(`/api/v1/wibe3/solver-bus`, {
78
+ method: "POST",
79
+ body: JSON.stringify({
80
+ params: [{ signed_datas: signed, quote_hashes: hashes }],
81
+ method: "publish_intents",
82
+ id: "dontcare",
83
+ jsonrpc: "2.0",
84
+ }),
85
+ });
86
+ return result.result;
87
+ }
88
+ async publishTelemetry(events, accountId) {
89
+ await this.request(`/api/v1/wibe3/telemetry`, {
90
+ body: JSON.stringify({ events, account_id: accountId || "" }),
91
+ method: "POST",
92
+ });
93
+ }
94
+ async getIntentsStatus(intentHash) {
95
+ const result = await this.request(`/api/v1/wibe3/solver-bus`, {
96
+ method: "POST",
97
+ body: JSON.stringify({
98
+ params: [{ intent_hash: intentHash }],
99
+ method: "get_status",
100
+ id: "dontcare",
101
+ jsonrpc: "2.0",
102
+ }),
103
+ });
104
+ return result.result;
105
+ }
106
+ }
107
+ export const api = new Api();
108
+ //# sourceMappingURL=api.js.map