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

@okwallet/extension-sp

v1.0.19-beta

Published

OKX Wallet provides official SDK packages of multiple chains including [Ethereum](./wallet), [Aptos](./aptos-api), [Tron](./tron-api) and Solana. Developers can interact with different on-chain projects through OKX Wallet SDK.

Downloads

24

Readme

Introduction

OKX Wallet provides official SDK packages of multiple chains including Ethereum, Aptos, Tron and Solana. Developers can interact with different on-chain projects through OKX Wallet SDK.

Installation

Yarn

$ yarn add @okwallet/extension

npm

$ npm install --save @okwallet/extension
// https://www.npmjs.com/package/@okwallet/extension

Usage

ES6

import okxWeb3 from '@okwallet/extension';
console.log(okxWeb3);

Basic APIs

init

The initial access into OKX Wallet extension. You can achieve the following two functions with this method:

  1. Connecting to wallet
  2. Monitoring wallet account changes

Error Information

All errors follow this interface:

interface ProviderRpcError extends Error {
  message: string;
  code: number;
  data?: unknown;
}

Returned Error Example

{
  code: 4001;
  message: 'Tx Signature: User denied transaction signature.';
  stack: 'Error: Tx Signature: User denied transaction signature.';
}

Example

const success = (wallet) => {
  // return wallet account information
  console.log(wallet);
};
const changed = (wallet) => {
  // return wallet account information
  // if there is no wallet is connecting, it will be null
  console.log(wallet);
};
const error = (error) => {
  // Error returned when rejected
  console.error(error);
};
const uninstall = () => {};

okxWeb3
  .init({
    success,
    changed,
    error,
    uninstall,
  })
  .then((wallet) => {
    // return wallet account information
    console.log(wallet);
  })
  .catch((error) => {
    // Error returned when rejected
    console.error(error);
  });

disconnect

Disconnect with wallet

import okWeb3 from '@okwallet/extension';

// only support extension
await okWeb3.disconnect();

addListener

import okWeb3 from '@okwallet/extension';

// add
okWeb3.addListener('connect', (isConnected) => {
  console.log(isConnected); // boolean
});

okWeb3.addListener('disconnect', () => {});

okWeb3.addListener('connectWallet', (wallet) => {
  console.log(wallet);
  // [
  //   {
  //     keyringName: 'WalletA',
  //     name: 'Account01',
  //     address: [
  //       {
  //         address: '0x81Fc6F6E44a2313743bCAA060681d24597aDbDfB',
  //         coinType: '60',
  //         name: 'okc',
  //       }
  //     ]
  //   }
  //   ...
  // ]
});

okWeb3.addListener('walletChanged', (wallet) => {
  console.log(wallet);
});

okWeb3.addListener('accountChanged', (wallet) => {
  console.log(wallet);
});

okWeb3.addListener('networkChanged', (chainId) => {
  console.log(chainId);
});

okWeb3.addListener('streamFailed', () => {});

removeListener

import okWeb3 from '@okwallet/extension';

const changedCb = (wallet) => {
  console.log(wallet);
};
// add
okWeb3.addListener('walletChanged', changedCb);
// remove
okWeb3.removeListener('walletChanged', changedCb);

getAddress

CHAINS objects are the correspondence between the chain and its name:

| Key | Value | | ----------- | ----------- | | BITCOIN | bitcoin | | ETHEREUM | ethereum | | APTOS | aptos | | OKC | okexchain | | BSC | bsc | | TRON | tron | | SOLANA | solana | | POLYGON | polygon | | AVAX | avax | | FTM | ftm | | ARBITRUM | arbitrum | | OPTIMISM | optimism | | CRONOS | cronos | | KLAYTN | klaytn | | KCC | kcc | | METIS | metis | | BOBA | boba | | GNOSIS | gnosis | | RONIN | ronin | | MOONRIVER | moonriver | | MOONBEAM | moonbeam | | HARMONY | harmony | | LITECOIN | litecoin | | BITCOINCASH | bitcoincash | | BITCOINSV | bitcoinsv | | ETHW | ethw | | ETHF | ethf |

import okWeb3 from '@okwallet/extension';

const { CHAINS } = okWeb3;

// get solana chain address
okWeb3
  .getAddress(CHAINS.SOLANA)
  .then((addr) => {
    // return solana address
    console.log(addr);
  })
  .catch((error) => {
    // Error returned when rejected
    console.log(error);
  });

// get addresses of all chains
okWeb3
  .getAddress()
  .then((addrMap) => {
    // return chain-address map
    console.log(addrMap);
  })
  .catch((error) => {
    // Error returned when rejected
    console.log(error);
  });

Send Transaction

EVM

import okWeb3 from '@okwallet/extension';

const { CHAINS } = okWeb3;

const payload = {
  from: '0x2f00171409b0d4f08da9abe0b53815fa3c5c6596',
  to: '0xd8E06c62ff0F6816487973d6EB7018C854599931',
  data: '0x',
  value: '0x00',
};

