@d8x/perpetuals-sdk
Version:
Node TypeScript SDK for D8X Perpetual Futures
101 lines (100 loc) • 5.01 kB
TypeScript
import { ContractTransactionResponse, Overrides, Signer } from "ethers";
import type { NodeSDKConfig } from "./nodeSDKTypes";
import WriteAccessHandler from "./writeAccessHandler";
/**
* Functions to provide liquidity. This class requires a private key and executes
* smart-contract interactions that require gas-payments.
* @extends WriteAccessHandler
*/
export default class LiquidityProviderTool extends WriteAccessHandler {
/**
* Constructor
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
* readSDKConfig.
* @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();
*
* @param {string | Signer} signer Private key or ethers Signer of the account
*/
constructor(config: NodeSDKConfig, signer: string | Signer);
/**
* Add liquidity to the PnL participant fund. The address gets pool shares in return.
* @param {string} poolSymbolName Name of pool symbol (e.g. MATIC)
* @param {number} amountCC 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();
*
* @return Transaction object
*/
addLiquidity(poolSymbolName: string, amountCC: number, overrides?: Overrides): Promise<ContractTransactionResponse>;
/**
* 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.
* @param {string} poolSymbolName Name of pool symbol (e.g. MATIC).
* @param {string} amountPoolShares 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();
*
* @return Transaction object.
*/
initiateLiquidityWithdrawal(poolSymbolName: string, amountPoolShares: number, overrides?: Overrides): Promise<ContractTransactionResponse>;
/**
* Withdraws as much liquidity as there is available after a call to initiateLiquidityWithdrawal.
* The address loses pool shares in return.
* @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();
*
* @returns Transaction object.
*/
executeLiquidityWithdrawal(poolSymbolName: string, overrides?: Overrides): Promise<ContractTransactionResponse>;
}