npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@uxuycom/web3-tg-sdk

v0.1.3

Published

web3 sdk for tg

Downloads

1,988

Readme

resource

Install

npm install @uxuycom/web3-tg-sdk

Usage Etherum Provider API

import { WalletTgSdk } from 'https://cdn.jsdelivr.net/npm/@uxuycom/web3-tg-sdk';

import { WalletTgSdk } from '@uxuycom/web3-tg-sdk'

const { ethereum } = new WalletTgSdk({
    //injected: true, // Whether ethereum is injected into the window; if MetaMask is present, it will not be injected.
    metaData: {
        name: 'your name',
        icon:"https://example.com/icon.png"
       
    }
})

Usage TronLink Provider API

The supported methods are consistent with the main methods of the official website

    import TronLinkProvider from '@uxuycom/web3-tg-sdk/dist/tronLinkProvider.es'

    const tronLink = new TronLinkProvider({
        // injected: true, // Whether TronLink is injected into the window. `window.tronLink`
        metaData: {
            name: 'your name',
            icon:"https://example.com/icon.png"
        }
    });

Usage Solana Provider API

import { WalletTgSdk } from '@uxuycom/web3-tg-sdk'

// support version >=0.1.2

const { solana } = new WalletTgSdk({
    // injected: true, // `window.solana`
    // metaData: {
    //     name: 'your name',
    //     icon:"https://example.com/icon.png"
       
    // }
})

MetaMask Standard Wallet Integration (Beta)

Based on your request, I'll rephrase the content in the image using more professional open-source project terminology:

MetaMask Standard Wallet Integration (Beta)

We are pleased to announce the integration of MetaMask's standard wallet. Connection can now be established with a single line of code.

Current Status:

  • Standard API mode support implemented
  • Full MetaMask feature set not yet supported
  • Incremental functionality enhancements planned

Code snippet for connection:

import { WalletTgSdk } from '@uxuycom/web3-tg-sdk'
const { ethereum } =  new WalletTgSdk({ 
  injected: true  // Whether ethereum is injected into the window; if MetaMask is present, it will not be injected.
})

//Trigger Telegram
ethereum
// use window.ethereum to interact with the wallet
window.ethereum

Ethereum Provider API

Supported Networks: [Additional details would be listed here]

Note: This beta release focuses on core functionality. We appreciate community feedback as we work towards expanding capabilities and refining the integration.

Ethereum Provider API

Supported Chains

The UXUY Wallet Connection is designed to be multi-chain. The following chains are supported:

| Chain | ChainID | | :-------- | :----- | | Ethereum | 1 (0x1)| | BNB Chain |56 (0x38)| | Base |8453 (0x2105)| | Arbitrum |42161 (0xa4b1)| | Polygon |137 (0x89)| | Fantom |250 (0xfa)| | Optimism |10 (0xa)| | Avalanche C-Chain |43114 (0xa86a)| | zkSync Era |324 (0x144)| | Linea |59144 (0xe708)| | Core |1116 (0x45c)| | zkLink |810180 (0xc5cc4)|

request Api

The request method is used to make RPC requests to the connected wallet. It takes an object with the following properties:

  • id (optional): A number or string that identifies the request.
  • method: The RPC method to request.
  • params (optional): An array or object of parameters for the RPC method.

The method returns a Promise that resolves with the result of the RPC method call.


interface RequestArguments {
  id?:number | string
  /** The RPC method to request. */
  method: string;

  /** The params of the RPC method, . */
  params?: Array<unknown> | object;
}

ethereum.request = (args: RequestArguments): Promise<any>

from UXuy Wallet rpc api

eth_requestAccounts

connect to the wallet and return the address of the connected wallet.

  • method: eth_requestAccounts
  • params: [] |
  • returns: Promise<string[address]>

 ethereum.request({ method: 'eth_requestAccounts' })

eth_accounts

return the address of the connected wallet.

  • method: eth_accounts
  • params:
  • returns: Promise<string[address]>
 ethereum.request({ method: 'eth_accounts' })

eth_chainId

return the chainId of the connected wallet.

  • method: eth_chainId
  • params:
  • returns: Promise
 ethereum.request({ method: 'eth_chainId' })

wallet_switchEthereumChain

switch the connected wallet to the specified chainId.

  • method: wallet_switchEthereumChain
  • params:
    • chainId: number | string
  • returns: Promise
try {
  await ethereum.request({
    method: 'wallet_switchEthereumChain',
    params: [{ chainId: '0xf00' }],
  });
} catch (switchError) {
  // This error code indicates that the chain has not been added to Uxuy Wallet.
}

eth_sendTransaction

send a transaction to the connected wallet.

  • method: eth_sendTransaction
  • params:
    • transaction: TransactionObject
  • returns: Promise

const accounts = await ethereum.request({ method: 'eth_accounts', params: [{}] })  
const fromAddress =  ethereum.selectedAddress
const transactionParameters = {
  nonce: '0x00', // ignored by Uxuy Wallet
  gasPrice: '0x09184e72a000', // customizable by user during Uxuy Wallet confirmation.
  gas: '0x2710', // customizable by user during Uxuy Wallet confirmation.
  to: '0x0000000000000000000000000000000000000000', // Required except during contract publications.
  from:  fromAddress || accounts[0], // must match user's active address.
  value: '0x00', // Only required to send ether to the recipient from the initiating external account.
  data:
    '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', // Optional, but used for defining smart contract creation and interaction.
  chainId: '0x3', // Used to prevent transaction reuse across blockchains. Auto-filled by Uxuy Wallet.
};

 ethereum.request(
    { 
        method: 'eth_sendTransaction', 
        params: [ 
            transactionParameters
        ] 
    }
)

signData Api

  • personal_sign
  • eth_signTypedData
  • eth_signTypedData_v3
  • eth_signTypedData_v4

You can refer to docs signing-data-with-metamask eth-sig-util

personal_sign

sign a message with the connected wallet.

  • method: personal_sign
  • params:
    • message: string
    • address: string
  • returns: Promise
 ethereum.request({ method: 'personal_sign', params: ['hello', '0x1234567890'] })

eth_signTypedData_v3

  • params:
  • returns: Promise
 ethereum.request({ method: 'eth_signTypedData_v3', params: [{}, '0x1234567890'] })

eth_signTypedData_v4

  • params:
  • returns: Promise
 ethereum.request({ method: 'eth_signTypedData_v4', params: [{}] })

Event listeners

Notify when address and network change. Uses eventemitter3.

accountChanged

  • params:
 ethereum.on('accountsChanged', handler: (accounts: Array<string>) => void);

 ethereum.on('accountChanged', (accounts) => {
    console.log(accounts || [])
})

chainChanged

  • params:

 ethereum.on('chainChanged', (chainId) => {
    console.log(chainId)
})
// remove all event listeners
ethereum.removeAllListeners();

function handleAccountsChainChanged() {
  ethereum.on('accountsChanged', ([address]) => {
    // Handle the new accounts, or lack thereof.
    // "accounts" will always be an array, but it can be empty.
    alert('address changed');
  });
  ethereum.on('chainChanged', async (chainId) => {
    // Handle the new chain.
    // Correctly handling chain changes can be complicated.
    // We recommend reloading the page unless you have good reason not to.
    alert('chainid changed');
  });
}


// add event listener
function handleAccountsChanged(accounts) {
  // ...
}
//remove
ethereum.removeListener('accountsChanged', handleAccountsChanged); // only remove one 
ethereum.on('accountsChanged', handleAccountsChanged);