@hot-labs/kit 1.3.2 → 1.4.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 (184) hide show
  1. package/build/HotConnector.d.ts +9 -13
  2. package/build/HotConnector.js +17 -57
  3. package/build/HotConnector.js.map +1 -1
  4. package/build/activity.d.ts +1 -1
  5. package/build/activity.js +8 -8
  6. package/build/activity.js.map +1 -1
  7. package/build/core/Intents.d.ts +4 -3
  8. package/build/core/Intents.js +24 -4
  9. package/build/core/Intents.js.map +1 -1
  10. package/build/{OmniConnector.d.ts → core/OmniConnector.d.ts} +4 -4
  11. package/build/{OmniConnector.js → core/OmniConnector.js} +2 -2
  12. package/build/core/OmniConnector.js.map +1 -0
  13. package/build/{OmniWallet.d.ts → core/OmniWallet.d.ts} +19 -13
  14. package/build/core/OmniWallet.js +97 -0
  15. package/build/core/OmniWallet.js.map +1 -0
  16. package/build/core/chains.d.ts +1 -1
  17. package/build/core/chains.js +5 -5
  18. package/build/core/chains.js.map +1 -1
  19. package/build/core/defaultTokens.js +0 -9
  20. package/build/core/defaultTokens.js.map +1 -1
  21. package/build/{exchange.d.ts → core/exchange.d.ts} +13 -16
  22. package/build/{exchange.js → core/exchange.js} +76 -80
  23. package/build/core/exchange.js.map +1 -0
  24. package/build/core/index.d.ts +4 -2
  25. package/build/core/index.js +4 -2
  26. package/build/core/index.js.map +1 -1
  27. package/build/core/recipient.d.ts +1 -1
  28. package/build/core/telemetry.d.ts +3 -0
  29. package/build/core/telemetry.js.map +1 -1
  30. package/build/core/token.js +3 -3
  31. package/build/core/token.js.map +1 -1
  32. package/build/core/tokens.js +1 -1
  33. package/build/core/tokens.js.map +1 -1
  34. package/build/core/utils.d.ts +1 -0
  35. package/build/core/utils.js +19 -0
  36. package/build/core/utils.js.map +1 -1
  37. package/build/cosmos/connector.d.ts +2 -2
  38. package/build/cosmos/connector.js +2 -2
  39. package/build/cosmos/connector.js.map +1 -1
  40. package/build/cosmos/wallet.d.ts +2 -2
  41. package/build/cosmos/wallet.js +7 -10
  42. package/build/cosmos/wallet.js.map +1 -1
  43. package/build/defaults.d.ts +1 -1
  44. package/build/defaults.js +2 -2
  45. package/build/defaults.js.map +1 -1
  46. package/build/evm/connector.d.ts +2 -2
  47. package/build/evm/connector.js +10 -4
  48. package/build/evm/connector.js.map +1 -1
  49. package/build/evm/wallet.d.ts +5 -5
  50. package/build/evm/wallet.js +25 -24
  51. package/build/evm/wallet.js.map +1 -1
  52. package/build/hot-wallet/google.d.ts +2 -2
  53. package/build/hot-wallet/google.js +4 -4
  54. package/build/hot-wallet/google.js.map +1 -1
  55. package/build/index.d.ts +2 -2
  56. package/build/index.js +2 -2
  57. package/build/index.js.map +1 -1
  58. package/build/near/connector.d.ts +2 -2
  59. package/build/near/connector.js +1 -1
  60. package/build/near/connector.js.map +1 -1
  61. package/build/near/index.d.ts +1 -1
  62. package/build/near/index.js.map +1 -1
  63. package/build/near/rpc.js +1 -2
  64. package/build/near/rpc.js.map +1 -1
  65. package/build/near/standalone.d.ts +2 -0
  66. package/build/near/standalone.js +42 -0
  67. package/build/near/standalone.js.map +1 -0
  68. package/build/near/wallet.d.ts +3 -2
  69. package/build/near/wallet.js +21 -12
  70. package/build/near/wallet.js.map +1 -1
  71. package/build/solana/connector.d.ts +4 -4
  72. package/build/solana/connector.js +11 -4
  73. package/build/solana/connector.js.map +1 -1
  74. package/build/solana/wallet.d.ts +3 -3
  75. package/build/solana/wallet.js +14 -11
  76. package/build/solana/wallet.js.map +1 -1
  77. package/build/stellar/connector.d.ts +2 -2
  78. package/build/stellar/connector.js +3 -2
  79. package/build/stellar/connector.js.map +1 -1
  80. package/build/stellar/wallet.d.ts +3 -3
  81. package/build/stellar/wallet.js +27 -19
  82. package/build/stellar/wallet.js.map +1 -1
  83. package/build/ton/connector.d.ts +2 -2
  84. package/build/ton/connector.js +2 -2
  85. package/build/ton/connector.js.map +1 -1
  86. package/build/ton/wallet.d.ts +3 -3
  87. package/build/ton/wallet.js +26 -17
  88. package/build/ton/wallet.js.map +1 -1
  89. package/build/tron/connector.d.ts +2 -2
  90. package/build/tron/connector.js +1 -1
  91. package/build/tron/connector.js.map +1 -1
  92. package/build/tron/wallet.d.ts +2 -2
  93. package/build/tron/wallet.js +9 -15
  94. package/build/tron/wallet.js.map +1 -1
  95. package/build/ui/bridge/Bridge.d.ts +2 -2
  96. package/build/ui/bridge/Bridge.js +13 -11
  97. package/build/ui/bridge/Bridge.js.map +1 -1
  98. package/build/ui/bridge/SelectRecipient.d.ts +3 -3
  99. package/build/ui/bridge/SelectRecipient.js +5 -5
  100. package/build/ui/bridge/SelectRecipient.js.map +1 -1
  101. package/build/ui/bridge/SelectSender.d.ts +1 -1
  102. package/build/ui/bridge/SelectSender.js +1 -1
  103. package/build/ui/bridge/SelectSender.js.map +1 -1
  104. package/build/ui/bridge/SelectToken.d.ts +1 -1
  105. package/build/ui/bridge/SelectToken.js +2 -2
  106. package/build/ui/bridge/SelectToken.js.map +1 -1
  107. package/build/ui/bridge/TokenCard.d.ts +1 -1
  108. package/build/ui/connect/AuthPopup.d.ts +1 -1
  109. package/build/ui/connect/ConnectWallet.d.ts +1 -1
  110. package/build/ui/connect/ConnectWallet.js +1 -1
  111. package/build/ui/connect/ConnectWallet.js.map +1 -1
  112. package/build/ui/connect/LogoutPopup.d.ts +1 -1
  113. package/build/ui/connect/WCPopup.js +1 -1
  114. package/build/ui/connect/WCPopup.js.map +1 -1
  115. package/build/ui/connect/WalletPicker.d.ts +2 -2
  116. package/build/ui/profile/DepositQR.d.ts +1 -1
  117. package/build/ui/profile/Payment.d.ts +1 -1
  118. package/build/ui/profile/Payment.js +8 -8
  119. package/build/ui/profile/Payment.js.map +1 -1
  120. package/build/ui/profile/Profile.js.map +1 -1
  121. package/build/ui/router.d.ts +3 -3
  122. package/examples-node/.env +2 -0
  123. package/examples-node/package.json +17 -0
  124. package/examples-node/transfer.ts +38 -0
  125. package/examples-node/withdraw.ts +52 -0
  126. package/examples-node/yarn.lock +2691 -0
  127. package/package.json +1 -1
  128. package/src/HotConnector.ts +16 -60
  129. package/src/activity.ts +9 -9
  130. package/src/core/Intents.ts +25 -7
  131. package/src/{OmniConnector.ts → core/OmniConnector.ts} +4 -6
  132. package/src/core/OmniWallet.ts +125 -0
  133. package/src/core/chains.ts +5 -5
  134. package/src/core/defaultTokens.ts +0 -9
  135. package/src/{exchange.ts → core/exchange.ts} +79 -85
  136. package/src/core/index.ts +6 -2
  137. package/src/core/recipient.ts +1 -1
  138. package/src/core/telemetry.ts +4 -0
  139. package/src/core/token.ts +3 -3
  140. package/src/core/tokens.ts +1 -1
  141. package/src/core/utils.ts +16 -0
  142. package/src/cosmos/connector.ts +3 -3
  143. package/src/cosmos/wallet.ts +8 -11
  144. package/src/defaults.ts +2 -2
  145. package/src/evm/connector.ts +12 -6
  146. package/src/evm/wallet.ts +25 -26
  147. package/src/hot-wallet/google.ts +5 -5
  148. package/src/index.ts +2 -2
  149. package/src/near/connector.ts +2 -2
  150. package/src/near/index.ts +2 -1
  151. package/src/near/rpc.ts +1 -2
  152. package/src/near/standalone.ts +52 -0
  153. package/src/near/wallet.ts +21 -15
  154. package/src/solana/connector.ts +15 -6
  155. package/src/solana/wallet.ts +12 -12
  156. package/src/stellar/connector.ts +5 -4
  157. package/src/stellar/wallet.ts +28 -22
  158. package/src/ton/connector.ts +4 -3
  159. package/src/ton/wallet.ts +24 -18
  160. package/src/tron/connector.ts +2 -2
  161. package/src/tron/wallet.ts +9 -19
  162. package/src/ui/bridge/Bridge.tsx +16 -14
  163. package/src/ui/bridge/SelectRecipient.tsx +8 -8
  164. package/src/ui/bridge/SelectSender.tsx +2 -2
  165. package/src/ui/bridge/SelectToken.tsx +3 -3
  166. package/src/ui/bridge/TokenCard.tsx +1 -1
  167. package/src/ui/connect/AuthPopup.tsx +1 -1
  168. package/src/ui/connect/ConnectWallet.tsx +2 -2
  169. package/src/ui/connect/LogoutPopup.tsx +1 -1
  170. package/src/ui/connect/WCPopup.tsx +1 -1
  171. package/src/ui/connect/WalletPicker.tsx +2 -2
  172. package/src/ui/profile/DepositQR.tsx +1 -1
  173. package/src/ui/profile/Payment.tsx +12 -13
  174. package/src/ui/profile/Profile.tsx +1 -2
  175. package/src/ui/router.tsx +3 -3
  176. package/build/OmniConnector.js.map +0 -1
  177. package/build/OmniWallet.js +0 -58
  178. package/build/OmniWallet.js.map +0 -1
  179. package/build/exchange.js.map +0 -1
  180. package/build/ui/utils.d.ts +0 -1
  181. package/build/ui/utils.js +0 -20
  182. package/build/ui/utils.js.map +0 -1
  183. package/src/OmniWallet.ts +0 -82
  184. package/src/ui/utils.ts +0 -14
