This package has been deprecated

    Author message:

    moved to @depay/web3-wallets

    depay-web3-wallets

    5.7.3 • Public • Published

    Quickstart

    yarn add depay-web3-wallets
    

    or

    npm install --save depay-web3-wallets
    
    import { getWallet } from 'depay-web3-wallets'
    
    let wallet = getWallet()
    wallet.name // MetaMask

    Demo

    https://depayfi.github.io/depay-web3-wallets/dev.html

    Support

    This library supports the following blockchains:

    This library supports the following wallets:

    via WalletConnect:

    Functionalities

    Get wallet

    Wallet: Returns an instance of the automatically detected Wallet or undefined (if no wallet could be automatically detected)

    let wallet = getWallet();
    // <Wallet name='MetaMask'>
    let wallet = getWallet();
    // undefined

    Returns undefined if no wallet has been detected. Make sure you check that before you continue using the wallet:

    let wallet getWallet();
    
    if(wallet) {
      // continue with selected wallet
    } else {
      // make something else
    }

    Get wallet name

    name:string: Returns the name of the wallet.

    let wallet = getWallet();
    wallet.name // 'MetaMask'

    Get wallet logo

    logo:string: Returns the logo of the wallet as PNG base64-encoded.

    let wallet = getWallet();
    wallet.logo // 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAMAAACahl6sAAAAclBMVEVHcEyBTif0snbypF3nhijulD7cq4Hv1b/wrW3dvqSieVvWyL2PXjvJuazndgD5hQB3PQ/PYQDkdADCrp3YwrPsegAVFRZyOg7ZawDzgQD/iQAeMklxNQMMDQ+3XwiLRw2hVAyCdmxPQz7dqoAyKiSgkoj9gMFYAAAADnRSTlMA8X2g78dnGzZPp57O1Hi2/psAAApFSURBVHja7Z2LVqM6FIZ7pUUrtbQRqEyLHX3/Vzy5soHcICSd41r5z3EcFUL+7m/vXKDOIioqKioqKioqKioqKioqKioqKioqKurXKnlJd4t/rB3uxGKuXur7Zr1f/EPt15t7/TK3ld2yKN5vaLv6R2HZrbbo9l4Uy7nXT+t33EyTZ5ttsls8Wbtku8nypihwH9LZZL1jFfcS5fmTEcNI5XlW3gvSg/plNlnvRASvDDf7NMQwUuR6GCvegeVuNllYDC+UkbafgNguwS6wEMWKqU49kPUu8MqwleCIUaRyEo7TndmYz5YgC/DCYogF8kKRYj4ygZUHtjhZPbywQiEmkBJYvfeunvohi+N1QhkXQSxdeFTKkBpg5YUtQZaMl3fEMFLUwRArP2wBWTJePhEDpDL6gUqOlS+2OFlqvLwhJpASVgArX2wJsmS8qAMviAFSGTXRxcobW5wsWQKvIWIzqpT4rMSqHRN9kqXESwyUqSNSGf2jh5VHtgRZOrzACnjBiI3Uatt3MahWPtlKWZNavMiMRfZSHUepkmxkBKtuOLzVLSDLjhc4QeOMIAETWAGs/LIlyLLgJWmcEdLxYUQajpVnthJjQGBCPFQ1lqy+lT5WPuvWC23XFpQTcmILiTDwP2EF5Z8tGhG7k0bCayRZEJF2BWU3kvgcDi14jalbFSDVxSoMWvpklyfEU9lCeadedbEKkeyLg611mBBnaFK6V1l3xt5iZb/SIcQ4MsBrCltIpHnWxSpQrotsn46Xna1MtYIKlet4N0PfomW9VdlTPZtQrUB775NGA172kCB5YR4y13G2E7ac8LKSBSuoCaoP3tcjNrwqI1nD/Z7AuS6yfSJedrbQAKvQuS6y3Qkv8yDSwyp4rpNsnxISWM6bh5KqXZhPDQjJ9WdkO6y3jGyhLlZPyXWW7Y54VfqAAFZPynWR7U54IW1AMgVW4aa+ItvJJZ3w0kaEYeUU6RnbzHRsd8NL46SajBWM6x5vK0y47O2q8nG9MRvPTRGeJI55oo5Ih6tnDYdEqbOPe642Uro7SefcuHCOh24koTMsN9Hh8JlDIkkQ7SwF/4A4eepwSNDCZct1wqWZaLG9Bpeilc7I9elXhE27SmcEz1Dc2k3ciy+5nstU3myEbDi4tOxcgPeH2sGHcXFVsZ+h3MFJfdg7F62XYuL1YIsrVxvJuZPJKV8UL7MeBFwW09PcbmR6yhfLxMfzWlPS3G4EnDxpgoLZOtTTllS2LWAERiYur+rDbs4wUk8sV2ONOBSvesZAktTFtMX6NCPZpPlKUSdzJo31lFnJVCNT5iv1rEnjYr+sx5arSUYmp3y9FIOI86A49laig5Hx85XiMPtxKlv9LfCYSdJ8uhFIedJI0OpLZykWF/fmVBIfsjSzeIWT8tTccVOB5id8PWIOxa2srldsw8kIWLleq/JGAxNoPULKliEU2fF6FbjIqnRzRhWGpKWMBSZE0SJO5IZ5KI5X0bl5RuDYNjCKcjL7OdCkloBqbjm+Jty2mW+krQyk3fzWkMv420KRyxZuHQOF8NW6dchHRKgT8IJODQ6Mr8ewwUk/t+1dg+mvPPm12u5D5uWtCjAFhtyWBwY/RuRhB7K/Psx+IFfc8GlDIfvwFZHWiRwYXz4Wi1XrQmbel5EWLtmLh0TnWhvuPhle4vnHM60XnrTb6H34M6J3svGFVqq9P5v5NKK/Xzd7MBRkVbonGPwayTVOKk9s6ciqTlhlq84jWEwqI6LLreB80loVlK1Ul4T5SaPyRJ0pziDfJz9XKz8GZaslSy6mJ5NKxW0e4wmkYAdkqyVLhbxPI4anDDYLD0qNj5WYOiafYDqcpnpItoAsVfLmk0gxHU2LQ0i2KFn6kSSfYKQyHExHkZBspZan+vROoGfgW1uv2LATkq1VZX6CV4pJKT6bjJQDH9an7laLudraHrRkTsDG8rEszUbK+2N5K7s+7A90bhdByWIhASflbfn5+fkQVUhX5R74oI6Vks+zgrKFybKFBJxgG1R30kf8nJx8LDmwbNhRj+bEQ8cDEpSt7XFMSGgHmwftHw2JzkjGAyKsUB88IEHZ2kNLlsXV7fEJakrcP6WRkgWktXIb/Q6H/TyyRrwXhK9r89uyExK9EQgISXk8tox8P9MqLFmicOF9R7y6PgkvjRgZ5FGnaV0gfAoxwo4MytZu1Bu/aETafcLm8cDd1Bt50OQo8bHsbD6GhGXLRhb0T3SFBAbdlph9tZHshkOR4YPal6F1XGn/Zx+rwGSxGRcabOFkSF1+UTbYWqrwihJ/CsvW7jhOik5fK42Rq+5cu9wXvMnYN94qMNIYqRS48RMM7fMxMTBZtDeyEXWOVKZTK9WHB7Z2x9FSrIrURhRrs3FBn8NWMt4IQpYowbfkM9vXPdR8a30cL3cjVdvPzqeq/UvX5tb79oni1ZK/ozKiOKz3RZC6lRwdZDdiP9H3fCtBWmWdnVK+V1qNKAAo071zDDfTKkO6/1DiiFauk2ITQTFCIPk71n0VOm3WyXUPeG3YOy9V+1J2I/Z9sdKwW791Lb+m+0uqDZ2q/2pLRoYHqDaTTNdcuQ6I+OTRIWnvb9iNwNiPzxkdEHzs3nmKkpudyB2ozEZ6X6ibCUAWXo4Yb/kNeiAvvuXtoF4pVhkxXnDtvqmVjYarhNtnRiOAlboVk5F0xgZ2PtZJ2b8RaJ/3qxsxiBdf/wW4D1fveV77rF/XSBiyoADbQ9I5sK3DV0ngAw62BAQOTObsomRjneTSfeYrak4DNegqsIJjLT5AlKwgBbjbC+mO+fX0/edjoD/fpysezDVN4O+HKb68AI8LyfDXbG02H5KPD/ytzSYfNNkLSIBhnWlPG7E7KQc2/l5+iA/Zyc/lL7Mit2ARLb6hCnBLRjmwcbl8qY184R/93SiM2K7D7iKGKsBtP8q+DbORC42K3ECw4kuU5qPgKjs2mB5qIw/2U7AC54crvnx1ZbtEC0aecRt2I2AFzg82rANb9pDk3AboW23km/8YrOQ8ICGLryjAdif5wMbl/P2h1Pf50rOCaWQ+ghZfUYDtcAkbYORDI2EErJB4WjX77SNkcLeHZGjjAsOIPJBchlbK7Alk2djKCVTr1/NoI1/DI8+va/qrWQOTZSzAxAT7BbnpeWDl649GXwMb55Twu1pviJkQaypbAc7pb/lt/yWM9K1v5fH9pdT3o2/jLRWX2bPfTx6o+EIBlnnq/37f3du5a+Xr56zS5acTEfz1W7+NhAXG+7AuVldDF5QnSa+sq9BLtZXuAa/yK40DQ3Y4/Q7r7eqqx9Oa8aRzctb6kH78qrlg2kt/fHkvZNECDDwpCzokCpXNCPvLmymD95wyb8WXFWDOk/Ufudm98t6ajOAPJVY6yvwUX769te2lti0odsnh0FM2e00F6vFkD4pRcjisgfGT6j15Csqbt5c4rHav/sLxj/Vq9LH4Rdq9abH6PeHgQVHrV4UjKioqKioqKioqKioqKioqKioqKioqKirq/6z/AMhLOEXbTKvCAAAAAElFTkSuQmCC'

    Can return placeholder images if there is a wallet but type is unknown. Returns undefined if no wallet was found at all.

    Get connected account

    async account():string: Gets the currently connected and active account (without prompting a connect screen). Returns undefined if no account is connected.

    let wallet = getWallet();
    await wallet.account() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'

    Get connected accounts

    async accounts():string: Gets all conncetd accounts (without prompting a connect screen). Returns [] if no account is connected.

    let wallet = getWallet();
    await wallet.accounts() // ['0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B']

    Connect an account

    async connect():string: Connects accounts. Potentially opens wallet connect screen. Provides connected accounts in async return. If wallet fails to connect, also returns an empty array [].

    let wallet = getWallet();
    await wallet.connect() // ['0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B']

    Receive supported blockchains

    blockchains:Array: Array containing the names of supported blockchains

    let wallet = getWallet();
    wallet.name // MetaMask
    wallet.blockchains // ['ethereum', 'bsc']

    Check if wallet is connected to a specific blockchain

    async connectedTo(blockchain):Boolean: Checks if wallet is connected to a specific blockchain.

    let wallet = getWallet()
    await wallet.connectedTo('ethereum') // true

    If no param is given it well tell you to which blockchain the wallet is connected to:

    let wallet = getWallet();
    await wallet.connectedTo() // bsc

    Receive wallet events

    on(string, function):undefined: Register a callback function for given events.

    let wallet = getWallet();
    wallet.on('account', (newAccount)=>{
      doSomething(newAccount)
    })

    Events

    on('account', (newAccount)=>{}): Triggers when user changes the connected/active wallet account.

    on('accounts', (newAccounts)=>{}): Triggers when user changes any connected wallet account.

    on('network', (newNetwork)=>{}): Triggers when user changes network of the connected wallet.

    on('disconnect', ()=>{}): Triggers when user disconnects wallet.

    Switch blockchain/network

    async switchTo(blockchain): Changes wallet connection to a specific network (adds it to the wallet in case it's missing)

    let wallet = getWallet()
    await wallet.switchTo('bsc')

    Transactions

    sendTransaction

    Sign and send a transaction through the connected wallet:

    let wallet = getWallet()
    
    let sentTransaction = await wallet.sendTransaction({
      blockchain: 'ethereum',
      to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
      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"}],
      method: 'route',
      params: {
        path: ["0xb056c38f6b7Dc4064367403E26424CD2c60655e1","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb"],
        amounts: ["11275067000000000000000","100000000000000000000", "1632063302"],
        addresses: ["0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d", "0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d"],
        plugins: ["0xe04b08Dfc6CaA0F4Ec523a3Ae283Ece7efE00019", "0x99F3F4685a7178F26EB4F4Ca8B75a1724F1577B9"],
        data: []
      },
      value: "0",
      sent: function(transaction){},
      confirmed: function(transaction){},
      ensured: function(transaction){},
      failed: function(transaction){}
    })

    or a simple value transfer:

    let wallet = getWallet()
    
    let sentTransaction = await wallet.sendTransaction({
      blockchain: 'ethereum',
      to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
      value: "1000000000000000",
      sent: function(transaction){},
      confirmed: function(transaction){},
      ensured: function(transaction){},
      failed: function(transaction){}
    })
    
    Arguments for `sendTransaction`:

    blockchain: String: Name of the blockchain e.g. 'ethereum'.

    to String: Address of the contract to be transacted with.

    api: Array: Api of the contract (e.g. abi for Ethereum).

    method: String: Name of the contract method to be called.

    params: Object or Array: Parameters passed to the method.

    value: BigNumber: Value of the transaction (amount of the native blockchain currency sent along with the transaction).

    sent: Function: Callback to be executed if transaction has been sent to the network.

    confirmed: Function: Callback to be executed if transaction has been confirmed once by the network.

    ensured: Function: Callback to be executed if transaction has been reached safe amount of confirmations (successful transaction confirmation can be ensured).

    failed: Function: Callback to be executed if transaction failed to confirm on the network (aka reverted).

    value

    If value is passed as a number it's gonna be converted into a big number applying the individual blockhain's default decimals:

    let transaction = new Transaction({
      ...,
      value: 1
    })
    
    transaction.value // '1000000000000000000'

    If value is passed as a string or as a BigNumber, value is used just as provided:

    let transaction = new Transaction({
      ...,
      value: '1000000000000000000'
    })
    
    transaction.value // '1000000000000000000'

    wrong network

    sendTransaction rejects with:

    { code: 'WRONG_NETWORK' }

    in case wallet is connected to the wrong network and network cant be switched automatically.

    Transaction

    Returned instances of Transaction (e.g. via sendTransaction, or sent, confirmed, ensured or failed callback) have the following format:

    blockchain: string: Blockchain the transaction belongs to.

    id: string: Unique identifier of the transaction, also known as transaction hash, only populated if transaction has been submitted to the network.

    url: string: A url to display the transaction status in a browser on a blockchain explorer.

    from: string: Address the transaction is sent from.

    to: string: Address the transaction is interacting with.

    api: array: Api of a contract the transaction is interacting with.

    method: string: The method name of the contract the transaction is interacting with.

    params: object or array: Params the transaction is passing to the contract method.

    value: BigNumber: Amount/value of the native token the transaction is forwarding as part of the interaction.

    confirmation: Promise: Returns a promise that resolves once the transaction confirms.

    ensurance: Promise: Returns a promise that resolves once the transaction confirms enough times to consider it ensured.

    failure: Promise: Returns a promise that resolves once the transaction fails.

    Estimations

    Allows you to estimate transactions before they happen to determine if they are possible and how much they will cost:

    let cost = await wallet.estimate({
      blockchain: 'ethereum',
      to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
      method: 'route',
      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"}],
      params: {
        path: ['0x1cBb83EbcD552D5EBf8131eF8c9CD9d9BAB342bC'],
        amounts: ['160000000000000000', '160000000000000000', '1626096776'],
        addresses: ['0x4e260bB2b25EC6F3A59B478fCDe5eD5B8D783B02'],
        plugins: ['0x99F3F4685a7178F26EB4F4Ca8B75a1724F1577B9'],
        data: []
      },
      value: 0
    }) // 22111100000

    Returns the cost of the estimate, otherwise rejects if transaction is not executable.

    Rejects with

    { code: 'WRONG_NETWORK' }

    in case wallet is connected to the wrong network.

    Development

    Get started

    yarn install
    yarn dev
    

    Release

    npm publish
    

    Install

    npm i depay-web3-wallets

    DownloadsWeekly Downloads

    116

    Version

    5.7.3

    License

    MIT

    Unpacked Size

    1.87 MB

    Total Files

    6

    Last publish

    Collaborators

    • depay-sebastian