import moment from 'moment';
/**
 * Strategy id
 */
export declare type StrategyId = {
    /**
     * strategy id
     */
    id: string;
};
/**
 * Strategy signal delay
 */
export declare type StrategySignalDelay = {
    /**
     * min extra trading signal delay value expressed in seconds
     */
    minInSeconds: number;
    /**
     * max extra trading signal delay value expressed in seconds
     */
    maxInSeconds: number;
};
/**
 * CopyFactory strategy subscriptions
 */
export declare type CopyFactoryStrategySubscription = {
    /**
     * id of the strategy to subscribe to
     */
    strategyId: string;
    /**
     * subscription multiplier, default is 1x
     */
    multiplier?: number;
    /**
     * flag indicating that pending orders should not be copied. Default
     * is to copy pending orders
     */
    skipPendingOrders?: boolean;
    /**
     * setting wich instructs the application not to open new positions. by-symbol
     * means that it is still allowed to open new positions with a symbol equal to the symbol of an existing strategy
     * position (can be used to gracefuly exit strategies trading in netting mode or placing a series of related trades
     * per symbol). immediately means to close all positions immediately. One of 'by-position', 'by-symbol', 'immediately'
     */
    closeOnly?: string;
    /**
     * max risk per trade, expressed as a fraction of 1. If trade has a SL, the
     * trade size will be adjusted to match the risk limit. If not, the trade SL will be applied according to the risk
     * limit
     */
    maxTradeRisk?: number;
    /**
     * flag indicating that the strategy should be copied in a reverse direction
     */
    reverse?: boolean;
    /**
     * setting indicating whether to enable automatic trade
     * correlation reduction. Possible settings are not specified (disable correlation risk restrictions),
     * by-strategy (limit correlations for the strategy) or by-account (limit correlations for the account)
     */
    reduceCorrelations?: string;
    /**
     * symbol filter which can be used to copy only specific
     * symbols or exclude some symbols from copying
     */
    symbolFilter?: CopyFactoryStrategySymbolFilter;
    /**
     * news risk filter configuration
     */
    newsFilter?: CopyFactoryStrategyNewsFilter;
    /**
     * strategy risk limits. You can configure trading to be
     * stopped once total drawdown generated during specific period is exceeded. Can be specified either for balance or
     * equity drawdown
     */
    riskLimits?: Array<CopyFactoryStrategyRiskLimit>;
    /**
     * stop loss value restriction
     */
    maxStopLoss?: CopyFactoryStrategyMaxStopLoss;
    /**
     * setting indicating maximum leverage allowed when opening a new positions.
     * Any trade which results in a higher leverage will be discarded
     */
    maxLeverage?: number;
    /**
     * defines how symbol name should be changed when
     * trading (e.g. when broker uses symbol names with unusual suffixes). By default this setting is disabled and the
     * trades are copied using signal source symbol name
     */
    symbolMapping?: Array<CopyFactoryStrategySymbolMapping>;
    /**
     * Trade size scaling settings. By default the
     * trade size on strategy subscriber side will be scaled according to balance to preserve risk.
     */
    tradeSizeScaling?: CopyFactoryStrategyTradeSizeScaling;
    /**
     * flag indicating whether stop loss should be copied. Default is to copy stop loss.
     */
    copyStopLoss?: boolean;
    /**
     * flag indicating whether take profit should be copied. Default is to copy take profit.
     */
    copyTakeProfit?: boolean;
    /**
     * Trade sides which will be copied. Buy trades only, sell trades only or all trades.
     * Default is to copy all trades
     */
    allowedSides?: string[];
    /**
     * Minimum trade volume to copy. Trade signals with a smaller volume will not be copied
     */
    minTradeVolume?: number;
    /**
     * Maximum trade volume to copy. Trade signals with a larger volume will be copied
     * with maximum volume instead
     */
    maxTradeVolume?: number;
    /**
     * Extra trade copying delay introduced by trade copier before applying the trade signal.
     * You can configure either a fixed or a random delay
     */
    signalDelay?: StrategySignalDelay;
    /**
     * flag indicating that the subscription was scheduled for removal once all subscription
     * positions will be closed
     */
    removed?: boolean;
};
/**
 * CopyFactory strategy trade size scaling settings
 */
