/**
 * MetaTrader account information (see https://metaapi.cloud/docs/client/models/metatraderAccountInformation/)
 */
export declare type MetatraderAccountInformation = {
    /**
     * Platform id (mt4 or mt5)
     */
    platform: string;
    /**
     * Broker name
     */
    broker: string;
    /**
     * Account base currency ISO code
     */
    currency: string;
    /**
     * Broker server name
     */
    server: string;
    /**
     * Account balance
     */
    balance: number;
    /**
     * Account liquidation value
     */
    equity: number;
    /**
     * Used margin
     */
    margin: number;
    /**
     * Free margin
     */
    freeMargin: number;
    /**
     * Account leverage coefficient
     */
    leverage: number;
    /**
     * Margin level calculated as % of equity/margin
     */
    marginLevel: number;
    /**
     * Flag indicating that trading is allowed
     */
    tradeAllowed: boolean;
    /**
     * Flag indicating that investor password was used (supported for g2 only)
     */
    investorMode?: boolean;
    /**
     * Margin calculation mode, one of ACCOUNT_MARGIN_MODE_EXCHANGE,
     * ACCOUNT_MARGIN_MODE_RETAIL_NETTING, ACCOUNT_MARGIN_MODE_RETAIL_HEDGING
     */
    marginMode: string;
    /**
     * Account owner name
     */
    name: string;
    /**
     * Account login
     */
    login: number;
    /**
     * Account credit in the deposit currency
     */
    credit: number;
    /**
     * Current exchange rate of account currency into account base currency (USD if you did not override it)
     */
    accountCurrencyExchangeRate?: number;
    /**
     * Account type, one of ACCOUNT_TRADE_MODE_DEMO,
     * ACCOUNT_TRADE_MODE_CONTEST, ACCOUNT_TRADE_MODE_REAL
     */
    type: string;
    /**
     * the number of decimal places in the account currency to be used for formatting values like balance,
     * equity, margin and profit.
     */
    currencyDigits: number;
};
/**
 * Stop loss threshold
 */
export declare type StopLossThreshold = {
    /**
     * Price threshold to activate next trailing SL at. When `units` is `ABSOLUTE_PRICE`, the value represents the final
     * price. When `RELATIVE*` units are used, the value represents an offset from the position open price in the
     * direction of the *profitable* price change (i.e. the `threshold` is added to the open price for buy positions and
     * decremented from the open price for sell positions).
     *
     * You may specify a negative value for this field if it makes any sense from business logic point of view for you.
     * It may be useful when the trailing stop loss is configured after position has opened and is in a loss,
     * so the negative threshold would result in a threshold being set in the direction of *profitable* price change
     * relative to the current price while being located in the *unprofitable* direction relatively to the open price
     * at the same time.
     */
    threshold: number;
    /**
     * Trailing stop loss value, which shall be interpreted differently according to `units` and `stopBasePrice` field
     * values.
     *
     * When `units` is `ABSOLUTE_PRICE`, the value represents the final price.
     *
     * When `RELATIVE*` `units` are used, the value represents an offset from the base price (as defined by
     * `stopPriceBase`).
     *
     * For the `CURRENT_PRICE` `stopPriceBase` value, the stop loss value is interpreted as a distance in the direction of
     * the *unprofitable* price change (i.e. the `stopLoss` is decremented from the current price for buy positions and
     * added to the current price for sell positions).
     *
     * For the `OPEN_PRICE` `stopPriceBase` value, the stop loss value is interpreted as a distance in the direction of
     * the *profitable* price change (i.e. the `stopLoss` is added to the open price for buy positions and decremented
     * from the open price for sell positions).
     *
     * You may specify negative value for `stopLoss` field to achieve the effect of reversing a relative stop loss
     * direction.
     *
     * On each trailing SL update, the system will apply the updated SL only if it is valid from the trading rules point
     * of view. This means that the new SL value must be below market price for buy positions and above market price for
     * sell positions. This also means that the new SL value must move in the *profitable* price direction compared to the
     * previous  SL value. If any of these conditions does not hold true, the trailing SL update will be skipped.
     */
    stopLoss: number;
};
/**
 * Threshold trailing stop loss configuration
 */
export declare type ThresholdTrailingStopLoss = {
    /**
     * Stop loss thresholds
     */
    thresholds: StopLossThreshold[];
    /**
     * Threshold stop loss units. ABSOLUTE_PRICE means the that the value of stop loss threshold fields contain a
     * final threshold & stop loss value. RELATIVE* means that the threshold fields value contains relative
     * threshold & stop loss values, expressed either in price, points, pips, account currency or balance percentage.
     * Default is ABSOLUTE_PRICE. One of ABSOLUTE_PRICE, RELATIVE_PRICE, RELATIVE_POINTS, RELATIVE_PIPS,
     * RELATIVE_CURRENCY, RELATIVE_BALANCE_PERCENTAGE
     */
    units?: string;
    /**
     * Defined the base price to calculate SL relative to for POSITION_MODIFY and pending order requests. Default
     * is OPEN_PRICE. One of CURRENT_PRICE, OPEN_PRICE
     */
    stopPriceBase?: string;
};
/**
 * Distance trailing stop loss configuration
 */
