Token Vesting
Smart Contract Linear Vesting TypeScript SDK

Smart Contract Linear Vesting TypeScript Package

Install dependencies

Install dependencies with npm:
npm i

Write your code

Make necessary changes in package.json (name, version, description, keywords, author, homepage and other URLs).
Write your code in src folder, and unit test in test folder, replacing the original files there.
The VS Code shortcuts for formatting of a code file are: Shift + Alt + F (Windows); Shift + Option (Alt) + F (MacOS); Ctrl + Shift + I (Linux).
Change code linting and formatting settings in .prettierrc.js if you want.


Test your code with Jest framework:
npm run test
Note: Example TypeScript Package uses husky, pinst and commitlint to automatically execute test and lint commit message before every commit.


Build production (distribution) files in your dist folder:
npm run build
It generates CommonJS (in dist/cjs folder), ES Modules (in dist/esm folder), bundled and minified UMD (in dist/umd folder), as well as TypeScript declaration files (in dist/types folder).

Try it before publishing

npm link
npm link will create a symlink in the global folder, which may be {prefix}/lib/node_modules/smart-contract-linear-vesting or C:\Users<username>\AppData\Roaming\npm\node_modules\smart-contract-linear-vesting.
Create an empty folder elsewhere, you don't even need to npm init (to generate package.json). Open the folder with VS Code, open a terminal and just run:
npm uninstall smart-contract-linear-vesting -g

Prepare to publish

Create an npm account.
Click to read this section if you do manual publishing

API doc:

  • handleWeb3Provider: () => Promise;
  • handleGetDetailInfoAddress: (pool: string, account: string) => Promise<{ address: string; amount: number; claimed: number; claimable: number; remain: number; } | null>;
  • handleGetErc20Balance: (account: string, token: string) => Promise;
  • handleClaim: (address?: string) => Promise;
  • handleChangeStakeholder: (prevStakeholder: string, newStakeholder: string, address?: string) => Promise;
  • handleApproveStakeholders: (poolAddress: string, token?: string, amount?: number) => Promise;
  • handleAddStakeholders: (poolAddress: string, amountList?: never[]) => Promise;
  • handleCreatePool: (name: string, token: string, start: number, duration: number) => Promise;
  • handleTransferOwnership: (poolAddress: string, valueAddress: string) => Promise;
  • handleAddManager: (poolAddress: string, token: string, itemManager: string) => Promise;
  • handleRemoveManager: (poolAddress: string, token: string, itemManager: string) => Promise;
const { handleGetErc20Balance } = new SmartContractLinearVesting()
(async () => {
const balance = await handleGetErc20Balance(account, process.env.REACT_APP_TOKEN_ADDRESS || '')
balance && dispatch(updateErc20Balance(balance))
Copy link
On this page