export declare type CopyFactoryStrategyTradeSizeScaling = {
    /**
     * If set to balance, the trade size on strategy subscriber will be scaled according
     * to balance to preserve risk. If set to equity, the trade size on strategy subscriber will be scaled according
     * to subscriber equity. If value is none, then trade size will be preserved irregardless of the subscriber
     * balance. If value is contractSize, then trade size will be scaled according to contract size. If fixedVolume
     * is set, then trade will be copied with a fixed volume of tradeVolume setting. If fixedRisk is set, then each
     * trade will be copied with a trade volume set to risk specific fraction of balance as configured by
     * riskFraction setting. Note, that in fixedRisk mode trades without a SL are not copied. If expression is
     * set, then trade volume will be calculated using a user-defined expression. Note, that expression trade
     * size scaling mode is intended for advanced users and we DO NOT RECOMMEND using it unless you understand
     * what are you doing, as mistakes in expression can result in loss.
     * Allowed values: none, contractSize, balance, equity, fixedVolume, fixedRisk, expression.
     */
    mode: string;
    /**
     * Fixed trade volume for use with fixedVolume trade size scaling mode
     */
    tradeVolume?: number;
    /**
     * Fixed risk fraction for use with fixedRisk trade size scaling mode
     */
    riskFraction?: number;
    /**
     * If set to true, that trades smaller than minVolume - 0.5 * volumeStep will
     * be placed with minVolume volume, in spite that they will result in increased trade risk, as long as risk
     * increase is in line with maxRiskCoefficient configuration. Otherwise such trades will be skipped to avoid
     * taking excessive trade risk. Default is false.
     */
    forceTinyTrades?: boolean;
    /**
     * Sometimes when placing a small trade, the risk taken can exceed the
     * subscription expectation due to volume rounding or forcefully placing tiny trades in accordance with
     * forceTinyTrades setting. The maxRiskCoefficient setting will act as an extra line of protection to restrict
     * trades if actual risk exceeds the value of expected subscription risk multiplied by maxRiskCoefficient. As a
     * result trade volume will be decreased correspondingly or trade will be skipped if resulting volume is less
     * than minVolume. Default value is 5, minimum value is 1.
     */
    maxRiskCoefficient?: number;
    /**
     * math.js expression which will be used to calculate trade volume
     * (see https://mathjs.org/docs/expressions/syntax.html). Following variables are available in expression
     * scope: providerVolume - provider signal trade size; providerTradeAmount - provider signal trade value in
     * trade copier base curency; multiplier - subscription multiplier value; providerBalance - provider balance
     * value in trade copier base currency; balance - subscriber balance value in trade copier base currency;
     * quoteOrOpenPrice - current asset price (for market orders) or open price (for pending orders) on subscriber
     * side; tickValue - current asset tick value on subscriber side expressed in trade copier base currency;
     * tickSize - tick size on subscriber side; providerScaledVolume - provider trade volume multiplied by provider
     * contract size; contractSize - subscriber contract size; providerStopLoss - provider signal stop loss price;
     * providerTakeProfit - provider signal take profit price; accountCurrencyExchangeRate - subscriber exchange
     * rate of account currency to trade copier base currency
     */
    expression?: string;
};
/**
 * CopyFactory symbol filter
 */
export declare type CopyFactoryStrategySymbolFilter = {
    /**
     * list of symbols copied. Leave the value empty to copy all symbols
     */
    included: Array<string>;
    /**
     * list of symbols excluded from copying. Leave the value empty to copy all symbols
     */
    excluded: Array<string>;
};
/**
 * CopyFactory news risk filter
 */
export declare type CopyFactoryStrategyNewsFilter = {
    /**
     * breaking news filter
     */
    breakingNewsFilter?: CopyFactoryStrategyBreakingNewsFilter;
    /**
     * calendar news filter
     */
    calendarNewsFilter?: CopyFactoryStrategyCalendarNewsFilter;
};
/**
 * CopyFactory breaking news risk filter
 */
export declare type CopyFactoryStrategyBreakingNewsFilter = {
    /**
     * list of breaking news priorities to stop trading on, leave empty to disable
     * breaking news filter. One of high, medium, low.
     */
    priorities: Array<string>;
    /**
     * time interval specifying when to force close an already
     * open position after breaking news. Default value is 60 minutes
     */
    closePositionTimeGapInMinutes?: number;
    /**
     * time interval specifying when it is allowed to
     * open position after calendar news. Default value is 60 minutes
     */
    openPositionFollowingTimeGapInMinutes?: number;
};
/**
 * CopyFactory calendar new filter
 */