export declare type DistanceTrailingStopLoss = {
    /**
     * SL distance relative to current price, interpreted according to units field value
     */
    distance?: number;
    /**
     * Distance trailing stop loss units. RELATIVE_* means that the distance field value contains relative
     * stop loss expressed either in price, points, pips, account currency or balance percentage. Default is
     * RELATIVE_PRICE. One of RELATIVE_PRICE, RELATIVE_POINTS, RELATIVE_PIPS, RELATIVE_CURRENCY,
     * RELATIVE_BALANCE_PERCENTAGE
     */
    units?: string;
};
/**
 * Distance trailing stop loss configuration
 */
export declare type TrailingStopLoss = {
    /**
     * Distance trailing stop loss configuration. If both distance and threshold TSL are set, then the
     * resulting SL will be the one which is closest to the current price
     */
    distance?: DistanceTrailingStopLoss;
    /**
     * Threshold trailing stop loss configuration. If both distance and threshold TSL are set, then the
     * resulting SL will be the one which is closest to the current price
     */
    threshold?: ThresholdTrailingStopLoss;
};
/**
 * MetaTrader position
 */
export declare type MetatraderPosition = {
    /**
     * position id (ticket number)
     */
    id: number;
    /**
     * position type (one of POSITION_TYPE_BUY, POSITION_TYPE_SELL)
     */
    type: string;
    /**
     * position symbol
     */
    symbol: string;
    /**
     * position magic number, identifies the EA which opened the position
     */
    magic: number;
    /**
     * time position was opened at
     */
    time: Date;
    /**
     * time position was opened at, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * last position modification time
     */
    updateTime: Date;
    /**
     * position open price
     */
    openPrice: number;
    /**
     * current price
     */
    currentPrice: number;
    /**
     * current tick value
     */
    currentTickValue: number;
    /**
     * optional position stop loss price
     */
    stopLoss?: number;
    /**
     * optional position take profit price
     */
    takeProfit?: number;
    /**
     * position volume
     */
    volume: number;
    /**
     * position cumulative swap, including both swap from currently open position part (unrealized
     * swap) and swap from partially closed position part (realized swap)
     */
    swap: number;
    /**
     * swap from partially closed position part
     */
    realizedSwap: number;
    /**
     * swap resulting from currently open position part
     */
    unrealizedSwap: number;
    /**
     * position cumulative profit, including unrealized profit resulting from currently open position part (except swap
     * and commissions) and realized profit resulting from partially closed position part and including swap and
     * commissions
     */
    profit: number;
    /**
     * optional position comment. The sum of the line lengths of the comment and the clientId must be less than or equal
     * to 30 if both clientId and comment are specified, or 31 otherwise. Note, that MT4 accepts only latin1
     * symbols, while MT5 accepts UTF-16. For more information see https://metaapi.cloud/docs/client/clientIdUsage/
     */
    comment?: string;
    /**
     * optional client-assigned id. The id value can be assigned when submitting a trade and
     * will be present on position, history orders and history deals related to the trade. You can use this field to bind
     * your trades to objects in your application and then track trade progress. The sum of the line lengths of the
     * comment and the clientId must be less than or equal to 30 if both clientId and comment are specified, or 31
     * otherwise. For more information see https://metaapi.cloud/docs/client/clientIdUsage/
     */
    clientId?: string;
    /**
     * profit of the part of the position which is not yet closed, excluding swap and commissions
     */
    unrealizedProfit: number;
    /**
     * profit of the already closed part, including commissions and swap (realized and unrealized)
     */
    realizedProfit: number;
    /**
     * total position commissions, resulting both from currently open and closed position parts
     */
    commission: number;
    /**
     * position realized commission, resulting from partially closed position part
     */
    realizedCommission: number;
    /**
     * position unrealized commission, resulting from currently open position part
     */
    unrealizedCommission: number;
    /**
     * position opening reason. One of POSITION_REASON_CLIENT, POSITION_REASON_EXPERT,
     * POSITION_REASON_MOBILE, POSITION_REASON_WEB, POSITION_REASON_UNKNOWN. See
     * https://www.mql5.com/en/docs/constants/tradingconstants/positionproperties#enum_position_reason',
     */
    reason: string;
    /**
     * current exchange rate of account currency into account base
     * currency (USD if you did not override it)
     */
    accountCurrencyExchangeRate?: number;
    /**
     * current comment value on broker side (possibly overriden by the broker)
     */
    brokerComment?: string;
};
/**
 * MetaTrader order
 */
