import type { AnyModelSchema } from '@declaro/core';
import type { InferDetail, InferFilters, InferLookup, InferSearchResults, InferSort } from '../../shared/utils/schema-inference';
import { BaseModelService, type IActionOptions } from './base-model-service';
export interface ILoadOptions extends IActionOptions {
}
export interface ISearchOptions<TSchema extends AnyModelSchema> extends IActionOptions {
    sort?: InferSort<TSchema>;
}
export declare class ReadOnlyModelService<TSchema extends AnyModelSchema> extends BaseModelService<TSchema> {
    /**
     * Load a single record by its lookup criteria.
     * @param lookup The lookup criteria to find the record.
     * @param options Additional options for the load operation.
     * @returns The loaded record details.
     */
    load(lookup: InferLookup<TSchema>, options?: ILoadOptions): Promise<InferDetail<TSchema>>;
    /**
     * Load multiple records by their lookup criteria.
     * @param lookups The lookup criteria to find the records.
     * @param options Additional options for the load operation.
     * @returns An array of loaded record details.
     */
    loadMany(lookups: InferLookup<TSchema>[], options?: ILoadOptions): Promise<InferDetail<TSchema>[]>;
    /**
     * Search for records matching the given filters.
     * @param filters The filters to apply to the search.
     * @param options Additional options for the search operation.
     * @returns The search results.
     */
    search(filters: InferFilters<TSchema>, options?: ISearchOptions<TSchema>): Promise<InferSearchResults<TSchema>>;
}
//# sourceMappingURL=read-only-model-service.d.ts.map