JPYC SDK(English)

JPYC SDK(English)

JPYC V1 SDK

JPYC V1 SDK implements an interface to interact with JPYCv2 contracts on different chains. Supported chains are Ethereum, Polygon, Gnosis, Avalanche, and Astar. Please note that Shiden Network is not yet supported.

💡 How to Use

Please follow the following steps to configure our SDK.

1. Install Packages

Install packages.

# yarn
$ yarn add @jpyc/sdk-v1

# npm
$ npm i @jpyc/sdk-v1

2. Set Environment Variables

Some data, such as configuration variables (e.g., chain name) or sensitive data (e.g., private key), are embedded as environment variables. You need to set the following environment variables.

Variable
Description & Instructions
SDK_ENV
SDK environment. Set to local for local environment or any other sensible string for production environment.
CHAIN_NAME
Chain name. Set to one of the following: local, ethereum, polygon, gnosis, avalanche or astar.
NETWORK_NAME
Network name within the specified chain. Set to one of the following: mainnet, goerli, sepolia, amoy, chiado or fuji
RPC_ENDPOINT
RPC endpoint to send transactions.
PRIVATE_KEY
Private key of an account.
LOCAL_PROXY_ADDRESS
Proxy contract address in local environment.

3. Instantiate SDK

Initialize an SDK instance that implements an abstracted interface to the JPYCv2 contracts.

import { ChainName, Endpoint, NetworkName } from '@jpyc/sdk-core';
import { IJPYC, ISdkClient, JPYC, SdkClient } from '@jpyc/sdk-v1';

// 1. Initialize an SdkClient instance
const sdkClient: ISdkClient = new SdkClient({
  chainName: process.env.CHAIN_NAME as ChainName,
  networkName: process.env.NETWORK_NAME as NetworkName,
  rpcEndpoint: process.env.RPC_ENDPOINT as Endpoint,
});

// 2. Generate an account from a private key
export const account = sdkClient.createPrivateKeyAccount({});

// 3. Generate a client with the account
export const client = sdkClient.createLocalClient({
  account: account,
});

// 4. Initialize an SDK instance
export const jpyc: IJPYC = new JPYC({
  client: client,
});

4. Use SDK

Use the initialized SDK wherever you would like.

import { jpyc } from './YOUR/PATH/TO/INITIALIZATION/FILE';

// Fetch `totalSupply` from `JPYCv2` contract
const totalSupply = await jpyc.totalSupply();
console.log(`totalSupply: ${totalSupply.toString()}`);

✨ Code Examples

For your reference, we provide code examples in the separate sdk-examples repository. Please follow the instructions specified in README files.

🤖 Available Commands

The following commands are available as yarn scripts for local development & testing.

Command
Description
docs
Generate Markdown documents from TSDoc-style comments
lint
Run Eslint
lint:dry-run
Run Eslint without fixing
format
Run Prettier
format:dry-run
Run Prettier without fixing
compile
Compile (transpile) SDK

📚 Documentation

You can find the auto-generated documentation of this SDK here.

JPYC Node SDKs

Monorepo for JPYC Node SDKs.

🌈 Available SDKs

Please refer to READMEs of each SDK for the version specific details.

Git Submodules

This repo uses Git Submodules to be in sync with JPYCv2 repo.

To include submodules when cloning the repo, add --recursive option like below.

$ git clone --recursive https://github.com/jcam1/sdks.git

Yarn Workspaces

This repo uses Yarn Workspaces primarily as a monorepo management tool. Please refer to the inserted link for details.

Note

Please use Node v20.12.0 for this repo.

To install dependencies for all the workspaces, run the following.

# cd into this repo
$ cd sdks
# Install dependencies
$ yarn

Yarn Scripts

To run yarn scripts defined in workspaces, run the following.

$ yarn workspace ${workspace_name} run ${command_name}

Dependencies

To add dependencies, run one of the following. To prevent unexpected behaviors, always pin the exact versions of the dependencies to be installed.

# Add dependencies to the specified workspace
$ yarn workspace ${workspace_name} add -E ${dependencies}

# Add dev dependencies to the specified workspace
$ yarn workspace ${workspace_name} add -E -D ${dependencies}

# Add dev dependencies to the workspaces root
$ yarn add -E -D -W ${dependencies}

To remove dependencies, run one of the following.

# Remove dependencies from the specified workspace
$ yarn workspace ${workspace_name} remove ${dependencies}

# Remove dependencies from the workspaces root
$ yarn remove -W ${dependencies}

Documentation

To generate Markdown documentation from source code, run the following.

$ yarn run docs

🔥 How to Contribute

We appreciate your interest to contribute to this project! Please read the following steps to see how to contribute to this project.

1. Create an Issue

The first thing to do is to create a new issue. Feel free to create new issues from here to propose/request new features or report bugs.

2. Clone This Repository

Next, clone this repo. Our default branch is develop.

$ git clone --recursive https://github.com/jcam1/sdks.git

3. Checkout to a New Branch

You then need to checkout to a new branch (name whatever you would like) from the cloned develop branch.

$ git checkout -b ${your_branch_name}

4. Write Code

Now, write code to implement the proposed features and/or to fix bugs.

5. Open a Pull Request

Finally, open a new PR from your branch to develop branch to describe what you'll have done.