export declare type MetatraderOrder = {
    /**
     * order id (ticket number)
     */
    id: number;
    /**
     * order type (one of ORDER_TYPE_SELL, ORDER_TYPE_BUY, ORDER_TYPE_BUY_LIMIT,
     * ORDER_TYPE_SELL_LIMIT, ORDER_TYPE_BUY_STOP, ORDER_TYPE_SELL_STOP, ORDER_TYPE_BUY_STOP_LIMIT,
     * ORDER_TYPE_SELL_STOP_LIMIT, ORDER_TYPE_CLOSE_BY). See
     * https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties#enum_order_type
     */
    type: string;
    /**
     * order state one of (ORDER_STATE_STARTED, ORDER_STATE_PLACED, ORDER_STATE_CANCELED,
     * ORDER_STATE_PARTIAL, ORDER_STATE_FILLED, ORDER_STATE_REJECTED, ORDER_STATE_EXPIRED, ORDER_STATE_REQUEST_ADD,
     * ORDER_STATE_REQUEST_MODIFY, ORDER_STATE_REQUEST_CANCEL). See
     * https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties#enum_order_state
     */
    state: string;
    /**
     * order magic number, identifies the EA which created the order
     */
    magic: number;
    /**
     * time order was created at
     */
    time: Date;
    /**
     * time time order was created at, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * time order was executed or canceled at. Will be specified for
     * completed orders only
     */
    doneTime?: Date;
    /**
     * time order was executed or canceled at, in broker timezone,
     * YYYY-MM-DD HH:mm:ss.SSS format. Will be specified for completed orders only
     */
    doneBrokerTime?: string;
    /**
     * order symbol
     */
    symbol: string;
    /**
     * order open price (market price for market orders, limit price for limit orders or stop
     * price for stop orders)
     */
    openPrice: number;
    /**
     * current price, filled for pending orders only. Not filled for history orders.
     */
    currentPrice?: number;
    /**
     * order stop loss price
     */
    stopLoss?: number;
    /**
     * order take profit price
     */
    takeProfit?: number;
    /**
     * order requested quantity
     */
    volume: number;
    /**
     * order remaining quantity, i.e. requested quantity - filled quantity
     */
    currentVolume: number;
    /**
     * order position id. Present only if the order has a position attached to it
     */
    positionId: string;
    /**
     * order comment. The sum of the line lengths of the comment and the clientId must be less than or equal
     * to 30 if both clientId and comment are specified, or 31 otherwise. Note, that MT4 accepts only latin1
     * symbols, while MT5 accepts UTF-16. For more information see https://metaapi.cloud/docs/client/clientIdUsage/
     */
    comment?: string;
    /**
     * current comment value on broker side (possibly overriden by the broker)
     */
    brokerComment?: string;
    /**
     * client-assigned id. The id value can be assigned when submitting a trade and
     * will be present on position, history orders and history deals related to the trade. You can use this field to bind
     * your trades to objects in your application and then track trade progress. The sum of the line lengths of the
     * comment and the clientId must be less than or equal to 30 if both clientId and comment are specified, or 31
     * otherwise. For more information see https://metaapi.cloud/docs/client/clientIdUsage/
     */
    clientId?: string;
    /**
     * platform id (mt4 or mt5)
     */
    platform: string;
    /**
     * order opening reason. One of ORDER_REASON_CLIENT, ORDER_REASON_MOBILE, ORDER_REASON_WEB,
     * ORDER_REASON_EXPERT, ORDER_REASON_SL, ORDER_REASON_TP, ORDER_REASON_SO, ORDER_REASON_UNKNOWN. See
     * https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties#enum_order_reason.
     */
    reason: string;
    /**
     * order filling mode. One of ORDER_FILLING_FOK, ORDER_FILLING_IOC,
     * ORDER_FILLING_RETURN. See
     * https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties#enum_order_type_filling.
     */
    fillingMode: string;
    /**
     * order expiration type. One of ORDER_TIME_GTC, ORDER_TIME_DAY,
     * ORDER_TIME_SPECIFIED, ORDER_TIME_SPECIFIED_DAY. See
     * https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties#enum_order_type_time
     */
    expirationType: string;
    /**
     * optional order expiration time
     */
    expirationTime: Date;
    /**
     * current exchange rate of account currency into account base
     * currency (USD if you did not override it)
     */
    accountCurrencyExchangeRate?: number;
    /**
     * identifier of an opposite position used for closing by order
     * ORDER_TYPE_CLOSE_BY
     */
    closeByPositionId?: string;
    /**
     * the Limit order price for the StopLimit order
     */
    stopLimitPrice?: number;
};
/**
 * MetaTrader history orders search query response
 */
export declare type MetatraderHistoryOrders = {
    /**
     * array of history orders returned
     */
    historyOrders: Array<MetatraderOrder>;
    /**
     * flag indicating that history order initial synchronization is still in progress
     * and thus search results may be incomplete
     */
    synchronizing: boolean;
};
/**
 * MetaTrader history deals search query response
 */
export declare type MetatraderDeals = {
    /**
     * array of history deals returned
     */
    deals: Array<MetatraderDeal>;
    /**
     * flag indicating that deal initial synchronization is still in progress
     * and thus search results may be incomplete
     */
    synchronizing: boolean;
};
/**
 * MetaTrader deal
 */
