@identity.com/gateway-evm-ts-client
TypeScript icon, indicating that this package has built-in type declarations

0.1.4 • Public • Published

gateway-eth-ts

Version Downloads/week License

Gateway ETH TS library

This client library allows JS/TS applications to communicate with Gateway token system on Ethereum blockchain. Common methods include validation of existing tokens, new gateway token issuance, token freezing/unfreezing and revocation.

Installation

yarn add @identity.com/gateway-evm-ts-client

Metamask integration example

import {
  GatewayTs,
} from "@identity.com/gateway-evm-ts-client";
import {
  getDefaultProvider,
  Wallet,
  providers
} = from 'ethers';
import { useWallet } from 'use-wallet';


(async function() {
  const { ethereum } = useWallet();
  const chainId = Number(ethereum.chainId);
  const provider = new ethers.providers.Web3Provider(
      ethereum,
      chainId
  );
  const signer = provider.getSigner();
  const network = await provider.getNetwork();
  const gateway = new GatewayTs(gatekeeper, network, DEFAULT_GATEWAY_TOKEN_ADDRESS);
  const testUser = '0xD42Ef952F2EA1E77a8b771884f15Bf20e35cF85f';
  await (await gateway.issue(testUser)).wait();
})();

Utility functions

Token bitmask construction

The easiest way to associate certain flags with the gateway token is by using list of supported KYC flags, and addFlagsToBitmask function.

  flags = [KYCFlags.IDCOM_1];
  bitmask = addFlagsToBitmask(bitmask, flags);

Examples

Charges

Charging in Eth:

// when charging in ETH - the gatekeeper cannot send the transaction directly
// Use GatewayTsTransaction to generate a transaction that can be sent to the client
const gateway = new GatewayTsTransaction(
    gatekeeper,
    DEFAULT_GATEWAY_TOKEN_ADDRESS
);
const charge = makeWeiCharge(chargeValue, recipientAddress);
const tx = gateway.issue(wallet, gatekeeperNetwork, undefined, undefined, charge)

// send tx to the user to sign and send

Charging in ERC20:

const charge = makeERC20Charge(
    chargeValue,
    erc20TokenAddress,
    userAddress,
    recipientAddress
);
const approvalTx = await approveERC20Charge(
    charge,
    provider
);
const internalApproveTx = await approveInternalERC20Charge(
    charge,
    gatekeeperNetwork,
    provider
);
// send approvalTx and approveInternalTx to the user to sign
// once the user has signed the above transactions

const gateway = new GatewayTs(
    gatekeeper,
    DEFAULT_GATEWAY_TOKEN_ADDRESS
);

await gateway.issue(wallet, gatekeeperNetwork, undefined, undefined, charge)

);

Running Test Suite

We currently use a local node (either foundry or hardhat) with a fork from the bsc testnet contract deployments for our test. To run the test suite locally you must specify the $RPC_URL enviornment variable to a bsc testnet node.

Readme

Keywords

none

Package Sidebar

Install

npm i @identity.com/gateway-evm-ts-client

Weekly Downloads

1

Version

0.1.4

License

MIT

Unpacked Size

5.3 MB

Total Files

612

Last publish

Collaborators

  • rleonard333
  • tbarri
  • chriteixeira
  • rado0x54
  • mitchcivic
  • dankelleher
  • flippiescholtz
  • kevinhcolgan
  • pbshoemaker
  • tyronemichael
  • lucmir