/maticjs-fxportal

Library for interacting with fx-portal bridge.

Primary LanguageTypeScript

TEST npm version

maticjs-fxportal

FxPortal bridge plugin for maticjs. It provides FxPortalClient to interact with fxportal bridge.

Installation

npm i @fxportal/maticjs-fxportal

Install ethers library

Currently matic.js support two ethers library -

1. web3.js

npm i @maticnetwork/maticjs-web3

2. Ethers

npm i @maticnetwork/maticjs-ethers

DOCS

Initiate client

const { use } = require("@maticnetwork/maticjs");
const { Web3ClientPlugin } = require("@maticnetwork/maticjs-web3");
const { FxPortalClient } = require("@fxportal/maticjs-fxportal");

const HDWalletProvider = require("@truffle/hdwallet-provider");

// add Web3Plugin

use(Web3ClientPlugin);

const fxPortalClient = new FxPortalClient();

await fxPortalClient.init({
    network: 'testnet',
    version: 'mumbai',
    parent: {
        provider: new HDWalletProvider(privateKey, rootRPC),
        defaultConfig: {
            from
        }
    },
    child: {
        provider: new HDWalletProvider(privateKey, childRPC),
        defaultConfig: {
            from
        }
    }
});

ERC20

Method erc20 allows you to interact with erc20 token.

const erc20 = fxPortalClient.erc20(<tokenAddress>, <isRoot>);

getBalance

Get balance of a user by supplying user address

const balance = await erc20.getBalance(<user address>);

getName

Get name of token

const name = await erc20.getName();

getDecimals

Get decimals of token

const decimals = await erc20.getDecimals();

getSymbol

Get symbol of token

const decimals = await erc20.getSymbol();

approve

Approve required amount for depositing to polygon chain

const approveResult = await erc20.approve(<amount>);
const txHash = await approveResult.getTransactionHash();
const receipt = await approveResult.getReceipt();

approveMax

Approve max amount for depositing to polygon chain

const approveResult = await erc20.approveMax();
const txHash = await approveResult.getTransactionHash();
const receipt = await approveResult.getReceipt();

getAllowance

Get approve amount of a user by supplying user address

const balance = await erc20.getAllowance(<user address>);

deposit

Deposit required amount from ethereum to polygon

const result = await erc20.deposit(<amount>, <user address>);
const txHash = await result.getTransactionHash();
const receipt = await result.getReceipt();

withdrawStart

Initiate withdraw process by burning the required amount.

const result = await erc20.withdrawStart(<amount>);
const txHash = await result.getTransactionHash();
const receipt = await result.getReceipt();

withdrawToStart

Initiate withdrawTo process by burning the required amount.

const result = await erc20.withdrawToStart(<amount>, <to address>);
const txHash = await result.getTransactionHash();
const receipt = await result.getReceipt();

withdrawExit

Exit withdraw process by providng txHash received in withdrawStart process.

Note:- withdrawExit can be called after checkpoint has been submitted for withdrawStart.

const result = await erc20.withdrawExit(<burn tx hash>);
const txHash = await result.getTransactionHash();
const receipt = await result.getReceipt();

withdrawExitFaster

Faster exit withdraw process by providng txHash received in withdrawStart process.

It is faster because it uses api to create the proof.

const result = await erc20.withdrawExitFaster(<burn tx hash>);
const txHash = await result.getTransactionHash();
const receipt = await result.getReceipt();

isCheckPointed

Check if transaction has been checkpointed or not.

await fxPortalClient.isCheckPointed(<tx hash>);

isWithdrawExited

Check if withdraw process has been completed by supplying burn transaction hash.

const balance = await erc20.isExited(<burn tx hash>);

isDeposited

Check if deposit is completed.

const balance = await erc20.isDeposited(<tx hash>);