import Aggregate from './write/Aggregate.ts';
import Projector from './read/Projector.ts';
import Projection from './read/Projection.ts';
import ReadModel from './read/ReadModel.ts';
import { WoltageConfig } from './WoltageConfig.ts';
export type AggregateMap = {
    [aggregateName: string]: Aggregate;
};
export type ProjectorMap = {
    [projectorName: string]: {
        [version: number]: typeof Projector;
    };
};
declare class Woltage {
    #private;
    static create(config: WoltageConfig): Promise<Woltage>;
    config: WoltageConfig;
    constructor(config: WoltageConfig);
    addProjection(projectionName: string, projectionVersion: number, projectorName: string, projectorVersion: number, storeName: string): Promise<void>;
    setProjectionActive(projectionName: string, projectionVersion: number, force?: boolean): Promise<void>;
    getProjections(): {
        [k: string]: Projection;
    };
    getProjection(projectionName: string, projectionVersion: number): Projection | undefined;
    removeProjection(projectionName: string, projectionVersion: number, force?: boolean): Promise<void>;
    executeCommand(aggregateName: string, aggregateId: string, commandName: string, payload: any, context?: any): Promise<void>;
    executeQuery<TClass extends typeof ReadModel, THandler extends keyof InstanceType<TClass>>(readModel: TClass, handlerName: THandler, query: InstanceType<TClass>[THandler] extends (...args: any) => any ? Parameters<InstanceType<TClass>[THandler]>[0] : any, context?: any): Promise<InstanceType<TClass>[THandler] extends (...args: any) => any ? ReturnType<InstanceType<TClass>[THandler]> : InstanceType<TClass>[THandler]>;
    executeQuery(readModelName: string, handlerName: string, query: any, context?: any): Promise<unknown>;
    start(): Promise<void>;
    stop(): Promise<void>;
}
export type { Woltage };
declare const _default: typeof Woltage.create;
export default _default;
