The NeoLine extension wallet injects an Ethereum provider, as specified by EIP-1193, into the browser at window.NEOLineNeoX.
You can use this provider in your dapp to request users' Ethereum accounts, read on-chain data, and have the user sign messages and transactions.
NOTE
NeoLine supports EIP-6963, You can access the provider API using the selected EIP-6963 provider object. Throughout this documentation, we refer to the selected provider using provider.
The NeoLine provider emits events using the Node.js EventEmitter API. The following is an example of listening to the accountsChanged event.
You should remove listeners after you're done listening to an event (for example, on component unmount in React).
accountsChanged
The provider emits this event when the return value of the eth_accounts RPC method changes. eth_accounts returns either an empty array, or an array that contains the addresses of the accounts the caller is permitted to access with the most recently used account first. Callers are identified by their URL origin, which means that all sites with the same origin share the same permissions.
chainChanged
The provider emits this event when the currently connected chain changes. Listen to this event to detect a user's network.
Remove event listeners
removeListener
Use the removeListener method to remove specific event listeners from an EventEmitter object. In the following example removeListener is used to remove the chainChanged and accountsChanged events:
Errors
All errors returned by the NeoLine provider follow this interface:
The request() provider method throws errors eagerly. You can use the error code property to determine why the request failed. Common codes and their meaning include:
provider // Or window.NEOLineNeoX if you don't support EIP-6963.
.request({
method: "eth_sendTransaction",
params: [
{
from: "0xE45e9AdC2B51514849ea5B38dF37d1a65e6D52f5",
to: "0x7Cd07BCbcCF30d71E768F5228b56d5B7Cc07f674",
value: "0x3b9aca00", // 1_000_000_000
},
],
})
.then((result) => {
// The result varies by RPC method.
// For example, this method returns a transaction hash hexadecimal string upon success.
})
.catch((error) => {
// If the request fails, the Promise rejects with an error.
})
function handleAccountsChanged(accounts) {
// Handle new accounts, or lack thereof.
}
provider // Or window.NEOLineNeoX if you don't support EIP-6963.
.on("accountsChanged", handleAccountsChanged)
// Later
provider // Or window.NEOLineNeoX if you don't support EIP-6963.
.removeListener("accountsChanged", handleAccountsChanged)
provider // Or window.NEOLineNeoX if you don't support EIP-6963.
.on("accountsChanged", handler: (accounts: string[]) => void);
provider // Or window.NEOLineNeoX if you don't support EIP-6963.
.on("chainChanged", handler: (chainId: string) => void);
// Use window.NEOLineNeoX instead of provider if EIP-6963 is not supported.
// Add listeners
provider.on("accountsChanged", updateWallet)
provider.on("chainChanged", updateWalletAndAccounts)
// Remove individual listeners
provider.removeListener("accountsChanged", updateWallet)
provider.removeListener("chainChanged", updateWalletAndAccounts)