import { DataTypes, Sequelize } from 'sequelize'; import type { Model, ModelStatic, Options } from 'sequelize'; import type { LoggerFactory } from './logger'; declare type Db = { sequelize?: Sequelize; } & Record>; export declare type DbModule = { db: Db; init: () => Promise; }; export interface DialectOptions { ssl?: { ca: string; cert?: string; key?: string; }; } export interface DbOptions extends Options { dialectOptions?: DialectOptions; } export interface DbConfig { url: string | string[]; options: DbOptions; } export declare type ModelFactory = (sequelize: Sequelize, dataTypes: typeof DataTypes) => ModelStatic; export declare type ModelFactories = ModelFactory[]; /** * Constructs new object containing `init` function and `db` object * * @param {DbConfig} dbConfig DB configuration object * @param {LoggerFactory} loggerFactory object containing `getLogger` function * @param {ModelFactories} modelFactories array of factory functions returning sequelize model * * @returns {DbModule} DB module */ declare function getDbModule(dbConfig: DbConfig, loggerFactory: LoggerFactory, modelFactories: ModelFactories): DbModule; export default getDbModule; //# sourceMappingURL=db.d.ts.map