import { BlockchainEvent } from '../../BlockchainEvent/BlockchainEvent';
import { SolanaBlockchainEventEmitter } from './SolanaBlockchainEventEmitter';
type PromiseOrValue<T> = T | Promise<T>;
export declare abstract class AbstractSolanaEventService<EventType> {
    protected solanaBlockchainEventEmitter: SolanaBlockchainEventEmitter;
    protected readonly eventName: string;
    protected constructor(solanaBlockchainEventEmitter: SolanaBlockchainEventEmitter, eventName: string);
    get latestBlockNumber(): number;
    get isReady(): boolean;
    get chainId(): number;
    intervalClear(): void;
    private processEventsPage;
    protected abstract acceptEvent(event: EventType, slot: number, signature?: string, isBlocked?: boolean): boolean | Promise<boolean>;
    protected abstract mapEvent(event: BlockchainEvent): PromiseOrValue<EventType>;
    protected abstract afterEventsAccepted(eventsCount: number): Promise<void>;
}
export {};
