import { MarketWithProduct } from '@vertex-protocol/contracts';
import { EngineBaseClient } from './EngineBaseClient.cjs';
import { GetEngineContractsResponse, GetEngineSubaccountSummaryParams, GetEngineSubaccountSummaryResponse, GetEngineIsolatedPositionsParams, GetEngineIsolatedPositionsResponse, GetEngineEstimatedSubaccountSummaryParams, GetEngineSymbolsParams, EngineSymbolsResponse, GetEngineAllMarketsResponse, GetEngineHealthGroupsResponse, GetEngineMinDepositRatesResponse, GetEngineOrderParams, GetEngineOrderResponse, ValidateEngineOrderParams, ValidateEngineOrderResponse, ValidateSignedEngineOrderParams, GetEngineSubaccountOrdersParams, GetEngineSubaccountOrdersResponse, GetEngineSubaccountProductOrdersParams, GetEngineSubaccountProductOrdersResponse, GetEngineSubaccountFeeRatesParams, GetEngineSubaccountFeeRatesResponse, GetEngineMarketLiquidityParams, GetEngineMarketLiquidityResponse, GetEngineMarketPriceParams, GetEngineMarketPriceResponse, GetEngineMarketPricesParams, GetEngineMarketPricesResponse, GetEngineMaxOrderSizeParams, GetEngineMaxOrderSizeResponse, GetEngineMaxWithdrawableParams, GetEngineMaxWithdrawableResponse, GetEngineMaxMintLpAmountParams, GetEngineMaxMintLpAmountResponse, GetEngineMaxMintVlpAmountParams, GetEngineMaxMintVlpAmountResponse, GetEngineLinkedSignerParams, GetEngineLinkedSignerResponse, GetEngineInsuranceResponse } from './types/clientQueryTypes.cjs';
import { EngineServerStatusResponse } from './types/serverQueryTypes.cjs';
import 'axios';
import './types/serverExecuteTypes.cjs';
import '@vertex-protocol/utils';
import './types/serverQueryModelTypes.cjs';

declare class EngineQueryClient extends EngineBaseClient {
    /**
     * Retrieves the set of contracts that the engine is interfacing with
     */
    getContracts(): Promise<GetEngineContractsResponse>;
    /**
     * Retrieves current engine status
     */
    getStatus(): Promise<EngineServerStatusResponse>;
    /**
     * Retrieves a subaccount summary reflective of the state within the offchain engine. This adheres to the
     * same return interface as the contract version
     *
     * @param params
     */
    getSubaccountSummary(params: GetEngineSubaccountSummaryParams): Promise<GetEngineSubaccountSummaryResponse>;
    /**
     * Retrieves a list of isolated positions
     *
     * @param params
     */
    getIsolatedPositions(params: GetEngineIsolatedPositionsParams): Promise<GetEngineIsolatedPositionsResponse>;
    /**
     * Retrieves an estimated subaccount summary with the applied transactions
     *
     * @param params
     */
    getEstimatedSubaccountSummary(params: GetEngineEstimatedSubaccountSummaryParams): Promise<GetEngineSubaccountSummaryResponse>;
    /**
     * Retrieves symbols and product info
     *
     * @param params
     */
    getSymbols(params: GetEngineSymbolsParams): Promise<EngineSymbolsResponse>;
    /**
     * Retrieves all market states as per the offchain engine. Same return interface as contracts
     */
    getAllMarkets(): Promise<GetEngineAllMarketsResponse>;
    /**
     * Retrieves all markets by chain id.
     */
    getEdgeAllMarkets(): Promise<Record<number, MarketWithProduct[]>>;
    /**
     * Retrieves all health groups (linked spot & perp products) from the engine
     */
    getHealthGroups(): Promise<GetEngineHealthGroupsResponse>;
    /**
     * Retrieves min deposit rates for all spot products from the engine
     */
    getMinDepositRates(): Promise<GetEngineMinDepositRatesResponse>;
    /**
     * Retrieves an order from the offchain engine
     *
     * @param params
     */
    getOrder(params: GetEngineOrderParams): Promise<GetEngineOrderResponse>;
    /**
     * Signs and validates with the engine that the order is valid to be submitted (i.e. does not violate health reqs)
     *
     * @param params
     */
    validateOrderParams(params: ValidateEngineOrderParams): Promise<ValidateEngineOrderResponse>;
    /**
     * Validates an existing signed order with the engine as a pre-check for health
     *
     * @param params
     */
    validateSignedOrderParams(params: ValidateSignedEngineOrderParams): Promise<ValidateEngineOrderResponse>;
    /**
     * Get all subaccount orders from the engine, per product ID
     * @param params
     */
    getSubaccountOrders(params: GetEngineSubaccountOrdersParams): Promise<GetEngineSubaccountOrdersResponse>;
    /**
     * Get all subaccount orders from the engine, for multiple products
     * @param params
     */
    getSubaccountMultiProductOrders(params: GetEngineSubaccountProductOrdersParams): Promise<GetEngineSubaccountProductOrdersResponse>;
    /**
     * Gets maker & taker fee rates for order fees
     * @param params
     */
    getSubaccountFeeRates(params: GetEngineSubaccountFeeRatesParams): Promise<GetEngineSubaccountFeeRatesResponse>;
    /**
     * Gets "price ticks" for a given market, useful for constructing liquidity levels at each price
     * @param params
     */
    getMarketLiquidity(params: GetEngineMarketLiquidityParams): Promise<GetEngineMarketLiquidityResponse>;
    /**
     * Retrieves the latest price for a given market
     * @param params
     */
    getMarketPrice(params: GetEngineMarketPriceParams): Promise<GetEngineMarketPriceResponse>;
    /**
     * Retrieves the latest prices for provided markets
     * @param params
     */
    getMarketPrices(params: GetEngineMarketPricesParams): Promise<GetEngineMarketPricesResponse>;
    /**
     * Retrieves the estimated max order size for a product
     * @param params
     */
    getMaxOrderSize(params: GetEngineMaxOrderSizeParams): Promise<GetEngineMaxOrderSizeResponse>;
    /**
     * Retrieves the estimated max withdrawal size for a product
     * @param params
     */
    getMaxWithdrawable(params: GetEngineMaxWithdrawableParams): Promise<GetEngineMaxWithdrawableResponse>;
    /**
     * Retrieves the estimated max base & quote amounts for minting LPs
     *
     * @param params
     */
    getMaxMintLpAmount(params: GetEngineMaxMintLpAmountParams): Promise<GetEngineMaxMintLpAmountResponse>;
    /**
     * Retrieves the estimated max quote amount for minting VLP.
     *
     * @param params
     */
    getMaxMintVlpAmount(params: GetEngineMaxMintVlpAmountParams): Promise<GetEngineMaxMintVlpAmountResponse>;
    /**
     * Gets the currently linked signer for the subaccount
     * @param params
     * @returns
     */
    getLinkedSigner(params: GetEngineLinkedSignerParams): Promise<GetEngineLinkedSignerResponse>;
    /**
     * Gets the insurance funds in USDC.
     * @returns
     */
    getInsurance(): Promise<GetEngineInsuranceResponse>;
    /**
     * Gets the orderbook contract address for a given product
     * @param productId
     * @returns
     */
    getOrderbookAddress(productId: number): Promise<string>;
}

export { EngineQueryClient };
