@coffee-beans/coffee-js
v1.0.7
Published
JavaScript utilities for interacting with the Coffee Protocol V2
Downloads
9
Readme
Coffee.js SDK
Coffee.js is a JavaScript SDK which provides commonly used utilties for interacting with Coffee Protocol V2.
Overview
Installation
$ npm install @coffee-beans/coffee-js
Usage
Some examples of common uses for Coffee.js are shown below
Pool ID decoding
Each Coffee pool is referenced by its own unique pool ID. This ID contains various information about the pool which is in an encoded form. Coffee.js exposes functions to easily extract various information from this ID.
Sample code that calculates a pool's address from it's pool ID to allow approving another address to move the user's BPT:
import { getPoolAddress } from "@coffee-beans/coffee-js";
import { IERC20Abi } from ./IERC20.json
const poolId = "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014"
const poolAddress = getPoolAddress(poolId)
// poolAddress = "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56"
const bptToken = new Contract(poolAddress, IERC20Abi, provider)
await bptToken.approve("0x012345....", "10000")
Encoding userData
To provide liquidity to a Coffee pool, various fields must be provided in an encoded form as the userData
field within the joinPool
call. Coffee.js exposes functions to simplify encoding the userData
field used for joining and exiting various pool types to prevent errors.
Sample code that provides the initial liquidity to a WeightedPool:
import { WeightedPoolEncoder } from "@coffee-beans/coffee-js";
const poolId = "0x5c6ee304399dbdb9c8ef030ab642b10820db8f56000200000000000000000014"
const tokens = ["0x012345....", "0x789ABC...."]
const amountsIn = [BigNumber.from("10000"), BigNumber.from("10000")];
const tx = await vault.joinPool(
poolId,
userAddress,
userAddress,
{
assets: tokens,
maxAmountsIn: amountsIn,
fromInternalBalance: true,
userData: WeightedPoolEncoder.joinInit(amountsIn),
}
);