export declare type MetatraderDeal = {
    /**
     * deal id (ticket number)
     */
    id: string;
    /**
     * deal type (one of DEAL_TYPE_BUY, DEAL_TYPE_SELL, DEAL_TYPE_BALANCE, DEAL_TYPE_CREDIT,
     * DEAL_TYPE_CHARGE, DEAL_TYPE_CORRECTION, DEAL_TYPE_BONUS, DEAL_TYPE_COMMISSION, DEAL_TYPE_COMMISSION_DAILY,
     * DEAL_TYPE_COMMISSION_MONTHLY, DEAL_TYPE_COMMISSION_AGENT_DAILY, DEAL_TYPE_COMMISSION_AGENT_MONTHLY,
     * DEAL_TYPE_INTEREST, DEAL_TYPE_BUY_CANCELED, DEAL_TYPE_SELL_CANCELED, DEAL_DIVIDEND, DEAL_DIVIDEND_FRANKED,
     * DEAL_TAX). See https://www.mql5.com/en/docs/constants/tradingconstants/dealproperties#enum_deal_type
     */
    type: string;
    /**
     * deal entry type (one of DEAL_ENTRY_IN, DEAL_ENTRY_OUT, DEAL_ENTRY_INOUT,
     * DEAL_ENTRY_OUT_BY). See https://www.mql5.com/en/docs/constants/tradingconstants/dealproperties#enum_deal_entry
     */
    entryType: string;
    /**
     * symbol deal relates to
     */
    symbol?: string;
    /**
     * deal magic number, identifies the EA which initiated the deal
     */
    magic?: number;
    /**
     * time the deal was conducted at
     */
    time: Date;
    /**
     * time time the deal was conducted at, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * deal volume
     */
    volume?: number;
    /**
     * the price the deal was conducted at
     */
    price?: number;
    /**
     * deal commission
     */
    commission?: number;
    /**
     * deal swap
     */
    swap?: number;
    /**
     * deal profit
     */
    profit: number;
    /**
     * id of position the deal relates to
     */
    positionId?: string;
    /**
     * id of order the deal relates to
     */
    orderId?: string;
    /**
     * deal comment. The sum of the line lengths of the comment and the clientId must be less than or equal
     * to 30 if both clientId and comment are specified, or 31 otherwise. Note, that MT4 accepts only latin1
     * symbols, while MT5 accepts UTF-16. For more information see https://metaapi.cloud/docs/client/clientIdUsage/
     */
    comment?: string;
    /**
     * current comment value on broker side (possibly overriden by the broker)
     */
    brokerComment?: string;
    /**
     * client-assigned id. The id value can be assigned when submitting a trade and
     * will be present on position, history orders and history deals related to the trade. You can use this field to bind
     * your trades to objects in your application and then track trade progress. The sum of the line lengths of the
     * comment and the clientId must be less than or equal to 26. For more information see
     * https://metaapi.cloud/docs/client/clientIdUsage/
     */
    clientId: string;
    /**
     * platform id (mt4 or mt5)
     */
    platform: string;
    /**
     * optional deal execution reason. One of DEAL_REASON_CLIENT, DEAL_REASON_MOBILE,
     * DEAL_REASON_WEB, DEAL_REASON_EXPERT, DEAL_REASON_SL, DEAL_REASON_TP, DEAL_REASON_SO, DEAL_REASON_ROLLOVER,
     * DEAL_REASON_VMARGIN, DEAL_REASON_SPLIT, DEAL_REASON_UNKNOWN. See
     * https://www.mql5.com/en/docs/constants/tradingconstants/dealproperties#enum_deal_reason.
     */
    reason?: string;
    /**
     * current exchange rate of account currency into account base
     * currency (USD if you did not override it)
     */
    accountCurrencyExchangeRate?: number;
    /**
     * deal stop loss. For MT5 opening deal this is the SL of the order opening the
     * position. For MT4 deals or MT5 closing deal this is the last known position SL.
     */
    stopLoss?: number;
    /**
     * deal take profit. For MT5 opening deal this is the TP of the order opening the
     * position. For MT4 deals or MT5 closing deal this is the last known position TP.
     */
    takeProfit?: number;
};
/**
 * MetaTrader trade response
 */
export declare type MetatraderTradeResponse = {
    /**
     * numeric response code, see
     * https://www.mql5.com/en/docs/constants/errorswarnings/enum_trade_return_codes and
     * https://book.mql4.com/appendix/errors. Response codes which indicate success are 0, 10008-10010, 10025. The rest
     * codes are errors
     */
    numericCode: number;
    /**
     * string response code, see
     * https://www.mql5.com/en/docs/constants/errorswarnings/enum_trade_return_codes and
     * https://book.mql4.com/appendix/errors. Response codes which indicate success are ERR_NO_ERROR,
     * TRADE_RETCODE_PLACED, TRADE_RETCODE_DONE, TRADE_RETCODE_DONE_PARTIAL, TRADE_RETCODE_NO_CHANGES. The rest codes are
     * errors.
     */
    stringCode: string;
    /**
     * human-readable response message
     */
    message: string;
    /**
     * order id which was created/modified during the trade
     */
    orderId: string;
    /**
     * position id which was modified during the trade
     */
    positionId: string;
};
/**
 * Market data subscription
 */
