Booster

The main deposit contract for LP tokens
The booster.sol is our main deposit contract for LP tokens.
//main Convex contract(booster.sol) basic interface
interface IConvex{
//deposit into convex, receive a tokenized deposit. parameter to stake immediately
function deposit(uint256 _pid, uint256 _amount, bool _stake) external returns(bool);
//burn a tokenized deposit to receive curve lp tokens back
function withdraw(uint256 _pid, uint256 _amount) external returns(bool);
}

Pool Info

To gather pool information access the poolInfo array
//number of pools
var poolLength = await booster.poolLength()
//get information for pool "n"
var poolInfo = await booster.poolInfo(n)
Pool information is returned in the following struct.
struct PoolInfo {
address lptoken;
address token;
address gauge;
address crvRewards;
address stash;
bool shutdown;
}
lptoken: the underlying token(ex. the curve lp token) token: the convex deposit token(a 1:1 token representing an lp deposit). The supply of this token can be used to calculate the TVL of the pool gauge: the curve "gauge" or staking contract used by the pool crvRewards: the main reward contract for the pool stash: a helper contract used to hold extra rewards (like snx) on behalf of the pool until distribution is called shutdown: a shutdown flag of the pool

Deposits

There are two deposit commands, deposit() and depositAll(). Depositing into the booster will return a "deposit token" as a receipt. This token can be staked in the rewards contract to earn CRV and other rewards.
//deposit into a pool "n" and receive the deposit token
await booster.deposit( n, amount, false )
//deposit into a pool "n" and immediately stake into the rewards contract
await booster.deposit( n, amount, true )
//deposit all lp tokens for pool "n" and stake into the rewards contract
await booster.depositAll( n, true )

Withdrawals

There are two withdraw commands, withdraw() and withdrawAll(). By burning a convex deposit token you can receive the underlying LP token.
//withdraw from pool "n"
await booster.withdraw( n, amount )
//withdraw all from pool "n"
await booster.withdrawAll( n )