
Product
Socket Firewall Now Blocks Malicious VS Code and Open VSX Extensions
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.
@leap-network/v4-client-js
Advanced tools
Client library for simple interactions with PoolTogether V4 contracts.
Application | Contracts | Documentation | Draw Calculator | Utility Library | Static Cache
This library includes a simplified interface for interacting with a v4 PoolTogether deployment. Create an instance of PrizePoolNetwork and use the initialized PrizePool and PrizeDistributor to begin reading and writing data to the protocol.
There are several classes that provide interfaces to the different aspects of the V4 PoolTogether protocol. PrizePoolNetwork is the main entry point.
This project is available as an NPM package:
npm install @leap-network/v4-client-js
or
yarn add @leap-network/v4-client-js
The repo can be cloned from Github for contributions.
git clone https://github.com/pooltogether/v4-client-js.git
A PrizePoolNetwork is a collection of PrizePool and PrizeDistributor across several chains that make up a v4 deployment.
To create an instance of PrizePoolNetwork you will need:
import { PrizePoolNetwork } from '@leap-network/v4-client-js'
import { mainnet } from '@leap-network/v4-pool-data'
const PrizePoolNetwork = new PrizePoolNetwork(providers, mainnet)
A PrizePool is a representation of a Prize Pool deployment. The Prize Pool is responsible for managing deposits, withdrawals & delegation. PrizePool is a read only object, for write capabilities check out User
const prizePool = PrizePoolNetwork.getPrizePool(1, '0xabc123')
A User is wrapper around PrizePool with the ability to send transactions to manage deposits, withdrawals and delegation.
const user = new User(prizePool.prizePoolMetadata, signer, prizePool)
A PrizeDistributor is what handles prizes. It is used to determine the current draw, check for prizes & claiming prizes. For write capabilities, pass a Signer when creating an instance.
const prizeDistributor = PrizePoolNetwork.getPrizeDistributor(1, '0xabc123')
const prizeDistributor = PrizePoolNetwork.getPrizeDistributor(1, '0xabc123')
const signer = provider.getSigner()
const signerPrizeDistributor = new PrizeDistributor(
prizeDistributor.prizeDistributorMetadata,
signer,
prizeDistributor.contractMetadataList
)
const tokenData = await prizePool.getTokenData() // Underlying token (ex. USDC)
const ticketData = await prizePool.getTicketData() // Ticket token
const usersBalances: {
chainId: number,
address: string,
balances: PrizePoolTokenBalances
}[] = await PrizePoolNetwork.getUsersPrizePoolBalances(usersAddress)
const balance: PrizePoolTokenBalances = await prizePool.getUsersPrizePoolBalances(usersAddress)
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.approveDeposits(
ethers.utils.parseUnits(10, decimals)
)
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.depositAndDelegate(
ethers.utils.parseUnits(10, decimals)
)
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.deposit(ethers.utils.parseUnits(10, decimals))
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.withdraw(ethers.utils.parseUnits(10, decimals))
Valid draw ids are draw ids that have all of the relevant data pushed to their respective chain & are not expired.
const drawIds = await prizeDistributor.getValidDrawIds()
const drawResults = await PrizeApi.getUsersDrawResultsByDraw(
chainId,
usersAddress,
prizeDistributorAddress,
drawId,
maxPicksPerUser
)
NOTE: Ensure the PrizeDistributor was initialized with a Signer
const txResponse: TransactionResponse = await prizeDistributor.claimPrizesByDraw(1)
Create an Issue to request new features.
Open Pull Request adhering to Contribution guidelines.
The package is setup using the TSDX zero-config CLI which includes:
Minor changes have been made to extend the default configuration.
The TSDX linting configuration is overwritten to include override(s)* for:
yarn docsclasses to Classesinterfaces to InterfacesREADME.md below header to index.md.md with `` (nothing) in linksREADME links to ./ and ../README to ../FAQs
Client library for simple interactions with PoolTogether V4 contracts.
We found that @leap-network/v4-client-js demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Socket Firewall blocks malicious VS Code and Open VSX extensions before install, protecting developers from compromised editor marketplaces.

Research
More than 140 Mastra npm packages were compromised in a supply chain attack that used a typosquatted dependency to deliver a cross-platform infostealer during installation.

Research
/Security News
A new npm package tests AI malware scanners with prompt injection, safety-triggering comments, context flooding, and obfuscated JavaScript.