/// import EventEmitter from "events"; import { MarketPosition, NinjaTraderAction, NinjaTraderOrderType, NinjaTraderTif, OrderStatus } from "./enum"; import Watcher from "./files/watcher"; interface NinjaTraderOrderOptions { onUpdate?: (status: OrderStatus, order: OrderState) => void; onFilled?: (order: OrderState) => void; onInitialized?: (order: OrderState) => void; onSubmitted?: (order: OrderState) => void; onWorking?: (order: OrderState) => void; onAccepted?: (order: OrderState) => void; onChangeSubmitted?: (order: OrderState) => void; onCancelPending?: (order: OrderState) => void; onCancelled?: (order: OrderState) => void; onRejected?: (order: OrderState) => void; onPartiallyFilled?: (order: OrderState) => void; onTriggerPending?: (order: OrderState) => void; } interface CancelCommand { orderId: string; strategyId?: string; } interface ChangeCommand { quantity: number; limitPrice?: number; stopPrice: number; orderId: string; strategyId?: string; } interface ClosePositionCommand { account: string; instrument: string; } interface CloseStrategyCommand { strategyId: string; } interface PlaceCommand { account: string; instrument: string; action: NinjaTraderAction; quantity: number; orderType: NinjaTraderOrderType; limitPrice?: number; stopPrice?: number; tif: NinjaTraderTif; ocoId?: string; orderId?: string; strategy?: string; strategyId?: string; } interface ReversePositionCommand { account: string; instrument: string; action: NinjaTraderAction; quantity: number; orderType: NinjaTraderOrderType; limitPrice?: number; stopPrice?: number; tif: NinjaTraderTif; ocoId?: string; orderId?: string; strategy?: string; strategyId?: string; } interface NinjaTraderOptions { account: string; path?: string; } interface StateOptions { path: string; } interface OrderStateOptions extends StateOptions, NinjaTraderOrderOptions { orderId: string; account: string; } interface ConnectionStateOptions extends StateOptions { connection: string; onConnected?: () => void; onDisconnected?: () => void; onUpdate?: (connected: boolean) => void; } interface PositionUpdateStateOptions extends StateOptions { instrument: string; account: string; onUpdate?: (order: PositionUpdateState) => void; } interface OrderState { quantity: number; price: number; } interface ConnectionState { connected: boolean; } interface StateWatcher extends EventEmitter { path: string; watcher: Watcher; } interface PositionUpdateState { position: MarketPosition; quantity: number; price: number; } declare type NinjaTraderMarket = Omit; declare type NinjaTraderMarketOptions = NinjaTraderOrderOptions & NinjaTraderMarket; declare type NinjaTraderLimit = Omit & Required>; declare type NinjaTraderLimitOptions = NinjaTraderOrderOptions & NinjaTraderLimit; declare type NinjaTraderStop = Omit & Required>; declare type NinjaTraderStopOptions = NinjaTraderOrderOptions & NinjaTraderStop; declare type NinjaTraderStopLimit = Omit & Required>; declare type NinjaTraderStopLimitOptions = NinjaTraderOrderOptions & NinjaTraderStopLimit; declare type NinjaTraderCancel = CancelCommand; declare type NinjaTraderChange = ChangeCommand; declare type NinjaTraderClose = Omit & Partial>; declare type NinjaTraderCloseStrategy = CloseStrategyCommand; declare type NinjaTraderReverse = Omit & Partial>; declare type NinjaTraderAllCommands = ((CancelCommand | PlaceCommand | ClosePositionCommand | ChangeCommand | ClosePositionCommand | CloseStrategyCommand) & { command: string; }) | { command: string; }; export { CancelCommand, ChangeCommand, ClosePositionCommand, CloseStrategyCommand, PlaceCommand, ReversePositionCommand, OrderStateOptions, PositionUpdateStateOptions, ConnectionStateOptions, OrderState, ConnectionState, PositionUpdateState, StateWatcher, NinjaTraderOptions, NinjaTraderOrderOptions, NinjaTraderMarket, NinjaTraderMarketOptions, NinjaTraderLimit, NinjaTraderLimitOptions, NinjaTraderStop, NinjaTraderStopOptions, NinjaTraderStopLimit, NinjaTraderStopLimitOptions, NinjaTraderCancel, NinjaTraderChange, NinjaTraderClose, NinjaTraderCloseStrategy, NinjaTraderReverse, NinjaTraderAllCommands, };