export declare type CopyFactoryStrategyCalendarNewsFilter = {
    /**
     * list of calendar news priorities to stop trading on, leave empty to disable
     * calendar news filter. One of election, high, medium, low.
     */
    priorities: Array<string>;
    /**
     * time interval specifying when to force close an already
     * open position before calendar news. Default value is 60 minutes
     */
    closePositionTimeGapInMinutes?: number;
    /**
     * time interval specifying when it is still
     * allowed to open position before calendar news. Default value is 120 minutes
     */
    openPositionPrecedingTimeGapInMinutes?: number;
    /**
     * time interval specifying when it is allowed to
     * open position after calendar news. Default value is 60 minutes
     */
    openPositionFollowingTimeGapInMinutes?: number;
};
/**
 * CopyFactory strategy risk limit type
 */
export declare type CopyFactoryStrategyRiskLimitType = 'day' | 'date' | 'week' | 'week-to-date' | 'month' | 'month-to-date' | 'quarter' | 'quarter-to-date' | 'year' | 'year-to-date' | 'lifetime';
/**
 * CopyFactory strategy risk limit apply to enum
 */
export declare type CopyFactoryStrategyRiskLimitApplyTo = 'balance-difference' | 'balance-minus-equity' | 'equity-difference';
/**
 * CopyFactory risk limit filter
 */
export declare type CopyFactoryStrategyRiskLimit = {
    /**
     * restriction type
     */
    type: CopyFactoryStrategyRiskLimitType;
    /**
     * account metric to apply limit to
     */
    applyTo: CopyFactoryStrategyRiskLimitApplyTo;
    /**
     *  Max drawdown allowed, measured in account currency,
     */
    maxAbsoluteRisk?: number;
    /**
    *  Max drawdown allowed, expressed as a fraction of 1,
    */
    maxRelativeRisk?: number;
    /**
     * whether to force close positions when the risk is reached. If value is false
     * then only the new trades will be halted, but existing ones will not be closed
     */
    closePositions: boolean;
    /**
     * time to start risk tracking from. All previous trades will be ignored. You
     * can use this value to reset the filter after stopout event
     */
    startTime?: Date | string | moment.Moment;
};
/**
 * CopyFactory strategy max stop loss settings
 */
export declare type CopyFactoryStrategyMaxStopLoss = {
    /**
     * maximum SL value
     */
    value: number;
    /**
     * SL units. Only pips value is supported at this point
     */
    units: string;
};
/**
 * CopyFactory strategy symbol mapping
 */
export declare type CopyFactoryStrategySymbolMapping = {
    /**
     * symbol name to convert from
     */
    from: string;
    /**
     * symbol name to convert to
     */
    to: string;
};
/**
 * CopyFactory account update
 */
export declare type CopyFactorySubscriberUpdate = {
    /**
     * account human-readable name
     */
    name: string;
    /**
     * fraction of reserved margin to reduce a risk of margin call.
     * Default is to reserve no margin. We recommend using maxLeverage setting instead. Specified as a fraction of balance
     * thus the value is usually greater than 1
     */
    reservedMarginFraction?: number;
    /**
     * phone numbers to send sms notifications to. Leave empty to
     * receive no sms notifications
     */
    phoneNumbers?: Array<string>;
    /**
     * value of minimal trade size allowed, expressed in amount of account
     * currency. Can be useful if your broker charges a fixed fee per transaction so that you can skip small trades with
     * high broker commission rates. Default is 0
     */
    minTradeAmount?: number;
    /**
     * setting wich instructs the application not to open new positions. by-symbol
     * means that it is still allowed to open new positions with a symbol equal to the symbol of an existing strategy
     * position (can be used to gracefuly exit strategies trading in netting mode or placing a series of related trades
     * per symbol). immediately means to close all positions immediately. One of 'by-position', 'by-symbol', 'immediately'
     */
    closeOnly?: string;
    /**
     * account risk limits. You can configure trading to be
     * stopped once total drawdown generated during specific period is exceeded. Can be specified either for balance or
     * equity drawdown
     */
    riskLimits?: Array<CopyFactoryStrategyRiskLimit>;
    /**
     * setting indicating maxumum leverage allowed when opening a new positions.
     * Any trade which results in a higher leverage will be discarded.
     */
    maxLeverage?: number;
    /**
     * flag indicating whether stop loss should be copied. Default is to copy stop
     * loss.
     */
    copyStopLoss?: boolean;
    /**
     * flag indicating whether take profit should be copied. Default is to copy take
     * profit.
     */
    copyTakeProfit?: boolean;
    /**
     * Trade sides which will be copied. Buy trades only, sell trades only or all trades.
     * Default is to copy all trades
     */
    allowedSides?: string[];
    /**
     * Minimum trade volume to copy. Trade signals with a smaller volume will not be
     * copied
     */
    minTradeVolume?: number;
    /**
     * Maximum trade volume to copy. Trade signals with a larger volume will be copied
     * with maximum volume instead
     */
    maxTradeVolume?: number;
    /**
     * Extra trade copying delay introduced by trade copier before applying the trade signal.
     * You can configure either a fixed or a random delay
     */
    signalDelay?: StrategySignalDelay;
    /**
     * strategy subscriptions
     */
    subscriptions?: Array<CopyFactoryStrategySubscription>;
};
/**
 * CopyFactory subscriber model
 */
