@gala-chain/launchpad-sdk 8.0.2 → 9.0.0-rc.0
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/CHANGELOG.md +362 -0
- package/EXAMPLES.md +95 -681
- package/MIGRATING-TO-9.0.md +301 -0
- package/README.md +46 -17
- package/dist/LaunchpadSDK.d.ts +150 -419
- package/dist/LaunchpadSDK.d.ts.map +1 -1
- package/dist/api/LaunchpadAPI.d.ts +37 -43
- package/dist/api/LaunchpadAPI.d.ts.map +1 -1
- package/dist/auth/SessionAuthService.d.ts.map +1 -1
- package/dist/auth/SignatureAuth.d.ts +2 -2
- package/dist/auth/SignatureAuth.d.ts.map +1 -1
- package/dist/auth/types.d.ts +1 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/config/environments.d.ts +7 -2
- package/dist/config/environments.d.ts.map +1 -1
- package/dist/constants/decimals.d.ts +0 -23
- package/dist/constants/decimals.d.ts.map +1 -1
- package/dist/constants/endpoints.d.ts +0 -7
- package/dist/constants/endpoints.d.ts.map +1 -1
- package/dist/constants/version.generated.d.ts +1 -1
- package/dist/constants/version.generated.d.ts.map +1 -1
- package/dist/helpers/sdk.d.ts.map +1 -1
- package/dist/index.browser.d.ts +11 -23
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.esm.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.node.d.ts +4 -5
- package/dist/index.node.d.ts.map +1 -1
- package/dist/launchpad/bundle-submission.d.ts +1 -9
- package/dist/launchpad/bundle-submission.d.ts.map +1 -1
- package/dist/launchpad/sell-fee-ceiling.d.ts +66 -0
- package/dist/launchpad/sell-fee-ceiling.d.ts.map +1 -0
- package/dist/launchpad/transport.d.ts +2 -1
- package/dist/launchpad/transport.d.ts.map +1 -1
- package/dist/launchpad/writes.d.ts +30 -2
- package/dist/launchpad/writes.d.ts.map +1 -1
- package/dist/native.cjs +1 -1
- package/dist/native.d.ts +3 -4
- package/dist/native.d.ts.map +1 -1
- package/dist/native.esm.js +1 -1
- package/dist/schemas/launchpad.d.ts +4 -4
- package/dist/schemas/launchpad.d.ts.map +1 -1
- package/dist/schemas/user.d.ts +0 -15
- package/dist/schemas/user.d.ts.map +1 -1
- package/dist/services/AbstractCacheService.d.ts +2 -2
- package/dist/services/BundleService.d.ts +9 -1
- package/dist/services/BundleService.d.ts.map +1 -1
- package/dist/services/GalaChainBalanceService.d.ts +17 -89
- package/dist/services/GalaChainBalanceService.d.ts.map +1 -1
- package/dist/services/GalaChainLockService.d.ts +19 -20
- package/dist/services/GalaChainLockService.d.ts.map +1 -1
- package/dist/services/GalaChainService.d.ts +28 -64
- package/dist/services/GalaChainService.d.ts.map +1 -1
- package/dist/services/GalaChainTokenService.d.ts +25 -53
- package/dist/services/GalaChainTokenService.d.ts.map +1 -1
- package/dist/services/GalaChainTransferService.d.ts +42 -41
- package/dist/services/GalaChainTransferService.d.ts.map +1 -1
- package/dist/services/LaunchpadPriceService.d.ts +66 -0
- package/dist/services/LaunchpadPriceService.d.ts.map +1 -0
- package/dist/services/NftCollectionService.d.ts +22 -6
- package/dist/services/NftCollectionService.d.ts.map +1 -1
- package/dist/services/TokenResolverService.d.ts +5 -5
- package/dist/services/TokenResolverService.d.ts.map +1 -1
- package/dist/services/TradingQuotesService.d.ts +3 -5
- package/dist/services/TradingQuotesService.d.ts.map +1 -1
- package/dist/services/gateway-transport.d.ts +32 -0
- package/dist/services/gateway-transport.d.ts.map +1 -0
- package/dist/services/gateway-writes.d.ts +83 -0
- package/dist/services/gateway-writes.d.ts.map +1 -0
- package/dist/signing/index.d.ts +2 -3
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/signers.d.ts +23 -11
- package/dist/signing/signers.d.ts.map +1 -1
- package/dist/signing/types.d.ts +7 -10
- package/dist/signing/types.d.ts.map +1 -1
- package/dist/types/burn.dto.d.ts +4 -2
- package/dist/types/burn.dto.d.ts.map +1 -1
- package/dist/types/common.d.ts +2 -23
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/dto.d.ts +0 -5
- package/dist/types/dto.d.ts.map +1 -1
- package/dist/types/launchpad.dto.d.ts +0 -269
- package/dist/types/launchpad.dto.d.ts.map +1 -1
- package/dist/types/lock.dto.d.ts +12 -7
- package/dist/types/lock.dto.d.ts.map +1 -1
- package/dist/types/options.dto.d.ts +8 -34
- package/dist/types/options.dto.d.ts.map +1 -1
- package/dist/types/session-auth.dto.d.ts +2 -4
- package/dist/types/session-auth.dto.d.ts.map +1 -1
- package/dist/types/user.dto.d.ts +7 -62
- package/dist/types/user.dto.d.ts.map +1 -1
- package/dist/utils/address-formatter.d.ts +10 -2
- package/dist/utils/address-formatter.d.ts.map +1 -1
- package/dist/utils/agent-config.d.ts +9 -4
- package/dist/utils/agent-config.d.ts.map +1 -1
- package/dist/utils/auto-pagination.d.ts +6 -239
- package/dist/utils/auto-pagination.d.ts.map +1 -1
- package/dist/utils/bignumber-helpers.d.ts +3 -2
- package/dist/utils/bignumber-helpers.d.ts.map +1 -1
- package/dist/utils/delimiter-parser.d.ts +0 -13
- package/dist/utils/delimiter-parser.d.ts.map +1 -1
- package/dist/utils/error-patterns.d.ts +0 -47
- package/dist/utils/error-patterns.d.ts.map +1 -1
- package/dist/utils/error-wrapper.d.ts +5 -5
- package/dist/utils/errors.d.ts +0 -308
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/http.d.ts +15 -3
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/token-format-converter.d.ts +1 -1
- package/dist/utils/token-parser.d.ts +6 -127
- package/dist/utils/token-parser.d.ts.map +1 -1
- package/dist/utils/token-stringification.d.ts +7 -7
- package/dist/utils/token-stringification.d.ts.map +1 -1
- package/dist/utils/tokenNameNormalizer.d.ts +2 -2
- package/dist/utils/tokenNormalizer.d.ts +5 -29
- package/dist/utils/tokenNormalizer.d.ts.map +1 -1
- package/dist/utils/trade-quote.d.ts +32 -0
- package/dist/utils/trade-quote.d.ts.map +1 -0
- package/dist/utils/unique-key-generator.d.ts +7 -134
- package/dist/utils/unique-key-generator.d.ts.map +1 -1
- package/dist/utils/validation-helpers.d.ts +3 -5
- package/dist/utils/validation-helpers.d.ts.map +1 -1
- package/package.json +47 -87
- package/dist/api/dto/BurnTokensDto.d.ts +0 -77
- package/dist/api/dto/BurnTokensDto.d.ts.map +0 -1
- package/dist/api/dto/LockTokenDto.d.ts +0 -85
- package/dist/api/dto/LockTokenDto.d.ts.map +0 -1
- package/dist/api/dto/TransferTokenDto.d.ts +0 -64
- package/dist/api/dto/TransferTokenDto.d.ts.map +0 -1
- package/dist/api/dto/UnlockTokenDto.d.ts +0 -74
- package/dist/api/dto/UnlockTokenDto.d.ts.map +0 -1
- package/dist/bridge/BridgeService.d.ts +0 -484
- package/dist/bridge/BridgeService.d.ts.map +0 -1
- package/dist/bridge/GalaConnectClient.d.ts +0 -170
- package/dist/bridge/GalaConnectClient.d.ts.map +0 -1
- package/dist/bridge/constants/index.d.ts +0 -7
- package/dist/bridge/constants/index.d.ts.map +0 -1
- package/dist/bridge/constants/tokens.d.ts +0 -212
- package/dist/bridge/constants/tokens.d.ts.map +0 -1
- package/dist/bridge/index.d.ts +0 -24
- package/dist/bridge/index.d.ts.map +0 -1
- package/dist/bridge/public-types.d.ts +0 -2
- package/dist/bridge/public-types.d.ts.map +0 -1
- package/dist/bridge/strategies/BridgeStrategy.d.ts +0 -204
- package/dist/bridge/strategies/BridgeStrategy.d.ts.map +0 -1
- package/dist/bridge/strategies/EthereumBridgeStrategy.d.ts +0 -178
- package/dist/bridge/strategies/EthereumBridgeStrategy.d.ts.map +0 -1
- package/dist/bridge/strategies/SolanaBridgeStrategy.d.ts +0 -236
- package/dist/bridge/strategies/SolanaBridgeStrategy.d.ts.map +0 -1
- package/dist/bridge/types/bridge.dto.d.ts +0 -772
- package/dist/bridge/types/bridge.dto.d.ts.map +0 -1
- package/dist/bridge/types/bridgeable-token.dto.d.ts +0 -209
- package/dist/bridge/types/bridgeable-token.dto.d.ts.map +0 -1
- package/dist/bridge/types/eip712.d.ts +0 -66
- package/dist/bridge/types/eip712.d.ts.map +0 -1
- package/dist/bridge/types/index.d.ts +0 -8
- package/dist/bridge/types/index.d.ts.map +0 -1
- package/dist/bridge/utils/RateLimiter.d.ts +0 -34
- package/dist/bridge/utils/RateLimiter.d.ts.map +0 -1
- package/dist/bridge/utils/address-formatter.d.ts +0 -25
- package/dist/bridge/utils/address-formatter.d.ts.map +0 -1
- package/dist/bridge/utils/addressValidation.d.ts +0 -200
- package/dist/bridge/utils/addressValidation.d.ts.map +0 -1
- package/dist/bridge/utils/balanceHelpers.d.ts +0 -215
- package/dist/bridge/utils/balanceHelpers.d.ts.map +0 -1
- package/dist/bridge/utils/bridgeErrors.d.ts +0 -98
- package/dist/bridge/utils/bridgeErrors.d.ts.map +0 -1
- package/dist/bridge/utils/bridgeOutHelpers.d.ts +0 -68
- package/dist/bridge/utils/bridgeOutHelpers.d.ts.map +0 -1
- package/dist/bridge/utils/bridgePayload.d.ts +0 -98
- package/dist/bridge/utils/bridgePayload.d.ts.map +0 -1
- package/dist/bridge/utils/bridgeStatusParser.d.ts +0 -76
- package/dist/bridge/utils/bridgeStatusParser.d.ts.map +0 -1
- package/dist/bridge/utils/eip712Helpers.d.ts +0 -66
- package/dist/bridge/utils/eip712Helpers.d.ts.map +0 -1
- package/dist/bridge/utils/index.d.ts +0 -19
- package/dist/bridge/utils/index.d.ts.map +0 -1
- package/dist/bridge/utils/retry.d.ts +0 -112
- package/dist/bridge/utils/retry.d.ts.map +0 -1
- package/dist/bridge/utils/strategyDelegation.d.ts +0 -126
- package/dist/bridge/utils/strategyDelegation.d.ts.map +0 -1
- package/dist/bridge/utils/tokenIdUtils.d.ts +0 -86
- package/dist/bridge/utils/tokenIdUtils.d.ts.map +0 -1
- package/dist/bridge/utils/tokenMath.d.ts +0 -39
- package/dist/bridge/utils/tokenMath.d.ts.map +0 -1
- package/dist/bridge/utils/tokenMetadataResolver.d.ts +0 -97
- package/dist/bridge/utils/tokenMetadataResolver.d.ts.map +0 -1
- package/dist/helpers/wallet.d.ts +0 -151
- package/dist/helpers/wallet.d.ts.map +0 -1
- package/dist/react/WalletContext.d.ts +0 -60
- package/dist/react/WalletContext.d.ts.map +0 -1
- package/dist/react/index.d.ts +0 -65
- package/dist/react/index.d.ts.map +0 -1
- package/dist/react/types.d.ts +0 -76
- package/dist/react/types.d.ts.map +0 -1
- package/dist/react/useWallet.d.ts +0 -123
- package/dist/react/useWallet.d.ts.map +0 -1
- package/dist/react/useWalletConnection.d.ts +0 -89
- package/dist/react/useWalletConnection.d.ts.map +0 -1
- package/dist/react/useWalletDetection.d.ts +0 -81
- package/dist/react/useWalletDetection.d.ts.map +0 -1
- package/dist/react.cjs +0 -1
- package/dist/react.esm.js +0 -1
- package/dist/services/AbstractTokenFetchService.d.ts +0 -150
- package/dist/services/AbstractTokenFetchService.d.ts.map +0 -1
- package/dist/services/BatchedCacheService.d.ts +0 -133
- package/dist/services/BatchedCacheService.d.ts.map +0 -1
- package/dist/services/BridgeableTokenCache.d.ts +0 -120
- package/dist/services/BridgeableTokenCache.d.ts.map +0 -1
- package/dist/services/BridgeableTokenService.d.ts +0 -218
- package/dist/services/BridgeableTokenService.d.ts.map +0 -1
- package/dist/services/DexService.d.ts +0 -440
- package/dist/services/DexService.d.ts.map +0 -1
- package/dist/services/NetworkKeyedCacheService.d.ts +0 -185
- package/dist/services/NetworkKeyedCacheService.d.ts.map +0 -1
- package/dist/services/PriceHistoryService.d.ts +0 -209
- package/dist/services/PriceHistoryService.d.ts.map +0 -1
- package/dist/services/WrapService.d.ts +0 -171
- package/dist/services/WrapService.d.ts.map +0 -1
- package/dist/services/WrappableTokenCache.d.ts +0 -100
- package/dist/services/WrappableTokenCache.d.ts.map +0 -1
- package/dist/services/WrappableTokenService.d.ts +0 -130
- package/dist/services/WrappableTokenService.d.ts.map +0 -1
- package/dist/setup.d.ts +0 -8
- package/dist/setup.d.ts.map +0 -1
- package/dist/signing/eip712.d.ts +0 -13
- package/dist/signing/eip712.d.ts.map +0 -1
- package/dist/tokens/transfers.d.ts +0 -95
- package/dist/tokens/transfers.d.ts.map +0 -1
- package/dist/types/galachain-api.types.d.ts +0 -297
- package/dist/types/galachain-api.types.d.ts.map +0 -1
- package/dist/types/priceHistory.dto.d.ts +0 -134
- package/dist/types/priceHistory.dto.d.ts.map +0 -1
- package/dist/types/token.types.d.ts +0 -359
- package/dist/types/token.types.d.ts.map +0 -1
- package/dist/types/wrappable-token.dto.d.ts +0 -305
- package/dist/types/wrappable-token.dto.d.ts.map +0 -1
- package/dist/utils/crypto-compat.d.ts +0 -40
- package/dist/utils/crypto-compat.d.ts.map +0 -1
- package/dist/utils/load-env.d.ts +0 -31
- package/dist/utils/load-env.d.ts.map +0 -1
- package/dist/utils/token-instance-key.d.ts +0 -57
- package/dist/utils/token-instance-key.d.ts.map +0 -1
- package/dist/utils/wallet.d.ts +0 -166
- package/dist/utils/wallet.d.ts.map +0 -1
- package/dist/wallet/ExternalWalletProvider.d.ts +0 -90
- package/dist/wallet/ExternalWalletProvider.d.ts.map +0 -1
- package/dist/wallet/GalaWalletProvider.d.ts +0 -122
- package/dist/wallet/GalaWalletProvider.d.ts.map +0 -1
- package/dist/wallet/PrivateKeyProvider.d.ts +0 -90
- package/dist/wallet/PrivateKeyProvider.d.ts.map +0 -1
- package/dist/wallet/detection.d.ts +0 -107
- package/dist/wallet/detection.d.ts.map +0 -1
- package/dist/wallet/event-handlers.d.ts +0 -50
- package/dist/wallet/event-handlers.d.ts.map +0 -1
- package/dist/wallet/index.d.ts +0 -51
- package/dist/wallet/index.d.ts.map +0 -1
- package/dist/wallet/signing-operation.d.ts +0 -19
- package/dist/wallet/signing-operation.d.ts.map +0 -1
- package/dist/wallet/typed-data-helpers.d.ts +0 -68
- package/dist/wallet/typed-data-helpers.d.ts.map +0 -1
- package/dist/wallet/types.d.ts +0 -267
- package/dist/wallet/types.d.ts.map +0 -1
- package/dist/wallet/utils.d.ts +0 -117
- package/dist/wallet/utils.d.ts.map +0 -1
- package/dist/wallet.cjs +0 -1
- package/dist/wallet.esm.js +0 -1
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wallet Context
|
|
3
|
-
*
|
|
4
|
-
* React context provider for managing wallet state across components.
|
|
5
|
-
* Provides connection state, detected wallets, and actions for connecting/disconnecting.
|
|
6
|
-
*
|
|
7
|
-
* @packageDocumentation
|
|
8
|
-
*/
|
|
9
|
-
import { type ReactNode } from 'react';
|
|
10
|
-
import type { WalletContextValue, WalletProviderProps } from './types';
|
|
11
|
-
/**
|
|
12
|
-
* React context for wallet state
|
|
13
|
-
*/
|
|
14
|
-
export declare const WalletContext: import("react").Context<WalletContextValue>;
|
|
15
|
-
/**
|
|
16
|
-
* Wallet context provider component
|
|
17
|
-
*
|
|
18
|
-
* Wraps your application to provide wallet state and actions to all child components.
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* import { WalletProvider, useWallet } from '@gala-chain/launchpad-sdk/react';
|
|
23
|
-
*
|
|
24
|
-
* function App() {
|
|
25
|
-
* return (
|
|
26
|
-
* <WalletProvider autoDetect onConnect={(addr) => console.log('Connected:', addr)}>
|
|
27
|
-
* <MyApp />
|
|
28
|
-
* </WalletProvider>
|
|
29
|
-
* );
|
|
30
|
-
* }
|
|
31
|
-
*
|
|
32
|
-
* function MyApp() {
|
|
33
|
-
* const { isConnected, address, detectedWallets, connectDetected } = useWallet();
|
|
34
|
-
*
|
|
35
|
-
* if (!isConnected) {
|
|
36
|
-
* return (
|
|
37
|
-
* <div>
|
|
38
|
-
* {detectedWallets.map(wallet => (
|
|
39
|
-
* <button key={wallet.rdns} onClick={() => connectDetected(wallet)}>
|
|
40
|
-
* Connect {wallet.name}
|
|
41
|
-
* </button>
|
|
42
|
-
* ))}
|
|
43
|
-
* </div>
|
|
44
|
-
* );
|
|
45
|
-
* }
|
|
46
|
-
*
|
|
47
|
-
* return <div>Connected: {address}</div>;
|
|
48
|
-
* }
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export declare function WalletProvider({ children, autoDetect, initialProvider, autoConnect, onConnect, onDisconnect, onError, }: WalletProviderProps): ReactNode;
|
|
52
|
-
/**
|
|
53
|
-
* Hook to access the wallet context
|
|
54
|
-
*
|
|
55
|
-
* Must be used within a WalletProvider.
|
|
56
|
-
*
|
|
57
|
-
* @throws Error if used outside of WalletProvider
|
|
58
|
-
*/
|
|
59
|
-
export declare function useWalletContext(): WalletContextValue;
|
|
60
|
-
//# sourceMappingURL=WalletContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"WalletContext.d.ts","sourceRoot":"","sources":["../../src/react/WalletContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAEV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AA6CjB;;GAEG;AACH,eAAO,MAAM,aAAa,6CAAyD,CAAC;AAOpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,UAAsB,EACtB,eAAe,EACf,WAAkB,EAClB,SAAS,EACT,YAAY,EACZ,OAAO,GACR,EAAE,mBAAmB,GAAG,SAAS,CA0MjC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAMrD"}
|
package/dist/react/index.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React Wallet Integration
|
|
3
|
-
*
|
|
4
|
-
* React hooks and components for wallet integration in React applications.
|
|
5
|
-
* Provides context-based state management, wallet detection, and connection handling.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```tsx
|
|
9
|
-
* import {
|
|
10
|
-
* WalletProvider,
|
|
11
|
-
* useWallet,
|
|
12
|
-
* useWalletConnection,
|
|
13
|
-
* useWalletDetection,
|
|
14
|
-
* } from '@gala-chain/launchpad-sdk/react';
|
|
15
|
-
*
|
|
16
|
-
* // Wrap your app with WalletProvider
|
|
17
|
-
* function App() {
|
|
18
|
-
* return (
|
|
19
|
-
* <WalletProvider autoDetect>
|
|
20
|
-
* <MyApp />
|
|
21
|
-
* </WalletProvider>
|
|
22
|
-
* );
|
|
23
|
-
* }
|
|
24
|
-
*
|
|
25
|
-
* // Use hooks in components
|
|
26
|
-
* function WalletButton() {
|
|
27
|
-
* const { isConnected, address, disconnect } = useWallet();
|
|
28
|
-
* const { wallets } = useWalletDetection();
|
|
29
|
-
* const { connectDetected, isConnecting } = useWalletConnection();
|
|
30
|
-
*
|
|
31
|
-
* if (isConnected) {
|
|
32
|
-
* return (
|
|
33
|
-
* <button onClick={disconnect}>
|
|
34
|
-
* {address?.slice(0, 6)}...{address?.slice(-4)}
|
|
35
|
-
* </button>
|
|
36
|
-
* );
|
|
37
|
-
* }
|
|
38
|
-
*
|
|
39
|
-
* return (
|
|
40
|
-
* <div>
|
|
41
|
-
* {wallets.map(wallet => (
|
|
42
|
-
* <button
|
|
43
|
-
* key={wallet.rdns}
|
|
44
|
-
* onClick={() => connectDetected(wallet)}
|
|
45
|
-
* disabled={isConnecting}
|
|
46
|
-
* >
|
|
47
|
-
* <img src={wallet.icon} alt="" />
|
|
48
|
-
* {wallet.name}
|
|
49
|
-
* </button>
|
|
50
|
-
* ))}
|
|
51
|
-
* </div>
|
|
52
|
-
* );
|
|
53
|
-
* }
|
|
54
|
-
* ```
|
|
55
|
-
*
|
|
56
|
-
* @packageDocumentation
|
|
57
|
-
*/
|
|
58
|
-
export { useWalletContext, WalletContext, WalletProvider } from './WalletContext';
|
|
59
|
-
export { useGalaAddress, useIsWalletConnected, useWallet, useWalletAddress, useWalletProvider, } from './useWallet';
|
|
60
|
-
export { useWalletConnection, type UseWalletConnectionReturn } from './useWalletConnection';
|
|
61
|
-
export { useWalletDetection, type UseWalletDetectionReturn } from './useWalletDetection';
|
|
62
|
-
export type { ConnectionStatus, WalletContextActions, WalletContextState, WalletContextValue, WalletProviderProps, } from './types';
|
|
63
|
-
export type { DetectedWallet, Eip6963ProviderInfo, WalletConnectionState, WalletProvider as WalletProviderInterface, } from '../wallet/types';
|
|
64
|
-
export { detectWallets, ExternalWalletProvider, KNOWN_WALLET_RDNS, PrivateKeyProvider, } from '../wallet';
|
|
65
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAGH,OAAO,EAAE,gBAAgB,EAAC,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjF,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,mBAAmB,EAAE,KAAK,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,KAAK,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGzF,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,IAAI,uBAAuB,GAC1C,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,WAAW,CAAC"}
|
package/dist/react/types.d.ts
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React Wallet Types
|
|
3
|
-
*
|
|
4
|
-
* Type definitions for the React wallet integration hooks and context.
|
|
5
|
-
*
|
|
6
|
-
* @packageDocumentation
|
|
7
|
-
*/
|
|
8
|
-
import type { ReactNode } from 'react';
|
|
9
|
-
import type { DetectedWallet, WalletProvider } from '../wallet/types';
|
|
10
|
-
/**
|
|
11
|
-
* Wallet context state
|
|
12
|
-
*/
|
|
13
|
-
export interface WalletContextState {
|
|
14
|
-
/** The currently connected wallet provider */
|
|
15
|
-
provider: WalletProvider | null;
|
|
16
|
-
/** The connected wallet address (0x format) */
|
|
17
|
-
address: string | null;
|
|
18
|
-
/** The connected wallet address in Gala format (eth|0x...) */
|
|
19
|
-
galaAddress: string | null;
|
|
20
|
-
/** Whether a wallet is currently connected */
|
|
21
|
-
isConnected: boolean;
|
|
22
|
-
/** Whether a connection is in progress */
|
|
23
|
-
isConnecting: boolean;
|
|
24
|
-
/** Whether wallets are being detected */
|
|
25
|
-
isDetecting: boolean;
|
|
26
|
-
/** Connection error if any */
|
|
27
|
-
error: Error | null;
|
|
28
|
-
/** List of detected wallets (EIP-6963) */
|
|
29
|
-
detectedWallets: DetectedWallet[];
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Wallet context actions
|
|
33
|
-
*/
|
|
34
|
-
export interface WalletContextActions {
|
|
35
|
-
/** Connect to a wallet using a provider */
|
|
36
|
-
connect: (provider: WalletProvider) => Promise<string>;
|
|
37
|
-
/** Connect to a detected wallet by its info */
|
|
38
|
-
connectDetected: (wallet: DetectedWallet) => Promise<string>;
|
|
39
|
-
/** Disconnect from the current wallet */
|
|
40
|
-
disconnect: () => Promise<void>;
|
|
41
|
-
/** Set the wallet provider directly (for external state management) */
|
|
42
|
-
setProvider: (provider: WalletProvider | null) => void;
|
|
43
|
-
/** Refresh the list of detected wallets */
|
|
44
|
-
refreshWallets: () => Promise<void>;
|
|
45
|
-
/** Clear any connection error */
|
|
46
|
-
clearError: () => void;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Full wallet context value
|
|
50
|
-
*/
|
|
51
|
-
export interface WalletContextValue extends WalletContextState, WalletContextActions {
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Wallet provider component props
|
|
55
|
-
*/
|
|
56
|
-
export interface WalletProviderProps {
|
|
57
|
-
/** Child components */
|
|
58
|
-
children: ReactNode;
|
|
59
|
-
/** Auto-detect wallets on mount (default: true in browser) */
|
|
60
|
-
autoDetect?: boolean;
|
|
61
|
-
/** Initial wallet provider to use */
|
|
62
|
-
initialProvider?: WalletProvider;
|
|
63
|
-
/** Auto-connect if a provider is set (default: true) */
|
|
64
|
-
autoConnect?: boolean;
|
|
65
|
-
/** Callback when wallet connects */
|
|
66
|
-
onConnect?: (address: string, provider: WalletProvider) => void;
|
|
67
|
-
/** Callback when wallet disconnects */
|
|
68
|
-
onDisconnect?: () => void;
|
|
69
|
-
/** Callback when an error occurs */
|
|
70
|
-
onError?: (error: Error) => void;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Connection status for useWalletConnection hook
|
|
74
|
-
*/
|
|
75
|
-
export type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'error';
|
|
76
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/react/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAEhC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IAErB,0CAA0C;IAC1C,YAAY,EAAE,OAAO,CAAC;IAEtB,yCAAyC;IACzC,WAAW,EAAE,OAAO,CAAC;IAErB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,0CAA0C;IAC1C,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD,+CAA+C;IAC/C,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D,yCAAyC;IACzC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,uEAAuE;IACvE,WAAW,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IAEvD,2CAA2C;IAC3C,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,iCAAiC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,EAAE,oBAAoB;CAAG;AAEvF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAC;IAEpB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,qCAAqC;IACrC,eAAe,CAAC,EAAE,cAAc,CAAC;IAEjC,wDAAwD;IACxD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,oCAAoC;IACpC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAEhE,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useWallet Hook
|
|
3
|
-
*
|
|
4
|
-
* Primary hook for accessing wallet state and actions.
|
|
5
|
-
* This is the main hook most applications will use.
|
|
6
|
-
*
|
|
7
|
-
* @packageDocumentation
|
|
8
|
-
*/
|
|
9
|
-
import type { WalletProvider } from '../wallet/types';
|
|
10
|
-
import type { WalletContextValue } from './types';
|
|
11
|
-
/**
|
|
12
|
-
* Hook to access the current wallet state and actions
|
|
13
|
-
*
|
|
14
|
-
* This is the primary hook for wallet integration. It provides:
|
|
15
|
-
* - Current connection state (address, isConnected, etc.)
|
|
16
|
-
* - Detected wallets list
|
|
17
|
-
* - Actions (connect, disconnect, etc.)
|
|
18
|
-
*
|
|
19
|
-
* @returns The complete wallet context value
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```tsx
|
|
23
|
-
* import { useWallet } from '@gala-chain/launchpad-sdk/react';
|
|
24
|
-
*
|
|
25
|
-
* function WalletButton() {
|
|
26
|
-
* const {
|
|
27
|
-
* isConnected,
|
|
28
|
-
* address,
|
|
29
|
-
* isConnecting,
|
|
30
|
-
* error,
|
|
31
|
-
* detectedWallets,
|
|
32
|
-
* connectDetected,
|
|
33
|
-
* disconnect
|
|
34
|
-
* } = useWallet();
|
|
35
|
-
*
|
|
36
|
-
* if (isConnecting) {
|
|
37
|
-
* return <button disabled>Connecting...</button>;
|
|
38
|
-
* }
|
|
39
|
-
*
|
|
40
|
-
* if (isConnected) {
|
|
41
|
-
* return (
|
|
42
|
-
* <div>
|
|
43
|
-
* <span>{address?.slice(0, 6)}...{address?.slice(-4)}</span>
|
|
44
|
-
* <button onClick={disconnect}>Disconnect</button>
|
|
45
|
-
* </div>
|
|
46
|
-
* );
|
|
47
|
-
* }
|
|
48
|
-
*
|
|
49
|
-
* return (
|
|
50
|
-
* <div>
|
|
51
|
-
* {error && <p style={{ color: 'red' }}>{error.message}</p>}
|
|
52
|
-
* {detectedWallets.map(wallet => (
|
|
53
|
-
* <button
|
|
54
|
-
* key={wallet.rdns}
|
|
55
|
-
* onClick={() => connectDetected(wallet)}
|
|
56
|
-
* >
|
|
57
|
-
* <img src={wallet.icon} alt={wallet.name} width={24} />
|
|
58
|
-
* {wallet.name}
|
|
59
|
-
* </button>
|
|
60
|
-
* ))}
|
|
61
|
-
* {detectedWallets.length === 0 && (
|
|
62
|
-
* <p>No wallets detected. Please install a wallet extension.</p>
|
|
63
|
-
* )}
|
|
64
|
-
* </div>
|
|
65
|
-
* );
|
|
66
|
-
* }
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
export declare function useWallet(): WalletContextValue;
|
|
70
|
-
/**
|
|
71
|
-
* Hook to get just the wallet address
|
|
72
|
-
*
|
|
73
|
-
* @returns The connected address or null
|
|
74
|
-
*
|
|
75
|
-
* @example
|
|
76
|
-
* ```tsx
|
|
77
|
-
* const address = useWalletAddress();
|
|
78
|
-
* console.log('Connected to:', address);
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function useWalletAddress(): string | null;
|
|
82
|
-
/**
|
|
83
|
-
* Hook to get the Gala-formatted address
|
|
84
|
-
*
|
|
85
|
-
* @returns The connected address in Gala format (eth|0x...) or null
|
|
86
|
-
*
|
|
87
|
-
* @example
|
|
88
|
-
* ```tsx
|
|
89
|
-
* const galaAddress = useGalaAddress();
|
|
90
|
-
* // Use with SDK methods that require Gala format
|
|
91
|
-
* sdk.fetchTokensHeld({ ownerAddress: galaAddress });
|
|
92
|
-
* ```
|
|
93
|
-
*/
|
|
94
|
-
export declare function useGalaAddress(): string | null;
|
|
95
|
-
/**
|
|
96
|
-
* Hook to check if wallet is connected
|
|
97
|
-
*
|
|
98
|
-
* @returns True if a wallet is connected
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* ```tsx
|
|
102
|
-
* const isConnected = useIsWalletConnected();
|
|
103
|
-
* if (isConnected) {
|
|
104
|
-
* // Show authenticated content
|
|
105
|
-
* }
|
|
106
|
-
* ```
|
|
107
|
-
*/
|
|
108
|
-
export declare function useIsWalletConnected(): boolean;
|
|
109
|
-
/**
|
|
110
|
-
* Hook to get the current wallet provider
|
|
111
|
-
*
|
|
112
|
-
* @returns The wallet provider or null
|
|
113
|
-
*
|
|
114
|
-
* @example
|
|
115
|
-
* ```tsx
|
|
116
|
-
* const provider = useWalletProvider();
|
|
117
|
-
* if (provider) {
|
|
118
|
-
* const signature = await provider.signMessage('Hello');
|
|
119
|
-
* }
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
export declare function useWalletProvider(): WalletProvider | null;
|
|
123
|
-
//# sourceMappingURL=useWallet.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useWallet.d.ts","sourceRoot":"","sources":["../../src/react/useWallet.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,SAAS,IAAI,kBAAkB,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAGhD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CAG9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAGzD"}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useWalletConnection Hook
|
|
3
|
-
*
|
|
4
|
-
* Hook for managing wallet connection lifecycle.
|
|
5
|
-
* Provides connection actions and status tracking.
|
|
6
|
-
*
|
|
7
|
-
* @packageDocumentation
|
|
8
|
-
*/
|
|
9
|
-
import type { DetectedWallet, WalletProvider } from '../wallet/types';
|
|
10
|
-
import type { ConnectionStatus } from './types';
|
|
11
|
-
/**
|
|
12
|
-
* Return type for useWalletConnection
|
|
13
|
-
*/
|
|
14
|
-
export interface UseWalletConnectionReturn {
|
|
15
|
-
/** Current connection status */
|
|
16
|
-
status: ConnectionStatus;
|
|
17
|
-
/** Whether currently connecting */
|
|
18
|
-
isConnecting: boolean;
|
|
19
|
-
/** Whether connected to a wallet */
|
|
20
|
-
isConnected: boolean;
|
|
21
|
-
/** Connection error if any */
|
|
22
|
-
error: Error | null;
|
|
23
|
-
/** Connect to a wallet provider */
|
|
24
|
-
connect: (provider: WalletProvider) => Promise<string>;
|
|
25
|
-
/** Connect to a detected wallet */
|
|
26
|
-
connectDetected: (wallet: DetectedWallet) => Promise<string>;
|
|
27
|
-
/** Disconnect from the current wallet */
|
|
28
|
-
disconnect: () => Promise<void>;
|
|
29
|
-
/** Clear any connection error */
|
|
30
|
-
clearError: () => void;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Hook for managing wallet connection
|
|
34
|
-
*
|
|
35
|
-
* Provides a focused interface for connection management:
|
|
36
|
-
* - Connection status tracking
|
|
37
|
-
* - Connect/disconnect actions
|
|
38
|
-
* - Error handling
|
|
39
|
-
*
|
|
40
|
-
* @returns Connection state and actions
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```tsx
|
|
44
|
-
* import { useWalletConnection, useWalletDetection } from '@gala-chain/launchpad-sdk/react';
|
|
45
|
-
*
|
|
46
|
-
* function ConnectWallet() {
|
|
47
|
-
* const { status, connect, disconnect, error, clearError } = useWalletConnection();
|
|
48
|
-
* const { wallets } = useWalletDetection();
|
|
49
|
-
*
|
|
50
|
-
* const handleConnect = async (wallet) => {
|
|
51
|
-
* try {
|
|
52
|
-
* await connect(new ExternalWalletProvider(wallet.provider));
|
|
53
|
-
* console.log('Connected!');
|
|
54
|
-
* } catch (err) {
|
|
55
|
-
* console.error('Connection failed:', err);
|
|
56
|
-
* }
|
|
57
|
-
* };
|
|
58
|
-
*
|
|
59
|
-
* switch (status) {
|
|
60
|
-
* case 'connecting':
|
|
61
|
-
* return <div>Connecting...</div>;
|
|
62
|
-
*
|
|
63
|
-
* case 'connected':
|
|
64
|
-
* return <button onClick={disconnect}>Disconnect</button>;
|
|
65
|
-
*
|
|
66
|
-
* case 'error':
|
|
67
|
-
* return (
|
|
68
|
-
* <div>
|
|
69
|
-
* <p>Error: {error?.message}</p>
|
|
70
|
-
* <button onClick={clearError}>Try Again</button>
|
|
71
|
-
* </div>
|
|
72
|
-
* );
|
|
73
|
-
*
|
|
74
|
-
* default:
|
|
75
|
-
* return (
|
|
76
|
-
* <div>
|
|
77
|
-
* {wallets.map(w => (
|
|
78
|
-
* <button key={w.info.rdns} onClick={() => handleConnect(w)}>
|
|
79
|
-
* {w.info.name}
|
|
80
|
-
* </button>
|
|
81
|
-
* ))}
|
|
82
|
-
* </div>
|
|
83
|
-
* );
|
|
84
|
-
* }
|
|
85
|
-
* }
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
export declare function useWalletConnection(): UseWalletConnectionReturn;
|
|
89
|
-
//# sourceMappingURL=useWalletConnection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletConnection.d.ts","sourceRoot":"","sources":["../../src/react/useWalletConnection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAC,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,gCAAgC;IAChC,MAAM,EAAE,gBAAgB,CAAC;IAEzB,mCAAmC;IACnC,YAAY,EAAE,OAAO,CAAC;IAEtB,oCAAoC;IACpC,WAAW,EAAE,OAAO,CAAC;IAErB,8BAA8B;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,mCAAmC;IACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvD,mCAAmC;IACnC,eAAe,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAE7D,yCAAyC;IACzC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC,iCAAiC;IACjC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,mBAAmB,IAAI,yBAAyB,CAgC/D"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useWalletDetection Hook
|
|
3
|
-
*
|
|
4
|
-
* Hook for detecting available browser wallets via EIP-6963.
|
|
5
|
-
* Provides the list of detected wallets and detection state.
|
|
6
|
-
*
|
|
7
|
-
* @packageDocumentation
|
|
8
|
-
*/
|
|
9
|
-
import type { DetectedWallet } from '../wallet/types';
|
|
10
|
-
/**
|
|
11
|
-
* Return type for useWalletDetection
|
|
12
|
-
*/
|
|
13
|
-
export interface UseWalletDetectionReturn {
|
|
14
|
-
/** List of all detected wallets */
|
|
15
|
-
wallets: DetectedWallet[];
|
|
16
|
-
/** Whether wallet detection is in progress */
|
|
17
|
-
isDetecting: boolean;
|
|
18
|
-
/** Refresh the list of detected wallets */
|
|
19
|
-
refresh: () => Promise<void>;
|
|
20
|
-
/** Check if a specific wallet is available by RDNS */
|
|
21
|
-
hasWallet: (rdns: string) => boolean;
|
|
22
|
-
/** Get a wallet by its RDNS identifier */
|
|
23
|
-
getWallet: (rdns: string) => DetectedWallet | undefined;
|
|
24
|
-
/** Check if MetaMask is available */
|
|
25
|
-
hasMetaMask: boolean;
|
|
26
|
-
/** Check if Coinbase Wallet is available */
|
|
27
|
-
hasCoinbaseWallet: boolean;
|
|
28
|
-
/** Check if any wallet is available */
|
|
29
|
-
hasAnyWallet: boolean;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Hook for detecting available browser wallets
|
|
33
|
-
*
|
|
34
|
-
* Uses EIP-6963 to discover installed wallet extensions.
|
|
35
|
-
* Automatically updates when new wallets are detected.
|
|
36
|
-
*
|
|
37
|
-
* @returns Detection state and wallet list
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```tsx
|
|
41
|
-
* import { useWalletDetection, useWalletConnection } from '@gala-chain/launchpad-sdk/react';
|
|
42
|
-
*
|
|
43
|
-
* function WalletSelector() {
|
|
44
|
-
* const { wallets, isDetecting, hasAnyWallet, hasMetaMask } = useWalletDetection();
|
|
45
|
-
* const { connectDetected } = useWalletConnection();
|
|
46
|
-
*
|
|
47
|
-
* if (isDetecting) {
|
|
48
|
-
* return <div>Detecting wallets...</div>;
|
|
49
|
-
* }
|
|
50
|
-
*
|
|
51
|
-
* if (!hasAnyWallet) {
|
|
52
|
-
* return (
|
|
53
|
-
* <div>
|
|
54
|
-
* <p>No wallets detected.</p>
|
|
55
|
-
* <a href="https://metamask.io/download/" target="_blank">
|
|
56
|
-
* Install MetaMask
|
|
57
|
-
* </a>
|
|
58
|
-
* </div>
|
|
59
|
-
* );
|
|
60
|
-
* }
|
|
61
|
-
*
|
|
62
|
-
* return (
|
|
63
|
-
* <div>
|
|
64
|
-
* <h3>Select a wallet:</h3>
|
|
65
|
-
* {wallets.map(wallet => (
|
|
66
|
-
* <button
|
|
67
|
-
* key={wallet.rdns}
|
|
68
|
-
* onClick={() => connectDetected(wallet)}
|
|
69
|
-
* style={{ display: 'flex', alignItems: 'center', gap: '8px' }}
|
|
70
|
-
* >
|
|
71
|
-
* <img src={wallet.icon} alt="" width={24} height={24} />
|
|
72
|
-
* {wallet.name}
|
|
73
|
-
* </button>
|
|
74
|
-
* ))}
|
|
75
|
-
* </div>
|
|
76
|
-
* );
|
|
77
|
-
* }
|
|
78
|
-
* ```
|
|
79
|
-
*/
|
|
80
|
-
export declare function useWalletDetection(): UseWalletDetectionReturn;
|
|
81
|
-
//# sourceMappingURL=useWalletDetection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useWalletDetection.d.ts","sourceRoot":"","sources":["../../src/react/useWalletDetection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,mCAAmC;IACnC,OAAO,EAAE,cAAc,EAAE,CAAC;IAE1B,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IAErB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7B,sDAAsD;IACtD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAErC,0CAA0C;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;IAExD,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;IAErB,4CAA4C;IAC5C,iBAAiB,EAAE,OAAO,CAAC;IAE3B,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,wBAAgB,kBAAkB,IAAI,wBAAwB,CAkD7D"}
|
package/dist/react.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),n=require("ethers");const r={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},s={[r.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[r.GALA]:"data:image/png;base64,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"};function o(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function i(e){return"object"==typeof e&&null!==e&&"function"==typeof e.request}async function a(e=500){const t=[],n=new Map;return o()?new Promise(a=>{const d=new Set,c=e=>{const r=e,{info:o,provider:i}=r.detail;if(d.has(o.uuid))return;d.add(o.uuid);const a={id:o.rdns||o.uuid,name:o.name,rdns:o.rdns||o.uuid,icon:o.icon??s[o.rdns||""]??"",provider:i,isInjected:!1};t.push(a),n.set(a.id,a)};window.addEventListener("eip6963:announceProvider",c),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",c),0===t.length){const e=o()?window.ethereum??null:null;if(e){const o=window;let i="Browser Wallet",a="injected";o.ethereum?.isMetaMask?(i="MetaMask",a=r.METAMASK):o.ethereum?.isCoinbaseWallet?(i="Coinbase Wallet",a=r.COINBASE):o.ethereum?.isTrust&&(i="Trust Wallet",a=r.TRUST_WALLET);const d={id:a,name:i,rdns:a,icon:s[a]??"",provider:e,isInjected:!0};t.push(d),n.set(d.id,d)}}if(!n.has(r.TRUST_WALLET)){const e=function(){if(!o())return null;const e=window;if(i(e.ethereum)&&e.ethereum.isTrust)return e.ethereum;const t=e.ethereum?.providers?.find(e=>i(e)&&!0===e.isTrust);return void 0!==t?t:i(e.trustwallet)?e.trustwallet:null}();if(null!==e&&!t.some(t=>t.provider===e)){const o={id:r.TRUST_WALLET,name:"Trust Wallet",rdns:r.TRUST_WALLET,icon:s[r.TRUST_WALLET]??"",provider:e,isInjected:!0};t.push(o),n.set(o.id,o)}}const e=window;if(e.gala?.request&&!n.has(r.GALA)){const o={id:r.GALA,name:"Gala Wallet",rdns:r.GALA,icon:s[r.GALA]??"",provider:e.gala,isInjected:!0};t.push(o),n.set(o.id,o)}a({wallets:t,byId:n,hasWallets:t.length>0,...void 0===t[0]?{}:{primary:t[0]}})},e)}):{wallets:t,byId:n,hasWallets:!1}}function d(e,t,n){return{types:{EIP712Domain:c(e),...t},primaryType:Object.keys(t)[0],domain:l(e),message:n}}function c(e){const t=[];return void 0!==e.name&&t.push({name:"name",type:"string"}),void 0!==e.version&&t.push({name:"version",type:"string"}),void 0!==e.chainId&&t.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&t.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&t.push({name:"salt",type:"bytes32"}),t}function l(e){const t={};return void 0!==e.name&&(t.name=e.name),void 0!==e.version&&(t.version=e.version),void 0!==e.chainId&&(t.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(t.verifyingContract=e.verifyingContract),void 0!==e.salt&&(t.salt=e.salt),t}function u(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function h(e,t,n){return e.request({method:"personal_sign",params:[u(n),t]})}async function A(e,t,n,r,s){return e.request({method:"eth_signTypedData_v4",params:[t,JSON.stringify(d(n,r,s))]})}class w{constructor(e){this.connectedAddress=null,this.provider=e,this.eventHandlers=function(e,t,r){if(null==e||"function"!=typeof e.on)return{accountsChanged:null,disconnect:null};const s=e=>{const r=e[0];t(void 0===r?null:n.getAddress(r))},o=()=>r();return e.on("accountsChanged",s),e.on("disconnect",o),{accountsChanged:s,disconnect:o}}(e,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,t){if("function"!=typeof e.removeListener)return;null!==t.accountsChanged&&e.removeListener("accountsChanged",t.accountsChanged);null!==t.disconnect&&e.removeListener("disconnect",t.disconnect)}(this.provider,this.eventHandlers)}}class v extends Error{constructor(e,t,n){super(e),this.code=t,this.originalError=n,this.name="WalletProviderError"}}var E;async function g(e,t,n){try{return await e()}catch(e){if(e instanceof v)throw e;return t(e,n)}}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(E||(E={}));const p=4001,f=4100,m=4900,y=4901;class N extends w{constructor(e){if(super(e),this.providerType="external",null==e)throw new v("EIP-1193 provider is required",E.INVALID_CONFIG)}handleProviderError(e,t){const n=e;if(n.code===p)throw new v(`User rejected ${t}`,E.USER_REJECTED,e instanceof Error?e:void 0);if(n.code===f)throw new v("Wallet is not authorized",E.NOT_CONNECTED,e instanceof Error?e:void 0);if(n.code===m||n.code===y)throw this.connectedAddress=null,new v("Wallet disconnected",E.NOT_CONNECTED,e instanceof Error?e:void 0);throw new v(n.message??`${t} failed`,t.includes("sign")?E.SIGNING_FAILED:E.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new v("Wallet is not connected. Call connect() first.",E.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new v("No accounts returned from wallet",E.CONNECTION_FAILED);const t=e[0];if(void 0===t)throw new v("No accounts returned from wallet",E.CONNECTION_FAILED);return this.connectedAddress=n.getAddress(t),this.connectedAddress}catch(e){if(e instanceof v)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),g(()=>h(this.provider,this.connectedAddress,e),(e,t)=>this.handleProviderError(e,t),"sign message")}async signTypedData(e,t,n){return this.ensureConnected(),g(()=>A(this.provider,this.connectedAddress,e,t,n),(e,t)=>this.handleProviderError(e,t),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new v("Wallet is not connected",E.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new v("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",E.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}class C extends w{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new v("Gala Wallet provider is required",E.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const t=JSON.parse(e.message);if("object"==typeof t&&null!==t){const n=t,r={message:"string"==typeof n.message?n.message:e.message};return"number"==typeof n.code&&(r.code=n.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,t){const n=this.parseGalaError(e);if(4001===n.code)throw new v(`User rejected ${t}`,E.USER_REJECTED,e instanceof Error?e:void 0);if(4900===n.code)throw this.connectedAddress=null,new v("Wallet disconnected",E.NOT_CONNECTED,e instanceof Error?e:void 0);const r=n.message?n.message:`${t} failed`;throw new v(r,t.includes("sign")?E.SIGNING_FAILED:E.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new v("Wallet is not connected. Call connect() first.",E.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new v("No accounts returned from Gala Wallet",E.CONNECTION_FAILED);const t=e[0];if(void 0===t)throw new v("No accounts returned from Gala Wallet",E.CONNECTION_FAILED);this.galaRawAddress=t;let r=t;return r.startsWith("eth|")?r=`0x${r.slice(4)}`:r.startsWith("0x")||(r=`0x${r}`),this.connectedAddress=n.getAddress(r),this.connectedAddress}catch(e){if(e instanceof v)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),g(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),h(this.provider,this.connectedAddress,e)),(e,t)=>this.handleProviderError(e,t),"sign message")}async signTypedData(e,t,n){return this.ensureConnected(),g(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),A(this.provider,this.connectedAddress,e,t,n)),(e,t)=>this.handleProviderError(e,t),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new v("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",E.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}const I={provider:null,address:null,galaAddress:null,isConnected:!1,isConnecting:!1,isDetecting:!1,error:null,detectedWallets:[],connect:async()=>{throw new Error("WalletContext not initialized")},connectDetected:async()=>{throw new Error("WalletContext not initialized")},disconnect:async()=>{throw new Error("WalletContext not initialized")},setProvider:()=>{throw new Error("WalletContext not initialized")},refreshWallets:async()=>{throw new Error("WalletContext not initialized")},clearError:()=>{throw new Error("WalletContext not initialized")}},L=t.createContext(I),T="undefined"!=typeof window;function W(){const e=t.useContext(L);if(e===I)throw new Error("useWalletContext must be used within a WalletProvider");return e}class D{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new n.Wallet(e)}catch(e){throw new v("Invalid private key provided",E.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new D(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new v("Failed to sign message",E.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,t,n){try{return await this.wallet.signTypedData(e,t,n)}catch(e){throw new v("Failed to sign typed data",E.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(n.getAddress(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}exports.ExternalWalletProvider=N,exports.KNOWN_WALLET_RDNS=r,exports.PrivateKeyProvider=D,exports.WalletContext=L,exports.WalletProvider=function({children:n,autoDetect:s=T,initialProvider:i,autoConnect:d=!0,onConnect:c,onDisconnect:l,onError:u}){const[h,A]=t.useState(i??null),[w,v]=t.useState(null),[E,g]=t.useState(null),[p,f]=t.useState(!1),[m,y]=t.useState(!1),[I,W]=t.useState(null),[D,O]=t.useState([]),S=null!==h&&null!==w,M=t.useCallback(()=>{W(null)},[]),P=t.useCallback(e=>{A(e),e||(v(null),g(null))},[]),G=t.useCallback(async e=>{f(!0),W(null);try{e.isConnected()||await e.connect();const t=await e.getAddress(),n=await e.getGalaAddress();return A(e),v(t),g(n),c?.(t,e),t}catch(e){const t=e instanceof Error?e:new Error(String(e));throw W(t),u?.(t),t}finally{f(!1)}},[c,u]),x=t.useCallback(async e=>{if(e.rdns===r.GALA){const t=new C(e.provider);return G(t)}const t=new N(e.provider);return G(t)},[G]),R=t.useCallback(async()=>{if(h)try{await h.disconnect()}catch{}A(null),v(null),g(null),W(null),l?.()},[h,l]),b=t.useCallback(async()=>{if(T){y(!0);try{let e=[...(await a()).wallets];const t=window;if(void 0!==t.gala&&!e.some(e=>e.rdns===r.GALA)){e=[{id:r.GALA,name:"Gala Wallet",rdns:r.GALA,icon:"",provider:t.gala,isInjected:!0},...e]}O(e)}catch{O([])}finally{y(!1)}}},[]);t.useEffect(()=>{if(!s||!T)return;b();const e=function(e){if(!o())return()=>{};let t=!0,n={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!t)return;const s=r,{info:o,provider:i}=s.detail,a=o.rdns||o.uuid;if(n.byId.has(a))return;const d={id:a,name:o.name,rdns:a,icon:o.icon??"",provider:i,isInjected:!1},c=[...n.wallets,d],l=new Map(n.byId);l.set(d.id,d),n={wallets:c,byId:l,hasWallets:!0,...void 0===c[0]?{}:{primary:c[0]}},e(n)};return window.addEventListener("eip6963:announceProvider",r),a().then(r=>{t&&(n=r,e(r))}),()=>{t=!1,window.removeEventListener("eip6963:announceProvider",r)}}(e=>{O(e.wallets)});return()=>{e()}},[s,b]),t.useEffect(()=>{i&&d&&!S&&!p&&G(i)},[i,d,S,p,G]);const U=t.useMemo(()=>({provider:h,address:w,galaAddress:E,isConnected:S,isConnecting:p,isDetecting:m,error:I,detectedWallets:D,connect:G,connectDetected:x,disconnect:R,setProvider:P,refreshWallets:b,clearError:M}),[h,w,E,S,p,m,I,D,G,x,R,P,b,M]);return e.jsx(L.Provider,{value:U,children:n})},exports.detectWallets=a,exports.useGalaAddress=function(){const{galaAddress:e}=W();return e},exports.useIsWalletConnected=function(){const{isConnected:e}=W();return e},exports.useWallet=function(){return W()},exports.useWalletAddress=function(){const{address:e}=W();return e},exports.useWalletConnection=function(){const{isConnecting:e,isConnected:n,error:r,connect:s,connectDetected:o,disconnect:i,clearError:a}=W(),d=t.useMemo(()=>e?"connecting":r?"error":n?"connected":"disconnected",[e,r,n]);return t.useMemo(()=>({status:d,isConnecting:e,isConnected:n,error:r,connect:s,connectDetected:o,disconnect:i,clearError:a}),[d,e,n,r,s,o,i,a])},exports.useWalletContext=W,exports.useWalletDetection=function(){const{detectedWallets:e,isDetecting:n,refreshWallets:s}=W(),o=t.useMemo(()=>t=>e.some(e=>e.rdns===t),[e]),i=t.useMemo(()=>t=>e.find(e=>e.rdns===t),[e]),a=t.useMemo(()=>e.some(e=>e.rdns===r.METAMASK),[e]),d=t.useMemo(()=>e.some(e=>e.rdns===r.COINBASE),[e]),c=e.length>0;return t.useMemo(()=>({wallets:e,isDetecting:n,refresh:s,hasWallet:o,getWallet:i,hasMetaMask:a,hasCoinbaseWallet:d,hasAnyWallet:c}),[e,n,s,o,i,a,d,c])},exports.useWalletProvider=function(){const{provider:e}=W();return e};
|
package/dist/react.esm.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
if(void 0===globalThis.process&&(globalThis.process={env:{},versions:{},platform:"browser"}),void 0===globalThis.Buffer){var e=function(e){return"number"==typeof e||ArrayBuffer,new Uint8Array(e)};e.isBuffer=function(){return!1},e.from=function(e,n){if("string"==typeof e){if("hex"===n){var t=(e.match(/.{1,2}/g)||[]).map(function(e){return parseInt(e,16)});return new Uint8Array(t)}return(new TextEncoder).encode(e)}return e instanceof ArrayBuffer?new Uint8Array(e):ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)},e.alloc=function(e){return new Uint8Array(e)},e.concat=function(e){for(var n=0,t=0;t<e.length;t++)n+=e[t].length;for(var r=new Uint8Array(n),s=0,i=0;i<e.length;i++)r.set(e[i],s),s+=e[i].length;return r},e.prototype=Object.create(Uint8Array.prototype),globalThis.Buffer=e}import{jsx as n}from"react/jsx-runtime";import{createContext as t,useState as r,useCallback as s,useEffect as i,useMemo as o,useContext as a}from"react";import{getAddress as c,Wallet as d}from"ethers";const l={METAMASK:"io.metamask",METAMASK_FLASK:"io.metamask.flask",COINBASE:"com.coinbase.wallet",TRUST_WALLET:"com.trustwallet.app",PHANTOM:"app.phantom",RAINBOW:"me.rainbow",OKX:"com.okex.wallet",RABBY:"io.rabby",BRAVE:"com.brave.wallet",FRAME:"sh.frame",LEDGER:"com.ledger",ZERION:"io.zerion.wallet",GALA:"com.gala.wallet"},u={[l.METAMASK]:"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTIxLjU0IDQuMjJsLTguMzQgNi4yMSAxLjU0LTMuNjUtLTUuNTMtMi41MXoiIGZpbGw9IiNFMjc2MUIiLz48L3N2Zz4=",[l.GALA]:"data:image/png;base64,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"};function h(){return"undefined"!=typeof window&&"function"==typeof window.dispatchEvent}function A(e){return"object"==typeof e&&null!==e&&"function"==typeof e.request}async function w(e=500){const n=[],t=new Map;return h()?new Promise(r=>{const s=new Set,i=e=>{const r=e,{info:i,provider:o}=r.detail;if(s.has(i.uuid))return;s.add(i.uuid);const a={id:i.rdns||i.uuid,name:i.name,rdns:i.rdns||i.uuid,icon:i.icon??u[i.rdns||""]??"",provider:o,isInjected:!1};n.push(a),t.set(a.id,a)};window.addEventListener("eip6963:announceProvider",i),window.dispatchEvent(new Event("eip6963:requestProvider")),setTimeout(()=>{if(window.removeEventListener("eip6963:announceProvider",i),0===n.length){const e=h()?window.ethereum??null:null;if(e){const r=window;let s="Browser Wallet",i="injected";r.ethereum?.isMetaMask?(s="MetaMask",i=l.METAMASK):r.ethereum?.isCoinbaseWallet?(s="Coinbase Wallet",i=l.COINBASE):r.ethereum?.isTrust&&(s="Trust Wallet",i=l.TRUST_WALLET);const o={id:i,name:s,rdns:i,icon:u[i]??"",provider:e,isInjected:!0};n.push(o),t.set(o.id,o)}}if(!t.has(l.TRUST_WALLET)){const e=function(){if(!h())return null;const e=window;if(A(e.ethereum)&&e.ethereum.isTrust)return e.ethereum;const n=e.ethereum?.providers?.find(e=>A(e)&&!0===e.isTrust);return void 0!==n?n:A(e.trustwallet)?e.trustwallet:null}();if(null!==e&&!n.some(n=>n.provider===e)){const r={id:l.TRUST_WALLET,name:"Trust Wallet",rdns:l.TRUST_WALLET,icon:u[l.TRUST_WALLET]??"",provider:e,isInjected:!0};n.push(r),t.set(r.id,r)}}const e=window;if(e.gala?.request&&!t.has(l.GALA)){const r={id:l.GALA,name:"Gala Wallet",rdns:l.GALA,icon:u[l.GALA]??"",provider:e.gala,isInjected:!0};n.push(r),t.set(r.id,r)}r({wallets:n,byId:t,hasWallets:n.length>0,...void 0===n[0]?{}:{primary:n[0]}})},e)}):{wallets:n,byId:t,hasWallets:!1}}function f(e,n,t){return{types:{EIP712Domain:v(e),...n},primaryType:Object.keys(n)[0],domain:g(e),message:t}}function v(e){const n=[];return void 0!==e.name&&n.push({name:"name",type:"string"}),void 0!==e.version&&n.push({name:"version",type:"string"}),void 0!==e.chainId&&n.push({name:"chainId",type:"uint256"}),void 0!==e.verifyingContract&&n.push({name:"verifyingContract",type:"address"}),void 0!==e.salt&&n.push({name:"salt",type:"bytes32"}),n}function g(e){const n={};return void 0!==e.name&&(n.name=e.name),void 0!==e.version&&(n.version=e.version),void 0!==e.chainId&&(n.chainId="bigint"==typeof e.chainId||"number"==typeof e.chainId?`0x${e.chainId.toString(16)}`:e.chainId),void 0!==e.verifyingContract&&(n.verifyingContract=e.verifyingContract),void 0!==e.salt&&(n.salt=e.salt),n}function E(e){return`0x${Buffer.from(e,"utf8").toString("hex")}`}async function p(e,n,t){return e.request({method:"personal_sign",params:[E(t),n]})}async function y(e,n,t,r,s){return e.request({method:"eth_signTypedData_v4",params:[n,JSON.stringify(f(t,r,s))]})}class m{constructor(e){this.connectedAddress=null,this.provider=e,this.eventHandlers=function(e,n,t){if(null==e||"function"!=typeof e.on)return{accountsChanged:null,disconnect:null};const r=e=>{const t=e[0];n(void 0===t?null:c(t))},s=()=>t();return e.on("accountsChanged",r),e.on("disconnect",s),{accountsChanged:r,disconnect:s}}(e,e=>{this.connectedAddress=e},()=>{this.connectedAddress=null})}removeEventListeners(){!function(e,n){if("function"!=typeof e.removeListener)return;null!==n.accountsChanged&&e.removeListener("accountsChanged",n.accountsChanged);null!==n.disconnect&&e.removeListener("disconnect",n.disconnect)}(this.provider,this.eventHandlers)}}class N extends Error{constructor(e,n,t){super(e),this.code=n,this.originalError=t,this.name="WalletProviderError"}}var I;async function C(e,n,t){try{return await e()}catch(e){if(e instanceof N)throw e;return n(e,t)}}!function(e){e.USER_REJECTED="USER_REJECTED",e.NOT_CONNECTED="NOT_CONNECTED",e.CONNECTION_FAILED="CONNECTION_FAILED",e.SIGNING_FAILED="SIGNING_FAILED",e.PROVIDER_NOT_AVAILABLE="PROVIDER_NOT_AVAILABLE",e.PRIVATE_KEY_NOT_ACCESSIBLE="PRIVATE_KEY_NOT_ACCESSIBLE",e.INVALID_CONFIG="INVALID_CONFIG",e.CHAIN_MISMATCH="CHAIN_MISMATCH",e.UNKNOWN="UNKNOWN"}(I||(I={}));const L=4001,T=4100,O=4900,D=4901;class S extends m{constructor(e){if(super(e),this.providerType="external",null==e)throw new N("EIP-1193 provider is required",I.INVALID_CONFIG)}handleProviderError(e,n){const t=e;if(t.code===L)throw new N(`User rejected ${n}`,I.USER_REJECTED,e instanceof Error?e:void 0);if(t.code===T)throw new N("Wallet is not authorized",I.NOT_CONNECTED,e instanceof Error?e:void 0);if(t.code===O||t.code===D)throw this.connectedAddress=null,new N("Wallet disconnected",I.NOT_CONNECTED,e instanceof Error?e:void 0);throw new N(t.message??`${n} failed`,n.includes("sign")?I.SIGNING_FAILED:I.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(!this.connectedAddress)throw new N("Wallet is not connected. Call connect() first.",I.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new N("No accounts returned from wallet",I.CONNECTION_FAILED);const n=e[0];if(void 0===n)throw new N("No accounts returned from wallet",I.CONNECTION_FAILED);return this.connectedAddress=c(n),this.connectedAddress}catch(e){if(e instanceof N)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.removeEventListeners();try{await this.provider.request({method:"wallet_revokePermissions",params:[{eth_accounts:{}}]})}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),C(()=>p(this.provider,this.connectedAddress,e),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),C(()=>y(this.provider,this.connectedAddress,e,n,t),(e,n)=>this.handleProviderError(e,n),"sign typed data")}async getAddress(){await Promise.resolve(),this.ensureConnected();const e=this.connectedAddress;if(null==e)throw new N("Wallet is not connected",I.NOT_CONNECTED);return e}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async getPrivateKey(){return Promise.reject(new N("Private key is not accessible with external wallet providers. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",I.PRIVATE_KEY_NOT_ACCESSIBLE))}getProvider(){return this.provider}}class W extends m{constructor(e){if(super(e),this.providerType="external",this.galaRawAddress=null,!e)throw new N("Gala Wallet provider is required",I.PROVIDER_NOT_AVAILABLE)}parseGalaError(e){if(e instanceof Error)try{const n=JSON.parse(e.message);if("object"==typeof n&&null!==n){const t=n,r={message:"string"==typeof t.message?t.message:e.message};return"number"==typeof t.code&&(r.code=t.code),r}return{message:e.message}}catch{return{message:e.message}}return{message:String(e)}}handleProviderError(e,n){const t=this.parseGalaError(e);if(4001===t.code)throw new N(`User rejected ${n}`,I.USER_REJECTED,e instanceof Error?e:void 0);if(4900===t.code)throw this.connectedAddress=null,new N("Wallet disconnected",I.NOT_CONNECTED,e instanceof Error?e:void 0);const r=t.message?t.message:`${n} failed`;throw new N(r,n.includes("sign")?I.SIGNING_FAILED:I.UNKNOWN,e instanceof Error?e:void 0)}ensureConnected(){if(null===this.connectedAddress||void 0===this.connectedAddress)throw new N("Wallet is not connected. Call connect() first.",I.NOT_CONNECTED)}async connect(){try{const e=await this.provider.request({method:"eth_requestAccounts"});if(null==e||0===e.length)throw new N("No accounts returned from Gala Wallet",I.CONNECTION_FAILED);const n=e[0];if(void 0===n)throw new N("No accounts returned from Gala Wallet",I.CONNECTION_FAILED);this.galaRawAddress=n;let t=n;return t.startsWith("eth|")?t=`0x${t.slice(4)}`:t.startsWith("0x")||(t=`0x${t}`),this.connectedAddress=c(t),this.connectedAddress}catch(e){if(e instanceof N)throw e;return this.handleProviderError(e,"connect")}}async disconnect(){this.connectedAddress=null,this.galaRawAddress=null,this.removeEventListeners();try{await this.provider.disconnect()}catch{}}isConnected(){return null!==this.connectedAddress}async signMessage(e){return this.ensureConnected(),C(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),p(this.provider,this.connectedAddress,e)),(e,n)=>this.handleProviderError(e,n),"sign message")}async signTypedData(e,n,t){return this.ensureConnected(),C(async()=>(await this.provider.setAddress(this.galaRawAddress??this.connectedAddress),y(this.provider,this.connectedAddress,e,n,t)),(e,n)=>this.handleProviderError(e,n),"sign typed data")}getAddress(){return this.ensureConnected(),Promise.resolve(this.connectedAddress)}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}getPrivateKey(){throw new N("Private key is not accessible with Gala Wallet. Use PrivateKeyProvider if you need private key access for @gala-chain operations.",I.PRIVATE_KEY_NOT_ACCESSIBLE)}getProvider(){return this.provider}}const M={provider:null,address:null,galaAddress:null,isConnected:!1,isConnecting:!1,isDetecting:!1,error:null,detectedWallets:[],connect:async()=>{throw new Error("WalletContext not initialized")},connectDetected:async()=>{throw new Error("WalletContext not initialized")},disconnect:async()=>{throw new Error("WalletContext not initialized")},setProvider:()=>{throw new Error("WalletContext not initialized")},refreshWallets:async()=>{throw new Error("WalletContext not initialized")},clearError:()=>{throw new Error("WalletContext not initialized")}},P=t(M),U="undefined"!=typeof window;function G({children:e,autoDetect:t=U,initialProvider:a,autoConnect:c=!0,onConnect:d,onDisconnect:u,onError:A}){const[f,v]=r(a??null),[g,E]=r(null),[p,y]=r(null),[m,N]=r(!1),[I,C]=r(!1),[L,T]=r(null),[O,D]=r([]),M=null!==f&&null!==g,G=s(()=>{T(null)},[]),b=s(e=>{v(e),e||(E(null),y(null))},[]),B=s(async e=>{N(!0),T(null);try{e.isConnected()||await e.connect();const n=await e.getAddress(),t=await e.getGalaAddress();return v(e),E(n),y(t),d?.(n,e),n}catch(e){const n=e instanceof Error?e:new Error(String(e));throw T(n),A?.(n),n}finally{N(!1)}},[d,A]),R=s(async e=>{if(e.rdns===l.GALA){const n=new W(e.provider);return B(n)}const n=new S(e.provider);return B(n)},[B]),V=s(async()=>{if(f)try{await f.disconnect()}catch{}v(null),E(null),y(null),T(null),u?.()},[f,u]),F=s(async()=>{if(U){C(!0);try{let e=[...(await w()).wallets];const n=window;if(void 0!==n.gala&&!e.some(e=>e.rdns===l.GALA)){e=[{id:l.GALA,name:"Gala Wallet",rdns:l.GALA,icon:"",provider:n.gala,isInjected:!0},...e]}D(e)}catch{D([])}finally{C(!1)}}},[]);i(()=>{if(!t||!U)return;F();const e=function(e){if(!h())return()=>{};let n=!0,t={wallets:[],byId:new Map,hasWallets:!1};const r=r=>{if(!n)return;const s=r,{info:i,provider:o}=s.detail,a=i.rdns||i.uuid;if(t.byId.has(a))return;const c={id:a,name:i.name,rdns:a,icon:i.icon??"",provider:o,isInjected:!1},d=[...t.wallets,c],l=new Map(t.byId);l.set(c.id,c),t={wallets:d,byId:l,hasWallets:!0,...void 0===d[0]?{}:{primary:d[0]}},e(t)};return window.addEventListener("eip6963:announceProvider",r),w().then(r=>{n&&(t=r,e(r))}),()=>{n=!1,window.removeEventListener("eip6963:announceProvider",r)}}(e=>{D(e.wallets)});return()=>{e()}},[t,F]),i(()=>{a&&c&&!M&&!m&&B(a)},[a,c,M,m,B]);const K=o(()=>({provider:f,address:g,galaAddress:p,isConnected:M,isConnecting:m,isDetecting:I,error:L,detectedWallets:O,connect:B,connectDetected:R,disconnect:V,setProvider:b,refreshWallets:F,clearError:G}),[f,g,p,M,m,I,L,O,B,R,V,b,F,G]);return n(P.Provider,{value:K,children:e})}function b(){const e=a(P);if(e===M)throw new Error("useWalletContext must be used within a WalletProvider");return e}function B(){return b()}function R(){const{address:e}=b();return e}function V(){const{galaAddress:e}=b();return e}function F(){const{isConnected:e}=b();return e}function K(){const{provider:e}=b();return e}function j(){const{isConnecting:e,isConnected:n,error:t,connect:r,connectDetected:s,disconnect:i,clearError:a}=b(),c=o(()=>e?"connecting":t?"error":n?"connected":"disconnected",[e,t,n]);return o(()=>({status:c,isConnecting:e,isConnected:n,error:t,connect:r,connectDetected:s,disconnect:i,clearError:a}),[c,e,n,t,r,s,i,a])}function x(){const{detectedWallets:e,isDetecting:n,refreshWallets:t}=b(),r=o(()=>n=>e.some(e=>e.rdns===n),[e]),s=o(()=>n=>e.find(e=>e.rdns===n),[e]),i=o(()=>e.some(e=>e.rdns===l.METAMASK),[e]),a=o(()=>e.some(e=>e.rdns===l.COINBASE),[e]),c=e.length>0;return o(()=>({wallets:e,isDetecting:n,refresh:t,hasWallet:r,getWallet:s,hasMetaMask:i,hasCoinbaseWallet:a,hasAnyWallet:c}),[e,n,t,r,s,i,a,c])}class Q{constructor(e){this.providerType="privateKey",this.connected=!0;try{this.wallet=new d(e)}catch(e){throw new N("Invalid private key provided",I.INVALID_CONFIG,e instanceof Error?e:void 0)}}static fromWallet(e){return new Q(e.privateKey)}async signMessage(e){try{return await this.wallet.signMessage(e)}catch(e){throw new N("Failed to sign message",I.SIGNING_FAILED,e instanceof Error?e:void 0)}}async signTypedData(e,n,t){try{return await this.wallet.signTypedData(e,n,t)}catch(e){throw new N("Failed to sign typed data",I.SIGNING_FAILED,e instanceof Error?e:void 0)}}getAddress(){return Promise.resolve(c(this.wallet.address))}async getGalaAddress(){return`eth|${(await this.getAddress()).slice(2)}`}async connect(){return this.connected=!0,this.getAddress()}disconnect(){return this.connected=!1,Promise.resolve()}isConnected(){return this.connected}getPrivateKey(){return Promise.resolve(this.wallet.privateKey)}getWallet(){return this.wallet}}export{S as ExternalWalletProvider,l as KNOWN_WALLET_RDNS,Q as PrivateKeyProvider,P as WalletContext,G as WalletProvider,w as detectWallets,V as useGalaAddress,F as useIsWalletConnected,B as useWallet,R as useWalletAddress,j as useWalletConnection,b as useWalletContext,x as useWalletDetection,K as useWalletProvider};
|