import { Contract, TransactionReceipt } from 'ethers'; import { Trade, TradeInfo, OpenLimitOrder, TradeInputOrderType, MarginUpdateType } from '../types'; import { BaseSigner } from '../signers/base'; /** * Trading Operations RPC * Handles all trading contract interactions including opening/closing trades, * updating margins, and managing limit orders. */ export declare class TradingOperationsRPC { private tradingContract; private tradingStorageContract; private signer?; constructor(tradingContract: Contract, tradingStorageContract: Contract, signer?: BaseSigner | undefined); /** * Get execution fee required for trading operations * @returns Execution fee in ETH */ getExecutionFee(): Promise; /** * Open a new trade position * @param trade - Trade parameters * @param orderType - Order type (MARKET, LIMIT, etc.) * @param slippageP - Slippage percentage (e.g., 1 for 1%) * @param executionFeeEth - Execution fee in ETH (optional, will fetch if not provided) * @returns Transaction receipt */ openTrade(trade: Omit, orderType: TradeInputOrderType, slippageP: number, executionFeeEth?: number): Promise; /** * Close a trade position at market price * @param pairIndex - Trading pair index * @param index - Trade index * @param closeAmount - Amount of collateral to close (USDC) * @param executionFeeEth - Execution fee in ETH (optional) * @returns Transaction receipt */ closeTradeMarket(pairIndex: number, index: number, closeAmount: number, executionFeeEth?: number): Promise; /** * Update margin for an existing trade * @param pairIndex - Trading pair index * @param index - Trade index * @param updateType - DEPOSIT or WITHDRAW * @param amount - Amount to add/remove (USDC) * @param priceUpdateData - Price oracle update data * @returns Transaction receipt */ updateMargin(pairIndex: number, index: number, updateType: MarginUpdateType, amount: number, priceUpdateData?: string[]): Promise; /** * Update take profit and stop loss for a trade * @param pairIndex - Trading pair index * @param index - Trade index * @param newSl - New stop loss price * @param newTp - New take profit price * @param priceUpdateData - Price oracle update data * @returns Transaction receipt */ updateTpAndSl(pairIndex: number, index: number, newSl: number, newTp: number, priceUpdateData?: string[]): Promise; /** * Cancel a pending limit order * @param pairIndex - Trading pair index * @param index - Order index * @returns Transaction receipt */ cancelOpenLimitOrder(pairIndex: number, index: number): Promise; /** * Get open trade information * @param trader - Trader address * @param pairIndex - Trading pair index * @param index - Trade index * @returns Trade information */ getOpenTrade(trader: string, pairIndex: number, index: number): Promise; /** * Get additional trade information * @param trader - Trader address * @param pairIndex - Trading pair index * @param index - Trade index * @returns Trade info */ getOpenTradeInfo(trader: string, pairIndex: number, index: number): Promise; /** * Get number of open trades for a trader on a pair * @param trader - Trader address * @param pairIndex - Trading pair index * @returns Number of open trades */ getOpenTradesCount(trader: string, pairIndex: number): Promise; /** * Get limit order information * @param trader - Trader address * @param pairIndex - Trading pair index * @param index - Order index * @returns Limit order information */ getOpenLimitOrder(trader: string, pairIndex: number, index: number): Promise; /** * Helper method to sign and send transactions */ private signAndSend; /** * Set signer for transactions */ setSigner(signer: BaseSigner): void; }