import { GovernanceContract } from '@contracts';
import { IEventListener } from '../../interfaces/listeners/IEventListener';
import { IOverrideVoteCastEvent } from '../../interfaces/events/governance/IOverrideVoteCastEvent';
/**
 * @title Override Vote Cast Event Listener
 * @notice Listens for OverrideVoteCast events from the Governance contract
 * @dev This listener monitors the governance contract for override vote casting events
 */
export declare class OverrideVoteCastListener implements IEventListener<IOverrideVoteCastEvent> {
    private readonly governanceContract;
    private isListening;
    private eventFilter;
    private callbacks;
    constructor(governanceContract: GovernanceContract);
    /**
     * @notice Start listening for OverrideVoteCast events
     * @param callback Function to call when event is received
     */
    start(callback: (event: IOverrideVoteCastEvent) => void | Promise<void>): Promise<void>;
    /**
     * @notice Add a callback to the listener
     * @param callback Function to call when event is received
     */
    addCallback(callback: (event: IOverrideVoteCastEvent) => void | Promise<void>): void;
    /**
     * @notice Remove a callback from the listener
     * @param callback Function to remove
     */
    removeCallback(callback: (event: IOverrideVoteCastEvent) => void | Promise<void>): void;
    /**
     * @notice Stop listening for events
     */
    stop(): void;
    /**
     * @notice Get historical OverrideVoteCast events
     * @param fromBlock Starting block number
     * @param toBlock Ending block number (optional, defaults to latest)
     */
    getHistoricalEvents(fromBlock: number, toBlock?: number | 'latest'): Promise<IOverrideVoteCastEvent[]>;
    /**
     * @notice Check if the listener is currently active
     */
    get listening(): boolean;
}
