import { providers } from 'ethers';
import { UniswapV3Pool } from '../importedTypes/UniswapV3Pool';
import { Position } from '@steerprotocol/uniswap-position-quoter';
import { TokenERC20 } from '../types';
import { MultiPositionLiquidityManager } from '../types/UniLiquidityManager';
import { Stats } from './stats';
import { Strategy } from './Strategy';
import { Config, TopHolder, TopHolderType } from './types';
import { UniswapV3 } from './uniswapv3';
import { Swap } from './../utils/types/eventType';
export interface StrategyOutput {
    upperBound: string;
    lowerBound: string;
    bins: string[];
    startTick: string;
}
export declare type TendStatistics = {
    timestamp: number;
    percentChange: string;
    token0Balance: string;
    token1Balance: string;
    totalInToken1: string;
    totalChange: string;
    feeAPR: string;
};
export declare type Rebalance = {
    timestamp: number;
    positions: Position[];
    currentTick: number;
    balt0: string;
    balt1: string;
    gasUsed: string;
};
export declare type RebalancePreview = Pick<Rebalance, 'timestamp' | 'positions'>;
export declare type PriceMovement = {
    timestamp: number;
    tick: number;
};
export declare class UniswapV3Backtest {
    private uniswap;
    constructor(uniswapAdapter: UniswapV3);
    run(config: Config, strategy: Strategy, stats: Stats): Promise<void>;
    intermediateAPYCalculation(token0: TokenERC20, token1: TokenERC20, token0Decimals: string, token1Decimals: string, liquidityManager: MultiPositionLiquidityManager, pool: UniswapV3Pool, stats: Stats, event: Swap, feeInfo: DataPoint[]): Promise<void>;
    getTopHolder(holders: Array<TopHolder>, tokenAddress: string, type: TopHolderType, provider: providers.JsonRpcProvider): TopHolder | undefined;
    private mapNetwork;
    private displayTargetEntityDetails;
    getPercentChangeFromStats(stats: Stats, currentTotalToken1: number): [number, number];
}
interface DataPoint {
    sqrtPriceX96: string;
    totalAmount0: string;
    totalAmount1: string;
    fees0: string;
    fees1: string;
    timestamp: string;
}
export {};
