@bifrost-finance/slpx
TypeScript icon, indicating that this package has built-in type declarations

0.0.3 • Public • Published

SLPx

SLPx offers ways to stake and unstake vToken assets.

Key Features

Supported Networks and Assets

  • Moonbeam Network: vGLMR, vFIL, vDOT
  • Moonriver Network: vMOVR, vBNC, vKSM
  • Astar Network: vASTR, vDOT
  • Ethereum Network: vETH

Install

npm install @bifrost-finance/slpx

Usage

First, import the necessary modules and instantiate the SLPx class:

import { usePublicClient, useWalletClient } from 'wagmi';
import SLPx from '@bifrost-finance/slpx';

// in React component
const publicClient = usePublicClient();
const { data: walletClient } = useWalletClient();
const slpx = new SLPx(publicClient, walletClient, channel);

Stake an Asset

import {  useContractReads, erc20ABI, useAccount } from 'wagmi';

const { address } = useAccount()
const vToken = 'vBNC'; // vGLMR, vFIL, vDOT, vMOVR, vBNC, vKSM, vASTR, vETH
const amount = 1.0;
const token = vToken?.replace(/^v/, '').toUpperCase();

// Query allowance
const { data, refetch } = useContractReads(
    {
        contracts: [
            {
                address: slpx.getContractAddressByToken(token),
                abi: erc20ABI,
                functionName: 'allowance',
                args: [address, slpx.getContractAddressByToken('SLPx')]
            }
        ]
    }
)

// Approving a Stake
slpx.approveStake(vToken, amount)
    .then(txHash => console.log(`Transaction hash: ${txHash}`))
    .catch(error => console.error(`Error approving stake: ${error}`));

// Get the minimum amount to stake
const minStake = slpx.getMinStake(vToken) 

// Staking an Asset
slpx.stakeAsset(vToken, amount)
    .then(txHash => console.log(`Transaction hash: ${txHash}`))
    .catch(error => console.error(`Error staking asset: ${error}`));

UnStake an Asset

import {  useContractReads, erc20ABI, useAccount } from 'wagmi';

const { address } = useAccount();
const vToken = 'vBNC'; // vGLMR, vFIL, vDOT, vMOVR, vBNC, vKSM, vASTR, vETH
const amount = 1.0;

// Query allowance
const { data, refetch } = useContractReads(
    {
        contracts: [
            {
                address: slpx.getContractAddressByToken(vToken),
                abi: erc20ABI,
                functionName: 'allowance',
                args: [address, slpx.getContractAddressByToken('SLPx')]
            }
        ]
    }
)

// Approving a Unstake
slpx.approveUnstake(vToken, amount)
    .then(txHash => console.log(`Transaction hash: ${txHash}`))
    .catch(error => console.error(`Error approving stake: ${error}`));

// Get the minimum amount to unstake
const minStake = slpx.getMinUnstake(vToken) 

// Unstaking an Asset
slpx.unstakeAsset(vToken, amount)
    .then(txHash => console.log(`Transaction hash: ${txHash}`))
    .catch(error => console.error(`Error staking asset: ${error}`));

vETH

After the completion of vETH Unstaking, the dedicated interface for claiming

// Get claim info (currently only supports vETH)
slpx.getClaimInfo('vETH')
    .then(info => console.log(`Claim info: ${JSON.stringify(info)}`))
    .catch(error => console.error(`Error getting claim info: ${error}`));
    
// To claim info (currently only supports vETH)
slpx.toClaim('vETH')
    .then(info => console.log(`Claim info: ${JSON.stringify(info)}`))
    .catch(error => console.error(`Error getting claim info: ${error}`));

Readme

Keywords

none

Package Sidebar

Install

npm i @bifrost-finance/slpx

Weekly Downloads

1

Version

0.0.3

License

none

Unpacked Size

360 kB

Total Files

6

Last publish

Collaborators

  • ark930
  • herryheyi
  • janpo
  • sorvik
  • chencheng_bifrost