import { DataType, ModelAttributeColumnOptions, ModelIndexesOptions, SyncOptions, Transactionable } from 'sequelize'; import { Collection } from '../collection'; import { Database } from '../database'; import { ModelEventTypes } from '../types'; export interface FieldContext { database: Database; collection: Collection; } export interface BaseFieldOptions { name?: string; hidden?: boolean; translation?: boolean; [key: string]: any; } export interface BaseColumnFieldOptions extends BaseFieldOptions, Omit { dataType?: DataType; index?: boolean | ModelIndexesOptions; } export declare abstract class Field { options: any; context: FieldContext; database: Database; collection: Collection; [key: string]: any; constructor(options?: any, context?: FieldContext); get name(): any; get type(): any; abstract get dataType(): any; sync(syncOptions: SyncOptions): Promise; init(): void; on(eventName: ModelEventTypes, listener: (...args: any[]) => void): this; off(eventName: string, listener: (...args: any[]) => void): this; get(name: string): any; remove(): void | Field; columnName(): any; existsInDb(options?: Transactionable): Promise; merge(obj: any): void; bind(): void; unbind(): void; toSequelize(): any; isSqlite(): boolean; typeToString(): any; }