@sodax/wallet-sdk-react 1.2.7-beta → 1.3.1-beta-rc1
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/dist/index.cjs +124 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -8
- package/dist/index.d.ts +5 -8
- package/dist/index.mjs +126 -44
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -6
- package/src/Hydrate.ts +0 -7
- package/src/SodaxWalletProvider.tsx +1 -2
- package/src/actions/getXService.ts +3 -0
- package/src/hooks/useWalletProvider.ts +15 -2
- package/src/hooks/useXBalances.ts +2 -3
- package/src/hooks/useXConnectors.ts +6 -3
- package/src/hooks/useXDisconnect.ts +8 -0
- package/src/useXWagmiStore.ts +6 -1
- package/src/xchains/near/NearXConnector.ts +42 -0
- package/src/xchains/near/NearXService.ts +46 -0
- package/src/xchains/near/useNearXConnectors.ts +23 -0
- package/src/xchains/solana/SolanaXService.ts +3 -7
- package/src/xchains/stellar/StellarWalletsKitXConnector.ts +9 -1
- package/src/xchains/stellar/useStellarXConnectors.ts +1 -10
- package/src/xchains/solana/hooks/useAnchorProvider.tsx +0 -9
package/dist/index.d.cts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { ChainId, ChainType, XToken, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, RpcConfig } from '@sodax/types';
|
|
1
|
+
import { ChainId, ChainType, XToken, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, INearWalletProvider, RpcConfig } from '@sodax/types';
|
|
2
2
|
import { Config, Connector } from 'wagmi';
|
|
3
3
|
import { IconService } from 'icon-sdk-js';
|
|
4
4
|
import { IndexerGrpcAccountPortfolioApi, ChainGrpcWasmApi } from '@injectivelabs/sdk-ts';
|
|
5
5
|
import { MsgBroadcaster } from '@injectivelabs/wallet-core';
|
|
6
6
|
import { WalletStrategy } from '@injectivelabs/wallet-strategy';
|
|
7
7
|
import { Connection } from '@solana/web3.js';
|
|
8
|
-
import { AnchorProvider } from '@coral-xyz/anchor';
|
|
9
8
|
import { WalletContextState } from '@solana/wallet-adapter-react';
|
|
10
9
|
import { StellarWalletsKit } from '@creit.tech/stellar-wallets-kit';
|
|
11
10
|
import * as StellarSdk from '@stellar/stellar-sdk';
|
|
@@ -202,7 +201,6 @@ declare class SolanaXService extends XService {
|
|
|
202
201
|
private static instance;
|
|
203
202
|
connection: Connection | undefined;
|
|
204
203
|
wallet: WalletContextState | undefined;
|
|
205
|
-
provider: AnchorProvider | undefined;
|
|
206
204
|
private constructor();
|
|
207
205
|
static getInstance(): SolanaXService;
|
|
208
206
|
getBalance(address: string | undefined, xToken: XToken): Promise<bigint>;
|
|
@@ -243,7 +241,6 @@ type StellarWalletType = {
|
|
|
243
241
|
type: string;
|
|
244
242
|
url: string;
|
|
245
243
|
};
|
|
246
|
-
|
|
247
244
|
declare class StellarWalletsKitXConnector extends XConnector {
|
|
248
245
|
_wallet: StellarWalletType;
|
|
249
246
|
constructor(wallet: StellarWalletType);
|
|
@@ -274,7 +271,7 @@ declare class SuiXConnector extends XConnector {
|
|
|
274
271
|
|
|
275
272
|
declare function useXAccount(chainIdentifier?: ChainType | ChainId): XAccount;
|
|
276
273
|
|
|
277
|
-
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA", XAccount>>;
|
|
274
|
+
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "NEAR", XAccount>>;
|
|
278
275
|
|
|
279
276
|
/**
|
|
280
277
|
* Hook for connecting to various blockchain wallets across different chains
|
|
@@ -334,7 +331,7 @@ declare function useXConnection(xChainType: ChainType | undefined): XConnection
|
|
|
334
331
|
* - Stellar: Uses custom Stellar connectors
|
|
335
332
|
* - Solana: Uses Solana wallet adapters (filtered to installed wallets only)
|
|
336
333
|
*
|
|
337
|
-
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA')
|
|
334
|
+
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR')
|
|
338
335
|
* @returns An array of XConnector instances compatible with the specified chain type
|
|
339
336
|
*/
|
|
340
337
|
declare function useXConnectors(xChainType: ChainType | undefined): XConnector[];
|
|
@@ -413,7 +410,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
413
410
|
|
|
414
411
|
/**
|
|
415
412
|
* Hook to get the appropriate wallet provider based on the chain type.
|
|
416
|
-
* Supports EVM, SUI, ICON and
|
|
413
|
+
* Supports EVM, SUI, ICON, INJECTIVE, STELLAR, SOLANA and NEAR chains.
|
|
417
414
|
*
|
|
418
415
|
* @param {ChainId | undefined} spokeChainId - The chain ID to get the wallet provider for. Can be any valid ChainId value.
|
|
419
416
|
* @returns {EvmWalletProvider | SuiWalletProvider | IconWalletProvider | InjectiveWalletProvider | undefined}
|
|
@@ -428,7 +425,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
428
425
|
* const walletProvider = useWalletProvider('sui');
|
|
429
426
|
* ```
|
|
430
427
|
*/
|
|
431
|
-
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | undefined;
|
|
428
|
+
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | INearWalletProvider | undefined;
|
|
432
429
|
|
|
433
430
|
type SignMessageReturnType = `0x${string}` | Uint8Array | string | undefined;
|
|
434
431
|
declare function useXSignMessage(): UseMutationResult<SignMessageReturnType, Error, {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { ChainId, ChainType, XToken, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, RpcConfig } from '@sodax/types';
|
|
1
|
+
import { ChainId, ChainType, XToken, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, INearWalletProvider, RpcConfig } from '@sodax/types';
|
|
2
2
|
import { Config, Connector } from 'wagmi';
|
|
3
3
|
import { IconService } from 'icon-sdk-js';
|
|
4
4
|
import { IndexerGrpcAccountPortfolioApi, ChainGrpcWasmApi } from '@injectivelabs/sdk-ts';
|
|
5
5
|
import { MsgBroadcaster } from '@injectivelabs/wallet-core';
|
|
6
6
|
import { WalletStrategy } from '@injectivelabs/wallet-strategy';
|
|
7
7
|
import { Connection } from '@solana/web3.js';
|
|
8
|
-
import { AnchorProvider } from '@coral-xyz/anchor';
|
|
9
8
|
import { WalletContextState } from '@solana/wallet-adapter-react';
|
|
10
9
|
import { StellarWalletsKit } from '@creit.tech/stellar-wallets-kit';
|
|
11
10
|
import * as StellarSdk from '@stellar/stellar-sdk';
|
|
@@ -202,7 +201,6 @@ declare class SolanaXService extends XService {
|
|
|
202
201
|
private static instance;
|
|
203
202
|
connection: Connection | undefined;
|
|
204
203
|
wallet: WalletContextState | undefined;
|
|
205
|
-
provider: AnchorProvider | undefined;
|
|
206
204
|
private constructor();
|
|
207
205
|
static getInstance(): SolanaXService;
|
|
208
206
|
getBalance(address: string | undefined, xToken: XToken): Promise<bigint>;
|
|
@@ -243,7 +241,6 @@ type StellarWalletType = {
|
|
|
243
241
|
type: string;
|
|
244
242
|
url: string;
|
|
245
243
|
};
|
|
246
|
-
|
|
247
244
|
declare class StellarWalletsKitXConnector extends XConnector {
|
|
248
245
|
_wallet: StellarWalletType;
|
|
249
246
|
constructor(wallet: StellarWalletType);
|
|
@@ -274,7 +271,7 @@ declare class SuiXConnector extends XConnector {
|
|
|
274
271
|
|
|
275
272
|
declare function useXAccount(chainIdentifier?: ChainType | ChainId): XAccount;
|
|
276
273
|
|
|
277
|
-
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA", XAccount>>;
|
|
274
|
+
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "NEAR", XAccount>>;
|
|
278
275
|
|
|
279
276
|
/**
|
|
280
277
|
* Hook for connecting to various blockchain wallets across different chains
|
|
@@ -334,7 +331,7 @@ declare function useXConnection(xChainType: ChainType | undefined): XConnection
|
|
|
334
331
|
* - Stellar: Uses custom Stellar connectors
|
|
335
332
|
* - Solana: Uses Solana wallet adapters (filtered to installed wallets only)
|
|
336
333
|
*
|
|
337
|
-
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA')
|
|
334
|
+
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR')
|
|
338
335
|
* @returns An array of XConnector instances compatible with the specified chain type
|
|
339
336
|
*/
|
|
340
337
|
declare function useXConnectors(xChainType: ChainType | undefined): XConnector[];
|
|
@@ -413,7 +410,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
413
410
|
|
|
414
411
|
/**
|
|
415
412
|
* Hook to get the appropriate wallet provider based on the chain type.
|
|
416
|
-
* Supports EVM, SUI, ICON and
|
|
413
|
+
* Supports EVM, SUI, ICON, INJECTIVE, STELLAR, SOLANA and NEAR chains.
|
|
417
414
|
*
|
|
418
415
|
* @param {ChainId | undefined} spokeChainId - The chain ID to get the wallet provider for. Can be any valid ChainId value.
|
|
419
416
|
* @returns {EvmWalletProvider | SuiWalletProvider | IconWalletProvider | InjectiveWalletProvider | undefined}
|
|
@@ -428,7 +425,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
428
425
|
* const walletProvider = useWalletProvider('sui');
|
|
429
426
|
* ```
|
|
430
427
|
*/
|
|
431
|
-
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | undefined;
|
|
428
|
+
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | INearWalletProvider | undefined;
|
|
432
429
|
|
|
433
430
|
type SignMessageReturnType = `0x${string}` | Uint8Array | string | undefined;
|
|
434
431
|
declare function useXSignMessage(): UseMutationResult<SignMessageReturnType, Error, {
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { baseChainInfo, ChainTypeArr, KAIA_MAINNET_CHAIN_ID, REDBELLY_MAINNET_CHAIN_ID, LIGHTLINK_MAINNET_CHAIN_ID, HYPEREVM_MAINNET_CHAIN_ID, POLYGON_MAINNET_CHAIN_ID, OPTIMISM_MAINNET_CHAIN_ID, SONIC_MAINNET_CHAIN_ID, BSC_MAINNET_CHAIN_ID, BASE_MAINNET_CHAIN_ID, ARBITRUM_MAINNET_CHAIN_ID, AVALANCHE_MAINNET_CHAIN_ID, ETHEREUM_MAINNET_CHAIN_ID } from '@sodax/types';
|
|
2
|
+
import { NearConnector } from '@hot-labs/near-connect';
|
|
3
|
+
import { JsonRpcProvider } from 'near-api-js';
|
|
2
4
|
import { erc20Abi, defineChain } from 'viem';
|
|
3
5
|
import { getPublicClient } from 'wagmi/actions';
|
|
4
6
|
import { useConnections, useAccount, useConnect, useConnectors, useDisconnect, useSwitchChain, usePublicClient, useWalletClient, useSignMessage, WagmiProvider, createConfig, http, useConfig } from 'wagmi';
|
|
@@ -22,12 +24,11 @@ import { useWallet, ConnectionProvider, WalletProvider as WalletProvider$1, useC
|
|
|
22
24
|
import { create } from 'zustand';
|
|
23
25
|
import { devtools, persist, createJSONStorage } from 'zustand/middleware';
|
|
24
26
|
import { immer } from 'zustand/middleware/immer';
|
|
25
|
-
import { QueryClient, useMutation, useQuery,
|
|
27
|
+
import { QueryClient, useMutation, useQuery, QueryClientProvider } from '@tanstack/react-query';
|
|
26
28
|
import { mainnet as mainnet$1 } from 'viem/chains';
|
|
27
|
-
import { SolanaWalletProvider, StellarWalletProvider, InjectiveWalletProvider, IconWalletProvider, SuiWalletProvider, EvmWalletProvider } from '@sodax/wallet-sdk-core';
|
|
29
|
+
import { NearWalletProvider, SolanaWalletProvider, StellarWalletProvider, InjectiveWalletProvider, IconWalletProvider, SuiWalletProvider, EvmWalletProvider } from '@sodax/wallet-sdk-core';
|
|
28
30
|
import { getFullnodeUrl } from '@mysten/sui/client';
|
|
29
31
|
import { UnsafeBurnerWalletAdapter } from '@solana/wallet-adapter-wallets';
|
|
30
|
-
import { AnchorProvider } from '@coral-xyz/anchor';
|
|
31
32
|
|
|
32
33
|
// src/actions/getXChainType.ts
|
|
33
34
|
function getXChainType(xChainId) {
|
|
@@ -37,26 +38,6 @@ function getXChainType(xChainId) {
|
|
|
37
38
|
return baseChainInfo[xChainId].type;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
|
-
// src/actions/getXService.ts
|
|
41
|
-
function getXService(xChainType) {
|
|
42
|
-
switch (xChainType) {
|
|
43
|
-
case "EVM":
|
|
44
|
-
return EvmXService.getInstance();
|
|
45
|
-
case "SUI":
|
|
46
|
-
return SuiXService.getInstance();
|
|
47
|
-
case "SOLANA":
|
|
48
|
-
return SolanaXService.getInstance();
|
|
49
|
-
case "ICON":
|
|
50
|
-
return IconXService.getInstance();
|
|
51
|
-
case "INJECTIVE":
|
|
52
|
-
return InjectiveXService.getInstance();
|
|
53
|
-
case "STELLAR":
|
|
54
|
-
return StellarXService.getInstance();
|
|
55
|
-
default:
|
|
56
|
-
throw new Error(`Unsupported chain type: ${xChainType}`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
41
|
// src/core/XService.ts
|
|
61
42
|
var XService = class {
|
|
62
43
|
constructor(xChainType) {
|
|
@@ -112,6 +93,55 @@ var XService = class {
|
|
|
112
93
|
return this.getXConnectors().find((xConnector) => xConnector.id === xConnectorId);
|
|
113
94
|
}
|
|
114
95
|
};
|
|
96
|
+
var NearXService = class _NearXService extends XService {
|
|
97
|
+
constructor() {
|
|
98
|
+
super("NEAR");
|
|
99
|
+
this.walletSelector = new NearConnector({
|
|
100
|
+
network: "mainnet",
|
|
101
|
+
logger: console,
|
|
102
|
+
autoConnect: true,
|
|
103
|
+
excludedWallets: ["okx-wallet"]
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
static getInstance() {
|
|
107
|
+
if (!_NearXService.instance) {
|
|
108
|
+
_NearXService.instance = new _NearXService();
|
|
109
|
+
}
|
|
110
|
+
return _NearXService.instance;
|
|
111
|
+
}
|
|
112
|
+
async getBalance(address, xToken) {
|
|
113
|
+
const url = "https://1rpc.io/near";
|
|
114
|
+
const provider = new JsonRpcProvider({ url });
|
|
115
|
+
if (xToken.symbol === "NEAR") {
|
|
116
|
+
const account = await provider.viewAccount({ accountId: address ?? "" });
|
|
117
|
+
return BigInt(account.amount);
|
|
118
|
+
}
|
|
119
|
+
const res = await provider.callFunction({ contractId: xToken.address, method: "ft_balance_of", args: { account_id: address } });
|
|
120
|
+
return BigInt(res ?? 0);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// src/actions/getXService.ts
|
|
125
|
+
function getXService(xChainType) {
|
|
126
|
+
switch (xChainType) {
|
|
127
|
+
case "EVM":
|
|
128
|
+
return EvmXService.getInstance();
|
|
129
|
+
case "SUI":
|
|
130
|
+
return SuiXService.getInstance();
|
|
131
|
+
case "SOLANA":
|
|
132
|
+
return SolanaXService.getInstance();
|
|
133
|
+
case "ICON":
|
|
134
|
+
return IconXService.getInstance();
|
|
135
|
+
case "INJECTIVE":
|
|
136
|
+
return InjectiveXService.getInstance();
|
|
137
|
+
case "STELLAR":
|
|
138
|
+
return StellarXService.getInstance();
|
|
139
|
+
case "NEAR":
|
|
140
|
+
return NearXService.getInstance();
|
|
141
|
+
default:
|
|
142
|
+
throw new Error(`Unsupported chain type: ${xChainType}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
115
145
|
|
|
116
146
|
// src/core/XConnector.ts
|
|
117
147
|
var XConnector = class {
|
|
@@ -537,7 +567,7 @@ var SolanaXService = class _SolanaXService extends XService {
|
|
|
537
567
|
if (!address) return BigInt(0);
|
|
538
568
|
const connection = this.connection;
|
|
539
569
|
if (!connection) {
|
|
540
|
-
|
|
570
|
+
return BigInt(0);
|
|
541
571
|
}
|
|
542
572
|
try {
|
|
543
573
|
if (isNativeToken(xToken)) {
|
|
@@ -547,10 +577,9 @@ var SolanaXService = class _SolanaXService extends XService {
|
|
|
547
577
|
const tokenAccountPubkey = getAssociatedTokenAddressSync(new PublicKey(xToken.address), new PublicKey(address));
|
|
548
578
|
const tokenAccount = await getAccount(connection, tokenAccountPubkey);
|
|
549
579
|
return BigInt(tokenAccount.amount);
|
|
550
|
-
} catch
|
|
551
|
-
|
|
580
|
+
} catch {
|
|
581
|
+
return BigInt(0);
|
|
552
582
|
}
|
|
553
|
-
return BigInt(0);
|
|
554
583
|
}
|
|
555
584
|
};
|
|
556
585
|
|
|
@@ -815,7 +844,7 @@ var SuiXConnector = class extends XConnector {
|
|
|
815
844
|
};
|
|
816
845
|
var initXServices = () => {
|
|
817
846
|
const xServices = {};
|
|
818
|
-
["EVM", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON"].forEach((key) => {
|
|
847
|
+
["EVM", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON", "NEAR"].forEach((key) => {
|
|
819
848
|
const xChainType = key;
|
|
820
849
|
switch (xChainType) {
|
|
821
850
|
// EVM, SUI, Solana wallet connectors are supported by their own sdks. wagmi, @mysten/dapp-kit, @solana/wallet-adapter-react.
|
|
@@ -844,6 +873,10 @@ var initXServices = () => {
|
|
|
844
873
|
xServices[xChainType] = IconXService.getInstance();
|
|
845
874
|
xServices[xChainType].setXConnectors([new IconHanaXConnector()]);
|
|
846
875
|
break;
|
|
876
|
+
case "NEAR":
|
|
877
|
+
xServices[xChainType] = NearXService.getInstance();
|
|
878
|
+
xServices[xChainType].setXConnectors([]);
|
|
879
|
+
break;
|
|
847
880
|
}
|
|
848
881
|
});
|
|
849
882
|
return xServices;
|
|
@@ -1059,12 +1092,59 @@ function useXService(xChainType) {
|
|
|
1059
1092
|
return xService;
|
|
1060
1093
|
}
|
|
1061
1094
|
|
|
1095
|
+
// src/xchains/near/NearXConnector.ts
|
|
1096
|
+
var NearXConnector = class extends XConnector {
|
|
1097
|
+
constructor(wallet) {
|
|
1098
|
+
super("NEAR", wallet.manifest.name, wallet.manifest.id);
|
|
1099
|
+
this._wallet = wallet;
|
|
1100
|
+
}
|
|
1101
|
+
getXService() {
|
|
1102
|
+
return NearXService.getInstance();
|
|
1103
|
+
}
|
|
1104
|
+
async connect() {
|
|
1105
|
+
const walletSelector = this.getXService().walletSelector;
|
|
1106
|
+
const wallet = await walletSelector.connect({ walletId: this._wallet.manifest.id });
|
|
1107
|
+
const accounts = await wallet.getAccounts();
|
|
1108
|
+
if (accounts.length === 0 || accounts[0] === void 0) {
|
|
1109
|
+
return void 0;
|
|
1110
|
+
}
|
|
1111
|
+
return {
|
|
1112
|
+
address: accounts[0].accountId,
|
|
1113
|
+
xChainType: this.xChainType
|
|
1114
|
+
};
|
|
1115
|
+
}
|
|
1116
|
+
async disconnect() {
|
|
1117
|
+
const walletSelector = this.getXService().walletSelector;
|
|
1118
|
+
await walletSelector.disconnect(this._wallet);
|
|
1119
|
+
}
|
|
1120
|
+
get icon() {
|
|
1121
|
+
return this._wallet.manifest.icon;
|
|
1122
|
+
}
|
|
1123
|
+
};
|
|
1124
|
+
|
|
1125
|
+
// src/xchains/near/useNearXConnectors.ts
|
|
1126
|
+
var useNearXConnectors = () => {
|
|
1127
|
+
const xService = useXService("NEAR");
|
|
1128
|
+
return useQuery({
|
|
1129
|
+
queryKey: ["near-wallets"],
|
|
1130
|
+
queryFn: async () => {
|
|
1131
|
+
if (!xService) {
|
|
1132
|
+
return [];
|
|
1133
|
+
}
|
|
1134
|
+
await xService.walletSelector.whenManifestLoaded;
|
|
1135
|
+
const wallets = xService.walletSelector.availableWallets;
|
|
1136
|
+
return wallets.map((wallet) => new NearXConnector(wallet));
|
|
1137
|
+
}
|
|
1138
|
+
});
|
|
1139
|
+
};
|
|
1140
|
+
|
|
1062
1141
|
// src/hooks/useXConnectors.ts
|
|
1063
1142
|
function useXConnectors(xChainType) {
|
|
1064
1143
|
const xService = useXService(xChainType);
|
|
1065
1144
|
const evmConnectors = useConnectors();
|
|
1066
1145
|
const suiWallets = useWallets();
|
|
1067
1146
|
const { data: stellarXConnectors } = useStellarXConnectors();
|
|
1147
|
+
const { data: nearXConnectors } = useNearXConnectors();
|
|
1068
1148
|
const { wallets: solanaWallets } = useWallet();
|
|
1069
1149
|
const xConnectors = useMemo(() => {
|
|
1070
1150
|
if (!xChainType || !xService) {
|
|
@@ -1079,10 +1159,12 @@ function useXConnectors(xChainType) {
|
|
|
1079
1159
|
return stellarXConnectors || [];
|
|
1080
1160
|
case "SOLANA":
|
|
1081
1161
|
return solanaWallets.filter((wallet) => wallet.readyState === "Installed").map((wallet) => new SolanaXConnector(wallet));
|
|
1162
|
+
case "NEAR":
|
|
1163
|
+
return nearXConnectors || [];
|
|
1082
1164
|
default:
|
|
1083
1165
|
return xService.getXConnectors();
|
|
1084
1166
|
}
|
|
1085
|
-
}, [xService, xChainType, evmConnectors, suiWallets, stellarXConnectors, solanaWallets]);
|
|
1167
|
+
}, [xService, xChainType, evmConnectors, suiWallets, stellarXConnectors, solanaWallets, nearXConnectors]);
|
|
1086
1168
|
return xConnectors;
|
|
1087
1169
|
}
|
|
1088
1170
|
function useXDisconnect() {
|
|
@@ -1103,6 +1185,11 @@ function useXDisconnect() {
|
|
|
1103
1185
|
case "SOLANA":
|
|
1104
1186
|
await solanaWallet.disconnect();
|
|
1105
1187
|
break;
|
|
1188
|
+
case "NEAR": {
|
|
1189
|
+
const nearXService = getXService("NEAR");
|
|
1190
|
+
nearXService.walletSelector.disconnect();
|
|
1191
|
+
break;
|
|
1192
|
+
}
|
|
1106
1193
|
default: {
|
|
1107
1194
|
const xService = getXService(xChainType);
|
|
1108
1195
|
const xConnectorId = xConnections[xChainType]?.xConnectorId;
|
|
@@ -1131,8 +1218,7 @@ function useXBalances({
|
|
|
1131
1218
|
const balances = await xService.getBalances(address, xTokens);
|
|
1132
1219
|
return balances;
|
|
1133
1220
|
},
|
|
1134
|
-
enabled: !!xService,
|
|
1135
|
-
placeholderData: keepPreviousData,
|
|
1221
|
+
enabled: !!xService && !!address && (xTokens?.length ?? 0) > 0,
|
|
1136
1222
|
refetchInterval: 5e3
|
|
1137
1223
|
});
|
|
1138
1224
|
}
|
|
@@ -1262,9 +1348,16 @@ function useWalletProvider(spokeChainId) {
|
|
|
1262
1348
|
}
|
|
1263
1349
|
return new SolanaWalletProvider({
|
|
1264
1350
|
wallet: solanaXService.wallet,
|
|
1265
|
-
|
|
1351
|
+
endpoint: solanaXService.connection.rpcEndpoint
|
|
1266
1352
|
});
|
|
1267
1353
|
}
|
|
1354
|
+
case "NEAR": {
|
|
1355
|
+
const nearXService = xService;
|
|
1356
|
+
if (!nearXService.walletSelector) {
|
|
1357
|
+
return void 0;
|
|
1358
|
+
}
|
|
1359
|
+
return new NearWalletProvider({ wallet: nearXService.walletSelector });
|
|
1360
|
+
}
|
|
1268
1361
|
default:
|
|
1269
1362
|
return void 0;
|
|
1270
1363
|
}
|
|
@@ -1324,11 +1417,6 @@ function useXSignMessage() {
|
|
|
1324
1417
|
}
|
|
1325
1418
|
});
|
|
1326
1419
|
}
|
|
1327
|
-
function useAnchorProvider() {
|
|
1328
|
-
const { connection } = useConnection();
|
|
1329
|
-
const wallet = useWallet();
|
|
1330
|
-
return new AnchorProvider(connection, wallet, { commitment: "confirmed" });
|
|
1331
|
-
}
|
|
1332
1420
|
var Hydrate = () => {
|
|
1333
1421
|
const suiClient = useSuiClient();
|
|
1334
1422
|
useEffect(() => {
|
|
@@ -1350,7 +1438,6 @@ var Hydrate = () => {
|
|
|
1350
1438
|
}, [suiAccount]);
|
|
1351
1439
|
const { connection: solanaConnection } = useConnection();
|
|
1352
1440
|
const solanaWallet = useWallet();
|
|
1353
|
-
const solanaProvider = useAnchorProvider();
|
|
1354
1441
|
useEffect(() => {
|
|
1355
1442
|
if (solanaConnection) {
|
|
1356
1443
|
SolanaXService.getInstance().connection = solanaConnection;
|
|
@@ -1361,11 +1448,6 @@ var Hydrate = () => {
|
|
|
1361
1448
|
SolanaXService.getInstance().wallet = solanaWallet;
|
|
1362
1449
|
}
|
|
1363
1450
|
}, [solanaWallet]);
|
|
1364
|
-
useEffect(() => {
|
|
1365
|
-
if (solanaProvider) {
|
|
1366
|
-
SolanaXService.getInstance().provider = solanaProvider;
|
|
1367
|
-
}
|
|
1368
|
-
}, [solanaProvider]);
|
|
1369
1451
|
const wagmiConfig = useConfig();
|
|
1370
1452
|
useEffect(() => {
|
|
1371
1453
|
if (wagmiConfig) {
|
|
@@ -1426,7 +1508,7 @@ var SodaxWalletProvider = ({ children, rpcConfig }) => {
|
|
|
1426
1508
|
return createWagmiConfig(rpcConfig);
|
|
1427
1509
|
}, [rpcConfig]);
|
|
1428
1510
|
const wallets = useMemo(() => [new UnsafeBurnerWalletAdapter()], []);
|
|
1429
|
-
return /* @__PURE__ */ React2.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React2.createElement(WagmiProvider, { reconnectOnMount: false, config: wagmiConfig }, /* @__PURE__ */ React2.createElement(SuiClientProvider, { networks: { mainnet: { url: getFullnodeUrl("mainnet") } }, defaultNetwork: "mainnet" }, /* @__PURE__ */ React2.createElement(WalletProvider, { autoConnect: true }, /* @__PURE__ */ React2.createElement(ConnectionProvider, { endpoint: rpcConfig["solana"] ?? "" }, /* @__PURE__ */ React2.createElement(WalletProvider$1, { wallets, autoConnect: true }, /* @__PURE__ */ React2.createElement(Hydrate, null), children))))));
|
|
1511
|
+
return /* @__PURE__ */ React2.createElement(QueryClientProvider, { client: queryClient }, /* @__PURE__ */ React2.createElement(WagmiProvider, { reconnectOnMount: false, config: wagmiConfig }, /* @__PURE__ */ React2.createElement(SuiClientProvider, { networks: { mainnet: { url: getFullnodeUrl("mainnet") } }, defaultNetwork: "mainnet" }, /* @__PURE__ */ React2.createElement(WalletProvider, { autoConnect: true }, /* @__PURE__ */ React2.createElement(ConnectionProvider, { endpoint: rpcConfig["solana"] ?? "https://api.mainnet-beta.solana.com" }, /* @__PURE__ */ React2.createElement(WalletProvider$1, { wallets, autoConnect: true }, /* @__PURE__ */ React2.createElement(Hydrate, null), children))))));
|
|
1430
1512
|
};
|
|
1431
1513
|
reconnectIcon();
|
|
1432
1514
|
reconnectStellar();
|