@sodax/wallet-sdk-react 1.2.6-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.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 INJECTIVE chains.
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 INJECTIVE chains.
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
  }