wallets-wrapper
Version:
How to install
948 lines (674 loc) • 36.2 kB
Markdown
# 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.<number></code>
* [.transfer(args)](#ERC1155+transfer) ⇒ <code>Promise.<Transaction></code>
* [.getDecodedTransfer(args)](#ERC1155+getDecodedTransfer) ⇒ <code>string</code>
* [.getTokenUri(tokenId)](#ERC1155+getTokenUri) ⇒ <code>Promise.<string></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.<number></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.<Transaction></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.<string></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.<number></code>
* [.transfer(args)](#ERC20+transfer) ⇒ <code>Promise.<Transaction></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.<number></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.<Transaction></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.<number></code>
* [.transfer(args)](#ERC721+transfer) ⇒ <code>Promise.<Transaction></code>
* [.getDecodedTransfer(args)](#ERC721+getDecodedTransfer) ⇒ <code>string</code>
* [.getTokenUri(tokenId)](#ERC721+getTokenUri) ⇒ <code>Promise.<string></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.<number></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.<Transaction></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.<string></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.<number></code>
* [.transfer(args)](#StandardContract+transfer) ⇒ <code>Promise.<Transaction></code>
* [.getTokenUri(tokenId)](#StandardContract+getTokenUri) ⇒ <code>Promise.<string></code>
* [.approve(object)](#StandardContract+approve) ⇒ <code>Promise.<ethers.providers.TransactionResponse></code>
* [.setApprovalForAll(object)](#StandardContract+setApprovalForAll) ⇒ <code>Promise.<ethers.providers.TransactionResponse></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.<number></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.<Transaction></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.<string></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.<ethers.providers.TransactionResponse></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.<ethers.providers.TransactionResponse></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.<Array.<number>></code>
* [.getContractData(coins)](#AnchorWrapper+getContractData) ⇒ <code>Promise.<Array.<number>></code>
* [.getAccountInfo(args)](#AnchorWrapper+getAccountInfo) ⇒ <code>Promise.<Array.<number>></code>
* [.connectWallet()](#AnchorWrapper+connectWallet) ⇒ <code>Promise.<Array.<string>></code>
* [.sendSignedTransaction(object)](#AnchorWrapper+sendSignedTransaction) ⇒ <code>Promise.<(TransactResult\|undefined)></code>
* [.sendTransaction(tx)](#AnchorWrapper+sendTransaction) ⇒ <code>Promise.<SendTransactionResponse></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.<Array.<number>></code>
<p>Get balance from current wallet in native coin</p>
**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)
**Returns**: <code>Promise.<Array.<number>></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.<Array.<number>></code>
<p>Get balance from current wallet in contracts</p>
**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)
**Returns**: <code>Promise.<Array.<number>></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.<Array.<number>></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.<Array.<string>></code>
<p>Get data for sign in via anchor</p>
**Kind**: instance method of [<code>AnchorWrapper</code>](#AnchorWrapper)
**Returns**: <code>Promise.<Array.<string>></code> - <ul>
<li>wallet address</li>
</ul>
<a name="AnchorWrapper+sendSignedTransaction"></a>
### anchorWrapper.sendSignedTransaction(object) ⇒ <code>Promise.<(TransactResult\|undefined)></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.<SendTransactionResponse></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.<Array.<string>></code>
* [.getAddress()](#MetamaskWrapper+getAddress) ⇒ <code>Promise.<Array.<string>></code>
* [.getBalance(getBalanceProps, network, address)](#MetamaskWrapper+getBalance) ⇒ <code>Promise.<Array.<number>></code>
* [.getAccountInfo(accounts)](#MetamaskWrapper+getAccountInfo) ⇒ <code>Promise.<Array.<AccountInfo>></code>
* [.getChain()](#MetamaskWrapper+getChain) ⇒ <code>Promise.<(ChainInfo\|null)></code>
* [.switchNetwork(chainId)](#MetamaskWrapper+switchNetwork) ⇒ <code>Promise.<void></code>
* [.switchCustomNetwork(network)](#MetamaskWrapper+switchCustomNetwork) ⇒ <code>Promise.<void></code>
* [.addToken(token)](#MetamaskWrapper+addToken) ⇒ <code>Promise.<boolean></code>
* [.addCustomToken(newAsset)](#MetamaskWrapper+addCustomToken) ⇒ <code>Promise.<boolean></code>
* [.sign(object)](#MetamaskWrapper+sign) ⇒ <code>Promise.<void></code>
* [.transfer(args)](#MetamaskWrapper+transfer) ⇒ <code>Promise.<(ethers.providers.TransactionResponse\|null)></code>
* [.sendSignedTransaction(tx)](#MetamaskWrapper+sendSignedTransaction) ⇒ <code>Promise.<ethers.providers.TransactionResponse></code>
* [.sendTransaction(tx)](#MetamaskWrapper+sendTransaction) ⇒ <code>Promise.<ethers.providers.TransactionResponse></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.<Array.<string>></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.<Array.<string>></code> - <ul>
<li>wallet address</li>
</ul>
<a name="MetamaskWrapper+getAddress"></a>
### metamaskWrapper.getAddress() ⇒ <code>Promise.<Array.<string>></code>
<p>Get current Metamask wallet address</p>
**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)
**Returns**: <code>Promise.<Array.<string>></code> - <ul>
<li>wallet address</li>
</ul>
<a name="MetamaskWrapper+getBalance"></a>
### metamaskWrapper.getBalance(getBalanceProps, network, address) ⇒ <code>Promise.<Array.<number>></code>
<p>Get balance from current wallet in native coin</p>
**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)
**Returns**: <code>Promise.<Array.<number>></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.<Array.<AccountInfo>></code>
<p>Get balance from current wallet in native coin</p>
**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)
**Returns**: <code>Promise.<Array.<AccountInfo>></code> - <ul>
<li>balance value</li>
</ul>
| Param | Type | Description |
| --- | --- | --- |
| accounts | <code>Array.<GetBalanceProps></code> | <ul> <li></li> </ul> |
<a name="MetamaskWrapper+getChain"></a>
### metamaskWrapper.getChain() ⇒ <code>Promise.<(ChainInfo\|null)></code>
<p>Get Chain</p>
**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)
**Returns**: <code>Promise.<(ChainInfo\|null)></code> - <ul>
<li>Chain class with chainId and name</li>
</ul>
<a name="MetamaskWrapper+switchNetwork"></a>
### metamaskWrapper.switchNetwork(chainId) ⇒ <code>Promise.<void></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.<void></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.<boolean></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.<boolean></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.<void></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.<(ethers.providers.TransactionResponse\|null)></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.<ethers.providers.TransactionResponse></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.<ethers.providers.TransactionRequest></code> | <p>Transaction Request</p> |
<a name="MetamaskWrapper+sendTransaction"></a>
### metamaskWrapper.sendTransaction(tx) ⇒ <code>Promise.<ethers.providers.TransactionResponse></code>
<p>Send Transaction</p>
**Kind**: instance method of [<code>MetamaskWrapper</code>](#MetamaskWrapper)
| Param | Type | Description |
| --- | --- | --- |
| tx | <code>ethers.utils.Deferrable.<ethers.providers.TransactionRequest></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.<void></code>
* [.getBalance(coins)](#TrezorWrapper+getBalance) ⇒ <code>Promise.<Array.<number>></code>
* [.getAccountInfo(args)](#TrezorWrapper+getAccountInfo) ⇒ <code>Promise.<Array.<number>></code>
* [.connectWallet(params)](#TrezorWrapper+connectWallet) ⇒ <code>Promise.<Array.<string>></code>
* [.sendSignedTransaction(object)](#TrezorWrapper+sendSignedTransaction) ⇒ <code>Promise.<(SignedTransaction\|PushedTransaction\|CardanoSignedTxData\|EosSignedTx)></code>
* [.sendTransaction(object)](#TrezorWrapper+sendTransaction) ⇒ <code>Promise.<PushedTransaction></code>
* [.transfer(args)](#TrezorWrapper+transfer) ⇒ <code>Promise.<(SignedTransaction\|CardanoSignedTxData\|EosSignedTx\|PushedTransaction)></code>
<a name="TrezorWrapper+init"></a>
### trezorWrapper.init(object) ⇒ <code>Promise.<void></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.<Array.<number>></code>
<p>Get balance from current wallet in native coin</p>
**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)
**Returns**: <code>Promise.<Array.<number>></code> - <ul>
<li>balance value</li>
</ul>
| Param | Type | Description |
| --- | --- | --- |
| coins | <code>Array.<AllCoins></code> | <ul> <li></li> </ul> |
<a name="TrezorWrapper+getAccountInfo"></a>
### trezorWrapper.getAccountInfo(args) ⇒ <code>Promise.<Array.<number>></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.<GetAccountInfo></code> | <ul> <li></li> </ul> |
<a name="TrezorWrapper+connectWallet"></a>
### trezorWrapper.connectWallet(params) ⇒ <code>Promise.<Array.<string>></code>
<p>Get data for sign in via trezor</p>
**Kind**: instance method of [<code>TrezorWrapper</code>](#TrezorWrapper)
**Returns**: <code>Promise.<Array.<string>></code> - <ul>
<li>wallet address</li>
</ul>
| Param | Type |
| --- | --- |
| params | <code>Params.<(RequestLoginAsync\|LoginChallenge)></code> |
<a name="TrezorWrapper+sendSignedTransaction"></a>
### trezorWrapper.sendSignedTransaction(object) ⇒ <code>Promise.<(SignedTransaction\|PushedTransaction\|CardanoSignedTxData\|EosSignedTx)></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.<PushedTransaction></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.<(SignedTransaction\|CardanoSignedTxData\|EosSignedTx\|PushedTransaction)></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.<void></code>
* [.isInstalled()](#WalletsWrapper+isInstalled) ⇒ <code>Promise.<boolean></code>
* [.connectWallet(params)](#WalletsWrapper+connectWallet) ⇒ <code>Promise.<Array.<string>></code>
* [.getChain(object)](#WalletsWrapper+getChain) ⇒ <code>Promise.<Array.<string>></code>
* [.getStandardContract(address, network)](#WalletsWrapper+getStandardContract) ⇒ [<code>Promise.<StandardContract></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.<void></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.<boolean></code>
<p>Check wallet existing</p>
**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)
<a name="WalletsWrapper+connectWallet"></a>
### walletsWrapper.connectWallet(params) ⇒ <code>Promise.<Array.<string>></code>
<p>Connect to chosen wallet</p>
**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)
**Returns**: <code>Promise.<Array.<string>></code> - <ul>
<li>wallet address</li>
</ul>
| Param | Type | Description |
| --- | --- | --- |
| params | <code>Params.<(RequestLoginAsync\|LoginChallenge)></code> | <p>params for trezor</p> |
<a name="WalletsWrapper+getChain"></a>
### walletsWrapper.getChain(object) ⇒ <code>Promise.<Array.<string>></code>
<p>Get current wallet addresses</p>
**Kind**: instance method of [<code>WalletsWrapper</code>](#WalletsWrapper)
**Returns**: <code>Promise.<Array.<string>></code> - <ul>
<li>wallet address</li>
</ul>
| Param | Type |
| --- | --- |
| object | <code>GetAddressProps</code> |
<a name="WalletsWrapper+getStandardContract"></a>
### walletsWrapper.getStandardContract(address, network) ⇒ [<code>Promise.<StandardContract></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>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.RopstenTestNetwork" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.RinkebyTestNetwork" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"Rinkeby Test Network\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.GoerliTestNetwork" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.KovanTestNetwork" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"Kovan Test Network\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.PolygonMainnet" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"Polygon Mainnet\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.HardhatLocalhost" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"Hardhat Localhost\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.GanacheLocalhost" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"Ganache Localhost\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\"}"</code> |
| "_models.ChainIds.BinanceSmartChain" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\",\"blockExplorerUrls\":\"\"}"</code> |
| "_models.ChainIds.BinanceSmartTestnet" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\",\"blockExplorerUrls\":\"\"}"</code> |
| "_models.ChainIds.Palm" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\",\"blockExplorerUrls\":\"\"}"</code> |
| "_models.ChainIds.PalmTestnet" | <code>string</code> | <code>"{\"chainId\":\"\",\"chainName\":\"\",\"nativeCurrency\":\"\",\"rpcUrls\":\"\",\"blockExplorerUrls\":\"\"}"</code> |