export declare type Types = StringConstructor | 'String' | NumberConstructor | 'Number' | DateConstructor | 'Date' | BooleanConstructor | 'Boolean' | 'Integer' | ArrayConstructor | 'Array' | string; export declare type mapper = 'joi' | 'sql'; export declare type Technology = 'sql'; export interface SchemaItems { dataType: Types; primaryKey?: boolean; references?: { table: string; column: string; onDelete?: 'restrict' | 'cascade' | 'no action' | 'set null' | 'set default'; onUpdate?: 'restrict' | 'cascade' | 'no action' | 'set null' | 'set default'; }; notNull?: boolean; unique?: boolean; defaultValue?: string | number | Date | boolean | Type; trim?: boolean; allowed?: string[] | number[] | boolean[]; name?: Name | undefined; max?: number; min?: number; contains?: Types; hidden?: Boolean; } export interface Named { name?: Name; } export interface Definition extends Named { jsType?: Type; dataType: string; primaryKey?: boolean; references?: { table: string; column: string; onDelete?: 'restrict' | 'cascade' | 'no action' | 'set null' | 'set default'; onUpdate?: 'restrict' | 'cascade' | 'no action' | 'set null' | 'set default'; }; notNull?: boolean; unique?: boolean; defaultValue?: Type; } export interface Modelschema { [x: string]: SchemaItems | Modelschema; } export declare type Dialects = 'mssql' | 'oracle' | 'mysql' | 'postgres' | 'sqlite'; export interface BuildSchemaOptions { mapper?: mapper; dialect?: Dialects; sanitize?: boolean; } export default Modelschema;