@hot-labs/kit 1.1.3 → 1.2.0-alpha.1

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 (327) hide show
  1. package/README.md +9 -2
  2. package/package.json +4 -8
  3. package/src/HotConnector.ts +31 -24
  4. package/src/OmniConnector.ts +9 -10
  5. package/src/OmniWallet.ts +25 -24
  6. package/src/core/Intents.ts +151 -224
  7. package/src/core/api.ts +4 -44
  8. package/src/core/bridge.ts +2 -3
  9. package/src/core/index.ts +1 -1
  10. package/src/{near/rpc.ts → core/nearRpc.ts} +12 -7
  11. package/src/core/types.ts +0 -21
  12. package/src/core/utils.ts +1 -17
  13. package/src/cosmos/connector.ts +26 -22
  14. package/src/cosmos/wallet.ts +8 -3
  15. package/src/evm/connector.ts +0 -5
  16. package/src/evm/wallet.ts +6 -9
  17. package/src/exchange.ts +30 -24
  18. package/src/hot-wallet/google.ts +5 -12
  19. package/src/hot-wallet/proxy.ts +2 -2
  20. package/src/index.ts +0 -2
  21. package/src/near/connector.ts +2 -2
  22. package/src/near/wallet.ts +9 -4
  23. package/src/solana/connector.ts +8 -9
  24. package/src/solana/injected/solana-wallet.ts +6 -6
  25. package/src/solana/{WalletStandard.ts → protocol.ts} +4 -2
  26. package/src/solana/wallet.ts +20 -11
  27. package/src/stellar/connector.ts +6 -1
  28. package/src/stellar/wallet.ts +17 -17
  29. package/src/ton/connector.ts +5 -1
  30. package/src/ton/wallet.ts +3 -3
  31. package/src/ui/Popup.tsx +4 -12
  32. package/src/ui/connect/AuthPopup.tsx +1 -2
  33. package/src/ui/connect/ConnectWallet.tsx +6 -12
  34. package/src/ui/icons/arrow-right.tsx +2 -2
  35. package/src/ui/icons/close.tsx +1 -1
  36. package/src/ui/icons/exchange.tsx +4 -4
  37. package/src/ui/icons/logout.tsx +6 -6
  38. package/src/ui/icons/pending.tsx +4 -2
  39. package/src/ui/icons/qr.tsx +2 -1
  40. package/src/ui/icons/search.tsx +4 -4
  41. package/src/ui/icons/switch.tsx +4 -4
  42. package/src/ui/icons/wallet.tsx +4 -2
  43. package/src/ui/payment/Bridge.tsx +6 -25
  44. package/src/ui/payment/Payment.tsx +46 -244
  45. package/src/ui/payment/Profile.tsx +8 -10
  46. package/src/ui/payment/SelectToken.tsx +1 -1
  47. package/src/ui/payment/TokenCard.tsx +18 -22
  48. package/src/ui/router.tsx +16 -56
  49. package/src/ui/styles.ts +0 -2
  50. package/build/HotConnector.d.ts +0 -105
  51. package/build/HotConnector.js +0 -303
  52. package/build/HotConnector.js.map +0 -1
  53. package/build/OmniConnector.d.ts +0 -90
  54. package/build/OmniConnector.js +0 -121
  55. package/build/OmniConnector.js.map +0 -1
  56. package/build/OmniWallet.d.ts +0 -35
  57. package/build/OmniWallet.js +0 -56
  58. package/build/OmniWallet.js.map +0 -1
  59. package/build/activity.d.ts +0 -18
  60. package/build/activity.js +0 -87
  61. package/build/activity.js.map +0 -1
  62. package/build/core/Intents.d.ts +0 -100
  63. package/build/core/Intents.js +0 -474
  64. package/build/core/Intents.js.map +0 -1
  65. package/build/core/api.d.ts +0 -54
  66. package/build/core/api.js +0 -99
  67. package/build/core/api.js.map +0 -1
  68. package/build/core/bridge.d.ts +0 -3
  69. package/build/core/bridge.js +0 -36
  70. package/build/core/bridge.js.map +0 -1
  71. package/build/core/chains.d.ts +0 -115
  72. package/build/core/chains.js +0 -381
  73. package/build/core/chains.js.map +0 -1
  74. package/build/core/defaultTokens.d.ts +0 -17
  75. package/build/core/defaultTokens.js +0 -1079
  76. package/build/core/defaultTokens.js.map +0 -1
  77. package/build/core/events.d.ts +0 -42
  78. package/build/core/events.js +0 -64
  79. package/build/core/events.js.map +0 -1
  80. package/build/core/index.d.ts +0 -10
  81. package/build/core/index.js +0 -11
  82. package/build/core/index.js.map +0 -1
  83. package/build/core/recipient.d.ts +0 -10
  84. package/build/core/recipient.js +0 -40
  85. package/build/core/recipient.js.map +0 -1
  86. package/build/core/telemetry.d.ts +0 -13
  87. package/build/core/telemetry.js +0 -27
  88. package/build/core/telemetry.js.map +0 -1
  89. package/build/core/token.d.ts +0 -36
  90. package/build/core/token.js +0 -103
  91. package/build/core/token.js.map +0 -1
  92. package/build/core/tokens.d.ts +0 -14
  93. package/build/core/tokens.js +0 -59
  94. package/build/core/tokens.js.map +0 -1
  95. package/build/core/types.d.ts +0 -60
  96. package/build/core/types.js +0 -2
  97. package/build/core/types.js.map +0 -1
  98. package/build/core/utils.d.ts +0 -25
  99. package/build/core/utils.js +0 -170
  100. package/build/core/utils.js.map +0 -1
  101. package/build/cosmos/connector.d.ts +0 -36
  102. package/build/cosmos/connector.js +0 -211
  103. package/build/cosmos/connector.js.map +0 -1
  104. package/build/cosmos/helpers.d.ts +0 -2
  105. package/build/cosmos/helpers.js +0 -29
  106. package/build/cosmos/helpers.js.map +0 -1
  107. package/build/cosmos/index.d.ts +0 -6
  108. package/build/cosmos/index.js +0 -5
  109. package/build/cosmos/index.js.map +0 -1
  110. package/build/cosmos/wallet.d.ts +0 -26
  111. package/build/cosmos/wallet.js +0 -51
  112. package/build/cosmos/wallet.js.map +0 -1
  113. package/build/defaults.d.ts +0 -1
  114. package/build/defaults.js +0 -7
  115. package/build/defaults.js.map +0 -1
  116. package/build/evm/abi.d.ts +0 -17
  117. package/build/evm/abi.js +0 -38
  118. package/build/evm/abi.js.map +0 -1
  119. package/build/evm/connector.d.ts +0 -29
  120. package/build/evm/connector.js +0 -118
  121. package/build/evm/connector.js.map +0 -1
  122. package/build/evm/index.d.ts +0 -6
  123. package/build/evm/index.js +0 -5
  124. package/build/evm/index.js.map +0 -1
  125. package/build/evm/injected.d.ts +0 -1
  126. package/build/evm/injected.js +0 -33
  127. package/build/evm/injected.js.map +0 -1
  128. package/build/evm/wallet.d.ts +0 -42
  129. package/build/evm/wallet.js +0 -130
  130. package/build/evm/wallet.js.map +0 -1
  131. package/build/exchange.d.ts +0 -68
  132. package/build/exchange.js +0 -384
  133. package/build/exchange.js.map +0 -1
  134. package/build/hot-wallet/google.d.ts +0 -25
  135. package/build/hot-wallet/google.js +0 -117
  136. package/build/hot-wallet/google.js.map +0 -1
  137. package/build/hot-wallet/iframe.d.ts +0 -36
  138. package/build/hot-wallet/iframe.js +0 -140
  139. package/build/hot-wallet/iframe.js.map +0 -1
  140. package/build/hot-wallet/index.d.ts +0 -5
  141. package/build/hot-wallet/index.js +0 -4
  142. package/build/hot-wallet/index.js.map +0 -1
  143. package/build/hot-wallet/proxy.d.ts +0 -8
  144. package/build/hot-wallet/proxy.js +0 -45
  145. package/build/hot-wallet/proxy.js.map +0 -1
  146. package/build/index.d.ts +0 -6
  147. package/build/index.js +0 -7
  148. package/build/index.js.map +0 -1
  149. package/build/near/connector.d.ts +0 -18
  150. package/build/near/connector.js +0 -58
  151. package/build/near/connector.js.map +0 -1
  152. package/build/near/index.d.ts +0 -7
  153. package/build/near/index.js +0 -5
  154. package/build/near/index.js.map +0 -1
  155. package/build/near/rpc.d.ts +0 -23
  156. package/build/near/rpc.js +0 -162
  157. package/build/near/rpc.js.map +0 -1
  158. package/build/near/wallet.d.ts +0 -53
  159. package/build/near/wallet.js +0 -190
  160. package/build/near/wallet.js.map +0 -1
  161. package/build/solana/WalletStandard.d.ts +0 -25
  162. package/build/solana/WalletStandard.js +0 -56
  163. package/build/solana/WalletStandard.js.map +0 -1
  164. package/build/solana/connector.d.ts +0 -30
  165. package/build/solana/connector.js +0 -139
  166. package/build/solana/connector.js.map +0 -1
  167. package/build/solana/index.d.ts +0 -6
  168. package/build/solana/index.js +0 -5
  169. package/build/solana/index.js.map +0 -1
  170. package/build/solana/injected/account.d.ts +0 -11
  171. package/build/solana/injected/account.js +0 -41
  172. package/build/solana/injected/account.js.map +0 -1
  173. package/build/solana/injected/index.d.ts +0 -1
  174. package/build/solana/injected/index.js +0 -82
  175. package/build/solana/injected/index.js.map +0 -1
  176. package/build/solana/injected/register.d.ts +0 -2
  177. package/build/solana/injected/register.js +0 -41
  178. package/build/solana/injected/register.js.map +0 -1
  179. package/build/solana/injected/solana-wallet.d.ts +0 -34
  180. package/build/solana/injected/solana-wallet.js +0 -223
  181. package/build/solana/injected/solana-wallet.js.map +0 -1
  182. package/build/solana/injected/utils.d.ts +0 -32
  183. package/build/solana/injected/utils.js +0 -36
  184. package/build/solana/injected/utils.js.map +0 -1
  185. package/build/solana/wallet.d.ts +0 -40
  186. package/build/solana/wallet.js +0 -181
  187. package/build/solana/wallet.js.map +0 -1
  188. package/build/solana/walletStandartList.d.ts +0 -102
  189. package/build/solana/walletStandartList.js +0 -150
  190. package/build/solana/walletStandartList.js.map +0 -1
  191. package/build/stellar/connector.d.ts +0 -29
  192. package/build/stellar/connector.js +0 -64
  193. package/build/stellar/connector.js.map +0 -1
  194. package/build/stellar/freigher.d.ts +0 -46
  195. package/build/stellar/freigher.js +0 -110
  196. package/build/stellar/freigher.js.map +0 -1
  197. package/build/stellar/hotWallet.d.ts +0 -33
  198. package/build/stellar/hotWallet.js +0 -28
  199. package/build/stellar/hotWallet.js.map +0 -1
  200. package/build/stellar/index.d.ts +0 -6
  201. package/build/stellar/index.js +0 -5
  202. package/build/stellar/index.js.map +0 -1
  203. package/build/stellar/wallet.d.ts +0 -67
  204. package/build/stellar/wallet.js +0 -212
  205. package/build/stellar/wallet.js.map +0 -1
  206. package/build/storage.d.ts +0 -10
  207. package/build/storage.js +0 -12
  208. package/build/storage.js.map +0 -1
  209. package/build/ton/connector.d.ts +0 -24
  210. package/build/ton/connector.js +0 -111
  211. package/build/ton/connector.js.map +0 -1
  212. package/build/ton/index.d.ts +0 -7
  213. package/build/ton/index.js +0 -5
  214. package/build/ton/index.js.map +0 -1
  215. package/build/ton/injected.d.ts +0 -1
  216. package/build/ton/injected.js +0 -49
  217. package/build/ton/injected.js.map +0 -1
  218. package/build/ton/utils.d.ts +0 -45
  219. package/build/ton/utils.js +0 -63
  220. package/build/ton/utils.js.map +0 -1
  221. package/build/ton/wallet.d.ts +0 -54
  222. package/build/ton/wallet.js +0 -138
  223. package/build/ton/wallet.js.map +0 -1
  224. package/build/tron/connector.d.ts +0 -51
  225. package/build/tron/connector.js +0 -65
  226. package/build/tron/connector.js.map +0 -1
  227. package/build/tron/index.d.ts +0 -6
  228. package/build/tron/index.js +0 -5
  229. package/build/tron/index.js.map +0 -1
  230. package/build/tron/wallet.d.ts +0 -52
  231. package/build/tron/wallet.js +0 -122
  232. package/build/tron/wallet.js.map +0 -1
  233. package/build/ui/Popup.d.ts +0 -12
  234. package/build/ui/Popup.js +0 -43
  235. package/build/ui/Popup.js.map +0 -1
  236. package/build/ui/Toast.d.ts +0 -4
  237. package/build/ui/Toast.js +0 -33
  238. package/build/ui/Toast.js.map +0 -1
  239. package/build/ui/connect/AuthPopup.d.ts +0 -2
  240. package/build/ui/connect/AuthPopup.js +0 -48
  241. package/build/ui/connect/AuthPopup.js.map +0 -1
  242. package/build/ui/connect/ConnectWallet.d.ts +0 -14
  243. package/build/ui/connect/ConnectWallet.js +0 -22
  244. package/build/ui/connect/ConnectWallet.js.map +0 -1
  245. package/build/ui/connect/LogoutPopup.d.ts +0 -10
  246. package/build/ui/connect/LogoutPopup.js +0 -8
  247. package/build/ui/connect/LogoutPopup.js.map +0 -1
  248. package/build/ui/connect/PrimaryWallet.d.ts +0 -6
  249. package/build/ui/connect/PrimaryWallet.js +0 -18
  250. package/build/ui/connect/PrimaryWallet.js.map +0 -1
  251. package/build/ui/connect/WCPopup.d.ts +0 -13
  252. package/build/ui/connect/WCPopup.js +0 -81
  253. package/build/ui/connect/WCPopup.js.map +0 -1
  254. package/build/ui/connect/WCRequest.d.ts +0 -9
  255. package/build/ui/connect/WCRequest.js +0 -13
  256. package/build/ui/connect/WCRequest.js.map +0 -1
  257. package/build/ui/connect/WalletPicker.d.ts +0 -11
  258. package/build/ui/connect/WalletPicker.js +0 -48
  259. package/build/ui/connect/WalletPicker.js.map +0 -1
  260. package/build/ui/icons/arrow-right.d.ts +0 -1
  261. package/build/ui/icons/arrow-right.js +0 -5
  262. package/build/ui/icons/arrow-right.js.map +0 -1
  263. package/build/ui/icons/close.d.ts +0 -1
  264. package/build/ui/icons/close.js +0 -5
  265. package/build/ui/icons/close.js.map +0 -1
  266. package/build/ui/icons/exchange.d.ts +0 -6
  267. package/build/ui/icons/exchange.js +0 -6
  268. package/build/ui/icons/exchange.js.map +0 -1
  269. package/build/ui/icons/logout.d.ts +0 -1
  270. package/build/ui/icons/logout.js +0 -3
  271. package/build/ui/icons/logout.js.map +0 -1
  272. package/build/ui/icons/pending.d.ts +0 -1
  273. package/build/ui/icons/pending.js +0 -5
  274. package/build/ui/icons/pending.js.map +0 -1
  275. package/build/ui/icons/qr.d.ts +0 -1
  276. package/build/ui/icons/qr.js +0 -5
  277. package/build/ui/icons/qr.js.map +0 -1
  278. package/build/ui/icons/search.d.ts +0 -1
  279. package/build/ui/icons/search.js +0 -5
  280. package/build/ui/icons/search.js.map +0 -1
  281. package/build/ui/icons/switch.d.ts +0 -1
  282. package/build/ui/icons/switch.js +0 -5
  283. package/build/ui/icons/switch.js.map +0 -1
  284. package/build/ui/icons/wallet.d.ts +0 -1
  285. package/build/ui/icons/wallet.js +0 -5
  286. package/build/ui/icons/wallet.js.map +0 -1
  287. package/build/ui/payment/Bridge.d.ts +0 -29
  288. package/build/ui/payment/Bridge.js +0 -373
  289. package/build/ui/payment/Bridge.js.map +0 -1
  290. package/build/ui/payment/DepositQR.d.ts +0 -9
  291. package/build/ui/payment/DepositQR.js +0 -56
  292. package/build/ui/payment/DepositQR.js.map +0 -1
  293. package/build/ui/payment/Payment.d.ts +0 -23
  294. package/build/ui/payment/Payment.js +0 -139
  295. package/build/ui/payment/Payment.js.map +0 -1
  296. package/build/ui/payment/Profile.d.ts +0 -8
  297. package/build/ui/payment/Profile.js +0 -110
  298. package/build/ui/payment/Profile.js.map +0 -1
  299. package/build/ui/payment/SelectRecipient.d.ts +0 -14
  300. package/build/ui/payment/SelectRecipient.js +0 -68
  301. package/build/ui/payment/SelectRecipient.js.map +0 -1
  302. package/build/ui/payment/SelectSender.d.ts +0 -13
  303. package/build/ui/payment/SelectSender.js +0 -23
  304. package/build/ui/payment/SelectSender.js.map +0 -1
  305. package/build/ui/payment/SelectToken.d.ts +0 -13
  306. package/build/ui/payment/SelectToken.js +0 -92
  307. package/build/ui/payment/SelectToken.js.map +0 -1
  308. package/build/ui/payment/Stepper.d.ts +0 -13
  309. package/build/ui/payment/Stepper.js +0 -22
  310. package/build/ui/payment/Stepper.js.map +0 -1
  311. package/build/ui/payment/TokenCard.d.ts +0 -25
  312. package/build/ui/payment/TokenCard.js +0 -63
  313. package/build/ui/payment/TokenCard.js.map +0 -1
  314. package/build/ui/router.d.ts +0 -51
  315. package/build/ui/router.js +0 -68
  316. package/build/ui/router.js.map +0 -1
  317. package/build/ui/styles.d.ts +0 -13
  318. package/build/ui/styles.js +0 -290
  319. package/build/ui/styles.js.map +0 -1
  320. package/src/core/telemetry.ts +0 -28
  321. package/src/tron/connector.ts +0 -89
  322. package/src/tron/index.ts +0 -7
  323. package/src/tron/wallet.ts +0 -146
  324. package/src/ui/Toast.tsx +0 -45
  325. package/src/ui/connect/PrimaryWallet.tsx +0 -65
  326. package/src/ui/payment/Stepper.tsx +0 -50
  327. /package/src/solana/{walletStandartList.ts → wallets.ts} +0 -0
