@eternalab/endless-wallet-provider
v0.1.2
Published
React wallet provider for Endless blockchain
Downloads
19
Maintainers
Readme
@eternalab/endless-wallet-provider
React wallet provider for Endless blockchain. Supports both Hop Wallet (browser extension) and Official Wallet SDK.
Installation
npm install @eternalab/endless-wallet-providerUsage
1. Wrap your app with WalletProvider
import { WalletProvider } from '@eternalab/endless-wallet-provider';
function App() {
return (
<WalletProvider
config={{
autoConnect: true,
storageKey: 'my-app-wallet'
}}
onConnect={(account) => console.log('Connected:', account)}
onDisconnect={() => console.log('Disconnected')}
onError={(error) => console.error('Error:', error)}
>
<YourApp />
</WalletProvider>
);
}2. Use the hook in your components
import { useEndlessWallet, HOP_WALLET_NAME, OFFICIAL_WALLET_NAME } from '@eternalab/endless-wallet-provider';
function WalletButton() {
const {
isConnected,
isConnecting,
account,
network,
connect,
disconnect,
selectWallet,
signAndSubmitTransaction
} = useEndlessWallet();
const handleConnect = async () => {
await selectWallet(HOP_WALLET_NAME); // or OFFICIAL_WALLET_NAME
await connect();
};
if (isConnecting) {
return <button disabled>Connecting...</button>;
}
if (isConnected) {
return (
<div>
<p>Connected: {account?.address}</p>
<p>Network: {network?.name}</p>
<button onClick={disconnect}>Disconnect</button>
</div>
);
}
return <button onClick={handleConnect}>Connect Wallet</button>;
}3. Sign and submit transactions
const { signAndSubmitTransaction } = useEndlessWallet();
const handleTransaction = async () => {
const result = await signAndSubmitTransaction({
payload: {
function: '0x1::coin::transfer',
typeArguments: ['0x1::eds::EDS'],
functionArguments: [recipientAddress, amount]
},
maxGasAmount: 10000,
gasUnitPrice: 100
});
if (result?.status === 'Approved') {
console.log('Transaction hash:', result.args.hash);
}
};API
WalletProvider Props
| Prop | Type | Description |
|------|------|-------------|
| config.autoConnect | boolean | Auto-connect on page load (default: true) |
| config.storageKey | string | localStorage key for wallet selection |
| onConnect | (account: AccountInfo) => void | Called when wallet connects |
| onDisconnect | () => void | Called when wallet disconnects |
| onAccountChange | (account: AccountInfo \| null) => void | Called when account changes |
| onNetworkChange | (network: NetworkInfo \| null) => void | Called when network changes |
| onError | (error: string) => void | Called on errors |
useEndlessWallet Returns
| Property | Type | Description |
|----------|------|-------------|
| selectedWallet | string \| null | Currently selected wallet name |
| isAvailable | boolean | Whether the wallet is installed/available |
| isConnected | boolean | Whether connected to wallet |
| isConnecting | boolean | Whether currently connecting |
| account | AccountInfo \| null | Connected account info |
| network | NetworkInfo \| null | Current network info |
| error | string \| null | Last error message |
| connect | () => Promise<boolean> | Connect to wallet |
| disconnect | () => Promise<void> | Disconnect from wallet |
| selectWallet | (name: string) => Promise<void> | Select wallet type |
| signMessage | (message: string) => Promise<...> | Sign a message |
| signAndSubmitTransaction | (tx) => Promise<...> | Sign and submit transaction |
| refreshAccount | () => Promise<void> | Refresh account data |
| getAdapter | () => WalletAdapter \| null | Get underlying adapter |
Supported Wallets
- HopWallet (
HOP_WALLET_NAME): Browser extension wallet - OfficialWallet (
OFFICIAL_WALLET_NAME): Endless Web3 SDK wallet
License
MIT