export declare type MarketDataSubscription = {
    /**
     * subscription type, one of quotes, candles, ticks, or marketDepth
     */
    type: string;
    /**
     * when subscription type is candles, defines the timeframe according to which the
     * candles must be generated. Allowed values for MT5 are 1m, 2m, 3m, 4m, 5m, 6m, 10m, 12m, 15m, 20m, 30m, 1h, 2h, 3h,
     * 4h, 6h, 8h, 12h, 1d, 1w, 1mn. Allowed values for MT4 are 1m, 5m, 15m 30m, 1h, 4h, 1d, 1w, 1mn. Required when
     * subscribing to candles
     */
    timeframe?: string;
    /**
     * defines how frequently the terminal will stream data to client. If not
     * set, then the value configured in account will be used
     */
    intervalInMilliseconds?: number;
};
/**
 * Market data unsubscription
 */
export declare type MarketDataUnsubscription = {
    /**
     * subscription type, one of quotes, candles, ticks, or marketDepth
     */
    type: string;
    /**
     * when subscription type is candles, defines the timeframe to unsubscribe from. Allowed values for MT5 are 1m, 2m,
     * 3m, 4m, 5m, 6m, 10m, 12m, 15m, 20m, 30m, 1h, 2h, 3h, 4h, 6h, 8h, 12h, 1d, 1w, 1mn. Allowed values for MT4 are 1m,
     * 5m, 15m 30m, 1h, 4h, 1d, 1w, 1mn. If not specified, unsubscribes from all subscribed timeframes
     */
    timeframe?: string;
};
/**
 * MetaTrader symbol specification. Contains symbol specification (see
 * https://metaapi.cloud/docs/client/models/metatraderSymbolSpecification/)
 */