@@ -1,41 +0,0 @@
1
- export function registerWallet(wallet) {
2
- const callback = ({ register }) => register(wallet);
3
- try {
4
- window.dispatchEvent(new RegisterWalletEvent(callback));
5
- }
6
- catch (error) {
7
- console.error(error);
8
- }
9
- try {
10
- window.addEventListener("wallet-standard:app-ready", ({ detail: api }) => callback(api));
11
- }
12
- catch (error) {
13
- console.error(error);
14
- }
15
- }
16
- class RegisterWalletEvent extends Event {
17
- #detail;
18
- get detail() {
19
- return this.#detail;
20
- }
21
- get type() {
22
- return "wallet-standard:register-wallet";
23
- }
24
- constructor(callback) {
25
- super("wallet-standard:register-wallet", { bubbles: false, cancelable: false, composed: false });
26
- this.#detail = callback;
27
- }
28
- /** @deprecated */
29
- preventDefault() {
30
- throw new Error("preventDefault cannot be called");
31
- }
32
- /** @deprecated */
33
- stopImmediatePropagation() {
34
- throw new Error("stopImmediatePropagation cannot be called");
35
- }
36
- /** @deprecated */
37
- stopPropagation() {
38
- throw new Error("stopPropagation cannot be called");
39
- }
40
- }
41
- //# sourceMappingURL=register.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/solana/injected/register.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,MAAM,QAAQ,GAAsC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvF,IAAI,CAAC;QACF,MAA6B,CAAC,aAAa,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,CAAC;QACF,MAA6B,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACnH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,mBAAoB,SAAQ,KAAK;IAC5B,OAAO,CAAoC;IAEpD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,iCAA0C,CAAC;IACpD,CAAC;IAED,YAAY,QAA2C;QACrD,KAAK,CAAC,iCAAiC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,cAAc;QACZ,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,kBAAkB;IAClB,wBAAwB;QACtB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,kBAAkB;IAClB,eAAe;QACb,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -1,34 +0,0 @@
1
- import { type SolanaSignAndSendTransactionFeature, type SolanaSignAndSendTransactionMethod, type SolanaSignInFeature, type SolanaSignInMethod, type SolanaSignMessageFeature, type SolanaSignMessageMethod, type SolanaSignTransactionFeature, type SolanaSignTransactionMethod } from "@solana/wallet-standard-features";
2
- import type { Wallet } from "@wallet-standard/base";
3
- import { type StandardConnectFeature, type StandardConnectMethod, type StandardDisconnectFeature, type StandardDisconnectMethod, type StandardEventsFeature, type StandardEventsListeners, type StandardEventsNames, type StandardEventsOnMethod } from "@wallet-standard/features";
4
- import { GhostWalletAccount } from "./account";
5
- import { GhostFeature } from "./utils";
6
- export declare class GhostWallet implements Wallet {
7
- _account: GhostWalletAccount | null;
8
- readonly _listeners: {
9
- [E in StandardEventsNames]?: StandardEventsListeners[E][];
10
- };
11
- readonly _version: "1.0.0";
12
- readonly _name: "HOT Wallet";
13
- readonly _icon = "https://storage.herewallet.app/logo.png";
14
- readonly _ghost: any;
15
- get version(): "1.0.0";
16
- get name(): "HOT Wallet";
17
- get icon(): any;
18
- get chains(): ("solana:mainnet" | "solana:mainnet-beta")[];
19
- get features(): StandardConnectFeature & StandardDisconnectFeature & StandardEventsFeature & SolanaSignAndSendTransactionFeature & SolanaSignTransactionFeature & SolanaSignMessageFeature & SolanaSignInFeature & GhostFeature;
20
- get accounts(): GhostWalletAccount[];
21
- constructor(ghost: any);
22
- _on: StandardEventsOnMethod;
23
- _emit<E extends StandardEventsNames>(event: E, ...args: Parameters<StandardEventsListeners[E]>): void;
24
- _off<E extends StandardEventsNames>(event: E, listener: StandardEventsListeners[E]): void;
25
- _connected: () => void;
26
- _disconnected: () => void;
27
- _reconnected: () => void;
28
- _connect: StandardConnectMethod;
29
- _disconnect: StandardDisconnectMethod;
30
- _signAndSendTransaction: SolanaSignAndSendTransactionMethod;
31
- _signTransaction: SolanaSignTransactionMethod;
32
- _signMessage: SolanaSignMessageMethod;
33
- _signIn: SolanaSignInMethod;
34
- }
@@ -1,223 +0,0 @@
1
- import { SolanaSignAndSendTransaction, SolanaSignIn, SolanaSignMessage, SolanaSignTransaction, } from "@solana/wallet-standard-features";
2
- import { VersionedTransaction } from "@solana/web3.js";
3
- import { StandardConnect, StandardDisconnect, StandardEvents, } from "@wallet-standard/features";
4
- import { base58 } from "@scure/base";
5
- import { GhostWalletAccount } from "./account";
6
- import { SOLANA_CHAINS, GhostNamespace, isVersionedTransaction, isSolanaChain, bytesEqual } from "./utils";
7
- export class GhostWallet {
8
- _account = null;
9
- _listeners = {};
10
- _version = "1.0.0";
11
- _name = "HOT Wallet";
12
- _icon = "https://storage.herewallet.app/logo.png";
13
- _ghost;
14
- get version() {
15
- return this._version;
16
- }
17
- get name() {
18
- return this._name;
19
- }
20
- get icon() {
21
- return this._icon;
22
- }
23
- get chains() {
24
- return SOLANA_CHAINS.slice();
25
- }
26
- get features() {
27
- return {
28
- [StandardConnect]: {
29
- version: "1.0.0",
30
- connect: this._connect,
31
- },
32
- [StandardDisconnect]: {
33
- version: "1.0.0",
34
- disconnect: this._disconnect,
35
- },
36
- [StandardEvents]: {
37
- version: "1.0.0",
38
- on: this._on,
39
- },
40
- [SolanaSignAndSendTransaction]: {
41
- version: "1.0.0",
42
- supportedTransactionVersions: ["legacy", 0],
43
- signAndSendTransaction: this._signAndSendTransaction,
44
- },
45
- [SolanaSignTransaction]: {
46
- version: "1.0.0",
47
- supportedTransactionVersions: ["legacy", 0],
48
- signTransaction: this._signTransaction,
49
- },
50
- [SolanaSignMessage]: {
51
- version: "1.0.0",
52
- signMessage: this._signMessage,
53
- },
54
- [SolanaSignIn]: {
55
- version: "1.0.0",
56
- signIn: this._signIn,
57
- },
58
- [GhostNamespace]: {
59
- ghost: this._ghost,
60
- },
61
- };
62
- }
63
- get accounts() {
64
- return this._account ? [this._account] : [];
65
- }
66
- constructor(ghost) {
67
- this._ghost = ghost;
68
- ghost.on("connect", this._connected, this);
69
- ghost.on("disconnect", this._disconnected, this);
70
- ghost.on("accountChanged", this._reconnected, this);
71
- this._connected();
72
- }
73
- _on = (event, listener) => {
74
- this._listeners[event]?.push(listener) || (this._listeners[event] = [listener]);
75
- return () => this._off(event, listener);
76
- };
77
- _emit(event, ...args) {
78
- // eslint-disable-next-line prefer-spread
79
- this._listeners[event]?.forEach((listener) => listener.apply(null, args));
80
- }
81
- _off(event, listener) {
82
- this._listeners[event] = this._listeners[event]?.filter((existingListener) => listener !== existingListener);
83
- }
84
- _connected = () => {
85
- const address = this._ghost.publicKey?.toBase58();
86
- if (address) {
87
- const publicKey = this._ghost.publicKey.toBytes();
88
- const account = this._account;
89
- if (!account || account.address !== address || !bytesEqual(account.publicKey, publicKey)) {
90
- this._account = new GhostWalletAccount({ address, publicKey });
91
- this._emit("change", { accounts: this.accounts });
92
- }
93
- }
94
- };
95
- _disconnected = () => {
96
- if (this._account) {
97
- this._account = null;
98
- this._emit("change", { accounts: this.accounts });
99
- }
100
- };
101
- _reconnected = () => {
102
- if (this._ghost.publicKey) {
103
- this._connected();
104
- }
105
- else {
106
- this._disconnected();
107
- }
108
- };
109
- _connect = async ({ silent } = {}) => {
110
- if (!this._account)
111
- await this._ghost.connect(silent ? { onlyIfTrusted: true } : undefined);
112
- this._connected();
113
- return { accounts: this.accounts };
114
- };
115
- _disconnect = async () => {
116
- await this._ghost.disconnect();
117
- };
118
- _signAndSendTransaction = async (...inputs) => {
119
- if (!this._account)
120
- throw new Error("not connected");
121
- const outputs = [];
122
- if (inputs.length === 1) {
123
- const { transaction, account, options } = inputs[0];
124
- const { minContextSlot, preflightCommitment, skipPreflight, maxRetries } = options || {};
125
- if (account !== this._account)
126
- throw new Error("invalid account");
127
- const { signature } = await this._ghost.signAndSendTransaction(VersionedTransaction.deserialize(transaction), {
128
- preflightCommitment,
129
- minContextSlot,
130
- maxRetries,
131
- skipPreflight,
132
- });
133
- outputs.push({ signature: base58.decode(signature) });
134
- }
135
- else if (inputs.length > 1) {
136
- for (const input of inputs) {
137
- outputs.push(...(await this._signAndSendTransaction(input)));
138
- }
139
- }
140
- return outputs;
141
- };
142
- _signTransaction = async (...inputs) => {
143
- if (!this._account)
144
- throw new Error("not connected");
145
- const outputs = [];
146
- if (inputs.length === 1) {
147
- const { transaction, account, chain } = inputs[0];
148
- if (account !== this._account)
149
- throw new Error("invalid account");
150
- if (chain && !isSolanaChain(chain))
151
- throw new Error("invalid chain");
152
- const signedTransaction = await this._ghost.signTransaction(VersionedTransaction.deserialize(transaction));
153
- const serializedTransaction = isVersionedTransaction(signedTransaction)
154
- ? signedTransaction.serialize()
155
- : signedTransaction.serialize({
156
- requireAllSignatures: false,
157
- verifySignatures: false,
158
- });
159
- outputs.push({ signedTransaction: serializedTransaction });
160
- }
161
- else if (inputs.length > 1) {
162
- let chain = undefined;
163
- for (const input of inputs) {
164
- if (input.account !== this._account)
165
- throw new Error("invalid account");
166
- if (input.chain) {
167
- if (!isSolanaChain(input.chain))
168
- throw new Error("invalid chain");
169
- if (chain) {
170
- if (input.chain !== chain)
171
- throw new Error("conflicting chain");
172
- }
173
- else {
174
- chain = input.chain;
175
- }
176
- }
177
- }
178
- const transactions = inputs.map(({ transaction }) => VersionedTransaction.deserialize(transaction));
179
- const signedTransactions = await this._ghost.signAllTransactions(transactions);
180
- outputs.push(...signedTransactions.map((signedTransaction) => {
181
- const serializedTransaction = isVersionedTransaction(signedTransaction)
182
- ? signedTransaction.serialize()
183
- : signedTransaction.serialize({
184
- requireAllSignatures: false,
185
- verifySignatures: false,
186
- });
187
- return { signedTransaction: serializedTransaction };
188
- }));
189
- }
190
- return outputs;
191
- };
192
- _signMessage = async (...inputs) => {
193
- if (!this._account)
194
- throw new Error("not connected");
195
- const outputs = [];
196
- if (inputs.length === 1) {
197
- const { message, account } = inputs[0];
198
- if (account !== this._account)
199
- throw new Error("invalid account");
200
- const { signature } = await this._ghost.signMessage(message);
201
- outputs.push({ signedMessage: message, signature });
202
- }
203
- else if (inputs.length > 1) {
204
- for (const input of inputs) {
205
- outputs.push(...(await this._signMessage(input)));
206
- }
207
- }
208
- return outputs;
209
- };
210
- _signIn = async (...inputs) => {
211
- const outputs = [];
212
- if (inputs.length > 1) {
213
- for (const input of inputs) {
214
- outputs.push(await this._ghost.signIn(input));
215
- }
216
- }
217
- else {
218
- return [await this._ghost.signIn(inputs[0])];
219
- }
220
- return outputs;
221
- };
222
- }
223
- //# sourceMappingURL=solana-wallet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"solana-wallet.js","sourceRoot":"","sources":["../../../src/solana/injected/solana-wallet.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import { Transaction, VersionedTransaction } from "@solana/web3.js";
2
- import type { IdentifierString } from "@wallet-standard/base";
3
- interface Indexed<T> {
4
- length: number;
5
- [index: number]: T;
6
- }
7
- export declare function bytesEqual(a: Uint8Array, b: Uint8Array): boolean;
8
- export declare function arraysEqual<T>(a: Indexed<T>, b: Indexed<T>): boolean;
9
- export declare const GhostNamespace = "hot:";
10
- export type GhostFeature = {
11
- [GhostNamespace]: {
12
- ghost: any;
13
- };
14
- };
15
- /** Solana Mainnet (beta) cluster, e.g. https://api.mainnet-beta.solana.com */
16
- export declare const SOLANA_MAINNET_CHAIN = "solana:mainnet";
17
- /** Solana Devnet cluster, e.g. https://api.devnet.solana.com */
18
- export declare const SOLANA_DEVNET_CHAIN = "solana:devnet";
19
- /** Solana Testnet cluster, e.g. https://api.testnet.solana.com */
20
- export declare const SOLANA_TESTNET_CHAIN = "solana:testnet";
21
- /** Solana Localnet cluster, e.g. http://localhost:8899 */
22
- export declare const SOLANA_LOCALNET_CHAIN = "solana:localnet";
23
- /** Array of all Solana clusters */
24
- export declare const SOLANA_CHAINS: readonly ["solana:mainnet", "solana:mainnet-beta"];
25
- /** Type of all Solana clusters */
26
- export type SolanaChain = (typeof SOLANA_CHAINS)[number];
27
- /**
28
- * Check if a chain corresponds with one of the Solana clusters.
29
- */
30
- export declare function isSolanaChain(chain: IdentifierString): chain is SolanaChain;
31
- export declare function isVersionedTransaction(transaction: Transaction | VersionedTransaction): transaction is VersionedTransaction;
32
- export {};
@@ -1,36 +0,0 @@
1
- export function bytesEqual(a, b) {
2
- return arraysEqual(a, b);
3
- }
4
- export function arraysEqual(a, b) {
5
- if (a === b)
6
- return true;
7
- const length = a.length;
8
- if (length !== b.length)
9
- return false;
10
- for (let i = 0; i < length; i++) {
11
- if (a[i] !== b[i])
12
- return false;
13
- }
14
- return true;
15
- }
16
- export const GhostNamespace = "hot:";
17
- /** Solana Mainnet (beta) cluster, e.g. https://api.mainnet-beta.solana.com */
18
- export const SOLANA_MAINNET_CHAIN = "solana:mainnet";
19
- /** Solana Devnet cluster, e.g. https://api.devnet.solana.com */
20
- export const SOLANA_DEVNET_CHAIN = "solana:devnet";
21
- /** Solana Testnet cluster, e.g. https://api.testnet.solana.com */
22
- export const SOLANA_TESTNET_CHAIN = "solana:testnet";
23
- /** Solana Localnet cluster, e.g. http://localhost:8899 */
24
- export const SOLANA_LOCALNET_CHAIN = "solana:localnet";
25
- /** Array of all Solana clusters */
26
- export const SOLANA_CHAINS = ["solana:mainnet", "solana:mainnet-beta"];
27
- /**
28
- * Check if a chain corresponds with one of the Solana clusters.
29
- */
30
- export function isSolanaChain(chain) {
31
- return SOLANA_CHAINS.includes(chain);
32
- }
33
- export function isVersionedTransaction(transaction) {
34
- return "version" in transaction;
35
- }
36
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/solana/injected/utils.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,UAAU,CAAC,CAAa,EAAE,CAAa;IACrD,OAAO,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,CAAa,EAAE,CAAa;IACzD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACxB,IAAI,MAAM,KAAK,CAAC,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAClC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AAGrC,8EAA8E;AAC9E,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD,gEAAgE;AAChE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAEnD,kEAAkE;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAErD,0DAA0D;AAC1D,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEvD,mCAAmC;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,gBAAgB,EAAE,qBAAqB,CAAU,CAAC;AAKhF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAuB;IACnD,OAAO,aAAa,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,WAA+C;IACpF,OAAO,SAAS,IAAI,WAAW,CAAC;AAClC,CAAC"}
@@ -1,40 +0,0 @@
1
- import { Connection, TransactionInstruction } from "@solana/web3.js";
2
- import { WalletType } from "../core/chains";
3
- import { OmniWallet } from "../OmniWallet";
4
- import { Token } from "../core/token";
5
- import { ReviewFee } from "../core/bridge";
6
- import { Commitment } from "../core";
7
- import { ISolanaProtocolWallet } from "./WalletStandard";
8
- declare class SolanaWallet extends OmniWallet {
9
- readonly wallet: ISolanaProtocolWallet;
10
- readonly icon = "https://storage.herewallet.app/upload/8700f33153ad813e133e5bf9b791b5ecbeea66edca6b8d17aeccb8048eb29ef7.png";
11
- readonly type = WalletType.SOLANA;
12
- constructor(wallet: ISolanaProtocolWallet);
13
- getConnection(): Connection;
14
- get address(): string;
15
- get publicKey(): string;
16
- get omniAddress(): string;
17
- fetchBalance(_: number, address: string): Promise<bigint>;
18
- buildTranferInstructions(token: Token, amount: bigint, receiver: string, fee: ReviewFee): Promise<{
19
- reserve: number;
20
- additionalFee: bigint;
21
- instructions: TransactionInstruction[];
22
- }>;
23
- transferFee(token: Token, receiver: string): Promise<ReviewFee>;
24
- getPriorityFeeEstimate(params: any): Promise<any>;
25
- transfer(args: {
26
- token: Token;
27
- receiver: string;
28
- amount: bigint;
29
- comment?: string;
30
- gasFee: ReviewFee;
31
- }): Promise<string>;
32
- sendTransaction(instructions: TransactionInstruction[]): Promise<string>;
33
- fetchBalances(chain: number, whitelist: string[]): Promise<Record<string, bigint>>;
34
- signMessage(message: string): Promise<Uint8Array<ArrayBufferLike>>;
35
- signIntents(intents: Record<string, any>[], options?: {
36
- deadline?: number;
37
- nonce?: Uint8Array;
38
- }): Promise<Commitment>;
39
- }
40
- export default SolanaWallet;
@@ -1,181 +0,0 @@
1
- import { Connection, VersionedTransaction } from "@solana/web3.js";
2
- import { ComputeBudgetProgram, PublicKey, SystemProgram, TransactionMessage } from "@solana/web3.js";
3
- import { base64, base58, hex } from "@scure/base";
4
- import { TOKEN_PROGRAM_ID, TOKEN_2022_PROGRAM_ID, getMinimumBalanceForRentExemptAccount, createAssociatedTokenAccountInstruction, createTransferInstruction, getAccount, ASSOCIATED_TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync, createTransferCheckedInstruction, } from "@solana/spl-token";
5
- import { Network, WalletType } from "../core/chains";
6
- import { OmniWallet } from "../OmniWallet";
7
- import { formatter } from "../core/utils";
8
- import { ReviewFee } from "../core/bridge";
9
- import { api } from "../core/api";
10
- class SolanaWallet extends OmniWallet {
11
- wallet;
12
- icon = "https://storage.herewallet.app/upload/8700f33153ad813e133e5bf9b791b5ecbeea66edca6b8d17aeccb8048eb29ef7.png";
13
- type = WalletType.SOLANA;
14
- constructor(wallet) {
15
- super();
16
- this.wallet = wallet;
17
- }
18
- getConnection() {
19
- return new Connection(api.getRpcUrl(Network.Solana), {
20
- httpHeaders: { "Api-Key": api.apiKey },
21
- });
22
- }
23
- get address() {
24
- return this.wallet.address;
25
- }
26
- get publicKey() {
27
- return this.wallet.address;
28
- }
29
- get omniAddress() {
30
- return hex.encode(base58.decode(this.address)).toLowerCase();
31
- }
32
- async fetchBalance(_, address) {
33
- const connection = this.getConnection();
34
- if (address === "native") {
35
- const balance = await connection.getBalance(new PublicKey(this.address));
36
- return BigInt(balance);
37
- }
38
- const ATA = getAssociatedTokenAddressSync(new PublicKey(address), new PublicKey(this.address));
39
- const meta = await connection.getTokenAccountBalance(ATA);
40
- return BigInt(meta.value.amount);
41
- }
42
- async buildTranferInstructions(token, amount, receiver, fee) {
43
- const destination = new PublicKey(receiver);
44
- const owner = new PublicKey(this.address);
45
- const connection = this.getConnection();
46
- const reserve = await connection.getMinimumBalanceForRentExemption(0);
47
- let additionalFee = 0n;
48
- if (token.address === "native") {
49
- return {
50
- reserve,
51
- additionalFee,
52
- instructions: [
53
- ComputeBudgetProgram.setComputeUnitPrice({ microLamports: Number(fee.priorityFee) }),
54
- ComputeBudgetProgram.setComputeUnitLimit({ units: Number(fee.gasLimit) }),
55
- SystemProgram.transfer({ fromPubkey: owner, toPubkey: destination, lamports: amount }),
56
- ],
57
- };
58
- }
59
- const mint = new PublicKey(token.address);
60
- const mintAccount = await connection.getAccountInfo(mint);
61
- const tokenProgramId = mintAccount?.owner.equals(TOKEN_2022_PROGRAM_ID) ? TOKEN_2022_PROGRAM_ID : TOKEN_PROGRAM_ID;
62
- const tokenFrom = getAssociatedTokenAddressSync(mint, owner, false, tokenProgramId);
63
- const tokenTo = getAssociatedTokenAddressSync(mint, destination, false, tokenProgramId);
64
- const instructions = [ComputeBudgetProgram.setComputeUnitPrice({ microLamports: Number(fee.baseFee) }), ComputeBudgetProgram.setComputeUnitLimit({ units: Number(fee.gasLimit) })];
65
- const isRegistered = await getAccount(connection, tokenTo, "confirmed", tokenProgramId).catch(() => null);
66
- if (isRegistered == null) {
67
- const inst = createAssociatedTokenAccountInstruction(new PublicKey(this.address), tokenTo, destination, mint, tokenProgramId, ASSOCIATED_TOKEN_PROGRAM_ID);
68
- instructions.push(inst);
69
- additionalFee += BigInt(await getMinimumBalanceForRentExemptAccount(connection));
70
- }
71
- if (tokenProgramId === TOKEN_2022_PROGRAM_ID) {
72
- instructions.push(createTransferCheckedInstruction(tokenFrom, mint, tokenTo, owner, amount, token.decimals, [], tokenProgramId));
73
- }
74
- else {
75
- instructions.push(createTransferInstruction(tokenFrom, tokenTo, owner, amount, [], tokenProgramId));
76
- }
77
- return { instructions, additionalFee, reserve };
78
- }
79
- async transferFee(token, receiver) {
80
- const connection = this.getConnection();
81
- const { blockhash } = await connection.getLatestBlockhash();
82
- const fee = new ReviewFee({ chain: Network.Solana, gasLimit: 1400000n, baseFee: 100n });
83
- const { instructions, additionalFee, reserve } = await this.buildTranferInstructions(token, 1n, receiver, fee);
84
- const msgForEstimate = new TransactionMessage({ payerKey: new PublicKey(this.address), recentBlockhash: blockhash, instructions }).compileToV0Message();
85
- const tx = new VersionedTransaction(msgForEstimate);
86
- const priorityFeeData = await this.getPriorityFeeEstimate({
87
- options: { includeAllPriorityFeeLevels: true },
88
- transaction: base58.encode(tx.serialize()),
89
- });
90
- if (priorityFeeData?.priorityFeeLevels == null)
91
- throw "Failed to fetch gas";
92
- const simulate = await connection.simulateTransaction(tx).catch(() => null);
93
- const unitsConsumed = formatter.bigIntMax(BigInt(simulate?.value.unitsConsumed || 10000n), 10000n);
94
- const msgFee = await connection.getFeeForMessage(msgForEstimate);
95
- const medium = BigInt(priorityFeeData.priorityFeeLevels.medium);
96
- const high = BigInt(priorityFeeData.priorityFeeLevels.high);
97
- const veryHigh = BigInt(priorityFeeData.priorityFeeLevels.veryHigh);
98
- const baseFee = BigInt(msgFee.value || 0);
99
- return new ReviewFee({
100
- chain: Network.Solana,
101
- reserve: BigInt(reserve) + additionalFee,
102
- gasLimit: unitsConsumed,
103
- baseFee,
104
- priorityFee: medium,
105
- options: [
106
- { priorityFee: medium, baseFee },
107
- { priorityFee: high, baseFee },
108
- { priorityFee: veryHigh, baseFee },
109
- ],
110
- });
111
- }
112
- async getPriorityFeeEstimate(params) {
113
- const response = await fetch(api.baseUrl + "/api/v1/evm/helius/staked", {
114
- body: JSON.stringify({ jsonrpc: "2.0", id: "helius-sdk", method: "getPriorityFeeEstimate", params: [params] }),
115
- headers: { "Content-Type": "application/json" },
116
- method: "POST",
117
- });
118
- if (!response.ok)
119
- throw "Server error";
120
- const { result, error } = await response.json();
121
- if (error)
122
- throw error.message;
123
- if (result.error)
124
- throw result.error.message;
125
- return result;
126
- }
127
- async transfer(args) {
128
- const { instructions } = await this.buildTranferInstructions(args.token, args.amount, args.receiver, args.gasFee);
129
- return await this.sendTransaction(instructions);
130
- }
131
- async sendTransaction(instructions) {
132
- if (!this.wallet.sendTransaction)
133
- throw "not impl";
134
- const connection = this.getConnection();
135
- const { blockhash } = await connection.getLatestBlockhash();
136
- const message = new TransactionMessage({ payerKey: new PublicKey(this.address), recentBlockhash: blockhash, instructions });
137
- const transaction = new VersionedTransaction(message.compileToV0Message());
138
- return await this.wallet.sendTransaction(transaction, connection, { preflightCommitment: "confirmed" });
139
- }
140
- async fetchBalances(chain, whitelist) {
141
- const native = await this.fetchBalance(chain, "native");
142
- const connection = this.getConnection();
143
- try {
144
- const res = await fetch(`https://api0.herewallet.app/api/v1/user/balances/${chain}/${this.address}`, { body: JSON.stringify({ whitelist }), method: "POST" });
145
- const { balances } = await res.json();
146
- return { ...balances, native };
147
- }
148
- catch {
149
- const tokenAccounts = await connection.getParsedTokenAccountsByOwner(new PublicKey(this.address), { programId: TOKEN_PROGRAM_ID });
150
- const balances = Object.fromEntries(tokenAccounts.value.map((account) => {
151
- const { mint, tokenAmount } = account.account.data.parsed.info;
152
- return [mint, tokenAmount.amount];
153
- }));
154
- return { ...balances, native };
155
- }
156
- }
157
- async signMessage(message) {
158
- if (!this.wallet.signMessage)
159
- throw "not impl";
160
- return this.wallet.signMessage(message);
161
- }
162
- async signIntents(intents, options) {
163
- const nonce = new Uint8Array(options?.nonce || window.crypto.getRandomValues(new Uint8Array(32)));
164
- const message = JSON.stringify({
165
- deadline: options?.deadline ? new Date(options.deadline).toISOString() : "2100-01-01T00:00:00.000Z",
166
- nonce: base64.encode(nonce),
167
- verifying_contract: "intents.near",
168
- signer_id: this.omniAddress,
169
- intents: intents,
170
- });
171
- const signature = await this.signMessage(message);
172
- return {
173
- signature: `ed25519:${base58.encode(signature)}`,
174
- public_key: `ed25519:${this.publicKey}`,
175
- standard: "raw_ed25519",
176
- payload: message,
177
- };
178
- }
179
- }
180
- export default SolanaWallet;
181
- //# sourceMappingURL=wallet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/solana/wallet.ts"],"names":[],"mappings":"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"}