@sodax/wallet-sdk-react 1.2.7-beta → 1.3.0-beta
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 +118 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -6
- package/dist/index.d.ts +5 -6
- package/dist/index.mjs +119 -23
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -5
- package/src/actions/getXService.ts +3 -0
- package/src/hooks/useWalletProvider.ts +14 -1
- 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/stellar/StellarWalletsKitXConnector.ts +9 -1
- package/src/xchains/stellar/useStellarXConnectors.ts +1 -10
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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';
|
|
@@ -243,7 +243,6 @@ type StellarWalletType = {
|
|
|
243
243
|
type: string;
|
|
244
244
|
url: string;
|
|
245
245
|
};
|
|
246
|
-
|
|
247
246
|
declare class StellarWalletsKitXConnector extends XConnector {
|
|
248
247
|
_wallet: StellarWalletType;
|
|
249
248
|
constructor(wallet: StellarWalletType);
|
|
@@ -274,7 +273,7 @@ declare class SuiXConnector extends XConnector {
|
|
|
274
273
|
|
|
275
274
|
declare function useXAccount(chainIdentifier?: ChainType | ChainId): XAccount;
|
|
276
275
|
|
|
277
|
-
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA", XAccount>>;
|
|
276
|
+
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "NEAR", XAccount>>;
|
|
278
277
|
|
|
279
278
|
/**
|
|
280
279
|
* Hook for connecting to various blockchain wallets across different chains
|
|
@@ -334,7 +333,7 @@ declare function useXConnection(xChainType: ChainType | undefined): XConnection
|
|
|
334
333
|
* - Stellar: Uses custom Stellar connectors
|
|
335
334
|
* - Solana: Uses Solana wallet adapters (filtered to installed wallets only)
|
|
336
335
|
*
|
|
337
|
-
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA')
|
|
336
|
+
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR')
|
|
338
337
|
* @returns An array of XConnector instances compatible with the specified chain type
|
|
339
338
|
*/
|
|
340
339
|
declare function useXConnectors(xChainType: ChainType | undefined): XConnector[];
|
|
@@ -413,7 +412,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
413
412
|
|
|
414
413
|
/**
|
|
415
414
|
* Hook to get the appropriate wallet provider based on the chain type.
|
|
416
|
-
* Supports EVM, SUI, ICON and
|
|
415
|
+
* Supports EVM, SUI, ICON, INJECTIVE, STELLAR, SOLANA and NEAR chains.
|
|
417
416
|
*
|
|
418
417
|
* @param {ChainId | undefined} spokeChainId - The chain ID to get the wallet provider for. Can be any valid ChainId value.
|
|
419
418
|
* @returns {EvmWalletProvider | SuiWalletProvider | IconWalletProvider | InjectiveWalletProvider | undefined}
|
|
@@ -428,7 +427,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
428
427
|
* const walletProvider = useWalletProvider('sui');
|
|
429
428
|
* ```
|
|
430
429
|
*/
|
|
431
|
-
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | undefined;
|
|
430
|
+
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | INearWalletProvider | undefined;
|
|
432
431
|
|
|
433
432
|
type SignMessageReturnType = `0x${string}` | Uint8Array | string | undefined;
|
|
434
433
|
declare function useXSignMessage(): UseMutationResult<SignMessageReturnType, Error, {
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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';
|
|
@@ -243,7 +243,6 @@ type StellarWalletType = {
|
|
|
243
243
|
type: string;
|
|
244
244
|
url: string;
|
|
245
245
|
};
|
|
246
|
-
|
|
247
246
|
declare class StellarWalletsKitXConnector extends XConnector {
|
|
248
247
|
_wallet: StellarWalletType;
|
|
249
248
|
constructor(wallet: StellarWalletType);
|
|
@@ -274,7 +273,7 @@ declare class SuiXConnector extends XConnector {
|
|
|
274
273
|
|
|
275
274
|
declare function useXAccount(chainIdentifier?: ChainType | ChainId): XAccount;
|
|
276
275
|
|
|
277
|
-
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA", XAccount>>;
|
|
276
|
+
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "NEAR", XAccount>>;
|
|
278
277
|
|
|
279
278
|
/**
|
|
280
279
|
* Hook for connecting to various blockchain wallets across different chains
|
|
@@ -334,7 +333,7 @@ declare function useXConnection(xChainType: ChainType | undefined): XConnection
|
|
|
334
333
|
* - Stellar: Uses custom Stellar connectors
|
|
335
334
|
* - Solana: Uses Solana wallet adapters (filtered to installed wallets only)
|
|
336
335
|
*
|
|
337
|
-
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA')
|
|
336
|
+
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR')
|
|
338
337
|
* @returns An array of XConnector instances compatible with the specified chain type
|
|
339
338
|
*/
|
|
340
339
|
declare function useXConnectors(xChainType: ChainType | undefined): XConnector[];
|
|
@@ -413,7 +412,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
413
412
|
|
|
414
413
|
/**
|
|
415
414
|
* Hook to get the appropriate wallet provider based on the chain type.
|
|
416
|
-
* Supports EVM, SUI, ICON and
|
|
415
|
+
* Supports EVM, SUI, ICON, INJECTIVE, STELLAR, SOLANA and NEAR chains.
|
|
417
416
|
*
|
|
418
417
|
* @param {ChainId | undefined} spokeChainId - The chain ID to get the wallet provider for. Can be any valid ChainId value.
|
|
419
418
|
* @returns {EvmWalletProvider | SuiWalletProvider | IconWalletProvider | InjectiveWalletProvider | undefined}
|
|
@@ -428,7 +427,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
428
427
|
* const walletProvider = useWalletProvider('sui');
|
|
429
428
|
* ```
|
|
430
429
|
*/
|
|
431
|
-
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | undefined;
|
|
430
|
+
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | INearWalletProvider | undefined;
|
|
432
431
|
|
|
433
432
|
type SignMessageReturnType = `0x${string}` | Uint8Array | string | undefined;
|
|
434
433
|
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';
|
|
@@ -24,7 +26,7 @@ import { devtools, persist, createJSONStorage } from 'zustand/middleware';
|
|
|
24
26
|
import { immer } from 'zustand/middleware/immer';
|
|
25
27
|
import { QueryClient, useMutation, useQuery, keepPreviousData, 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
32
|
import { AnchorProvider } from '@coral-xyz/anchor';
|
|
@@ -37,26 +39,6 @@ function getXChainType(xChainId) {
|
|
|
37
39
|
return baseChainInfo[xChainId].type;
|
|
38
40
|
}
|
|
39
41
|
|
|
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
42
|
// src/core/XService.ts
|
|
61
43
|
var XService = class {
|
|
62
44
|
constructor(xChainType) {
|
|
@@ -112,6 +94,55 @@ var XService = class {
|
|
|
112
94
|
return this.getXConnectors().find((xConnector) => xConnector.id === xConnectorId);
|
|
113
95
|
}
|
|
114
96
|
};
|
|
97
|
+
var NearXService = class _NearXService extends XService {
|
|
98
|
+
constructor() {
|
|
99
|
+
super("NEAR");
|
|
100
|
+
this.walletSelector = new NearConnector({
|
|
101
|
+
network: "mainnet",
|
|
102
|
+
logger: console,
|
|
103
|
+
autoConnect: true,
|
|
104
|
+
excludedWallets: ["okx-wallet"]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
static getInstance() {
|
|
108
|
+
if (!_NearXService.instance) {
|
|
109
|
+
_NearXService.instance = new _NearXService();
|
|
110
|
+
}
|
|
111
|
+
return _NearXService.instance;
|
|
112
|
+
}
|
|
113
|
+
async getBalance(address, xToken) {
|
|
114
|
+
const url = "https://1rpc.io/near";
|
|
115
|
+
const provider = new JsonRpcProvider({ url });
|
|
116
|
+
if (xToken.symbol === "NEAR") {
|
|
117
|
+
const account = await provider.viewAccount({ accountId: address ?? "" });
|
|
118
|
+
return BigInt(account.amount);
|
|
119
|
+
}
|
|
120
|
+
const res = await provider.callFunction({ contractId: xToken.address, method: "ft_balance_of", args: { account_id: address } });
|
|
121
|
+
return BigInt(res ?? 0);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/actions/getXService.ts
|
|
126
|
+
function getXService(xChainType) {
|
|
127
|
+
switch (xChainType) {
|
|
128
|
+
case "EVM":
|
|
129
|
+
return EvmXService.getInstance();
|
|
130
|
+
case "SUI":
|
|
131
|
+
return SuiXService.getInstance();
|
|
132
|
+
case "SOLANA":
|
|
133
|
+
return SolanaXService.getInstance();
|
|
134
|
+
case "ICON":
|
|
135
|
+
return IconXService.getInstance();
|
|
136
|
+
case "INJECTIVE":
|
|
137
|
+
return InjectiveXService.getInstance();
|
|
138
|
+
case "STELLAR":
|
|
139
|
+
return StellarXService.getInstance();
|
|
140
|
+
case "NEAR":
|
|
141
|
+
return NearXService.getInstance();
|
|
142
|
+
default:
|
|
143
|
+
throw new Error(`Unsupported chain type: ${xChainType}`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
115
146
|
|
|
116
147
|
// src/core/XConnector.ts
|
|
117
148
|
var XConnector = class {
|
|
@@ -815,7 +846,7 @@ var SuiXConnector = class extends XConnector {
|
|
|
815
846
|
};
|
|
816
847
|
var initXServices = () => {
|
|
817
848
|
const xServices = {};
|
|
818
|
-
["EVM", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON"].forEach((key) => {
|
|
849
|
+
["EVM", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON", "NEAR"].forEach((key) => {
|
|
819
850
|
const xChainType = key;
|
|
820
851
|
switch (xChainType) {
|
|
821
852
|
// EVM, SUI, Solana wallet connectors are supported by their own sdks. wagmi, @mysten/dapp-kit, @solana/wallet-adapter-react.
|
|
@@ -844,6 +875,10 @@ var initXServices = () => {
|
|
|
844
875
|
xServices[xChainType] = IconXService.getInstance();
|
|
845
876
|
xServices[xChainType].setXConnectors([new IconHanaXConnector()]);
|
|
846
877
|
break;
|
|
878
|
+
case "NEAR":
|
|
879
|
+
xServices[xChainType] = NearXService.getInstance();
|
|
880
|
+
xServices[xChainType].setXConnectors([]);
|
|
881
|
+
break;
|
|
847
882
|
}
|
|
848
883
|
});
|
|
849
884
|
return xServices;
|
|
@@ -1059,12 +1094,59 @@ function useXService(xChainType) {
|
|
|
1059
1094
|
return xService;
|
|
1060
1095
|
}
|
|
1061
1096
|
|
|
1097
|
+
// src/xchains/near/NearXConnector.ts
|
|
1098
|
+
var NearXConnector = class extends XConnector {
|
|
1099
|
+
constructor(wallet) {
|
|
1100
|
+
super("NEAR", wallet.manifest.name, wallet.manifest.id);
|
|
1101
|
+
this._wallet = wallet;
|
|
1102
|
+
}
|
|
1103
|
+
getXService() {
|
|
1104
|
+
return NearXService.getInstance();
|
|
1105
|
+
}
|
|
1106
|
+
async connect() {
|
|
1107
|
+
const walletSelector = this.getXService().walletSelector;
|
|
1108
|
+
const wallet = await walletSelector.connect({ walletId: this._wallet.manifest.id });
|
|
1109
|
+
const accounts = await wallet.getAccounts();
|
|
1110
|
+
if (accounts.length === 0 || accounts[0] === void 0) {
|
|
1111
|
+
return void 0;
|
|
1112
|
+
}
|
|
1113
|
+
return {
|
|
1114
|
+
address: accounts[0].accountId,
|
|
1115
|
+
xChainType: this.xChainType
|
|
1116
|
+
};
|
|
1117
|
+
}
|
|
1118
|
+
async disconnect() {
|
|
1119
|
+
const walletSelector = this.getXService().walletSelector;
|
|
1120
|
+
await walletSelector.disconnect(this._wallet);
|
|
1121
|
+
}
|
|
1122
|
+
get icon() {
|
|
1123
|
+
return this._wallet.manifest.icon;
|
|
1124
|
+
}
|
|
1125
|
+
};
|
|
1126
|
+
|
|
1127
|
+
// src/xchains/near/useNearXConnectors.ts
|
|
1128
|
+
var useNearXConnectors = () => {
|
|
1129
|
+
const xService = useXService("NEAR");
|
|
1130
|
+
return useQuery({
|
|
1131
|
+
queryKey: ["near-wallets"],
|
|
1132
|
+
queryFn: async () => {
|
|
1133
|
+
if (!xService) {
|
|
1134
|
+
return [];
|
|
1135
|
+
}
|
|
1136
|
+
await xService.walletSelector.whenManifestLoaded;
|
|
1137
|
+
const wallets = xService.walletSelector.availableWallets;
|
|
1138
|
+
return wallets.map((wallet) => new NearXConnector(wallet));
|
|
1139
|
+
}
|
|
1140
|
+
});
|
|
1141
|
+
};
|
|
1142
|
+
|
|
1062
1143
|
// src/hooks/useXConnectors.ts
|
|
1063
1144
|
function useXConnectors(xChainType) {
|
|
1064
1145
|
const xService = useXService(xChainType);
|
|
1065
1146
|
const evmConnectors = useConnectors();
|
|
1066
1147
|
const suiWallets = useWallets();
|
|
1067
1148
|
const { data: stellarXConnectors } = useStellarXConnectors();
|
|
1149
|
+
const { data: nearXConnectors } = useNearXConnectors();
|
|
1068
1150
|
const { wallets: solanaWallets } = useWallet();
|
|
1069
1151
|
const xConnectors = useMemo(() => {
|
|
1070
1152
|
if (!xChainType || !xService) {
|
|
@@ -1079,10 +1161,12 @@ function useXConnectors(xChainType) {
|
|
|
1079
1161
|
return stellarXConnectors || [];
|
|
1080
1162
|
case "SOLANA":
|
|
1081
1163
|
return solanaWallets.filter((wallet) => wallet.readyState === "Installed").map((wallet) => new SolanaXConnector(wallet));
|
|
1164
|
+
case "NEAR":
|
|
1165
|
+
return nearXConnectors || [];
|
|
1082
1166
|
default:
|
|
1083
1167
|
return xService.getXConnectors();
|
|
1084
1168
|
}
|
|
1085
|
-
}, [xService, xChainType, evmConnectors, suiWallets, stellarXConnectors, solanaWallets]);
|
|
1169
|
+
}, [xService, xChainType, evmConnectors, suiWallets, stellarXConnectors, solanaWallets, nearXConnectors]);
|
|
1086
1170
|
return xConnectors;
|
|
1087
1171
|
}
|
|
1088
1172
|
function useXDisconnect() {
|
|
@@ -1103,6 +1187,11 @@ function useXDisconnect() {
|
|
|
1103
1187
|
case "SOLANA":
|
|
1104
1188
|
await solanaWallet.disconnect();
|
|
1105
1189
|
break;
|
|
1190
|
+
case "NEAR": {
|
|
1191
|
+
const nearXService = getXService("NEAR");
|
|
1192
|
+
nearXService.walletSelector.disconnect();
|
|
1193
|
+
break;
|
|
1194
|
+
}
|
|
1106
1195
|
default: {
|
|
1107
1196
|
const xService = getXService(xChainType);
|
|
1108
1197
|
const xConnectorId = xConnections[xChainType]?.xConnectorId;
|
|
@@ -1265,6 +1354,13 @@ function useWalletProvider(spokeChainId) {
|
|
|
1265
1354
|
connection: solanaXService.connection
|
|
1266
1355
|
});
|
|
1267
1356
|
}
|
|
1357
|
+
case "NEAR": {
|
|
1358
|
+
const nearXService = xService;
|
|
1359
|
+
if (!nearXService.walletSelector) {
|
|
1360
|
+
return void 0;
|
|
1361
|
+
}
|
|
1362
|
+
return new NearWalletProvider({ wallet: nearXService.walletSelector });
|
|
1363
|
+
}
|
|
1268
1364
|
default:
|
|
1269
1365
|
return void 0;
|
|
1270
1366
|
}
|