# wallets-wrapper

> How to install

Latest version **0.0.35** (published 2023-03-15) · ISC license · 0 weekly downloads

## Install

```sh
npm install wallets-wrapper
pnpm add wallets-wrapper
yarn add wallets-wrapper
bun add wallets-wrapper
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.35 |
| Published | 2023-03-15 |
| First published | 2022-12-09 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 16 |
| Unpacked size | 2.6 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | iSun |
| Maintainers | lastskywalker |
| Keywords | wallets, non-custodial, metamask, Trezor, transactions, blockchain, Ethereum, Ripple, contracts, ERC20, ERC721, ERC1155 |

## Links

- npm: https://www.npmjs.com/package/wallets-wrapper
- npm.io page: https://npm.io/package/wallets-wrapper

## Dependencies (16)

- [url](https://npm.io/package/url.md) ^0.11.0
- [rxjs](https://npm.io/package/rxjs.md) ^7.5.7
- [xrpl](https://npm.io/package/xrpl.md) ^2.7.0-beta.0
- [eosjs](https://npm.io/package/eosjs.md) ^22.1.0
- [buffer](https://npm.io/package/buffer.md) ^6.0.3
- [ethers](https://npm.io/package/ethers.md) ^5.7.2
- [typescript](https://npm.io/package/typescript.md) 4.6.4
- [anchor-link](https://npm.io/package/anchor-link.md) ^3.5.1
- [stream-http](https://npm.io/package/stream-http.md) ^3.2.0
- [https-browserify](https://npm.io/package/https-browserify.md) ^1.0.0
- [crypto-browserify](https://npm.io/package/crypto-browserify.md) ^3.12.0
- [stream-browserify](https://npm.io/package/stream-browserify.md) ^3.0.0
- [@trezor/connect-web](https://npm.io/package/@trezor/connect-web.md) ^9.0.5
- [@metamask/onboarding](https://npm.io/package/@metamask/onboarding.md) ^1.0.1
- [@metamask/detect-provider](https://npm.io/package/@metamask/detect-provider.md) ^2.0.0
- [anchor-link-browser-transport](https://npm.io/package/anchor-link-browser-transport.md) ^3.5.1

## Alternatives

- [jsforce](https://npm.io/package/jsforce.md) — 851.2K weekly downloads
- [react-native-qrcode-svg](https://npm.io/package/react-native-qrcode-svg.md) — 693.5K weekly downloads
- [@salesforce/plugin-data](https://npm.io/package/@salesforce/plugin-data.md) — 394.9K weekly downloads
- [@backstage/plugin-search-common](https://npm.io/package/@backstage/plugin-search-common.md) — 308.5K weekly downloads
- [@chain-registry/types](https://npm.io/package/@chain-registry/types.md) — 38.4K weekly downloads

## Recent versions

- 0.0.35 (latest) — 2023-03-15
- 0.0.34 — 2023-03-15
- 0.0.33 — 2023-03-15
- 0.0.32 — 2023-03-15
- 0.0.31 — 2023-03-15
- 0.0.30 — 2023-03-02
- 0.0.29 — 2023-03-02
- 0.0.28 — 2023-03-01
- 0.0.27 — 2023-02-28
- 0.0.26 — 2023-02-24
- 0.0.25 — 2023-02-21
- 0.0.24 — 2023-02-14
- 0.0.23 — 2023-02-10
- 0.0.22 — 2023-02-09
- 0.0.21 — 2023-02-08
- … 20 more at https://npm.io/package/wallets-wrapper/versions

## README

# README

How to install

```bash
yarn add wallets-wrappers
npm i wallets-wrappers
```

Example flow

```js
const metamask = new WalletsWrapper({
  type: WalletsNames.Metamask,
  infuraApiKey: process.env.REACT_APP_INFURA_API_KEY || '',
})

metamask
  .init({
    appUrl: 'example.com',
    email: 'example@gmail.com',
  })
  .then(() => {
    metamask.address$.subscribe(setAddress)
    metamask.errors$.subscribe(setError)
    metamask.isConnected$.subscribe(setIsConnected)
    metamask.chainId$.subscribe(setChain)

    metamask.getAddress().then(setAddress)

    metamask.getStandardContract(coinAddresses[CoinNames.USDT]).then(async (contract) => {
      await contract.init()
      const usdtBalance = await contract.getBalance()
    })

    metamask.getStandardContract(ERC20address).then(async (contract) => {
      await contract.init()
      const balance = await contract.getBalance()
      setBalanceERC20(balance)
      setERC20Contract(contract)
    })
    metamask.getStandardContract(ERC721address).then(async (contract) => {
      await contract.init()
      const balance = await contract.getBalance()
      setBalanceERC721(balance)
      setERC721Contract(contract)
    })
    metamask.getStandardContract(ERC1155address).then(async (contract) => {
      await contract.init()
      const balance = await contract.getBalance({ ids: [0, 1] })
      setBalanceERC1155(balance)
      contract
      setERC1155Contract(contract)
    })
  })
  .catch()

