import type { Field, FieldWithOperationType, TextField } from '@palmares/databases';
export declare class DefaultBuilder<TField extends Field<any, any, any> | TextField<any, any, any>> {
    _: {
        field: TField;
        type: string;
    };
    constructor(fieldInstance: TField, type: string);
    $type<TType>(): (Field<{
        create: TType;
        read: TType;
        update: TType;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        hasDefaultValue: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<TType>> & DefaultBuilder<TField>) | (TextField<{
        create: TType;
        read: TType;
        update: TType;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        hasDefaultValue: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<TType>> & DefaultBuilder<TField>);
    $default(cb: `() => ${string}`): (Field<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        hasDefaultValue: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>) | (TextField<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        hasDefaultValue: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>);
    $onUpdate(cb: `() => ${string}`): (Field<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        hasDefaultValue: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>) | (TextField<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        hasDefaultValue: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>);
    references(cb: `() => ${string}`): (Field<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        hasDefaultValue: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>) | (TextField<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        hasDefaultValue: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>);
    primaryKey(): (Field<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        hasDefaultValue: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>) | (TextField<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        hasDefaultValue: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>);
    unique(): (Field<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        hasDefaultValue: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>) | (TextField<{
        create: any;
        read: any;
        update: any;
    }, {
        [x: string]: any;
        [x: number]: any;
        [x: symbol]: any;
    } & {
        unique: any;
        allowNull: any;
        dbIndex: any;
        underscored: any;
        isPrimaryKey: any;
        auto: any;
        hasDefaultValue: any;
        defaultValue: any;
        databaseName: any;
        typeName: any;
        engineInstance: any;
        customAttributes: any;
    }, import("@palmares/databases/dist/src/models/fields/types").FieldWithOperationTypeForSearch<any>> & DefaultBuilder<TField>);
    notNull<TFieldData extends {
        fieldType: 'field' | 'textField';
        type: {
            create: any;
            update: any;
            read: any;
        };
        defintions: any;
    } = TField extends TextField<infer TType, infer TDefinitions, any> ? {
        fieldType: 'textField';
        type: {
            create: NonNullable<TType['read']>;
            update: NonNullable<TType['read']>;
            read: NonNullable<TType['read']>;
        };
        defintions: TDefinitions;
    } : TField extends Field<infer TType, infer TDefinitions, any> ? {
        fieldType: 'field';
        type: {
            create: NonNullable<TType['read']>;
            update: NonNullable<TType['read']>;
            read: NonNullable<TType['read']>;
        };
        defintions: TDefinitions;
    } : {
        fieldType: 'field';
        type: {
            create: any;
            update: any;
            read: any;
        };
        defintions: any;
    }>(): TFieldData['fieldType'] extends 'field' ? Field<TFieldData['type'], TFieldData['defintions'], TFieldData['type']['read'] extends number | Date ? Pick<FieldWithOperationType<TFieldData['type']['read']>, 'lessThan' | 'greaterThan' | 'and' | 'in' | 'or' | 'eq' | 'is' | 'between'> : Pick<FieldWithOperationType<TFieldData['type']['read']>, 'and' | 'in' | 'or' | 'eq' | 'is'>> : TextField<TFieldData['type'], TFieldData['defintions'], TFieldData['type']['read'] extends number | Date ? Pick<FieldWithOperationType<TFieldData['type']['read']>, 'lessThan' | 'greaterThan' | 'and' | 'in' | 'or' | 'eq' | 'is' | 'between'> : Pick<FieldWithOperationType<TFieldData['type']['read']>, 'and' | 'in' | 'or' | 'eq' | 'is'>>;
    generatedAlwaysAs(cb: `() => ${string}`): TField & DefaultBuilder<TField>;
}
//# sourceMappingURL=utils.d.ts.map