///
import * as Sequelize from 'sequelize';
import { Spec, SpecType, Model } from 'pretur.spec';
import { ProviderPool } from './pool';
import { TableCreationHook, TableDestructionHook, DatabaseAfterCreationHook, DatabaseAfterDestructionHook } from './buildDatabase';
export declare type DatabaseInstance = Sequelize.Instance>> & Partial>;
export declare type DatabaseModel = Sequelize.Model, Partial>>;
export interface UninitializedDatabaseModel {
database: DatabaseModel;
creationHook?: TableCreationHook;
destructionHook?: TableDestructionHook;
afterDatabaseCreationHook?: DatabaseAfterCreationHook;
afterDatabaseDestructionHook?: DatabaseAfterDestructionHook;
initialize(pool: ProviderPool): void;
}
export interface BuildDatabaseOptions {
attributeToFieldMap?: {
[P in keyof T['fields']]?: string;
};
tableName?: string;
creationHook?: TableCreationHook;
destructionHook?: TableDestructionHook;
afterDatabaseCreationHook?: DatabaseAfterCreationHook;
afterDatabaseDestructionHook?: DatabaseAfterDestructionHook;
}
export declare function buildDatabaseModel(spec: Spec, sequelize: Sequelize.Sequelize, options?: BuildDatabaseOptions): UninitializedDatabaseModel;