import { Constructor } from '@adonisjs/core/types/common';
import type { UUID } from 'node:crypto';
import { AKModel } from '../model.js';
import { AKModelServiceBaseClass } from './base.js';
import { AKModelServiceFetchClass } from './fetch.js';
import { ModelPayload } from './index.js';
export type AKModelServiceUpdateClass<M extends typeof AKModel> = AKModelServiceBaseClass<M> & AKModelServiceFetchClass<M> & Constructor<{
    preUpdate(item: InstanceType<M>, payload: ModelPayload<InstanceType<M>>): Promise<ModelPayload<InstanceType<M>>>;
    update(id: UUID, payload: ModelPayload<InstanceType<M>>): Promise<InstanceType<M>>;
    postUpdate(item: InstanceType<M>, payload: ModelPayload<InstanceType<M>>, previousItemSerialized: ModelPayload<InstanceType<M>>): Promise<InstanceType<M>>;
    updateRelations(item: InstanceType<M>, payload: ModelPayload<InstanceType<M>>): Promise<void>;
}>;
export declare const AKModelServiceUpdate: <M extends typeof AKModel>(superclass: AKModelServiceBaseClass<M> & AKModelServiceFetchClass<M>) => AKModelServiceUpdateClass<M>;
