{"id":13820546,"url":"https://github.com/DePayFi/web3-wallets","last_synced_at":"2025-05-16T10:31:30.715Z","repository":{"id":40351254,"uuid":"377411688","full_name":"DePayFi/web3-wallets","owner":"DePayFi","description":"👛 One-Stop-Shop JavaScript library to integrate various web3 crypto wallets and multiple blockchains at once with a single interface.","archived":false,"fork":false,"pushed_at":"2024-10-11T06:28:23.000Z","size":23585,"stargazers_count":72,"open_issues_count":0,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-11T22:13:22.511Z","etag":null,"topics":["crypto-wallet","cryptocurrency","wallets","web3"],"latest_commit_sha":null,"homepage":"https://depay.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DePayFi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":"https://tip.depay.com/6KFBECVsokSt0UKOAug8CI"}},"created_at":"2021-06-16T07:38:53.000Z","updated_at":"2024-10-11T06:28:27.000Z","dependencies_parsed_at":"2023-02-04T14:02:07.982Z","dependency_job_id":"55484891-f656-47d4-988b-2521d666ed7a","html_url":"https://github.com/DePayFi/web3-wallets","commit_stats":{"total_commits":305,"total_committers":5,"mean_commits":61.0,"dds":"0.15081967213114755","last_synced_commit":"29e0500ed4d255f07dd341d0d9f3e3f0210b0adc"},"previous_names":["depayfi/depay-crypto-wallets","depayfi/depay-web3-wallets"],"tags_count":237,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DePayFi%2Fweb3-wallets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DePayFi%2Fweb3-wallets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DePayFi%2Fweb3-wallets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DePayFi%2Fweb3-wallets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DePayFi","download_url":"https://codeload.github.com/DePayFi/web3-wallets/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225423641,"owners_count":17472153,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crypto-wallet","cryptocurrency","wallets","web3"],"created_at":"2024-08-04T08:01:05.108Z","updated_at":"2025-05-16T10:31:30.690Z","avatar_url":"https://github.com/DePayFi.png","language":"JavaScript","readme":"## Quickstart\n\n```\nyarn add @depay/web3-wallets\n```\n\nor \n\n```\nnpm install --save @depay/web3-wallets\n```\n\n```javascript\nimport { getWallets } from '@depay/web3-wallets'\n\nlet wallets = await getWallets()\n\n// display wallets, have user pick one:\n\nlet wallet = wallets[0]\n\nwallet.name // MetaMask\nawait wallet.connect() // 0x317D875cA3B9f8d14f960486C0d1D1913be74e90\n```\n\n## Demo\n\nhttps://depayfi.github.io/web3-wallets/demo.html\n\n## Support\n\nThis library supports the following blockchains:\n\n- [Ethereum](https://ethereum.org)\n- [BNB Smart Chain](https://www.binance.org/smartChain)\n- [Polygon](https://polygon.technology)\n- [Solana](https://solana.com)\n- [Fantom](https://fantom.foundation)\n- [Arbitrum](https://arbitrum.io)\n- [Avalanche](https://www.avax.network)\n- [Gnosis](https://gnosis.io)\n- [Optimism](https://www.optimism.io)\n- [Base](https://base.org)\n- [Worldchain](https://worldcoin.org/world-chain)\n\nThis library supports most crypto wallets:\n\nSee https://depay.com/wallets for more details\n\n## Platform specific packaging\n\nIn case you want to use and package only specific platforms, use platform-specific packages:\n\n### EVM specific packaging\n\n```javascript\nimport { getWallets } from '@depay/web3-wallets-evm'\n```\n\n### SOLANA specific packaging\n\n```javascript\nimport { getWallets } from '@depay/web3-wallets-svm'\n```\n\n## Functionalities\n\n### getWallets\n\n`getWallets`: Returns an array of available/connectable wallets. Can wait up to 5 seconds because of checking existing WalletConnect connections.\nUse `drip` to receive available wallets faster.\n\n```javascript\nlet availableWallets = await getWallets();\n// [\u003cWallet name='MetaMask'\u003e, \u003cWallet name='Phantom'\u003e]\n```\n\n```javascript\nlet availableWallets = await getWallets();\n// [] no wallets detected. (you can still try have user connec via WalletConnect or WalletLink)\n```\n\n```javascript\nimport { getWallets, wallets } from \"@depay/web3-wallets\"\n\nlet availableWallets = await getWallets()\n\nlet wallet\nif(availableWallets.length == 1) {\n  wallet = availableWallets[0]\n} else if(availableWallets.length \u003e 1) {\n  wallet = availableWallets[parseInt(prompt('Which wallet do you want to connect?'), 10)]\n} else {\n  // Let the user choose:\n  // you can still try to connect via wallets.WalletConnect.connect()\n  // or wallets.WalletLink.connect()\n  wallet = wallets.WalletLink\n}\n```\n\n#### drip\n\nPass a `drip` callback to `getWallets` to receive available wallet as soon as they are found, without waiting for all wallets to be checked:\n\n```javascript\n\ngetWallets({\n  drip: (wallet)=\u003e{\n    setAvailableWallets(\n      availableWallets.concat([wallet])\n    )\n  }\n})\n\n```\n\n### Name\n\n`name:string`: Returns the name of the wallet.\n\n```javascript\nwallet.name // 'MetaMask'\n```\n\n### Logo\n\n`logo:string`: Returns the logo of the wallet as PNG base64-encoded.\n\n```javascript\nwallet.logo // 'data:image/png;base64,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'\n```\n\n### Account\n\n`async account():string`: Gets the currently connected and active account (without prompting a connect screen). Returns `undefined` if no account is connected.\n\n```javascript\nawait wallet.account() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'\n```\n\n### Connect an account\n\n`async connect():string`: Connects account. Potentially opens wallet connect screen. Provides connected account in async return. If wallet fails to connect, it returns `undefined`.\n\n```javascript\nawait wallet.connect() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'\n```\n\n### Platform\n\n`platform:string`: Platform of the identified wallet. If a wallet has multiplatform support (e.g. EVM + SVM), it will provide 1 wallet instance per platform (e.g. Phantom, Exodus, etc.)\n\n```javascript\nwallet.platform // 'evm'\n```\n\n### Supported Blockchains\n\n`blockchains:Array`: Array containing the names of supported blockchains\n\n```javascript\nwallet.blockchains // ['ethereum', 'bsc', 'polygon']\n```\n\n### Check if wallet is connected to a specific blockchain\n\n`async connectedTo(blockchain):Boolean`: Checks if wallet is connected to a specific blockchain.\n\n```javascript\nawait wallet.connectedTo('ethereum') // true\n```\n\nIf no param is given it well tell you to which blockchain the wallet is connected to:\n\n```javascript\nawait wallet.connectedTo() // 'bsc'\n```\n\ncan provide an array if connected to multiple blockchains:\n\n```javascript\nawait wallet.connectedTo() // ['ethereum', 'bsc']\n```\n\n### Receive wallet events\n\n`on(string, function):undefined`: Register a callback function for given events.\n\n```javascript\nwallet.on('account', (newAccount)=\u003e{\n  doSomething(newAccount)\n})\n```\n\n#### Events\n\n`on('account', (newAccount)=\u003e{})`: Triggers when user changes the connected/active wallet account.\n\n#### Deregister wallet events\n\n`.on` returns a callback function that needs to be passed to `.off` if you want to deregister the event listener:\n\n```javascript\nlet callback = wallet.on('account', (newAccount)=\u003e{\n  doSomething(newAccount)\n})\n\n//...\n\nwallet.off('account', callback) // removes listener\n```\n\n### Switch blockchain/network\n\n`async switchTo(blockchain)`: Changes wallet connection to a specific network (adds it to the wallet in case it's missing)\n\n```javascript\nawait wallet.switchTo('bsc')\n```\n\n### Transaction\n\n### Data Structure\n\n`accepted: Function ()=\u003e{}`: Callback that will be executed once the transaction has been accepted by the wallet but not sent to the network yet (e.g. relayer, World App). Has no transaction yet, as only sent can contain the transaction.\n\n`api: Array`: Api of the contract (e.g. abi for Ethereum, Layout/Struct for Solana).\n\n`blockchain: String`: Name of the blockchain e.g. 'ethereum'.\n\n`failed: Function (transaction, error)=\u003e{}`: Callback that will be executed once the transaction failed onchain (reverted).\n\n`from: String`: Address of the transaction sender.\n\n`id: String`: Identifier of the transaction.\n\n`instructions: Array`: List of instructions (Solana).\n\n`signers: Array`: List of signers (Solana).\n\n`method: String`: Name of the contract method to be called (EVM).\n\n`nonce: Integer`: Nonce (number only used once) of the transaction (EVM).\n\n`params: Object or Array`: Parameters passed to the method (EVM).\n\n`sent: Function (transaction)=\u003e{}`: Callback that will be executed executed once the transaction has been sent to the network.\n\n`succeeded: Function (transaction)=\u003e{}`: Callback that will be executed once the transaction was successful and has been confirmed at least once by the network.\n\n`to String`: Address of the contract to be transacted with (EVM).\n\n`url String`: Url to open the transaction (e.g. in an explorer).\n\n`value: Number or BigNumber as String`: Value of the transaction (amount of the native blockchain currency sent along with the transaction).\n\n### sendTransaction\n\n#### EVM: sendTransaction\n\nAvailable arguments for EVM blockchains:\n\n`api: Array`: Api of the contract (e.g. abi for Ethereum).\n\n`blockchain: String`: Name of the blockchain e.g. 'ethereum'.\n\n`failed: Function (transaction, error)=\u003e{}`: Callback to be executed if transaction failed (e.g. reverted).\n\n`method: String`: Name of the contract method to be called.\n\n`params: Object or Array`: Parameters passed to the method.\n\n`sent: Function (transaction)=\u003e{}`: Callback to be executed if transaction has been sent to the network.\n\n`succeeded: Function (transaction)=\u003e{}`: Callback to be executed if transaction was successful and has been confirmed once by the network.\n\n`to String`: Address of the contract to be transacted with.\n\n`value: Number or BigNumber as String`: Value of the transaction (amount of the native blockchain currency sent along with the transaction).\n\n\n##### EVM: Simple value transfer\n\ne.g. sending 0.01 ETH on Ethereum:\n\n```javascript\n\nlet sentTransaction = await wallet.sendTransaction({\n  blockchain: 'ethereum',\n  to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',\n  value: 0.01,\n  sent: function(transaction){},\n  succeeded: function(transaction){},\n  failed: function(transaction, error){}\n})\n```\n\n##### EVM: Smart contract interaction\n\n```javascript\nlet sentTransaction = await wallet.sendTransaction({\n  blockchain: 'ethereum',\n  to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',\n  api: [{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_configuration\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"configuration\",\"outputs\":[{\"internalType\":\"contract DePayRouterV1Configuration\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pluginAddress\",\"type\":\"address\"}],\"name\":\"isApproved\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"plugins\",\"type\":\"address[]\"},{\"internalType\":\"string[]\",\"name\":\"data\",\"type\":\"string[]\"}],\"name\":\"route\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\n  method: 'route',\n  params: {\n    path: [\"0xb056c38f6b7Dc4064367403E26424CD2c60655e1\",\"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\",\"0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb\"],\n    amounts: [\"11275067000000000000000\",\"100000000000000000000\", \"1632063302\"],\n    addresses: [\"0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d\", \"0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d\"],\n    plugins: [\"0xe04b08Dfc6CaA0F4Ec523a3Ae283Ece7efE00019\", \"0x99F3F4685a7178F26EB4F4Ca8B75a1724F1577B9\"],\n    data: []\n  },\n  value: \"0\",\n  sent: function(transaction){},\n  succeeded: function(transaction){},\n  failed: function(transaction, error){}\n})\n```\n\n#### Solana: sendTransaction\n\nAvailable arguments for Solana blockchains:\n\n`blockchain: String`: Name of the blockchain e.g. 'solana'.\n\n`failed: Function (transaction, error)=\u003e{}`: Callback to be executed if transaction failed (e.g. reverted).\n\n`sent: Function (transaction)=\u003e{}`: Callback to be executed if transaction has been sent to the network.\n\n`succeeded: Function (transaction)=\u003e{}`: Callback to be executed if transaction was successful and has been confirmed once by the network.\n\n##### Solana: Simple value transfer\n\ne.g. send 0.01 SOL on Solana:\n\n`to String`: Address of the receiver.\n\n`value: Number or BigNumber as String`: Value of the transaction (only needed for simple SOL transfers).\n\n```javascript\n\nlet sentTransaction = await wallet.sendTransaction({\n  blockchain: 'solana',\n  to: '2UgCJaHU5y8NC4uWQcZYeV9a5RyYLF7iKYCybCsdFFD1',\n  value: 0.01,\n  sent: function(transaction){},\n  succeeded: function(transaction){},\n  failed: function(transaction, error){}\n})\n```\n\n##### Solana: Sign and send instructions\n\n`instructions Array`: A set of TransactionInstructions\n\ne.g. Send 1 USDC:\n\n```javascript\nimport Token from '@depay/web3-tokens'\n\nlet sentTransaction = await wallet.sendTransaction({\n  blockchain: 'solana',\n  instructions: [\n    await Token.solana.createTransferInstructions({\n      token: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', \n      amount: '1000000',\n      from: await wallet.account(),\n      to: '5AcFMJZkXo14r3Hj99iYd1HScPiM4hAcLZf552DfZkxas'\n    })\n  ],\n  sent: function(transaction){},\n  succeeded: function(transaction){},\n  failed: function(transaction, error){}\n})\n```\n\n###### Solana: Instruction signers\n\nIf you need to sign an instruction (e.g. creating \"throw away\" accounts)\n\nyou can pass `signers` as part of the transaction passed to `sendTransaction`:\n\n```javascript\nimport { getProvider } from '@depay/web3-client'\nimport Token from '@depay/web3-tokens'\nimport { PublicKey, SystemProgram, Keypair } from '@depay/solana-web3.js'\n\nconst wallets = await getWallets()\nconst wallet = wallets[0]\nconst fromAddress = await wallet.account()\nconst provider = await getProvider('solana')\nconst keypair = Keypair.generate()\nconst account = keypair.publicKey.toString()\nconst rent = await provider.getMinimumBalanceForRentExemption(Token.solana.TOKEN_LAYOUT.span)\n\nlet instruction = SystemProgram.createAccount({\n  fromPubkey: new SolanaWeb3js.PublicKey(fromAddress),\n  newAccountPubkey: new SolanaWeb3js.PublicKey(wrappedAccount),\n  programId: new SolanaWeb3js.PublicKey(Web3Tokens.Token.solana.TOKEN_PROGRAM),\n  space: Web3Tokens.Token.solana.TOKEN_LAYOUT.span,\n  lamports: rent\n})\n\nlet sentTransaction = await wallet.sendTransaction({\n  blockchain: 'solana',\n  instructions: [instruction],\n  signers: [keypair],\n  sent: function(transaction){},\n  succeeded: function(transaction){},\n  failed: function(transaction, error){}\n})\n```\n\n###### Solana: Address Lookup Tables\n\nIf you need to pass address lookup tables in order to reduce transaction size,\n\nyou can pass `alts` as part of the transaction passed to `sendTransaction`:\n\n```javascript\nimport { getProvider } from '@depay/web3-client'\nimport Token from '@depay/web3-tokens'\nimport { PublicKey, SystemProgram, Keypair } from '@depay/solana-web3.js'\n\nconst wallets = await getWallets()\nconst wallet = wallets[0]\nconst fromAddress = await wallet.account()\nconst provider = await getProvider('solana')\nconst keypair = Keypair.generate()\nconst account = keypair.publicKey.toString()\nconst rent = await provider.getMinimumBalanceForRentExemption(Token.solana.TOKEN_LAYOUT.span)\n\nlet instruction = SystemProgram.createAccount({\n  fromPubkey: new SolanaWeb3js.PublicKey(fromAddress),\n  newAccountPubkey: new SolanaWeb3js.PublicKey(wrappedAccount),\n  programId: new SolanaWeb3js.PublicKey(Web3Tokens.Token.solana.TOKEN_PROGRAM),\n  space: Web3Tokens.Token.solana.TOKEN_LAYOUT.span,\n  lamports: rent\n})\n\nlet sentTransaction = await wallet.sendTransaction({\n  blockchain: 'solana',\n  instructions: [instruction],\n  signers: [keypair],\n  alts: ['3sEm5YYxgLnP1Z11WXHSgScWqFMrATSNDgZcXAcB1w9A'],\n  sent: function(transaction){},\n  succeeded: function(transaction){},\n  failed: function(transaction, error){}\n})\n```\n\n#### value\n\nIf value is passed as a number it's gonna be converted into a big number applying the individual blockchain's default decimals:\n\n```javascript\nlet transaction = new Transaction({\n  ...,\n  value: 1\n})\n\ntransaction.value // '1000000000000000000'\n```\n\nIf value is passed as a string or as a BigNumber, value is used just as provided:\n\n```javascript\nlet transaction = new Transaction({\n  ...,\n  value: '1000000000000000000'\n})\n\ntransaction.value // '1000000000000000000'\n```\n\n#### wrong network\n\n`sendTransaction` rejects with:\n\n```javascript\n{ code: 'WRONG_NETWORK' }\n```\n\nin case wallet is connected to the wrong network and network cant be switched automatically.\n\n### Get wallet transaction count\n\n```javascript\nimport { transactionCount } from '@depay/web3-wallets'\n\nlet count = await transactionCount({ blockchain: 'polygon', address: '0x8Ffdb4Ee24a625856c82db7FAAE5Bd8B3406eF86' })\n```\n\n### Sign messages\n\n```javascript\nlet signature = await wallet.sign(\"This is a message to be signed\")\n```\n\n## Logos\n\n### Conversion\n\nUse https://codebeautify.org\n\n## Development\n\n### Get started\n\n```\nyarn install\nyarn dev\n```\n\n### Release\n\n```\nnpm publish\n```\n","funding_links":["https://tip.depay.com/6KFBECVsokSt0UKOAug8CI"],"categories":["TypeScript"],"sub_categories":["Flutter SDK / Libraries"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDePayFi%2Fweb3-wallets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDePayFi%2Fweb3-wallets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDePayFi%2Fweb3-wallets/lists"}