okWeb3
  .sendTransaction({ chainName: CHAINS.OKC, payload })
  .then((res) => {
    console.log(res.hash);
  })
  .catch((error) => {
    console.log(error);
  });

Solana

import okWeb3 from '@okwallet/extension';
import {
  Transaction,
  SystemProgram,
  LAMPORTS_PER_SOL,
  PublicKey,
} from '@solana/web3.js';

const { CHAINS } = okWeb3;

const transaction = new Transaction({
  feePayer: okxwallet.solana.publicKey,
}).add(
  SystemProgram.transfer({
    fromPubkey: okxwallet.solana.publicKey,
    toPubkey: new PublicKey('CS8ifB68oddKXdW87RAyrxFSoz1DMMcX9WsWeAgbYDCC'),
    lamports: LAMPORTS_PER_SOL / 1000,
  })
);

okWeb3
  .sendTransaction({ chainName: CHAINS.SOLANA, payload: { transaction } })
  .then((res) => {
    console.log(res.hash);
  })
  .catch((error) => {
    console.log(error);
  });

Aptos

const { CHAINS } = okWeb3;
const payload = {
  from: '0x2f7a44297ab64890dfb618202dd552033551b71ee9b36ad7d8b2ff8b805e0281',
  function: '0x1::aptos_account::transfer',
  arguments: [
    '0xd8a97d57565ca32babc4fca6498dbc3599ee4c23690287f76941df23c6c3aca3',
    '500000',
  ],
};

okWeb3
  .sendTransaction({ chainName: CHAINS.APTOS, payload })
  .then((res) => {
    console.log(res.hash);
  })
  .catch((error) => {
    console.log(error);
  });

Sign Personal Message

EVM

import okWeb3 from '@okwallet/extension';

const { CHAINS } = okWeb3;
const payload = {
  message: 'test message',
  account: '0xec92d8ea11587892f0516c19dcb1f8fd72993584',
};
okWeb3
  .signMessage({ chainName: CHAINS.OKC, payload })
  .then((signature) => {
    console.log(signature);
  })
  .catch((error) => {
    console.log(error);
  });

Solana

import okWeb3 from '@okwallet/extension';

const { CHAINS } = okWeb3;
const payload = {
  message: 'test message',
};
okWeb3
  .signMessage({ chainName: CHAINS.SOLANA, payload })
  .then((signature) => {
    console.log(signature);
  })
  .catch((error) => {
    console.log(error);
  });

Aptos

import okWeb3 from '@okwallet/extension';
const { CHAINS } = okWeb3;

const payload = {
  message: 'test message',
  nonce: 1,
};
okWeb3
  .signMessage({ chainName: CHAINS.APTOS, payload })
  .then((signature) => {
    console.log(signature);
  })
  .catch((error) => {
    console.log(error);
  });

Aptos

Special methods for Aptos are shown below. Methods of okWeb3.aptos objects are required to call Aptos chain.

Register Coin

import okWeb3 from '@okwallet/extension';

okWeb3.aptos
  .registerAptosCoin({
    contractAddress:
      '0xa2eda21a58856fda86451436513b867c97eecb4ba099da5775520e0f7492e852::coin::T',
  })
  .then((hash) => {
    console.log(hash);
  })
  .catch((error) => {
    console.log(error);
  });

Acquire Transaction Status by Hash

import okWeb3 from '@okwallet/extension';

okWeb3.aptos
  .getAptosTransaction(
    '0x042d2a5ce883e4c8e13351b9053ec0ec86728a88ba07331cd5389816930bdb31'
  )
  .then((status) => {
    console.log(status);
  })
  .catch((error) => {
    console.log(error);
  });

Acquire Balance

  • Main chain tokens
import okWeb3 from '@okwallet/extension';

okWeb3.aptos
  .getAptosBalance({
    address:
      '0xcd30fbbda98b2aed026772c13e5ed90a7f056b589ef9e78cd96415e1af12451c',
    currency: '0x1::aptos_coin::AptosCoin',
  })
  .then((value) => {
    alert(value);
  })
  .catch((error) => {
    console.log(error);
  });
  • Token
import okWeb3 from '@okwallet/extension';

okWeb3.aptos
  .getAptosBalance({
    address:
      '0x253869f4b71ac5786c49c42b51faa0d0a58ff551cb9a7c267aaaa42018c89dd7',
    currency:
      '0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT',
  })
  .then((value) => {
    console.log(value);
  })
  .catch((error) => {
    console.log(error);
  });

Check and Register Coin

import okWeb3 from '@okwallet/extension';

okWeb3.aptos
  .checkAndRegAptosCoin({
    address:
      '0x253869f4b71ac5786c49c42b51faa0d0a58ff551cb9a7c267aaaa42018c89dd7',
    currency:
      '0xf22bede237a07e121b56d91a491eb7bcdfd1f5907926a9e58338f964a01b17fa::asset::USDT',
  })
  .then((res) => {
    const { registered, hash } = res;
    console.log(registered);
    if (!registered) {
      console.log(res.hash);
    }
  })
  .catch((error) => {
    console.log(error);
  });