UNPKG

@devasher/kuru-sdk

Version:

Ethers v6 SDK to interact with Kuru (forked from @kuru-labs/kuru-sdk)

90 lines 3.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PositionProvider = void 0; const ethers_1 = require("ethers"); const OrderBook_json_1 = __importDefault(require("../../abi/OrderBook.json")); const txConfig_1 = __importDefault(require("../utils/txConfig")); class PositionProvider { /** * @dev Submits a batch of liquidity positions to the contract * @param signer - The signer object * @param contractAddress - The contract address * @param batchDetails - The batch liquidity position details * @returns A promise that resolves to the transaction */ static async provisionLiquidity(signer, contractAddress, batchDetails) { // Create contract instance const contract = new ethers_1.ethers.Contract(contractAddress, OrderBook_json_1.default.abi, signer); const prices = []; const flipPrices = []; const sizes = []; const isBuy = []; // Add bids for (const bid of batchDetails.bids) { prices.push(bid.price); flipPrices.push(bid.flipPrice); sizes.push(bid.liquidity); isBuy.push(true); } // Add asks for (const ask of batchDetails.asks) { prices.push(ask.price); flipPrices.push(ask.flipPrice); sizes.push(ask.liquidity); isBuy.push(false); } // Call the contract with provisionOrRevert = false const tx = await contract.batchProvisionLiquidity(prices, flipPrices, sizes, isBuy, false); const receipt = await tx.wait(); return receipt; } /** * @dev Constructs a transaction for batch liquidity provision * @param signer - The signer instance * @param contractAddress - The contract address * @param batchDetails - The batch liquidity position details * @param txOptions - Transaction options * @returns A promise that resolves to the transaction request object */ static async constructBatchProvisionTransaction(signer, contractAddress, batchDetails, txOptions) { const address = await signer.getAddress(); const prices = []; const flipPrices = []; const sizes = []; const isBuy = []; // Add bids for (const bid of batchDetails.bids) { prices.push(bid.price); flipPrices.push(bid.flipPrice); sizes.push(bid.liquidity); isBuy.push(true); } // Add asks for (const ask of batchDetails.asks) { prices.push(ask.price); flipPrices.push(ask.flipPrice); sizes.push(ask.liquidity); isBuy.push(false); } const orderbookInterface = new ethers_1.ethers.Interface(OrderBook_json_1.default.abi); const data = orderbookInterface.encodeFunctionData('batchProvisionLiquidity', [ prices, flipPrices, sizes, isBuy, false, ]); return (0, txConfig_1.default)({ from: address, to: contractAddress, signer, data, txOptions, }); } } exports.PositionProvider = PositionProvider; //# sourceMappingURL=provision.js.map