import type { AnyModelSchema } from '@declaro/core';
import type { InferDetail, InferInput, InferLookup, InferSummary } from '../../shared/utils/schema-inference';
import type { IModelServiceArgs } from './model-service-args';
import { ReadOnlyModelService } from './read-only-model-service';
export declare class ModelService<TSchema extends AnyModelSchema> extends ReadOnlyModelService<TSchema> {
    constructor(args: IModelServiceArgs<TSchema>);
    /**
     * Removes a record by its lookup criteria.
     * @param lookup The lookup criteria to find the record.
     * @returns The removed record.
     */
    remove(lookup: InferLookup<TSchema>): Promise<InferSummary<TSchema>>;
    /**
     * Restores a record by its lookup criteria.
     * If a soft-deleted copy exists, it will be restored.
     * @param lookup The lookup criteria to find the record to restore.
     * @returns
     */
    restore(lookup: InferLookup<TSchema>): Promise<InferSummary<TSchema>>;
    create(input: InferInput<TSchema>): Promise<InferDetail<TSchema>>;
    update(lookup: InferLookup<TSchema>, input: InferInput<TSchema>): Promise<InferDetail<TSchema>>;
}
//# sourceMappingURL=model-service.d.ts.map