Liquidity Providers

Liquidity providers provide liquidity to a pool of their choice and earn trading fees. LiquidityProviderTool is the relevant component of the SDK.

LiquidityProviderTool ⇐ WriteAccessHandler

Functions to provide liquidity. This class requires a private key and executes smart-contract interactions that require gas-payments.

Kind: global class Extends: WriteAccessHandler

  • LiquidityProviderToolWriteAccessHandler

    • new LiquidityProviderTool(config, signer)

    • .addLiquidity(poolSymbolName, amountCC)

    • .initiateLiquidityWithdrawal(poolSymbolName, amountPoolShares)

    • .executeLiquidityWithdrawal(poolSymbolName)

new LiquidityProviderTool(config, signer)

Constructor

ParamTypeDescription

config

NodeSDKConfig

Configuration object, see PerpetualDataHandler. readSDKConfig.

signer

string | Signer

Private key or ethers Signer of the account

Example

import { LiquidityProviderTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidityProviderTool);
  // load configuration for Polygon zkEVM (testnet)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  // LiquidityProviderTool (authentication required, PK is an environment variable with a private key)
  const pk: string = <string>process.env.PK;
  let lqudtProviderTool = new LiquidityProviderTool(config, pk);
  // Create a proxy instance to access the blockchain
  await lqudtProviderTool.createProxyInstance();
}
main();

liquidityProviderTool.addLiquidity(poolSymbolName, amountCC) ⇒

Add liquidity to the PnL participant fund. The address gets pool shares in return.

Kind: instance method of LiquidityProviderTool Returns:

Transaction object

ParamTypeDescription

poolSymbolName

string

Name of pool symbol (e.g. MATIC)

amountCC

number

Amount in pool-collateral currency

Example

import { LiquidityProviderTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidityProviderTool);
  // setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtProviderTool = new LiquidityProviderTool(config, pk);
  await lqudtProviderTool.createProxyInstance();
  // add liquidity
  await lqudtProviderTool.setAllowance("MATIC");
  let respAddLiquidity = await lqudtProviderTool.addLiquidity("MATIC", 0.1);
  console.log(respAddLiquidity);
}
main();

liquidityProviderTool.initiateLiquidityWithdrawal(poolSymbolName, amountPoolShares) ⇒

Initiates a liquidity withdrawal from the pool It triggers a time-delayed unlocking of the given number of pool shares. The amount of pool shares to be unlocked is fixed by this call, but not their value in pool currency.

Kind: instance method of LiquidityProviderTool Returns:

Transaction object.

ParamTypeDescription

poolSymbolName

string

Name of pool symbol (e.g. MATIC).

amountPoolShares

string

Amount in pool-shares, removes everything if > available amount.

Example

import { LiquidityProviderTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidityProviderTool);
  // setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtProviderTool = new LiquidityProviderTool(config, pk);
  await lqudtProviderTool.createProxyInstance();
  // initiate withdrawal
  let respRemoveLiquidity = await lqudtProviderTool.initiateLiquidityWithdrawal("MATIC", 0.1);
  console.log(respRemoveLiquidity);
}
main();

liquidityProviderTool.executeLiquidityWithdrawal(poolSymbolName) ⇒

Withdraws as much liquidity as there is available after a call to initiateLiquidityWithdrawal. The address loses pool shares in return.

Kind: instance method of LiquidityProviderTool Returns:

Transaction object.

Param

poolSymbolName

Example

import { LiquidityProviderTool, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
async function main() {
  console.log(LiquidityProviderTool);
  // setup (authentication required, PK is an environment variable with a private key)
  const config = PerpetualDataHandler.readSDKConfig("cardona");
  const pk: string = <string>process.env.PK;
  let lqudtProviderTool = new LiquidityProviderTool(config, pk);
  await lqudtProviderTool.createProxyInstance();
  // remove liquidity
  let respRemoveLiquidity = await lqudtProviderTool.executeLiquidityWithdrawal("MATIC", 0.1);
  console.log(respRemoveLiquidity);
}
main();