D8X
  • D8X TL;DR
    • D8X Overview
    • Onboarding
      • Pick your D8X Frontend
      • Get Funds on X Layer
      • Get Funds on zkEVM
  • Contribute & Earn
    • White-label D8X
    • Traders
    • Liquidity Providers
    • Refer Traders
    • Order Executors
    • Liquidators
    • Governors
    • D8X Trading Competition
      • Week 1: 16th March 2025
      • Week 2: 23rd March 2025
      • Week 3: 30th of March 2025
      • Week 4: 6th of April
      • Week 5: 13th of April
      • Week 6: 20th of April
  • Perpetual Contracts Guide
    • Overview
    • Order Types
    • Fee Structure
    • Profit/Loss & Position Marking
    • Liquidity Pools & Liquidity Provision
    • Liquidations
    • Oracles
  • Contracts
    • Berachain
    • Arbitrum
    • Polygon ZKEVM
  • D8X Token
    • What is $D8X?
    • Supply
    • Utility
  • Node SDK
    • Getting Started
    • Modules
      • Market Data
      • Parent Class PerpetualDataHandler
      • Traders
      • Liquidity Providers
      • Liquidators
      • Order Executors
      • White-Label Partners
    • Market data API
  • SECURITY
    • Audits
  • Contact
    • Brand assets
    • Contact us
Powered by GitBook
On this page
  1. Node SDK
  2. Modules

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

  • LiquidityProviderTool ⇐ WriteAccessHandler

    • new LiquidityProviderTool(config, signer)

    • .addLiquidity(poolSymbolName, amountCC) ⇒

    • .initiateLiquidityWithdrawal(poolSymbolName, amountPoolShares) ⇒

    • .executeLiquidityWithdrawal(poolSymbolName) ⇒

new LiquidityProviderTool(config, signer)

Constructor

Param
Type
Description

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

Param
Type
Description

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.

Param
Type
Description

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();