Purchases & Redemptions

How to enable users to purchase and redeem bonds

Purchases

Our Teller contract's purchase function takes the following parameters:

  • recipient - the address which will receive the vesting tokens (i.e. the purchaser)

  • referrer - the address to which frontend referral fees (currently disabled) will be sent if enabled (or 0x0000000000000000000000000000000000000000 if not providing an address)

  • id - the id of the market from which the bond is being purchased

  • amount - the amount being purchased

  • minAmountOut - the minimum number of payout tokens the user will receive. This protects the user against excessive slippage

  • overrides - standard override parameters, gasLimit, gasPrice etc

The values for amount and minAmountOut should be formatted taking into account their decimals:

amount = ethers.utils.parseUnits(amount.toString(), quoteDecimals)
        .toString();
        
minAmountOut = ethers.utils.parseUnits(minAmountOut.toString(), payoutDecimals)
        .toString()

So an example call would be:

tellerContract.purchase(
      recipientAddress,
      referrer,
      id,
      amount,
      minAmountOut,
      overrides
);

Redemptions

Our Teller's redeem function takes the following parameters:

  • token - the address of the vesting token

  • amount - the amount to redeem

  • overrides - standard override parameters, gasLimit, gasPrice etc

For amount we recommend using the user's full balance by default.

So an example call would be:

tellerContract.redeem(
    tokenAddress, 
    amount, 
    overrides
);

Last updated