export declare type CopyFactorySubscriber = CopyFactorySubscriberUpdate & {
    /**
     * id of the MetaApi account to copy trades to
     */
    _id: string;
};
/**
 * CopyFactory provider strategy
 */
export declare type CopyFactoryStrategy = CopyFactoryStrategyUpdate & {
    /**
     * unique strategy id
     */
    _id: string;
    /**
     * commission rate the platform charges for strategy copying, applied to
     * commissions charged by provider. This commission applies only to accounts not managed directly by provider. Should
     * be fraction of 1
     */
    platformCommissionRate: number;
    /**
     * position close mode on strategy or subscription removal. Preserve means
     * that positions will not be closed and will not be managed by CopyFactory. close-gracefully-by-position means
     * that positions will continue to be managed by CopyFactory, but only close signals will be copied.
     * close-gracefully-by-symbol means that positions will continue to be managed by CopyFactory, but only close
     * signals will be copied or signals to open positions for the symbols which already have positions opened.
     * close-immediately means that all positions will be closed immediately. Default is close-immediately.
     * This field can be changed via remove potfolio member API only, one of preserve, close-gracefully-by-position,
     * close-gracefully-by-symbol, close-immediately
     */
    closeOnRemovalMode?: string;
};
/**
 * CopyFactory strategy commission scheme
 */
export declare type CopyFactoryStrategyCommissionScheme = {
    /**
     * commission type. One of flat-fee, lots-traded, lots-won, amount-traded, amount-won,
     * high-water-mark
     */
    type: string;
    /**
     * billing period. One of week, month, quarter
     */
    billingPeriod: string;
    /**
     * commission rate. Should be greater than or equal to zero if commission type is
     * flat-fee, lots-traded or lots-won, should be greater than or equal to zero and less than or equal to 1 if
     * commission type is amount-traded, amount-won, high-water-mark.
     */
    commissionRate: number;
};
/**
 * CopyFactory strategy magic filter
 */
export declare type CopyFactoryStrategyMagicFilter = {
    /**
     * list of magics (expert ids) or magic ranges copied. Leave the value empty to
     * copy all magics
     */
    included: Array<string>;
    /**
     * list of magics (expert ids) or magic ranges excluded from copying. Leave the
     * value empty to copy all magics
     */
    excluded: Array<string>;
};
/**
 * CopyFactory strategy time settings
 */
export declare type CopyFactoryStrategyTimeSettings = {
    /**
     * position lifetime. Default is to keep positions open up to 90 days
     */
    lifetimeInHours?: number;
    /**
     * time interval to copy new positions. Default is to let 1
     * minute for the position to get copied. If position were not copied during this time, the copying will not be
     * retried anymore.
     */
    openingIntervalInMinutes?: number;
    /**
     * If set to true, the openingIntervalInMinutes setting will be applied to pending order signals as well. By default
     * pending order signals do not expire
     */
    expirePendingOrderSignals?: boolean;
};
/**
 * Telegram publishing settings
 */
export declare type StrategyTelegramSettings = {
    /**
     * telegram publishing settings
     */
    publishing: StrategyTelegramPublishingSettings;
};
/**
 * Strategy Telegram integration settings
 */
export declare type StrategyTelegramPublishingSettings = {
    /**
     * Token telegram bot API
     */
    token: string;
    /**
     * telegram chatId to publish signals to. It can reference either a public
     * channel (e.g. @myChannel), private channel (works by chat id only) or a user (works by chatId only).
     * Note that in order to publish signals to a channel bot must be an admin of the channel
     */
    chatId: string;
    /**
     * telegram message template. A substring of ${description} will be replaced with a signal description. Other
     * variables you can use: ${operation}, ${orderId}, ${side}, ${type}, ${volume}, ${symbol}, ${openPrice},
     * ${stopLoss}, ${takeProfit}.
     */
    template: string;
};
/**
 * CopyFactory strategy equity curve filter
 */
