import { Operation } from './operation';
import type { ActionToGenerateType, ChangeFieldToGenerateData, CreateFieldToGenerateData, DeleteFieldToGenerateData, RenameFieldToGenerateData, ToStringFunctionReturnType } from './types';
import type { DatabaseAdapter } from '../../engine';
import type { Field } from '../../models/fields';
import type { Migration } from '../migrate/migration';
import type { State } from '../state';
import type { OriginalOrStateModelsByNameType } from '../types';
/**
 * This operation is used when a new field is created on a specific model. If the hole model is created
 * we will just use CreateModel instead.
 */
export declare class CreateField extends Operation {
    modelName: string;
    fieldName: string;
    fieldDefinition: Field<any, any>;
    constructor(modelName: string, fieldName: string, fieldDefinition: Field<any, any>);
    stateForwards(state: State, domainName: string, domainPath: string): Promise<void>;
    run(migration: Migration, engineInstance: DatabaseAdapter, fromState: OriginalOrStateModelsByNameType, toState: OriginalOrStateModelsByNameType, returnOfInit: any): Promise<void>;
    static toGenerate(domainName: string, domainPath: string, modelName: string, data: CreateFieldToGenerateData): Promise<ActionToGenerateType<CreateFieldToGenerateData>>;
    static toString(engine: DatabaseAdapter, indentation: number | undefined, data: ActionToGenerateType<CreateFieldToGenerateData>): Promise<ToStringFunctionReturnType>;
    static describe(data: ActionToGenerateType<CreateFieldToGenerateData>): Promise<string>;
}
export declare class ChangeField extends Operation {
    modelName: string;
    fieldName: string;
    fieldDefinitionBefore: Field<any, any>;
    fieldDefinitionAfter: Field<any, any>;
    constructor(modelName: string, fieldName: string, fieldDefinitionBefore: Field<any, any>, fieldDefinitionAfter: Field<any, any>);
    stateForwards(state: State, domainName: string, domainPath: string): Promise<void>;
    run(migration: Migration, engineInstance: DatabaseAdapter, fromState: OriginalOrStateModelsByNameType, toState: OriginalOrStateModelsByNameType, returnOfInit: any): Promise<void>;
    static toGenerate(domainName: string, domainPath: string, modelName: string, data: ChangeFieldToGenerateData): Promise<ActionToGenerateType<ChangeFieldToGenerateData>>;
    static toString(engine: DatabaseAdapter, indentation: number | undefined, data: ActionToGenerateType<ChangeFieldToGenerateData>): Promise<ToStringFunctionReturnType>;
    static describe(data: ActionToGenerateType<ChangeFieldToGenerateData>): Promise<string>;
}
export declare class RenameField extends Operation {
    modelName: string;
    fieldNameBefore: string;
    fieldNameAfter: string;
    fieldDefinition: Field<any, any>;
    constructor(modelName: string, fieldNameBefore: string, fieldNameAfter: string, fieldDefinition: Field<any, any>);
    stateForwards(state: State, domainName: string, domainPath: string): Promise<void>;
    run(migration: Migration, engineInstance: DatabaseAdapter, fromState: OriginalOrStateModelsByNameType, toState: OriginalOrStateModelsByNameType, returnOfInit: any): Promise<void>;
    static toGenerate(domainName: string, domainPath: string, modelName: string, data: RenameFieldToGenerateData): Promise<ActionToGenerateType<RenameFieldToGenerateData>>;
    static toString(engine: DatabaseAdapter, indentation: number | undefined, data: ActionToGenerateType<RenameFieldToGenerateData>): Promise<ToStringFunctionReturnType>;
    static describe(data: ActionToGenerateType<RenameFieldToGenerateData>): Promise<string>;
}
export declare class DeleteField extends Operation {
    modelName: string;
    fieldName: string;
    constructor(modelName: string, fieldName: string);
    stateForwards(state: State, domainName: string, domainPath: string): Promise<void>;
    run(migration: Migration, engineInstance: DatabaseAdapter, fromState: OriginalOrStateModelsByNameType, toState: OriginalOrStateModelsByNameType, returnOfInit: any): Promise<void>;
    static toGenerate(domainName: string, domainPath: string, modelName: string, data: DeleteFieldToGenerateData): Promise<ActionToGenerateType<DeleteFieldToGenerateData>>;
    static toString(_engine: DatabaseAdapter, indentation: number | undefined, data: ActionToGenerateType<DeleteFieldToGenerateData>): Promise<ToStringFunctionReturnType>;
    static describe(data: ActionToGenerateType<DeleteFieldToGenerateData>): Promise<string>;
}
//# sourceMappingURL=fields.d.ts.map