export declare type MetatraderSymbolSpecification = {
    /**
     * symbol (e.g. a currency pair or an index)
     */
    symbol: string;
    /**
     * tick size
     */
    tickSize: number;
    /**
     * minimum order volume for the symbol
     */
    minVolume: number;
    /**
     * maximum order volume for the symbol
     */
    maxVolume: number;
    /**
     * order volume step for the symbol
     */
    volumeStep: number;
    /**
     * of allowed order filling modes. Can contain SYMBOL_FILLING_FOK, SYMBOL_FILLING_IOC, SYMBOL_FILLING_BOC,
     * SYMBOL_FILLING_RETURN or their combination. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#symbol_filling_mode for more details.
     */
    fillingModes: Array<string>;
    /**
     * execution mode. Possible values are SYMBOL_TRADE_EXECUTION_REQUEST,
     * SYMBOL_TRADE_EXECUTION_INSTANT, SYMBOL_TRADE_EXECUTION_MARKET, SYMBOL_TRADE_EXECUTION_EXCHANGE. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#enum_symbol_trade_execution for more
     * details.
     */
    deal: string;
    /**
     * trade contract size
     */
    contractSize: number;
    /**
     * quote sessions, indexed by day of week
     */
    quoteSessions: MetatraderSessions;
    /**
     * trade sessions, indexed by day of week
     */
    tradeSessions: MetatraderSessions;
    /**
     * order execution type. Possible values are SYMBOL_TRADE_MODE_DISABLED,
     * SYMBOL_TRADE_MODE_LONGONLY, SYMBOL_TRADE_MODE_SHORTONLY, SYMBOL_TRADE_MODE_CLOSEONLY, SYMBOL_TRADE_MODE_FULL. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#enum_symbol_trade_mode for more
     * details
     */
    tradeMode?: string;
    /**
     * accrued interest – accumulated coupon interest, i.e. part of the coupon
     * interest calculated in proportion to the number of days since the coupon bond issuance or the last coupon interest
     * payment
     */
    bondAccruedInterest?: number;
    /**
     * face value – initial bond value set by the issuer
     */
    bondFaceValue?: number;
    /**
     * the strike price of an option. The price at which an option buyer can buy (in a
     * Call option) or sell (in a Put option) the underlying asset, and the option seller is obliged to sell or buy the
     * appropriate amount of the underlying asset.
     */
    optionStrike?: number;
    /**
     * option/warrant sensitivity shows by how many points the price of the
     * option's underlying asset should change so that the price of the option changes by one point
     */
    optionPriceSensivity?: number;
    /**
     * liquidity Rate is the share of the asset that can be used for the margin
     */
    liquidityRate?: number;
    /**
     * initial margin means the amount in the margin currency required for opening a
     * position with the volume of one lot. It is used for checking a client's assets when he or she enters the market
     */
    initialMargin: number;
    /**
     * the maintenance margin. If it is set, it sets the margin amount in the margin
     * currency of the symbol, charged from one lot. It is used for checking a client's assets when his/her account state
     * changes. If the maintenance margin is equal to 0, the initial margin is used
     */
    maintenanceMargin: number;
    /**
     * contract size or margin value per one lot of hedged positions (oppositely directed
     * positions of one symbol). Two margin calculation methods are possible for hedged positions. The calculation method
     * is defined by the broker
     */
    hedgedMargin?: number;
    /**
     * calculating hedging margin using the larger leg (Buy or Sell)
     */
    hedgedMarginUsesLargerLeg?: boolean;
    /**
     * margin currency
     */
    marginCurrency: string;
    /**
     * contract price calculation mode. One of SYMBOL_CALC_MODE_UNKNOWN,
     * SYMBOL_CALC_MODE_FOREX, SYMBOL_CALC_MODE_FOREX_NO_LEVERAGE, SYMBOL_CALC_MODE_FUTURES, SYMBOL_CALC_MODE_CFD,
     * SYMBOL_CALC_MODE_CFDINDEX, SYMBOL_CALC_MODE_CFDLEVERAGE, SYMBOL_CALC_MODE_EXCH_STOCKS,
     * SYMBOL_CALC_MODE_EXCH_FUTURES, SYMBOL_CALC_MODE_EXCH_FUTURES_FORTS, SYMBOL_CALC_MODE_EXCH_BONDS,
     * SYMBOL_CALC_MODE_EXCH_STOCKS_MOEX, SYMBOL_CALC_MODE_EXCH_BONDS_MOEX, SYMBOL_CALC_MODE_SERV_COLLATERAL. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#enum_symbol_calc_mode for more details
     */
    priceCalculationMode: string;
    /**
     * base currency
     */
    baseCurrency: string;
    /**
     * profit currency
     */
    profitCurrency?: string;
    /**
     * swap calculation model. Allowed values are SYMBOL_SWAP_MODE_DISABLED,
     * SYMBOL_SWAP_MODE_POINTS, SYMBOL_SWAP_MODE_CURRENCY_SYMBOL, SYMBOL_SWAP_MODE_CURRENCY_MARGIN,
     * SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT, SYMBOL_SWAP_MODE_INTEREST_CURRENT, SYMBOL_SWAP_MODE_INTEREST_OPEN,
     * SYMBOL_SWAP_MODE_REOPEN_CURRENT, SYMBOL_SWAP_MODE_REOPEN_BID. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#enum_symbol_swap_mode for more details
     */
    swapMode: string;
    /**
     * long swap value
     */
    swapLong?: number;
    /**
     * short swap value
     */
    swapShort?: number;
    /**
     * symbol swap rates for each day of the week, starting with Sunday. Only available for MT5 accounts.
     */
    swapRates?: number[];
    /**
     * day of week to charge 3 days swap rollover. Allowed values are SUNDAY,
     * MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, NONE
     */
    swapRollover3Days?: string;
    /**
     * allowed order expiration modes. Allowed values are
     * SYMBOL_EXPIRATION_GTC, SYMBOL_EXPIRATION_DAY, SYMBOL_EXPIRATION_SPECIFIED, SYMBOL_EXPIRATION_SPECIFIED_DAY.
     * See https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#symbol_expiration_mode for more
     * details
     */
    allowedExpirationModes: Array<string>;
    /**
     * allowed order types. Allowed values are SYMBOL_ORDER_MARKET,
     * SYMBOL_ORDER_LIMIT, SYMBOL_ORDER_STOP, SYMBOL_ORDER_STOP_LIMIT, SYMBOL_ORDER_SL, SYMBOL_ORDER_TP,
     * SYMBOL_ORDER_CLOSEBY. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#symbol_order_mode for more details
     */
    allowedOrderTypes: Array<string>;
    /**
     * if the expirationMode property is set to SYMBOL_EXPIRATION_GTC (good till
     * canceled), the expiration of pending orders, as well as of Stop Loss/Take Profit orders should be additionally set
     * using this enumeration. Allowed values are SYMBOL_ORDERS_GTC, SYMBOL_ORDERS_DAILY,
     * SYMBOL_ORDERS_DAILY_EXCLUDING_STOPS. See
     * https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants#enum_symbol_order_gtc_mode for more
     * details
     */
    orderGTCMode?: string;
    /**
     * digits after a decimal point
     */
    digits: number;
    /**
     * point size
     */
    point: number;
    /**
     * path in the symbol tree
     */
    path?: string;
    /**
     * symbol description
     */
    description: string;
    /**
     * date of the symbol trade beginning (usually used for futures)
     */
    startTime?: Date;
    /**
     * date of the symbol trade end (usually used for futures)
     */
    expirationTime?: Date;
    /**
     * size of a pip. Pip size is defined for spot and CFD symbols only
     */
    pipSize?: number;
    /**
     * minimal distance from the current market price to stop price (SL, TP, open price) in
     * points. The SL, TP, open price can not be placed closer to market price than this distance
     */
    stopsLevel: number;
    /**
     * distance to freeze trade operations in points
     */
    freezeLevel: number;
};
/**
 * MetaTrader symbol price. Contains current price for a symbol (see
 * https://metaapi.cloud/docs/client/models/metatraderSymbolPrice/)
 */
