import * as Component from './Component'; import { StateBus } from './StateBus'; import { EventBus, Subscription } from './EventBus'; import * as Domain from './DomainHandlers'; import { State as S } from './State'; import { Event as E } from './Event'; import { Typer } from 'cqes-type'; export { Domain }; export interface Events { [name: string]: Typer; } export interface DomainHandlers { [name: string]: Domain.handler; } export interface props extends Component.props { category?: string; stateBus?: StateBus; eventBus?: EventBus; domainHandlers?: Domain.Handlers; cacheSize?: number; } export declare class Repository extends Component.Component { protected category: string; protected stateBus: StateBus; protected cache: Map; protected eventBus: EventBus; protected subscription: Subscription; protected domainHandlers: Domain.Handlers; constructor(props: props); start(): Promise; get(streamId: string, useCache?: boolean): Promise>; protected handleEvent(event: E): Promise; protected applyEvents(state: S, events: Array): S; protected applyEvent(state: S, event: E): any; expire(streamId: string): void; stop(): Promise; }