import { Event, Aggregate, StorableAggregate, Fold, ProvidedAggregate, Provider } from './types';
type AggOpts<E extends Event, A extends Aggregate, S extends string> = {
    stream: S;
    create: () => A;
    fold: Fold<E, A>;
    version?: string;
    persistAggregate?: boolean;
};
export declare function createAggregate<E extends Event, A extends Aggregate, S extends string>(opts: AggOpts<E, A, S>): StorableAggregate<E, A, S>;
export declare function createProvidedAggregate<E extends Event, A extends Aggregate>(opts: StorableAggregate<E, A> & {
    provider: Provider<E> | Promise<Provider<E>>;
    useCache?: boolean;
}): ProvidedAggregate<E, A>;
export declare function createPersistedAggregate<E extends Event, A extends Aggregate>(opts: StorableAggregate<E, A> & {
    provider: Provider<E> | Promise<Provider<E>>;
    useCache?: boolean;
}): ProvidedAggregate<E, A>;
export {};
