import type { ClassConstructor } from "@3fv/guard"; import type { DexieTableConfig, DexieTableOptionsArg } from "./types/index"; import Dexie from "dexie"; export declare class DexieDatabaseBuilder { readonly dbName: string; readonly version: number; readonly schema: Schema; /** * Add a table to the schema. * The current {@link DexieDatabaseBuilder.schema} is shallow * copied along with the new: * * ``` * { [tableName]: DexieTableConfig } * ``` * @template TableName, T, PrimaryKeyField * @param {TableName} name * @param {ClassConstructor} ctor * @param {PrimaryKeyField} primaryKeyField * @param {string} indexConfig * @returns {DexieDatabaseBuilder< * Schema & { * [Name in TableName]: DexieTableConfig * } * >} * @param options */ table(name: TableName, ctor: ClassConstructor, primaryKeyField: PrimaryKeyField, indexConfig: string, options?: DexieTableOptionsArg): DexieDatabaseBuilder; }, Dexie & DB & { [Name in TableName]: Dexie.Table; }>; table(name: TableName, ctor: ClassConstructor, primaryKeyField: PrimaryKeyField, indexConfig: string, options?: DexieTableOptionsArg): DexieDatabaseBuilder; }, Dexie & DB & { [Name in TableName]: Dexie.Table; }>; /** * Create the database * * @param dbName * @param version * @return {Promise>} */ create(dbName?: string, version?: number): DB; /** * Create & Open the database * * @param dbName * @param version * @return {Promise>} */ open(dbName?: string, version?: number): Promise; /** * Private constructor, accepts current schema * and stores as readonly, it is immutable, * but not frozen for performance * * @param schema instance * @param dbName * @private * @param version */ private constructor(); /** * Create a new instance, constructor is private to * simplify typing demands * * @param dbName * @param version * @return {DexieDatabaseBuilder<{}>} */ static new(dbName?: string, version?: number): DexieDatabaseBuilder<{}, Dexie>; } /** * Get a new database builder * * @param dbName * @param version * @return {DexieDatabaseBuilder<{}>} */ export declare function dexieDatabaseBuilder(dbName?: string, version?: number): DexieDatabaseBuilder<{}, Dexie>; export default dexieDatabaseBuilder;