export declare type CopyFactoryStrategyEquityCurveFilter = {
    /**
     * moving average period, must be greater or equal to 1
     */
    period: number;
    /**
     * moving average timeframe, a positive integer followed by time unit, e.g. 2h.
     * Allowed units are s, m, h, d and w.
     */
    timeframe: string;
};
/**
 * CopyFactory strategy drawdown filter
 */
export declare type CopyFactoryStrategyDrawdownFilter = {
    /**
     * maximum drawdown value after which action is executed. Drawdown should
     * be configured as a fraction of 1, i.e. 0.15 means 15% drawdown value
     */
    maxDrawdown: number;
    /**
     * action to take when drawdown exceeds maxDrawdown value. include means the trading
     * signal will be transmitted only if dd is greater than maxDrawdown value. exclude means the trading signal
     * will be transmitted only if dd is less than maxDrawdown value
     */
    action: string;
};
/**
 * CopyFactory strategy update
 */
export declare type CopyFactoryStrategyUpdate = {
    /**
     * strategy human-readable name
     */
    name: string;
    /**
     * longer strategy human-readable description
     */
    description: string;
    /**
     * id of the MetaApi account providing the strategy
     */
    accountId: string;
    /**
     * flag indicating that pending orders should not be copied.
     * Default is to copy pending orders
     */
    skipPendingOrders?: boolean;
    /**
     * commission scheme allowed by this strategy
     */
    commissionScheme?: CopyFactoryStrategyCommissionScheme;
    /**
     * max risk per trade, expressed as a fraction of 1. If trade has a SL, the
     * trade size will be adjusted to match the risk limit. If not, the trade SL will be applied according to the risk
     * limit
     */
    maxTradeRisk?: number;
    /**
     * flag indicating that the strategy should be copied in a reverse direction
     */
    reverse?: boolean;
    /**
     * setting indicating whether to enable automatic trade
     * correlation reduction. Possible settings are not specified (disable correlation risk restrictions),
     * by-strategy (limit correlations for the strategy) or by-account (limit correlations for the account)
     */
    reduceCorrelations?: string;
    /**
     * symbol filters which can be used to copy only specific
     * symbols or exclude some symbols from copying
     */
    symbolFilter?: CopyFactoryStrategySymbolFilter;
    /**
     * news risk filter configuration
     */
    newsFilter?: CopyFactoryStrategyNewsFilter;
    /**
     * strategy risk limits. You can configure
     * trading to be stopped once total drawdown generated during specific period is exceeded. Can be specified either for
     * balance or equity drawdown
     */
    riskLimits?: Array<CopyFactoryStrategyRiskLimit>;
    /**
     * stop loss value restriction
     */
    maxStopLoss?: CopyFactoryStrategyMaxStopLoss;
    /**
     * max leverage risk restriction. All trades resulting in a leverage value
     * higher than specified will be skipped
     */
    maxLeverage?: number;
    /**
     * defines how symbol name should be changed when
     * trading (e.g. when broker uses symbol names with unusual suffixes). By default this setting is disabled and the
     * trades are copied using signal source symbol name
     */
    symbolMapping?: Array<CopyFactoryStrategySymbolMapping>;
    /**
     * Trade size scaling settings. By default the
     * trade size on strategy subscriber side will be scaled according to balance to preserve risk.
     */
    tradeSizeScaling?: CopyFactoryStrategyTradeSizeScaling;
    /**
     * flag indicating whether stop loss should be copied. Default is to copy stop
     * loss.
     */
    copyStopLoss?: boolean;
    /**
     * flag indicating whether take profit should be copied. Default is to copy take
     * profit.
     */
    copyTakeProfit?: boolean;
    /**
     * Trade sides which will be copied. Buy trades only, sell trades only or all trades.
     * Default is to copy all trades
     */
    allowedSides?: string[];
    /**
     * Minimum trade volume to copy. Trade signals with a smaller volume will not be
     * copied
     */
    minTradeVolume?: number;
    /**
     * Maximum trade volume to copy. Trade signals with a larger volume will be copied
     * with maximum volume instead
     */
    maxTradeVolume?: number;
    /**
     * Extra trade copying delay introduced by trade copier before applying the trade signal.
     * You can configure either a fixed or a random delay
     */
    signalDelay?: StrategySignalDelay;
    /**
     * magic (expert id) filter
     */
    magicFilter?: CopyFactoryStrategyMagicFilter;
    /**
     * filter which permits the trades only if account
     * equity is greater than balance moving average
     */
    equityCurveFilter?: CopyFactoryStrategyEquityCurveFilter;
    /**
     *  provider account strategy drawdown filter
     */
    drawdownFilter?: CopyFactoryStrategyDrawdownFilter;
    /**
     * symbols traded by this strategy. Specifying the symbols will improve trade
     * latency on first trades made by strategy. If you do not specify this setting the application will monitor the strategy
     * trades and detect the symbols automatically over time
     */
    symbolsTraded?: Array<string>;
    /**
     * settings to manage copying timeframe and position
     * lifetime. Default is to copy position within 1 minute from being opened at source and let the position to live for
     * up to 90 days
     */
    timeSettings?: CopyFactoryStrategyTimeSettings;
    /**
     * telegram publishing settings
     */
    telegram?: StrategyTelegramSettings;
};
/**
 * CopyFactory close instructions
 */
