import { BigNumber } from 'ethers';
import { AssetName } from '../pricer/enums';
import { NetworkIdT3rn } from '../pricer/types';
export type OrderArbitrageStrategies = {
    [key in NetworkIdT3rn]: {
        [key in AssetName]: OrderArbitrageStrategy;
    };
};
export interface OrderArbitrageStrategy {
    minProfitPerOrder: number;
    minProfitRate: number;
    maxAmountPerOrder: BigNumber;
    minAmountPerOrder: BigNumber;
    maxShareOfMyBalancePerOrder: number;
}
export declare const defaultSettings: OrderArbitrageStrategy;
export declare const upTo10TokenUnitsReasonableSettings: OrderArbitrageStrategy;
export interface StrategyInput {
    minProfitPerOrder: number;
    minProfitRate: number;
    maxAmountPerOrder: string;
    minAmountPerOrder: string;
    maxShareOfMyBalancePerOrder: number;
}
export type ArbitrageStrategiesInput = Record<NetworkIdT3rn, Record<AssetName, StrategyInput>>;
/**
 * Validates and parses the provided strategy object.
 *
 * @param {ArbitrageStrategiesInput} strategy
 * @returns {OrderArbitrageStrategies}
 */
export declare const validateAndParseArbitrageStrategy: (strategy: ArbitrageStrategiesInput) => OrderArbitrageStrategies;
/**
 * Sets or gets a valid arbitrage strategy for the executor.
 * Returns valid arbitrage strategy for the executor.
 *
 * If no custom strategy object provided, returns the default strategy.
 * If the custom one provided is invalid, returns the default strategy.
 *
 * Merges the provided one with the default one, replacing properties (networks or assets) from the
 * default one with the provided ones.
 *
 * @param {object=}  strategy The strategy should already be a valid JSON object
 * @returns {OrderArbitrageStrategies}
 */
export declare const getArbitrageStrategies: (strategy?: object) => OrderArbitrageStrategies;
export declare const testGetDefaultArbitrageStrategy: () => OrderArbitrageStrategies;
//# sourceMappingURL=executor-arbitrage-strategies.d.ts.map