@pooltogether/v4-js-client v0.9.7
PoolTogether v4 JS Client
This library includes a simplified interface for interacting with a v4 PoolTogether deployment.
Installation
This project is available as an NPM package:
$ yarn add @pooltogether/v4-js-clientHow to use
Initializing
PrizePoolNetwork
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:
- A Contract List containing all of the relevant contracts for a v4 prize pool. You can obtain this by generating your own after deploying a v4 Prize Pool (start here). Or by importing a copy of our current deployments v4-pool-data.
- Ethers providers for every chain that a Prize Pool is deployed on.
import { PrizePoolNetwork } from '@pooltogether/v4-js-client'
import { mainnet } from '@pooltogether/v4-pool-data'
const PrizePoolNetwork = new PrizePoolNetwork(providers, mainnet)PrizePool
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')User
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)PrizeDistributor
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
)Common uses
Get token data for a Prize Pool
const tokenData = await prizePool.getTokenData() // Underlying token (ex. USDC)
const ticketData = await prizePool.getTicketData() // Ticket tokenGet a users deposit token & ticket balances
const usersBalances: {
chainId: number,
address: string,
balances: PrizePoolTokenBalances
}[] = await PrizePoolNetwork.getUsersPrizePoolBalances()Get a users deposit token & ticket balance
const balance: PrizePoolTokenBalances = await prizePool.getUsersPrizePoolBalances(usersAddress)Approve deposits
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.approveDeposits(
ethers.utils.parseUnits(10, decimals)
)Deposit and delegate tokens
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.depositAndDelegate(
ethers.utils.parseUnits(10, decimals)
)Deposit tokens
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.deposit(ethers.utils.parseUnits(10, decimals))Withdraw tokens
NOTE: Make sure you're shifting by the proper decimal amount
const txResponse: TransactionResponse = await user.withdraw(ethers.utils.parseUnits(10, decimals))Get valid draw ids
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()Get a users prizes
NOTE: This will run the calculations and can be computationally expensive.
const drawResults = await prizeDistributor.getUsersPrizesByDrawId(usersAddress, 1)Claim a users prizes
NOTE: Ensure the PrizeDistributor was initialized with a Signer
const txResponse: TransactionResponse = await prizeDistributor.claimPrizesByDraw(1)4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago