@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.cjs CHANGED
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var types = require('@sodax/types');
4
+ var nearConnect = require('@hot-labs/near-connect');
5
+ var nearApiJs = require('near-api-js');
4
6
  var viem = require('viem');
5
7
  var actions = require('wagmi/actions');
6
8
  var wagmi = require('wagmi');
@@ -62,26 +64,6 @@ function getXChainType(xChainId) {
62
64
  return types.baseChainInfo[xChainId].type;
63
65
  }
64
66
 
65
- // src/actions/getXService.ts
66
- function getXService(xChainType) {
67
- switch (xChainType) {
68
- case "EVM":
69
- return EvmXService.getInstance();
70
- case "SUI":
71
- return SuiXService.getInstance();
72
- case "SOLANA":
73
- return SolanaXService.getInstance();
74
- case "ICON":
75
- return IconXService.getInstance();
76
- case "INJECTIVE":
77
- return InjectiveXService.getInstance();
78
- case "STELLAR":
79
- return StellarXService.getInstance();
80
- default:
81
- throw new Error(`Unsupported chain type: ${xChainType}`);
82
- }
83
- }
84
-
85
67
  // src/core/XService.ts
86
68
  var XService = class {
87
69
  constructor(xChainType) {
@@ -137,6 +119,55 @@ var XService = class {
137
119
  return this.getXConnectors().find((xConnector) => xConnector.id === xConnectorId);
138
120
  }
139
121
  };
122
+ var NearXService = class _NearXService extends XService {
123
+ constructor() {
124
+ super("NEAR");
125
+ this.walletSelector = new nearConnect.NearConnector({
126
+ network: "mainnet",
127
+ logger: console,
128
+ autoConnect: true,
129
+ excludedWallets: ["okx-wallet"]
130
+ });
131
+ }
132
+ static getInstance() {
133
+ if (!_NearXService.instance) {
134
+ _NearXService.instance = new _NearXService();
135
+ }
136
+ return _NearXService.instance;
137
+ }
138
+ async getBalance(address, xToken) {
139
+ const url = "https://1rpc.io/near";
140
+ const provider = new nearApiJs.JsonRpcProvider({ url });
141
+ if (xToken.symbol === "NEAR") {
142
+ const account = await provider.viewAccount({ accountId: address ?? "" });
143
+ return BigInt(account.amount);
144
+ }
145
+ const res = await provider.callFunction({ contractId: xToken.address, method: "ft_balance_of", args: { account_id: address } });
146
+ return BigInt(res ?? 0);
147
+ }
148
+ };
149
+
150
+ // src/actions/getXService.ts
151
+ function getXService(xChainType) {
152
+ switch (xChainType) {
153
+ case "EVM":
154
+ return EvmXService.getInstance();
155
+ case "SUI":
156
+ return SuiXService.getInstance();
157
+ case "SOLANA":
158
+ return SolanaXService.getInstance();
159
+ case "ICON":
160
+ return IconXService.getInstance();
161
+ case "INJECTIVE":
162
+ return InjectiveXService.getInstance();
163
+ case "STELLAR":
164
+ return StellarXService.getInstance();
165
+ case "NEAR":
166
+ return NearXService.getInstance();
167
+ default:
168
+ throw new Error(`Unsupported chain type: ${xChainType}`);
169
+ }
170
+ }
140
171
 
141
172
  // src/core/XConnector.ts
142
173
  var XConnector = class {
@@ -840,7 +871,7 @@ var SuiXConnector = class extends XConnector {
840
871
  };
841
872
  var initXServices = () => {
842
873
  const xServices = {};
843
- ["EVM", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON"].forEach((key) => {
874
+ ["EVM", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON", "NEAR"].forEach((key) => {
844
875
  const xChainType = key;
845
876
  switch (xChainType) {
846
877
  // EVM, SUI, Solana wallet connectors are supported by their own sdks. wagmi, @mysten/dapp-kit, @solana/wallet-adapter-react.
@@ -869,6 +900,10 @@ var initXServices = () => {
869
900
  xServices[xChainType] = IconXService.getInstance();
870
901
  xServices[xChainType].setXConnectors([new IconHanaXConnector()]);
871
902
  break;
903
+ case "NEAR":
904
+ xServices[xChainType] = NearXService.getInstance();
905
+ xServices[xChainType].setXConnectors([]);
906
+ break;
872
907
  }
873
908
  });
874
909
  return xServices;
@@ -1084,12 +1119,59 @@ function useXService(xChainType) {
1084
1119
  return xService;
1085
1120
  }
1086
1121
 
1122
+ // src/xchains/near/NearXConnector.ts
1123
+ var NearXConnector = class extends XConnector {
1124
+ constructor(wallet) {
1125
+ super("NEAR", wallet.manifest.name, wallet.manifest.id);
1126
+ this._wallet = wallet;
1127
+ }
1128
+ getXService() {
1129
+ return NearXService.getInstance();
1130
+ }
1131
+ async connect() {
1132
+ const walletSelector = this.getXService().walletSelector;
1133
+ const wallet = await walletSelector.connect({ walletId: this._wallet.manifest.id });
1134
+ const accounts = await wallet.getAccounts();
1135
+ if (accounts.length === 0 || accounts[0] === void 0) {
1136
+ return void 0;
1137
+ }
1138
+ return {
1139
+ address: accounts[0].accountId,
1140
+ xChainType: this.xChainType
1141
+ };
1142
+ }
1143
+ async disconnect() {
1144
+ const walletSelector = this.getXService().walletSelector;
1145
+ await walletSelector.disconnect(this._wallet);
1146
+ }
1147
+ get icon() {
1148
+ return this._wallet.manifest.icon;
1149
+ }
1150
+ };
1151
+
1152
+ // src/xchains/near/useNearXConnectors.ts
1153
+ var useNearXConnectors = () => {
1154
+ const xService = useXService("NEAR");
1155
+ return reactQuery.useQuery({
1156
+ queryKey: ["near-wallets"],
1157
+ queryFn: async () => {
1158
+ if (!xService) {
1159
+ return [];
1160
+ }
1161
+ await xService.walletSelector.whenManifestLoaded;
1162
+ const wallets = xService.walletSelector.availableWallets;
1163
+ return wallets.map((wallet) => new NearXConnector(wallet));
1164
+ }
1165
+ });
1166
+ };
1167
+
1087
1168
  // src/hooks/useXConnectors.ts
1088
1169
  function useXConnectors(xChainType) {
1089
1170
  const xService = useXService(xChainType);
1090
1171
  const evmConnectors = wagmi.useConnectors();
1091
1172
  const suiWallets = dappKit.useWallets();
1092
1173
  const { data: stellarXConnectors } = useStellarXConnectors();
1174
+ const { data: nearXConnectors } = useNearXConnectors();
1093
1175
  const { wallets: solanaWallets } = walletAdapterReact.useWallet();
1094
1176
  const xConnectors = React2.useMemo(() => {
1095
1177
  if (!xChainType || !xService) {
@@ -1104,10 +1186,12 @@ function useXConnectors(xChainType) {
1104
1186
  return stellarXConnectors || [];
1105
1187
  case "SOLANA":
1106
1188
  return solanaWallets.filter((wallet) => wallet.readyState === "Installed").map((wallet) => new SolanaXConnector(wallet));
1189
+ case "NEAR":
1190
+ return nearXConnectors || [];
1107
1191
  default:
1108
1192
  return xService.getXConnectors();
1109
1193
  }
1110
- }, [xService, xChainType, evmConnectors, suiWallets, stellarXConnectors, solanaWallets]);
1194
+ }, [xService, xChainType, evmConnectors, suiWallets, stellarXConnectors, solanaWallets, nearXConnectors]);
1111
1195
  return xConnectors;
1112
1196
  }
1113
1197
  function useXDisconnect() {
@@ -1128,6 +1212,11 @@ function useXDisconnect() {
1128
1212
  case "SOLANA":
1129
1213
  await solanaWallet.disconnect();
1130
1214
  break;
1215
+ case "NEAR": {
1216
+ const nearXService = getXService("NEAR");
1217
+ nearXService.walletSelector.disconnect();
1218
+ break;
1219
+ }
1131
1220
  default: {
1132
1221
  const xService = getXService(xChainType);
1133
1222
  const xConnectorId = xConnections[xChainType]?.xConnectorId;
@@ -1290,6 +1379,13 @@ function useWalletProvider(spokeChainId) {
1290
1379
  connection: solanaXService.connection
1291
1380
  });
1292
1381
  }
1382
+ case "NEAR": {
1383
+ const nearXService = xService;
1384
+ if (!nearXService.walletSelector) {
1385
+ return void 0;
1386
+ }
1387
+ return new walletSdkCore.NearWalletProvider({ wallet: nearXService.walletSelector });
1388
+ }
1293
1389
  default:
1294
1390
  return void 0;
1295
1391
  }