import "reflect-metadata"; import { ContainerModule } from "inversify"; import { RxDatabase, RxCollection } from "rxdb"; import { NarwhalSchema } from "./data_engine/NarwhalSchema"; import { INarwhalSchemaParams, ISystemContextComponent } from "./data_engine/schema_parser"; import { ConcreteProxiedCollection } from "./data_engine/proxied_collection"; export interface INarwhalNamespace { schema: { [schemaName: string]: INarwhalSchemaParams; }; views?: { [viewName: string]: any; }; } export declare type DataEngineDatabaseProdiver = (db?: DataEngineDatabase) => Promise; export declare type DataEngineDatabase = RxDatabase; export declare class DataEngineDatabaseContainer { db: DataEngineDatabase; init(db?: RxDatabase): Promise; } export declare class EmptyContext implements ISystemContextComponent { context(): { [key: string]: any; }; } export interface INamespaceHandlerHook { handleNamespace(name: string, version: number, namespace: INarwhalNamespace): void; } export declare class NamespaceHandler { hooks: INamespaceHandlerHook[]; addNamespace(namespace_name: string, namespace: INarwhalNamespace, version?: number): void; } export declare type ConcreteProxiedCollectionFactory = (schema: NarwhalSchema, collection: RxCollection) => ConcreteProxiedCollection; export declare const container_module_generator: (db?: RxDatabase) => ContainerModule;