import { NormalizeConstructor } from '@adonisjs/core/types/helpers';
import { LucidModel } from '@adonisjs/lucid/types/model';
import type { UUID } from 'crypto';
import { DateTime } from 'luxon';
import '../../lib/vine_types/vine_dateiso.js';
export type AKNakedModelClass = LucidModel & {
    excludeFromUpdate: string[];
    secondaryKey: string | string[] | undefined;
    secondaryKeys: string[];
    keys: string[];
};
export declare const AKNakedModelMixin: <M extends NormalizeConstructor<LucidModel>>(superclass: M) => AKNakedModelClass;
export declare const AKNakedModel: AKNakedModelClass;
export type AKIdModelRow = {
    id: UUID;
};
export type AKIdModelClass<M> = M & {
    primaryKey: string;
    selfAssignPrimaryKey: boolean;
    new (...args: any[]): AKIdModelRow;
};
export declare const AKIdModelMixin: <M extends NormalizeConstructor<AKNakedModelClass>>(superclass: M) => AKIdModelClass<M>;
export declare const AKModel: AKIdModelClass<AKNakedModelClass>;
export type AKAuditableModelRow = {
    createdAt: DateTime;
    updatedAt: DateTime | null;
};
export type AKAuditableModelClass<M> = M & {
    new (...args: any[]): AKAuditableModelRow;
};
export declare const AKAuditableModelMixin: <M extends NormalizeConstructor<AKNakedModelClass>>(superclass: M) => AKAuditableModelClass<M>;
export declare const AKAuditableModel: AKAuditableModelClass<AKIdModelClass<AKNakedModelClass>>;
