import { Collection, type CollectionOptions } from "../collection/collection"; import { type MutationEvent } from "../collection/observer"; export type Db = { [Property in keyof T]: T[Property] extends unknown[] ? Collection : Collection; }; export type Instance = T extends unknown[] ? Collection : Db; export type AllowedData = unknown[] | Record; export type DbCollectionOptions = { [Property in keyof Shape]: DatabaseCollectionOptions; }; export type DatabaseCollectionOptions = Shape extends unknown[] ? CollectionOptions : Partial>; export type DatabaseOptions = { collection?: DatabaseCollectionOptions; writeOnCommit?: boolean; }; export type ValueOf = T[keyof T]; export type DbObserverEvent = T[Property] extends unknown[] ? MutationEvent : DatabaseObserverCallback; export type DbObserverCallback = { [Property in keyof T]: (collection: Property, event: DbObserverEvent) => void; }; export type DatabaseObserverCallback = Shape extends unknown[] ? (event: MutationEvent) => void : ValueOf>; export declare function isCollection(instance: unknown): instance is T; export declare function isDatabase(instance: unknown): instance is T;