import { EventStore, EventStream } from './event-store';
import { Event } from './model/event';
import { Stream } from './model/stream';
/**
 * An Event Stream
 */
export declare class EventStreamImpl implements EventStream {
    private stream;
    private eventStore;
    constructor(eventStore: EventStore, stream: Stream);
    /**
     * The event stream identifier
     * The event stream
     */
    get streamId(): string;
    /**
     * The parent aggregation for this event stream
     */
    get aggregation(): string;
    /**
     * Rertieve a list containing all the events in the stream in order.
     * @param offset The start position in the stream list
     * @param limit The desired quantity events
     * @return All the events
     */
    getEvents(offset?: number, limit?: number): Promise<Array<Event>>;
    /**
     * Rertieve only one object containing all the events's data in the stream in order.
     * @param offset The start position in the stream list
     * @param limit The desired quantity events
     * @return All the events
     */
    loadFromHistory(offset?: number, limit?: number): Promise<Event>;
    /**
     * Add a new event to the end of the event stream.
     * @param data The event data
     * @param type The Event type
     * @return The event, updated with informations like its sequence order and commitTimestamp
     */
    addEvent(data: any, type?: string): Promise<Event>;
    private getProvider;
}
