import { BaseEventStore, EventStoreConnectionOptions, SaveEventsResult, GetEventsOptions, GetEventsResult, AggregateSnapshot, EventStoreStats } from '../core/event-store.interface';
import { Event } from '../core/event';
interface TypeORMDataSource {
    isInitialized: boolean;
    initialize(): Promise<void>;
    destroy(): Promise<void>;
    getRepository(entity: any): any;
    createQueryRunner(): any;
}
/**
 * Entity for storing events in PostgreSQL
 */
export declare class EventEntity {
    event_id: string;
    aggregate_id: string;
    event_type: string;
    payload: any;
    version: number;
    timestamp: Date;
    aggregate_type?: string;
    correlation_id?: string;
    causation_id?: string;
    user_id?: string;
    metadata?: any;
}
/**
 * Entity for storing snapshots in PostgreSQL
 */
export declare class SnapshotEntity {
    aggregate_id: string;
    aggregate_type: string;
    version: number;
    data: any;
    timestamp: Date;
}
/**
 * PostgreSQL Event Store implementation
 */
export declare class PostgresEventStore extends BaseEventStore {
    private readonly customDataSource?;
    private readonly logger;
    private dataSource?;
    private eventRepository?;
    private snapshotRepository?;
    constructor(options: EventStoreConnectionOptions, customDataSource?: TypeORMDataSource | undefined);
    /**
     * Connects to PostgreSQL
     */
    connect(): Promise<void>;
    /**
     * Disconnects from PostgreSQL
     */
    disconnect(): Promise<void>;
    /**
     * Saves events for aggregate
     */
    saveEvents(aggregateId: string, events: Event[], expectedVersion?: number): Promise<SaveEventsResult>;
    /**
     * Gets events for aggregate
     */
    getEvents(aggregateId: string, options?: GetEventsOptions): Promise<GetEventsResult>;
    /**
     * Saves aggregate snapshot
     */
    saveSnapshot(snapshot: AggregateSnapshot): Promise<void>;
    /**
     * Gets the latest snapshot for aggregate
     */
    getSnapshot(aggregateId: string): Promise<AggregateSnapshot | null>;
    /**
     * Deletes aggregate snapshot
     */
    deleteSnapshot(aggregateId: string): Promise<void>;
    /**
     * Gets events by type
     */
    getEventsByType(eventType: string, options?: GetEventsOptions): Promise<GetEventsResult>;
    /**
     * Gets events in time range
     */
    getEventsByTimeRange(from: Date, to: Date, options?: GetEventsOptions): Promise<GetEventsResult>;
    /**
     * Deletes all events for aggregate
     */
    deleteAggregate(aggregateId: string): Promise<void>;
    /**
     * Gets Event Store statistics
     */
    getStats(): Promise<EventStoreStats>;
    /**
     * Clears all data (used for testing)
     */
    clear(): Promise<void>;
    /**
     * Checks Event Store health
     */
    healthCheck(): Promise<boolean>;
    /**
     * Converts EventEntity to Event
     */
    private entityToEvent;
}
export {};
//# sourceMappingURL=postgres.event-store.d.ts.map