const handleClickGetmetamaskwallet = async () => {
  await metamask.connectWallet()
}

const handleClickSwitchmetamasknetwork = async () => {
  await metamask.switchNetwork(ChainIds.GoerliTestNetwork)
}

const handleClickPersonalSign = async () => {
  await metamask.sign({ message: 'Hello signer!', type: 'personal_sign' })
}

const handleClickSendETH = async () => {
  await metamask.transfer({
    addressTo,
    value,
  })
}

const handleClickGetContract = async () => {
  const contract = await metamask.getStandardContract(ERC20ContractAddress?.value || '')
  await contract.init()
}

const handleClickTransferERC20 = async () => {
  await ERC20Contract?.transfer({
    addressTo: addressToERC20?.value || '',
    values: [Number(valueERC20?.value || '')],
  })
}

const handleClickTransferERC721 = async () => {
  await ERC721Contract?.transfer({
    addressTo: addressToERC721?.value || '',
    tokenIds: [Number(tokenIdERC721?.value || '')],
  })
}

const handleClickTransferERC1155 = async () => {
  await ERC1155Contract?.transfer({
    addressTo: addressToERC1155?.value || '',
    tokenIds: [Number(tokenIdERC1155?.value || '')],
    values: [1],
  })
}

const handleClickWatchAsset = async () => {
  await metamask.addToken(CoinNames.USDT)
}
```


## Classes

<dl>
<dt><a href="#ERC1155">ERC1155</a></dt>
<dd><p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p></dd>
<dt><a href="#ERC20">ERC20</a></dt>
<dd><p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p></dd>
<dt><a href="#ERC721">ERC721</a></dt>
<dd><p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p></dd>
<dt><a href="#StandardContract">StandardContract</a></dt>
<dd><p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p></dd>
<dt><a href="#AnchorWrapper">AnchorWrapper</a></dt>
<dd><p>The client describes how to work with Anchor.</p></dd>
<dt><a href="#MetamaskWrapper">MetamaskWrapper</a></dt>
<dd><p>The client describes how to work with Metamask Extension.</p></dd>
<dt><a href="#TrezorWrapper">TrezorWrapper</a></dt>
<dd><p>The client describes how to work with Trezor.</p></dd>
<dt><a href="#WalletsWrapper">WalletsWrapper</a></dt>
<dd><p>The client describes how to work with all wallets.
All connection to wallets must be with this client</p></dd>
</dl>

<a name="ERC1155"></a>

## ERC1155
<p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p>

**Kind**: global class  
**Implements**: <code>IStandardContract</code>  

* [ERC1155](#ERC1155)
    * [.init()](#ERC1155+init)
    * [.getBalance(object,)](#ERC1155+getBalance) ⇒ <code>Promise.&lt;number&gt;</code>
    * [.transfer(args)](#ERC1155+transfer) ⇒ <code>Promise.&lt;Transaction&gt;</code>
    * [.getDecodedTransfer(args)](#ERC1155+getDecodedTransfer) ⇒ <code>string</code>
    * [.getTokenUri(tokenId)](#ERC1155+getTokenUri) ⇒ <code>Promise.&lt;string&gt;</code>
    * [.transferEvents()](#ERC1155+transferEvents)

<a name="ERC1155+init"></a>

### erC1155.init()
<p>Gives access to contract methods,
if you don't call init client just won't know which contract to use</p>

**Kind**: instance method of [<code>ERC1155</code>](#ERC1155)  
<a name="ERC1155+getBalance"></a>

### erC1155.getBalance(object,) ⇒ <code>Promise.&lt;number&gt;</code>
<p>Check balance in contract</p>

**Kind**: instance method of [<code>ERC1155</code>](#ERC1155)  

| Param | Type |
| --- | --- |
| object, | <code>GetContractBalance</code> | 

<a name="ERC1155+transfer"></a>

### erC1155.transfer(args) ⇒ <code>Promise.&lt;Transaction&gt;</code>
<p>Transfer token</p>

**Kind**: instance method of [<code>ERC1155</code>](#ERC1155)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="ERC1155+getDecodedTransfer"></a>

### erC1155.getDecodedTransfer(args) ⇒ <code>string</code>
<p>get decoded Transfer</p>

**Kind**: instance method of [<code>ERC1155</code>](#ERC1155)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="ERC1155+getTokenUri"></a>

### erC1155.getTokenUri(tokenId) ⇒ <code>Promise.&lt;string&gt;</code>
<p>Get token uri, only works when this.type === 'ERC721'</p>

**Kind**: instance method of [<code>ERC1155</code>](#ERC1155)  

| Param | Type |
| --- | --- |
| tokenId | <code>string</code> | 

<a name="ERC1155+transferEvents"></a>

### erC1155.transferEvents()
<p>Subscribe on transfer events in contract</p>

**Kind**: instance method of [<code>ERC1155</code>](#ERC1155)  
<a name="ERC20"></a>

## ERC20
<p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p>

**Kind**: global class  
**Implements**: <code>IStandardContract</code>  

* [ERC20](#ERC20)
    * [.init()](#ERC20+init)
    * [.getBalance(object,)](#ERC20+getBalance) ⇒ <code>Promise.&lt;number&gt;</code>
    * [.transfer(args)](#ERC20+transfer) ⇒ <code>Promise.&lt;Transaction&gt;</code>
    * [.getDecodedTransfer(args)](#ERC20+getDecodedTransfer) ⇒ <code>string</code>
    * [.transferEvents()](#ERC20+transferEvents)

<a name="ERC20+init"></a>

### erC20.init()
<p>Gives access to contract methods,
if you don't call init client just won't know which contract to use</p>

**Kind**: instance method of [<code>ERC20</code>](#ERC20)  
<a name="ERC20+getBalance"></a>

### erC20.getBalance(object,) ⇒ <code>Promise.&lt;number&gt;</code>
<p>Check balance in contract</p>

**Kind**: instance method of [<code>ERC20</code>](#ERC20)  

| Param | Type |
| --- | --- |
| object, | <code>GetContractBalance</code> | 

<a name="ERC20+transfer"></a>

### erC20.transfer(args) ⇒ <code>Promise.&lt;Transaction&gt;</code>
<p>Transfer token</p>

**Kind**: instance method of [<code>ERC20</code>](#ERC20)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="ERC20+getDecodedTransfer"></a>

### erC20.getDecodedTransfer(args) ⇒ <code>string</code>
<p>get decoded Transfer</p>

**Kind**: instance method of [<code>ERC20</code>](#ERC20)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="ERC20+transferEvents"></a>

### erC20.transferEvents()
<p>Subscribe on transfer events in contract</p>

**Kind**: instance method of [<code>ERC20</code>](#ERC20)  
<a name="ERC721"></a>

## ERC721
<p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p>

**Kind**: global class  
**Implements**: <code>IStandardContract</code>  

* [ERC721](#ERC721)
    * [.init()](#ERC721+init)
    * [.getBalance(address,, object,)](#ERC721+getBalance) ⇒ <code>Promise.&lt;number&gt;</code>
    * [.transfer(args)](#ERC721+transfer) ⇒ <code>Promise.&lt;Transaction&gt;</code>
    * [.getDecodedTransfer(args)](#ERC721+getDecodedTransfer) ⇒ <code>string</code>
    * [.getTokenUri(tokenId)](#ERC721+getTokenUri) ⇒ <code>Promise.&lt;string&gt;</code>
    * [.transferEvents()](#ERC721+transferEvents)

<a name="ERC721+init"></a>

### erC721.init()
<p>Gives access to contract methods,
if you don't call init client just won't know which contract to use</p>

**Kind**: instance method of [<code>ERC721</code>](#ERC721)  
<a name="ERC721+getBalance"></a>

### erC721.getBalance(address,, object,) ⇒ <code>Promise.&lt;number&gt;</code>
<p>Check balance in contract</p>

**Kind**: instance method of [<code>ERC721</code>](#ERC721)  

| Param | Type | Description |
| --- | --- | --- |
| address, | <code>string</code> | <p>you can specify explicitly to check a different address</p> |
| object, | <code>GetContractBalance</code> |  |

<a name="ERC721+transfer"></a>

### erC721.transfer(args) ⇒ <code>Promise.&lt;Transaction&gt;</code>
<p>Transfer token</p>

**Kind**: instance method of [<code>ERC721</code>](#ERC721)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="ERC721+getDecodedTransfer"></a>

### erC721.getDecodedTransfer(args) ⇒ <code>string</code>
<p>get decoded Transfer</p>

**Kind**: instance method of [<code>ERC721</code>](#ERC721)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="ERC721+getTokenUri"></a>

### erC721.getTokenUri(tokenId) ⇒ <code>Promise.&lt;string&gt;</code>
<p>Get token uri, only works when this.type === 'ERC721'</p>

**Kind**: instance method of [<code>ERC721</code>](#ERC721)  

| Param | Type |
| --- | --- |
| tokenId | <code>string</code> | 

<a name="ERC721+transferEvents"></a>

### erC721.transferEvents()
<p>Subscribe on transfer events in contract</p>

**Kind**: instance method of [<code>ERC721</code>](#ERC721)  
<a name="StandardContract"></a>

## StandardContract
<p>The client describes how to work with ERC20, ERC721, ERC1155 contracts .</p>

**Kind**: global class  
**Implements**: <code>IStandardContract</code>  

* [StandardContract](#StandardContract)
    * [.init()](#StandardContract+init)
    * [.getBalance(object,)](#StandardContract+getBalance) ⇒ <code>Promise.&lt;number&gt;</code>
    * [.transfer(args)](#StandardContract+transfer) ⇒ <code>Promise.&lt;Transaction&gt;</code>
    * [.getTokenUri(tokenId)](#StandardContract+getTokenUri) ⇒ <code>Promise.&lt;string&gt;</code>
    * [.approve(object)](#StandardContract+approve) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
    * [.setApprovalForAll(object)](#StandardContract+setApprovalForAll) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
    * [.transferEvents()](#StandardContract+transferEvents)

<a name="StandardContract+init"></a>

### standardContract.init()
<p>Gives access to contract methods,
if you don't call init client just won't know which contract to use</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  
<a name="StandardContract+getBalance"></a>

### standardContract.getBalance(object,) ⇒ <code>Promise.&lt;number&gt;</code>
<p>Check balance in contract</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  

| Param | Type |
| --- | --- |
| object, | <code>GetContractBalance</code> | 

<a name="StandardContract+transfer"></a>

### standardContract.transfer(args) ⇒ <code>Promise.&lt;Transaction&gt;</code>
<p>Transfer token</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  

| Param | Type |
| --- | --- |
| args | <code>TransferContractToken</code> | 

<a name="StandardContract+getTokenUri"></a>

### standardContract.getTokenUri(tokenId) ⇒ <code>Promise.&lt;string&gt;</code>
<p>Get token uri, only works when this.type === 'ERC721'</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  

| Param | Type |
| --- | --- |
| tokenId | <code>string</code> | 

<a name="StandardContract+approve"></a>

### standardContract.approve(object) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
<p>Approve token for ERC20 and ERC721</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  

| Param | Type |
| --- | --- |
| object | <code>ApproveToken</code> | 

<a name="StandardContract+setApprovalForAll"></a>

### standardContract.setApprovalForAll(object) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
<p>setApprovalForAll token for ERC721 and ERC1155</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  

| Param | Type |
| --- | --- |
| object | <code>SetApprovalForAll</code> | 

<a name="StandardContract+transferEvents"></a>

### standardContract.transferEvents()
<p>Subscribe on transfer events in contract</p>

**Kind**: instance method of [<code>StandardContract</code>](#StandardContract)  
<a name="AnchorWrapper"></a>

## AnchorWrapper
<p>The client describes how to work with Anchor.</p>

**Kind**: global class  
**Implements**: <code>IAnchorWrapper</code>  

* [AnchorWrapper](#AnchorWrapper)
    * [.init()](#AnchorWrapper+init) ⇒ <code>LinkSession</code> \| <code>null</code>
    * [.getBalance(coins)](#AnchorWrapper+getBalance) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
    * [.getContractData(coins)](#AnchorWrapper+getContractData) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
    * [.getAccountInfo(args)](#AnchorWrapper+getAccountInfo) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
    * [.connectWallet()](#AnchorWrapper+connectWallet) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
    * [.sendSignedTransaction(object)](#AnchorWrapper+sendSignedTransaction) ⇒ <code>Promise.&lt;(TransactResult\|undefined)&gt;</code>
    * [.sendTransaction(tx)](#AnchorWrapper+sendTransaction) ⇒ <code>Promise.&lt;SendTransactionResponse&gt;</code>
    * [.transfer(args)](#AnchorWrapper+transfer) ⇒ <code>TransactResult</code> \| <code>undefined</code>

<a name="AnchorWrapper+init"></a>

### anchorWrapper.init() ⇒ <code>LinkSession</code> \| <code>null</code>
<p>init AnchorConnect library</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  
<a name="AnchorWrapper+getBalance"></a>

### anchorWrapper.getBalance(coins) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
<p>Get balance from current wallet in native coin</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;number&gt;&gt;</code> - <ul>
<li>balance value</li>
</ul>  

| Param | Type | Description |
| --- | --- | --- |
| coins | <code>GetEosAccountInfoProps</code> | <ul> <li></li> </ul> |

<a name="AnchorWrapper+getContractData"></a>

### anchorWrapper.getContractData(coins) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
<p>Get balance from current wallet in contracts</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;number&gt;&gt;</code> - <ul>
<li>balance value</li>
</ul>  

| Param | Type | Description |
| --- | --- | --- |
| coins | <code>GetEosAccountInfoProps</code> | <ul> <li></li> </ul> |

<a name="AnchorWrapper+getAccountInfo"></a>

### anchorWrapper.getAccountInfo(args) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
<p>Get account info from current wallets in native coin</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| args | <code>GetEosAccountInfoProps</code> | <ul> <li></li> </ul> |

<a name="AnchorWrapper+connectWallet"></a>

### anchorWrapper.connectWallet() ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
<p>Get data for sign in via anchor</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - <ul>
<li>wallet address</li>
</ul>  
<a name="AnchorWrapper+sendSignedTransaction"></a>

### anchorWrapper.sendSignedTransaction(object) ⇒ <code>Promise.&lt;(TransactResult\|undefined)&gt;</code>
<p>Send Transaction with user's anchor</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  

| Param | Type |
| --- | --- |
| object | <code>SendEosSignedTransaction</code> | 

<a name="AnchorWrapper+sendTransaction"></a>

### anchorWrapper.sendTransaction(tx) ⇒ <code>Promise.&lt;SendTransactionResponse&gt;</code>
<p>Send Transaction</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  

| Param | Type |
| --- | --- |
| tx | <code>SendEosTransaction</code> | 

<a name="AnchorWrapper+transfer"></a>

### anchorWrapper.transfer(args) ⇒ <code>TransactResult</code> \| <code>undefined</code>
<p>Transfer native coin</p>

**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)  

| Param | Type |
| --- | --- |
| args | <code>EosTransferProps</code> | 

<a name="MetamaskWrapper"></a>

## MetamaskWrapper
<p>The client describes how to work with Metamask Extension.</p>

**Kind**: global class  
**Implements**: <code>IMetamaskWrapper</code>  

* [MetamaskWrapper](#MetamaskWrapper)
    * [new MetamaskWrapper()](#new_MetamaskWrapper_new)
    * [.generateWallet()](#MetamaskWrapper+generateWallet) ⇒ <code>object</code>
    * [.connectWallet()](#MetamaskWrapper+connectWallet) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
    * [.getAddress()](#MetamaskWrapper+getAddress) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
    * [.getBalance(getBalanceProps, network, address)](#MetamaskWrapper+getBalance) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
    * [.getAccountInfo(accounts)](#MetamaskWrapper+getAccountInfo) ⇒ <code>Promise.&lt;Array.&lt;AccountInfo&gt;&gt;</code>
    * [.getChain()](#MetamaskWrapper+getChain) ⇒ <code>Promise.&lt;(ChainInfo\|null)&gt;</code>
    * [.switchNetwork(chainId)](#MetamaskWrapper+switchNetwork) ⇒ <code>Promise.&lt;void&gt;</code>
    * [.switchCustomNetwork(network)](#MetamaskWrapper+switchCustomNetwork) ⇒ <code>Promise.&lt;void&gt;</code>
    * [.addToken(token)](#MetamaskWrapper+addToken) ⇒ <code>Promise.&lt;boolean&gt;</code>
    * [.addCustomToken(newAsset)](#MetamaskWrapper+addCustomToken) ⇒ <code>Promise.&lt;boolean&gt;</code>
    * [.sign(object)](#MetamaskWrapper+sign) ⇒ <code>Promise.&lt;void&gt;</code>
    * [.transfer(args)](#MetamaskWrapper+transfer) ⇒ <code>Promise.&lt;(ethers.providers.TransactionResponse\|null)&gt;</code>
    * [.sendSignedTransaction(tx)](#MetamaskWrapper+sendSignedTransaction) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
    * [.sendTransaction(tx)](#MetamaskWrapper+sendTransaction) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
    * [.getMobileLink()](#MetamaskWrapper+getMobileLink) ⇒ <code>string</code>

<a name="new_MetamaskWrapper_new"></a>

### new MetamaskWrapper()
<p>Current class is Singleton</p>

<a name="MetamaskWrapper+generateWallet"></a>

### metamaskWrapper.generateWallet() ⇒ <code>object</code>
<p>Generate Ethers wallet</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
**Returns**: <code>object</code> - <ul>
<li>Object with address, mnemonic and privateKey</li>
</ul>  
<a name="MetamaskWrapper+connectWallet"></a>

### metamaskWrapper.connectWallet() ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
<p>Connect to Metamask Extension and return current wallet address if extension exists
or open installation page</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - <ul>
<li>wallet address</li>
</ul>  
<a name="MetamaskWrapper+getAddress"></a>

### metamaskWrapper.getAddress() ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
<p>Get current Metamask wallet address</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - <ul>
<li>wallet address</li>
</ul>  
<a name="MetamaskWrapper+getBalance"></a>

### metamaskWrapper.getBalance(getBalanceProps, network, address) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
<p>Get balance from current wallet in native coin</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;number&gt;&gt;</code> - <ul>
<li>balance value</li>
</ul>  

| Param | Type | Description |
| --- | --- | --- |
| getBalanceProps | <code>GetBalanceProps</code> | <p>custom props if balance in custom network and address needed</p> |
| network | <code>ChainIds</code> |  |
| address | <code>string</code> |  |

<a name="MetamaskWrapper+getAccountInfo"></a>

### metamaskWrapper.getAccountInfo(accounts) ⇒ <code>Promise.&lt;Array.&lt;AccountInfo&gt;&gt;</code>
<p>Get balance from current wallet in native coin</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;AccountInfo&gt;&gt;</code> - <ul>
<li>balance value</li>
</ul>  

| Param | Type | Description |
| --- | --- | --- |
| accounts | <code>Array.&lt;GetBalanceProps&gt;</code> | <ul> <li></li> </ul> |

<a name="MetamaskWrapper+getChain"></a>

### metamaskWrapper.getChain() ⇒ <code>Promise.&lt;(ChainInfo\|null)&gt;</code>
<p>Get Chain</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
**Returns**: <code>Promise.&lt;(ChainInfo\|null)&gt;</code> - <ul>
<li>Chain class with chainId and name</li>
</ul>  
<a name="MetamaskWrapper+switchNetwork"></a>

### metamaskWrapper.switchNetwork(chainId) ⇒ <code>Promise.&lt;void&gt;</code>
<p>Switch to another chain network</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| chainId | <code>ChainIds</code> | <p>id of Chain</p> |

<a name="MetamaskWrapper+switchCustomNetwork"></a>

### metamaskWrapper.switchCustomNetwork(network) ⇒ <code>Promise.&lt;void&gt;</code>
<p>Switch to custom chain network</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| network | <code>AddEthereumChainParameter</code> | <p>Object of chain network</p> |

<a name="MetamaskWrapper+addToken"></a>

### metamaskWrapper.addToken(token) ⇒ <code>Promise.&lt;boolean&gt;</code>
<p>Add coin token (only ERC20 for now @metamask docs) to metamask</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| token | <code>CoinsTypes</code> | <p>CoinsTypes, like USDT</p> |

<a name="MetamaskWrapper+addCustomToken"></a>

### metamaskWrapper.addCustomToken(newAsset) ⇒ <code>Promise.&lt;boolean&gt;</code>
<p>Add custom token (only ERC20 for now @metamask docs) to metamask</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| newAsset | <code>WatchAssetParams</code> | <p>Asset object</p> |

<a name="MetamaskWrapper+sign"></a>

### metamaskWrapper.sign(object) ⇒ <code>Promise.&lt;void&gt;</code>
<p>Sign transaction with metamask</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| object | <code>SignProps</code> | <p>Sign Object with type and message</p> |

<a name="MetamaskWrapper+transfer"></a>

### metamaskWrapper.transfer(args) ⇒ <code>Promise.&lt;(ethers.providers.TransactionResponse\|null)&gt;</code>
<p>Transfer native coin</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type |
| --- | --- |
| args | <code>TransferToken</code> | 

<a name="MetamaskWrapper+sendSignedTransaction"></a>

### metamaskWrapper.sendSignedTransaction(tx) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
<p>Send Transaction with user's metamask</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| tx | <code>ethers.utils.Deferrable.&lt;ethers.providers.TransactionRequest&gt;</code> | <p>Transaction Request</p> |

<a name="MetamaskWrapper+sendTransaction"></a>

### metamaskWrapper.sendTransaction(tx) ⇒ <code>Promise.&lt;ethers.providers.TransactionResponse&gt;</code>
<p>Send Transaction</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| tx | <code>ethers.utils.Deferrable.&lt;ethers.providers.TransactionRequest&gt;</code> | <p>Transaction Request</p> |

<a name="MetamaskWrapper+getMobileLink"></a>

### metamaskWrapper.getMobileLink() ⇒ <code>string</code>
<p>Get lint for mobile metamask</p>

**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)  
<a name="TrezorWrapper"></a>

## TrezorWrapper
<p>The client describes how to work with Trezor.</p>

**Kind**: global class  
**Implements**: <code>ITrezorWrapper</code>  

* [TrezorWrapper](#TrezorWrapper)
    * [.init(object)](#TrezorWrapper+init) ⇒ <code>Promise.&lt;void&gt;</code>
    * [.getBalance(coins)](#TrezorWrapper+getBalance) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
    * [.getAccountInfo(args)](#TrezorWrapper+getAccountInfo) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
    * [.connectWallet(params)](#TrezorWrapper+connectWallet) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
    * [.sendSignedTransaction(object)](#TrezorWrapper+sendSignedTransaction) ⇒ <code>Promise.&lt;(SignedTransaction\|PushedTransaction\|CardanoSignedTxData\|EosSignedTx)&gt;</code>
    * [.sendTransaction(object)](#TrezorWrapper+sendTransaction) ⇒ <code>Promise.&lt;PushedTransaction&gt;</code>
    * [.transfer(args)](#TrezorWrapper+transfer) ⇒ <code>Promise.&lt;(SignedTransaction\|CardanoSignedTxData\|EosSignedTx\|PushedTransaction)&gt;</code>

<a name="TrezorWrapper+init"></a>

### trezorWrapper.init(object) ⇒ <code>Promise.&lt;void&gt;</code>
<p>init TrezorConnect library</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  

| Param | Type |
| --- | --- |
| object | <code>Manifest</code> | 

<a name="TrezorWrapper+getBalance"></a>

### trezorWrapper.getBalance(coins) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
<p>Get balance from current wallet in native coin</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;number&gt;&gt;</code> - <ul>
<li>balance value</li>
</ul>  

| Param | Type | Description |
| --- | --- | --- |
| coins | <code>Array.&lt;AllCoins&gt;</code> | <ul> <li></li> </ul> |

<a name="TrezorWrapper+getAccountInfo"></a>

### trezorWrapper.getAccountInfo(args) ⇒ <code>Promise.&lt;Array.&lt;number&gt;&gt;</code>
<p>Get account info from current wallets in native coin</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| args | <code>Array.&lt;GetAccountInfo&gt;</code> | <ul> <li></li> </ul> |

<a name="TrezorWrapper+connectWallet"></a>

### trezorWrapper.connectWallet(params) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
<p>Get data for sign in via trezor</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - <ul>
<li>wallet address</li>
</ul>  

| Param | Type |
| --- | --- |
| params | <code>Params.&lt;(RequestLoginAsync\|LoginChallenge)&gt;</code> | 

<a name="TrezorWrapper+sendSignedTransaction"></a>

### trezorWrapper.sendSignedTransaction(object) ⇒ <code>Promise.&lt;(SignedTransaction\|PushedTransaction\|CardanoSignedTxData\|EosSignedTx)&gt;</code>
<p>Send Transaction with user's trezor</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  

| Param | Type |
| --- | --- |
| object | <code>SendSignedTransactionProps</code> | 

<a name="TrezorWrapper+sendTransaction"></a>

### trezorWrapper.sendTransaction(object) ⇒ <code>Promise.&lt;PushedTransaction&gt;</code>
<p>Send Transaction</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  

| Param | Type |
| --- | --- |
| object | <code>SendTransactionProps</code> | 

<a name="TrezorWrapper+transfer"></a>

### trezorWrapper.transfer(args) ⇒ <code>Promise.&lt;(SignedTransaction\|CardanoSignedTxData\|EosSignedTx\|PushedTransaction)&gt;</code>
<p>Transfer native coin</p>

**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)  

| Param | Type |
| --- | --- |
| args | <code>TransferProps</code> | 

<a name="WalletsWrapper"></a>

## WalletsWrapper
<p>The client describes how to work with all wallets.
All connection to wallets must be with this client</p>

**Kind**: global class  
**Implements**: <code>WalletWrapper</code>  

* [WalletsWrapper](#WalletsWrapper)
    * [new WalletsWrapper(object, type, infuraApiKey)](#new_WalletsWrapper_new)
    * [.init(object)](#WalletsWrapper+init) ⇒ <code>Promise.&lt;void&gt;</code>
    * [.isInstalled()](#WalletsWrapper+isInstalled) ⇒ <code>Promise.&lt;boolean&gt;</code>
    * [.connectWallet(params)](#WalletsWrapper+connectWallet) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
    * [.getChain(object)](#WalletsWrapper+getChain) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
    * [.getStandardContract(address, network)](#WalletsWrapper+getStandardContract) ⇒ [<code>Promise.&lt;StandardContract&gt;</code>](#StandardContract)

<a name="new_WalletsWrapper_new"></a>

### new WalletsWrapper(object, type, infuraApiKey)
<p>Creates an instance of a class to work with a specific wallet</p>


| Param | Type | Description |
| --- | --- | --- |
| object | <code>WalletsWrapperProps</code> |  |
| type | <code>WalletsNames</code> | <p>type of wallet, default is MetamaskWrapper</p> |
| infuraApiKey | <code>WalletsWrapperProps</code> | <p>the parameter is needed to connect to the blockchain</p> |

<a name="WalletsWrapper+init"></a>

### walletsWrapper.init(object) ⇒ <code>Promise.&lt;void&gt;</code>
<p>init library</p>

**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)  

| Param | Type |
| --- | --- |
| object | <code>Manifest</code> | 

<a name="WalletsWrapper+isInstalled"></a>

### walletsWrapper.isInstalled() ⇒ <code>Promise.&lt;boolean&gt;</code>
<p>Check wallet existing</p>

**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)  
<a name="WalletsWrapper+connectWallet"></a>

### walletsWrapper.connectWallet(params) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
<p>Connect to chosen wallet</p>

**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - <ul>
<li>wallet address</li>
</ul>  

| Param | Type | Description |
| --- | --- | --- |
| params | <code>Params.&lt;(RequestLoginAsync\|LoginChallenge)&gt;</code> | <p>params for trezor</p> |

<a name="WalletsWrapper+getChain"></a>

### walletsWrapper.getChain(object) ⇒ <code>Promise.&lt;Array.&lt;string&gt;&gt;</code>
<p>Get current wallet addresses</p>

**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)  
**Returns**: <code>Promise.&lt;Array.&lt;string&gt;&gt;</code> - <ul>
<li>wallet address</li>
</ul>  

| Param | Type |
| --- | --- |
| object | <code>GetAddressProps</code> | 

<a name="WalletsWrapper+getStandardContract"></a>

### walletsWrapper.getStandardContract(address, network) ⇒ [<code>Promise.&lt;StandardContract&gt;</code>](#StandardContract)
<p>Get client for contract connection</p>

**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)  

| Param | Type | Description |
| --- | --- | --- |
| address | <code>string</code> | <p>Contract address</p> |
| network | <code>ChainIds</code> | <p>network in which to search for a contract</p> |

<a name="ErrorTypes"></a>

## ErrorTypes : <code>enum</code>
<p>Description of errors</p>

**Kind**: global enum  
**Read only**: true  
<a name="generateCoin"></a>

## generateCoin : <code>enum</code>
<p>Types of ERC20 tokens</p>

**Kind**: global enum  
**Read only**: true  
<a name="networks"></a>

## networks : <code>enum</code>
<p>Types of supported EVM networks</p>

**Kind**: global enum  
**Read only**: true  
**Properties**

| Name | Type | Default |
| --- | --- | --- |
| "_models.ChainIds.EthereumMainNetwork" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.RopstenTestNetwork" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.RinkebyTestNetwork" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;Rinkeby Test Network\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.GoerliTestNetwork" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.KovanTestNetwork" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;Kovan Test Network\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.PolygonMainnet" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;Polygon Mainnet\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.HardhatLocalhost" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;Hardhat Localhost\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.GanacheLocalhost" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;Ganache Localhost\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.BinanceSmartChain" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;,\&quot;blockExplorerUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.BinanceSmartTestnet" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;,\&quot;blockExplorerUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.Palm" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;,\&quot;blockExplorerUrls\&quot;:\&quot;\&quot;}&quot;</code> | 
| "_models.ChainIds.PalmTestnet" | <code>string</code> | <code>&quot;{\&quot;chainId\&quot;:\&quot;\&quot;,\&quot;chainName\&quot;:\&quot;\&quot;,\&quot;nativeCurrency\&quot;:\&quot;\&quot;,\&quot;rpcUrls\&quot;:\&quot;\&quot;,\&quot;blockExplorerUrls\&quot;:\&quot;\&quot;}&quot;</code> |

---
_Source: https://npm.io/package/wallets-wrapper · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
