@fraserdarwent/xapi-node
Version:
This project is made possible to get data from Forex market, execute market or limit order with NodeJS/JS through WebSocket connection
84 lines (83 loc) • 2.09 kB
TypeScript
import { REQUEST_STATUS_FIELD, Time } from '..';
import { CMD_FIELD, PositionType, TransactionStatus, TransactionType } from '../enum/Enum';
export interface Transactions {
[transactionId: string]: Transaction<any, any>;
}
export interface MessagesQueue {
transactionId: string;
}
export interface TransactionResolveSocket<T> {
returnData: T;
time: Time;
transaction: Transaction<TransactionResolveSocket<T>, null>;
}
export interface TransactionResolveStream {
transaction: Transaction<null, null>;
}
export interface Transaction<Resolve, Reject> {
status: TransactionStatus;
command: string;
createdAt: Time;
transactionId: string;
type: TransactionType;
urgent: boolean;
request: {
sent: Time | null;
arguments: any;
json: string;
};
response: {
status: boolean | null;
received: Time | null;
json: any;
};
transactionPromise: {
resolve: null | ((resolve: Resolve | null) => void);
reject: null | ((reject: Reject | null) => void);
};
}
export interface AddTransaction {
command: string;
json: any;
args: any;
transactionId: string;
resolve: any;
reject: any;
urgent: boolean;
}
export interface TradePosition {
[key: string]: number | boolean | CMD_FIELD | string;
close_time: number;
closed: boolean;
cmd: CMD_FIELD;
comment: string;
commission: number;
customComment: string;
digits: number;
expiration: number;
margin_rate: number;
offset: number;
open_price: number;
open_time: number;
order: number;
order2: number;
position: number;
sl: number;
storage: number;
symbol: string;
tp: number;
volume: number;
position_type: PositionType;
}
export interface TradePositions {
[position: number]: {
value: TradePosition | null;
lastUpdated: Time;
};
}
export interface TradeStatus {
customComment: string | null;
message: string | null;
order: number;
requestStatus: REQUEST_STATUS_FIELD | null;
}