import { ethers } from "ethers";
import { KlerosEscrowConfig } from "../types/config";
import { BaseService } from "../base/BaseService";
import { BaseEvent, PaymentEvent, HasToPayFeeEvent, DisputeEvent, EvidenceEvent, RulingEvent, MetaEvidenceEvent } from "../types/events";
/**
 * Service for retrieving events from the Kleros Escrow contract
 */
export declare class EventService extends BaseService {
    /**
     * Creates a new EventService instance
     * @param config The Kleros Escrow configuration
     * @param provider Optional provider for read operations
     */
    constructor(config: KlerosEscrowConfig, provider?: ethers.providers.Provider);
    /**
     * Normalizes a block parameter to ensure it's in the correct format for ethers.js
     * @param blockParam The block parameter (number, string, or undefined)
     * @returns The normalized block parameter
     */
    private normalizeBlockParam;
    /**
     * Gets all events for a specific transaction
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns All events related to the transaction
     */
    getEventsForTransaction(transactionId: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<BaseEvent[]>;
    /**
     * Gets transaction creation events
     * @param options Optional filter options including fromBlock and toBlock
     * @returns An array of transaction creation events
     */
    getTransactionCreationEvents(options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<ethers.Event[]>;
    /**
     * Gets MetaEvidence events for a transaction with extended search capability
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns Array of MetaEvidence events
     */
    getMetaEvidenceEvents(transactionId: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<MetaEvidenceEvent[]>;
    /**
     * Extended search for MetaEvidence events
     * Searches multiple block ranges until it finds at least one matching event
     * @param transactionId The ID of the transaction
     * @returns Array of MetaEvidence events
     */
    private getMetaEvidenceEventsExtended;
    /**
     * Helper method to search for MetaEvidence events in a specific block range
     * @param transactionId The ID of the transaction
     * @param fromBlock The starting block number
     * @param toBlock The ending block number
     * @returns Array of MetaEvidence events
     */
    private searchMetaEvidenceInRange;
    /**
     * Process raw MetaEvidence events into structured format
     * @param events Raw ethers.js events
     * @param transactionId The transaction ID
     * @returns Processed MetaEvidence events
     */
    private processMetaEvidenceEvents;
    /**
     * Gets payment events
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns An array of payment events
     */
    getPaymentEvents(transactionId?: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<PaymentEvent[]>;
    /**
     * Gets HasToPayFee events for a transaction
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns Array of HasToPayFee events
     */
    getHasToPayFeeEvents(transactionId?: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<HasToPayFeeEvent[]>;
    /**
     * Gets dispute creation events
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns An array of dispute creation events
     */
    getDisputeEvents(transactionId?: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<DisputeEvent[]>;
    /**
     * Gets evidence submission events
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns An array of evidence submission events
     */
    getEvidenceEvents(transactionId?: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<EvidenceEvent[]>;
    /**
     * Gets ruling events
     * @param transactionId The ID of the transaction
     * @param options Optional filter options including fromBlock and toBlock
     * @returns An array of ruling events
     */
    getRulingEvents(transactionId?: string, options?: {
        fromBlock?: number | string;
        toBlock?: number | string;
    }): Promise<RulingEvent[]>;
}
