import { EventEmitter } from 'events';
import type { EventbaseConfig } from './types.js';
export type EventbaseManagerConfig = {
    dbPath?: string;
    getStatsStreamName?: (streamName: string) => string;
    nats: EventbaseConfig['nats'];
    keepAliveSeconds?: number;
    onMessage?: EventbaseConfig['onMessage'];
    cleanupIntervalMs?: number;
};
export declare class EventbaseManager extends EventEmitter {
    private config;
    private instances;
    private dbPath?;
    private nats;
    private keepAliveSeconds;
    private onMessage?;
    private cleanupIntervalMs;
    private cleanupInterval;
    private getStatsStreamName?;
    constructor(config: EventbaseManagerConfig);
    private startCleanupInterval;
    private stopCleanupInterval;
    getStream(streamName: string): Promise<{
        closed: boolean;
        get: <T extends object>(id: string) => Promise<{
            meta: import("./index.js").MetaData;
            data: T;
        } | null>;
        put: <T extends object>(id: string, data: T) => Promise<{
            meta: import("./index.js").MetaData;
            data: T;
        }>;
        insert: <T extends object>(data: T) => Promise<{
            id: string;
            meta: import("./index.js").MetaData;
            data: T;
        }>;
        delete: (id: string) => Promise<{
            purged: number;
        }>;
        keys: (pattern?: string) => Promise<string[]>;
        subscribe: <T extends object>(query: {
            [key: string]: any;
        }, callback: (key: string, data: T, meta: import("./index.js").MetaData, event: import("./types.js").Event) => void) => () => void;
        query: <T extends object>(queryObject: object, options?: {
            limit?: number;
            offset?: number;
            sort?: {
                [key: string]: 1 | -1;
            };
            project?: {
                [key: string]: 1;
            };
        }) => Promise<T[]>;
        count: (queryObject: object) => Promise<number>;
        getLastAccessed: () => number;
        getActiveSubscriptions: () => number;
        deleteStream: () => Promise<void>;
        close: () => Promise<void>;
    }>;
    closeAll(): Promise<void>;
}
export declare function createEventbaseManager(config: EventbaseManagerConfig): EventbaseManager;
