Minting a new token

This is an example of minting a new token.

import React from 'react';
import useWeb3Provider from 'hooks/useWeb3Provider';
import { getMintClubBondContract } from 'utils/contractHelpers';
import { useWeb3React } from '@web3-react/core';
import BigNumber from 'bignumber.js';

const BIG_TEN = new BigNumber(10);
const DEFAULT_TOKEN_DECIMAL = 18;

function CreateComponent() {
    const provider = useWeb3Provider();
    const { account } = useWeb3React();
    
    export const create = async (name, symbol, supply) => {
      const bondContract = getMintClubBondContract(provider.getSigner(account));
      return bondContract.createToken(
        name,
        symbol,
        new BigNumber(supply).times(BIG_TEN.pow(DEFAULT_TOKEN_DECIMAL)).toString(),
      );
    };

    export const createAndBuy = async (name, symbol, supply, amount, beneficiary) => {
      const bondContract = getMintClubBondContract(provider.getSigner(account));
      return bondContract.createAndBuy(
        name,
        symbol,
        new BigNumber(supply).times(BIG_TEN.pow(DEFAULT_TOKEN_DECIMAL)).toString(),
        new BigNumber(amount).times(BIG_TEN.pow(DEFAULT_TOKEN_DECIMAL)).toString(),
        beneficiary || AddressZero,
      );
    };
    
    return (
      <button
        onClick={async () => {
          try {
            const tx = // call create or createAndBuy depending on the situation
            await tx.wait();
          } catch (e) {
            console.error(e);
          }
        }}
      >
        Create Token
      </button>
    );
}