Injected wallets expose `window.ethereum` adhering to EIP-1193, using `request({ method, params })` and event emitters for state synchronization.
js
const accounts = await window.ethereum.request({ method: "eth_requestAccounts" });
window.ethereum.on("accountsChanged", (accs) => updateAccount(accs[0]));