export declare type CopyFactoryCloseInstructions = {
    /**
     * position close mode on strategy or subscription removal. Preserve means
     * that positions will not be closed and will not be managed by CopyFactory.
     * close-gracefully-by-position means that positions will continue to be managed by CopyFactory,
     * but only close signals will be copied. close-gracefully-by-symbol means that positions will
     * continue to be managed by CopyFactory, but only close signals will be copied or signals to
     * open positions for the symbols which already have positions opened. close-immediately means
     * that all positions will be closed immediately. Default is close-immediately. One of 'preserve',
     * 'close-gracefully-by-position', 'close-gracefully-by-symbol', 'close-immediately'
     */
    mode?: string;
    /**
     * time to force remove object after. The object will be removed after
     * this time, even if positions are not yet closed fully. Default is current date plus 30 days.
     * Can not be less than 30 days or greater than current date plus 90 days. The setting is ignored
     * when a subscription is being removed
     */
    removeAfter?: Date;
};
/**
 * Portfolio strategy member
 */
export declare type CopyFactoryPortfolioStrategyMember = {
    /**
     * member strategy id
     */
    strategyId: string;
    /**
     * copying multiplier (weight in the portfolio)
     */
    multiplier: number;
    /**
     * flag indicating that pending orders should not be copied.
     * Default is to copy pending orders
     */
    skipPendingOrders?: boolean;
    /**
     * max risk per trade, expressed as a fraction of 1. If trade has a SL, the
     * trade size will be adjusted to match the risk limit. If not, the trade SL will be applied according to the risk
     * limit
     */
    maxTradeRisk: number;
    /**
     * flag indicating that the strategy should be copied in a reverse direction
     */
    reverse?: boolean;
    /**
     * setting indicating whether to enable automatic trade
     * correlation reduction. Possible settings are not specified (disable correlation risk restrictions),
     * by-strategy (limit correlations for the strategy) or by-account (limit correlations for the account)
     */
    reduceCorrelations?: string;
    /**
     * symbol filters which can be used to copy only specific
     * symbols or exclude some symbols from copying
     */
    symbolFilter?: CopyFactoryStrategySymbolFilter;
    /**
     * news risk filter configuration
     */
    newsFilter?: CopyFactoryStrategyNewsFilter;
    /**
     * strategy risk limits. You can configure
     * trading to be stopped once total drawdown generated during specific period is exceeded. Can be specified either for
     * balance or equity drawdown
     */
    riskLimits?: Array<CopyFactoryStrategyRiskLimit>;
    /**
     * stop loss value restriction
     */
    maxStopLoss?: CopyFactoryStrategyMaxStopLoss;
    /**
     * max leverage risk restriction. All trades resulting in a leverage value
     * higher than specified will be skipped
     */
    maxLeverage?: number;
    /**
     * defines how symbol name should be changed when
     * trading (e.g. when broker uses symbol names with unusual suffixes). By default this setting is disabled and the
     * trades are copied using signal source symbol name
     */
    symbolMapping?: Array<CopyFactoryStrategySymbolMapping>;
    /**
     * Trade size scaling settings. By default the
     * trade size on strategy subscriber side will be scaled according to balance to preserve risk.
     */
    tradeSizeScaling?: CopyFactoryStrategyTradeSizeScaling;
    /**
     * flag indicating whether stop loss should be copied. Default is to copy stop
     * loss.
     */
    copyStopLoss?: boolean;
    /**
     * flag indicating whether take profit should be copied. Default is to copy take
     * profit.
     */
    copyTakeProfit?: boolean;
    /**
     * Trade sides which will be copied. Buy trades only, sell trades only or all trades.
     * Default is to copy all trades
     */
    allowedSides?: string[];
    /**
     * Minimum trade volume to copy. Trade signals with a smaller volume will not be
     * copied
     */
    minTradeVolume?: number;
    /**
     * Maximum trade volume to copy. Trade signals with a larger volume will be copied
     * with maximum volume instead
     */
    maxTradeVolume?: number;
    /**
     * Extra trade copying delay introduced by trade copier before applying the trade signal.
     * You can configure either a fixed or a random delay
     */
    signalDelay?: StrategySignalDelay;
    /**
     * position close mode on strategy or subscription removal. Preserve means
     * that positions will not be closed and will not be managed by CopyFactory. close-gracefully-by-position means
     * that positions will continue to be managed by CopyFactory, but only close signals will be copied.
     * close-gracefully-by-symbol means that positions will continue to be managed by CopyFactory, but only close
     * signals will be copied or signals to open positions for the symbols which already have positions opened.
     * close-immediately means that all positions will be closed immediately. Default is close-immediately.
     * This field can be changed via remove potfolio member API only, one of preserve, close-gracefully-by-position,
     * close-gracefully-by-symbol, close-immediately
     */
    closeOnRemovalMode?: string;
};
/**
 * Portfolio strategy update
 */