export declare type MetatraderSymbolPrice = {
    /**
     * symbol (e.g. a currency pair or an index)
     */
    symbol: string;
    /**
     * bid price
     */
    bid: number;
    /**
     * ask price
     */
    ask: number;
    /**
     * tick value for a profitable position
     */
    profitTickValue: number;
    /**
     * tick value for a losing position
     */
    lossTickValue: number;
    /**
     * current exchange rate of account currency into account base
     * currency (USD if you did not override it)
     */
    accountCurrencyExchangeRate?: number;
    /**
     * quote time, in ISO format
     */
    time: Date;
    /**
     * time quote time, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
};
/**
 * MetaTrader candle
 */
export declare type MetatraderCandle = {
    /**
     * symbol (e.g. currency pair or an index)
     */
    symbol: string;
    /**
     * timeframe candle was generated for, e.g. 1h. One of 1m, 2m, 3m, 4m, 5m, 6m, 10m, 12m,
     * 15m, 20m, 30m, 1h, 2h, 3h, 4h, 6h, 8h, 12h, 1d, 1w, 1mn
     */
    timeframe: string;
    /**
     * candle opening time
     */
    time: Date;
    /**
     * candle opening time, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * open price
     */
    open: number;
    /**
     * high price
     */
    high: number;
    /**
     * low price
     */
    low: number;
    /**
     * close price
     */
    close: number;
    /**
     * tick volume, i.e. number of ticks inside the candle
     */
    tickVolume: number;
    /**
     * spread in points
     */
    spread: number;
    /**
     * trade volume
     */
    volume: number;
};
/**
 * MetaTrader tick data
 */
export declare type MetatraderTick = {
    /**
     * symbol (e.g. a currency pair or an index)
     */
    symbol: string;
    /**
     * time
     */
    time: Date;
    /**
     * time, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * bid price
     */
    bid?: number;
    /**
     * ask price
     */
    ask?: number;
    /**
     * last deal price
     */
    last?: number;
    /**
     * volume for the current last deal price
     */
    volume?: number;
    /**
     * is tick a result of buy or sell deal, one of buy or sell
     */
    side?: string;
};
/**
 * MetaTrader order book
 */
export declare type MetatraderBook = {
    /**
     * symbol (e.g. a currency pair or an index)
     */
    symbol: string;
    /**
     * time
     */
    time: Date;
    /**
     * time, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * list of order book entries
     */
    book: Array<MetatraderBookEntry>;
};
/**
 *  MetaTrader trade
 */
export declare type MetatraderTrade = {
    /**
     * type, enum: ORDER_TYPE_SELL, ORDER_TYPE_BUY, ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT,ORDER_TYPE_BUY_STOP,
     * ORDER_TYPE_SELL_STOP, POSITION_MODIFY, POSITION_PARTIAL, POSITION_CLOSE_ID,POSITIONS_CLOSE_SYMBOL, ORDER_MODIFY,
     * ORDER_CANCEL, POSITION_CLOSE_BY, ORDER_TYPE_BUY_STOP_LIMIT, ORDER_TYPE_SELL_STOP_LIMIT.
     */
    actionType: string;
    /**
     * symbol to trade
     */
    symbol?: string;
    /**
     * order volume
     */
    volume?: number;
    /**
     * order limit or stop price
     */
    openPrice?: number;
    /**
     * stop loss price
     */
    stopLoss?: number;
    /**
     * take profit price
     */
    takeProfit?: number;
    /**
     * stop loss units. ABSOLUTE_PRICE means the that the value of stopLoss field is a final stop loss value. RELATIVE_*
     * means that the stopLoss field value contains relative stop loss expressed either in price, points, account currency
     * or balance percentage. Default is ABSOLUTE_PRICE. enum: ABSOLUTE_PRICE, RELATIVE_PRICE, RELATIVE_POINTS,
     * RELATIVE_CURRENCY, RELATIVE_BALANCE_PERCENTAGE
     */
    stopLossUnits?: string;
    /**
     * take profit units. ABSOLUTE_PRICE means the that the value of takeProfit field is a final take profit value.
     * RELATIVE_* means that the takeProfit field value contains relative take profit expressed either in price, points,
     * account currency or balance percentage. Default is ABSOLUTE_PRICE. enum: ABSOLUTE_PRICE, RELATIVE_PRICE,
     * RELATIVE_POINTS, RELATIVE_CURRENCY, RELATIVE_BALANCE_PERCENTAGE
     */
    takeProfitUnits?: string;
    /**
     * order id, must be specified for order modification commands
     */
    orderId?: string;
    /**
     * position id, must be specified for position modification commands
     */
    positionId?: string;
    /**
     * order comment. The sum of the line lengths of the comment and the clientId must be less than or equal
     * to 30 if both clientId and comment are specified, or 31 otherwise. Note, that MT4 accepts only latin1
     * symbols, while MT5 accepts UTF-16. For more information see clientId usage
     */
    comment?: string;
    /**
     * client-assigned id. The id value can be assigned when submitting a trade and will be present on position, history
     * orders and history deals related to the trade. You can use this field to bind your trades to objects in your
     * application and then track trade progress. The sum of the line lengths of the comment and the clientId must be less
     * than or equal to 30 if both clientId and comment are specified, or 31 otherwise. For more information see
     * https://metaapi.cloud/docs/client/clientIdUsage/
     */
    clientId?: string;
    /**
     * magic number (expert adviser id)
     */
    magic?: number;
    /**
     * slippage in points. Should be greater or equal to zero. In not set, default value specified in account entity will
     * be used. Slippage is ignored on position modification, order modification and order cancellation calls. Slippage is
     * also ignored if execution mode set in symbol specification is SYMBOL_TRADE_EXECUTION_MARKET.
     */
    slippage?: number;
    /**
     * allowed filling modes in the order of priority. Default is to allow all filling modes and prefer ORDER_FILLING_FOK
     * over ORDER_FILLING_IOC. See
     * https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties#enum_order_type_filling for extra
     * explanation.
     */
    fillingModes?: Array<string>;
    /**
     * pending order expiration settings. See Pending order expiration settings section.
     */
    expiration?: Object;
    /**
     * identifier of an opposite position used for closing by order, required in case actionType is POSITION_CLOSE_BY
     */
    closeByPositionId?: string;
    /**
     * optional price at which the StopLimit order will be placed. Required for stop limit orders
     */
    stopLimitPrice?: number;
};
/**
 * Metatrader trade or quote session
 */
export declare type MetatraderSession = {
    /**
     * session start time, in hh.mm.ss.SSS format
     */
    from: string;
    /**
     * session end time, in hh.mm.ss.SSS format
     */
    to: string;
};
/**
 * Metatrader trade or quote session container, indexed by weekday
 */
export declare type MetatraderSessions = {
    /**
     * array of sessions for SUNDAY
     */
    SUNDAY?: Array<MetatraderSession>;
    /**
     * array of sessions for MONDAY
     */
    MONDAY?: Array<MetatraderSession>;
    /**
     * array of sessions for TUESDAY
     */
    TUESDAY?: Array<MetatraderSession>;
    /**
     * array of sessions for WEDNESDAY
     */
    WEDNESDAY?: Array<MetatraderSession>;
    /**
     * array of sessions for THURSDAY
     */
    THURSDAY?: Array<MetatraderSession>;
    /**
     * array of sessions for FRIDAY
     */
    FRIDAY?: Array<MetatraderSession>;
    /**
     * array of sessions for SATURDAY
     */
    SATURDAY?: Array<MetatraderSession>;
};
/**
 * MetaTrader order book entry
 */
export declare type MetatraderBookEntry = {
    /**
     * entry type, one of BOOK_TYPE_SELL, BOOK_TYPE_BUY, BOOK_TYPE_SELL_MARKET,
     * BOOK_TYPE_BUY_MARKET
     */
    type: string;
    /**
     * price
     */
    price: number;
    /**
     * volume
     */
    volume: number;
};
/**
 * Current server time (see https://metaapi.cloud/docs/client/models/serverTime/)
 */
export declare type ServerTime = {
    /**
     * Current server time
     */
    time: Date;
    /**
     * Current broker time, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    brokerTime: string;
    /**
     * Last quote time
     */
    lastQuoteTime?: Date;
    /**
     * Last quote time, in broker timezone, YYYY-MM-DD HH:mm:ss.SSS format
     */
    lastQuoteBrokerTime?: string;
};
/**
 * Margin required to open a trade (see https://metaapi.cloud/docs/client/models/margin/)
 */
export declare type Margin = {
    /**
     * Margin required to open a trade. If margin can not be calculated, then this field is not defined
     */
    margin?: number;
};
/**
 * Contains order to calculate margin for (see https://metaapi.cloud/docs/client/models/marginOrder/)
 */
export declare type MarginOrder = {
    /**
     * Order symbol
     */
    symbol: string;
    /**
     * Order type, one of ORDER_TYPE_BUY or ORDER_TYPE_SELL
     */
    type: string;
    /**
     * Order volume, must be greater than 0
     */
    volume: number;
    /**
     * Order open price, must be greater than 0
     */
    openPrice: number;
};
/**
 * Refreshed quotes and some of account information
 */
export declare type RefreshedQuotes = {
    /**
     * Refreshed quotes
     */
    quotes: MetatraderSymbolPrice[];
    /**
     * Actual account balance
     */
    balance: number;
    /**
     * Actual account equity
     */
    equity: number;
    /**
     * Actual account margin
     */
    margin: number;
    /**
     * Actual account free margin
     */
    freeMargin: number;
    /**
     * Actual account margin level
     */
    marginLevel: number;
    /**
     * Actual account currency exchange rate
     */
    accountCurrencyExchangeRate: number;
};
/**
 * Options for `getAccountInformation` rpc request
 */
export type GetAccountInformationOptions = RefreshTerminalStateFlag;
/**
 * Options for `getPositions` rpc request
 */
export type GetPositionsOptions = RefreshTerminalStateFlag;
/**
 * Options for `getPosition` rpc request
 */
export type GetPositionOptions = RefreshTerminalStateFlag;
/**
 * Options for `getOrders` rpc request
 */
export type GetOrdersOptions = RefreshTerminalStateFlag;
/**
 * Options for `getOrder` rpc request
 */
export type GetOrderOptions = RefreshTerminalStateFlag;
/**
 * Refresh terminal state option flag for some requests
 */
export type RefreshTerminalStateFlag = {
    /**
     * Whether to refresh terminal state before retrieving the data, slowing down the request
     */
    refreshTerminalState?: boolean;
};
