import type { Event, EventbaseConfig } from './types.js';
type QueryOptions = {
    limit?: number;
    offset?: number;
    sort?: {
        [key: string]: 1 | -1;
    };
    project?: {
        [key: string]: 1;
    };
};
export interface MetaData {
    dateCreated: string;
    dateModified: string;
    changes: number;
}
type SubscriptionCallback<T extends object> = (key: string, data: T, meta: MetaData, event: Event) => void;
type SubscriptionQuery = {
    [key: string]: any;
};
export declare function createEventbase(config: EventbaseConfig): Promise<{
    closed: boolean;
    get: <T extends object>(id: string) => Promise<{
        meta: MetaData;
        data: T;
    } | null>;
    put: <T extends object>(id: string, data: T) => Promise<{
        meta: MetaData;
        data: T;
    }>;
    insert: <T extends object>(data: T) => Promise<{
        id: string;
        meta: MetaData;
        data: T;
    }>;
    delete: (id: string) => Promise<{
        purged: number;
    }>;
    keys: (pattern?: string) => Promise<string[]>;
    subscribe: <T extends object>(query: SubscriptionQuery, callback: SubscriptionCallback<T>) => () => void;
    query: <T extends object>(queryObject: object, options?: QueryOptions) => Promise<T[]>;
    count: (queryObject: object) => Promise<number>;
    getLastAccessed: () => number;
    getActiveSubscriptions: () => number;
    deleteStream: () => Promise<void>;
    close: () => Promise<void>;
}>;
export { createEventbaseManager } from './manager.js';
export default createEventbase;
