1.0.19-beta • Published 8 months ago

@okwallet/extension v1.0.19-beta

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

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:

KeyValue
BITCOINbitcoin
ETHEREUMethereum
APTOSaptos
OKCokexchain
BSCbsc
TRONtron
SOLANAsolana
POLYGONpolygon
AVAXavax
FTMftm
ARBITRUMarbitrum
OPTIMISMoptimism
CRONOScronos
KLAYTNklaytn
KCCkcc
METISmetis
BOBAboba
GNOSISgnosis
RONINronin
MOONRIVERmoonriver
MOONBEAMmoonbeam
HARMONYharmony
LITECOINlitecoin
BITCOINCASHbitcoincash
BITCOINSVbitcoinsv
ETHWethw
ETHFethf
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);
  });
1.0.19-beta

8 months ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago