import type { Field } from './field';
import type { ForeignKeyField } from './foreign-key';
import type { CustomImportsForFieldType } from './types';
import type { DatabaseAdapter } from '../../engine';
export type ToStringCallback = (engine: DatabaseAdapter<any>, field: Field<any, any, any>, defaultToStringCallback: ToStringCallback, customParams?: {
    constructorParams?: string;
    builderParams?: string;
}) => Promise<{
    stringfied: string;
    customImports: CustomImportsForFieldType[];
}>;
export declare function defaultToStringCallback(engine: Parameters<ToStringCallback>[0], field: Parameters<ToStringCallback>[1], _: Parameters<ToStringCallback>[2], customParams?: Parameters<ToStringCallback>[3]): Promise<{
    stringfied: string;
    customImports: CustomImportsForFieldType[];
}>;
export type CompareCallback = (engine: DatabaseAdapter<any>, existingField: Field<any, any, any>, newField: Field<any, any, any>, defaultCompareCallback: CompareCallback) => [boolean, string[]];
export declare function defaultCompareCallback(engine: DatabaseAdapter<any>, existingField: Parameters<CompareCallback>[1], newField: Parameters<CompareCallback>[2], _: Parameters<CompareCallback>[3]): [boolean, string[]];
export type OptionsCallback = (
/**
 * This will set the value of an old field to a new field.
 *
 * By default we let the Author/Maintainer of the package override the values of the old field if they
 * want to. Because of that. We have to pass the hiddenFieldName and getArgumentsFieldName to the function.
 *
 * @param hiddenFieldName - The hidden field name that is the argument that lives inside of your class, it's
 * hidden from the end user and from the author/maintainer of the package. Just you have access to it.
 * @param getArgumentsFieldName - On `getArgumentsCallback` we show some data (originally private) to the Author
 * /Maintainer. The Author should never have access to our internal implementation. This string maps each key
 * from that object. If set to undefined, the Author cannot override this value.
 * @param value - The value that you want to set to the field.
 */
setFieldValue: (hiddenFieldName: string, getArgumentsFieldName: string | undefined, value: any) => void, oldField: Field<any, any, any>, defaultOptionsCallback: OptionsCallback) => void;
export declare function defaultOptionsCallback(setFieldValue: Parameters<OptionsCallback>[0], oldField: Parameters<OptionsCallback>[1], _: Parameters<OptionsCallback>[2]): void;
export type NewInstanceArgumentsCallback = (field: Field<any, any, any>, defaultNewInstanceArgumentsCallback: NewInstanceArgumentsCallback) => any[];
export declare function defaultNewInstanceArgumentsCallback(_field: Parameters<NewInstanceArgumentsCallback>[0], _defaultNewInstanceArgumentsCallback: Parameters<NewInstanceArgumentsCallback>[1]): any[];
export declare function getRelatedToAsString(field: ForeignKeyField<any, any, any>): void;
export type GetArgumentsCallback = (field: Field<any, any, any>, defaultOptionsCallback: typeof defaultGetArgumentsCallback) => any;
export declare function defaultGetArgumentsCallback(field: Parameters<GetArgumentsCallback>[0], _: Parameters<GetArgumentsCallback>[1]): {
    $field: Field<any, any, any>;
    $model: (import("../model").ModelType<any, any> & typeof import("..").Model & typeof import("..").BaseModel) | undefined;
    typeName: string;
    fieldName: string;
    modelName: string;
    isAuto: boolean;
    primaryKey: boolean;
    defaultValue: any;
    allowNull: boolean;
    unique: boolean;
    dbIndex: boolean;
    databaseName: string | undefined;
    underscored: boolean;
    customAttributes: unknown;
};
//# sourceMappingURL=utils.d.ts.map