@hot-labs/kit 1.0.41 → 1.0.43
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.
- package/README.md +14 -9
- package/build/HotConnector.d.ts +26 -15
- package/build/HotConnector.js +36 -14
- package/build/HotConnector.js.map +1 -1
- package/build/OmniConnector.d.ts +1 -1
- package/build/OmniWallet.d.ts +1 -1
- package/build/core/Intents.d.ts +3 -1
- package/build/core/Intents.js +4 -1
- package/build/core/Intents.js.map +1 -1
- package/build/core/bridge.d.ts +2 -2
- package/build/core/bridge.js +32 -31
- package/build/core/bridge.js.map +1 -1
- package/build/core/{config.d.ts → chains.d.ts} +21 -5
- package/build/core/chains.js +372 -0
- package/build/core/chains.js.map +1 -0
- package/build/core/index.d.ts +7 -6
- package/build/core/index.js +7 -6
- package/build/core/index.js.map +1 -1
- package/build/core/recipient.d.ts +1 -1
- package/build/core/recipient.js +1 -1
- package/build/core/token.d.ts +1 -1
- package/build/core/token.js +7 -45
- package/build/core/token.js.map +1 -1
- package/build/core/tokens.d.ts +1 -1
- package/build/core/tokens.js +1 -1
- package/build/core/types.d.ts +1 -0
- package/build/cosmos/connector.d.ts +4 -23
- package/build/cosmos/connector.js +30 -22
- package/build/cosmos/connector.js.map +1 -1
- package/build/cosmos/index.d.ts +2 -3
- package/build/cosmos/index.js +1 -1
- package/build/cosmos/index.js.map +1 -1
- package/build/cosmos/wallet.d.ts +1 -1
- package/build/cosmos/wallet.js +2 -2
- package/build/cosmos/wallet.js.map +1 -1
- package/build/evm/connector.d.ts +1 -1
- package/build/evm/connector.js +1 -1
- package/build/evm/wallet.d.ts +1 -1
- package/build/evm/wallet.js +1 -1
- package/build/exchange.d.ts +2 -2
- package/build/exchange.js +18 -21
- package/build/exchange.js.map +1 -1
- package/build/hot-wallet/google.d.ts +1 -1
- package/build/hot-wallet/google.js +1 -1
- package/build/near/connector.d.ts +1 -1
- package/build/near/connector.js +1 -1
- package/build/near/wallet.d.ts +1 -1
- package/build/near/wallet.js +1 -1
- package/build/solana/connector.d.ts +1 -1
- package/build/solana/connector.js +1 -1
- package/build/solana/wallet.d.ts +1 -1
- package/build/solana/wallet.js +1 -1
- package/build/stellar/connector.d.ts +1 -1
- package/build/stellar/connector.js +1 -1
- package/build/stellar/wallet.d.ts +3 -2
- package/build/stellar/wallet.js +16 -13
- package/build/stellar/wallet.js.map +1 -1
- package/build/ton/connector.d.ts +1 -1
- package/build/ton/connector.js +1 -1
- package/build/ton/wallet.d.ts +1 -1
- package/build/ton/wallet.js +1 -1
- package/build/ui/payment/Bridge.js +1 -1
- package/build/ui/payment/Payment.js +1 -1
- package/build/ui/payment/SelectRecipient.d.ts +1 -1
- package/build/ui/payment/SelectRecipient.js +1 -1
- package/build/ui/payment/SelectSender.d.ts +1 -1
- package/build/ui/payment/SelectSender.js +1 -1
- package/build/ui/payment/SelectToken.js +1 -1
- package/build/ui/payment/TokenCard.js +2 -2
- package/build/ui/payment/TokenCard.js.map +1 -1
- package/build/ui/router.d.ts +1 -1
- package/package.json +1 -1
- package/skill.md +174 -72
- package/src/HotConnector.ts +67 -38
- package/src/OmniConnector.ts +1 -1
- package/src/OmniWallet.ts +1 -1
- package/src/core/Intents.ts +6 -3
- package/src/core/bridge.ts +33 -33
- package/src/core/chains.ts +391 -0
- package/src/core/index.ts +7 -6
- package/src/core/recipient.ts +1 -1
- package/src/core/token.ts +7 -26
- package/src/core/tokens.ts +1 -1
- package/src/core/types.ts +1 -0
- package/src/cosmos/connector.ts +30 -27
- package/src/cosmos/index.ts +2 -3
- package/src/cosmos/wallet.ts +2 -2
- package/src/evm/connector.ts +1 -1
- package/src/evm/wallet.ts +1 -1
- package/src/exchange.ts +22 -25
- package/src/hot-wallet/google.ts +1 -1
- package/src/near/connector.ts +1 -1
- package/src/near/wallet.ts +1 -1
- package/src/solana/connector.ts +1 -1
- package/src/solana/wallet.ts +1 -1
- package/src/stellar/connector.ts +1 -1
- package/src/stellar/wallet.ts +17 -13
- package/src/ton/connector.ts +1 -1
- package/src/ton/wallet.ts +1 -1
- package/src/ui/payment/Bridge.tsx +1 -1
- package/src/ui/payment/Payment.tsx +1 -1
- package/src/ui/payment/Profile.tsx +1 -1
- package/src/ui/payment/SelectRecipient.tsx +1 -1
- package/src/ui/payment/SelectSender.tsx +1 -1
- package/src/ui/payment/SelectToken.tsx +1 -1
- package/src/ui/payment/TokenCard.tsx +3 -2
- package/src/ui/router.tsx +1 -1
- package/build/core/config.js +0 -130
- package/build/core/config.js.map +0 -1
- package/src/core/config.ts +0 -134
package/src/evm/connector.ts
CHANGED
|
@@ -2,7 +2,7 @@ import MetaMaskSDK from "@metamask/sdk";
|
|
|
2
2
|
import { runInAction } from "mobx";
|
|
3
3
|
|
|
4
4
|
import { ConnectorType, OmniConnector, WC_ICON } from "../OmniConnector";
|
|
5
|
-
import { Network, WalletType } from "../core/
|
|
5
|
+
import { Network, WalletType } from "../core/chains";
|
|
6
6
|
import { isInjected } from "../hot-wallet/iframe";
|
|
7
7
|
import { HotConnector } from "../HotConnector";
|
|
8
8
|
import EvmWallet, { EvmProvider } from "./wallet";
|
package/src/evm/wallet.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { JsonRpcSigner } from "ethers";
|
|
|
4
4
|
|
|
5
5
|
import { OmniConnector } from "../OmniConnector";
|
|
6
6
|
import { OmniWallet } from "../OmniWallet";
|
|
7
|
-
import { WalletType } from "../core/
|
|
7
|
+
import { WalletType } from "../core/chains";
|
|
8
8
|
import { ReviewFee } from "../core/bridge";
|
|
9
9
|
import { Token } from "../core/token";
|
|
10
10
|
import { erc20abi } from "./abi";
|
package/src/exchange.ts
CHANGED
|
@@ -2,19 +2,16 @@ import { GetExecutionStatusResponse, OneClickService, ApiError, OpenAPI, QuoteRe
|
|
|
2
2
|
import { utils } from "@hot-labs/omni-sdk";
|
|
3
3
|
import { hex } from "@scure/base";
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import NearWallet from "./near/wallet";
|
|
8
|
-
import EvmWallet from "./evm/wallet";
|
|
9
|
-
|
|
10
|
-
import { HotConnector } from "./HotConnector";
|
|
11
|
-
import { Network, OmniToken, WalletType } from "./core/config";
|
|
12
|
-
import { bridge, ReviewFee } from "./core/bridge";
|
|
5
|
+
import { Network, OmniToken, WalletType } from "./core/chains";
|
|
6
|
+
import { ReviewFee } from "./core/bridge";
|
|
13
7
|
import { Recipient } from "./core/recipient";
|
|
14
|
-
import { OmniWallet } from "./OmniWallet";
|
|
15
8
|
import { tokens } from "./core/tokens";
|
|
16
9
|
import { Token } from "./core/token";
|
|
17
10
|
|
|
11
|
+
import StellarWallet from "./stellar/wallet";
|
|
12
|
+
import { HotConnector } from "./HotConnector";
|
|
13
|
+
import { OmniWallet } from "./OmniWallet";
|
|
14
|
+
|
|
18
15
|
OpenAPI.BASE = "https://1click.chaindefuser.com";
|
|
19
16
|
OpenAPI.TOKEN = "";
|
|
20
17
|
|
|
@@ -78,11 +75,11 @@ export class Exchange {
|
|
|
78
75
|
const { sender, token, amount, recipient, onMessage } = args;
|
|
79
76
|
onMessage("Sending deposit transaction");
|
|
80
77
|
|
|
81
|
-
if (token.type === WalletType.COSMOS && sender
|
|
82
|
-
const cosmosBridge = await
|
|
78
|
+
if (token.type === WalletType.COSMOS && this.wibe3.isCosmosWallet(sender)) {
|
|
79
|
+
const cosmosBridge = await this.wibe3.hotBridge.cosmos();
|
|
83
80
|
const hash = await cosmosBridge.deposit({
|
|
84
81
|
sendTransaction: async (tx) => sender.sendTransaction(tx),
|
|
85
|
-
senderPublicKey: hex.decode(sender.publicKey),
|
|
82
|
+
senderPublicKey: hex.decode(sender.publicKey!),
|
|
86
83
|
intentAccount: recipient.omniAddress,
|
|
87
84
|
sender: sender.address,
|
|
88
85
|
token: token.address,
|
|
@@ -91,15 +88,15 @@ export class Exchange {
|
|
|
91
88
|
});
|
|
92
89
|
|
|
93
90
|
onMessage("Waiting for deposit");
|
|
94
|
-
const deposit = await
|
|
91
|
+
const deposit = await this.wibe3.hotBridge.waitPendingDeposit(token.chain, hash, recipient.omniAddress);
|
|
95
92
|
onMessage("Finishing deposit");
|
|
96
|
-
await
|
|
93
|
+
await this.wibe3.hotBridge.finishDeposit(deposit);
|
|
97
94
|
onMessage("Deposit finished");
|
|
98
95
|
return;
|
|
99
96
|
}
|
|
100
97
|
|
|
101
|
-
if (token.type === WalletType.EVM && sender
|
|
102
|
-
const hash = await
|
|
98
|
+
if (token.type === WalletType.EVM && this.wibe3.isEvmWallet(sender)) {
|
|
99
|
+
const hash = await this.wibe3.hotBridge.evm.deposit({
|
|
103
100
|
sendTransaction: async (tx) => sender.sendTransaction(token.chain, tx),
|
|
104
101
|
intentAccount: recipient.omniAddress,
|
|
105
102
|
sender: sender.address,
|
|
@@ -110,15 +107,15 @@ export class Exchange {
|
|
|
110
107
|
|
|
111
108
|
if (!hash) throw new Error("Failed to deposit");
|
|
112
109
|
onMessage("Waiting for deposit");
|
|
113
|
-
const deposit = await
|
|
110
|
+
const deposit = await this.wibe3.hotBridge.waitPendingDeposit(token.chain, hash, recipient.omniAddress);
|
|
114
111
|
onMessage("Finishing deposit");
|
|
115
|
-
await
|
|
112
|
+
await this.wibe3.hotBridge.finishDeposit(deposit);
|
|
116
113
|
onMessage("Deposit finished");
|
|
117
114
|
return;
|
|
118
115
|
}
|
|
119
116
|
|
|
120
|
-
if (token.type === WalletType.NEAR && sender
|
|
121
|
-
return await
|
|
117
|
+
if (token.type === WalletType.NEAR && this.wibe3.isNearWallet(sender)) {
|
|
118
|
+
return await this.wibe3.hotBridge.near.deposit({
|
|
122
119
|
sendTransaction: async (tx: any) => sender.sendTransaction(tx),
|
|
123
120
|
intentAccount: recipient.omniAddress,
|
|
124
121
|
sender: sender.address,
|
|
@@ -134,11 +131,11 @@ export class Exchange {
|
|
|
134
131
|
const { sender, token, amount, recipient } = args;
|
|
135
132
|
|
|
136
133
|
const receipientWallet = this.wibe3.wallets.find((w) => w.address === recipient.address);
|
|
137
|
-
if (receipientWallet
|
|
134
|
+
if (this.wibe3.isNearWallet(receipientWallet) && token.type === WalletType.NEAR) {
|
|
138
135
|
await receipientWallet.registerToken(token.originalAddress);
|
|
139
136
|
}
|
|
140
137
|
|
|
141
|
-
await
|
|
138
|
+
await this.wibe3.hotBridge.withdrawToken({
|
|
142
139
|
signIntents: async (intents) => sender.signIntents(intents),
|
|
143
140
|
intentAccount: sender.omniAddress,
|
|
144
141
|
receiver: recipient.address,
|
|
@@ -152,7 +149,7 @@ export class Exchange {
|
|
|
152
149
|
async withdrawFee(request: BridgeRequest) {
|
|
153
150
|
if (request.sender === "qr") throw new Error("Sender is QR");
|
|
154
151
|
if (request.to.chain === Network.Near || request.to.chain === Network.Hot) return 0n;
|
|
155
|
-
const gaslessFee = await
|
|
152
|
+
const gaslessFee = await this.wibe3.hotBridge.getGaslessWithdrawFee({
|
|
156
153
|
receiver: request.recipient.address,
|
|
157
154
|
token: request.to.address,
|
|
158
155
|
chain: request.to.chain,
|
|
@@ -162,7 +159,7 @@ export class Exchange {
|
|
|
162
159
|
if (request.to.address === "native") return 0n;
|
|
163
160
|
|
|
164
161
|
// if withdraw token is not native, we need to swap a bit of it to native to cover the withdraw fee
|
|
165
|
-
const swap = await
|
|
162
|
+
const swap = await this.wibe3.hotBridge.buildSwapExectOutIntent({
|
|
166
163
|
intentFrom: utils.toOmniIntent(request.to.chain, request.to.address),
|
|
167
164
|
intentTo: utils.toOmniIntent(request.to.chain, "native"),
|
|
168
165
|
amountOut: gaslessFee.gasPrice,
|
|
@@ -186,7 +183,7 @@ export class Exchange {
|
|
|
186
183
|
const noFee = from.symbol === to.symbol;
|
|
187
184
|
|
|
188
185
|
if (sender !== "qr" && directChains.includes(from.chain) && to.chain === Network.Hot && from.omniAddress === to.omniAddress) {
|
|
189
|
-
const fee = await
|
|
186
|
+
const fee = await this.wibe3.hotBridge.getDepositFee({
|
|
190
187
|
intentAccount: sender.omniAddress,
|
|
191
188
|
sender: sender.address,
|
|
192
189
|
token: from.address,
|
package/src/hot-wallet/google.ts
CHANGED
|
@@ -5,7 +5,7 @@ import uuid4 from "uuid4";
|
|
|
5
5
|
|
|
6
6
|
import { ConnectorType, OmniConnector } from "../OmniConnector";
|
|
7
7
|
import { OmniWallet } from "../OmniWallet";
|
|
8
|
-
import { WalletType } from "../core/
|
|
8
|
+
import { WalletType } from "../core/chains";
|
|
9
9
|
|
|
10
10
|
import EvmWallet from "../evm/wallet";
|
|
11
11
|
import NearWallet from "../near/wallet";
|
package/src/near/connector.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NearConnector } from "@hot-labs/near-connect";
|
|
2
2
|
import { runInAction } from "mobx";
|
|
3
3
|
|
|
4
|
-
import { WalletType } from "../core/
|
|
4
|
+
import { WalletType } from "../core/chains";
|
|
5
5
|
import { ConnectorType, OmniConnector } from "../OmniConnector";
|
|
6
6
|
import { HotConnector } from "../HotConnector";
|
|
7
7
|
import NearWallet from "./wallet";
|
package/src/near/wallet.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { Action } from "@near-js/transactions";
|
|
|
4
4
|
|
|
5
5
|
import { OmniConnector } from "../OmniConnector";
|
|
6
6
|
import { OmniWallet } from "../OmniWallet";
|
|
7
|
-
import { WalletType } from "../core/
|
|
7
|
+
import { WalletType } from "../core/chains";
|
|
8
8
|
import { ReviewFee } from "../core/bridge";
|
|
9
9
|
import { rpc, TGAS } from "../core/nearRpc";
|
|
10
10
|
import { Token } from "../core/token";
|
package/src/solana/connector.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ConnectorType, OmniConnector, WC_ICON } from "../OmniConnector";
|
|
|
7
7
|
import { HotConnector } from "../HotConnector";
|
|
8
8
|
import { OmniWallet } from "../OmniWallet";
|
|
9
9
|
import { isInjected } from "../hot-wallet/iframe";
|
|
10
|
-
import { WalletType } from "../core/
|
|
10
|
+
import { WalletType } from "../core/chains";
|
|
11
11
|
|
|
12
12
|
import SolanaProtocolWallet from "./protocol";
|
|
13
13
|
import { getWallets } from "./wallets";
|
package/src/solana/wallet.ts
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
createTransferCheckedInstruction,
|
|
14
14
|
} from "@solana/spl-token";
|
|
15
15
|
|
|
16
|
-
import { Network, WalletType } from "../core/
|
|
16
|
+
import { Network, WalletType } from "../core/chains";
|
|
17
17
|
import { OmniConnector } from "../OmniConnector";
|
|
18
18
|
import { OmniWallet } from "../OmniWallet";
|
|
19
19
|
|
package/src/stellar/connector.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { sep43Modules, HotWalletModule, StellarWalletsKit, WalletNetwork, ISupportedWallet } from "@creit.tech/stellar-wallets-kit";
|
|
2
2
|
import { Transaction } from "@stellar/stellar-base";
|
|
3
3
|
|
|
4
|
-
import { WalletType } from "../core/
|
|
4
|
+
import { WalletType } from "../core/chains";
|
|
5
5
|
import { HotConnector } from "../HotConnector";
|
|
6
6
|
import { ConnectorType, OmniConnector } from "../OmniConnector";
|
|
7
7
|
import { isInjected } from "../hot-wallet/iframe";
|
package/src/stellar/wallet.ts
CHANGED
|
@@ -2,12 +2,12 @@ import { base64, base58, hex, base32 } from "@scure/base";
|
|
|
2
2
|
import { Address, Asset, BASE_FEE, Claimant, Contract, Memo, nativeToScVal, Networks, Operation, TimeoutInfinite, Transaction, TransactionBuilder, xdr } from "@stellar/stellar-base";
|
|
3
3
|
import { rpc } from "@stellar/stellar-sdk";
|
|
4
4
|
|
|
5
|
-
import { WalletType } from "../core/
|
|
5
|
+
import { WalletType } from "../core/chains";
|
|
6
6
|
import { OmniWallet } from "../OmniWallet";
|
|
7
7
|
import { OmniConnector } from "../OmniConnector";
|
|
8
|
-
import {
|
|
8
|
+
import { ReviewFee } from "../core/bridge";
|
|
9
9
|
import { formatter } from "../core/utils";
|
|
10
|
-
import { Network } from "../core/
|
|
10
|
+
import { Network } from "../core/chains";
|
|
11
11
|
import { Token } from "../core/token";
|
|
12
12
|
|
|
13
13
|
interface ProtocolWallet {
|
|
@@ -33,6 +33,10 @@ class StellarWallet extends OmniWallet {
|
|
|
33
33
|
super(connector);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
get rpc() {
|
|
37
|
+
return this.connector.wibe3.hotBridge.stellar;
|
|
38
|
+
}
|
|
39
|
+
|
|
36
40
|
get address() {
|
|
37
41
|
return this.wallet.address;
|
|
38
42
|
}
|
|
@@ -81,8 +85,8 @@ class StellarWallet extends OmniWallet {
|
|
|
81
85
|
const asset = await this.getAssetFromContractId(token);
|
|
82
86
|
const sendAmount = formatter.formatAmount(amount, 7);
|
|
83
87
|
|
|
84
|
-
const account = await
|
|
85
|
-
const baseFee = await
|
|
88
|
+
const account = await this.connector.wibe3.hotBridge.stellar.callSoroban((s) => s.getAccount(this.address));
|
|
89
|
+
const baseFee = await this.connector.wibe3.hotBridge.stellar.callHorizon((h) => h.fetchBaseFee()).catch(() => +BASE_FEE);
|
|
86
90
|
const builder = new TransactionBuilder(account, {
|
|
87
91
|
memo: memo ? Memo.text(memo) : undefined,
|
|
88
92
|
networkPassphrase: Networks.PUBLIC,
|
|
@@ -101,13 +105,13 @@ class StellarWallet extends OmniWallet {
|
|
|
101
105
|
)
|
|
102
106
|
);
|
|
103
107
|
|
|
104
|
-
const tx = await
|
|
108
|
+
const tx = await this.rpc.callSoroban((s) => s.prepareTransaction(builder.build() as any));
|
|
105
109
|
const fee = BigInt(Math.floor(baseFee * tx.operations.length));
|
|
106
110
|
return { fee: new ReviewFee({ baseFee: fee, priorityFee: 0n, gasLimit: 1n, chain: Network.Stellar }), tx: tx as unknown as Transaction };
|
|
107
111
|
}
|
|
108
112
|
|
|
109
113
|
let needXlm = 0;
|
|
110
|
-
const receiverAccount = await
|
|
114
|
+
const receiverAccount = await this.rpc.callHorizon((h) => h.loadAccount(receiver)).catch(() => null);
|
|
111
115
|
const claimableBalance = Operation.createClaimableBalance({ amount: amount.toString(), claimants: [new Claimant(receiver)], asset });
|
|
112
116
|
|
|
113
117
|
if (receiverAccount == null) {
|
|
@@ -163,7 +167,7 @@ class StellarWallet extends OmniWallet {
|
|
|
163
167
|
if (!this.wallet.signTransaction) throw "not impl";
|
|
164
168
|
const result = await this.wallet.signTransaction(transaction);
|
|
165
169
|
const txObject = new Transaction(result.signedTxXdr, Networks.PUBLIC);
|
|
166
|
-
const { hash } = await
|
|
170
|
+
const { hash } = await this.rpc.callHorizon((t) => t.submitTransaction(txObject as any));
|
|
167
171
|
return hash;
|
|
168
172
|
}
|
|
169
173
|
|
|
@@ -195,7 +199,7 @@ class StellarWallet extends OmniWallet {
|
|
|
195
199
|
|
|
196
200
|
static async isTokenActivated(address: string, token: string) {
|
|
197
201
|
if (address === "native") return true;
|
|
198
|
-
const data = await
|
|
202
|
+
const data = await fetch(`https://horizon.stellar.org/accounts/${address}`).then((res) => res.json());
|
|
199
203
|
return data.balances.some((ft: any) => {
|
|
200
204
|
if (!ft.asset_issuer) return false;
|
|
201
205
|
const asset = new Asset(ft.asset_code, ft.asset_issuer).contractId(Networks.PUBLIC);
|
|
@@ -206,7 +210,7 @@ class StellarWallet extends OmniWallet {
|
|
|
206
210
|
async changeTrustline(address: string) {
|
|
207
211
|
if (address === "native") return;
|
|
208
212
|
const asset = await this.getAssetFromContractId(address);
|
|
209
|
-
const account = await
|
|
213
|
+
const account = await this.rpc.callHorizon((h) => h.loadAccount(this.address));
|
|
210
214
|
const trustlineOp = Operation.changeTrust({ asset: asset, source: this.address });
|
|
211
215
|
const trustlineTx = new TransactionBuilder(account, { fee: BASE_FEE, networkPassphrase: Networks.PUBLIC }) //
|
|
212
216
|
.addOperation(trustlineOp)
|
|
@@ -224,7 +228,7 @@ class StellarWallet extends OmniWallet {
|
|
|
224
228
|
}
|
|
225
229
|
|
|
226
230
|
const tx = await this.buildSmartContactTx(ACCOUNT_FOR_SIMULATE, id, ASSET_CONTRACT_METHOD.NAME);
|
|
227
|
-
const result = (await
|
|
231
|
+
const result = (await this.rpc.callSoroban((s) => s.simulateTransaction(tx as any))) as unknown as rpc.Api.SimulateTransactionSuccessResponse;
|
|
228
232
|
|
|
229
233
|
const value = result?.result?.retval?.value();
|
|
230
234
|
if (!value) throw "Asset not found";
|
|
@@ -236,7 +240,7 @@ class StellarWallet extends OmniWallet {
|
|
|
236
240
|
}
|
|
237
241
|
|
|
238
242
|
async buildSmartContactTx(publicKey: string, contactId: string, method: string, ...args: any[]) {
|
|
239
|
-
const account = await
|
|
243
|
+
const account = await this.rpc.callSoroban((s) => s.getAccount(publicKey));
|
|
240
244
|
const contract = new Contract(contactId);
|
|
241
245
|
const builtTx = new TransactionBuilder(account, { fee: BASE_FEE, networkPassphrase: Networks.PUBLIC });
|
|
242
246
|
|
|
@@ -253,7 +257,7 @@ class StellarWallet extends OmniWallet {
|
|
|
253
257
|
Address.fromString(contract).toScVal()
|
|
254
258
|
);
|
|
255
259
|
|
|
256
|
-
const result = (await
|
|
260
|
+
const result = (await this.rpc.callSoroban((s) => s.simulateTransaction(tx as any))) as unknown as rpc.Api.SimulateTransactionSuccessResponse;
|
|
257
261
|
if (result) return BigInt(this.i128ToInt(result.result?.retval.value() as xdr.Int128Parts));
|
|
258
262
|
return 0n;
|
|
259
263
|
}
|
package/src/ton/connector.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TonConnectUI, TonConnect } from "@tonconnect/ui";
|
|
2
2
|
import { runInAction } from "mobx";
|
|
3
3
|
|
|
4
|
-
import { WalletType } from "../core/
|
|
4
|
+
import { WalletType } from "../core/chains";
|
|
5
5
|
import { HotConnector } from "../HotConnector";
|
|
6
6
|
import { ConnectorType, OmniConnector } from "../OmniConnector";
|
|
7
7
|
import { isInjected } from "../hot-wallet/iframe";
|
package/src/ton/wallet.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { toUserFriendlyAddress } from "@tonconnect/ui";
|
|
|
5
5
|
import { base58, base64, hex } from "@scure/base";
|
|
6
6
|
|
|
7
7
|
import { OmniWallet } from "../OmniWallet";
|
|
8
|
-
import { WalletType } from "../core/
|
|
8
|
+
import { WalletType } from "../core/chains";
|
|
9
9
|
import { OmniConnector } from "../OmniConnector";
|
|
10
10
|
import { ReviewFee } from "../core/bridge";
|
|
11
11
|
import { Token } from "../core/token";
|
|
@@ -12,7 +12,7 @@ import { Recipient } from "../../core/recipient";
|
|
|
12
12
|
import { OmniWallet } from "../../OmniWallet";
|
|
13
13
|
import { BridgeReview } from "../../exchange";
|
|
14
14
|
import { HotConnector } from "../../HotConnector";
|
|
15
|
-
import { WalletType } from "../../core/
|
|
15
|
+
import { WalletType } from "../../core/chains";
|
|
16
16
|
import { Token } from "../../core/token";
|
|
17
17
|
|
|
18
18
|
import Popup from "../Popup";
|
|
@@ -6,7 +6,7 @@ import { openBridge, openConnector } from "../router";
|
|
|
6
6
|
import { Recipient } from "../../core/recipient";
|
|
7
7
|
import { BridgeReview } from "../../exchange";
|
|
8
8
|
import { OmniWallet } from "../../OmniWallet";
|
|
9
|
-
import { Network } from "../../core/
|
|
9
|
+
import { Network } from "../../core/chains";
|
|
10
10
|
import { Token } from "../../core/token";
|
|
11
11
|
import Popup from "../Popup";
|
|
12
12
|
|
|
@@ -6,7 +6,7 @@ import { LogoutIcon } from "../icons/logout";
|
|
|
6
6
|
import { openBridge, openConnector } from "../router";
|
|
7
7
|
import { HotConnector } from "../../HotConnector";
|
|
8
8
|
import { formatter } from "../../core/utils";
|
|
9
|
-
import { OmniToken } from "../../core/
|
|
9
|
+
import { OmniToken } from "../../core/chains";
|
|
10
10
|
import { tokens } from "../../core/tokens";
|
|
11
11
|
import Popup from "../Popup";
|
|
12
12
|
|
|
@@ -7,7 +7,7 @@ import { PopupOption, PopupOptionInfo } from "../styles";
|
|
|
7
7
|
import { ConnectorType, OmniConnector } from "../../OmniConnector";
|
|
8
8
|
import { HotConnector } from "../../HotConnector";
|
|
9
9
|
import { Recipient } from "../../core/recipient";
|
|
10
|
-
import { WalletType } from "../../core/
|
|
10
|
+
import { WalletType } from "../../core/chains";
|
|
11
11
|
import { openWalletPicker } from "../router";
|
|
12
12
|
import { formatter } from "../../core/utils";
|
|
13
13
|
import Popup from "../Popup";
|
|
@@ -6,7 +6,7 @@ import { PopupOption, PopupOptionInfo } from "../styles";
|
|
|
6
6
|
|
|
7
7
|
import { ConnectorType, OmniConnector } from "../../OmniConnector";
|
|
8
8
|
import { OmniWallet } from "../../OmniWallet";
|
|
9
|
-
import { WalletType } from "../../core/
|
|
9
|
+
import { WalletType } from "../../core/chains";
|
|
10
10
|
import { HotConnector } from "../../HotConnector";
|
|
11
11
|
import { openWalletPicker } from "../router";
|
|
12
12
|
import { formatter } from "../../core/utils";
|
|
@@ -6,7 +6,7 @@ import { formatter } from "../../core/utils";
|
|
|
6
6
|
import { Token } from "../../core/token";
|
|
7
7
|
import { HotConnector } from "../../HotConnector";
|
|
8
8
|
import { OmniWallet } from "../../OmniWallet";
|
|
9
|
-
import { Network, OmniToken } from "../../core/
|
|
9
|
+
import { Network, OmniToken } from "../../core/chains";
|
|
10
10
|
import { PopupOption } from "../styles";
|
|
11
11
|
import Popup from "../Popup";
|
|
12
12
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { observer } from "mobx-react-lite";
|
|
2
2
|
import { useEffect, useState } from "react";
|
|
3
3
|
|
|
4
|
+
import { chains } from "../../core/chains";
|
|
4
5
|
import { formatter } from "../../core/utils";
|
|
5
6
|
import { Token } from "../../core/token";
|
|
7
|
+
|
|
6
8
|
import { HotConnector } from "../../HotConnector";
|
|
7
9
|
import { OmniWallet } from "../../OmniWallet";
|
|
8
10
|
import { PopupOption } from "../styles";
|
|
9
|
-
import { chainsMap } from "../../core/config";
|
|
10
11
|
|
|
11
12
|
const images = {
|
|
12
13
|
cached: new Map<string, Promise<void>>(),
|
|
@@ -56,7 +57,7 @@ export const TokenIcon = observer(({ token, wallet }: { token: Token; wallet?: O
|
|
|
56
57
|
<div style={{ position: "relative", width: 40, height: 40 }}>
|
|
57
58
|
<ImageView src={token.icon} alt={token.symbol} size={40} />
|
|
58
59
|
<ImageView src={token.chainIcon} alt={token.symbol} size={14} style={{ position: "absolute", bottom: 0, right: 0 }} />
|
|
59
|
-
{token.chain === -4 && wallet?.type && <ImageView src={wallet.icon} alt={
|
|
60
|
+
{token.chain === -4 && wallet?.type && <ImageView src={wallet.icon} alt={chains.get(wallet.type)?.name || ""} size={14} style={{ position: "absolute", bottom: 0, left: 0 }} />}
|
|
60
61
|
</div>
|
|
61
62
|
);
|
|
62
63
|
});
|
package/src/ui/router.tsx
CHANGED
|
@@ -3,7 +3,7 @@ import { OmniConnector } from "../OmniConnector";
|
|
|
3
3
|
import { BridgeReview } from "../exchange";
|
|
4
4
|
import { Token } from "../core/token";
|
|
5
5
|
import { OmniWallet } from "../OmniWallet";
|
|
6
|
-
import { WalletType } from "../core/
|
|
6
|
+
import { WalletType } from "../core/chains";
|
|
7
7
|
import { Recipient } from "../core/recipient";
|
|
8
8
|
|
|
9
9
|
import { present } from "./Popup";
|
package/build/core/config.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
export var OmniToken;
|
|
2
|
-
(function (OmniToken) {
|
|
3
|
-
OmniToken["USDT"] = "nep141:usdt.tether-token.near";
|
|
4
|
-
OmniToken["USDC"] = "nep141:17208628f84f5d6ad33f0da3bbbeb27ffcb398eac501a31bd6ad2011e36133a1";
|
|
5
|
-
OmniToken["GONKA"] = "nep245:v2_1.omni.hot.tg:4444119_wyixUKCL";
|
|
6
|
-
OmniToken["NEAR"] = "nep141:wrap.near";
|
|
7
|
-
OmniToken["ETH"] = "nep141:eth.bridge.near";
|
|
8
|
-
OmniToken["AURORA"] = "nep141:aaaaaa20d9e0e2461697782ef11675f668207961.factory.bridge.near";
|
|
9
|
-
OmniToken["SOL"] = "nep141:sol.omft.near";
|
|
10
|
-
OmniToken["BNB"] = "nep245:v2_1.omni.hot.tg:56_11111111111111111111";
|
|
11
|
-
OmniToken["ADI"] = "nep245:v2_1.omni.hot.tg:36900_11111111111111111111";
|
|
12
|
-
})(OmniToken || (OmniToken = {}));
|
|
13
|
-
export var WalletType;
|
|
14
|
-
(function (WalletType) {
|
|
15
|
-
WalletType[WalletType["NEAR"] = 1010] = "NEAR";
|
|
16
|
-
WalletType[WalletType["EVM"] = 1] = "EVM";
|
|
17
|
-
WalletType[WalletType["OMNI"] = -4] = "OMNI";
|
|
18
|
-
WalletType[WalletType["SOLANA"] = 1001] = "SOLANA";
|
|
19
|
-
WalletType[WalletType["STELLAR"] = 1100] = "STELLAR";
|
|
20
|
-
WalletType[WalletType["TON"] = 1111] = "TON";
|
|
21
|
-
WalletType[WalletType["COSMOS"] = 4444118] = "COSMOS";
|
|
22
|
-
WalletType[WalletType["Tron"] = 333] = "Tron";
|
|
23
|
-
WalletType[WalletType["Zcash"] = -5] = "Zcash";
|
|
24
|
-
WalletType[WalletType["Btc"] = -6] = "Btc";
|
|
25
|
-
WalletType[WalletType["Xrp"] = -7] = "Xrp";
|
|
26
|
-
WalletType[WalletType["Doge"] = -8] = "Doge";
|
|
27
|
-
WalletType[WalletType["Ada"] = -9] = "Ada";
|
|
28
|
-
WalletType[WalletType["Aptos"] = -10] = "Aptos";
|
|
29
|
-
WalletType[WalletType["Sui"] = -11] = "Sui";
|
|
30
|
-
WalletType[WalletType["Cardano"] = -12] = "Cardano";
|
|
31
|
-
WalletType[WalletType["Litecoin"] = -14] = "Litecoin";
|
|
32
|
-
WalletType[WalletType["unknown"] = -1000000] = "unknown";
|
|
33
|
-
})(WalletType || (WalletType = {}));
|
|
34
|
-
export var Network;
|
|
35
|
-
(function (Network) {
|
|
36
|
-
Network[Network["Omni_v1"] = 0] = "Omni_v1";
|
|
37
|
-
Network[Network["Hot"] = -4] = "Hot";
|
|
38
|
-
Network[Network["Zcash"] = -5] = "Zcash";
|
|
39
|
-
Network[Network["Btc"] = -6] = "Btc";
|
|
40
|
-
Network[Network["Xrp"] = -7] = "Xrp";
|
|
41
|
-
Network[Network["Doge"] = -8] = "Doge";
|
|
42
|
-
Network[Network["Ada"] = -9] = "Ada";
|
|
43
|
-
Network[Network["Aptos"] = -10] = "Aptos";
|
|
44
|
-
Network[Network["Sui"] = -11] = "Sui";
|
|
45
|
-
Network[Network["Cardano"] = -12] = "Cardano";
|
|
46
|
-
Network[Network["Litecoin"] = -14] = "Litecoin";
|
|
47
|
-
Network[Network["Juno"] = 4444118] = "Juno";
|
|
48
|
-
Network[Network["Gonka"] = 4444119] = "Gonka";
|
|
49
|
-
Network[Network["OmniTon"] = 1117] = "OmniTon";
|
|
50
|
-
Network[Network["ADI"] = 36900] = "ADI";
|
|
51
|
-
Network[Network["Eth"] = 1] = "Eth";
|
|
52
|
-
Network[Network["Tron"] = 333] = "Tron";
|
|
53
|
-
Network[Network["Solana"] = 1001] = "Solana";
|
|
54
|
-
Network[Network["Stellar"] = 1100] = "Stellar";
|
|
55
|
-
Network[Network["Near"] = 1010] = "Near";
|
|
56
|
-
Network[Network["Polygon"] = 137] = "Polygon";
|
|
57
|
-
Network[Network["Arbitrum"] = 42161] = "Arbitrum";
|
|
58
|
-
Network[Network["Aurora"] = 1313161554] = "Aurora";
|
|
59
|
-
Network[Network["Avalanche"] = 43114] = "Avalanche";
|
|
60
|
-
Network[Network["Linea"] = 59144] = "Linea";
|
|
61
|
-
Network[Network["Xlayer"] = 196] = "Xlayer";
|
|
62
|
-
Network[Network["Base"] = 8453] = "Base";
|
|
63
|
-
Network[Network["Ton"] = 1111] = "Ton";
|
|
64
|
-
Network[Network["Bnb"] = 56] = "Bnb";
|
|
65
|
-
Network[Network["OpBnb"] = 204] = "OpBnb";
|
|
66
|
-
Network[Network["BnbTestnet"] = 97] = "BnbTestnet";
|
|
67
|
-
Network[Network["Optimism"] = 10] = "Optimism";
|
|
68
|
-
Network[Network["Scroll"] = 534352] = "Scroll";
|
|
69
|
-
Network[Network["EbiChain"] = 98881] = "EbiChain";
|
|
70
|
-
Network[Network["Sei"] = 1329] = "Sei";
|
|
71
|
-
Network[Network["Blast"] = 81457] = "Blast";
|
|
72
|
-
Network[Network["Taiko"] = 167000] = "Taiko";
|
|
73
|
-
Network[Network["Mantle"] = 5000] = "Mantle";
|
|
74
|
-
Network[Network["Manta"] = 169] = "Manta";
|
|
75
|
-
Network[Network["Kava"] = 2222] = "Kava";
|
|
76
|
-
Network[Network["ZkSync"] = 324] = "ZkSync";
|
|
77
|
-
Network[Network["Monad"] = 10143] = "Monad";
|
|
78
|
-
Network[Network["Metis"] = 1088] = "Metis";
|
|
79
|
-
Network[Network["Gnosis"] = 100] = "Gnosis";
|
|
80
|
-
Network[Network["Fantom"] = 250] = "Fantom";
|
|
81
|
-
Network[Network["Cronos"] = 25] = "Cronos";
|
|
82
|
-
Network[Network["Chiliz"] = 88888] = "Chiliz";
|
|
83
|
-
Network[Network["Moonbeam"] = 1284] = "Moonbeam";
|
|
84
|
-
Network[Network["Ronin"] = 2020] = "Ronin";
|
|
85
|
-
Network[Network["Lisk"] = 1135] = "Lisk";
|
|
86
|
-
Network[Network["Sonic"] = 146] = "Sonic";
|
|
87
|
-
Network[Network["Zora"] = 7777777] = "Zora";
|
|
88
|
-
Network[Network["Mode"] = 34443] = "Mode";
|
|
89
|
-
Network[Network["Berachain"] = 80094] = "Berachain";
|
|
90
|
-
Network[Network["Unichain"] = 130] = "Unichain";
|
|
91
|
-
Network[Network["Soneium"] = 1868] = "Soneium";
|
|
92
|
-
Network[Network["Ink"] = 57073] = "Ink";
|
|
93
|
-
Network[Network["Apechain"] = 2741] = "Apechain";
|
|
94
|
-
})(Network || (Network = {}));
|
|
95
|
-
export const chainsMap = {
|
|
96
|
-
[Network.Juno]: {
|
|
97
|
-
id: "juno-1",
|
|
98
|
-
name: "Juno",
|
|
99
|
-
logo: "https://storage.herewallet.app/ft/4444118:ujuno.png",
|
|
100
|
-
},
|
|
101
|
-
[Network.Gonka]: { id: "gonka-mainnet", name: "Gonka", logo: "https://storage.herewallet.app/ft/4444119:ngonka.png" },
|
|
102
|
-
[Network.Monad]: { id: "monad", name: "Monad", logo: "https://storage.herewallet.app/upload/8f6bdf0d04494dc7157704cf3a7e623aeba7188120d93535d3b9330fa82fc200.JPG" },
|
|
103
|
-
[Network.Near]: { id: "near", name: "NEAR", logo: "https://storage.herewallet.app/ft/1010:native.png" },
|
|
104
|
-
[Network.Eth]: { id: "eth", name: "Ethereum", logo: "https://storage.herewallet.app/upload/80978f3676fc2dfbd3d874a9421004fb7dea7616481bda53bf68f44e21c3ce0c.png" },
|
|
105
|
-
[Network.Solana]: { id: "sol", name: "Solana", logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png" },
|
|
106
|
-
[Network.Arbitrum]: { id: "arb", name: "Arbitrum", logo: "https://storage.herewallet.app/upload/1606b00068f729f48de00d2575940484f6a0dc83351702a9fb8b0139e41dc00b.jpeg" },
|
|
107
|
-
[Network.Base]: { id: "base", name: "Base", logo: "https://storage.herewallet.app/upload/c6cf6513fba97c22192d0b96ffd2be74608559017a4c41ebf4457b65224a7070.jpg" },
|
|
108
|
-
[Network.Bnb]: { id: "bsc", name: "BNB Chain", logo: "https://storage.herewallet.app/upload/b82ec85a318b8d8f1f12b25a0e21cd475208014f15952daf317b876812562530.png" },
|
|
109
|
-
[Network.Polygon]: { id: "pol", name: "Polygon", logo: "https://storage.herewallet.app/upload/e51b9ec8d0ed17792cca05be487f5dbc1d0a1b9113cf7e3465310de48c0acc2f.jpg" },
|
|
110
|
-
[Network.Avalanche]: { id: "avax", name: "Avalanche", logo: "https://storage.herewallet.app/upload/fa027e81ebb6957ebd8feada21b5374b15aa090e1747fae131a1e061d3d7e6da.jpg" },
|
|
111
|
-
[Network.Optimism]: { id: "op", name: "Optimism", logo: "https://storage.herewallet.app/upload/d183a3c76b584552888cb8b5a4dfb849572592d7c7f473fe43bcc5c2adae9a50.jpg" },
|
|
112
|
-
[Network.Gnosis]: { id: "gnosis", name: "Gnosis", logo: "https://storage.herewallet.app/upload/fc4945be03eec20c68ae19920f012afef7204b2c04d39b5cff6ab3a6d99b5981.jpg" },
|
|
113
|
-
[Network.Ton]: { id: "ton", name: "TON", logo: "https://tgapp.herewallet.app/images/chains/ton.svg" },
|
|
114
|
-
[Network.Stellar]: { id: "stellar", name: "Stellar", logo: "https://tgapp.herewallet.app/images/chains/xlm.svg" },
|
|
115
|
-
[Network.Btc]: { id: "btc", name: "Bitcoin", logo: "https://storage.herewallet.app/ft/-6:native.png" },
|
|
116
|
-
[Network.Berachain]: { id: "bera", name: "Berachain", logo: "https://storage.herewallet.app/upload/f5c15875b85ca57447ec031930dbdac1f85799a4ca83ae8ecc204142ff433d60.png" },
|
|
117
|
-
[Network.Tron]: { id: "tron", name: "TRON", logo: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png" },
|
|
118
|
-
[Network.Zcash]: { id: "zec", name: "Zcash", logo: "https://storage.herewallet.app/ft/-5:native.png" },
|
|
119
|
-
[Network.Xrp]: { id: "xrp", name: "XRP", logo: "https://cryptologos.cc/logos/xrp-xrp-logo.svg?v=040" },
|
|
120
|
-
[Network.Doge]: { id: "doge", name: "Doge", logo: "https://cryptologos.cc/logos/dogecoin-doge-logo.svg?v=040" },
|
|
121
|
-
[Network.Ada]: { id: "ada", name: "ADA", logo: "https://cryptologos.cc/logos/cardano-ada-logo.svg?v=040" },
|
|
122
|
-
[Network.Aptos]: { id: "aptos", name: "Aptos", logo: "https://cryptologos.cc/logos/aptos-apt-logo.svg?v=040" },
|
|
123
|
-
[Network.Sui]: { id: "sui", name: "SUI", logo: "https://cryptologos.cc/logos/sui-sui-logo.svg?v=040" },
|
|
124
|
-
[Network.Hot]: { id: "hot", name: "Omni", logo: "https://tgapp.herewallet.app/images/hot/hot-icon.png" },
|
|
125
|
-
[Network.Cardano]: { id: "cardano", name: "Cardano", logo: "https://cryptologos.cc/logos/cardano-ada-logo.svg?v=040" },
|
|
126
|
-
[Network.Litecoin]: { id: "ltc", name: "Litecoin", logo: "https://cryptologos.cc/logos/litecoin-ltc-logo.svg?v=040" },
|
|
127
|
-
[Network.ADI]: { id: "adi", name: "ADI" },
|
|
128
|
-
};
|
|
129
|
-
export const reverseChainsMap = Object.fromEntries(Object.entries(chainsMap).map(([key, value]) => [value.id, +key]));
|
|
130
|
-
//# sourceMappingURL=config.js.map
|
package/build/core/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|