import { SignedTx, EIP712BurnLpValues, EIP712BurnVlpValues, EIP712OrderCancellationValues, EIP712OrderValues, EIP712ProductOrdersCancellationValues, EIP712LinkSignerValues, EIP712LiquidateSubaccountValues, EIP712MintLpValues, EIP712MintVlpValues, EIP712TransferQuoteValues, EIP712WithdrawCollateralValues, EIP712OrderParams, EIP712IsolatedOrderParams } from '@vertex-protocol/contracts'; import { EngineServerOrderResponse } from './serverQueryTypes.js'; import './serverQueryModelTypes.js'; interface EngineServerPlaceOrderResponse { digest: string; } interface EngineServerCancelOrdersResponse { cancelled_orders: EngineServerOrderResponse[]; } interface EngineServerExecuteResponseDataByType { burn_lp: null; burn_vlp: null; cancel_and_place: EngineServerPlaceOrderResponse; cancel_orders: EngineServerCancelOrdersResponse; cancel_product_orders: EngineServerCancelOrdersResponse; link_signer: null; liquidate_subaccount: null; mint_lp: null; mint_vlp: null; place_isolated_order: EngineServerPlaceOrderResponse; place_order: EngineServerPlaceOrderResponse; transfer_quote: null; withdraw_collateral: null; } interface EngineServerExecuteSuccessResult { status: 'success'; data: EngineServerExecuteResponseDataByType[T]; signature: string; request_type: EngineServerExecuteResultRequestType; } interface EngineServerExecuteFailureResult { status: 'failure'; signature: string; error: string; error_code: number; request_type: EngineServerExecuteResultRequestType; } type EngineServerExecuteResult = EngineServerExecuteSuccessResult | EngineServerExecuteFailureResult; type EngineServerExecuteResultRequestType = { [K in keyof EngineServerExecuteRequestByType]: `execute_${K}`; }[keyof EngineServerExecuteRequestByType]; interface EngineServerPlaceOrderParams { id: number | null; product_id: number; order: EIP712OrderValues; signature: string; spot_leverage: boolean | null; } interface EngineServerPlaceIsolatedOrderParams { id: number | null; product_id: number; isolated_order: EIP712OrderValues; signature: string; borrow_margin: boolean | null; } type EngineServerCancelOrdersParams = SignedTx & { productIds: number[]; }>; type EngineServiceCancelAndPlaceParams = Omit & { cancel_tx: EngineServerCancelOrdersParams['tx']; cancel_signature: EngineServerCancelOrdersParams['signature']; place_order: EngineServerPlaceOrderParams; }; type WithSpotLeverage = T & { spot_leverage: boolean | null; }; interface EngineServerExecuteRequestByType { burn_lp: SignedTx; burn_vlp: SignedTx; cancel_and_place: EngineServiceCancelAndPlaceParams; cancel_orders: EngineServerCancelOrdersParams; cancel_product_orders: SignedTx & { productIds: number[]; }>; link_signer: SignedTx; liquidate_subaccount: SignedTx; mint_lp: WithSpotLeverage>; mint_vlp: WithSpotLeverage>; place_isolated_order: EngineServerPlaceIsolatedOrderParams; place_order: EngineServerPlaceOrderParams; transfer_quote: SignedTx; withdraw_collateral: WithSpotLeverage>; } type EngineServerExecuteRequestType = keyof EngineServerExecuteRequestByType; interface EngineServerExecutePlaceOrderPayload { payload: EngineServerExecuteRequestByType['place_order']; orderParams: EIP712OrderParams; } interface EngineServerExecutePlaceIsolatedOrderPayload { payload: EngineServerExecuteRequestByType['place_isolated_order']; orderParams: EIP712IsolatedOrderParams; } export type { EngineServerCancelOrdersParams, EngineServerCancelOrdersResponse, EngineServerExecuteFailureResult, EngineServerExecutePlaceIsolatedOrderPayload, EngineServerExecutePlaceOrderPayload, EngineServerExecuteRequestByType, EngineServerExecuteRequestType, EngineServerExecuteResponseDataByType, EngineServerExecuteResult, EngineServerExecuteSuccessResult, EngineServerPlaceIsolatedOrderParams, EngineServerPlaceOrderParams, EngineServerPlaceOrderResponse, EngineServiceCancelAndPlaceParams };