import { DataEntity, MappedStorableItem } from '../data-entity';
import DataStore from '../data-store';
import Session from '../Services/Identity/Session';
import StorableDataService from '../storable-data-service';
import { EventCallbackOptions, StorableEvent, StorableEventUnsubscribe, StorableSubEntityEvent } from './storable-types';
export default class StorableRealtimeSubscriptions<TClient extends DataEntity, TServer extends DataEntity> {
    private readonly realtimeSubscriptions;
    private readonly dataStore;
    private readonly storableDataService;
    private readonly eventCallbacks;
    constructor(session: Session, dataStore: DataStore<TClient>, storableDataService: StorableDataService<TClient, TServer>);
    updateStoreOnEvents(events: StorableEvent<TServer>[], subEntityEvents?: StorableSubEntityEvent[]): void;
    onAnyEvent(event: string, callback: any): () => void;
    onEvent(event: string, callback: (eventData: MappedStorableItem<TClient>) => void, options?: EventCallbackOptions): StorableEventUnsubscribe;
    runEventCallbacks(event: string, data: MappedStorableItem<TClient>, meta?: {
        skipStoreUpdate?: boolean;
    }): void;
    private changeSubEntity;
    private createArrayOfEmptyObjects;
}
