///
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, };