@cookill/wallet-adapter 0.1.0 → 2.4.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/README.md +93 -69
- package/dist/index.cjs +65 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +51 -48
- package/dist/index.d.ts +51 -48
- package/dist/index.js +64 -16
- package/dist/index.js.map +1 -1
- package/dist/react.cjs +302 -120
- package/dist/react.cjs.map +1 -1
- package/dist/react.d.cts +32 -56
- package/dist/react.d.ts +32 -56
- package/dist/react.js +299 -122
- package/dist/react.js.map +1 -1
- package/dist/standard.cjs +80 -14
- package/dist/standard.cjs.map +1 -1
- package/dist/standard.d.cts +12 -4
- package/dist/standard.d.ts +12 -4
- package/dist/standard.js +80 -15
- package/dist/standard.js.map +1 -1
- package/package.json +5 -4
package/dist/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/react.tsx"],"names":[],"mappings":"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","file":"react.js","sourcesContent":["/**\n * @cookillabs/wallet-adapter\n * Community wallet adapter for Rialo blockchain dApps\n * \n * ⚠️ DISCLAIMER: This is a community package, NOT officially maintained by Rialo.\n * For official Rialo packages, see: https://www.npmjs.com/package/@rialo/frost\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** Supported Rialo chains */\nexport type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';\n\n/** Network shorthand */\nexport type RialoNetwork = 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\n/** Wallet account */\nexport interface WalletAccount {\n address: string;\n publicKey?: Uint8Array | string;\n label?: string;\n}\n\n/** Transaction request */\nexport interface TransactionRequest {\n to: string;\n value: string;\n data?: string;\n memo?: string;\n}\n\n/** Transaction result */\nexport interface TransactionResult {\n hash: string;\n status: 'pending' | 'confirmed' | 'failed';\n blockNumber?: number;\n}\n\n/** Signed message */\nexport interface SignedMessage {\n signature: string;\n message: string;\n address: string;\n}\n\n/** Network configuration */\nexport interface NetworkConfig {\n chainId: string;\n name: string;\n rpcUrl: string;\n wsUrl?: string;\n explorerUrl?: string;\n}\n\n/** Wallet info for registry */\nexport interface WalletInfo {\n id: string;\n name: string;\n icon: string;\n installed?: boolean;\n downloadUrl?: string;\n}\n\n/** Wallet adapter events */\nexport type WalletEvent = 'connect' | 'disconnect' | 'accountChange' | 'networkChange' | 'error';\n\n// ============================================================================\n// Network Configurations\n// ============================================================================\n\nexport const NETWORKS: Record<RialoNetwork, NetworkConfig> = {\n mainnet: {\n chainId: 'rialo:mainnet',\n name: 'Rialo Mainnet',\n rpcUrl: 'https://mainnet.rialo.io:4101',\n wsUrl: 'wss://mainnet.rialo.io:4102',\n explorerUrl: 'https://explorer.rialo.io',\n },\n testnet: {\n chainId: 'rialo:testnet',\n name: 'Rialo Testnet',\n rpcUrl: 'https://testnet.rialo.io:4101',\n wsUrl: 'wss://testnet.rialo.io:4102',\n explorerUrl: 'https://testnet.explorer.rialo.io',\n },\n devnet: {\n chainId: 'rialo:devnet',\n name: 'Rialo Devnet',\n rpcUrl: 'https://devnet.rialo.io:4101',\n wsUrl: 'wss://devnet.rialo.io:4102',\n explorerUrl: 'https://devnet.explorer.rialo.io',\n },\n localnet: {\n chainId: 'rialo:localnet',\n name: 'Rialo Localnet',\n rpcUrl: 'http://localhost:4101',\n wsUrl: 'ws://localhost:4102',\n explorerUrl: 'http://localhost:3000',\n },\n};\n\n// ============================================================================\n// Wallet Provider Interface\n// ============================================================================\n\n/**\n * Provider interface injected by Rialo Wallet extension\n * Available at window.rialo when extension is installed\n */\nexport interface RialoProvider {\n isRialo: boolean;\n version: string;\n\n // Connection\n connect(): Promise<string[]>;\n disconnect(): Promise<void>;\n isConnected(): Promise<boolean>;\n getAccounts(): Promise<string[]>;\n\n // Transactions\n signTransaction(tx: TransactionRequest): Promise<{ signature: string; rawTransaction?: string }>;\n sendTransaction(tx: TransactionRequest): Promise<TransactionResult>;\n signAndSendTransaction(tx: TransactionRequest): Promise<TransactionResult>;\n\n // Message signing\n signMessage(message: string): Promise<SignedMessage>;\n\n // Network\n getNetwork(): Promise<string>;\n switchNetwork(network: RialoNetwork): Promise<void>;\n getBalance(address?: string): Promise<string>;\n\n // Events\n on(event: WalletEvent, callback: (data: unknown) => void): () => void;\n removeListener(event: WalletEvent, callback: (data: unknown) => void): void;\n removeAllListeners(event?: WalletEvent): void;\n}\n\n// ============================================================================\n// Detection & Access\n// ============================================================================\n\n/**\n * Check if Rialo Wallet extension is installed\n */\nexport function isRialoInstalled(): boolean {\n if (typeof window === 'undefined') return false;\n return !!(window as RialoWindow).rialo?.isRialo;\n}\n\n/**\n * Get the Rialo provider if available\n */\nexport function getRialoProvider(): RialoProvider | undefined {\n if (typeof window === 'undefined') return undefined;\n const rialo = (window as RialoWindow).rialo;\n return rialo?.isRialo ? rialo : undefined;\n}\n\n/**\n * Wait for Rialo provider to be available (with timeout)\n */\nexport function waitForRialoProvider(timeout = 3000): Promise<RialoProvider | undefined> {\n return new Promise((resolve) => {\n if (isRialoInstalled()) {\n resolve(getRialoProvider());\n return;\n }\n\n const checkInterval = setInterval(() => {\n if (isRialoInstalled()) {\n clearInterval(checkInterval);\n resolve(getRialoProvider());\n }\n }, 100);\n\n setTimeout(() => {\n clearInterval(checkInterval);\n resolve(undefined);\n }, timeout);\n });\n}\n\n// ============================================================================\n// Simple Wallet Class (Non-React)\n// ============================================================================\n\nexport class RialoWallet {\n private provider: RialoProvider | undefined;\n private _connected = false;\n private _accounts: WalletAccount[] = [];\n private _network: RialoNetwork = 'devnet';\n\n constructor() {\n this.provider = getRialoProvider();\n }\n\n get isInstalled(): boolean {\n return isRialoInstalled();\n }\n\n get connected(): boolean {\n return this._connected;\n }\n\n get accounts(): WalletAccount[] {\n return this._accounts;\n }\n\n get activeAccount(): WalletAccount | undefined {\n return this._accounts[0];\n }\n\n get network(): RialoNetwork {\n return this._network;\n }\n\n async connect(): Promise<WalletAccount[]> {\n this.provider = getRialoProvider();\n if (!this.provider) {\n throw new Error('Rialo Wallet not installed. Download at https://rialo.io/wallet');\n }\n\n const addresses = await this.provider.connect();\n this._accounts = addresses.map((address) => ({ address }));\n this._connected = true;\n\n const networkStr = await this.provider.getNetwork();\n this._network = networkStr.replace('rialo:', '') as RialoNetwork;\n\n return this._accounts;\n }\n\n async disconnect(): Promise<void> {\n if (this.provider) {\n await this.provider.disconnect();\n }\n this._connected = false;\n this._accounts = [];\n }\n\n async signMessage(message: string): Promise<SignedMessage> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n return this.provider.signMessage(message);\n }\n\n async signTransaction(tx: TransactionRequest): Promise<string> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n const result = await this.provider.signTransaction(tx);\n return result.signature;\n }\n\n async sendTransaction(tx: TransactionRequest): Promise<TransactionResult> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n return this.provider.sendTransaction(tx);\n }\n\n async signAndSendTransaction(tx: TransactionRequest): Promise<TransactionResult> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n return this.provider.signAndSendTransaction(tx);\n }\n\n async getBalance(address?: string): Promise<string> {\n if (!this.provider) {\n throw new Error('Wallet not available');\n }\n return this.provider.getBalance(address);\n }\n\n async switchNetwork(network: RialoNetwork): Promise<void> {\n if (!this.provider) {\n throw new Error('Wallet not available');\n }\n await this.provider.switchNetwork(network);\n this._network = network;\n }\n\n on(event: WalletEvent, callback: (data: unknown) => void): () => void {\n if (!this.provider) {\n return () => {};\n }\n return this.provider.on(event, callback);\n }\n}\n\n// ============================================================================\n// Utility Functions\n// ============================================================================\n\n/**\n * Format address for display (truncated base58)\n */\nexport function formatAddress(address: string, chars = 4): string {\n if (!address) return '';\n if (address.length <= chars * 2 + 3) return address;\n return `${address.slice(0, chars + 2)}...${address.slice(-chars)}`;\n}\n\n/**\n * Format balance from kelvins (smallest unit) to RLO\n */\nexport function formatBalance(kelvins: string | bigint, decimals = 4): string {\n const value = typeof kelvins === 'string' ? BigInt(kelvins) : kelvins;\n const rlo = Number(value) / 1_000_000_000;\n return rlo.toFixed(decimals);\n}\n\n/**\n * Parse RLO to kelvins\n */\nexport function parseBalance(rlo: string | number): bigint {\n const value = typeof rlo === 'string' ? parseFloat(rlo) : rlo;\n return BigInt(Math.floor(value * 1_000_000_000));\n}\n\n/**\n * Validate Rialo address format (base58)\n * Real Rialo addresses are base58 encoded public keys (32-50 chars)\n */\nexport function isValidAddress(address: string): boolean {\n if (!address || typeof address !== 'string') return false;\n if (address.length < 32 || address.length > 50) return false;\n \n // Base58 character set (no 0, O, I, l)\n const base58Regex = /^[1-9A-HJ-NP-Za-km-z]+$/;\n return base58Regex.test(address);\n}\n\n// ============================================================================\n// Window Extension\n// ============================================================================\n\ninterface RialoWindow extends Window {\n rialo?: RialoProvider;\n}\n\ndeclare global {\n interface Window {\n rialo?: RialoProvider;\n }\n}\n\n// ============================================================================\n// Default Export\n// ============================================================================\n\nexport default RialoWallet;\n","/**\n * @rialo/wallet-adapter/react\n * React hooks and components for Rialo Wallet integration\n */\n\nimport React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n ReactNode,\n} from 'react';\nimport {\n RialoProvider,\n RialoNetwork,\n WalletAccount,\n TransactionRequest,\n TransactionResult,\n SignedMessage,\n WalletInfo,\n isRialoInstalled,\n getRialoProvider,\n formatAddress,\n formatBalance,\n NETWORKS,\n} from './index';\n\n// ============================================================================\n// Context Types\n// ============================================================================\n\nexport interface WalletContextState {\n // State\n connected: boolean;\n connecting: boolean;\n accounts: WalletAccount[];\n activeAccount: WalletAccount | null;\n network: RialoNetwork;\n balance: string | null;\n\n // Wallet info\n wallets: WalletInfo[];\n selectedWallet: WalletInfo | null;\n isInstalled: boolean;\n\n // Actions\n connect: () => Promise<WalletAccount[]>;\n disconnect: () => Promise<void>;\n selectWallet: (walletId: string) => void;\n switchNetwork: (network: RialoNetwork) => Promise<void>;\n\n // Transactions\n signMessage: (message: string) => Promise<SignedMessage>;\n signTransaction: (tx: TransactionRequest) => Promise<string>;\n sendTransaction: (tx: TransactionRequest) => Promise<TransactionResult>;\n signAndSendTransaction: (tx: TransactionRequest) => Promise<TransactionResult>;\n\n // Modal\n isModalOpen: boolean;\n openModal: () => void;\n closeModal: () => void;\n}\n\n// ============================================================================\n// Provider Props\n// ============================================================================\n\nexport interface WalletProviderProps {\n children: ReactNode;\n /** Default network (default: devnet) */\n network?: RialoNetwork;\n /** Auto-connect on mount (default: true) */\n autoConnect?: boolean;\n /** Additional wallets to support */\n wallets?: WalletInfo[];\n /** Custom styles */\n theme?: 'light' | 'dark' | 'auto';\n /** Callback when connected */\n onConnect?: (accounts: WalletAccount[]) => void;\n /** Callback when disconnected */\n onDisconnect?: () => void;\n /** Callback on error */\n onError?: (error: Error) => void;\n}\n\n// ============================================================================\n// Default Wallets\n// ============================================================================\n\nconst DEFAULT_WALLETS: WalletInfo[] = [\n {\n id: 'rialo',\n name: 'Rialo Wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+',\n downloadUrl: 'https://rialo.io/wallet',\n },\n];\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst WalletContext = createContext<WalletContextState | null>(null);\n\n// ============================================================================\n// Provider Component\n// ============================================================================\n\nexport function WalletProvider({\n children,\n network: initialNetwork = 'devnet',\n autoConnect = true,\n wallets: customWallets = [],\n onConnect,\n onDisconnect,\n onError,\n}: WalletProviderProps) {\n // State\n const [connected, setConnected] = useState(false);\n const [connecting, setConnecting] = useState(false);\n const [accounts, setAccounts] = useState<WalletAccount[]>([]);\n const [network, setNetwork] = useState<RialoNetwork>(initialNetwork);\n const [balance, setBalance] = useState<string | null>(null);\n const [selectedWallet, setSelectedWallet] = useState<WalletInfo | null>(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [provider, setProvider] = useState<RialoProvider | undefined>();\n\n // Merge wallets\n const wallets: WalletInfo[] = [...DEFAULT_WALLETS, ...customWallets].map((w) => ({\n ...w,\n installed: w.id === 'rialo' ? isRialoInstalled() : false,\n }));\n\n // Active account\n const activeAccount = accounts[0] || null;\n const isInstalled = isRialoInstalled();\n\n // Initialize provider\n useEffect(() => {\n const p = getRialoProvider();\n setProvider(p);\n\n if (p) {\n setSelectedWallet(wallets.find((w) => w.id === 'rialo') || null);\n }\n }, []);\n\n // Auto-connect\n useEffect(() => {\n if (autoConnect && provider && !connected && !connecting) {\n provider.isConnected().then((isConn) => {\n if (isConn) {\n handleConnect();\n }\n });\n }\n }, [provider, autoConnect]);\n\n // Fetch balance when connected\n useEffect(() => {\n if (connected && activeAccount && provider) {\n provider.getBalance(activeAccount.address).then(setBalance).catch(console.error);\n }\n }, [connected, activeAccount, provider]);\n\n // Listen for provider events\n useEffect(() => {\n if (!provider) return;\n\n const unsubConnect = provider.on('connect', () => {\n setConnected(true);\n });\n\n const unsubDisconnect = provider.on('disconnect', () => {\n setConnected(false);\n setAccounts([]);\n setBalance(null);\n onDisconnect?.();\n });\n\n const unsubAccountChange = provider.on('accountChange', (data: unknown) => {\n const { accounts: newAccounts } = data as { accounts: string[] };\n setAccounts(newAccounts.map((address) => ({ address })));\n });\n\n return () => {\n unsubConnect();\n unsubDisconnect();\n unsubAccountChange();\n };\n }, [provider, onDisconnect]);\n\n // Connect\n const handleConnect = useCallback(async (): Promise<WalletAccount[]> => {\n if (!provider) {\n const error = new Error('Rialo Wallet not installed');\n onError?.(error);\n throw error;\n }\n\n setConnecting(true);\n try {\n const addresses = await provider.connect();\n const walletAccounts = addresses.map((address) => ({ address }));\n setAccounts(walletAccounts);\n setConnected(true);\n setIsModalOpen(false);\n onConnect?.(walletAccounts);\n return walletAccounts;\n } catch (error) {\n onError?.(error as Error);\n throw error;\n } finally {\n setConnecting(false);\n }\n }, [provider, onConnect, onError]);\n\n // Disconnect\n const handleDisconnect = useCallback(async () => {\n if (provider) {\n await provider.disconnect();\n }\n setConnected(false);\n setAccounts([]);\n setBalance(null);\n onDisconnect?.();\n }, [provider, onDisconnect]);\n\n // Select wallet\n const selectWallet = useCallback((walletId: string) => {\n const wallet = wallets.find((w) => w.id === walletId);\n if (wallet) {\n setSelectedWallet(wallet);\n if (wallet.installed) {\n handleConnect();\n } else if (wallet.downloadUrl) {\n window.open(wallet.downloadUrl, '_blank');\n }\n }\n }, [wallets, handleConnect]);\n\n // Switch network\n const handleSwitchNetwork = useCallback(async (newNetwork: RialoNetwork) => {\n if (provider) {\n await provider.switchNetwork(newNetwork);\n }\n setNetwork(newNetwork);\n }, [provider]);\n\n // Sign message\n const handleSignMessage = useCallback(async (message: string): Promise<SignedMessage> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n return provider.signMessage(message);\n }, [provider, connected]);\n\n // Sign transaction\n const handleSignTransaction = useCallback(async (tx: TransactionRequest): Promise<string> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n const result = await provider.signTransaction(tx);\n return result.signature;\n }, [provider, connected]);\n\n // Send transaction\n const handleSendTransaction = useCallback(async (tx: TransactionRequest): Promise<TransactionResult> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n return provider.sendTransaction(tx);\n }, [provider, connected]);\n\n // Sign and send transaction\n const handleSignAndSendTransaction = useCallback(async (tx: TransactionRequest): Promise<TransactionResult> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n return provider.signAndSendTransaction(tx);\n }, [provider, connected]);\n\n // Modal controls\n const openModal = useCallback(() => setIsModalOpen(true), []);\n const closeModal = useCallback(() => setIsModalOpen(false), []);\n\n // Context value\n const value: WalletContextState = {\n connected,\n connecting,\n accounts,\n activeAccount,\n network,\n balance,\n wallets,\n selectedWallet,\n isInstalled,\n connect: handleConnect,\n disconnect: handleDisconnect,\n selectWallet,\n switchNetwork: handleSwitchNetwork,\n signMessage: handleSignMessage,\n signTransaction: handleSignTransaction,\n sendTransaction: handleSendTransaction,\n signAndSendTransaction: handleSignAndSendTransaction,\n isModalOpen,\n openModal,\n closeModal,\n };\n\n return (\n <WalletContext.Provider value={value}>\n {children}\n </WalletContext.Provider>\n );\n}\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\n/**\n * Main wallet hook - access all wallet functionality\n */\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error('useWallet must be used within WalletProvider');\n }\n return context;\n}\n\n/**\n * Check if wallet is connected\n */\nexport function useIsConnected(): boolean {\n const { connected } = useWallet();\n return connected;\n}\n\n/**\n * Get active account\n */\nexport function useActiveAccount(): WalletAccount | null {\n const { activeAccount } = useWallet();\n return activeAccount;\n}\n\n/**\n * Get all accounts\n */\nexport function useAccounts(): WalletAccount[] {\n const { accounts } = useWallet();\n return accounts;\n}\n\n/**\n * Get current balance\n */\nexport function useBalance(): { balance: string | null; formatted: string } {\n const { balance } = useWallet();\n return {\n balance,\n formatted: balance ? formatBalance(balance) : '0.0000',\n };\n}\n\n/**\n * Get current network\n */\nexport function useNetwork(): { network: RialoNetwork; config: typeof NETWORKS.devnet } {\n const { network } = useWallet();\n return {\n network,\n config: NETWORKS[network],\n };\n}\n\n/**\n * Connect wallet hook\n */\nexport function useConnectWallet() {\n const { connect, connecting, openModal, isInstalled } = useWallet();\n return {\n connect: isInstalled ? connect : openModal,\n connecting,\n isInstalled,\n };\n}\n\n/**\n * Disconnect wallet hook\n */\nexport function useDisconnectWallet() {\n const { disconnect } = useWallet();\n return { disconnect };\n}\n\n/**\n * Sign message hook\n */\nexport function useSignMessage() {\n const { signMessage, connected } = useWallet();\n const [signing, setSigning] = useState(false);\n const [signature, setSignature] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const sign = useCallback(async (message: string) => {\n if (!connected) {\n setError(new Error('Wallet not connected'));\n return null;\n }\n\n setSigning(true);\n setError(null);\n\n try {\n const result = await signMessage(message);\n setSignature(result.signature);\n return result;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setSigning(false);\n }\n }, [signMessage, connected]);\n\n return { sign, signing, signature, error };\n}\n\n/**\n * Send transaction hook\n */\nexport function useSendTransaction() {\n const { signAndSendTransaction, connected } = useWallet();\n const [sending, setSending] = useState(false);\n const [txHash, setTxHash] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const send = useCallback(async (tx: TransactionRequest) => {\n if (!connected) {\n setError(new Error('Wallet not connected'));\n return null;\n }\n\n setSending(true);\n setError(null);\n\n try {\n const result = await signAndSendTransaction(tx);\n setTxHash(result.hash);\n return result;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setSending(false);\n }\n }, [signAndSendTransaction, connected]);\n\n return { send, sending, txHash, error };\n}\n\n// ============================================================================\n// Components\n// ============================================================================\n\nexport interface ConnectButtonProps {\n /** Button text when disconnected */\n connectLabel?: string;\n /** Show address when connected */\n showAddress?: boolean;\n /** Custom class name */\n className?: string;\n /** Custom styles */\n style?: React.CSSProperties;\n}\n\n/**\n * Connect wallet button component\n */\nexport function ConnectButton({\n connectLabel = 'Connect Wallet',\n showAddress = true,\n className = '',\n style,\n}: ConnectButtonProps) {\n const { connected, connecting, activeAccount, openModal, disconnect } = useWallet();\n\n if (connected && activeAccount) {\n return (\n <button\n onClick={disconnect}\n className={className}\n style={{\n padding: '10px 20px',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: '#1a1a2e',\n color: '#6eb9a8',\n cursor: 'pointer',\n fontWeight: 500,\n ...style,\n }}\n >\n {showAddress ? formatAddress(activeAccount.address) : 'Disconnect'}\n </button>\n );\n }\n\n return (\n <button\n onClick={openModal}\n disabled={connecting}\n className={className}\n style={{\n padding: '10px 20px',\n borderRadius: '8px',\n border: 'none',\n backgroundColor: '#6eb9a8',\n color: '#0f0f1a',\n cursor: connecting ? 'not-allowed' : 'pointer',\n fontWeight: 600,\n opacity: connecting ? 0.7 : 1,\n ...style,\n }}\n >\n {connecting ? 'Connecting...' : connectLabel}\n </button>\n );\n}\n\nexport interface WalletModalProps {\n /** Modal title */\n title?: string;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Wallet selection modal component\n */\nexport function WalletModal({\n title = 'Connect Wallet',\n className = '',\n}: WalletModalProps) {\n const { isModalOpen, closeModal, wallets, selectWallet, connecting } = useWallet();\n\n if (!isModalOpen) return null;\n\n return (\n <div\n className={className}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n }}\n onClick={closeModal}\n >\n <div\n style={{\n backgroundColor: '#1a1a2e',\n borderRadius: '16px',\n padding: '24px',\n minWidth: '320px',\n maxWidth: '400px',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '20px' }}>\n <h2 style={{ margin: 0, color: 'white', fontSize: '18px' }}>{title}</h2>\n <button\n onClick={closeModal}\n style={{\n background: 'none',\n border: 'none',\n color: '#888',\n cursor: 'pointer',\n fontSize: '20px',\n }}\n >\n ×\n </button>\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>\n {wallets.map((wallet) => (\n <button\n key={wallet.id}\n onClick={() => selectWallet(wallet.id)}\n disabled={connecting}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '16px',\n borderRadius: '12px',\n border: '1px solid #333',\n backgroundColor: '#0f0f1a',\n color: 'white',\n cursor: 'pointer',\n transition: 'all 0.2s',\n }}\n >\n <img\n src={wallet.icon}\n alt={wallet.name}\n style={{ width: '32px', height: '32px', borderRadius: '8px' }}\n />\n <div style={{ flex: 1, textAlign: 'left' }}>\n <div style={{ fontWeight: 600 }}>{wallet.name}</div>\n <div style={{ fontSize: '12px', color: '#888' }}>\n {wallet.installed ? 'Detected' : 'Not installed'}\n </div>\n </div>\n {!wallet.installed && (\n <span style={{ fontSize: '12px', color: '#6eb9a8' }}>Install →</span>\n )}\n </button>\n ))}\n </div>\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Re-exports\n// ============================================================================\n\nexport { formatAddress, formatBalance, NETWORKS, isRialoInstalled };\nexport type { RialoNetwork, WalletAccount, TransactionRequest, TransactionResult, SignedMessage, WalletInfo };\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/react.tsx"],"names":[],"mappings":"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","file":"react.js","sourcesContent":["/**\n * @cookill/wallet-adapter v2.3.0\n * Sheep Wallet adapter for Rialo blockchain dApps\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';\nexport type RialoNetwork = 'mainnet' | 'testnet' | 'devnet' | 'localnet';\n\nexport interface WalletAccount {\n address: string;\n publicKey?: Uint8Array | string;\n label?: string;\n}\n\nexport interface TransactionRequest {\n to: string;\n value: string;\n data?: string;\n memo?: string;\n}\n\nexport interface TransactionResult {\n hash: string;\n signature?: string;\n status: 'pending' | 'confirmed' | 'failed';\n blockNumber?: number;\n}\n\nexport interface SignedMessage {\n signature: string;\n message: string;\n address: string;\n publicKey?: string;\n}\n\nexport interface BalanceResult {\n balance: string;\n balanceKelvins: string;\n formatted: string;\n}\n\nexport interface NetworkConfig {\n chainId: string;\n name: string;\n rpcUrl: string;\n wsUrl?: string;\n explorerUrl?: string;\n symbol: string;\n decimals: number;\n}\n\nexport interface WalletInfo {\n id: string;\n name: string;\n icon: string;\n installed?: boolean;\n downloadUrl?: string;\n}\n\nexport type WalletEvent = \n | 'connect' \n | 'disconnect' \n | 'accountsChanged'\n | 'networkChanged' \n | 'chainChanged'\n | 'error';\n\n// ============================================================================\n// Network Configurations\n// ============================================================================\n\nexport const NETWORKS: Record<RialoNetwork, NetworkConfig> = {\n mainnet: {\n chainId: 'rialo:mainnet',\n name: 'Rialo Mainnet',\n rpcUrl: 'https://mainnet.rialo.io:4101',\n wsUrl: 'wss://mainnet.rialo.io:4102',\n explorerUrl: 'https://explorer.rialo.io',\n symbol: 'RLO',\n decimals: 9,\n },\n testnet: {\n chainId: 'rialo:testnet',\n name: 'Rialo Testnet',\n rpcUrl: 'https://testnet.rialo.io:4101',\n wsUrl: 'wss://testnet.rialo.io:4102',\n explorerUrl: 'https://testnet.explorer.rialo.io',\n symbol: 'tRLO',\n decimals: 9,\n },\n devnet: {\n chainId: 'rialo:devnet',\n name: 'Rialo Devnet',\n rpcUrl: 'https://devnet.rialo.io:4101',\n wsUrl: 'wss://devnet.rialo.io:4102',\n explorerUrl: 'https://devnet.explorer.rialo.io',\n symbol: 'dRLO',\n decimals: 9,\n },\n localnet: {\n chainId: 'rialo:localnet',\n name: 'Rialo Localnet',\n rpcUrl: 'http://localhost:4101',\n wsUrl: 'ws://localhost:4102',\n explorerUrl: 'http://localhost:3000',\n symbol: 'lRLO',\n decimals: 9,\n },\n};\n\n// ============================================================================\n// Provider Interface\n// ============================================================================\n\nexport interface RialoProvider {\n // Metadata\n isRialo: boolean;\n isSheepWallet?: boolean;\n name?: string;\n walletName?: string;\n version: string;\n icon?: string;\n\n // Connection\n connect(options?: { silent?: boolean }): Promise<WalletAccount[]>;\n disconnect(): Promise<void>;\n isConnected(): Promise<boolean>;\n getAccounts(): Promise<WalletAccount[]>;\n\n // Transactions\n signTransaction(tx: TransactionRequest): Promise<{ signature: string; signedTransaction?: string; rawTransaction?: string }>;\n sendTransaction(tx: TransactionRequest): Promise<TransactionResult>;\n signAndSendTransaction(tx: TransactionRequest): Promise<TransactionResult>;\n signAllTransactions?(txs: TransactionRequest[]): Promise<{ signedTransactions: string[] }>;\n\n // Message signing\n signMessage(message: string | Uint8Array): Promise<SignedMessage>;\n\n // Network\n getNetwork(): Promise<RialoNetwork>;\n switchNetwork(network: RialoNetwork): Promise<{ success: boolean }>;\n getChainId(): Promise<string>;\n getBalance(address?: string): Promise<BalanceResult | string>;\n\n // Events\n on(event: WalletEvent, callback: (data: unknown) => void): () => void;\n off?(event: WalletEvent, callback: (data: unknown) => void): void;\n removeListener(event: WalletEvent, callback: (data: unknown) => void): void;\n removeAllListeners(event?: WalletEvent): void;\n\n // Utilities\n utils?: {\n isValidAddress(address: string): boolean;\n formatAddress(address: string, chars?: number): string;\n };\n\n // Wallet Standard\n features?: string[];\n supportsFeature?(feature: string): boolean;\n\n // State getters\n readonly connected?: boolean;\n readonly accounts?: WalletAccount[];\n readonly address?: string | null;\n readonly publicKey?: string | null;\n readonly network?: RialoNetwork;\n readonly chainId?: string;\n}\n\n// ============================================================================\n// Detection & Access\n// ============================================================================\n\nexport function isRialoInstalled(): boolean {\n if (typeof window === 'undefined') return false;\n return !!(window as RialoWindow).rialo?.isRialo;\n}\n\nexport function getRialoProvider(): RialoProvider | undefined {\n if (typeof window === 'undefined') return undefined;\n const rialo = (window as RialoWindow).rialo;\n return rialo?.isRialo ? rialo : undefined;\n}\n\nexport function waitForRialoProvider(timeout = 3000): Promise<RialoProvider | undefined> {\n return new Promise((resolve) => {\n if (isRialoInstalled()) {\n resolve(getRialoProvider());\n return;\n }\n\n let resolved = false;\n const checkInterval = setInterval(() => {\n if (isRialoInstalled() && !resolved) {\n resolved = true;\n clearInterval(checkInterval);\n resolve(getRialoProvider());\n }\n }, 100);\n\n setTimeout(() => {\n if (!resolved) {\n resolved = true;\n clearInterval(checkInterval);\n resolve(undefined);\n }\n }, timeout);\n\n // Also listen for initialization event\n const handler = () => {\n if (!resolved) {\n resolved = true;\n clearInterval(checkInterval);\n resolve(getRialoProvider());\n }\n };\n window.addEventListener('rialo#initialized', handler, { once: true });\n });\n}\n\n// ============================================================================\n// Simple Wallet Class (Non-React)\n// ============================================================================\n\nexport class RialoWallet {\n private provider: RialoProvider | undefined;\n private _connected = false;\n private _accounts: WalletAccount[] = [];\n private _network: RialoNetwork = 'devnet';\n private _listeners: Map<string, Set<() => void>> = new Map();\n\n constructor() {\n this.provider = getRialoProvider();\n this.setupEvents();\n }\n\n private setupEvents() {\n if (!this.provider) return;\n\n this.provider.on('disconnect', () => {\n this._connected = false;\n this._accounts = [];\n });\n\n this.provider.on('accountsChanged', (data: unknown) => {\n const accounts = data as WalletAccount[];\n this._accounts = accounts;\n });\n\n this.provider.on('networkChanged', (data: unknown) => {\n const { network } = data as { network: RialoNetwork };\n this._network = network;\n });\n }\n\n get isInstalled(): boolean {\n return isRialoInstalled();\n }\n\n get connected(): boolean {\n return this._connected;\n }\n\n get accounts(): WalletAccount[] {\n return this._accounts;\n }\n\n get activeAccount(): WalletAccount | undefined {\n return this._accounts[0];\n }\n\n get network(): RialoNetwork {\n return this._network;\n }\n\n get chainId(): string {\n return `rialo:${this._network}`;\n }\n\n async connect(): Promise<WalletAccount[]> {\n this.provider = getRialoProvider();\n if (!this.provider) {\n throw new Error('Rialo Wallet not installed. Download at https://rialo.io/wallet');\n }\n\n const accounts = await this.provider.connect();\n this._accounts = accounts;\n this._connected = true;\n\n const network = await this.provider.getNetwork();\n this._network = network;\n\n return this._accounts;\n }\n\n async disconnect(): Promise<void> {\n if (this.provider) {\n await this.provider.disconnect();\n }\n this._connected = false;\n this._accounts = [];\n }\n\n async signMessage(message: string): Promise<SignedMessage> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n return this.provider.signMessage(message);\n }\n\n async signTransaction(tx: TransactionRequest): Promise<string> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n const result = await this.provider.signTransaction(tx);\n return result.signature;\n }\n\n async sendTransaction(tx: TransactionRequest): Promise<TransactionResult> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n return this.provider.sendTransaction(tx);\n }\n\n async signAndSendTransaction(tx: TransactionRequest): Promise<TransactionResult> {\n if (!this.provider || !this._connected) {\n throw new Error('Wallet not connected');\n }\n return this.provider.signAndSendTransaction(tx);\n }\n\n async getBalance(address?: string): Promise<string> {\n if (!this.provider) {\n throw new Error('Wallet not available');\n }\n const result = await this.provider.getBalance(address);\n if (typeof result === 'string') return result;\n return result.balance;\n }\n\n async switchNetwork(network: RialoNetwork): Promise<void> {\n if (!this.provider) {\n throw new Error('Wallet not available');\n }\n await this.provider.switchNetwork(network);\n this._network = network;\n }\n\n on(event: WalletEvent, callback: (data: unknown) => void): () => void {\n if (!this.provider) {\n return () => {};\n }\n return this.provider.on(event, callback);\n }\n}\n\n// ============================================================================\n// Utilities\n// ============================================================================\n\nexport function formatAddress(address: string, chars = 4): string {\n if (!address) return '';\n if (address.length <= chars * 2 + 3) return address;\n return `${address.slice(0, chars + 2)}...${address.slice(-chars)}`;\n}\n\nexport function formatBalance(kelvins: string | bigint, decimals = 4): string {\n const value = typeof kelvins === 'string' ? BigInt(kelvins || '0') : kelvins;\n const rlo = Number(value) / 1_000_000_000;\n return rlo.toFixed(decimals);\n}\n\nexport function parseBalance(rlo: string | number): bigint {\n const value = typeof rlo === 'string' ? parseFloat(rlo) : rlo;\n return BigInt(Math.floor(value * 1_000_000_000));\n}\n\nexport function isValidAddress(address: string): boolean {\n if (!address || typeof address !== 'string') return false;\n if (address.length < 32 || address.length > 50) return false;\n return /^[1-9A-HJ-NP-Za-km-z]+$/.test(address);\n}\n\nexport function toChainId(network: RialoNetwork): RialoChain {\n return `rialo:${network}` as RialoChain;\n}\n\nexport function fromChainId(chainId: RialoChain): RialoNetwork {\n return chainId.replace('rialo:', '') as RialoNetwork;\n}\n\n// ============================================================================\n// Window Extension\n// ============================================================================\n\ninterface RialoWindow extends Window {\n rialo?: RialoProvider;\n}\n\ndeclare global {\n interface Window {\n rialo?: RialoProvider;\n Rialo?: RialoProvider;\n }\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport default RialoWallet;\n","/**\n * @cookill/wallet-adapter/react v2.3.0\n * React hooks and components for Sheep Wallet / Rialo blockchain integration\n */\n\nimport React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n ReactNode,\n useMemo,\n} from 'react';\nimport {\n RialoProvider,\n RialoNetwork,\n WalletAccount,\n TransactionRequest,\n TransactionResult,\n SignedMessage,\n WalletInfo,\n NetworkConfig,\n isRialoInstalled,\n getRialoProvider,\n waitForRialoProvider,\n formatAddress,\n formatBalance,\n isValidAddress,\n NETWORKS,\n} from './index';\n\n// ============================================================================\n// Context Types\n// ============================================================================\n\nexport interface WalletContextState {\n // State\n connected: boolean;\n connecting: boolean;\n accounts: WalletAccount[];\n activeAccount: WalletAccount | null;\n network: RialoNetwork;\n chainId: string;\n balance: string | null;\n error: Error | null;\n\n // Wallet info\n wallets: WalletInfo[];\n selectedWallet: WalletInfo | null;\n isInstalled: boolean;\n\n // Actions\n connect: () => Promise<WalletAccount[]>;\n disconnect: () => Promise<void>;\n selectWallet: (walletId: string) => void;\n switchNetwork: (network: RialoNetwork) => Promise<void>;\n refreshBalance: () => Promise<void>;\n\n // Transactions\n signMessage: (message: string) => Promise<SignedMessage>;\n signTransaction: (tx: TransactionRequest) => Promise<string>;\n sendTransaction: (tx: TransactionRequest) => Promise<TransactionResult>;\n signAndSendTransaction: (tx: TransactionRequest) => Promise<TransactionResult>;\n\n // Modal\n isModalOpen: boolean;\n openModal: () => void;\n closeModal: () => void;\n}\n\n// ============================================================================\n// Provider Props\n// ============================================================================\n\nexport interface WalletProviderProps {\n children: ReactNode;\n network?: RialoNetwork;\n autoConnect?: boolean;\n wallets?: WalletInfo[];\n theme?: 'light' | 'dark' | 'auto';\n onConnect?: (accounts: WalletAccount[]) => void;\n onDisconnect?: () => void;\n onError?: (error: Error) => void;\n onNetworkChange?: (network: RialoNetwork) => void;\n}\n\n// ============================================================================\n// Default Wallets\n// ============================================================================\n\nconst DEFAULT_WALLETS: WalletInfo[] = [\n {\n id: 'sheep-wallet',\n name: 'Sheep Wallet',\n icon: 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjMDExQjI5Ii8+PHRleHQgeD0iNTAlIiB5PSI1NSUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxNiIgZmlsbD0iIzZFQjlBOCI+Uzwvc2VsZj48L3N2Zz4=',\n downloadUrl: 'https://rialo.io/wallet',\n },\n];\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst WalletContext = createContext<WalletContextState | null>(null);\n\n// ============================================================================\n// Provider Component\n// ============================================================================\n\nexport function WalletProvider({\n children,\n network: initialNetwork = 'devnet',\n autoConnect = true,\n wallets: customWallets = [],\n onConnect,\n onDisconnect,\n onError,\n onNetworkChange,\n}: WalletProviderProps) {\n const [connected, setConnected] = useState(false);\n const [connecting, setConnecting] = useState(false);\n const [accounts, setAccounts] = useState<WalletAccount[]>([]);\n const [network, setNetwork] = useState<RialoNetwork>(initialNetwork);\n const [balance, setBalance] = useState<string | null>(null);\n const [selectedWallet, setSelectedWallet] = useState<WalletInfo | null>(null);\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [provider, setProvider] = useState<RialoProvider | undefined>();\n const [error, setError] = useState<Error | null>(null);\n\n const chainId = useMemo(() => `rialo:${network}`, [network]);\n const activeAccount = accounts[0] || null;\n const isInstalled = isRialoInstalled();\n\n // Merge wallets\n const wallets: WalletInfo[] = useMemo(() => {\n const installed = isRialoInstalled();\n return [...DEFAULT_WALLETS, ...customWallets].map((w) => ({\n ...w,\n installed: w.id === 'sheep-wallet' ? installed : false,\n }));\n }, [customWallets]);\n\n // Initialize provider\n useEffect(() => {\n const init = async () => {\n const p = await waitForRialoProvider(3000);\n setProvider(p);\n if (p) {\n setSelectedWallet(wallets.find((w) => w.id === 'sheep-wallet') || wallets[0] || null);\n }\n };\n init();\n }, [wallets]);\n\n // Fetch balance\n const refreshBalance = useCallback(async () => {\n if (!provider || !activeAccount) return;\n try {\n const result = await provider.getBalance(activeAccount.address);\n const bal = typeof result === 'string' ? result : result.balance;\n setBalance(bal);\n } catch (e) {\n console.error('Balance fetch error:', e);\n }\n }, [provider, activeAccount]);\n\n // Auto-refresh balance when connected\n useEffect(() => {\n if (connected && activeAccount && provider) {\n refreshBalance();\n const interval = setInterval(refreshBalance, 30000);\n return () => clearInterval(interval);\n }\n }, [connected, activeAccount, provider, refreshBalance]);\n\n // Auto-connect\n useEffect(() => {\n if (autoConnect && provider && !connected && !connecting) {\n provider.isConnected().then((isConn) => {\n if (isConn) {\n handleConnect();\n }\n }).catch(() => {});\n }\n }, [provider, autoConnect, connected, connecting]);\n\n // Listen for provider events\n useEffect(() => {\n if (!provider) return;\n\n const cleanupFns: Array<() => void> = [];\n\n cleanupFns.push(\n provider.on('connect', (data: unknown) => {\n console.log('[Adapter] Connect event received:', data);\n const eventData = data as { accounts?: (string | WalletAccount)[] };\n if (eventData?.accounts) {\n const normalized: WalletAccount[] = eventData.accounts.map(a => {\n if (typeof a === 'string') return { address: a, publicKey: a };\n return { address: a.address, publicKey: a.publicKey || a.address };\n });\n setAccounts(normalized);\n setConnected(true);\n }\n })\n );\n\n cleanupFns.push(\n provider.on('disconnect', () => {\n setConnected(false);\n setAccounts([]);\n setBalance(null);\n onDisconnect?.();\n })\n );\n\n cleanupFns.push(\n provider.on('accountsChanged', (data: unknown) => {\n console.log('[Adapter] Accounts changed:', data);\n // Handle both array of strings and array of WalletAccount\n const rawAccounts = data as (string | WalletAccount)[];\n const normalized: WalletAccount[] = (rawAccounts || []).map(a => {\n if (typeof a === 'string') return { address: a, publicKey: a };\n return { address: a.address, publicKey: a.publicKey || a.address };\n });\n setAccounts(normalized);\n })\n );\n\n cleanupFns.push(\n provider.on('networkChanged', (data: unknown) => {\n const { network: net } = data as { network: RialoNetwork };\n if (net) {\n setNetwork(net);\n onNetworkChange?.(net);\n }\n })\n );\n\n return () => {\n cleanupFns.forEach(fn => fn?.());\n };\n }, [provider, onDisconnect, onNetworkChange]);\n\n // Connect\n const handleConnect = useCallback(async (): Promise<WalletAccount[]> => {\n if (!provider) {\n const err = new Error('Rialo Wallet not installed');\n setError(err);\n onError?.(err);\n throw err;\n }\n\n setConnecting(true);\n setError(null);\n\n try {\n console.log('[Adapter] Calling provider.connect()...');\n const result = await provider.connect();\n console.log('[Adapter] Connect result:', result);\n \n // Normalize result - handle both string[] and WalletAccount[]\n const walletAccounts: WalletAccount[] = result.map((acc) => {\n if (typeof acc === 'string') {\n return { address: acc, publicKey: acc };\n }\n return {\n address: acc.address,\n publicKey: acc.publicKey || acc.address,\n };\n });\n\n setAccounts(walletAccounts);\n setConnected(true);\n setIsModalOpen(false);\n\n // Get network\n try {\n const net = await provider.getNetwork();\n setNetwork(net);\n } catch {}\n\n onConnect?.(walletAccounts);\n return walletAccounts;\n } catch (e) {\n const err = e as Error;\n setError(err);\n onError?.(err);\n throw err;\n } finally {\n setConnecting(false);\n }\n }, [provider, onConnect, onError]);\n\n // Disconnect\n const handleDisconnect = useCallback(async () => {\n try {\n if (provider) {\n await provider.disconnect();\n }\n } catch {}\n setConnected(false);\n setAccounts([]);\n setBalance(null);\n onDisconnect?.();\n }, [provider, onDisconnect]);\n\n // Select wallet\n const selectWallet = useCallback((walletId: string) => {\n const wallet = wallets.find((w) => w.id === walletId);\n if (wallet) {\n setSelectedWallet(wallet);\n if (wallet.installed) {\n handleConnect();\n } else if (wallet.downloadUrl) {\n window.open(wallet.downloadUrl, '_blank');\n }\n }\n }, [wallets, handleConnect]);\n\n // Switch network\n const handleSwitchNetwork = useCallback(async (newNetwork: RialoNetwork) => {\n if (provider) {\n await provider.switchNetwork(newNetwork);\n }\n setNetwork(newNetwork);\n onNetworkChange?.(newNetwork);\n }, [provider, onNetworkChange]);\n\n // Sign message\n const handleSignMessage = useCallback(async (message: string): Promise<SignedMessage> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n return provider.signMessage(message);\n }, [provider, connected]);\n\n // Sign transaction\n const handleSignTransaction = useCallback(async (tx: TransactionRequest): Promise<string> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n const result = await provider.signTransaction(tx);\n return result.signature;\n }, [provider, connected]);\n\n // Send transaction\n const handleSendTransaction = useCallback(async (tx: TransactionRequest): Promise<TransactionResult> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n return provider.sendTransaction(tx);\n }, [provider, connected]);\n\n // Sign and send transaction\n const handleSignAndSendTransaction = useCallback(async (tx: TransactionRequest): Promise<TransactionResult> => {\n if (!provider || !connected) {\n throw new Error('Wallet not connected');\n }\n return provider.signAndSendTransaction(tx);\n }, [provider, connected]);\n\n // Modal controls\n const openModal = useCallback(() => setIsModalOpen(true), []);\n const closeModal = useCallback(() => setIsModalOpen(false), []);\n\n const value: WalletContextState = {\n connected,\n connecting,\n accounts,\n activeAccount,\n network,\n chainId,\n balance,\n error,\n wallets,\n selectedWallet,\n isInstalled,\n connect: handleConnect,\n disconnect: handleDisconnect,\n selectWallet,\n switchNetwork: handleSwitchNetwork,\n refreshBalance,\n signMessage: handleSignMessage,\n signTransaction: handleSignTransaction,\n sendTransaction: handleSendTransaction,\n signAndSendTransaction: handleSignAndSendTransaction,\n isModalOpen,\n openModal,\n closeModal,\n };\n\n return (\n <WalletContext.Provider value={value}>\n {children}\n </WalletContext.Provider>\n );\n}\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\nexport function useWallet(): WalletContextState {\n const context = useContext(WalletContext);\n if (!context) {\n throw new Error('useWallet must be used within WalletProvider');\n }\n return context;\n}\n\nexport function useIsConnected(): boolean {\n const { connected } = useWallet();\n return connected;\n}\n\nexport function useActiveAccount(): WalletAccount | null {\n const { activeAccount } = useWallet();\n return activeAccount;\n}\n\nexport function useAccounts(): WalletAccount[] {\n const { accounts } = useWallet();\n return accounts;\n}\n\nexport function useBalance(): { balance: string | null; formatted: string; refresh: () => Promise<void> } {\n const { balance, refreshBalance } = useWallet();\n return {\n balance,\n formatted: balance ? formatBalance(balance) : '0.0000',\n refresh: refreshBalance,\n };\n}\n\nexport function useNetwork(): { network: RialoNetwork; chainId: string; config: NetworkConfig } {\n const { network, chainId } = useWallet();\n return {\n network,\n chainId,\n config: NETWORKS[network],\n };\n}\n\nexport function useChainId(): string {\n const { chainId } = useWallet();\n return chainId;\n}\n\nexport function useSwitchNetwork() {\n const { switchNetwork, network } = useWallet();\n const [switching, setSwitching] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n const doSwitch = useCallback(async (newNetwork: RialoNetwork) => {\n setSwitching(true);\n setError(null);\n try {\n await switchNetwork(newNetwork);\n } catch (e) {\n setError(e as Error);\n throw e;\n } finally {\n setSwitching(false);\n }\n }, [switchNetwork]);\n\n return { switchNetwork: doSwitch, switching, error, currentNetwork: network };\n}\n\nexport function useConnectWallet() {\n const { connect, connecting, openModal, isInstalled, error } = useWallet();\n return {\n connect: isInstalled ? connect : openModal,\n connecting,\n isInstalled,\n error,\n };\n}\n\nexport function useDisconnectWallet() {\n const { disconnect, connected } = useWallet();\n return { disconnect, connected };\n}\n\nexport function useSignMessage() {\n const { signMessage, connected, activeAccount } = useWallet();\n const [signing, setSigning] = useState(false);\n const [signature, setSignature] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const sign = useCallback(async (message: string) => {\n if (!connected) {\n setError(new Error('Wallet not connected'));\n return null;\n }\n\n setSigning(true);\n setError(null);\n\n try {\n const result = await signMessage(message);\n setSignature(result.signature);\n return result;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setSigning(false);\n }\n }, [signMessage, connected]);\n\n return { sign, signing, signature, error, address: activeAccount?.address };\n}\n\nexport function useSendTransaction() {\n const { signAndSendTransaction, connected } = useWallet();\n const [sending, setSending] = useState(false);\n const [txHash, setTxHash] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const send = useCallback(async (tx: TransactionRequest) => {\n if (!connected) {\n setError(new Error('Wallet not connected'));\n return null;\n }\n\n setSending(true);\n setError(null);\n\n try {\n const result = await signAndSendTransaction(tx);\n setTxHash(result.hash);\n return result;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setSending(false);\n }\n }, [signAndSendTransaction, connected]);\n\n return { send, sending, txHash, error, reset: () => { setTxHash(null); setError(null); } };\n}\n\nexport function useSignTransaction() {\n const { signTransaction, connected } = useWallet();\n const [signing, setSigning] = useState(false);\n const [signature, setSignature] = useState<string | null>(null);\n const [error, setError] = useState<Error | null>(null);\n\n const sign = useCallback(async (tx: TransactionRequest) => {\n if (!connected) {\n setError(new Error('Wallet not connected'));\n return null;\n }\n\n setSigning(true);\n setError(null);\n\n try {\n const result = await signTransaction(tx);\n setSignature(result);\n return result;\n } catch (err) {\n setError(err as Error);\n return null;\n } finally {\n setSigning(false);\n }\n }, [signTransaction, connected]);\n\n return { sign, signing, signature, error };\n}\n\n// ============================================================================\n// Components\n// ============================================================================\n\nexport interface ConnectButtonProps {\n connectLabel?: string;\n disconnectLabel?: string;\n showAddress?: boolean;\n showBalance?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nexport function ConnectButton({\n connectLabel = 'Connect Wallet',\n disconnectLabel = 'Disconnect',\n showAddress = true,\n showBalance = false,\n className = '',\n style,\n}: ConnectButtonProps) {\n const { connected, connecting, activeAccount, balance, openModal, disconnect } = useWallet();\n\n const buttonStyle: React.CSSProperties = {\n padding: '10px 20px',\n borderRadius: '8px',\n border: 'none',\n cursor: 'pointer',\n fontWeight: 500,\n fontSize: '14px',\n transition: 'all 0.2s ease',\n ...style,\n };\n\n if (connecting) {\n return (\n <button\n disabled\n className={className}\n style={{ ...buttonStyle, opacity: 0.7, cursor: 'not-allowed' }}\n >\n Connecting...\n </button>\n );\n }\n\n if (connected && activeAccount) {\n return (\n <button\n onClick={() => disconnect()}\n className={className}\n style={{\n ...buttonStyle,\n background: 'linear-gradient(135deg, #6EB9A8 0%, #4A9A8A 100%)',\n color: 'white',\n }}\n >\n {showBalance && balance && <span style={{ marginRight: 8 }}>{formatBalance(balance)} RLO</span>}\n {showAddress ? formatAddress(activeAccount.address) : disconnectLabel}\n </button>\n );\n }\n\n return (\n <button\n onClick={openModal}\n className={className}\n style={{\n ...buttonStyle,\n background: 'linear-gradient(135deg, #6EB9A8 0%, #4A9A8A 100%)',\n color: 'white',\n }}\n >\n {connectLabel}\n </button>\n );\n}\n\nexport interface WalletModalProps {\n title?: string;\n className?: string;\n}\n\nexport function WalletModal({ title = 'Connect Wallet', className = '' }: WalletModalProps) {\n const { isModalOpen, closeModal, wallets, selectWallet, connecting } = useWallet();\n\n if (!isModalOpen) return null;\n\n return (\n <div\n className={className}\n style={{\n position: 'fixed',\n inset: 0,\n zIndex: 9999,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n }}\n onClick={closeModal}\n >\n <div\n style={{\n background: 'white',\n borderRadius: '16px',\n padding: '24px',\n maxWidth: '400px',\n width: '90%',\n maxHeight: '80vh',\n overflow: 'auto',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: '20px' }}>\n <h2 style={{ margin: 0, fontSize: '18px', fontWeight: 600 }}>{title}</h2>\n <button\n onClick={closeModal}\n style={{ background: 'none', border: 'none', fontSize: '24px', cursor: 'pointer', padding: 0 }}\n >\n ×\n </button>\n </div>\n\n <div style={{ display: 'flex', flexDirection: 'column', gap: '12px' }}>\n {wallets.map((wallet) => (\n <button\n key={wallet.id}\n onClick={() => selectWallet(wallet.id)}\n disabled={connecting}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: '12px',\n padding: '16px',\n borderRadius: '12px',\n border: '1px solid #e5e5e5',\n background: 'white',\n cursor: connecting ? 'not-allowed' : 'pointer',\n opacity: connecting ? 0.7 : 1,\n transition: 'all 0.2s ease',\n }}\n >\n <img src={wallet.icon} alt={wallet.name} style={{ width: 40, height: 40, borderRadius: 8 }} />\n <div style={{ textAlign: 'left', flex: 1 }}>\n <div style={{ fontWeight: 500 }}>{wallet.name}</div>\n <div style={{ fontSize: '12px', color: '#666' }}>\n {wallet.installed ? 'Detected' : 'Not installed'}\n </div>\n </div>\n {!wallet.installed && (\n <span style={{ fontSize: '12px', color: '#6EB9A8' }}>Install →</span>\n )}\n </button>\n ))}\n </div>\n\n <div style={{ marginTop: '20px', textAlign: 'center', fontSize: '12px', color: '#999' }}>\n Powered by CookilLabs\n </div>\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// Re-exports\n// ============================================================================\n\nexport { formatAddress, formatBalance, isValidAddress, NETWORKS, isRialoInstalled, getRialoProvider };\nexport type { RialoNetwork, WalletAccount, TransactionRequest, TransactionResult, SignedMessage, WalletInfo, NetworkConfig };\n"]}
|
package/dist/standard.cjs
CHANGED
|
@@ -6,24 +6,33 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
6
6
|
var RIALO_SIGN_TRANSACTION = "rialo:signTransaction";
|
|
7
7
|
var RIALO_SIGN_AND_SEND_TRANSACTION = "rialo:signAndSendTransaction";
|
|
8
8
|
var RIALO_SIGN_MESSAGE = "rialo:signMessage";
|
|
9
|
+
var RIALO_SIGN_ALL_TRANSACTIONS = "rialo:signAllTransactions";
|
|
9
10
|
var RialoWalletStandard = class {
|
|
10
11
|
constructor() {
|
|
11
12
|
this.version = "1.0.0";
|
|
12
|
-
this.name = "Rialo
|
|
13
|
-
this.icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+
|
|
13
|
+
this.name = "Rialo Buddy";
|
|
14
|
+
this.icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHRleHQgeD0iNTAlIiB5PSI1NSUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxOCIgZmlsbD0id2hpdGUiPlI8L3RleHQ+PC9zdmc+";
|
|
14
15
|
this._accounts = [];
|
|
15
16
|
this._chains = ["rialo:mainnet", "rialo:testnet", "rialo:devnet", "rialo:localnet"];
|
|
16
17
|
this._activeChain = "rialo:devnet";
|
|
17
18
|
this._eventListeners = {};
|
|
18
19
|
this._connected = false;
|
|
20
|
+
this._cleanupFns = [];
|
|
19
21
|
this.features = {
|
|
20
22
|
"standard:connect": {
|
|
21
23
|
connect: async () => {
|
|
22
24
|
const provider = this.provider;
|
|
23
25
|
if (!provider) throw new Error("Rialo Wallet not installed");
|
|
24
|
-
const
|
|
25
|
-
this._accounts =
|
|
26
|
+
const result = await provider.connect();
|
|
27
|
+
this._accounts = result.map(
|
|
28
|
+
(acc) => this.createAccount(typeof acc === "string" ? acc : acc.address)
|
|
29
|
+
);
|
|
26
30
|
this._connected = true;
|
|
31
|
+
try {
|
|
32
|
+
const network = await provider.getNetwork();
|
|
33
|
+
this._activeChain = `rialo:${network}`;
|
|
34
|
+
} catch {
|
|
35
|
+
}
|
|
27
36
|
this.emit("change", { accounts: this._accounts });
|
|
28
37
|
return { accounts: this._accounts };
|
|
29
38
|
}
|
|
@@ -52,12 +61,12 @@ var RialoWalletStandard = class {
|
|
|
52
61
|
if (!this._connected) throw new Error("Wallet not connected");
|
|
53
62
|
const provider = this.provider;
|
|
54
63
|
if (!provider) throw new Error("Rialo Wallet not available");
|
|
55
|
-
const transactionBase64 =
|
|
64
|
+
const transactionBase64 = this.bytesToBase64(input.transaction);
|
|
56
65
|
const result = await provider.signTransaction({
|
|
57
66
|
transaction: transactionBase64,
|
|
58
67
|
chain: input.chain || this._activeChain
|
|
59
68
|
});
|
|
60
|
-
const signedTxBytes = result.rawTransaction ?
|
|
69
|
+
const signedTxBytes = result.rawTransaction ? this.base64ToBytes(result.rawTransaction) : input.transaction;
|
|
61
70
|
return { signedTransaction: signedTxBytes };
|
|
62
71
|
}
|
|
63
72
|
},
|
|
@@ -66,13 +75,13 @@ var RialoWalletStandard = class {
|
|
|
66
75
|
if (!this._connected) throw new Error("Wallet not connected");
|
|
67
76
|
const provider = this.provider;
|
|
68
77
|
if (!provider) throw new Error("Rialo Wallet not available");
|
|
69
|
-
const transactionBase64 =
|
|
78
|
+
const transactionBase64 = this.bytesToBase64(input.transaction);
|
|
70
79
|
const result = await provider.signAndSendTransaction({
|
|
71
80
|
transaction: transactionBase64,
|
|
72
81
|
chain: input.chain || this._activeChain,
|
|
73
82
|
options: input.options
|
|
74
83
|
});
|
|
75
|
-
return { signature: result.hash };
|
|
84
|
+
return { signature: result.hash || result.signature || "" };
|
|
76
85
|
}
|
|
77
86
|
},
|
|
78
87
|
[RIALO_SIGN_MESSAGE]: {
|
|
@@ -83,11 +92,12 @@ var RialoWalletStandard = class {
|
|
|
83
92
|
const messageStr = new TextDecoder().decode(input.message);
|
|
84
93
|
const result = await provider.signMessage(messageStr);
|
|
85
94
|
const sigHex = result.signature.startsWith("0x") ? result.signature.slice(2) : result.signature;
|
|
86
|
-
const signatureBytes =
|
|
95
|
+
const signatureBytes = this.hexToBytes(sigHex);
|
|
87
96
|
return { signature: signatureBytes, signedMessage: input.message };
|
|
88
97
|
}
|
|
89
98
|
}
|
|
90
99
|
};
|
|
100
|
+
this.setupProviderEvents();
|
|
91
101
|
}
|
|
92
102
|
get chains() {
|
|
93
103
|
return [...this._chains];
|
|
@@ -99,6 +109,26 @@ var RialoWalletStandard = class {
|
|
|
99
109
|
if (typeof window === "undefined") return void 0;
|
|
100
110
|
return window.rialo;
|
|
101
111
|
}
|
|
112
|
+
setupProviderEvents() {
|
|
113
|
+
const provider = this.provider;
|
|
114
|
+
if (!provider) return;
|
|
115
|
+
const cleanup1 = provider.on("accountsChanged", (data) => {
|
|
116
|
+
const accounts = data;
|
|
117
|
+
this._accounts = accounts.map((acc) => this.createAccount(typeof acc === "string" ? acc : acc.address));
|
|
118
|
+
this.emit("change", { accounts: this._accounts });
|
|
119
|
+
});
|
|
120
|
+
const cleanup2 = provider.on("networkChanged", (data) => {
|
|
121
|
+
const { network } = data;
|
|
122
|
+
this._activeChain = `rialo:${network}`;
|
|
123
|
+
this.emit("change", { chains: [this._activeChain] });
|
|
124
|
+
});
|
|
125
|
+
const cleanup3 = provider.on("disconnect", () => {
|
|
126
|
+
this._connected = false;
|
|
127
|
+
this._accounts = [];
|
|
128
|
+
this.emit("change", { accounts: [] });
|
|
129
|
+
});
|
|
130
|
+
this._cleanupFns.push(cleanup1, cleanup2, cleanup3);
|
|
131
|
+
}
|
|
102
132
|
emit(event, data) {
|
|
103
133
|
const listeners = this._eventListeners[event];
|
|
104
134
|
if (listeners) {
|
|
@@ -116,14 +146,36 @@ var RialoWalletStandard = class {
|
|
|
116
146
|
address,
|
|
117
147
|
publicKey,
|
|
118
148
|
chains: this._chains,
|
|
119
|
-
features: [
|
|
149
|
+
features: [
|
|
150
|
+
RIALO_SIGN_TRANSACTION,
|
|
151
|
+
RIALO_SIGN_AND_SEND_TRANSACTION,
|
|
152
|
+
RIALO_SIGN_MESSAGE,
|
|
153
|
+
RIALO_SIGN_ALL_TRANSACTIONS
|
|
154
|
+
],
|
|
120
155
|
label: "Rialo Account"
|
|
121
156
|
};
|
|
122
157
|
}
|
|
158
|
+
bytesToBase64(bytes) {
|
|
159
|
+
return btoa(String.fromCharCode(...bytes));
|
|
160
|
+
}
|
|
161
|
+
base64ToBytes(base64) {
|
|
162
|
+
return Uint8Array.from(atob(base64), (c) => c.charCodeAt(0));
|
|
163
|
+
}
|
|
164
|
+
hexToBytes(hex) {
|
|
165
|
+
const matches = hex.match(/.{1,2}/g);
|
|
166
|
+
return new Uint8Array(matches?.map((byte) => parseInt(byte, 16)) || []);
|
|
167
|
+
}
|
|
123
168
|
setActiveChain(chain) {
|
|
124
169
|
this._activeChain = chain;
|
|
125
170
|
this.emit("change", { chains: [chain] });
|
|
126
171
|
}
|
|
172
|
+
destroy() {
|
|
173
|
+
this._cleanupFns.forEach((fn) => fn());
|
|
174
|
+
this._cleanupFns = [];
|
|
175
|
+
Object.keys(this._eventListeners).forEach((key) => {
|
|
176
|
+
delete this._eventListeners[key];
|
|
177
|
+
});
|
|
178
|
+
}
|
|
127
179
|
};
|
|
128
180
|
var walletInstance = null;
|
|
129
181
|
function registerRialoWallet() {
|
|
@@ -139,6 +191,17 @@ function registerRialoWallet() {
|
|
|
139
191
|
}
|
|
140
192
|
});
|
|
141
193
|
window.dispatchEvent(registerEvent);
|
|
194
|
+
window.dispatchEvent(new CustomEvent("eip6963:announceProvider", {
|
|
195
|
+
detail: {
|
|
196
|
+
info: {
|
|
197
|
+
uuid: "rialo-wallet-standard",
|
|
198
|
+
name: "Rialo Buddy",
|
|
199
|
+
icon: walletInstance.icon,
|
|
200
|
+
rdns: "io.rialo.buddy"
|
|
201
|
+
},
|
|
202
|
+
provider: walletInstance
|
|
203
|
+
}
|
|
204
|
+
}));
|
|
142
205
|
} catch (error) {
|
|
143
206
|
console.warn("Failed to dispatch wallet registration event:", error);
|
|
144
207
|
}
|
|
@@ -156,13 +219,16 @@ function getRialoWallet() {
|
|
|
156
219
|
function isRialoWalletRegistered() {
|
|
157
220
|
return walletInstance !== null;
|
|
158
221
|
}
|
|
159
|
-
if (typeof window !== "undefined"
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
222
|
+
if (typeof window !== "undefined") {
|
|
223
|
+
if (document.readyState === "complete") {
|
|
224
|
+
registerRialoWallet();
|
|
225
|
+
} else {
|
|
226
|
+
window.addEventListener("load", registerRialoWallet);
|
|
227
|
+
}
|
|
163
228
|
}
|
|
164
229
|
var standard_default = RialoWalletStandard;
|
|
165
230
|
|
|
231
|
+
exports.RIALO_SIGN_ALL_TRANSACTIONS = RIALO_SIGN_ALL_TRANSACTIONS;
|
|
166
232
|
exports.RIALO_SIGN_AND_SEND_TRANSACTION = RIALO_SIGN_AND_SEND_TRANSACTION;
|
|
167
233
|
exports.RIALO_SIGN_MESSAGE = RIALO_SIGN_MESSAGE;
|
|
168
234
|
exports.RIALO_SIGN_TRANSACTION = RIALO_SIGN_TRANSACTION;
|
package/dist/standard.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/standard.ts"],"names":[],"mappings":"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","file":"standard.cjs","sourcesContent":["/**\n * @rialo/wallet-adapter/standard\n * Wallet Standard implementation for advanced integrations\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';\n\nexport interface RialoWalletAccount {\n address: string;\n publicKey: Uint8Array;\n chains: RialoChain[];\n features: string[];\n label?: string;\n icon?: string;\n}\n\n// Feature identifiers\nexport const RIALO_SIGN_TRANSACTION = 'rialo:signTransaction' as const;\nexport const RIALO_SIGN_AND_SEND_TRANSACTION = 'rialo:signAndSendTransaction' as const;\nexport const RIALO_SIGN_MESSAGE = 'rialo:signMessage' as const;\n\n// Transaction input/output\nexport interface SignTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n}\n\nexport interface SignTransactionOutput {\n signedTransaction: Uint8Array;\n}\n\nexport interface SignAndSendTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n options?: {\n skipPreflight?: boolean;\n preflightCommitment?: 'processed' | 'confirmed' | 'finalized';\n maxRetries?: number;\n };\n}\n\nexport interface SignAndSendTransactionOutput {\n signature: string;\n}\n\nexport interface SignMessageInput {\n account: RialoWalletAccount;\n message: Uint8Array;\n}\n\nexport interface SignMessageOutput {\n signature: Uint8Array;\n signedMessage: Uint8Array;\n}\n\n// Events\nexport interface WalletStandardEvents {\n change: {\n accounts?: RialoWalletAccount[];\n chains?: RialoChain[];\n };\n}\n\n// ============================================================================\n// Feature Interfaces\n// ============================================================================\n\nexport interface StandardConnectFeature {\n 'standard:connect': {\n connect(): Promise<{ accounts: RialoWalletAccount[] }>;\n };\n}\n\nexport interface StandardDisconnectFeature {\n 'standard:disconnect': {\n disconnect(): Promise<void>;\n };\n}\n\nexport interface StandardEventsFeature {\n 'standard:events': {\n on<E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): () => void;\n };\n}\n\nexport interface RialoSignTransactionFeature {\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction(input: SignTransactionInput): Promise<SignTransactionOutput>;\n };\n}\n\nexport interface RialoSignAndSendTransactionFeature {\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction(input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput>;\n };\n}\n\nexport interface RialoSignMessageFeature {\n [RIALO_SIGN_MESSAGE]: {\n signMessage(input: SignMessageInput): Promise<SignMessageOutput>;\n };\n}\n\n// ============================================================================\n// Wallet Interface\n// ============================================================================\n\nexport interface RialoWallet {\n readonly version: '1.0.0';\n readonly name: string;\n readonly icon: string;\n readonly chains: RialoChain[];\n readonly accounts: RialoWalletAccount[];\n readonly features: StandardConnectFeature &\n StandardDisconnectFeature &\n StandardEventsFeature &\n RialoSignTransactionFeature &\n RialoSignAndSendTransactionFeature &\n RialoSignMessageFeature;\n}\n\n// ============================================================================\n// Wallet Standard Implementation\n// ============================================================================\n\ntype EventListenerMap = {\n [K in keyof WalletStandardEvents]?: Set<(data: WalletStandardEvents[K]) => void>;\n};\n\ninterface RialoInpageProvider {\n isRialo: boolean;\n version: string;\n connect(): Promise<string[]>;\n disconnect(): Promise<void>;\n signTransaction(tx: Record<string, unknown>): Promise<{ signature: string; rawTransaction?: string }>;\n signAndSendTransaction(tx: Record<string, unknown>): Promise<{ hash: string }>;\n signMessage(message: string): Promise<{ signature: string }>;\n}\n\nexport class RialoWalletStandard implements RialoWallet {\n readonly version = '1.0.0' as const;\n readonly name = 'Rialo Wallet';\n readonly icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHBhdGggZD0iTTggMTBIMjRWMjJIOFYxMFoiIGZpbGw9IndoaXRlIi8+PC9zdmc+';\n\n private _accounts: RialoWalletAccount[] = [];\n private _chains: RialoChain[] = ['rialo:mainnet', 'rialo:testnet', 'rialo:devnet', 'rialo:localnet'];\n private _activeChain: RialoChain = 'rialo:devnet';\n private _eventListeners: EventListenerMap = {};\n private _connected = false;\n\n get chains(): RialoChain[] {\n return [...this._chains];\n }\n\n get accounts(): RialoWalletAccount[] {\n return [...this._accounts];\n }\n\n private get provider(): RialoInpageProvider | undefined {\n if (typeof window === 'undefined') return undefined;\n return (window as unknown as { rialo?: RialoInpageProvider }).rialo;\n }\n\n readonly features = {\n 'standard:connect': {\n connect: async (): Promise<{ accounts: RialoWalletAccount[] }> => {\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not installed');\n\n const addresses = await provider.connect();\n this._accounts = addresses.map((addr) => this.createAccount(addr));\n this._connected = true;\n this.emit('change', { accounts: this._accounts });\n return { accounts: this._accounts };\n },\n },\n 'standard:disconnect': {\n disconnect: async (): Promise<void> => {\n const provider = this.provider;\n if (provider) await provider.disconnect();\n this._accounts = [];\n this._connected = false;\n this.emit('change', { accounts: [] });\n },\n },\n 'standard:events': {\n on: <E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): (() => void) => {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = new Set();\n }\n const listeners = this._eventListeners[event] as Set<(data: WalletStandardEvents[E]) => void>;\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n },\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction: async (input: SignTransactionInput): Promise<SignTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const transactionBase64 = btoa(String.fromCharCode(...input.transaction));\n const result = await provider.signTransaction({\n transaction: transactionBase64,\n chain: input.chain || this._activeChain,\n });\n\n const signedTxBytes = result.rawTransaction\n ? Uint8Array.from(atob(result.rawTransaction), (c) => c.charCodeAt(0))\n : input.transaction;\n\n return { signedTransaction: signedTxBytes };\n },\n },\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction: async (input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const transactionBase64 = btoa(String.fromCharCode(...input.transaction));\n const result = await provider.signAndSendTransaction({\n transaction: transactionBase64,\n chain: input.chain || this._activeChain,\n options: input.options,\n });\n\n return { signature: result.hash };\n },\n },\n [RIALO_SIGN_MESSAGE]: {\n signMessage: async (input: SignMessageInput): Promise<SignMessageOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const messageStr = new TextDecoder().decode(input.message);\n const result = await provider.signMessage(messageStr);\n\n const sigHex = result.signature.startsWith('0x') ? result.signature.slice(2) : result.signature;\n const signatureBytes = new Uint8Array(sigHex.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16)) || []);\n\n return { signature: signatureBytes, signedMessage: input.message };\n },\n },\n };\n\n private emit<E extends keyof WalletStandardEvents>(event: E, data: WalletStandardEvents[E]): void {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach((listener) => {\n (listener as (data: WalletStandardEvents[E]) => void)(data);\n });\n }\n }\n\n private createAccount(address: string): RialoWalletAccount {\n const encoder = new TextEncoder();\n const publicKey = new Uint8Array(32);\n const addressBytes = encoder.encode(address);\n publicKey.set(addressBytes.slice(0, 32));\n\n return {\n address,\n publicKey,\n chains: this._chains,\n features: [RIALO_SIGN_TRANSACTION, RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE],\n label: 'Rialo Account',\n };\n }\n\n setActiveChain(chain: RialoChain): void {\n this._activeChain = chain;\n this.emit('change', { chains: [chain] });\n }\n}\n\n// ============================================================================\n// Registration\n// ============================================================================\n\nlet walletInstance: RialoWalletStandard | null = null;\n\nexport function registerRialoWallet(): RialoWalletStandard {\n if (walletInstance) return walletInstance;\n\n walletInstance = new RialoWalletStandard();\n\n if (typeof window !== 'undefined') {\n try {\n const registerEvent = new CustomEvent('wallet-standard:register-wallet', {\n detail: {\n register: (callback: (wallet: RialoWalletStandard) => void) => {\n callback(walletInstance!);\n },\n },\n });\n window.dispatchEvent(registerEvent);\n } catch (error) {\n console.warn('Failed to dispatch wallet registration event:', error);\n }\n\n Object.defineProperty(window, '__rialoWalletStandard', {\n value: walletInstance,\n writable: false,\n configurable: false,\n });\n }\n\n return walletInstance;\n}\n\nexport function getRialoWallet(): RialoWalletStandard | null {\n return walletInstance;\n}\n\nexport function isRialoWalletRegistered(): boolean {\n return walletInstance !== null;\n}\n\n// Auto-register\nif (typeof window !== 'undefined' && document.readyState === 'complete') {\n registerRialoWallet();\n} else if (typeof window !== 'undefined') {\n window.addEventListener('load', registerRialoWallet);\n}\n\nexport default RialoWalletStandard;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/standard.ts"],"names":[],"mappings":"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","file":"standard.cjs","sourcesContent":["/**\n * @cookill/wallet-adapter/standard v2.1.0\n * Wallet Standard implementation for advanced integrations\n */\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';\n\nexport interface RialoWalletAccount {\n address: string;\n publicKey: Uint8Array;\n chains: RialoChain[];\n features: string[];\n label?: string;\n icon?: string;\n}\n\n// Feature identifiers\nexport const RIALO_SIGN_TRANSACTION = 'rialo:signTransaction' as const;\nexport const RIALO_SIGN_AND_SEND_TRANSACTION = 'rialo:signAndSendTransaction' as const;\nexport const RIALO_SIGN_MESSAGE = 'rialo:signMessage' as const;\nexport const RIALO_SIGN_ALL_TRANSACTIONS = 'rialo:signAllTransactions' as const;\n\n// Transaction input/output\nexport interface SignTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n}\n\nexport interface SignTransactionOutput {\n signedTransaction: Uint8Array;\n}\n\nexport interface SignAndSendTransactionInput {\n account: RialoWalletAccount;\n transaction: Uint8Array;\n chain?: RialoChain;\n options?: {\n skipPreflight?: boolean;\n preflightCommitment?: 'processed' | 'confirmed' | 'finalized';\n maxRetries?: number;\n };\n}\n\nexport interface SignAndSendTransactionOutput {\n signature: string;\n}\n\nexport interface SignMessageInput {\n account: RialoWalletAccount;\n message: Uint8Array;\n}\n\nexport interface SignMessageOutput {\n signature: Uint8Array;\n signedMessage: Uint8Array;\n}\n\n// Events\nexport interface WalletStandardEvents {\n change: {\n accounts?: RialoWalletAccount[];\n chains?: RialoChain[];\n };\n}\n\n// ============================================================================\n// Feature Interfaces\n// ============================================================================\n\nexport interface StandardConnectFeature {\n 'standard:connect': {\n connect(): Promise<{ accounts: RialoWalletAccount[] }>;\n };\n}\n\nexport interface StandardDisconnectFeature {\n 'standard:disconnect': {\n disconnect(): Promise<void>;\n };\n}\n\nexport interface StandardEventsFeature {\n 'standard:events': {\n on<E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): () => void;\n };\n}\n\nexport interface RialoSignTransactionFeature {\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction(input: SignTransactionInput): Promise<SignTransactionOutput>;\n };\n}\n\nexport interface RialoSignAndSendTransactionFeature {\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction(input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput>;\n };\n}\n\nexport interface RialoSignMessageFeature {\n [RIALO_SIGN_MESSAGE]: {\n signMessage(input: SignMessageInput): Promise<SignMessageOutput>;\n };\n}\n\n// ============================================================================\n// Wallet Interface\n// ============================================================================\n\nexport interface RialoWallet {\n readonly version: '1.0.0';\n readonly name: string;\n readonly icon: string;\n readonly chains: RialoChain[];\n readonly accounts: RialoWalletAccount[];\n readonly features: StandardConnectFeature &\n StandardDisconnectFeature &\n StandardEventsFeature &\n RialoSignTransactionFeature &\n RialoSignAndSendTransactionFeature &\n RialoSignMessageFeature;\n}\n\n// ============================================================================\n// Wallet Standard Implementation\n// ============================================================================\n\ntype EventListenerMap = {\n [K in keyof WalletStandardEvents]?: Set<(data: WalletStandardEvents[K]) => void>;\n};\n\ninterface RialoInpageProvider {\n isRialo: boolean;\n version: string;\n connect(): Promise<Array<string | { address: string; publicKey?: string }>>;\n disconnect(): Promise<void>;\n signTransaction(tx: Record<string, unknown>): Promise<{ signature: string; rawTransaction?: string }>;\n signAndSendTransaction(tx: Record<string, unknown>): Promise<{ hash: string; signature?: string }>;\n signMessage(message: string): Promise<{ signature: string; message?: string }>;\n getNetwork(): Promise<string>;\n switchNetwork(network: string): Promise<{ success: boolean }>;\n on(event: string, callback: (data: unknown) => void): () => void;\n}\n\nexport class RialoWalletStandard implements RialoWallet {\n readonly version = '1.0.0' as const;\n readonly name = 'Rialo Buddy';\n readonly icon = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHRleHQgeD0iNTAlIiB5PSI1NSUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxOCIgZmlsbD0id2hpdGUiPlI8L3RleHQ+PC9zdmc+';\n\n private _accounts: RialoWalletAccount[] = [];\n private _chains: RialoChain[] = ['rialo:mainnet', 'rialo:testnet', 'rialo:devnet', 'rialo:localnet'];\n private _activeChain: RialoChain = 'rialo:devnet';\n private _eventListeners: EventListenerMap = {};\n private _connected = false;\n private _cleanupFns: Array<() => void> = [];\n\n get chains(): RialoChain[] {\n return [...this._chains];\n }\n\n get accounts(): RialoWalletAccount[] {\n return [...this._accounts];\n }\n\n private get provider(): RialoInpageProvider | undefined {\n if (typeof window === 'undefined') return undefined;\n return (window as unknown as { rialo?: RialoInpageProvider }).rialo;\n }\n\n constructor() {\n this.setupProviderEvents();\n }\n\n private setupProviderEvents() {\n const provider = this.provider;\n if (!provider) return;\n\n const cleanup1 = provider.on('accountsChanged', (data: unknown) => {\n const accounts = data as Array<string | { address: string }>;\n this._accounts = accounts.map(acc => this.createAccount(typeof acc === 'string' ? acc : acc.address));\n this.emit('change', { accounts: this._accounts });\n });\n\n const cleanup2 = provider.on('networkChanged', (data: unknown) => {\n const { network } = data as { network: string };\n this._activeChain = `rialo:${network}` as RialoChain;\n this.emit('change', { chains: [this._activeChain] });\n });\n\n const cleanup3 = provider.on('disconnect', () => {\n this._connected = false;\n this._accounts = [];\n this.emit('change', { accounts: [] });\n });\n\n this._cleanupFns.push(cleanup1, cleanup2, cleanup3);\n }\n\n readonly features = {\n 'standard:connect': {\n connect: async (): Promise<{ accounts: RialoWalletAccount[] }> => {\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not installed');\n\n const result = await provider.connect();\n this._accounts = result.map((acc) => \n this.createAccount(typeof acc === 'string' ? acc : acc.address)\n );\n this._connected = true;\n \n // Get current network\n try {\n const network = await provider.getNetwork();\n this._activeChain = `rialo:${network}` as RialoChain;\n } catch {}\n\n this.emit('change', { accounts: this._accounts });\n return { accounts: this._accounts };\n },\n },\n 'standard:disconnect': {\n disconnect: async (): Promise<void> => {\n const provider = this.provider;\n if (provider) await provider.disconnect();\n this._accounts = [];\n this._connected = false;\n this.emit('change', { accounts: [] });\n },\n },\n 'standard:events': {\n on: <E extends keyof WalletStandardEvents>(\n event: E,\n listener: (data: WalletStandardEvents[E]) => void\n ): (() => void) => {\n if (!this._eventListeners[event]) {\n this._eventListeners[event] = new Set();\n }\n const listeners = this._eventListeners[event] as Set<(data: WalletStandardEvents[E]) => void>;\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n },\n [RIALO_SIGN_TRANSACTION]: {\n signTransaction: async (input: SignTransactionInput): Promise<SignTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const transactionBase64 = this.bytesToBase64(input.transaction);\n const result = await provider.signTransaction({\n transaction: transactionBase64,\n chain: input.chain || this._activeChain,\n });\n\n const signedTxBytes = result.rawTransaction\n ? this.base64ToBytes(result.rawTransaction)\n : input.transaction;\n\n return { signedTransaction: signedTxBytes };\n },\n },\n [RIALO_SIGN_AND_SEND_TRANSACTION]: {\n signAndSendTransaction: async (input: SignAndSendTransactionInput): Promise<SignAndSendTransactionOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const transactionBase64 = this.bytesToBase64(input.transaction);\n const result = await provider.signAndSendTransaction({\n transaction: transactionBase64,\n chain: input.chain || this._activeChain,\n options: input.options,\n });\n\n return { signature: result.hash || result.signature || '' };\n },\n },\n [RIALO_SIGN_MESSAGE]: {\n signMessage: async (input: SignMessageInput): Promise<SignMessageOutput> => {\n if (!this._connected) throw new Error('Wallet not connected');\n const provider = this.provider;\n if (!provider) throw new Error('Rialo Wallet not available');\n\n const messageStr = new TextDecoder().decode(input.message);\n const result = await provider.signMessage(messageStr);\n\n const sigHex = result.signature.startsWith('0x') \n ? result.signature.slice(2) \n : result.signature;\n const signatureBytes = this.hexToBytes(sigHex);\n\n return { signature: signatureBytes, signedMessage: input.message };\n },\n },\n };\n\n private emit<E extends keyof WalletStandardEvents>(event: E, data: WalletStandardEvents[E]): void {\n const listeners = this._eventListeners[event];\n if (listeners) {\n listeners.forEach((listener) => {\n (listener as (data: WalletStandardEvents[E]) => void)(data);\n });\n }\n }\n\n private createAccount(address: string): RialoWalletAccount {\n const encoder = new TextEncoder();\n const publicKey = new Uint8Array(32);\n const addressBytes = encoder.encode(address);\n publicKey.set(addressBytes.slice(0, 32));\n\n return {\n address,\n publicKey,\n chains: this._chains,\n features: [\n RIALO_SIGN_TRANSACTION, \n RIALO_SIGN_AND_SEND_TRANSACTION, \n RIALO_SIGN_MESSAGE,\n RIALO_SIGN_ALL_TRANSACTIONS,\n ],\n label: 'Rialo Account',\n };\n }\n\n private bytesToBase64(bytes: Uint8Array): string {\n return btoa(String.fromCharCode(...bytes));\n }\n\n private base64ToBytes(base64: string): Uint8Array {\n return Uint8Array.from(atob(base64), c => c.charCodeAt(0));\n }\n\n private hexToBytes(hex: string): Uint8Array {\n const matches = hex.match(/.{1,2}/g);\n return new Uint8Array(matches?.map(byte => parseInt(byte, 16)) || []);\n }\n\n setActiveChain(chain: RialoChain): void {\n this._activeChain = chain;\n this.emit('change', { chains: [chain] });\n }\n\n destroy(): void {\n this._cleanupFns.forEach(fn => fn());\n this._cleanupFns = [];\n Object.keys(this._eventListeners).forEach(key => {\n delete this._eventListeners[key as keyof WalletStandardEvents];\n });\n }\n}\n\n// ============================================================================\n// Registration\n// ============================================================================\n\nlet walletInstance: RialoWalletStandard | null = null;\n\nexport function registerRialoWallet(): RialoWalletStandard {\n if (walletInstance) return walletInstance;\n\n walletInstance = new RialoWalletStandard();\n\n if (typeof window !== 'undefined') {\n try {\n // Wallet Standard registration\n const registerEvent = new CustomEvent('wallet-standard:register-wallet', {\n detail: {\n register: (callback: (wallet: RialoWalletStandard) => void) => {\n callback(walletInstance!);\n },\n },\n });\n window.dispatchEvent(registerEvent);\n\n // Also announce via EIP-6963\n window.dispatchEvent(new CustomEvent('eip6963:announceProvider', {\n detail: {\n info: {\n uuid: 'rialo-wallet-standard',\n name: 'Rialo Buddy',\n icon: walletInstance.icon,\n rdns: 'io.rialo.buddy',\n },\n provider: walletInstance,\n },\n }));\n } catch (error) {\n console.warn('Failed to dispatch wallet registration event:', error);\n }\n\n Object.defineProperty(window, '__rialoWalletStandard', {\n value: walletInstance,\n writable: false,\n configurable: false,\n });\n }\n\n return walletInstance;\n}\n\nexport function getRialoWallet(): RialoWalletStandard | null {\n return walletInstance;\n}\n\nexport function isRialoWalletRegistered(): boolean {\n return walletInstance !== null;\n}\n\n// Auto-register when DOM is ready\nif (typeof window !== 'undefined') {\n if (document.readyState === 'complete') {\n registerRialoWallet();\n } else {\n window.addEventListener('load', registerRialoWallet);\n }\n}\n\nexport default RialoWalletStandard;\n"]}
|
package/dist/standard.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
2
|
+
* @cookill/wallet-adapter/standard v2.1.0
|
|
3
3
|
* Wallet Standard implementation for advanced integrations
|
|
4
4
|
*/
|
|
5
5
|
type RialoChain = 'rialo:mainnet' | 'rialo:testnet' | 'rialo:devnet' | 'rialo:localnet';
|
|
@@ -14,6 +14,7 @@ interface RialoWalletAccount {
|
|
|
14
14
|
declare const RIALO_SIGN_TRANSACTION: "rialo:signTransaction";
|
|
15
15
|
declare const RIALO_SIGN_AND_SEND_TRANSACTION: "rialo:signAndSendTransaction";
|
|
16
16
|
declare const RIALO_SIGN_MESSAGE: "rialo:signMessage";
|
|
17
|
+
declare const RIALO_SIGN_ALL_TRANSACTIONS: "rialo:signAllTransactions";
|
|
17
18
|
interface SignTransactionInput {
|
|
18
19
|
account: RialoWalletAccount;
|
|
19
20
|
transaction: Uint8Array;
|
|
@@ -91,16 +92,19 @@ interface RialoWallet {
|
|
|
91
92
|
}
|
|
92
93
|
declare class RialoWalletStandard implements RialoWallet {
|
|
93
94
|
readonly version: "1.0.0";
|
|
94
|
-
readonly name = "Rialo
|
|
95
|
-
readonly icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+
|
|
95
|
+
readonly name = "Rialo Buddy";
|
|
96
|
+
readonly icon = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI4IiBmaWxsPSIjNkVCOUE4Ii8+PHRleHQgeD0iNTAlIiB5PSI1NSUiIGRvbWluYW50LWJhc2VsaW5lPSJtaWRkbGUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZvbnQtZmFtaWx5PSJzYW5zLXNlcmlmIiBmb250LXdlaWdodD0iYm9sZCIgZm9udC1zaXplPSIxOCIgZmlsbD0id2hpdGUiPlI8L3RleHQ+PC9zdmc+";
|
|
96
97
|
private _accounts;
|
|
97
98
|
private _chains;
|
|
98
99
|
private _activeChain;
|
|
99
100
|
private _eventListeners;
|
|
100
101
|
private _connected;
|
|
102
|
+
private _cleanupFns;
|
|
101
103
|
get chains(): RialoChain[];
|
|
102
104
|
get accounts(): RialoWalletAccount[];
|
|
103
105
|
private get provider();
|
|
106
|
+
constructor();
|
|
107
|
+
private setupProviderEvents;
|
|
104
108
|
readonly features: {
|
|
105
109
|
'standard:connect': {
|
|
106
110
|
connect: () => Promise<{
|
|
@@ -125,10 +129,14 @@ declare class RialoWalletStandard implements RialoWallet {
|
|
|
125
129
|
};
|
|
126
130
|
private emit;
|
|
127
131
|
private createAccount;
|
|
132
|
+
private bytesToBase64;
|
|
133
|
+
private base64ToBytes;
|
|
134
|
+
private hexToBytes;
|
|
128
135
|
setActiveChain(chain: RialoChain): void;
|
|
136
|
+
destroy(): void;
|
|
129
137
|
}
|
|
130
138
|
declare function registerRialoWallet(): RialoWalletStandard;
|
|
131
139
|
declare function getRialoWallet(): RialoWalletStandard | null;
|
|
132
140
|
declare function isRialoWalletRegistered(): boolean;
|
|
133
141
|
|
|
134
|
-
export { RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE, RIALO_SIGN_TRANSACTION, type RialoChain, type RialoSignAndSendTransactionFeature, type RialoSignMessageFeature, type RialoSignTransactionFeature, type RialoWallet, type RialoWalletAccount, RialoWalletStandard, type SignAndSendTransactionInput, type SignAndSendTransactionOutput, type SignMessageInput, type SignMessageOutput, type SignTransactionInput, type SignTransactionOutput, type StandardConnectFeature, type StandardDisconnectFeature, type StandardEventsFeature, type WalletStandardEvents, RialoWalletStandard as default, getRialoWallet, isRialoWalletRegistered, registerRialoWallet };
|
|
142
|
+
export { RIALO_SIGN_ALL_TRANSACTIONS, RIALO_SIGN_AND_SEND_TRANSACTION, RIALO_SIGN_MESSAGE, RIALO_SIGN_TRANSACTION, type RialoChain, type RialoSignAndSendTransactionFeature, type RialoSignMessageFeature, type RialoSignTransactionFeature, type RialoWallet, type RialoWalletAccount, RialoWalletStandard, type SignAndSendTransactionInput, type SignAndSendTransactionOutput, type SignMessageInput, type SignMessageOutput, type SignTransactionInput, type SignTransactionOutput, type StandardConnectFeature, type StandardDisconnectFeature, type StandardEventsFeature, type WalletStandardEvents, RialoWalletStandard as default, getRialoWallet, isRialoWalletRegistered, registerRialoWallet };
|