import { HttpContext } from '@adonisjs/core/http';
import { Constructor } from '@adonisjs/core/types/common';
import '@akago/vine-lucid';
import { UUID } from 'crypto';
import { AKModel } from './model.js';
import { AKListFilter } from './services/filters/index.js';
import { AKModelServiceClass } from './services/index.js';
import { AKVineRequestData } from './vine_validate_middleware.js';
export type ModelControllerClass<ModelServiceClass extends AKModelServiceClass<ModelClass>, ModelClass extends typeof AKModel> = Constructor<{
    modelService: InstanceType<ModelServiceClass>;
    searchFields: (keyof InstanceType<ModelClass>['$attributes'])[];
    extraListFilters(): Promise<AKListFilter[]>;
    index(ctx: HttpContext): Promise<any>;
    show(ctx: HttpContext): Promise<any>;
    store(ctx: HttpContext, payload: AKVineRequestData): Promise<any>;
    update(ctx: HttpContext, payload: AKVineRequestData): Promise<any>;
    destroy(ctx: HttpContext): Promise<any>;
    extractIdFromParams(params: Record<string, any>): Promise<UUID>;
}>;
export declare const modelController: <ModelServiceClass extends AKModelServiceClass<Model>, Model extends typeof AKModel>(modelServiceClass: ModelServiceClass) => ModelControllerClass<ModelServiceClass, Model>;