export declare type CopyFactoryPortfolioStrategyUpdate = {
    /**
     * strategy human-readable name
     */
    name: string;
    /**
     * longer strategy human-readable description
     */
    description: string;
    /**
     * array of portfolio members
     */
    members: Array<CopyFactoryPortfolioStrategyMember>;
    /**
     * commission scheme allowed by this strategy. By
     * default monthly billing period with no commission is being used
     */
    commissionScheme?: CopyFactoryStrategyCommissionScheme;
    /**
     * flag indicating that pending orders should not be copied.
     * Default is to copy pending orders
     */
    skipPendingOrders?: boolean;
    /**
     * max risk per trade, expressed as a fraction of 1. If trade has a SL, the
     * trade size will be adjusted to match the risk limit. If not, the trade SL will be applied according to the risk
     * limit
     */
    maxTradeRisk?: number;
    /**
     * flag indicating that the strategy should be copied in a reverse direction
     */
    reverse?: boolean;
    /**
     * setting indicating whether to enable automatic trade
     * correlation reduction. Possible settings are not specified (disable correlation risk restrictions),
     * by-strategy (limit correlations for the strategy) or by-account (limit correlations for the account)
     */
    reduceCorrelations?: string;
    /**
     * symbol filters which can be used to copy only specific
     * symbols or exclude some symbols from copying
     */
    symbolFilter?: CopyFactoryStrategySymbolFilter;
    /**
     * news risk filter configuration
     */
    newsFilter?: CopyFactoryStrategyNewsFilter;
    /**
     * strategy risk limits. You can configure
     * trading to be stopped once total drawdown generated during specific period is exceeded. Can be specified either for
     * balance or equity drawdown
     */
    riskLimits?: Array<CopyFactoryStrategyRiskLimit>;
    /**
     * stop loss value restriction
     */
    maxStopLoss?: CopyFactoryStrategyMaxStopLoss;
    /**
     * max leverage risk restriction. All trades resulting in a leverage value
     * higher than specified will be skipped
     */
    maxLeverage?: number;
    /**
     * defines how symbol name should be changed when
     * trading (e.g. when broker uses symbol names with unusual suffixes). By default this setting is disabled and the
     * trades are copied using signal source symbol name
     */
    symbolMapping?: Array<CopyFactoryStrategySymbolMapping>;
    /**
     * Trade size scaling settings. By default the
     * trade size on strategy subscriber side will be scaled according to balance to preserve risk.
     */
    tradeSizeScaling?: CopyFactoryStrategyTradeSizeScaling;
    /**
     * flag indicating whether stop loss should be copied. Default is to copy stop
     * loss.
     */
    copyStopLoss?: boolean;
    /**
     * flag indicating whether take profit should be copied. Default is to copy take
     * profit.
     */
    copyTakeProfit?: boolean;
    /**
     * Trade sides which will be copied. Buy trades only, sell trades only or all trades.
     * Default is to copy all trades
     */
    allowedSides?: string[];
    /**
     * Minimum trade volume to copy. Trade signals with a smaller volume will not be
     * copied
     */
    minTradeVolume?: number;
    /**
     * Maximum trade volume to copy. Trade signals with a larger volume will be copied
     * with maximum volume instead
     */
    maxTradeVolume?: number;
    /**
     * Extra trade copying delay introduced by trade copier before applying the trade signal.
     * You can configure either a fixed or a random delay
     */
    signalDelay?: StrategySignalDelay;
};
/**
 * Portfolio strategy, i.e. the strategy which includes a set of other strategies
 */
