import { TokenPrice } from './types/index.js';
import { t as ForexLogEntry, m as ForexPoolTransaction, g as ForexCurrencyPair, i as ForexPoolType, n as ForexPoolDailySnapshot, r as ForexTradeRecord, l as ForexPoolTransactionType } from './console-BoAIxikK.js';

declare class PriceService {
    private cache;
    private cacheTTL;
    getPrice(symbol: string): Promise<TokenPrice>;
    getPrices(symbols: string[]): Promise<Record<string, TokenPrice>>;
    private getFallbackPrice;
    clearCache(): void;
}
declare const priceService: PriceService;

type LogCallback = (entry: ForexLogEntry) => void;
type PoolTxCallback = (tx: ForexPoolTransaction) => void;
interface PairState {
    pair: ForexCurrencyPair;
    currentPrice: number;
    bidPrice: number;
    askPrice: number;
    lastSpread: number;
}
declare class ForexSimulationEngine {
    private listeners;
    private poolTxListeners;
    private cycleTimer;
    private pairStates;
    private running;
    private openPositions;
    private totalPnl;
    private totalTrades;
    private totalPips;
    private totalLots;
    constructor();
    start(): void;
    stop(): void;
    onLog(callback: LogCallback): () => void;
    onPoolTransaction(callback: PoolTxCallback): () => void;
    isRunning(): boolean;
    getStats(): {
        totalPnl: number;
        totalTrades: number;
        totalPips: number;
        totalLots: number;
        positions: number;
    };
    getPairStates(): Map<string, PairState>;
    emitBootSequence(): void;
    destroy(): void;
    private emit;
    private emitPoolTx;
    private generatePoolTxFromEvent;
    private scheduleCycle;
    private simulatePrice;
    private runTradeCycle;
}
declare const forexSimulationEngine: ForexSimulationEngine;

declare class ForexPoolDataGeneratorClass {
    private snapshotCache;
    private transactionCache;
    private baseBlockNumber;
    generateAllSnapshots(): Record<ForexPoolType, ForexPoolDailySnapshot[]>;
    generateAllTransactions(): ForexPoolTransaction[];
    generateTradeHistory(investmentAmount: number, startDate: string, selectedPairs: string[]): ForexTradeRecord[];
    generateLiveTransaction(poolId: ForexPoolType, type: ForexPoolTransactionType, baseAmount?: number): ForexPoolTransaction;
    private generatePoolSnapshots;
    private generatePoolTransactions;
    private gaussianRandom;
    private getTxDescription;
}
declare const ForexPoolDataGenerator: {
    getInstance(): ForexPoolDataGeneratorClass;
};

export { ForexPoolDataGenerator as F, PriceService as P, type PairState as a, forexSimulationEngine as f, priceService as p };
