import { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
import type { BlockchainProviderService } from '../blockchain-provider/blockchain-provider.service';
import type { MempoolCommandExecutor } from './interfaces';
/**
 * EVM MempoolLoaderService — two strategies:
 *
 * 'subscribe-ws': Subscribe to newPendingTransactions WS events.
 *   - Accumulate tx hashes in buffer
 *   - Periodically flush: batch-fetch metadata → dispatch RefreshMempoolCommand (mode=additive)
 *   - Eviction happens in AddBlocksBatchCommandHandler (cross-ref confirmed hashes)
 *
 * 'txpool-content': Poll txpool_content (Geth/Erigon).
 *   - Like bitcoin getrawmempool
 *   - Dispatch RefreshMempoolCommand (mode=snapshot)
 *   - Eviction automatic (not in next snapshot)
 *
 * Lifecycle mirrors bitcoin MempoolLoaderService:
 *   start() → enable + setup
 *   unlock() → allow next cycle
 *   refresh(height) → trigger new cycle
 */
export declare class MempoolLoaderService implements OnModuleInit, OnModuleDestroy {
    private readonly provider;
    private readonly executor;
    private readonly strategyName;
    private readonly log;
    private readonly moduleName;
    private enabled;
    private locked;
    private lastKnownHeight;
    private pendingBuffer;
    private subscription?;
    private flushTimer?;
    private readonly flushIntervalMs;
    constructor(provider: BlockchainProviderService, executor: MempoolCommandExecutor, strategyName: 'subscribe-ws' | 'txpool-content', flushIntervalMs?: number);
    onModuleInit(): void;
    onModuleDestroy(): Promise<void>;
    /** Called after EvmMempoolInitializedEvent. Idempotent. */
    start(): Promise<void>;
    stop(): void;
    /** External signal that current cycle finished — allow next cycle. */
    unlock(): void;
    /**
     * Called after confirmProcessedBatch / reorganizeBlocks.
     * Updates lastKnownHeight and triggers next cycle.
     */
    refresh(height: number): Promise<void>;
    private setupWsSubscription;
    private flush;
    private pollTxpoolContent;
}