export declare type CopyFactoryPortfolioStrategy = CopyFactoryPortfolioStrategyUpdate & {
    /**
     * unique strategy id
     */
    _id: string;
    /**
     * commission rate the platform charges for strategy copying, applied to
     * commissions charged by provider. This commission applies only to accounts not managed directly by provider. Should
     * be fraction of 1
     */
    platformCommissionRate: number;
    /**
     * position close mode on strategy or subscription removal. Preserve means
     * that positions will not be closed and will not be managed by CopyFactory. close-gracefully-by-position means
     * that positions will continue to be managed by CopyFactory, but only close signals will be copied.
     * close-gracefully-by-symbol means that positions will continue to be managed by CopyFactory, but only close
     * signals will be copied or signals to open positions for the symbols which already have positions opened.
     * close-immediately means that all positions will be closed immediately. Default is close-immediately.
     * This field can be changed via remove potfolio member API only, one of preserve, close-gracefully-by-position,
     * close-gracefully-by-symbol, close-immediately
     */
    closeOnRemovalMode?: string;
};
/**
 * Options for methods retrieving strategies
 */
export declare type GetStrategiesOptions = {
    /**
     * flag instructing to include removed strategies in results
     */
    includeRemoved?: boolean;
    /**
     * pagination limit. Defaults to 1000. Must be greater or equal to 1 and less or equal to 1000
     */
    limit?: number;
    /**
     * paginiation offset. Defaults to 0. Must be greater or equal to 0
     */
    offset?: number;
};
/**
 * Options for methods retrieving portfolio strategies
 */
export declare type GetPortfolioStrategiesOptions = {
    /**
     * flag instructing to include removed portfolio strategies in results
     */
    includeRemoved?: boolean;
    /**
     * pagination limit. Defaults to 1000. Must be greater or equal to 1 and less or equal to 1000
     */
    limit?: number;
    /**
     * paginiation offset. Defaults to 0. Must be greater or equal to 0
     */
    offset?: number;
};
/**
 * Options for methods retrieving subscribers
 */
export declare type GetSubscribersOptions = {
    /**
     * flag instructing to include removed subscribers in results
     */
    includeRemoved?: boolean;
    /**
     * pagination limit. Defaults to 1000. Must be greater or equal to 1 and less or equal to 1000
     */
    limit?: number;
    /**
     * paginiation offset. Defaults to 0. Must be greater or equal to 0
     */
    offset?: number;
};
/**
 * List in classic pagination style
 */
export declare type ClassicPaginationList<T> = {
    /**
     * Retrieved records
     */
    items: T[];
    /**
     * Total number of matched records
     */
    count: number;
};
/**
 * Payload used to create a new webhook
 */
export declare type NewWebhook = {
    /**
     * Expert advisor ID
     */
    magic?: number;
    /**
     * Rules for mapping signal source symbols to provider strategy symbols
     */
    symbolMapping?: CopyFactoryStrategySymbolMapping[];
};
/**
 * Payload used to update existing webhook
 */
export declare type WebhookUpdate = {
    /**
     * Expert advisor ID
     */
    magic?: number;
    /**
     * Rules for mapping signal source symbols to provider strategy symbols
     */
    symbolMapping?: CopyFactoryStrategySymbolMapping[];
};
/**
 * Create webhook response fields
 */
export declare type WebhookIdAndUrl = {
    /**
     * URL to the newly created webhook
     */
    url: string;
    /**
     * ID of the newly created webhook
     */
    id: string;
};
/**
 * Options for methods retrieving webhooks
 */
export declare type GetWebhooksOptions = {
    /**
     * pagination limit. Defaults to 1000. Must be greater or equal to 1 and less or equal to 1000
     */
    limit?: number;
    /**
     * paginiation offset. Defaults to 0. Must be greater or equal to 0
     */
    offset?: number;
};
/**
 * Webhook model
 */
export declare type Webhook = {
    /**
     * ID of the webhook
     */
    _id: string;
    /**
     * Created at date of the webhook
     */
    createdAt: Date;
    /**
     * Webhook URL
     */
    url: string;
    /**
     * Expert advisor ID
     */
    magic?: number;
    /**
     * Rules for mapping signal source symbols to provider strategy symbols
     */
    symbolMapping: CopyFactoryStrategySymbolMapping[];
};
