@haneullabs/dapp-kit 0.1.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 +1445 -0
- package/LICENSE +201 -0
- package/README.md +97 -0
- package/dist/cjs/components/AccountDropdownMenu.css +177 -0
- package/dist/cjs/components/AccountDropdownMenu.css.css +49 -0
- package/dist/cjs/components/AccountDropdownMenu.css.css.map +7 -0
- package/dist/cjs/components/AccountDropdownMenu.css.d.ts +6 -0
- package/dist/cjs/components/AccountDropdownMenu.css.js +37 -0
- package/dist/cjs/components/AccountDropdownMenu.css.js.map +7 -0
- package/dist/cjs/components/AccountDropdownMenu.css.map +7 -0
- package/dist/cjs/components/AccountDropdownMenu.d.ts +10 -0
- package/dist/cjs/components/AccountDropdownMenu.js +423 -0
- package/dist/cjs/components/AccountDropdownMenu.js.map +7 -0
- package/dist/cjs/components/ConnectButton.css +458 -0
- package/dist/cjs/components/ConnectButton.css.map +7 -0
- package/dist/cjs/components/ConnectButton.d.ts +9 -0
- package/dist/cjs/components/ConnectButton.js +880 -0
- package/dist/cjs/components/ConnectButton.js.map +7 -0
- package/dist/cjs/components/HaneulClientProvider.d.ts +25 -0
- package/dist/cjs/components/HaneulClientProvider.js +70 -0
- package/dist/cjs/components/HaneulClientProvider.js.map +7 -0
- package/dist/cjs/components/WalletProvider.d.ts +26 -0
- package/dist/cjs/components/WalletProvider.js +853 -0
- package/dist/cjs/components/WalletProvider.js.map +7 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css +409 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css.css +115 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css.d.ts +11 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css.js +47 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/ConnectModal.css.map +7 -0
- package/dist/cjs/components/connect-modal/ConnectModal.d.ts +23 -0
- package/dist/cjs/components/connect-modal/ConnectModal.js +604 -0
- package/dist/cjs/components/connect-modal/ConnectModal.js.map +7 -0
- package/dist/cjs/components/connect-modal/InfoSection.css +78 -0
- package/dist/cjs/components/connect-modal/InfoSection.css.css +8 -0
- package/dist/cjs/components/connect-modal/InfoSection.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/InfoSection.css.d.ts +1 -0
- package/dist/cjs/components/connect-modal/InfoSection.css.js +27 -0
- package/dist/cjs/components/connect-modal/InfoSection.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/InfoSection.css.map +7 -0
- package/dist/cjs/components/connect-modal/InfoSection.d.ts +6 -0
- package/dist/cjs/components/connect-modal/InfoSection.js +119 -0
- package/dist/cjs/components/connect-modal/InfoSection.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css +146 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css +32 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js +35 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.js +165 -0
- package/dist/cjs/components/connect-modal/views/ConnectionStatus.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css +145 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.css +23 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.js +31 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.d.ts +1 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.js +172 -0
- package/dist/cjs/components/connect-modal/views/GettingStarted.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css +95 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js +29 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js +135 -0
- package/dist/cjs/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css +73 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css +8 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.d.ts +1 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js +27 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.css.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.d.ts +9 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js +135 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletList.js.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css +65 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css +33 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.css.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.d.ts +4 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js +33 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.js.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.css.map +7 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.d.ts +9 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js +95 -0
- package/dist/cjs/components/connect-modal/wallet-list/WalletListItem.js.map +7 -0
- package/dist/cjs/components/icons/BackIcon.d.ts +2 -0
- package/dist/cjs/components/icons/BackIcon.js +36 -0
- package/dist/cjs/components/icons/BackIcon.js.map +7 -0
- package/dist/cjs/components/icons/CheckIcon.d.ts +2 -0
- package/dist/cjs/components/icons/CheckIcon.js +36 -0
- package/dist/cjs/components/icons/CheckIcon.js.map +7 -0
- package/dist/cjs/components/icons/ChevronIcon.d.ts +2 -0
- package/dist/cjs/components/icons/ChevronIcon.js +39 -0
- package/dist/cjs/components/icons/ChevronIcon.js.map +7 -0
- package/dist/cjs/components/icons/CloseIcon.d.ts +2 -0
- package/dist/cjs/components/icons/CloseIcon.js +36 -0
- package/dist/cjs/components/icons/CloseIcon.js.map +7 -0
- package/dist/cjs/components/styling/InjectedThemeStyles.d.ts +6 -0
- package/dist/cjs/components/styling/InjectedThemeStyles.js +125 -0
- package/dist/cjs/components/styling/InjectedThemeStyles.js.map +7 -0
- package/dist/cjs/components/styling/StyleMarker.css +46 -0
- package/dist/cjs/components/styling/StyleMarker.css.css +46 -0
- package/dist/cjs/components/styling/StyleMarker.css.css.map +7 -0
- package/dist/cjs/components/styling/StyleMarker.css.d.ts +1 -0
- package/dist/cjs/components/styling/StyleMarker.css.js +2 -0
- package/dist/cjs/components/styling/StyleMarker.css.js.map +7 -0
- package/dist/cjs/components/styling/StyleMarker.css.map +7 -0
- package/dist/cjs/components/styling/StyleMarker.d.ts +2 -0
- package/dist/cjs/components/styling/StyleMarker.js +69 -0
- package/dist/cjs/components/styling/StyleMarker.js.map +7 -0
- package/dist/cjs/components/ui/Button.css +44 -0
- package/dist/cjs/components/ui/Button.css.css +44 -0
- package/dist/cjs/components/ui/Button.css.css.map +7 -0
- package/dist/cjs/components/ui/Button.css.d.ts +33 -0
- package/dist/cjs/components/ui/Button.css.js +28 -0
- package/dist/cjs/components/ui/Button.css.js.map +7 -0
- package/dist/cjs/components/ui/Button.css.map +7 -0
- package/dist/cjs/components/ui/Button.d.ts +8 -0
- package/dist/cjs/components/ui/Button.js +60 -0
- package/dist/cjs/components/ui/Button.js.map +7 -0
- package/dist/cjs/components/ui/Heading.css +32 -0
- package/dist/cjs/components/ui/Heading.css.css +32 -0
- package/dist/cjs/components/ui/Heading.css.css.map +7 -0
- package/dist/cjs/components/ui/Heading.css.d.ts +33 -0
- package/dist/cjs/components/ui/Heading.css.js +28 -0
- package/dist/cjs/components/ui/Heading.css.js.map +7 -0
- package/dist/cjs/components/ui/Heading.css.map +7 -0
- package/dist/cjs/components/ui/Heading.d.ts +12 -0
- package/dist/cjs/components/ui/Heading.js +69 -0
- package/dist/cjs/components/ui/Heading.js.map +7 -0
- package/dist/cjs/components/ui/IconButton.css +13 -0
- package/dist/cjs/components/ui/IconButton.css.css +13 -0
- package/dist/cjs/components/ui/IconButton.css.css.map +7 -0
- package/dist/cjs/components/ui/IconButton.css.d.ts +1 -0
- package/dist/cjs/components/ui/IconButton.css.js +27 -0
- package/dist/cjs/components/ui/IconButton.css.js.map +7 -0
- package/dist/cjs/components/ui/IconButton.css.map +7 -0
- package/dist/cjs/components/ui/IconButton.d.ts +6 -0
- package/dist/cjs/components/ui/IconButton.js +52 -0
- package/dist/cjs/components/ui/IconButton.js.map +7 -0
- package/dist/cjs/components/ui/Text.css +38 -0
- package/dist/cjs/components/ui/Text.css.css +38 -0
- package/dist/cjs/components/ui/Text.css.css.map +7 -0
- package/dist/cjs/components/ui/Text.css.d.ts +33 -0
- package/dist/cjs/components/ui/Text.css.js +28 -0
- package/dist/cjs/components/ui/Text.css.js.map +7 -0
- package/dist/cjs/components/ui/Text.css.map +7 -0
- package/dist/cjs/components/ui/Text.d.ts +12 -0
- package/dist/cjs/components/ui/Text.js +70 -0
- package/dist/cjs/components/ui/Text.js.map +7 -0
- package/dist/cjs/constants/styleDataAttribute.d.ts +5 -0
- package/dist/cjs/constants/styleDataAttribute.js +31 -0
- package/dist/cjs/constants/styleDataAttribute.js.map +7 -0
- package/dist/cjs/constants/walletDefaults.d.ts +6 -0
- package/dist/cjs/constants/walletDefaults.js +58 -0
- package/dist/cjs/constants/walletDefaults.js.map +7 -0
- package/dist/cjs/constants/walletMutationKeys.d.ts +14 -0
- package/dist/cjs/constants/walletMutationKeys.js +42 -0
- package/dist/cjs/constants/walletMutationKeys.js.map +7 -0
- package/dist/cjs/contexts/walletContext.d.ts +11 -0
- package/dist/cjs/contexts/walletContext.js +28 -0
- package/dist/cjs/contexts/walletContext.js.map +7 -0
- package/dist/cjs/errors/walletErrors.d.ts +22 -0
- package/dist/cjs/errors/walletErrors.js +37 -0
- package/dist/cjs/errors/walletErrors.js.map +7 -0
- package/dist/cjs/hooks/networkConfig.d.ts +10 -0
- package/dist/cjs/hooks/networkConfig.js +74 -0
- package/dist/cjs/hooks/networkConfig.js.map +7 -0
- package/dist/cjs/hooks/useHaneulClient.d.ts +3 -0
- package/dist/cjs/hooks/useHaneulClient.js +51 -0
- package/dist/cjs/hooks/useHaneulClient.js.map +7 -0
- package/dist/cjs/hooks/useHaneulClientInfiniteQuery.d.ts +25 -0
- package/dist/cjs/hooks/useHaneulClientInfiniteQuery.js +71 -0
- package/dist/cjs/hooks/useHaneulClientInfiniteQuery.js.map +7 -0
- package/dist/cjs/hooks/useHaneulClientMutation.d.ts +4 -0
- package/dist/cjs/hooks/useHaneulClientMutation.js +61 -0
- package/dist/cjs/hooks/useHaneulClientMutation.js.map +7 -0
- package/dist/cjs/hooks/useHaneulClientQueries.d.ts +27 -0
- package/dist/cjs/hooks/useHaneulClientQueries.js +71 -0
- package/dist/cjs/hooks/useHaneulClientQueries.js.map +7 -0
- package/dist/cjs/hooks/useHaneulClientQuery.d.ts +38 -0
- package/dist/cjs/hooks/useHaneulClientQuery.js +95 -0
- package/dist/cjs/hooks/useHaneulClientQuery.js.map +7 -0
- package/dist/cjs/hooks/useResolveHaneulNSNames.d.ts +3 -0
- package/dist/cjs/hooks/useResolveHaneulNSNames.js +84 -0
- package/dist/cjs/hooks/useResolveHaneulNSNames.js.map +7 -0
- package/dist/cjs/hooks/wallet/useAccounts.d.ts +5 -0
- package/dist/cjs/hooks/wallet/useAccounts.js +50 -0
- package/dist/cjs/hooks/wallet/useAccounts.js.map +7 -0
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.d.ts +1 -0
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js +229 -0
- package/dist/cjs/hooks/wallet/useAutoConnectWallet.js.map +7 -0
- package/dist/cjs/hooks/wallet/useConnectWallet.d.ts +15 -0
- package/dist/cjs/hooks/wallet/useConnectWallet.js +106 -0
- package/dist/cjs/hooks/wallet/useConnectWallet.js.map +7 -0
- package/dist/cjs/hooks/wallet/useCurrentAccount.d.ts +5 -0
- package/dist/cjs/hooks/wallet/useCurrentAccount.js +50 -0
- package/dist/cjs/hooks/wallet/useCurrentAccount.js.map +7 -0
- package/dist/cjs/hooks/wallet/useCurrentWallet.d.ts +25 -0
- package/dist/cjs/hooks/wallet/useCurrentWallet.js +82 -0
- package/dist/cjs/hooks/wallet/useCurrentWallet.js.map +7 -0
- package/dist/cjs/hooks/wallet/useDisconnectWallet.d.ts +9 -0
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js +129 -0
- package/dist/cjs/hooks/wallet/useDisconnectWallet.js.map +7 -0
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.js +144 -0
- package/dist/cjs/hooks/wallet/useReportTransactionEffects.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js +248 -0
- package/dist/cjs/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.d.ts +13 -0
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js +184 -0
- package/dist/cjs/hooks/wallet/useSignPersonalMessage.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSignTransaction.d.ts +18 -0
- package/dist/cjs/hooks/wallet/useSignTransaction.js +230 -0
- package/dist/cjs/hooks/wallet/useSignTransaction.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSlushWallet.d.ts +5 -0
- package/dist/cjs/hooks/wallet/useSlushWallet.js +53 -0
- package/dist/cjs/hooks/wallet/useSlushWallet.js.map +7 -0
- package/dist/cjs/hooks/wallet/useSwitchAccount.d.ts +14 -0
- package/dist/cjs/hooks/wallet/useSwitchAccount.js +134 -0
- package/dist/cjs/hooks/wallet/useSwitchAccount.js.map +7 -0
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.d.ts +1 -0
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js +229 -0
- package/dist/cjs/hooks/wallet/useUnsafeBurnerWallet.js.map +7 -0
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.d.ts +4 -0
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js +100 -0
- package/dist/cjs/hooks/wallet/useWalletPropertiesChanged.js.map +7 -0
- package/dist/cjs/hooks/wallet/useWalletStore.d.ts +2 -0
- package/dist/cjs/hooks/wallet/useWalletStore.js +43 -0
- package/dist/cjs/hooks/wallet/useWalletStore.js.map +7 -0
- package/dist/cjs/hooks/wallet/useWallets.d.ts +4 -0
- package/dist/cjs/hooks/wallet/useWallets.js +50 -0
- package/dist/cjs/hooks/wallet/useWallets.js.map +7 -0
- package/dist/cjs/hooks/wallet/useWalletsChanged.d.ts +5 -0
- package/dist/cjs/hooks/wallet/useWalletsChanged.js +86 -0
- package/dist/cjs/hooks/wallet/useWalletsChanged.js.map +7 -0
- package/dist/cjs/index.css +458 -0
- package/dist/cjs/index.css.map +7 -0
- package/dist/cjs/index.d.ts +26 -0
- package/dist/cjs/index.js +1924 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +4 -0
- package/dist/cjs/themes/lightTheme.d.ts +2 -0
- package/dist/cjs/themes/lightTheme.js +83 -0
- package/dist/cjs/themes/lightTheme.js.map +7 -0
- package/dist/cjs/themes/themeContract.d.ts +140 -0
- package/dist/cjs/themes/themeContract.js +88 -0
- package/dist/cjs/themes/themeContract.js.map +7 -0
- package/dist/cjs/types/utilityTypes.d.ts +1 -0
- package/dist/cjs/types/utilityTypes.js +19 -0
- package/dist/cjs/types/utilityTypes.js.map +7 -0
- package/dist/cjs/types.d.ts +2 -0
- package/dist/cjs/types.js +19 -0
- package/dist/cjs/types.js.map +7 -0
- package/dist/cjs/utils/assertUnreachable.d.ts +4 -0
- package/dist/cjs/utils/assertUnreachable.js +29 -0
- package/dist/cjs/utils/assertUnreachable.js.map +7 -0
- package/dist/cjs/utils/stateStorage.d.ts +2 -0
- package/dist/cjs/utils/stateStorage.js +40 -0
- package/dist/cjs/utils/stateStorage.js.map +7 -0
- package/dist/cjs/utils/walletUtils.d.ts +3 -0
- package/dist/cjs/utils/walletUtils.js +44 -0
- package/dist/cjs/utils/walletUtils.js.map +7 -0
- package/dist/cjs/walletStore.d.ts +42 -0
- package/dist/cjs/walletStore.js +125 -0
- package/dist/cjs/walletStore.js.map +7 -0
- package/dist/esm/components/AccountDropdownMenu.css +177 -0
- package/dist/esm/components/AccountDropdownMenu.css.css +49 -0
- package/dist/esm/components/AccountDropdownMenu.css.css.map +7 -0
- package/dist/esm/components/AccountDropdownMenu.css.d.ts +6 -0
- package/dist/esm/components/AccountDropdownMenu.css.js +16 -0
- package/dist/esm/components/AccountDropdownMenu.css.js.map +7 -0
- package/dist/esm/components/AccountDropdownMenu.css.map +7 -0
- package/dist/esm/components/AccountDropdownMenu.d.ts +10 -0
- package/dist/esm/components/AccountDropdownMenu.js +415 -0
- package/dist/esm/components/AccountDropdownMenu.js.map +7 -0
- package/dist/esm/components/ConnectButton.css +458 -0
- package/dist/esm/components/ConnectButton.css.map +7 -0
- package/dist/esm/components/ConnectButton.d.ts +9 -0
- package/dist/esm/components/ConnectButton.js +870 -0
- package/dist/esm/components/ConnectButton.js.map +7 -0
- package/dist/esm/components/HaneulClientProvider.d.ts +25 -0
- package/dist/esm/components/HaneulClientProvider.js +49 -0
- package/dist/esm/components/HaneulClientProvider.js.map +7 -0
- package/dist/esm/components/WalletProvider.d.ts +26 -0
- package/dist/esm/components/WalletProvider.js +833 -0
- package/dist/esm/components/WalletProvider.js.map +7 -0
- package/dist/esm/components/connect-modal/ConnectModal.css +409 -0
- package/dist/esm/components/connect-modal/ConnectModal.css.css +115 -0
- package/dist/esm/components/connect-modal/ConnectModal.css.css.map +7 -0
- package/dist/esm/components/connect-modal/ConnectModal.css.d.ts +11 -0
- package/dist/esm/components/connect-modal/ConnectModal.css.js +26 -0
- package/dist/esm/components/connect-modal/ConnectModal.css.js.map +7 -0
- package/dist/esm/components/connect-modal/ConnectModal.css.map +7 -0
- package/dist/esm/components/connect-modal/ConnectModal.d.ts +23 -0
- package/dist/esm/components/connect-modal/ConnectModal.js +596 -0
- package/dist/esm/components/connect-modal/ConnectModal.js.map +7 -0
- package/dist/esm/components/connect-modal/InfoSection.css +78 -0
- package/dist/esm/components/connect-modal/InfoSection.css.css +8 -0
- package/dist/esm/components/connect-modal/InfoSection.css.css.map +7 -0
- package/dist/esm/components/connect-modal/InfoSection.css.d.ts +1 -0
- package/dist/esm/components/connect-modal/InfoSection.css.js +6 -0
- package/dist/esm/components/connect-modal/InfoSection.css.js.map +7 -0
- package/dist/esm/components/connect-modal/InfoSection.css.map +7 -0
- package/dist/esm/components/connect-modal/InfoSection.d.ts +6 -0
- package/dist/esm/components/connect-modal/InfoSection.js +86 -0
- package/dist/esm/components/connect-modal/InfoSection.js.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css +146 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css +32 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.d.ts +5 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js +14 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.css.map +7 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.d.ts +8 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.js +132 -0
- package/dist/esm/components/connect-modal/views/ConnectionStatus.js.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css +145 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.css +23 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.d.ts +3 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.js +10 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.css.map +7 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.d.ts +1 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.js +139 -0
- package/dist/esm/components/connect-modal/views/GettingStarted.js.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css +95 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css +17 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.css.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.d.ts +2 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js +8 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.js.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.css.map +7 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.d.ts +1 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.js +102 -0
- package/dist/esm/components/connect-modal/views/WhatIsAWallet.js.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css +73 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css +8 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.css.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.d.ts +1 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js +6 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.js.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.css.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.d.ts +9 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js +104 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletList.js.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css +65 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css +33 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.css.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.d.ts +4 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js +12 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.js.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.css.map +7 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.d.ts +9 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js +64 -0
- package/dist/esm/components/connect-modal/wallet-list/WalletListItem.js.map +7 -0
- package/dist/esm/components/icons/BackIcon.d.ts +2 -0
- package/dist/esm/components/icons/BackIcon.js +15 -0
- package/dist/esm/components/icons/BackIcon.js.map +7 -0
- package/dist/esm/components/icons/CheckIcon.d.ts +2 -0
- package/dist/esm/components/icons/CheckIcon.js +15 -0
- package/dist/esm/components/icons/CheckIcon.js.map +7 -0
- package/dist/esm/components/icons/ChevronIcon.d.ts +2 -0
- package/dist/esm/components/icons/ChevronIcon.js +18 -0
- package/dist/esm/components/icons/ChevronIcon.js.map +7 -0
- package/dist/esm/components/icons/CloseIcon.d.ts +2 -0
- package/dist/esm/components/icons/CloseIcon.js +15 -0
- package/dist/esm/components/icons/CloseIcon.js.map +7 -0
- package/dist/esm/components/styling/InjectedThemeStyles.d.ts +6 -0
- package/dist/esm/components/styling/InjectedThemeStyles.js +104 -0
- package/dist/esm/components/styling/InjectedThemeStyles.js.map +7 -0
- package/dist/esm/components/styling/StyleMarker.css +46 -0
- package/dist/esm/components/styling/StyleMarker.css.css +46 -0
- package/dist/esm/components/styling/StyleMarker.css.css.map +7 -0
- package/dist/esm/components/styling/StyleMarker.css.d.ts +1 -0
- package/dist/esm/components/styling/StyleMarker.css.js +22 -0
- package/dist/esm/components/styling/StyleMarker.css.js.map +7 -0
- package/dist/esm/components/styling/StyleMarker.css.map +7 -0
- package/dist/esm/components/styling/StyleMarker.d.ts +2 -0
- package/dist/esm/components/styling/StyleMarker.js +61 -0
- package/dist/esm/components/styling/StyleMarker.js.map +7 -0
- package/dist/esm/components/ui/Button.css +44 -0
- package/dist/esm/components/ui/Button.css.css +44 -0
- package/dist/esm/components/ui/Button.css.css.map +7 -0
- package/dist/esm/components/ui/Button.css.d.ts +33 -0
- package/dist/esm/components/ui/Button.css.js +7 -0
- package/dist/esm/components/ui/Button.css.js.map +7 -0
- package/dist/esm/components/ui/Button.css.map +7 -0
- package/dist/esm/components/ui/Button.d.ts +8 -0
- package/dist/esm/components/ui/Button.js +29 -0
- package/dist/esm/components/ui/Button.js.map +7 -0
- package/dist/esm/components/ui/Heading.css +32 -0
- package/dist/esm/components/ui/Heading.css.css +32 -0
- package/dist/esm/components/ui/Heading.css.css.map +7 -0
- package/dist/esm/components/ui/Heading.css.d.ts +33 -0
- package/dist/esm/components/ui/Heading.css.js +7 -0
- package/dist/esm/components/ui/Heading.css.js.map +7 -0
- package/dist/esm/components/ui/Heading.css.map +7 -0
- package/dist/esm/components/ui/Heading.d.ts +12 -0
- package/dist/esm/components/ui/Heading.js +38 -0
- package/dist/esm/components/ui/Heading.js.map +7 -0
- package/dist/esm/components/ui/IconButton.css +13 -0
- package/dist/esm/components/ui/IconButton.css.css +13 -0
- package/dist/esm/components/ui/IconButton.css.css.map +7 -0
- package/dist/esm/components/ui/IconButton.css.d.ts +1 -0
- package/dist/esm/components/ui/IconButton.css.js +6 -0
- package/dist/esm/components/ui/IconButton.css.js.map +7 -0
- package/dist/esm/components/ui/IconButton.css.map +7 -0
- package/dist/esm/components/ui/IconButton.d.ts +6 -0
- package/dist/esm/components/ui/IconButton.js +21 -0
- package/dist/esm/components/ui/IconButton.js.map +7 -0
- package/dist/esm/components/ui/Text.css +38 -0
- package/dist/esm/components/ui/Text.css.css +38 -0
- package/dist/esm/components/ui/Text.css.css.map +7 -0
- package/dist/esm/components/ui/Text.css.d.ts +33 -0
- package/dist/esm/components/ui/Text.css.js +7 -0
- package/dist/esm/components/ui/Text.css.js.map +7 -0
- package/dist/esm/components/ui/Text.css.map +7 -0
- package/dist/esm/components/ui/Text.d.ts +12 -0
- package/dist/esm/components/ui/Text.js +39 -0
- package/dist/esm/components/ui/Text.js.map +7 -0
- package/dist/esm/constants/styleDataAttribute.d.ts +5 -0
- package/dist/esm/constants/styleDataAttribute.js +10 -0
- package/dist/esm/constants/styleDataAttribute.js.map +7 -0
- package/dist/esm/constants/walletDefaults.d.ts +6 -0
- package/dist/esm/constants/walletDefaults.js +37 -0
- package/dist/esm/constants/walletDefaults.js.map +7 -0
- package/dist/esm/constants/walletMutationKeys.d.ts +14 -0
- package/dist/esm/constants/walletMutationKeys.js +21 -0
- package/dist/esm/constants/walletMutationKeys.js.map +7 -0
- package/dist/esm/contexts/walletContext.d.ts +11 -0
- package/dist/esm/contexts/walletContext.js +7 -0
- package/dist/esm/contexts/walletContext.js.map +7 -0
- package/dist/esm/errors/walletErrors.d.ts +22 -0
- package/dist/esm/errors/walletErrors.js +16 -0
- package/dist/esm/errors/walletErrors.js.map +7 -0
- package/dist/esm/hooks/networkConfig.d.ts +10 -0
- package/dist/esm/hooks/networkConfig.js +51 -0
- package/dist/esm/hooks/networkConfig.js.map +7 -0
- package/dist/esm/hooks/useHaneulClient.d.ts +3 -0
- package/dist/esm/hooks/useHaneulClient.js +30 -0
- package/dist/esm/hooks/useHaneulClient.js.map +7 -0
- package/dist/esm/hooks/useHaneulClientInfiniteQuery.d.ts +25 -0
- package/dist/esm/hooks/useHaneulClientInfiniteQuery.js +50 -0
- package/dist/esm/hooks/useHaneulClientInfiniteQuery.js.map +7 -0
- package/dist/esm/hooks/useHaneulClientMutation.d.ts +4 -0
- package/dist/esm/hooks/useHaneulClientMutation.js +40 -0
- package/dist/esm/hooks/useHaneulClientMutation.js.map +7 -0
- package/dist/esm/hooks/useHaneulClientQueries.d.ts +27 -0
- package/dist/esm/hooks/useHaneulClientQueries.js +50 -0
- package/dist/esm/hooks/useHaneulClientQueries.js.map +7 -0
- package/dist/esm/hooks/useHaneulClientQuery.d.ts +38 -0
- package/dist/esm/hooks/useHaneulClientQuery.js +74 -0
- package/dist/esm/hooks/useHaneulClientQuery.js.map +7 -0
- package/dist/esm/hooks/useResolveHaneulNSNames.d.ts +3 -0
- package/dist/esm/hooks/useResolveHaneulNSNames.js +61 -0
- package/dist/esm/hooks/useResolveHaneulNSNames.js.map +7 -0
- package/dist/esm/hooks/wallet/useAccounts.d.ts +5 -0
- package/dist/esm/hooks/wallet/useAccounts.js +27 -0
- package/dist/esm/hooks/wallet/useAccounts.js.map +7 -0
- package/dist/esm/hooks/wallet/useAutoConnectWallet.d.ts +1 -0
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js +208 -0
- package/dist/esm/hooks/wallet/useAutoConnectWallet.js.map +7 -0
- package/dist/esm/hooks/wallet/useConnectWallet.d.ts +15 -0
- package/dist/esm/hooks/wallet/useConnectWallet.js +85 -0
- package/dist/esm/hooks/wallet/useConnectWallet.js.map +7 -0
- package/dist/esm/hooks/wallet/useCurrentAccount.d.ts +5 -0
- package/dist/esm/hooks/wallet/useCurrentAccount.js +27 -0
- package/dist/esm/hooks/wallet/useCurrentAccount.js.map +7 -0
- package/dist/esm/hooks/wallet/useCurrentWallet.d.ts +25 -0
- package/dist/esm/hooks/wallet/useCurrentWallet.js +59 -0
- package/dist/esm/hooks/wallet/useCurrentWallet.js.map +7 -0
- package/dist/esm/hooks/wallet/useDisconnectWallet.d.ts +9 -0
- package/dist/esm/hooks/wallet/useDisconnectWallet.js +108 -0
- package/dist/esm/hooks/wallet/useDisconnectWallet.js.map +7 -0
- package/dist/esm/hooks/wallet/useReportTransactionEffects.d.ts +15 -0
- package/dist/esm/hooks/wallet/useReportTransactionEffects.js +123 -0
- package/dist/esm/hooks/wallet/useReportTransactionEffects.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.d.ts +29 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js +227 -0
- package/dist/esm/hooks/wallet/useSignAndExecuteTransaction.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignPersonalMessage.d.ts +13 -0
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js +163 -0
- package/dist/esm/hooks/wallet/useSignPersonalMessage.js.map +7 -0
- package/dist/esm/hooks/wallet/useSignTransaction.d.ts +18 -0
- package/dist/esm/hooks/wallet/useSignTransaction.js +209 -0
- package/dist/esm/hooks/wallet/useSignTransaction.js.map +7 -0
- package/dist/esm/hooks/wallet/useSlushWallet.d.ts +5 -0
- package/dist/esm/hooks/wallet/useSlushWallet.js +32 -0
- package/dist/esm/hooks/wallet/useSlushWallet.js.map +7 -0
- package/dist/esm/hooks/wallet/useSwitchAccount.d.ts +14 -0
- package/dist/esm/hooks/wallet/useSwitchAccount.js +113 -0
- package/dist/esm/hooks/wallet/useSwitchAccount.js.map +7 -0
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.d.ts +1 -0
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js +209 -0
- package/dist/esm/hooks/wallet/useUnsafeBurnerWallet.js.map +7 -0
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.d.ts +4 -0
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js +79 -0
- package/dist/esm/hooks/wallet/useWalletPropertiesChanged.js.map +7 -0
- package/dist/esm/hooks/wallet/useWalletStore.d.ts +2 -0
- package/dist/esm/hooks/wallet/useWalletStore.js +22 -0
- package/dist/esm/hooks/wallet/useWalletStore.js.map +7 -0
- package/dist/esm/hooks/wallet/useWallets.d.ts +4 -0
- package/dist/esm/hooks/wallet/useWallets.js +27 -0
- package/dist/esm/hooks/wallet/useWallets.js.map +7 -0
- package/dist/esm/hooks/wallet/useWalletsChanged.d.ts +5 -0
- package/dist/esm/hooks/wallet/useWalletsChanged.js +65 -0
- package/dist/esm/hooks/wallet/useWalletsChanged.js.map +7 -0
- package/dist/esm/index.css +458 -0
- package/dist/esm/index.css.map +7 -0
- package/dist/esm/index.d.ts +26 -0
- package/dist/esm/index.js +1914 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/themes/lightTheme.d.ts +2 -0
- package/dist/esm/themes/lightTheme.js +62 -0
- package/dist/esm/themes/lightTheme.js.map +7 -0
- package/dist/esm/themes/themeContract.d.ts +140 -0
- package/dist/esm/themes/themeContract.js +67 -0
- package/dist/esm/themes/themeContract.js.map +7 -0
- package/dist/esm/types/utilityTypes.d.ts +1 -0
- package/dist/esm/types/utilityTypes.js +1 -0
- package/dist/esm/types/utilityTypes.js.map +7 -0
- package/dist/esm/types.d.ts +2 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +7 -0
- package/dist/esm/utils/assertUnreachable.d.ts +4 -0
- package/dist/esm/utils/assertUnreachable.js +8 -0
- package/dist/esm/utils/assertUnreachable.js.map +7 -0
- package/dist/esm/utils/stateStorage.d.ts +2 -0
- package/dist/esm/utils/stateStorage.js +19 -0
- package/dist/esm/utils/stateStorage.js.map +7 -0
- package/dist/esm/utils/walletUtils.d.ts +3 -0
- package/dist/esm/utils/walletUtils.js +23 -0
- package/dist/esm/utils/walletUtils.js.map +7 -0
- package/dist/esm/walletStore.d.ts +42 -0
- package/dist/esm/walletStore.js +104 -0
- package/dist/esm/walletStore.js.map +7 -0
- package/dist/index.css/package.json +5 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +106 -0
- package/src/components/AccountDropdownMenu.css.ts +52 -0
- package/src/components/AccountDropdownMenu.tsx +87 -0
- package/src/components/ConnectButton.tsx +37 -0
- package/src/components/HaneulClientProvider.tsx +96 -0
- package/src/components/WalletProvider.tsx +114 -0
- package/src/components/connect-modal/ConnectModal.css.ts +124 -0
- package/src/components/connect-modal/ConnectModal.tsx +174 -0
- package/src/components/connect-modal/InfoSection.css.ts +10 -0
- package/src/components/connect-modal/InfoSection.tsx +24 -0
- package/src/components/connect-modal/views/ConnectionStatus.css.ts +35 -0
- package/src/components/connect-modal/views/ConnectionStatus.tsx +52 -0
- package/src/components/connect-modal/views/GettingStarted.css.ts +25 -0
- package/src/components/connect-modal/views/GettingStarted.tsx +38 -0
- package/src/components/connect-modal/views/WhatIsAWallet.css.ts +19 -0
- package/src/components/connect-modal/views/WhatIsAWallet.tsx +23 -0
- package/src/components/connect-modal/wallet-list/WalletList.css.ts +10 -0
- package/src/components/connect-modal/wallet-list/WalletList.tsx +46 -0
- package/src/components/connect-modal/wallet-list/WalletListItem.css.ts +35 -0
- package/src/components/connect-modal/wallet-list/WalletListItem.tsx +36 -0
- package/src/components/icons/BackIcon.tsx +17 -0
- package/src/components/icons/CheckIcon.tsx +15 -0
- package/src/components/icons/ChevronIcon.tsx +18 -0
- package/src/components/icons/CloseIcon.tsx +15 -0
- package/src/components/styling/InjectedThemeStyles.tsx +51 -0
- package/src/components/styling/StyleMarker.css.ts +48 -0
- package/src/components/styling/StyleMarker.tsx +24 -0
- package/src/components/ui/Button.css.ts +50 -0
- package/src/components/ui/Button.tsx +31 -0
- package/src/components/ui/Heading.css.ts +43 -0
- package/src/components/ui/Heading.tsx +52 -0
- package/src/components/ui/IconButton.css.ts +16 -0
- package/src/components/ui/IconButton.tsx +24 -0
- package/src/components/ui/Text.css.ts +38 -0
- package/src/components/ui/Text.tsx +50 -0
- package/src/constants/styleDataAttribute.ts +8 -0
- package/src/constants/walletDefaults.ts +24 -0
- package/src/constants/walletMutationKeys.ts +22 -0
- package/src/contexts/walletContext.ts +8 -0
- package/src/errors/walletErrors.ts +24 -0
- package/src/hooks/networkConfig.ts +45 -0
- package/src/hooks/useHaneulClient.ts +23 -0
- package/src/hooks/useHaneulClientInfiniteQuery.ts +78 -0
- package/src/hooks/useHaneulClientMutation.ts +27 -0
- package/src/hooks/useHaneulClientQueries.ts +68 -0
- package/src/hooks/useHaneulClientQuery.ts +123 -0
- package/src/hooks/useResolveHaneulNSNames.ts +30 -0
- package/src/hooks/wallet/useAccounts.ts +13 -0
- package/src/hooks/wallet/useAutoConnectWallet.ts +92 -0
- package/src/hooks/wallet/useConnectWallet.ts +86 -0
- package/src/hooks/wallet/useCurrentAccount.ts +13 -0
- package/src/hooks/wallet/useCurrentWallet.ts +44 -0
- package/src/hooks/wallet/useDisconnectWallet.ts +53 -0
- package/src/hooks/wallet/useReportTransactionEffects.ts +82 -0
- package/src/hooks/wallet/useSignAndExecuteTransaction.ts +171 -0
- package/src/hooks/wallet/useSignPersonalMessage.ts +100 -0
- package/src/hooks/wallet/useSignTransaction.ts +124 -0
- package/src/hooks/wallet/useSlushWallet.ts +40 -0
- package/src/hooks/wallet/useSwitchAccount.ts +60 -0
- package/src/hooks/wallet/useUnsafeBurnerWallet.ts +207 -0
- package/src/hooks/wallet/useWalletPropertiesChanged.ts +29 -0
- package/src/hooks/wallet/useWalletStore.ts +18 -0
- package/src/hooks/wallet/useWallets.ts +11 -0
- package/src/hooks/wallet/useWalletsChanged.ts +41 -0
- package/src/index.ts +30 -0
- package/src/themes/lightTheme.ts +63 -0
- package/src/themes/themeContract.ts +97 -0
- package/src/types/utilityTypes.ts +4 -0
- package/src/types.ts +5 -0
- package/src/utils/assertUnreachable.ts +9 -0
- package/src/utils/stateStorage.ts +19 -0
- package/src/utils/walletUtils.ts +37 -0
- package/src/walletStore.ts +144 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// src/hooks/wallet/useSignPersonalMessage.ts
|
|
2
|
+
import { useMutation } from "@tanstack/react-query";
|
|
3
|
+
|
|
4
|
+
// src/errors/walletErrors.ts
|
|
5
|
+
var WalletNotConnectedError = class extends Error {
|
|
6
|
+
};
|
|
7
|
+
var WalletNoAccountSelectedError = class extends Error {
|
|
8
|
+
};
|
|
9
|
+
var WalletFeatureNotSupportedError = class extends Error {
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// src/constants/walletMutationKeys.ts
|
|
13
|
+
var walletMutationKeys = {
|
|
14
|
+
all: { baseScope: "wallet" },
|
|
15
|
+
connectWallet: formMutationKeyFn("connect-wallet"),
|
|
16
|
+
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
17
|
+
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
18
|
+
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
19
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
20
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
21
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
22
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
23
|
+
};
|
|
24
|
+
function formMutationKeyFn(baseEntity) {
|
|
25
|
+
return function mutationKeyFn(additionalKeys = []) {
|
|
26
|
+
return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// src/hooks/useHaneulClient.ts
|
|
31
|
+
import { useContext } from "react";
|
|
32
|
+
|
|
33
|
+
// src/components/HaneulClientProvider.tsx
|
|
34
|
+
import { getFullnodeUrl, isHaneulClient, HaneulClient } from "@haneullabs/haneul/client";
|
|
35
|
+
import { createContext, useMemo, useState } from "react";
|
|
36
|
+
import { jsx } from "react/jsx-runtime";
|
|
37
|
+
var HaneulClientContext = createContext(null);
|
|
38
|
+
var DEFAULT_NETWORKS = {
|
|
39
|
+
localnet: { url: getFullnodeUrl("localnet") }
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/hooks/useHaneulClient.ts
|
|
43
|
+
function useHaneulClientContext() {
|
|
44
|
+
const haneulClient = useContext(HaneulClientContext);
|
|
45
|
+
if (!haneulClient) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
"Could not find HaneulClientContext. Ensure that you have set up the HaneulClientProvider"
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
return haneulClient;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
54
|
+
import { useContext as useContext2 } from "react";
|
|
55
|
+
import { useStore } from "zustand";
|
|
56
|
+
|
|
57
|
+
// src/contexts/walletContext.ts
|
|
58
|
+
import { createContext as createContext2 } from "react";
|
|
59
|
+
var WalletContext = createContext2(null);
|
|
60
|
+
|
|
61
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
62
|
+
function useWalletStore(selector) {
|
|
63
|
+
const store = useContext2(WalletContext);
|
|
64
|
+
if (!store) {
|
|
65
|
+
throw new Error(
|
|
66
|
+
"Could not find WalletContext. Ensure that you have set up the WalletProvider."
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
return useStore(store, selector);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// src/hooks/wallet/useCurrentAccount.ts
|
|
73
|
+
function useCurrentAccount() {
|
|
74
|
+
return useWalletStore((state) => state.currentAccount);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// src/hooks/wallet/useCurrentWallet.ts
|
|
78
|
+
function useCurrentWallet() {
|
|
79
|
+
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
80
|
+
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
81
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
82
|
+
switch (connectionStatus) {
|
|
83
|
+
case "connecting":
|
|
84
|
+
return {
|
|
85
|
+
connectionStatus,
|
|
86
|
+
currentWallet: null,
|
|
87
|
+
isDisconnected: false,
|
|
88
|
+
isConnecting: true,
|
|
89
|
+
isConnected: false,
|
|
90
|
+
supportedIntents: []
|
|
91
|
+
};
|
|
92
|
+
case "disconnected":
|
|
93
|
+
return {
|
|
94
|
+
connectionStatus,
|
|
95
|
+
currentWallet: null,
|
|
96
|
+
isDisconnected: true,
|
|
97
|
+
isConnecting: false,
|
|
98
|
+
isConnected: false,
|
|
99
|
+
supportedIntents: []
|
|
100
|
+
};
|
|
101
|
+
case "connected": {
|
|
102
|
+
return {
|
|
103
|
+
connectionStatus,
|
|
104
|
+
currentWallet,
|
|
105
|
+
isDisconnected: false,
|
|
106
|
+
isConnecting: false,
|
|
107
|
+
isConnected: true,
|
|
108
|
+
supportedIntents
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// src/hooks/wallet/useSignPersonalMessage.ts
|
|
115
|
+
function useSignPersonalMessage({
|
|
116
|
+
mutationKey,
|
|
117
|
+
...mutationOptions
|
|
118
|
+
} = {}) {
|
|
119
|
+
const { currentWallet } = useCurrentWallet();
|
|
120
|
+
const currentAccount = useCurrentAccount();
|
|
121
|
+
const { network } = useHaneulClientContext();
|
|
122
|
+
return useMutation({
|
|
123
|
+
mutationKey: walletMutationKeys.signPersonalMessage(mutationKey),
|
|
124
|
+
mutationFn: async (signPersonalMessageArgs) => {
|
|
125
|
+
if (!currentWallet) {
|
|
126
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
127
|
+
}
|
|
128
|
+
const signerAccount = signPersonalMessageArgs.account ?? currentAccount;
|
|
129
|
+
if (!signerAccount) {
|
|
130
|
+
throw new WalletNoAccountSelectedError(
|
|
131
|
+
"No wallet account is selected to sign the personal message with."
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
const signPersonalMessageFeature = currentWallet.features["sui:signPersonalMessage"];
|
|
135
|
+
if (signPersonalMessageFeature) {
|
|
136
|
+
return await signPersonalMessageFeature.signPersonalMessage({
|
|
137
|
+
...signPersonalMessageArgs,
|
|
138
|
+
account: signerAccount,
|
|
139
|
+
chain: signPersonalMessageArgs.chain ?? `sui:${network}`
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
const signMessageFeature = currentWallet.features["sui:signMessage"];
|
|
143
|
+
if (signMessageFeature) {
|
|
144
|
+
console.warn(
|
|
145
|
+
"This wallet doesn't support the `signPersonalMessage` feature... falling back to `signMessage`."
|
|
146
|
+
);
|
|
147
|
+
const { messageBytes, signature } = await signMessageFeature.signMessage({
|
|
148
|
+
...signPersonalMessageArgs,
|
|
149
|
+
account: signerAccount
|
|
150
|
+
});
|
|
151
|
+
return { bytes: messageBytes, signature };
|
|
152
|
+
}
|
|
153
|
+
throw new WalletFeatureNotSupportedError(
|
|
154
|
+
"This wallet doesn't support the `signPersonalMessage` feature."
|
|
155
|
+
);
|
|
156
|
+
},
|
|
157
|
+
...mutationOptions
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
export {
|
|
161
|
+
useSignPersonalMessage
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=useSignPersonalMessage.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/hooks/wallet/useSignPersonalMessage.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/hooks/useHaneulClient.ts", "../../../../src/components/HaneulClientProvider.tsx", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n\tHaneulSignPersonalMessageInput,\n\tHaneulSignPersonalMessageOutput,\n} from '@haneullabs/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport {\n\tWalletFeatureNotSupportedError,\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../..//errors/walletErrors.js';\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useHaneulClientContext } from '../useHaneulClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseSignPersonalMessageArgs = PartialBy<HaneulSignPersonalMessageInput, 'account' | 'chain'>;\n\ntype UseSignPersonalMessageResult = HaneulSignPersonalMessageOutput;\n\ntype UseSignPersonalMessageError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseSignPersonalMessageMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tUseSignPersonalMessageResult,\n\t\tUseSignPersonalMessageError,\n\t\tUseSignPersonalMessageArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useSignPersonalMessage({\n\tmutationKey,\n\t...mutationOptions\n}: UseSignPersonalMessageMutationOptions = {}): UseMutationResult<\n\tUseSignPersonalMessageResult,\n\tUseSignPersonalMessageError,\n\tUseSignPersonalMessageArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\tconst { network } = useHaneulClientContext();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.signPersonalMessage(mutationKey),\n\t\tmutationFn: async (signPersonalMessageArgs) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst signerAccount = signPersonalMessageArgs.account ?? currentAccount;\n\t\t\tif (!signerAccount) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to sign the personal message with.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst signPersonalMessageFeature = currentWallet.features['sui:signPersonalMessage'];\n\t\t\tif (signPersonalMessageFeature) {\n\t\t\t\treturn await signPersonalMessageFeature.signPersonalMessage({\n\t\t\t\t\t...signPersonalMessageArgs,\n\t\t\t\t\taccount: signerAccount,\n\t\t\t\t\tchain: signPersonalMessageArgs.chain ?? `sui:${network}`,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// TODO: Remove this once we officially discontinue sui:signMessage in the wallet standard\n\t\t\tconst signMessageFeature = currentWallet.features['sui:signMessage'];\n\t\t\tif (signMessageFeature) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"This wallet doesn't support the `signPersonalMessage` feature... falling back to `signMessage`.\",\n\t\t\t\t);\n\n\t\t\t\tconst { messageBytes, signature } = await signMessageFeature.signMessage({\n\t\t\t\t\t...signPersonalMessageArgs,\n\t\t\t\t\taccount: signerAccount,\n\t\t\t\t});\n\t\t\t\treturn { bytes: messageBytes, signature };\n\t\t\t}\n\n\t\t\tthrow new WalletFeatureNotSupportedError(\n\t\t\t\t\"This wallet doesn't support the `signPersonalMessage` feature.\",\n\t\t\t);\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransaction: formMutationKeyFn('sign-transaction'),\n\tsignAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n\treportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { HaneulClient } from '@haneullabs/haneul/client';\nimport { useContext } from 'react';\n\nimport { HaneulClientContext } from '../components/HaneulClientProvider.js';\n\nexport function useHaneulClientContext() {\n\tconst haneulClient = useContext(HaneulClientContext);\n\n\tif (!haneulClient) {\n\t\tthrow new Error(\n\t\t\t'Could not find HaneulClientContext. Ensure that you have set up the HaneulClientProvider',\n\t\t);\n\t}\n\n\treturn haneulClient;\n}\n\nexport function useHaneulClient(): HaneulClient {\n\treturn useHaneulClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFullnodeUrl, isHaneulClient, HaneulClient } from '@haneullabs/haneul/client';\nimport type { HaneulClientOptions } from '@haneullabs/haneul/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | HaneulClient = NetworkConfig | HaneulClient> = Record<\n\tstring,\n\tT\n>;\n\nexport interface HaneulClientProviderContext {\n\tclient: HaneulClient;\n\tnetworks: NetworkConfigs;\n\tnetwork: string;\n\tconfig: NetworkConfig | null;\n\tselectNetwork: (network: string) => void;\n}\n\nexport const HaneulClientContext = createContext<HaneulClientProviderContext | null>(null);\n\nexport type HaneulClientProviderProps<T extends NetworkConfigs> = {\n\tcreateClient?: (name: keyof T, config: T[keyof T]) => HaneulClient;\n\tchildren: React.ReactNode;\n\tnetworks?: T;\n\tonNetworkChange?: (network: keyof T & string) => void;\n} & (\n\t| {\n\t\t\tdefaultNetwork?: keyof T & string;\n\t\t\tnetwork?: never;\n\t }\n\t| {\n\t\t\tdefaultNetwork?: never;\n\t\t\tnetwork?: keyof T & string;\n\t }\n);\n\nconst DEFAULT_NETWORKS = {\n\tlocalnet: { url: getFullnodeUrl('localnet') },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n\t_name: string,\n\tconfig: NetworkConfig | HaneulClient,\n) {\n\tif (isHaneulClient(config)) {\n\t\treturn config;\n\t}\n\n\treturn new HaneulClient(config);\n};\n\nexport function HaneulClientProvider<T extends NetworkConfigs>(props: HaneulClientProviderProps<T>) {\n\tconst { onNetworkChange, network, children } = props;\n\tconst networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n\tconst createClient =\n\t\t(props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n\tconst [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n\t\tprops.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n\t);\n\n\tconst currentNetwork = props.network ?? selectedNetwork;\n\n\tconst client = useMemo(() => {\n\t\treturn createClient(currentNetwork, networks[currentNetwork]);\n\t}, [createClient, currentNetwork, networks]);\n\n\tconst ctx = useMemo((): HaneulClientProviderContext => {\n\t\treturn {\n\t\t\tclient,\n\t\t\tnetworks,\n\t\t\tnetwork: currentNetwork,\n\t\t\tconfig:\n\t\t\t\tnetworks[currentNetwork] instanceof HaneulClient\n\t\t\t\t\t? null\n\t\t\t\t\t: (networks[currentNetwork] as HaneulClientOptions),\n\t\t\tselectNetwork: (newNetwork) => {\n\t\t\t\tif (currentNetwork === newNetwork) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!network && newNetwork !== selectedNetwork) {\n\t\t\t\t\tsetSelectedNetwork(newNetwork);\n\t\t\t\t}\n\n\t\t\t\tonNetworkChange?.(newNetwork);\n\t\t\t},\n\t\t};\n\t}, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n\treturn <HaneulClientContext.Provider value={ctx}>{children}</HaneulClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@haneullabs/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\tconst supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t\tsupportedIntents,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useContext", "createContext", "useContext"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Transaction } from '@haneullabs/haneul/transactions';
|
|
2
|
+
import type { SignedTransaction, HaneulSignTransactionInput } from '@haneullabs/wallet-standard';
|
|
3
|
+
import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
4
|
+
import { WalletFeatureNotSupportedError, WalletNoAccountSelectedError, WalletNotConnectedError } from '../../errors/walletErrors.js';
|
|
5
|
+
import type { PartialBy } from '../../types/utilityTypes.js';
|
|
6
|
+
type UseSignTransactionArgs = PartialBy<Omit<HaneulSignTransactionInput, 'transaction'>, 'account' | 'chain'> & {
|
|
7
|
+
transaction: Transaction | string;
|
|
8
|
+
};
|
|
9
|
+
interface UseSignTransactionResult extends SignedTransaction {
|
|
10
|
+
reportTransactionEffects: (effects: string) => void;
|
|
11
|
+
}
|
|
12
|
+
type UseSignTransactionError = WalletFeatureNotSupportedError | WalletNoAccountSelectedError | WalletNotConnectedError | Error;
|
|
13
|
+
type UseSignTransactionMutationOptions = Omit<UseMutationOptions<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs, unknown>, 'mutationFn'>;
|
|
14
|
+
/**
|
|
15
|
+
* Mutation hook for prompting the user to sign a transaction.
|
|
16
|
+
*/
|
|
17
|
+
export declare function useSignTransaction({ mutationKey, ...mutationOptions }?: UseSignTransactionMutationOptions): UseMutationResult<UseSignTransactionResult, UseSignTransactionError, UseSignTransactionArgs>;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// src/hooks/wallet/useSignTransaction.ts
|
|
2
|
+
import { signTransaction } from "@haneullabs/wallet-standard";
|
|
3
|
+
import { useMutation as useMutation2 } from "@tanstack/react-query";
|
|
4
|
+
|
|
5
|
+
// src/constants/walletMutationKeys.ts
|
|
6
|
+
var walletMutationKeys = {
|
|
7
|
+
all: { baseScope: "wallet" },
|
|
8
|
+
connectWallet: formMutationKeyFn("connect-wallet"),
|
|
9
|
+
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
10
|
+
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
11
|
+
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
12
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
13
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
14
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
15
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
16
|
+
};
|
|
17
|
+
function formMutationKeyFn(baseEntity) {
|
|
18
|
+
return function mutationKeyFn(additionalKeys = []) {
|
|
19
|
+
return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// src/errors/walletErrors.ts
|
|
24
|
+
var WalletNotConnectedError = class extends Error {
|
|
25
|
+
};
|
|
26
|
+
var WalletNoAccountSelectedError = class extends Error {
|
|
27
|
+
};
|
|
28
|
+
var WalletFeatureNotSupportedError = class extends Error {
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// src/hooks/useHaneulClient.ts
|
|
32
|
+
import { useContext } from "react";
|
|
33
|
+
|
|
34
|
+
// src/components/HaneulClientProvider.tsx
|
|
35
|
+
import { getFullnodeUrl, isHaneulClient, HaneulClient } from "@haneullabs/haneul/client";
|
|
36
|
+
import { createContext, useMemo, useState } from "react";
|
|
37
|
+
import { jsx } from "react/jsx-runtime";
|
|
38
|
+
var HaneulClientContext = createContext(null);
|
|
39
|
+
var DEFAULT_NETWORKS = {
|
|
40
|
+
localnet: { url: getFullnodeUrl("localnet") }
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
// src/hooks/useHaneulClient.ts
|
|
44
|
+
function useHaneulClientContext() {
|
|
45
|
+
const haneulClient = useContext(HaneulClientContext);
|
|
46
|
+
if (!haneulClient) {
|
|
47
|
+
throw new Error(
|
|
48
|
+
"Could not find HaneulClientContext. Ensure that you have set up the HaneulClientProvider"
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
return haneulClient;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
55
|
+
import { useContext as useContext2 } from "react";
|
|
56
|
+
import { useStore } from "zustand";
|
|
57
|
+
|
|
58
|
+
// src/contexts/walletContext.ts
|
|
59
|
+
import { createContext as createContext2 } from "react";
|
|
60
|
+
var WalletContext = createContext2(null);
|
|
61
|
+
|
|
62
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
63
|
+
function useWalletStore(selector) {
|
|
64
|
+
const store = useContext2(WalletContext);
|
|
65
|
+
if (!store) {
|
|
66
|
+
throw new Error(
|
|
67
|
+
"Could not find WalletContext. Ensure that you have set up the WalletProvider."
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
return useStore(store, selector);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// src/hooks/wallet/useCurrentAccount.ts
|
|
74
|
+
function useCurrentAccount() {
|
|
75
|
+
return useWalletStore((state) => state.currentAccount);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// src/hooks/wallet/useCurrentWallet.ts
|
|
79
|
+
function useCurrentWallet() {
|
|
80
|
+
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
81
|
+
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
82
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
83
|
+
switch (connectionStatus) {
|
|
84
|
+
case "connecting":
|
|
85
|
+
return {
|
|
86
|
+
connectionStatus,
|
|
87
|
+
currentWallet: null,
|
|
88
|
+
isDisconnected: false,
|
|
89
|
+
isConnecting: true,
|
|
90
|
+
isConnected: false,
|
|
91
|
+
supportedIntents: []
|
|
92
|
+
};
|
|
93
|
+
case "disconnected":
|
|
94
|
+
return {
|
|
95
|
+
connectionStatus,
|
|
96
|
+
currentWallet: null,
|
|
97
|
+
isDisconnected: true,
|
|
98
|
+
isConnecting: false,
|
|
99
|
+
isConnected: false,
|
|
100
|
+
supportedIntents: []
|
|
101
|
+
};
|
|
102
|
+
case "connected": {
|
|
103
|
+
return {
|
|
104
|
+
connectionStatus,
|
|
105
|
+
currentWallet,
|
|
106
|
+
isDisconnected: false,
|
|
107
|
+
isConnecting: false,
|
|
108
|
+
isConnected: true,
|
|
109
|
+
supportedIntents
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// src/hooks/wallet/useReportTransactionEffects.ts
|
|
116
|
+
import { toBase64 } from "@haneullabs/haneul/utils";
|
|
117
|
+
import { useMutation } from "@tanstack/react-query";
|
|
118
|
+
function useReportTransactionEffects({
|
|
119
|
+
mutationKey,
|
|
120
|
+
...mutationOptions
|
|
121
|
+
} = {}) {
|
|
122
|
+
const { currentWallet } = useCurrentWallet();
|
|
123
|
+
const currentAccount = useCurrentAccount();
|
|
124
|
+
return useMutation({
|
|
125
|
+
mutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),
|
|
126
|
+
mutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {
|
|
127
|
+
if (!currentWallet) {
|
|
128
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
129
|
+
}
|
|
130
|
+
if (!account) {
|
|
131
|
+
throw new WalletNoAccountSelectedError(
|
|
132
|
+
"No wallet account is selected to report transaction effects for"
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
const reportTransactionEffectsFeature = currentWallet.features["sui:reportTransactionEffects"];
|
|
136
|
+
if (reportTransactionEffectsFeature) {
|
|
137
|
+
return await reportTransactionEffectsFeature.reportTransactionEffects({
|
|
138
|
+
effects: Array.isArray(effects) ? toBase64(new Uint8Array(effects)) : effects,
|
|
139
|
+
account,
|
|
140
|
+
chain: chain ?? currentWallet?.chains[0]
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
...mutationOptions
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// src/hooks/wallet/useSignTransaction.ts
|
|
149
|
+
function useSignTransaction({
|
|
150
|
+
mutationKey,
|
|
151
|
+
...mutationOptions
|
|
152
|
+
} = {}) {
|
|
153
|
+
const { currentWallet } = useCurrentWallet();
|
|
154
|
+
const currentAccount = useCurrentAccount();
|
|
155
|
+
const { client, network } = useHaneulClientContext();
|
|
156
|
+
const { mutate: reportTransactionEffects } = useReportTransactionEffects();
|
|
157
|
+
return useMutation2({
|
|
158
|
+
mutationKey: walletMutationKeys.signTransaction(mutationKey),
|
|
159
|
+
mutationFn: async ({ transaction, ...signTransactionArgs }) => {
|
|
160
|
+
if (!currentWallet) {
|
|
161
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
162
|
+
}
|
|
163
|
+
const signerAccount = signTransactionArgs.account ?? currentAccount;
|
|
164
|
+
if (!signerAccount) {
|
|
165
|
+
throw new WalletNoAccountSelectedError(
|
|
166
|
+
"No wallet account is selected to sign the transaction with."
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
if (!currentWallet.features["sui:signTransaction"] && !currentWallet.features["sui:signTransactionBlock"]) {
|
|
170
|
+
throw new WalletFeatureNotSupportedError(
|
|
171
|
+
"This wallet doesn't support the `signTransaction` feature."
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
if (typeof transaction !== "string" && "setSenderIfNotSet" in transaction) {
|
|
175
|
+
transaction.setSenderIfNotSet(signerAccount.address);
|
|
176
|
+
}
|
|
177
|
+
const chain = signTransactionArgs.chain ?? `sui:${network}`;
|
|
178
|
+
const { bytes, signature } = await signTransaction(currentWallet, {
|
|
179
|
+
...signTransactionArgs,
|
|
180
|
+
transaction: {
|
|
181
|
+
toJSON: async () => {
|
|
182
|
+
return typeof transaction === "string" ? transaction : await transaction.toJSON({
|
|
183
|
+
supportedIntents: [],
|
|
184
|
+
client
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
account: signerAccount,
|
|
189
|
+
chain
|
|
190
|
+
});
|
|
191
|
+
return {
|
|
192
|
+
bytes,
|
|
193
|
+
signature,
|
|
194
|
+
reportTransactionEffects: (effects) => {
|
|
195
|
+
reportTransactionEffects({
|
|
196
|
+
effects,
|
|
197
|
+
account: signerAccount,
|
|
198
|
+
chain
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
},
|
|
203
|
+
...mutationOptions
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
export {
|
|
207
|
+
useSignTransaction
|
|
208
|
+
};
|
|
209
|
+
//# sourceMappingURL=useSignTransaction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/hooks/wallet/useSignTransaction.ts", "../../../../src/constants/walletMutationKeys.ts", "../../../../src/errors/walletErrors.ts", "../../../../src/hooks/useHaneulClient.ts", "../../../../src/components/HaneulClientProvider.tsx", "../../../../src/hooks/wallet/useWalletStore.ts", "../../../../src/contexts/walletContext.ts", "../../../../src/hooks/wallet/useCurrentAccount.ts", "../../../../src/hooks/wallet/useCurrentWallet.ts", "../../../../src/hooks/wallet/useReportTransactionEffects.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@haneullabs/haneul/transactions';\nimport { signTransaction } from '@haneullabs/wallet-standard';\nimport type { SignedTransaction, HaneulSignTransactionInput } from '@haneullabs/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport {\n\tWalletFeatureNotSupportedError,\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useHaneulClientContext } from '../useHaneulClient.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\nimport { useReportTransactionEffects } from './useReportTransactionEffects.js';\n\ntype UseSignTransactionArgs = PartialBy<\n\tOmit<HaneulSignTransactionInput, 'transaction'>,\n\t'account' | 'chain'\n> & {\n\ttransaction: Transaction | string;\n};\n\ninterface UseSignTransactionResult extends SignedTransaction {\n\treportTransactionEffects: (effects: string) => void;\n}\n\ntype UseSignTransactionError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseSignTransactionMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tUseSignTransactionResult,\n\t\tUseSignTransactionError,\n\t\tUseSignTransactionArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a transaction.\n */\nexport function useSignTransaction({\n\tmutationKey,\n\t...mutationOptions\n}: UseSignTransactionMutationOptions = {}): UseMutationResult<\n\tUseSignTransactionResult,\n\tUseSignTransactionError,\n\tUseSignTransactionArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\tconst { client, network } = useHaneulClientContext();\n\n\tconst { mutate: reportTransactionEffects } = useReportTransactionEffects();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.signTransaction(mutationKey),\n\t\tmutationFn: async ({ transaction, ...signTransactionArgs }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tconst signerAccount = signTransactionArgs.account ?? currentAccount;\n\t\t\tif (!signerAccount) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to sign the transaction with.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!currentWallet.features['sui:signTransaction'] &&\n\t\t\t\t!currentWallet.features['sui:signTransactionBlock']\n\t\t\t) {\n\t\t\t\tthrow new WalletFeatureNotSupportedError(\n\t\t\t\t\t\"This wallet doesn't support the `signTransaction` feature.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof transaction !== 'string' && 'setSenderIfNotSet' in transaction) {\n\t\t\t\ttransaction.setSenderIfNotSet(signerAccount.address);\n\t\t\t}\n\n\t\t\tconst chain = signTransactionArgs.chain ?? `sui:${network}`;\n\t\t\tconst { bytes, signature } = await signTransaction(currentWallet, {\n\t\t\t\t...signTransactionArgs,\n\t\t\t\ttransaction: {\n\t\t\t\t\ttoJSON: async () => {\n\t\t\t\t\t\treturn typeof transaction === 'string'\n\t\t\t\t\t\t\t? transaction\n\t\t\t\t\t\t\t: await transaction.toJSON({\n\t\t\t\t\t\t\t\t\tsupportedIntents: [],\n\t\t\t\t\t\t\t\t\tclient,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taccount: signerAccount,\n\t\t\t\tchain,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tbytes,\n\t\t\t\tsignature,\n\t\t\t\treportTransactionEffects: (effects) => {\n\t\t\t\t\treportTransactionEffects({\n\t\t\t\t\t\teffects,\n\t\t\t\t\t\taccount: signerAccount,\n\t\t\t\t\t\tchain,\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { MutationKey } from '@tanstack/react-query';\n\nexport const walletMutationKeys = {\n\tall: { baseScope: 'wallet' },\n\tconnectWallet: formMutationKeyFn('connect-wallet'),\n\tautoconnectWallet: formMutationKeyFn('autoconnect-wallet'),\n\tdisconnectWallet: formMutationKeyFn('disconnect-wallet'),\n\tsignPersonalMessage: formMutationKeyFn('sign-personal-message'),\n\tsignTransaction: formMutationKeyFn('sign-transaction'),\n\tsignAndExecuteTransaction: formMutationKeyFn('sign-and-execute-transaction'),\n\tswitchAccount: formMutationKeyFn('switch-account'),\n\treportTransactionEffects: formMutationKeyFn('report-transaction-effects'),\n};\n\nfunction formMutationKeyFn(baseEntity: string) {\n\treturn function mutationKeyFn(additionalKeys: MutationKey = []) {\n\t\treturn [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];\n\t};\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires an active wallet connection.\n */\nexport class WalletNotConnectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that requires a selected wallet account.\n * This is more of an edge case stemming from the fact that wallets don't technically require you to authorize any\n * accounts when connecting a wallet.\n */\nexport class WalletNoAccountSelectedError extends Error {}\n\n/**\n * An error that is instantiated when someone attempts to perform an action that isn't supported by a wallet.\n */\nexport class WalletFeatureNotSupportedError extends Error {}\n\n/**\n * An error that is instantiated when a wallet account can't be found for a specific wallet.\n */\nexport class WalletAccountNotFoundError extends Error {}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { HaneulClient } from '@haneullabs/haneul/client';\nimport { useContext } from 'react';\n\nimport { HaneulClientContext } from '../components/HaneulClientProvider.js';\n\nexport function useHaneulClientContext() {\n\tconst haneulClient = useContext(HaneulClientContext);\n\n\tif (!haneulClient) {\n\t\tthrow new Error(\n\t\t\t'Could not find HaneulClientContext. Ensure that you have set up the HaneulClientProvider',\n\t\t);\n\t}\n\n\treturn haneulClient;\n}\n\nexport function useHaneulClient(): HaneulClient {\n\treturn useHaneulClientContext().client;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { getFullnodeUrl, isHaneulClient, HaneulClient } from '@haneullabs/haneul/client';\nimport type { HaneulClientOptions } from '@haneullabs/haneul/client';\nimport { createContext, useMemo, useState } from 'react';\n\nimport type { NetworkConfig } from '../hooks/networkConfig.js';\n\ntype NetworkConfigs<T extends NetworkConfig | HaneulClient = NetworkConfig | HaneulClient> = Record<\n\tstring,\n\tT\n>;\n\nexport interface HaneulClientProviderContext {\n\tclient: HaneulClient;\n\tnetworks: NetworkConfigs;\n\tnetwork: string;\n\tconfig: NetworkConfig | null;\n\tselectNetwork: (network: string) => void;\n}\n\nexport const HaneulClientContext = createContext<HaneulClientProviderContext | null>(null);\n\nexport type HaneulClientProviderProps<T extends NetworkConfigs> = {\n\tcreateClient?: (name: keyof T, config: T[keyof T]) => HaneulClient;\n\tchildren: React.ReactNode;\n\tnetworks?: T;\n\tonNetworkChange?: (network: keyof T & string) => void;\n} & (\n\t| {\n\t\t\tdefaultNetwork?: keyof T & string;\n\t\t\tnetwork?: never;\n\t }\n\t| {\n\t\t\tdefaultNetwork?: never;\n\t\t\tnetwork?: keyof T & string;\n\t }\n);\n\nconst DEFAULT_NETWORKS = {\n\tlocalnet: { url: getFullnodeUrl('localnet') },\n};\n\nconst DEFAULT_CREATE_CLIENT = function createClient(\n\t_name: string,\n\tconfig: NetworkConfig | HaneulClient,\n) {\n\tif (isHaneulClient(config)) {\n\t\treturn config;\n\t}\n\n\treturn new HaneulClient(config);\n};\n\nexport function HaneulClientProvider<T extends NetworkConfigs>(props: HaneulClientProviderProps<T>) {\n\tconst { onNetworkChange, network, children } = props;\n\tconst networks = (props.networks ?? DEFAULT_NETWORKS) as T;\n\tconst createClient =\n\t\t(props.createClient as typeof DEFAULT_CREATE_CLIENT) ?? DEFAULT_CREATE_CLIENT;\n\n\tconst [selectedNetwork, setSelectedNetwork] = useState<keyof T & string>(\n\t\tprops.network ?? props.defaultNetwork ?? (Object.keys(networks)[0] as keyof T & string),\n\t);\n\n\tconst currentNetwork = props.network ?? selectedNetwork;\n\n\tconst client = useMemo(() => {\n\t\treturn createClient(currentNetwork, networks[currentNetwork]);\n\t}, [createClient, currentNetwork, networks]);\n\n\tconst ctx = useMemo((): HaneulClientProviderContext => {\n\t\treturn {\n\t\t\tclient,\n\t\t\tnetworks,\n\t\t\tnetwork: currentNetwork,\n\t\t\tconfig:\n\t\t\t\tnetworks[currentNetwork] instanceof HaneulClient\n\t\t\t\t\t? null\n\t\t\t\t\t: (networks[currentNetwork] as HaneulClientOptions),\n\t\t\tselectNetwork: (newNetwork) => {\n\t\t\t\tif (currentNetwork === newNetwork) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!network && newNetwork !== selectedNetwork) {\n\t\t\t\t\tsetSelectedNetwork(newNetwork);\n\t\t\t\t}\n\n\t\t\t\tonNetworkChange?.(newNetwork);\n\t\t\t},\n\t\t};\n\t}, [client, networks, selectedNetwork, currentNetwork, network, onNetworkChange]);\n\n\treturn <HaneulClientContext.Provider value={ctx}>{children}</HaneulClientContext.Provider>;\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useContext } from 'react';\nimport { useStore } from 'zustand';\n\nimport { WalletContext } from '../../contexts/walletContext.js';\nimport type { StoreState } from '../../walletStore.js';\n\nexport function useWalletStore<T>(selector: (state: StoreState) => T): T {\n\tconst store = useContext(WalletContext);\n\tif (!store) {\n\t\tthrow new Error(\n\t\t\t'Could not find WalletContext. Ensure that you have set up the WalletProvider.',\n\t\t);\n\t}\n\treturn useStore(store, selector);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createContext } from 'react';\n\nimport type { WalletStore } from '../walletStore.js';\n\nexport const WalletContext = createContext<WalletStore | null>(null);\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { WalletAccount } from '@haneullabs/wallet-standard';\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet account that is currently selected, if one exists.\n */\nexport function useCurrentAccount(): WalletAccount | null {\n\treturn useWalletStore((state) => state.currentAccount);\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { useWalletStore } from './useWalletStore.js';\n\n/**\n * Retrieves the wallet that is currently connected to the dApp, if one exists.\n */\nexport function useCurrentWallet() {\n\tconst currentWallet = useWalletStore((state) => state.currentWallet);\n\tconst connectionStatus = useWalletStore((state) => state.connectionStatus);\n\tconst supportedIntents = useWalletStore((state) => state.supportedIntents);\n\n\tswitch (connectionStatus) {\n\t\tcase 'connecting':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: true,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'disconnected':\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: null,\n\t\t\t\tisDisconnected: true,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: false,\n\t\t\t\tsupportedIntents: [],\n\t\t\t} as const;\n\t\tcase 'connected': {\n\t\t\treturn {\n\t\t\t\tconnectionStatus,\n\t\t\t\tcurrentWallet: currentWallet!,\n\t\t\t\tisDisconnected: false,\n\t\t\t\tisConnecting: false,\n\t\t\t\tisConnected: true,\n\t\t\t\tsupportedIntents,\n\t\t\t} as const;\n\t\t}\n\t}\n}\n", "// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@haneullabs/haneul/utils';\nimport type { HaneulReportTransactionEffectsInput } from '@haneullabs/wallet-standard';\nimport type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';\nimport { useMutation } from '@tanstack/react-query';\n\nimport { walletMutationKeys } from '../../constants/walletMutationKeys.js';\nimport type { WalletFeatureNotSupportedError } from '../../errors/walletErrors.js';\nimport {\n\tWalletNoAccountSelectedError,\n\tWalletNotConnectedError,\n} from '../../errors/walletErrors.js';\nimport type { PartialBy } from '../../types/utilityTypes.js';\nimport { useCurrentAccount } from './useCurrentAccount.js';\nimport { useCurrentWallet } from './useCurrentWallet.js';\n\ntype UseReportTransactionEffectsArgs = Omit<\n\tPartialBy<HaneulReportTransactionEffectsInput, 'account' | 'chain'>,\n\t'effects'\n> & {\n\teffects: string | number[];\n};\n\ntype UseReportTransactionEffectsError =\n\t| WalletFeatureNotSupportedError\n\t| WalletNoAccountSelectedError\n\t| WalletNotConnectedError\n\t| Error;\n\ntype UseReportTransactionEffectsMutationOptions = Omit<\n\tUseMutationOptions<\n\t\tvoid,\n\t\tUseReportTransactionEffectsError,\n\t\tUseReportTransactionEffectsArgs,\n\t\tunknown\n\t>,\n\t'mutationFn'\n>;\n\n/**\n * Mutation hook for prompting the user to sign a message.\n */\nexport function useReportTransactionEffects({\n\tmutationKey,\n\t...mutationOptions\n}: UseReportTransactionEffectsMutationOptions = {}): UseMutationResult<\n\tvoid,\n\tUseReportTransactionEffectsError,\n\tUseReportTransactionEffectsArgs\n> {\n\tconst { currentWallet } = useCurrentWallet();\n\tconst currentAccount = useCurrentAccount();\n\n\treturn useMutation({\n\t\tmutationKey: walletMutationKeys.reportTransactionEffects(mutationKey),\n\t\tmutationFn: async ({ effects, chain = currentWallet?.chains[0], account = currentAccount }) => {\n\t\t\tif (!currentWallet) {\n\t\t\t\tthrow new WalletNotConnectedError('No wallet is connected.');\n\t\t\t}\n\n\t\t\tif (!account) {\n\t\t\t\tthrow new WalletNoAccountSelectedError(\n\t\t\t\t\t'No wallet account is selected to report transaction effects for',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst reportTransactionEffectsFeature =\n\t\t\t\tcurrentWallet.features['sui:reportTransactionEffects'];\n\n\t\t\tif (reportTransactionEffectsFeature) {\n\t\t\t\treturn await reportTransactionEffectsFeature.reportTransactionEffects({\n\t\t\t\t\teffects: Array.isArray(effects) ? toBase64(new Uint8Array(effects)) : effects,\n\t\t\t\t\taccount,\n\t\t\t\t\tchain: chain ?? currentWallet?.chains[0],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t...mutationOptions,\n\t});\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["useMutation", "useContext", "createContext", "useContext", "useMutation"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/hooks/wallet/useSlushWallet.ts
|
|
2
|
+
import { registerSlushWallet } from "@haneullabs/slush-wallet";
|
|
3
|
+
import { useLayoutEffect } from "react";
|
|
4
|
+
function useSlushWallet(config) {
|
|
5
|
+
useLayoutEffect(() => {
|
|
6
|
+
if (!config?.name) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let cleanup;
|
|
10
|
+
let isMounted = true;
|
|
11
|
+
try {
|
|
12
|
+
const result = registerSlushWallet(config.name, {
|
|
13
|
+
origin: config.origin
|
|
14
|
+
});
|
|
15
|
+
if (isMounted && result) {
|
|
16
|
+
cleanup = result.unregister;
|
|
17
|
+
} else if (result) {
|
|
18
|
+
result.unregister();
|
|
19
|
+
}
|
|
20
|
+
} catch (error) {
|
|
21
|
+
console.error("Failed to register Slush wallet:", error);
|
|
22
|
+
}
|
|
23
|
+
return () => {
|
|
24
|
+
isMounted = false;
|
|
25
|
+
if (cleanup) cleanup();
|
|
26
|
+
};
|
|
27
|
+
}, [config?.name, config?.origin]);
|
|
28
|
+
}
|
|
29
|
+
export {
|
|
30
|
+
useSlushWallet
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=useSlushWallet.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/hooks/wallet/useSlushWallet.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { registerSlushWallet } from '@haneullabs/slush-wallet';\nimport { useLayoutEffect } from 'react';\n\nexport interface SlushWalletConfig {\n\tname: string;\n\torigin?: string;\n}\n\nexport function useSlushWallet(config?: SlushWalletConfig) {\n\tuseLayoutEffect(() => {\n\t\tif (!config?.name) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet cleanup: (() => void) | undefined;\n\t\tlet isMounted = true;\n\n\t\ttry {\n\t\t\tconst result = registerSlushWallet(config.name, {\n\t\t\t\torigin: config.origin,\n\t\t\t});\n\n\t\t\tif (isMounted && result) {\n\t\t\t\tcleanup = result.unregister;\n\t\t\t} else if (result) {\n\t\t\t\tresult.unregister();\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to register Slush wallet:', error);\n\t\t}\n\n\t\treturn () => {\n\t\t\tisMounted = false;\n\t\t\tif (cleanup) cleanup();\n\t\t};\n\t}, [config?.name, config?.origin]);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,2BAA2B;AACpC,SAAS,uBAAuB;AAOzB,SAAS,eAAe,QAA4B;AAC1D,kBAAgB,MAAM;AACrB,QAAI,CAAC,QAAQ,MAAM;AAClB;AAAA,IACD;AAEA,QAAI;AACJ,QAAI,YAAY;AAEhB,QAAI;AACH,YAAM,SAAS,oBAAoB,OAAO,MAAM;AAAA,QAC/C,QAAQ,OAAO;AAAA,MAChB,CAAC;AAED,UAAI,aAAa,QAAQ;AACxB,kBAAU,OAAO;AAAA,MAClB,WAAW,QAAQ;AAClB,eAAO,WAAW;AAAA,MACnB;AAAA,IACD,SAAS,OAAO;AACf,cAAQ,MAAM,oCAAoC,KAAK;AAAA,IACxD;AAEA,WAAO,MAAM;AACZ,kBAAY;AACZ,UAAI,QAAS,SAAQ;AAAA,IACtB;AAAA,EACD,GAAG,CAAC,QAAQ,MAAM,QAAQ,MAAM,CAAC;AAClC;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { WalletAccount } from '@haneullabs/wallet-standard';
|
|
2
|
+
import type { UseMutationOptions, UseMutationResult } from '@tanstack/react-query';
|
|
3
|
+
import { WalletAccountNotFoundError, WalletNotConnectedError } from '../../errors/walletErrors.js';
|
|
4
|
+
type SwitchAccountArgs = {
|
|
5
|
+
account: WalletAccount;
|
|
6
|
+
};
|
|
7
|
+
type SwitchAccountResult = void;
|
|
8
|
+
type UseSwitchAccountError = WalletNotConnectedError | WalletAccountNotFoundError | Error;
|
|
9
|
+
type UseSwitchAccountMutationOptions = Omit<UseMutationOptions<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs, unknown>, 'mutationFn'>;
|
|
10
|
+
/**
|
|
11
|
+
* Mutation hook for switching to a specific wallet account.
|
|
12
|
+
*/
|
|
13
|
+
export declare function useSwitchAccount({ mutationKey, ...mutationOptions }?: UseSwitchAccountMutationOptions): UseMutationResult<SwitchAccountResult, UseSwitchAccountError, SwitchAccountArgs>;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// src/hooks/wallet/useSwitchAccount.ts
|
|
2
|
+
import { useMutation } from "@tanstack/react-query";
|
|
3
|
+
|
|
4
|
+
// src/constants/walletMutationKeys.ts
|
|
5
|
+
var walletMutationKeys = {
|
|
6
|
+
all: { baseScope: "wallet" },
|
|
7
|
+
connectWallet: formMutationKeyFn("connect-wallet"),
|
|
8
|
+
autoconnectWallet: formMutationKeyFn("autoconnect-wallet"),
|
|
9
|
+
disconnectWallet: formMutationKeyFn("disconnect-wallet"),
|
|
10
|
+
signPersonalMessage: formMutationKeyFn("sign-personal-message"),
|
|
11
|
+
signTransaction: formMutationKeyFn("sign-transaction"),
|
|
12
|
+
signAndExecuteTransaction: formMutationKeyFn("sign-and-execute-transaction"),
|
|
13
|
+
switchAccount: formMutationKeyFn("switch-account"),
|
|
14
|
+
reportTransactionEffects: formMutationKeyFn("report-transaction-effects")
|
|
15
|
+
};
|
|
16
|
+
function formMutationKeyFn(baseEntity) {
|
|
17
|
+
return function mutationKeyFn(additionalKeys = []) {
|
|
18
|
+
return [{ ...walletMutationKeys.all, baseEntity }, ...additionalKeys];
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// src/errors/walletErrors.ts
|
|
23
|
+
var WalletNotConnectedError = class extends Error {
|
|
24
|
+
};
|
|
25
|
+
var WalletAccountNotFoundError = class extends Error {
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
29
|
+
import { useContext } from "react";
|
|
30
|
+
import { useStore } from "zustand";
|
|
31
|
+
|
|
32
|
+
// src/contexts/walletContext.ts
|
|
33
|
+
import { createContext } from "react";
|
|
34
|
+
var WalletContext = createContext(null);
|
|
35
|
+
|
|
36
|
+
// src/hooks/wallet/useWalletStore.ts
|
|
37
|
+
function useWalletStore(selector) {
|
|
38
|
+
const store = useContext(WalletContext);
|
|
39
|
+
if (!store) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
"Could not find WalletContext. Ensure that you have set up the WalletProvider."
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return useStore(store, selector);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// src/hooks/wallet/useCurrentWallet.ts
|
|
48
|
+
function useCurrentWallet() {
|
|
49
|
+
const currentWallet = useWalletStore((state) => state.currentWallet);
|
|
50
|
+
const connectionStatus = useWalletStore((state) => state.connectionStatus);
|
|
51
|
+
const supportedIntents = useWalletStore((state) => state.supportedIntents);
|
|
52
|
+
switch (connectionStatus) {
|
|
53
|
+
case "connecting":
|
|
54
|
+
return {
|
|
55
|
+
connectionStatus,
|
|
56
|
+
currentWallet: null,
|
|
57
|
+
isDisconnected: false,
|
|
58
|
+
isConnecting: true,
|
|
59
|
+
isConnected: false,
|
|
60
|
+
supportedIntents: []
|
|
61
|
+
};
|
|
62
|
+
case "disconnected":
|
|
63
|
+
return {
|
|
64
|
+
connectionStatus,
|
|
65
|
+
currentWallet: null,
|
|
66
|
+
isDisconnected: true,
|
|
67
|
+
isConnecting: false,
|
|
68
|
+
isConnected: false,
|
|
69
|
+
supportedIntents: []
|
|
70
|
+
};
|
|
71
|
+
case "connected": {
|
|
72
|
+
return {
|
|
73
|
+
connectionStatus,
|
|
74
|
+
currentWallet,
|
|
75
|
+
isDisconnected: false,
|
|
76
|
+
isConnecting: false,
|
|
77
|
+
isConnected: true,
|
|
78
|
+
supportedIntents
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// src/hooks/wallet/useSwitchAccount.ts
|
|
85
|
+
function useSwitchAccount({
|
|
86
|
+
mutationKey,
|
|
87
|
+
...mutationOptions
|
|
88
|
+
} = {}) {
|
|
89
|
+
const { currentWallet } = useCurrentWallet();
|
|
90
|
+
const setAccountSwitched = useWalletStore((state) => state.setAccountSwitched);
|
|
91
|
+
return useMutation({
|
|
92
|
+
mutationKey: walletMutationKeys.switchAccount(mutationKey),
|
|
93
|
+
mutationFn: async ({ account }) => {
|
|
94
|
+
if (!currentWallet) {
|
|
95
|
+
throw new WalletNotConnectedError("No wallet is connected.");
|
|
96
|
+
}
|
|
97
|
+
const accountToSelect = currentWallet.accounts.find(
|
|
98
|
+
(walletAccount) => walletAccount.address === account.address
|
|
99
|
+
);
|
|
100
|
+
if (!accountToSelect) {
|
|
101
|
+
throw new WalletAccountNotFoundError(
|
|
102
|
+
`No account with address ${account.address} is connected to ${currentWallet.name}.`
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
setAccountSwitched(accountToSelect);
|
|
106
|
+
},
|
|
107
|
+
...mutationOptions
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
export {
|
|
111
|
+
useSwitchAccount
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=useSwitchAccount.js.map
|