@sodax/wallet-sdk-react 1.3.1-beta → 1.4.1-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 +182 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +35 -5
- package/dist/index.d.ts +35 -5
- package/dist/index.mjs +180 -17
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -3
- package/src/Hydrate.ts +11 -1
- package/src/SodaxWalletProvider.tsx +1 -1
- package/src/actions/getXService.ts +3 -0
- package/src/hooks/useWalletProvider.ts +36 -3
- package/src/hooks/useXConnectors.ts +15 -2
- package/src/index.ts +1 -0
- package/src/useXWagmiStore.ts +6 -1
- package/src/utils/index.ts +1 -0
- package/src/xchains/stacks/StacksXConnector.ts +63 -0
- package/src/xchains/stacks/StacksXService.ts +59 -0
- package/src/xchains/stacks/constants.ts +42 -0
- package/src/xchains/stacks/index.ts +4 -0
- package/src/xchains/stacks/useStacksXConnectors.ts +7 -0
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChainId, ChainType, XToken, IBitcoinWalletProvider, BtcWalletAddressType, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, INearWalletProvider, RpcConfig } from '@sodax/types';
|
|
1
|
+
import { ChainId, ChainType, XToken, IBitcoinWalletProvider, BtcWalletAddressType, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, INearWalletProvider, IStacksWalletProvider, RpcConfig } from '@sodax/types';
|
|
2
2
|
export { BtcWalletAddressType } from '@sodax/types';
|
|
3
3
|
import { AddressPurpose } from 'sats-connect';
|
|
4
4
|
import { Config, Connector } from 'wagmi';
|
|
@@ -11,6 +11,8 @@ import { WalletContextState } from '@solana/wallet-adapter-react';
|
|
|
11
11
|
import { StellarWalletsKit } from '@creit.tech/stellar-wallets-kit';
|
|
12
12
|
import * as StellarSdk from '@stellar/stellar-sdk';
|
|
13
13
|
import { SorobanRpc, Transaction, Memo, MemoType, Operation, FeeBumpTransaction } from '@stellar/stellar-sdk';
|
|
14
|
+
import { StacksNetwork } from '@stacks/network';
|
|
15
|
+
import { StacksProvider } from '@stacks/connect';
|
|
14
16
|
import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';
|
|
15
17
|
import * as immer from 'immer';
|
|
16
18
|
import * as zustand_middleware from 'zustand/middleware';
|
|
@@ -379,9 +381,37 @@ declare class SuiXConnector extends XConnector {
|
|
|
379
381
|
get icon(): any;
|
|
380
382
|
}
|
|
381
383
|
|
|
384
|
+
declare class StacksXService extends XService {
|
|
385
|
+
private static instance;
|
|
386
|
+
network: StacksNetwork | undefined;
|
|
387
|
+
private constructor();
|
|
388
|
+
static getInstance(): StacksXService;
|
|
389
|
+
getBalance(address: string | undefined, xToken: XToken): Promise<bigint>;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
interface StacksProviderConfig {
|
|
393
|
+
/** The provider ID matching the window path, e.g. 'LeatherProvider' or 'XverseProviders.BitcoinProvider' */
|
|
394
|
+
id: string;
|
|
395
|
+
name: string;
|
|
396
|
+
icon: string;
|
|
397
|
+
installUrl?: string;
|
|
398
|
+
}
|
|
399
|
+
declare class StacksXConnector extends XConnector {
|
|
400
|
+
private readonly config;
|
|
401
|
+
constructor(config: StacksProviderConfig);
|
|
402
|
+
connect(): Promise<XAccount | undefined>;
|
|
403
|
+
disconnect(): Promise<void>;
|
|
404
|
+
get icon(): string;
|
|
405
|
+
getProvider(): StacksProvider | undefined;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
declare const STACKS_PROVIDERS: StacksProviderConfig[];
|
|
409
|
+
|
|
410
|
+
declare function useStacksXConnectors(): StacksXConnector[];
|
|
411
|
+
|
|
382
412
|
declare function useXAccount(chainIdentifier?: ChainType | ChainId): XAccount;
|
|
383
413
|
|
|
384
|
-
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "NEAR" | "BITCOIN", XAccount>>;
|
|
414
|
+
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "STACKS" | "NEAR" | "BITCOIN", XAccount>>;
|
|
385
415
|
|
|
386
416
|
/**
|
|
387
417
|
* Hook for connecting to various blockchain wallets across different chains
|
|
@@ -441,7 +471,7 @@ declare function useXConnection(xChainType: ChainType | undefined): XConnection
|
|
|
441
471
|
* - Stellar: Uses custom Stellar connectors
|
|
442
472
|
* - Solana: Uses Solana wallet adapters (filtered to installed wallets only)
|
|
443
473
|
*
|
|
444
|
-
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR')
|
|
474
|
+
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR' | 'STACKS')
|
|
445
475
|
* @returns An array of XConnector instances compatible with the specified chain type
|
|
446
476
|
*/
|
|
447
477
|
declare function useXConnectors(xChainType: ChainType | undefined): XConnector[];
|
|
@@ -535,7 +565,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
535
565
|
* const walletProvider = useWalletProvider('sui');
|
|
536
566
|
* ```
|
|
537
567
|
*/
|
|
538
|
-
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | IBitcoinWalletProvider | INearWalletProvider | undefined;
|
|
568
|
+
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | IBitcoinWalletProvider | INearWalletProvider | IStacksWalletProvider | undefined;
|
|
539
569
|
|
|
540
570
|
type SignMessageReturnType = `0x${string}` | Uint8Array | string | undefined;
|
|
541
571
|
declare function useXSignMessage(): UseMutationResult<SignMessageReturnType, Error, {
|
|
@@ -574,4 +604,4 @@ declare const SodaxWalletProvider: ({ children, rpcConfig }: {
|
|
|
574
604
|
rpcConfig: RpcConfig;
|
|
575
605
|
}) => React.JSX.Element;
|
|
576
606
|
|
|
577
|
-
export { BitcoinXConnector, BitcoinXService, type CurrencyKey, EvmXConnector, EvmXService, IconHanaXConnector, IconXService, InjectiveKelprXConnector, InjectiveMetamaskXConnector, InjectiveXService, OKXXConnector, SodaxWalletProvider, SolanaXConnector, SolanaXService, StellarWalletsKitXConnector, StellarXService, SuiXConnector, SuiXService, UnisatXConnector, WalletId, type XAccount, type XConnection, XConnector, XService, XverseXConnector, getWagmiChainId, getXChainType, getXService, isNativeToken, switchEthereumChain, useBitcoinXConnectors, useEvmSwitchChain, useWalletProvider, useXAccount, useXAccounts, useXBalances, useXConnect, useXConnection, useXConnectors, useXDisconnect, useXService, useXSignMessage, useXWagmiStore };
|
|
607
|
+
export { BitcoinXConnector, BitcoinXService, type CurrencyKey, EvmXConnector, EvmXService, IconHanaXConnector, IconXService, InjectiveKelprXConnector, InjectiveMetamaskXConnector, InjectiveXService, OKXXConnector, STACKS_PROVIDERS, SodaxWalletProvider, SolanaXConnector, SolanaXService, type StacksProviderConfig, StacksXConnector, StacksXService, StellarWalletsKitXConnector, StellarXService, SuiXConnector, SuiXService, UnisatXConnector, WalletId, type XAccount, type XConnection, XConnector, XService, XverseXConnector, getWagmiChainId, getXChainType, getXService, isNativeToken, switchEthereumChain, useBitcoinXConnectors, useEvmSwitchChain, useStacksXConnectors, useWalletProvider, useXAccount, useXAccounts, useXBalances, useXConnect, useXConnection, useXConnectors, useXDisconnect, useXService, useXSignMessage, useXWagmiStore };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChainId, ChainType, XToken, IBitcoinWalletProvider, BtcWalletAddressType, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, INearWalletProvider, RpcConfig } from '@sodax/types';
|
|
1
|
+
import { ChainId, ChainType, XToken, IBitcoinWalletProvider, BtcWalletAddressType, IEvmWalletProvider, ISuiWalletProvider, IIconWalletProvider, IInjectiveWalletProvider, IStellarWalletProvider, ISolanaWalletProvider, INearWalletProvider, IStacksWalletProvider, RpcConfig } from '@sodax/types';
|
|
2
2
|
export { BtcWalletAddressType } from '@sodax/types';
|
|
3
3
|
import { AddressPurpose } from 'sats-connect';
|
|
4
4
|
import { Config, Connector } from 'wagmi';
|
|
@@ -11,6 +11,8 @@ import { WalletContextState } from '@solana/wallet-adapter-react';
|
|
|
11
11
|
import { StellarWalletsKit } from '@creit.tech/stellar-wallets-kit';
|
|
12
12
|
import * as StellarSdk from '@stellar/stellar-sdk';
|
|
13
13
|
import { SorobanRpc, Transaction, Memo, MemoType, Operation, FeeBumpTransaction } from '@stellar/stellar-sdk';
|
|
14
|
+
import { StacksNetwork } from '@stacks/network';
|
|
15
|
+
import { StacksProvider } from '@stacks/connect';
|
|
14
16
|
import { UseMutationResult, UseQueryResult } from '@tanstack/react-query';
|
|
15
17
|
import * as immer from 'immer';
|
|
16
18
|
import * as zustand_middleware from 'zustand/middleware';
|
|
@@ -379,9 +381,37 @@ declare class SuiXConnector extends XConnector {
|
|
|
379
381
|
get icon(): any;
|
|
380
382
|
}
|
|
381
383
|
|
|
384
|
+
declare class StacksXService extends XService {
|
|
385
|
+
private static instance;
|
|
386
|
+
network: StacksNetwork | undefined;
|
|
387
|
+
private constructor();
|
|
388
|
+
static getInstance(): StacksXService;
|
|
389
|
+
getBalance(address: string | undefined, xToken: XToken): Promise<bigint>;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
interface StacksProviderConfig {
|
|
393
|
+
/** The provider ID matching the window path, e.g. 'LeatherProvider' or 'XverseProviders.BitcoinProvider' */
|
|
394
|
+
id: string;
|
|
395
|
+
name: string;
|
|
396
|
+
icon: string;
|
|
397
|
+
installUrl?: string;
|
|
398
|
+
}
|
|
399
|
+
declare class StacksXConnector extends XConnector {
|
|
400
|
+
private readonly config;
|
|
401
|
+
constructor(config: StacksProviderConfig);
|
|
402
|
+
connect(): Promise<XAccount | undefined>;
|
|
403
|
+
disconnect(): Promise<void>;
|
|
404
|
+
get icon(): string;
|
|
405
|
+
getProvider(): StacksProvider | undefined;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
declare const STACKS_PROVIDERS: StacksProviderConfig[];
|
|
409
|
+
|
|
410
|
+
declare function useStacksXConnectors(): StacksXConnector[];
|
|
411
|
+
|
|
382
412
|
declare function useXAccount(chainIdentifier?: ChainType | ChainId): XAccount;
|
|
383
413
|
|
|
384
|
-
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "NEAR" | "BITCOIN", XAccount>>;
|
|
414
|
+
declare function useXAccounts(): Partial<Record<"ICON" | "EVM" | "INJECTIVE" | "SUI" | "STELLAR" | "SOLANA" | "STACKS" | "NEAR" | "BITCOIN", XAccount>>;
|
|
385
415
|
|
|
386
416
|
/**
|
|
387
417
|
* Hook for connecting to various blockchain wallets across different chains
|
|
@@ -441,7 +471,7 @@ declare function useXConnection(xChainType: ChainType | undefined): XConnection
|
|
|
441
471
|
* - Stellar: Uses custom Stellar connectors
|
|
442
472
|
* - Solana: Uses Solana wallet adapters (filtered to installed wallets only)
|
|
443
473
|
*
|
|
444
|
-
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR')
|
|
474
|
+
* @param xChainType - The blockchain type to get connectors for ('EVM' | 'SUI' | 'STELLAR' | 'SOLANA' | 'NEAR' | 'STACKS')
|
|
445
475
|
* @returns An array of XConnector instances compatible with the specified chain type
|
|
446
476
|
*/
|
|
447
477
|
declare function useXConnectors(xChainType: ChainType | undefined): XConnector[];
|
|
@@ -535,7 +565,7 @@ declare const useEvmSwitchChain: (expectedXChainId: ChainId) => UseEvmSwitchChai
|
|
|
535
565
|
* const walletProvider = useWalletProvider('sui');
|
|
536
566
|
* ```
|
|
537
567
|
*/
|
|
538
|
-
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | IBitcoinWalletProvider | INearWalletProvider | undefined;
|
|
568
|
+
declare function useWalletProvider(spokeChainId: ChainId | undefined): IEvmWalletProvider | ISuiWalletProvider | IIconWalletProvider | IInjectiveWalletProvider | IStellarWalletProvider | ISolanaWalletProvider | IBitcoinWalletProvider | INearWalletProvider | IStacksWalletProvider | undefined;
|
|
539
569
|
|
|
540
570
|
type SignMessageReturnType = `0x${string}` | Uint8Array | string | undefined;
|
|
541
571
|
declare function useXSignMessage(): UseMutationResult<SignMessageReturnType, Error, {
|
|
@@ -574,4 +604,4 @@ declare const SodaxWalletProvider: ({ children, rpcConfig }: {
|
|
|
574
604
|
rpcConfig: RpcConfig;
|
|
575
605
|
}) => React.JSX.Element;
|
|
576
606
|
|
|
577
|
-
export { BitcoinXConnector, BitcoinXService, type CurrencyKey, EvmXConnector, EvmXService, IconHanaXConnector, IconXService, InjectiveKelprXConnector, InjectiveMetamaskXConnector, InjectiveXService, OKXXConnector, SodaxWalletProvider, SolanaXConnector, SolanaXService, StellarWalletsKitXConnector, StellarXService, SuiXConnector, SuiXService, UnisatXConnector, WalletId, type XAccount, type XConnection, XConnector, XService, XverseXConnector, getWagmiChainId, getXChainType, getXService, isNativeToken, switchEthereumChain, useBitcoinXConnectors, useEvmSwitchChain, useWalletProvider, useXAccount, useXAccounts, useXBalances, useXConnect, useXConnection, useXConnectors, useXDisconnect, useXService, useXSignMessage, useXWagmiStore };
|
|
607
|
+
export { BitcoinXConnector, BitcoinXService, type CurrencyKey, EvmXConnector, EvmXService, IconHanaXConnector, IconXService, InjectiveKelprXConnector, InjectiveMetamaskXConnector, InjectiveXService, OKXXConnector, STACKS_PROVIDERS, SodaxWalletProvider, SolanaXConnector, SolanaXService, type StacksProviderConfig, StacksXConnector, StacksXService, StellarWalletsKitXConnector, StellarXService, SuiXConnector, SuiXService, UnisatXConnector, WalletId, type XAccount, type XConnection, XConnector, XService, XverseXConnector, getWagmiChainId, getXChainType, getXService, isNativeToken, switchEthereumChain, useBitcoinXConnectors, useEvmSwitchChain, useStacksXConnectors, useWalletProvider, useXAccount, useXAccounts, useXBalances, useXConnect, useXConnection, useXConnectors, useXDisconnect, useXService, useXSignMessage, useXWagmiStore };
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { detectBitcoinAddressType, 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
2
|
import { NearConnector } from '@hot-labs/near-connect';
|
|
3
3
|
import { JsonRpcProvider } from 'near-api-js';
|
|
4
|
+
import { fetchCallReadOnlyFunction, Cl } from '@stacks/transactions';
|
|
5
|
+
import { networkFrom, createNetwork } from '@stacks/network';
|
|
4
6
|
import { AddressPurpose, MessageSigningProtocols } from 'sats-connect';
|
|
5
7
|
import React2, { useMemo, useCallback, useEffect } from 'react';
|
|
6
8
|
import { useCurrentAccount, useCurrentWallet, useConnectWallet, useWallets, useDisconnectWallet, useSignPersonalMessage, SuiClientProvider, WalletProvider, useSuiClient } from '@mysten/dapp-kit';
|
|
@@ -25,9 +27,10 @@ import { StellarWalletsKit, allowAllModules, WalletNetwork } from '@creit.tech/s
|
|
|
25
27
|
import * as StellarSdk from '@stellar/stellar-sdk';
|
|
26
28
|
import { SorobanRpc, Address, Contract, TimeoutInfinite, scValToBigInt, xdr } from '@stellar/stellar-sdk';
|
|
27
29
|
import * as IconSdkRaw from 'icon-sdk-js';
|
|
30
|
+
import { request as request$1, disconnect } from '@stacks/connect';
|
|
28
31
|
import { QueryClient, useMutation, useQuery, QueryClientProvider } from '@tanstack/react-query';
|
|
29
32
|
import { mainnet as mainnet$1 } from 'viem/chains';
|
|
30
|
-
import { NearWalletProvider, SolanaWalletProvider, StellarWalletProvider, InjectiveWalletProvider, IconWalletProvider, SuiWalletProvider, EvmWalletProvider } from '@sodax/wallet-sdk-core';
|
|
33
|
+
import { StacksWalletProvider, NearWalletProvider, SolanaWalletProvider, StellarWalletProvider, InjectiveWalletProvider, IconWalletProvider, SuiWalletProvider, EvmWalletProvider } from '@sodax/wallet-sdk-core';
|
|
31
34
|
import { getFullnodeUrl } from '@mysten/sui/client';
|
|
32
35
|
import { UnsafeBurnerWalletAdapter } from '@solana/wallet-adapter-wallets';
|
|
33
36
|
|
|
@@ -121,6 +124,50 @@ var NearXService = class _NearXService extends XService {
|
|
|
121
124
|
return BigInt(res ?? 0);
|
|
122
125
|
}
|
|
123
126
|
};
|
|
127
|
+
var StacksXService = class _StacksXService extends XService {
|
|
128
|
+
constructor() {
|
|
129
|
+
super("STACKS");
|
|
130
|
+
this.network = networkFrom("mainnet");
|
|
131
|
+
}
|
|
132
|
+
static getInstance() {
|
|
133
|
+
if (!_StacksXService.instance) {
|
|
134
|
+
_StacksXService.instance = new _StacksXService();
|
|
135
|
+
}
|
|
136
|
+
return _StacksXService.instance;
|
|
137
|
+
}
|
|
138
|
+
async getBalance(address, xToken) {
|
|
139
|
+
if (!address) return 0n;
|
|
140
|
+
if (xToken.symbol === "STX") {
|
|
141
|
+
const url = `${this.network?.client.baseUrl}/extended/v1/address/${address}/balances`;
|
|
142
|
+
try {
|
|
143
|
+
const response = await fetch(url);
|
|
144
|
+
if (!response.ok) {
|
|
145
|
+
throw new Error(`Error fetching data: ${response.statusText}`);
|
|
146
|
+
}
|
|
147
|
+
const data = await response.json();
|
|
148
|
+
return BigInt(data.stx.balance);
|
|
149
|
+
} catch (error) {
|
|
150
|
+
console.error("Error fetching STX balance:", error);
|
|
151
|
+
return 0n;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
const [contractAddress, contractName] = xToken.address.split(".");
|
|
155
|
+
try {
|
|
156
|
+
const result = await fetchCallReadOnlyFunction({
|
|
157
|
+
contractAddress,
|
|
158
|
+
contractName,
|
|
159
|
+
functionName: "get-balance",
|
|
160
|
+
functionArgs: [Cl.principal(address)],
|
|
161
|
+
network: this.network,
|
|
162
|
+
senderAddress: address
|
|
163
|
+
});
|
|
164
|
+
return result.value.value;
|
|
165
|
+
} catch (error) {
|
|
166
|
+
console.error("Error fetching token balance:", error);
|
|
167
|
+
return 0n;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
124
171
|
|
|
125
172
|
// src/actions/getXService.ts
|
|
126
173
|
function getXService(xChainType) {
|
|
@@ -141,6 +188,8 @@ function getXService(xChainType) {
|
|
|
141
188
|
return StellarXService.getInstance();
|
|
142
189
|
case "NEAR":
|
|
143
190
|
return NearXService.getInstance();
|
|
191
|
+
case "STACKS":
|
|
192
|
+
return StacksXService.getInstance();
|
|
144
193
|
default:
|
|
145
194
|
throw new Error(`Unsupported chain type: ${xChainType}`);
|
|
146
195
|
}
|
|
@@ -173,6 +222,8 @@ var isNativeToken = (xToken) => {
|
|
|
173
222
|
// solana
|
|
174
223
|
"CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA",
|
|
175
224
|
// stellar
|
|
225
|
+
"ST000000000000000000002AMW42H.nativetoken",
|
|
226
|
+
// stacks
|
|
176
227
|
"0:0"
|
|
177
228
|
// bitcoin
|
|
178
229
|
];
|
|
@@ -329,10 +380,10 @@ var XverseWalletProvider = class {
|
|
|
329
380
|
return 1;
|
|
330
381
|
}
|
|
331
382
|
async signTransaction(psbtBase64, finalize = false) {
|
|
332
|
-
const { request:
|
|
383
|
+
const { request: request3 } = await import('sats-connect');
|
|
333
384
|
const inputCount = this.countPsbtInputs(psbtBase64);
|
|
334
385
|
const signingIndexes = Array.from({ length: inputCount }, (_, i) => i);
|
|
335
|
-
const response = await
|
|
386
|
+
const response = await request3("signPsbt", {
|
|
336
387
|
psbt: psbtBase64,
|
|
337
388
|
broadcast: false,
|
|
338
389
|
signInputs: {
|
|
@@ -349,8 +400,8 @@ var XverseWalletProvider = class {
|
|
|
349
400
|
return result.psbt;
|
|
350
401
|
}
|
|
351
402
|
async signEcdsaMessage(message) {
|
|
352
|
-
const { request:
|
|
353
|
-
const response = await
|
|
403
|
+
const { request: request3 } = await import('sats-connect');
|
|
404
|
+
const response = await request3("signMessage", {
|
|
354
405
|
address: this.address,
|
|
355
406
|
message,
|
|
356
407
|
protocol: MessageSigningProtocols.ECDSA
|
|
@@ -361,8 +412,8 @@ var XverseWalletProvider = class {
|
|
|
361
412
|
return response.result.signature;
|
|
362
413
|
}
|
|
363
414
|
async signBip322Message(message) {
|
|
364
|
-
const { request:
|
|
365
|
-
const response = await
|
|
415
|
+
const { request: request3 } = await import('sats-connect');
|
|
416
|
+
const response = await request3("signMessage", {
|
|
366
417
|
address: this.address,
|
|
367
418
|
message,
|
|
368
419
|
protocol: MessageSigningProtocols.BIP322
|
|
@@ -373,8 +424,8 @@ var XverseWalletProvider = class {
|
|
|
373
424
|
return response.result.signature;
|
|
374
425
|
}
|
|
375
426
|
async sendBitcoin(toAddress, satoshis) {
|
|
376
|
-
const { request:
|
|
377
|
-
const response = await
|
|
427
|
+
const { request: request3 } = await import('sats-connect');
|
|
428
|
+
const response = await request3("sendTransfer", {
|
|
378
429
|
recipients: [
|
|
379
430
|
{
|
|
380
431
|
address: toAddress,
|
|
@@ -412,8 +463,8 @@ var XverseXConnector = class _XverseXConnector extends BitcoinXConnector {
|
|
|
412
463
|
if (!_XverseXConnector.isAvailable()) {
|
|
413
464
|
throw new Error("Xverse wallet is not installed");
|
|
414
465
|
}
|
|
415
|
-
const { request:
|
|
416
|
-
const response = await
|
|
466
|
+
const { request: request3 } = await import('sats-connect');
|
|
467
|
+
const response = await request3("getAccounts", {
|
|
417
468
|
purposes: [this.addressPurpose],
|
|
418
469
|
message: "Connect to Sodax"
|
|
419
470
|
});
|
|
@@ -1163,11 +1214,82 @@ var IconHanaXConnector = class extends XConnector {
|
|
|
1163
1214
|
return "https://raw.githubusercontent.com/balancednetwork/icons/master/wallets/hana.svg";
|
|
1164
1215
|
}
|
|
1165
1216
|
};
|
|
1217
|
+
function getProviderFromId(id) {
|
|
1218
|
+
return id.split(".").reduce((acc, part) => acc?.[part], window);
|
|
1219
|
+
}
|
|
1220
|
+
var StacksXConnector = class extends XConnector {
|
|
1221
|
+
constructor(config) {
|
|
1222
|
+
super("STACKS", config.name, config.id);
|
|
1223
|
+
this.config = config;
|
|
1224
|
+
}
|
|
1225
|
+
async connect() {
|
|
1226
|
+
const provider = this.getProvider();
|
|
1227
|
+
if (!provider) {
|
|
1228
|
+
if (this.config.installUrl) {
|
|
1229
|
+
window.open(this.config.installUrl, "_blank");
|
|
1230
|
+
}
|
|
1231
|
+
return void 0;
|
|
1232
|
+
}
|
|
1233
|
+
const response = await request$1({ provider }, "stx_getAddresses");
|
|
1234
|
+
const stxAddress = response.addresses.find((a) => a.purpose === "stacks");
|
|
1235
|
+
if (!stxAddress) {
|
|
1236
|
+
return void 0;
|
|
1237
|
+
}
|
|
1238
|
+
return {
|
|
1239
|
+
address: stxAddress.address,
|
|
1240
|
+
xChainType: this.xChainType
|
|
1241
|
+
};
|
|
1242
|
+
}
|
|
1243
|
+
async disconnect() {
|
|
1244
|
+
disconnect();
|
|
1245
|
+
}
|
|
1246
|
+
get icon() {
|
|
1247
|
+
return this.config.icon;
|
|
1248
|
+
}
|
|
1249
|
+
getProvider() {
|
|
1250
|
+
return getProviderFromId(this.config.id);
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1253
|
+
|
|
1254
|
+
// src/xchains/stacks/constants.ts
|
|
1255
|
+
var LEATHER_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMjYuODM4NyIgZmlsbD0iIzEyMTAwRiIvPgo8cGF0aCBkPSJNNzQuOTE3MSA1Mi43MTE0QzgyLjQ3NjYgNTEuNTQwOCA5My40MDg3IDQzLjU4MDQgOTMuNDA4NyAzNy4zNzYxQzkzLjQwODcgMzUuNTAzMSA5MS44OTY4IDM0LjIxNTQgODkuNjg3MSAzNC4yMTU0Qzg1LjUwMDQgMzQuMjE1NCA3OC40MDYxIDQwLjUzNjggNzQuOTE3MSA1Mi43MTE0Wk0zOS45MTEgODMuNDk5MUMzMC4wMjU2IDgzLjQ5OTEgMjkuMjExNSA5My4zMzI0IDM5LjA5NjkgOTMuMzMyNEM0My41MTYzIDkzLjMzMjQgNDguODY2MSA5MS41NzY0IDUxLjY1NzMgODguNDE1N0M0Ny41ODY4IDg0LjkwMzggNDQuMjE0MSA4My40OTkxIDM5LjkxMSA4My40OTkxWk0xMDIuODI5IDc5LjI4NDhDMTAzLjQxIDk1Ljc5MDcgOTUuMDM2OSAxMDUuMDM5IDgwLjg0ODQgMTA1LjAzOUM3Mi40NzQ4IDEwNS4wMzkgNjguMjg4MSAxMDEuODc4IDU5LjMzMyA5Ni4wMjQ5QzU0LjY4MSAxMDEuMTc2IDQ1Ljg0MjMgMTA1LjAzOSAzOC41MTU0IDEwNS4wMzlDMTMuMjc4NSAxMDUuMDM5IDE0LjMyNTIgNzIuODQ2MyA0MC4wMjczIDcyLjg0NjNDNDUuMzc3MSA3Mi44NDYzIDQ5LjkxMjggNzQuMjUxMSA1NS43Mjc3IDc3Ljg4TDU5LjU2NTYgNjQuNDE3N0M0My43NDg5IDYwLjA4NjQgMzUuODQwNSA0Ny45MTE4IDQzLjYzMjYgMzAuNDY5M0g1Ni4xOTI5QzQ5LjIxNSA0Mi4wNTg2IDUzLjk4MzIgNTEuNjU3OCA2Mi44MjIgNTIuNzExNEM2Ny41OTAzIDM1LjczNzIgNzcuODI0NiAyMi41MDkgOTEuNDMxNiAyMi41MDlDOTkuMTA3NCAyMi41MDkgMTA1LjE1NSAyNy41NDI4IDEwNS4xNTUgMzYuNjczN0MxMDUuMTU1IDUxLjMwNjYgODYuMDgxOSA2My4yNDcxIDcxLjY2MDcgNjQuNDE3N0w2NS43Mjk1IDg1LjM3MjFDNzIuNDc0OCA5My4yMTUzIDkxLjE5OSAxMDAuODI0IDkxLjE5OSA3OS4yODQ4SDEwMi44MjlaIiBmaWxsPSIjRjVGMUVEIi8+Cjwvc3ZnPgo=";
|
|
1256
|
+
var XVERSE_ICON = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIj48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGw9IiMxNzE3MTciIGQ9Ik0wIDBoNjAwdjYwMEgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGZpbGwtcnVsZT0ibm9uemVybyIgZD0iTTQ0MCA0MzUuNHYtNTFjMC0yLS44LTMuOS0yLjItNS4zTDIyMCAxNjIuMmE3LjYgNy42IDAgMCAwLTUuNC0yLjJoLTUxLjFjLTIuNSAwLTQuNiAyLTQuNiA0LjZ2NDcuM2MwIDIgLjggNCAyLjIgNS40bDc4LjIgNzcuOGE0LjYgNC42IDAgMCAxIDAgNi41bC03OSA3OC43Yy0xIC45LTEuNCAyLTEuNCAzLjJ2NTJjMCAyLjQgMiA0LjUgNC42IDQuNUgyNDljMi42IDAgNC42LTIgNC42LTQuNlY0MDVjMC0xLjIuNS0yLjQgMS40LTMuM2w0Mi40LTQyLjJhNC42IDQuNiAwIDAgMSA2LjQgMGw3OC43IDc4LjRhNy42IDcuNiAwIDAgMCA1LjQgMi4yaDQ3LjVjMi41IDAgNC42LTIgNC42LTQuNloiLz48cGF0aCBmaWxsPSIjRUU3QTMwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIGQ9Ik0zMjUuNiAyMjcuMmg0Mi44YzIuNiAwIDQuNiAyLjEgNC42IDQuNnY0Mi42YzAgNCA1IDYuMSA4IDMuMmw1OC43LTU4LjVjLjgtLjggMS4zLTIgMS4zLTMuMnYtNTEuMmMwLTIuNi0yLTQuNi00LjYtNC42TDM4NCAxNjBjLTEuMiAwLTIuNC41LTMuMyAxLjNsLTU4LjQgNTguMWE0LjYgNC42IDAgMCAwIDMuMiA3LjhaIi8+PC9nPjwvc3ZnPg==";
|
|
1257
|
+
var ASIGNA_ICON = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0ibm9uZSI+PHBhdGggZmlsbD0iIzAwMDEwMCIgZD0iTTAgMGgzMnYzMkgweiIvPjxwYXRoIGZpbGw9InVybCgjYSkiIGQ9Ik0xNS4xMSA1LjU1YTMgMyAwIDAgMC0xLjgyIDEuM2wtLjA1LjA4LS40My43Mi0uMDcuMTEtLjUuODUtLjA1LjA5LTEuMjkgMi4xOC0uMDQuMDctLjQ3LjgtLjA2LjEtLjQ2Ljc4LS4wNy4xMS0xLjYzIDIuNzYtLjA3LjExLS4zOC42Ni0uMDUuMDgtLjczIDEuMjQtLjM1LjYtLjQuNjctLjA1LjA5TDUuMSAyMC43bC0uMTEuMTgtLjE0LjIzLS4wNy4xMy0uMzMuNTUtLjA0LjA3di4wMWExLjI2IDEuMjYgMCAwIDAtLjE0LjQ3IDEuMzEgMS4zMSAwIDAgMCAxLjI0IDEuNGgxLjVsLjA1LS4wNi4wNC0uMDYuODctMS4yMS4wNS0uMDguNzctMS4wNy4wNS0uMDcuNC0uNTcuMDUtLjA2LjI0LS4zNGExLjUyIDEuNTIgMCAwIDEgMS4zOS0uNjIgMS41IDEuNSAwIDAgMSAuNjQuMiAxLjQ3IDEuNDcgMCAwIDEgLjczIDEuMjcgMS40NCAxLjQ0IDAgMCAxLS4yNy44NGwtLjYzLjg4LS4wNS4wNy0uMzIuNDUtLjA2LjA4LS4wOC4xMi0uMTIuMTYtLjA1LjA4aDIuMTNhMi4zMiAyLjMyIDAgMCAwIDEuNzctLjk2bDEuMTgtMS42My43Ny0xLjA4IDEuMy0xLjhhMS4yNCAxLjI0IDAgMCAxIC41NS0uNDNsLjA4LS4wM2ExLjMgMS4zIDAgMCAxIC4zLS4wNiAxLjI4IDEuMjggMCAwIDEgMS4xNS41NGwuMTEuMmExLjEzIDEuMTMgMCAwIDEgLjEuNDEgMS4xOSAxLjE5IDAgMCAxLS4yMy43N2wtLjAzLjA1LS41Ny44LS43Ljk4LS4yNy4zN2ExLjIyIDEuMjIgMCAwIDAtLjIuNSAxLjA1IDEuMDUgMCAwIDAtLjAyLjIzdi4wNmExLjE3IDEuMTcgMCAwIDAgLjE0LjQzbC4wMi4wNS4wNy4xYTEuNDQgMS40NCAwIDAgMCAuMS4xMWwuMDUuMDYuMDEuMDFhMS44IDEuOCAwIDAgMCAuMTQuMWMwIC4wMi4wMi4wMy4wNC4wM2ExIDEgMCAwIDAgLjA4LjA1bC4wNy4wNGExLjI1IDEuMjUgMCAwIDAgLjUuMWg2LjljLjEgMCAuMi0uMDEuMjktLjAzbC4wNi0uMDJhMS4yNyAxLjI3IDAgMCAwIC4yNy0uMS41Ny41NyAwIDAgMCAuMDctLjAzIDEuMjEgMS4yMSAwIDAgMCAuMjYtLjE5bC4wOC0uMDdhLjkyLjkyIDAgMCAwIC4xNS0uMTkgMS41NSAxLjU1IDAgMCAwIC4wOS0uMTdsLjAyLS4wNWExLjIyIDEuMjIgMCAwIDAgLjA4LS4yNnYtLjA0bC4wMi0uMDh2LS4wOGExLjMyIDEuMzIgMCAwIDAtLjItLjc0bC0xLjYtMi42NC0uMDYtLjEtLjItLjMyLS4zMy0uNTR2LS4wMWwtLjA1LS4wOC0xLjMtMi4xNS0uMDctLjEtLjA0LS4wNi0uOC0xLjMyLS4wNC0uMDctLjItLjM0LS4xLS4xNC0uMS0uMTYtLjUzLS45LS4xMy0uMi0uMDktLjE0LTIuMTctMy41Ny0uMDQtLjA3LS43Mi0xLjE5LS4wNS0uMDctLjQtLjY1YTIuNjUgMi42NSAwIDAgMC0uMy0uNCAyLjk2IDIuOTYgMCAwIDAtLjk3LS43NCAzLjA0IDMuMDQgMCAwIDAtMS4zLS4zYy0uMjUgMC0uNS4wNC0uNzQuMVoiLz48cGF0aCBmaWxsPSJ1cmwoI2IpIiBkPSJNMTkgMTYuM2E1LjQ1IDUuNDUgMCAwIDAtLjgzIDEuNTZsLS4wNC4xNWExLjM2IDEuMzYgMCAwIDEgLjI4LS4xNiAxLjI0IDEuMjQgMCAwIDEgLjM4LS4wOGguMWExLjI4IDEuMjggMCAwIDEgMS4wNS41NGMuMDQuMDYuMDguMTMuMS4yYTEuMjQgMS4yNCAwIDAgMSAuMDkuMjcgMS4xOSAxLjE5IDAgMCAxLS4yLjkxbC0uMDQuMDUtLjU3Ljc5LS43Ljk5LS4yNy4zN2ExLjIzIDEuMjMgMCAwIDAtLjIuNDIgMS4wNiAxLjA2IDAgMCAwLS4wMi4zMXYuMDZhMS4xNyAxLjE3IDAgMCAwIC4xNi40Ny45My45MyAwIDAgMCAuMDcuMSAxLjUgMS41IDAgMCAwIC4xLjEybC4wNS4wNmguMDFhMS45NCAxLjk0IDAgMCAwIC4wOS4wOCAxIDEgMCAwIDAgLjE3LjFsLjA3LjA0YTEuMjUgMS4yNSAwIDAgMCAuNS4xaDYuOWMuMSAwIC4yIDAgLjI4LS4wMmwuMDctLjAyYTEuMzIgMS4zMiAwIDAgMCAuMzQtLjEzbC4xNi0uMS4wMy0uMDNhMS4yOSAxLjI5IDAgMCAwIC4yLS4yIDIuNDMgMi40MyAwIDAgMCAuMTItLjE3Yy4wMy0uMDMuMDUtLjA4LjA3LS4xMmwuMDItLjA1YTEuMjEgMS4yMSAwIDAgMCAuMDktLjN2LS4wOGwuMDEtLjA5YTEuMzIgMS4zMiAwIDAgMC0uMi0uNzNsLTEuNi0yLjY0LS4wNi0uMS0uMi0uMzItLjMzLS41NHYtLjAybC0uMDUtLjA3LTEuMy0yLjE1LS4xMi0uMDctLjA3LS4wNGE0Ljk0IDQuOTQgMCAwIDAtMi40Ni0uNjdjLTEuMDMgMC0xLjc2LjU3LTIuMjYgMS4yWiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0xMi4yOSAyMS4wOGMwIC4yOS0uMDkuNTgtLjI3Ljg0bC0xLjMxIDEuODRIN2wyLjUyLTMuNTNhMS41NCAxLjU0IDAgMCAxIDIuMS0uMzZjLjQzLjI4LjY2Ljc0LjY2IDEuMloiLz48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMTEuMTYgMjEuMjVhLjU2LjU2IDAgMCAxLS41Ny41NS41Ni41NiAwIDAgMS0uNTctLjU2LjU2LjU2IDAgMCAxIC41Ny0uNTUuNTYuNTYgMCAwIDEgLjU3LjU2WiIvPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjE1LjIzIiB4Mj0iMTkuMyIgeTE9IjI1Ljc4IiB5Mj0iNi4xMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM2NTIyRjQiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzlCNkJGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1ODVGRiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iMjIuNTkiIHgyPSIyNC44IiB5MT0iMjQuNzEiIHkyPSIxNS41MyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiM0MjFGOEIiLz48c3RvcCBvZmZzZXQ9Ii41NSIgc3RvcC1jb2xvcj0iIzcyMzBGRiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzk3NzNGRiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjwvc3ZnPg==";
|
|
1258
|
+
var FORDEFI_ICON = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDIiIGhlaWdodD0iNDIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHBhdGggZmlsbD0iIzEwMTExNCIgZD0iTTAgMGg0MnY0MkgweiIvPgogIDxwYXRoIGQ9Ik0xOS40NyAyNi44OUg1djMuNTdhNC41NyA0LjU3IDAgMCAwIDQuNTggNC41N2g1LjgzbDQuMDYtOC4xNFoiIGZpbGw9IiM3OTk0RkYiLz4KICA8cGF0aCBkPSJNNSAxNy40aDI3LjU4bC0zLjIgNi43OEg1VjE3LjRaIiBmaWxsPSIjNDg2REZGIi8+CiAgPHBhdGggZD0iTTE0LjY3IDdINXY3LjY4aDMzVjdoLTkuNjd2NS43NGgtMlY3aC05LjY3djUuNzRoLTEuOTlWN1oiIGZpbGw9IiM1Q0QxRkEiLz4KPC9zdmc+Cg==";
|
|
1259
|
+
var STACKS_PROVIDERS = [
|
|
1260
|
+
{
|
|
1261
|
+
id: "LeatherProvider",
|
|
1262
|
+
name: "Leather",
|
|
1263
|
+
icon: LEATHER_ICON,
|
|
1264
|
+
installUrl: "https://chrome.google.com/webstore/detail/hiro-wallet/ldinpeekobnhjjdofggfgjlcehhmanlj"
|
|
1265
|
+
},
|
|
1266
|
+
{
|
|
1267
|
+
id: "XverseProviders.BitcoinProvider",
|
|
1268
|
+
name: "Xverse Wallet",
|
|
1269
|
+
icon: XVERSE_ICON,
|
|
1270
|
+
installUrl: "https://chrome.google.com/webstore/detail/xverse-wallet/idnnbdplmphpflfnlkomgpfbpcgelopg"
|
|
1271
|
+
},
|
|
1272
|
+
{
|
|
1273
|
+
id: "AsignaProvider",
|
|
1274
|
+
name: "Asigna Multisig",
|
|
1275
|
+
icon: ASIGNA_ICON,
|
|
1276
|
+
installUrl: "https://stx.asigna.io/"
|
|
1277
|
+
},
|
|
1278
|
+
{
|
|
1279
|
+
id: "FordefiProviders.UtxoProvider",
|
|
1280
|
+
name: "Fordefi",
|
|
1281
|
+
icon: FORDEFI_ICON,
|
|
1282
|
+
installUrl: "https://chromewebstore.google.com/detail/fordefi/hcmehenccjdmfbojapcbcofkgdpbnlle"
|
|
1283
|
+
}
|
|
1284
|
+
];
|
|
1285
|
+
function useStacksXConnectors() {
|
|
1286
|
+
return useMemo(() => STACKS_PROVIDERS.map((config) => new StacksXConnector(config)), []);
|
|
1287
|
+
}
|
|
1166
1288
|
|
|
1167
1289
|
// src/useXWagmiStore.ts
|
|
1168
1290
|
var initXServices = () => {
|
|
1169
1291
|
const xServices = {};
|
|
1170
|
-
["EVM", "BITCOIN", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON", "NEAR"].forEach((key) => {
|
|
1292
|
+
["EVM", "BITCOIN", "INJECTIVE", "STELLAR", "SUI", "SOLANA", "ICON", "NEAR", "STACKS"].forEach((key) => {
|
|
1171
1293
|
const xChainType = key;
|
|
1172
1294
|
switch (xChainType) {
|
|
1173
1295
|
// EVM, SUI, Solana wallet connectors are supported by their own sdks. wagmi, @mysten/dapp-kit, @solana/wallet-adapter-react.
|
|
@@ -1208,6 +1330,10 @@ var initXServices = () => {
|
|
|
1208
1330
|
xServices[xChainType] = NearXService.getInstance();
|
|
1209
1331
|
xServices[xChainType].setXConnectors([]);
|
|
1210
1332
|
break;
|
|
1333
|
+
case "STACKS":
|
|
1334
|
+
xServices[xChainType] = StacksXService.getInstance();
|
|
1335
|
+
xServices[xChainType].setXConnectors(STACKS_PROVIDERS.map((config) => new StacksXConnector(config)));
|
|
1336
|
+
break;
|
|
1211
1337
|
}
|
|
1212
1338
|
});
|
|
1213
1339
|
return xServices;
|
|
@@ -1495,6 +1621,7 @@ function useXConnectors(xChainType) {
|
|
|
1495
1621
|
const suiWallets = useWallets();
|
|
1496
1622
|
const { data: stellarXConnectors } = useStellarXConnectors();
|
|
1497
1623
|
const { data: nearXConnectors } = useNearXConnectors();
|
|
1624
|
+
const stacksXConnectors = useStacksXConnectors();
|
|
1498
1625
|
const { wallets: solanaWallets } = useWallet();
|
|
1499
1626
|
const xConnectors = useMemo(() => {
|
|
1500
1627
|
if (!xChainType || !xService) {
|
|
@@ -1511,10 +1638,21 @@ function useXConnectors(xChainType) {
|
|
|
1511
1638
|
return solanaWallets.filter((wallet) => wallet.readyState === "Installed").map((wallet) => new SolanaXConnector(wallet));
|
|
1512
1639
|
case "NEAR":
|
|
1513
1640
|
return nearXConnectors || [];
|
|
1641
|
+
case "STACKS":
|
|
1642
|
+
return stacksXConnectors;
|
|
1514
1643
|
default:
|
|
1515
1644
|
return xService.getXConnectors();
|
|
1516
1645
|
}
|
|
1517
|
-
}, [
|
|
1646
|
+
}, [
|
|
1647
|
+
xService,
|
|
1648
|
+
xChainType,
|
|
1649
|
+
evmConnectors,
|
|
1650
|
+
suiWallets,
|
|
1651
|
+
stellarXConnectors,
|
|
1652
|
+
solanaWallets,
|
|
1653
|
+
nearXConnectors,
|
|
1654
|
+
stacksXConnectors
|
|
1655
|
+
]);
|
|
1518
1656
|
return xConnectors;
|
|
1519
1657
|
}
|
|
1520
1658
|
function useXDisconnect() {
|
|
@@ -1635,6 +1773,8 @@ function useWalletProvider(spokeChainId) {
|
|
|
1635
1773
|
const { data: evmWalletClient } = useWalletClient();
|
|
1636
1774
|
const xService = useXService(getXChainType(spokeChainId));
|
|
1637
1775
|
const xAccount = useXAccount(spokeChainId);
|
|
1776
|
+
const stacksConnection = useXConnection("STACKS");
|
|
1777
|
+
const stacksConnectors = useXConnectors("STACKS");
|
|
1638
1778
|
const xConnection = useXConnection(xChainType);
|
|
1639
1779
|
return useMemo(() => {
|
|
1640
1780
|
switch (xChainType) {
|
|
@@ -1715,10 +1855,27 @@ function useWalletProvider(spokeChainId) {
|
|
|
1715
1855
|
}
|
|
1716
1856
|
return new NearWalletProvider({ wallet: nearXService.walletSelector });
|
|
1717
1857
|
}
|
|
1858
|
+
case "STACKS": {
|
|
1859
|
+
const address = xAccount.address;
|
|
1860
|
+
if (!address) {
|
|
1861
|
+
return void 0;
|
|
1862
|
+
}
|
|
1863
|
+
const activeStacksConnector = stacksConnectors.find((c) => c.id === stacksConnection?.xConnectorId);
|
|
1864
|
+
return new StacksWalletProvider({ address, provider: activeStacksConnector?.getProvider() });
|
|
1865
|
+
}
|
|
1718
1866
|
default:
|
|
1719
1867
|
return void 0;
|
|
1720
1868
|
}
|
|
1721
|
-
}, [
|
|
1869
|
+
}, [
|
|
1870
|
+
xChainType,
|
|
1871
|
+
evmPublicClient,
|
|
1872
|
+
evmWalletClient,
|
|
1873
|
+
xService,
|
|
1874
|
+
xAccount,
|
|
1875
|
+
stacksConnection,
|
|
1876
|
+
stacksConnectors,
|
|
1877
|
+
xConnection
|
|
1878
|
+
]);
|
|
1722
1879
|
}
|
|
1723
1880
|
function useXSignMessage() {
|
|
1724
1881
|
const { signMessage } = useWallet();
|
|
@@ -1782,7 +1939,7 @@ function useBitcoinXConnectors() {
|
|
|
1782
1939
|
return xService?.getXConnectors() || [];
|
|
1783
1940
|
}, [xService]);
|
|
1784
1941
|
}
|
|
1785
|
-
var Hydrate = () => {
|
|
1942
|
+
var Hydrate = ({ rpcConfig }) => {
|
|
1786
1943
|
const suiClient = useSuiClient();
|
|
1787
1944
|
useEffect(() => {
|
|
1788
1945
|
if (suiClient) {
|
|
@@ -1819,6 +1976,12 @@ var Hydrate = () => {
|
|
|
1819
1976
|
EvmXService.getInstance().wagmiConfig = wagmiConfig;
|
|
1820
1977
|
}
|
|
1821
1978
|
}, [wagmiConfig]);
|
|
1979
|
+
useEffect(() => {
|
|
1980
|
+
StacksXService.getInstance().network = createNetwork({
|
|
1981
|
+
network: "mainnet",
|
|
1982
|
+
client: { baseUrl: rpcConfig.stacks ?? "https://api.mainnet.hiro.so" }
|
|
1983
|
+
});
|
|
1984
|
+
}, [rpcConfig.stacks]);
|
|
1822
1985
|
return null;
|
|
1823
1986
|
};
|
|
1824
1987
|
|
|
@@ -1873,7 +2036,7 @@ var SodaxWalletProvider = ({ children, rpcConfig }) => {
|
|
|
1873
2036
|
return createWagmiConfig(rpcConfig);
|
|
1874
2037
|
}, [rpcConfig]);
|
|
1875
2038
|
const wallets = useMemo(() => [new UnsafeBurnerWalletAdapter()], []);
|
|
1876
|
-
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,
|
|
2039
|
+
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, { rpcConfig }), children))))));
|
|
1877
2040
|
};
|
|
1878
2041
|
reconnectIcon();
|
|
1879
2042
|
reconnectStellar();
|
|
@@ -1888,6 +2051,6 @@ var WalletId = /* @__PURE__ */ ((WalletId2) => {
|
|
|
1888
2051
|
return WalletId2;
|
|
1889
2052
|
})(WalletId || {});
|
|
1890
2053
|
|
|
1891
|
-
export { BitcoinXConnector, BitcoinXService, EvmXConnector, EvmXService, IconHanaXConnector, IconXService, InjectiveKelprXConnector, InjectiveMetamaskXConnector, InjectiveXService, OKXXConnector, SodaxWalletProvider, SolanaXConnector, SolanaXService, StellarWalletsKitXConnector, StellarXService, SuiXConnector, SuiXService, UnisatXConnector, WalletId, XConnector, XService, XverseXConnector, getWagmiChainId, getXChainType, getXService, isNativeToken, switchEthereumChain, useBitcoinXConnectors, useEvmSwitchChain, useWalletProvider, useXAccount, useXAccounts, useXBalances, useXConnect, useXConnection, useXConnectors, useXDisconnect, useXService, useXSignMessage, useXWagmiStore };
|
|
2054
|
+
export { BitcoinXConnector, BitcoinXService, EvmXConnector, EvmXService, IconHanaXConnector, IconXService, InjectiveKelprXConnector, InjectiveMetamaskXConnector, InjectiveXService, OKXXConnector, STACKS_PROVIDERS, SodaxWalletProvider, SolanaXConnector, SolanaXService, StacksXConnector, StacksXService, StellarWalletsKitXConnector, StellarXService, SuiXConnector, SuiXService, UnisatXConnector, WalletId, XConnector, XService, XverseXConnector, getWagmiChainId, getXChainType, getXService, isNativeToken, switchEthereumChain, useBitcoinXConnectors, useEvmSwitchChain, useStacksXConnectors, useWalletProvider, useXAccount, useXAccounts, useXBalances, useXConnect, useXConnection, useXConnectors, useXDisconnect, useXService, useXSignMessage, useXWagmiStore };
|
|
1892
2055
|
//# sourceMappingURL=index.mjs.map
|
|
1893
2056
|
//# sourceMappingURL=index.mjs.map
|