@@ -1,13 +1,12 @@
1
1
  import { base58, base64, hex } from "@scure/base";
2
2
 
3
+ import type { OmniConnector } from "../core/OmniConnector";
4
+ import { OmniWallet } from "../core/OmniWallet";
3
5
  import { Network, WalletType } from "../core/chains";
4
6
  import { ReviewFee } from "../core/bridge";
5
7
  import { Token } from "../core/token";
6
8
  import { Commitment } from "../core";
7
9
 
8
- import type { OmniConnector } from "../OmniConnector";
9
- import { OmniWallet } from "../OmniWallet";
10
-
11
10
  interface TronWebLike {
12
11
  ready?: boolean;
13
12
  defaultAddress?: { base58?: string; hex?: string };
@@ -58,33 +57,24 @@ class TronWallet extends OmniWallet {
58
57
  }
59
58
 
60
59
  async fetchBalance(chain: number, address: string): Promise<bigint> {
61
- if (chain !== Network.Tron) throw "Invalid chain";
60
+ if (chain !== Network.Tron) return super.fetchBalance(chain, address);
62
61
  if (!this.tronWeb.trx) throw new Error("TronLink not available");
63
62
 
64
63
  if (address === "native") {
65
64
  const balance = await this.tronWeb.trx.getBalance?.(this.address);
66
- return BigInt(balance || 0);
65
+ return this.setBalance(`${chain}:${address}`, BigInt(balance || 0));
67
66
  }
68
67
 
69
- return await this.trc20Balance(address);
68
+ return this.setBalance(`${chain}:${address}`, await this.trc20Balance(address));
70
69
  }
71
70
 
72
71
  async fetchBalances(chain: number, whitelist: string[]): Promise<Record<string, bigint>> {
73
- const native = await this.fetchBalance(chain, "native");
74
-
72
+ if (chain === Network.Omni) return await super.fetchBalances(chain, whitelist);
75
73
  try {
76
- const res = await fetch(`https://api0.herewallet.app/api/v1/user/balances/${chain}/${this.address}`, { body: JSON.stringify({ whitelist, chain_id: chain }), method: "POST" });
77
- if (!res.ok) throw new Error("Failed to fetch balances");
78
- const { balances } = await res.json();
79
- return { ...balances, native };
74
+ return await super.fetchBalances(chain, whitelist);
80
75
  } catch {
81
- const balances = await Promise.all(
82
- whitelist.map(async (token) => {
83
- const balance = await this.fetchBalance(chain, token);
84
- return [token, balance] as const;
85
- })
86
- );
87
- return { ...Object.fromEntries(balances), native };
76
+ const tasks = whitelist.map(async (token) => [token, await this.fetchBalance(chain, token)]);
77
+ return Object.fromEntries(await Promise.all(tasks));
88
78
  }
89
79
  }
90
80
 
@@ -7,27 +7,27 @@ import RefreshIcon from "../icons/refresh";
7
7
  import { ArrowRightIcon } from "../icons/arrow-right";
8
8
 
9
9
  import { HotConnector } from "../../HotConnector";
10
- import { BridgeReview } from "../../exchange";
11
- import { OmniWallet } from "../../OmniWallet";
10
+ import { BridgeReview } from "../../core/exchange";
11
+ import { OmniWallet } from "../../core/OmniWallet";
12
12
 
13
+ import { chains, WalletType } from "../../core/chains";
14
+ import { Recipient } from "../../core/recipient";
13
15
  import { formatter } from "../../core/utils";
14
16
  import { tokens } from "../../core/tokens";
15
- import { Recipient } from "../../core/recipient";
16
- import { chains, WalletType } from "../../core/chains";
17
17
  import { Token } from "../../core/token";
18
18
 
19
+ import { ActionButton, Button } from "../uikit/button";
20
+ import { PLarge, PSmall, PTiny } from "../uikit/text";
21
+ import { Skeleton } from "../uikit/loader";
22
+ import { ImageView } from "../uikit/image";
23
+ import ExchangeIcon from "../icons/exchange";
24
+
19
25
  import Popup from "../Popup";
20
26
  import { PopupButton } from "../styles";
21
- import DepositQR from "../profile/DepositQR";
22
27
  import { openSelectRecipient, openSelectSender, openSelectTokenPopup, openWalletPicker } from "../router";
28
+ import DepositQR from "../profile/DepositQR";
23
29
  import { TokenIcon } from "./TokenCard";
24
30
 
25
- import { PLarge, PMedium, PSmall, PTiny } from "../uikit/text";
26
- import { Skeleton } from "../uikit/loader";
27
- import { ImageView } from "../uikit/image";
28
- import ExchangeIcon from "../icons/exchange";
29
- import { ActionButton, Button } from "../uikit/button";
30
-
31
31
  const animations = {
32
32
  success: "https://hex.exchange/success.json",
33
33
  failed: "https://hex.exchange/error.json",
@@ -161,7 +161,8 @@ export const Bridge = observer(({ hot, widget, setup, onClose, onProcess, onSele
161
161
  try {
162
162
  if (currentReviewId !== reviewId.current) return;
163
163
  const amount = type === "exactIn" ? from.int(valueInTokens) : to.int(valueInTokens);
164
- const review = await hot.exchange.reviewSwap({ sender, refund, amount, recipient, slippage: 0.005, type, from, to });
164
+ const recipientWallet = hot.wallets.find((w) => w.address === recipient?.address && w.type === recipient?.type) || recipient;
165
+ const review = await hot.exchange.reviewSwap({ recipient: recipientWallet, slippage: 0.005, sender, refund, amount, type, from, to });
165
166
  if (currentReviewId !== reviewId.current) return;
166
167
  setIsReviewing(false);
167
168
  setIsError(null);
@@ -185,10 +186,11 @@ export const Bridge = observer(({ hot, widget, setup, onClose, onProcess, onSele
185
186
  const process = async (review: BridgeReview) => {
186
187
  try {
187
188
  const log = (message: string) => setProcessing({ status: "processing", message, review });
188
- hot.hotBridge.logger = { log, warn: console.warn };
189
+ hot.exchange.bridge.logger = { log, warn: console.warn };
189
190
  log("Signing transaction");
190
191
 
191
- const result = await hot.exchange.makeSwap(review, { log });
192
+ review.logger = { log };
193
+ const result = await hot.exchange.makeSwap(review);
192
194
  let resultReview = result.review;
193
195
 
194
196
  if (result.processing) {
@@ -4,23 +4,23 @@ import { useState } from "react";
4
4
 
5
5
  import { ArrowRightIcon } from "../icons/arrow-right";
6
6
 
7
+ import { Recipient } from "../../core/recipient";
8
+ import { WalletType } from "../../core/chains";
9
+ import { formatter } from "../../core/utils";
10
+
11
+ import { PSmall } from "../uikit/text";
7
12
  import { ImageView } from "../uikit/image";
13
+ import { ConnectorType, OmniConnector } from "../../core/OmniConnector";
8
14
  import { PopupOption, PopupOptionInfo } from "../styles";
9
- import { ConnectorType, OmniConnector } from "../../OmniConnector";
10
15
  import { HotConnector } from "../../HotConnector";
11
16
  import { openWalletPicker } from "../router";
12
17
  import Popup from "../Popup";
13
18
 
14
- import { Recipient } from "../../core/recipient";
15
- import { WalletType } from "../../core/chains";
16
- import { formatter } from "../../core/utils";
17
- import { PSmall } from "../uikit/text";
18
-
19
19
  interface SelectRecipientProps {
20
- recipient?: Recipient;
21
20
  type: WalletType;
22
- onSelect: (recipient?: Recipient) => void;
23
21
  hot: HotConnector;
22
+ recipient?: Recipient;
23
+ onSelect: (recipient?: Recipient) => void;
24
24
  onClose: () => void;
25
25
  }
26
26
 
@@ -4,9 +4,9 @@ import { QRIcon } from "../icons/qr";
4
4
  import { ArrowRightIcon } from "../icons/arrow-right";
5
5
  import { PopupOption, PopupOptionInfo } from "../styles";
6
6
 
7
- import { ConnectorType, OmniConnector } from "../../OmniConnector";
7
+ import { ConnectorType, OmniConnector } from "../../core/OmniConnector";
8
8
  import { HotConnector } from "../../HotConnector";
9
- import { OmniWallet } from "../../OmniWallet";
9
+ import { OmniWallet } from "../../core/OmniWallet";
10
10
  import { ImageView } from "../uikit/image";
11
11
 
12
12
  import { WalletType } from "../../core/chains";
@@ -3,7 +3,7 @@ import { observer } from "mobx-react-lite";
3
3
  import styled from "styled-components";
4
4
 
5
5
  import { HotConnector } from "../../HotConnector";
6
- import { OmniWallet } from "../../OmniWallet";
6
+ import { OmniWallet } from "../../core/OmniWallet";
7
7
 
8
8
  import { Network, OmniToken } from "../../core/chains";
9
9
  import { formatter } from "../../core/utils";
@@ -44,7 +44,7 @@ export const SelectTokenPopup = observer(({ hot, initialChain, onClose, onSelect
44
44
  });
45
45
 
46
46
  const sorted = Object.values(chains).sort((a, b) => {
47
- if (a.chain === Network.Hot) return -1;
47
+ if (a.chain === Network.Omni) return -1;
48
48
  return b.balance - a.balance;
49
49
  });
50
50
 
@@ -95,7 +95,7 @@ export const SelectTokenPopup = observer(({ hot, initialChain, onClose, onSelect
95
95
  <SearchInput type="text" placeholder="Search token" onChange={(e) => setSearch(e.target.value)} />
96
96
  {hot.walletsTokens
97
97
  .filter(({ token, balance }) => {
98
- if (token.chain !== Network.Hot) return false;
98
+ if (token.chain !== Network.Omni) return false;
99
99
  if (token.float(balance) < 0.0001) return false;
100
100
  if (!token.symbol.toLowerCase().includes(search.toLowerCase())) return false;
101
101
  used.add(token.address);
@@ -6,7 +6,7 @@ import { formatter } from "../../core/utils";
6
6
  import { Token } from "../../core/token";
7
7
 
8
8
  import { HotConnector } from "../../HotConnector";
9
- import { OmniWallet } from "../../OmniWallet";
9
+ import { OmniWallet } from "../../core/OmniWallet";
10
10
  import { ImageView } from "../uikit/image";
11
11
 
12
12
  export const TokenIcon = observer(({ token, wallet, withoutChain, size = 40 }: { token: Token; wallet?: OmniWallet; withoutChain?: boolean; size?: number }) => {
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from "react";
2
- import { OmniWallet } from "../../OmniWallet";
2
+ import { OmniWallet } from "../../core/OmniWallet";
3
3
  import Popup, { present } from "../Popup";
4
4
  import { PopupButton } from "../styles";
5
5
 
@@ -1,8 +1,8 @@
1
1
  import { observer } from "mobx-react-lite";
2
2
 
3
- import { OmniWallet } from "../../OmniWallet";
3
+ import { OmniWallet } from "../../core/OmniWallet";
4
4
  import { HotConnector } from "../../HotConnector";
5
- import { ConnectorType, OmniConnector } from "../../OmniConnector";
5
+ import { ConnectorType, OmniConnector } from "../../core/OmniConnector";
6
6
 
7
7
  import { formatter } from "../../core/utils";
8
8
  import { WalletType } from "../../core";
@@ -1,7 +1,7 @@
1
1
  import { observer } from "mobx-react-lite";
2
2
 
3
3
  import Popup from "../Popup";
4
- import { OmniConnector } from "../../OmniConnector";
4
+ import { OmniConnector } from "../../core/OmniConnector";
5
5
  import { PopupButton } from "../styles";
6
6
 
7
7
  interface LogoutPopupProps {
@@ -4,7 +4,7 @@ import QRCodeStyling from "qr-code-styling";
4
4
  import styled from "styled-components";
5
5
 
6
6
  import Popup from "../Popup";
7
- import { WC_ICON } from "../../OmniConnector";
7
+ import { WC_ICON } from "../../core/OmniConnector";
8
8
 
9
9
  interface WCPopupProps {
10
10
  title: string;
@@ -2,8 +2,8 @@ import { useState } from "react";
2
2
  import { observer } from "mobx-react-lite";
3
3
 
4
4
  import { ImageView } from "../uikit/image";
5
- import { OmniWallet } from "../../OmniWallet";
6
- import { OmniConnector, OmniConnectorOption } from "../../OmniConnector";
5
+ import { OmniWallet } from "../../core/OmniWallet";
6
+ import { OmniConnector, OmniConnectorOption } from "../../core/OmniConnector";
7
7
  import { PopupButton, PopupOption, PopupOptionInfo } from "../styles";
8
8
  import { WCPopup } from "./WCPopup";
9
9
  import Popup from "../Popup";
@@ -3,7 +3,7 @@ import QRCodeStyling from "qr-code-styling";
3
3
  import { observer } from "mobx-react-lite";
4
4
  import styled from "styled-components";
5
5
 
6
- import { BridgeReview } from "../../exchange";
6
+ import { BridgeReview } from "../../core/exchange";
7
7
  import { PopupButton } from "../styles";
8
8
 
9
9
  const DepositQR = observer(({ review, onConfirm, onCancel }: { review: BridgeReview; onConfirm: () => void; onCancel: () => void }) => {
@@ -5,22 +5,20 @@ import styled from "styled-components";
5
5
  import { WalletIcon } from "../icons/wallet";
6
6
  import { PopupOption, PopupOptionInfo } from "../styles";
7
7
  import { Commitment, Intents } from "../../core";
8
- import { Recipient } from "../../core/recipient";
9
8
  import { Token } from "../../core/token";
10
9
 
11
- import { TokenCard } from "../bridge/TokenCard";
12
- import { BridgeReview } from "../../exchange";
13
- import { openConnector } from "../router";
10
+ import { BridgeReview } from "../../core/exchange";
11
+ import { OmniWallet } from "../../core/OmniWallet";
12
+ import { formatter } from "../../core/utils";
14
13
 
15
- import { OmniWallet } from "../../OmniWallet";
14
+ import { openConnector } from "../router";
15
+ import { TokenCard } from "../bridge/TokenCard";
16
16
  import { HotConnector } from "../../HotConnector";
17
- import Popup from "../Popup";
18
-
19
- import { Loader } from "../uikit/loader";
20
17
  import { HorizontalStepper } from "../uikit/Stepper";
21
18
  import { ActionButton } from "../uikit/button";
22
19
  import { H6, PSmall } from "../uikit/text";
23
- import { serializeError } from "../utils";
20
+ import { Loader } from "../uikit/loader";
21
+ import Popup from "../Popup";
24
22
 
25
23
  interface PaymentProps {
26
24
  onReject: (message: string) => void;
@@ -78,7 +76,7 @@ export const Payment = observer(({ connector, intents, title = "Payment", allowe
78
76
  const insurance = (needAmount * BigInt(Math.floor(PAY_SLIPPAGE * 1000))) / BigInt(1000);
79
77
  const extra = connector.exchange.isDirectDeposit(from, payableToken) ? insurance : 0n;
80
78
  const review = await connector.exchange.reviewSwap({
81
- recipient: Recipient.fromWallet(intents.signer)!,
79
+ recipient: intents.signer!,
82
80
  amount: needAmount + extra,
83
81
  slippage: PAY_SLIPPAGE,
84
82
  sender: wallet,
@@ -118,7 +116,8 @@ export const Payment = observer(({ connector, intents, title = "Payment", allowe
118
116
  return;
119
117
  }
120
118
 
121
- const result = await connector.exchange.makeSwap(flow.review, { log: () => {} });
119
+ flow.review.logger = console;
120
+ const result = await connector.exchange.makeSwap(flow.review);
122
121
  await onConfirm({ depositQoute: result.review, processing: result.processing });
123
122
  setFlow({ loading: false, step: "success" });
124
123
  setTimeout(() => close(), 2000);
@@ -164,9 +163,9 @@ export const Payment = observer(({ connector, intents, title = "Payment", allowe
164
163
  {/* @ts-expect-error: dotlottie-wc is not typed */}
165
164
  <dotlottie-wc key="error" src={animations.failed} speed="1" style={{ width: 300, height: 300 }} mode="forward" loop autoplay></dotlottie-wc>
166
165
  <p style={{ fontSize: 24, marginTop: -32, fontWeight: "bold" }}>Transaction failed</p>
167
- <p style={{ fontSize: 14, width: "80%", textAlign: "center", overflowY: "auto", lineBreak: "anywhere" }}>{serializeError(flow.error)}</p>
166
+ <p style={{ fontSize: 14, width: "80%", textAlign: "center", overflowY: "auto", lineBreak: "anywhere" }}>{formatter.serializeError(flow.error)}</p>
168
167
  </div>
169
- <ActionButton onClick={() => onReject(serializeError(flow.error))}>Close</ActionButton>
168
+ <ActionButton onClick={() => onReject(formatter.serializeError(flow.error))}>Close</ActionButton>
170
169
  </Popup>
171
170
  );
172
171
  }
@@ -10,9 +10,8 @@ import { formatter } from "../../core/utils";
10
10
  import { OmniToken } from "../../core/chains";
11
11
  import { tokens } from "../../core/tokens";
12
12
 
13
- import { openBridge, openConnector } from "../router";
14
13
  import { HotConnector } from "../../HotConnector";
15
-
14
+ import { openBridge, openConnector } from "../router";
16
15
  import { TokenCard, TokenIcon } from "../bridge/TokenCard";
17
16
  import { ImageView } from "../uikit/image";
18
17
  import { Loader } from "../uikit/loader";
package/src/ui/router.tsx CHANGED
@@ -1,8 +1,8 @@
1
1
  import { HotConnector } from "../HotConnector";
2
- import { OmniConnector } from "../OmniConnector";
3
- import { OmniWallet } from "../OmniWallet";
2
+ import { OmniConnector } from "../core/OmniConnector";
3
+ import { OmniWallet } from "../core/OmniWallet";
4
4
 
5
- import { BridgeReview } from "../exchange";
5
+ import { BridgeReview } from "../core/exchange";
6
6
  import { WalletType } from "../core/chains";
7
7
  import { Recipient } from "../core/recipient";
8
8
  import { Intents } from "../core/Intents";
@@ -1 +0,0 @@
1
- {"version":3,"file":"OmniConnector.js","sourceRoot":"","sources":["../src/OmniConnector.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- import { hex } from "@scure/base";
2
- import { openAuthPopup } from "./ui/connect/AuthPopup";
3
- import { Intents } from "./core/Intents";
4
- import { ReviewFee } from "./core/bridge";
5
- import { api } from "./core/api";
6
- export class OmniWallet {
7
- async depositNfts(nftIds, receiver) {
8
- // TODO
9
- }
10
- async withdrawNfts(nftIds, receiver) {
11
- // TODO
12
- }
13
- async getDepositNftsFee(nfts) {
14
- return new ReviewFee({ chain: -4 });
15
- }
16
- async transferNft(nftId, receiver) {
17
- // TODO
18
- }
19
- async getTranferNftFee(nftId, receiver) {
20
- return new ReviewFee({ chain: -4 });
21
- }
22
- async getNfts(onLoad) {
23
- // TODO
24
- }
25
- async auth(intents, options) {
26
- return openAuthPopup(this, async () => {
27
- const seed = hex.encode(new Uint8Array(window.crypto.getRandomValues(new Uint8Array(32))));
28
- const msgBuffer = new TextEncoder().encode(`${options?.domain || window.location.origin}_${seed}`);
29
- const nonce = await window.crypto.subtle.digest("SHA-256", new Uint8Array(msgBuffer));
30
- const signed = await this.signIntents(intents || [], { nonce: new Uint8Array(nonce), signerId: options?.signerId || this.omniAddress });
31
- if (options?.customAuth)
32
- return await options.customAuth(signed, seed);
33
- return (await api.auth(signed, seed));
34
- });
35
- }
36
- async waitUntilBalance(need, receiver = this.omniAddress, attempts = 0) {
37
- if (attempts > 120)
38
- throw "Balance is not enough";
39
- const assets = Object.keys(need);
40
- const balances = await Intents.getIntentsBalances(assets, receiver);
41
- if (assets.every((asset) => (balances[asset] || 0n) >= (need[asset] || 0n)))
42
- return;
43
- await new Promise((resolve) => setTimeout(resolve, 1000));
44
- await this.waitUntilBalance(need, receiver, attempts + 1);
45
- }
46
- async getIntentsBalance(asset, receiver) {
47
- const balances = await Intents.getIntentsBalances([asset], receiver);
48
- return balances[asset] || 0n;
49
- }
50
- async getAssets() {
51
- if (!this.omniAddress)
52
- return {};
53
- const assets = await Intents.getIntentsAssets(this.omniAddress);
54
- const balances = await Intents.getIntentsBalances(assets, this.omniAddress);
55
- return balances;
56
- }
57
- }
58
- //# sourceMappingURL=OmniWallet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"OmniWallet.js","sourceRoot":"","sources":["../src/OmniWallet.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"exchange.js","sourceRoot":"","sources":["../src/exchange.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare const serializeError: (error: any) => string;
package/build/ui/utils.js DELETED
@@ -1,20 +0,0 @@
1
- import { NetworkError, TimeoutNetworkError } from "../core/api";
2
- export const serializeError = (error) => {
3
- try {
4
- if (error instanceof Error)
5
- return error.message;
6
- if (error instanceof NetworkError)
7
- return error.toString();
8
- if (error instanceof TimeoutNetworkError)
9
- return error.toString();
10
- if (typeof error === "object" && Object.keys(error).length > 0)
11
- return JSON.stringify(error);
12
- if (typeof error === "string" || typeof error === "number")
13
- return error.toString();
14
- return "";
15
- }
16
- catch (error) {
17
- return "Unknown error";
18
- }
19
- };
20
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAU,EAAU,EAAE;IACnD,IAAI,CAAC;QACH,IAAI,KAAK,YAAY,KAAK;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC;QACjD,IAAI,KAAK,YAAY,YAAY;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3D,IAAI,KAAK,YAAY,mBAAmB;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC,CAAC"}
package/src/OmniWallet.ts DELETED
@@ -1,82 +0,0 @@
1
- import { hex } from "@scure/base";
2
-
3
- import { openAuthPopup } from "./ui/connect/AuthPopup";
4
- import { WalletType } from "./core/chains";
5
- import { Intents } from "./core/Intents";
6
- import { ReviewFee } from "./core/bridge";
7
- import { Token } from "./core/token";
8
- import { Commitment } from "./core";
9
- import { api } from "./core/api";
10
-
11
- export abstract class OmniWallet {
12
- abstract address: string;
13
- abstract publicKey?: string;
14
- abstract omniAddress: string;
15
- abstract type: WalletType;
16
- abstract icon: string;
17
-
18
- async depositNfts(nftIds: string[], receiver: string) {
19
- // TODO
20
- }
21
-
22
- async withdrawNfts(nftIds: string[], receiver: string) {
23
- // TODO
24
- }
25
-
26
- async getDepositNftsFee(nfts: string[]) {
27
- return new ReviewFee({ chain: -4 });
28
- }
29
-
30
- async transferNft(nftId: string, receiver: string) {
31
- // TODO
32
- }
33
-
34
- async getTranferNftFee(nftId: string, receiver: string) {
35
- return new ReviewFee({ chain: -4 });
36
- }
37
-
38
- async getNfts(onLoad: (nfts: string[]) => void) {
39
- // TODO
40
- }
41
-
42
- abstract transferFee(token: Token, receiver: string, amount: bigint): Promise<ReviewFee>;
43
- abstract transfer(args: { token: Token; receiver: string; amount: bigint; comment?: string; gasFee?: ReviewFee }): Promise<string>;
44
-
45
- abstract fetchBalance(chain: number, address: string): Promise<bigint>;
46
- abstract fetchBalances(chain?: number, whitelist?: string[]): Promise<Record<string, bigint>>;
47
-
48
- abstract signIntents(intents: Record<string, any>[], options?: { nonce?: Uint8Array; deadline?: number; signerId?: string }): Promise<Commitment>;
49
-
50
- async auth<T = string>(intents?: Record<string, any>[], options?: { domain?: string; signerId?: string; customAuth?: (commitment: Commitment, seed: string) => Promise<T> }): Promise<T> {
51
- return openAuthPopup(this, async () => {
52
- const seed = hex.encode(new Uint8Array(window.crypto.getRandomValues(new Uint8Array(32))));
53
- const msgBuffer = new TextEncoder().encode(`${options?.domain || window.location.origin}_${seed}`);
54
- const nonce = await window.crypto.subtle.digest("SHA-256", new Uint8Array(msgBuffer));
55
- const signed = await this.signIntents(intents || [], { nonce: new Uint8Array(nonce), signerId: options?.signerId || this.omniAddress });
56
-
57
- if (options?.customAuth) return await options.customAuth(signed, seed);
58
- return (await api.auth(signed, seed)) as T;
59
- });
60
- }
61
-
62
- async waitUntilBalance(need: Record<string, bigint>, receiver = this.omniAddress, attempts = 0) {
63
- if (attempts > 120) throw "Balance is not enough";
64
- const assets = Object.keys(need) as string[];
65
- const balances = await Intents.getIntentsBalances(assets, receiver);
66
- if (assets.every((asset) => (balances[asset] || 0n) >= (need[asset] || 0n))) return;
67
- await new Promise((resolve) => setTimeout(resolve, 1000));
68
- await this.waitUntilBalance(need, receiver, attempts + 1);
69
- }
70
-
71
- async getIntentsBalance(asset: string, receiver: string): Promise<bigint> {
72
- const balances = await Intents.getIntentsBalances([asset], receiver);
73
- return balances[asset] || 0n;
74
- }
75
-
76
- async getAssets() {
77
- if (!this.omniAddress) return {};
78
- const assets = await Intents.getIntentsAssets(this.omniAddress);
79
- const balances = await Intents.getIntentsBalances(assets, this.omniAddress);
80
- return balances;
81
- }
82
- }
package/src/ui/utils.ts DELETED
@@ -1,14 +0,0 @@
1
- import { NetworkError, TimeoutNetworkError } from "../core/api";
2
-
3
- export const serializeError = (error: any): string => {
4
- try {
5
- if (error instanceof Error) return error.message;
6
- if (error instanceof NetworkError) return error.toString();
7
- if (error instanceof TimeoutNetworkError) return error.toString();
8
- if (typeof error === "object" && Object.keys(error).length > 0) return JSON.stringify(error);
9
- if (typeof error === "string" || typeof error === "number") return error.toString();
10
- return "";
11
- } catch (error) {
12
- return "Unknown error";
13
- }
14
- };