import { LucidModel, ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';
import { SchemaTypes } from '@vinejs/vine/types';
export declare const crudActions: readonly [{
    readonly label: "Paginate";
    readonly value: "index";
}, {
    readonly label: "Detail";
    readonly value: "show";
}, {
    readonly label: "Create";
    readonly value: "store";
}, {
    readonly label: "Update";
    readonly value: "update";
}, {
    readonly label: "Delete";
    readonly value: "destroy";
}];
export type CrudAction = (typeof crudActions)[number]['value'];
export interface CrudOperationsOptions<T extends LucidModel> {
    model: T;
    only?: CrudAction[];
    exclude?: CrudAction[];
    validators?: {
        store?: SchemaTypes;
        update?: SchemaTypes;
    };
    queryHandlers?: {
        index?: (query: ModelQueryBuilderContract<T>, qs: Record<string, string>) => void;
        show?: (query: ModelQueryBuilderContract<T>, qs: Record<string, string>) => void;
    };
    events?: {
        stored?: (model: InstanceType<T>) => void;
        updated?: (payload: any) => void;
    };
}
export interface CrudPaginationQs {
}
export declare function Crud<T extends LucidModel>(options: CrudOperationsOptions<T>): ClassDecorator;
