import type { AuthValidator } from '@declaro/auth';
import type { AnyModelSchema } from '@declaro/core';
import type { ModelService } from '../domain/services/model-service';
import type { InferDetail, InferInput, InferLookup, InferSummary } from '../shared/utils/schema-inference';
import { ReadOnlyModelController } from './read-only-model-controller';
export declare class ModelController<TSchema extends AnyModelSchema> extends ReadOnlyModelController<TSchema> {
    protected readonly service: ModelService<TSchema>;
    protected readonly authValidator: AuthValidator;
    constructor(service: ModelService<TSchema>, authValidator: AuthValidator);
    create(input: InferInput<TSchema>): Promise<InferDetail<TSchema>>;
    update(lookup: InferLookup<TSchema>, input: InferInput<TSchema>): Promise<InferDetail<TSchema>>;
    remove(lookup: InferLookup<TSchema>): Promise<InferSummary<TSchema>>;
    restore(lookup: InferLookup<TSchema>): Promise<InferSummary<TSchema>>;
}
//# sourceMappingURL=model-controller.d.ts.map