import type { AbstractEntity } from '../../../models/base'; import type { AbstractRepository } from '../../../repositories'; import type { TAnyObjectSchema } from '../../common/schema-builders'; import type { AnyType } from '@venizia/ignis-helpers/common'; import type { Env, Schema } from 'hono'; import type { TEntityDataObject, TEntityPersistObject, TRouteContext } from '../../common'; import { BaseRestController } from '../../rest/base'; type TBulkWhereResolution = { where: WhereType; error?: undefined; } | { where?: undefined; error: Response; }; /** Base tier of a generated CRUD controller - the repository handle; the response helpers (`respond`, `setListHeaders`) live on BaseRestController so hand-written controllers share them. Read and write verbs are layered on by ReadableCrudController / PersistableCrudController. */ export declare abstract class AbstractCrudController = AbstractEntity, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, TDataObject extends object = TEntityDataObject, TPersistObject extends object = TEntityPersistObject> extends BaseRestController { repository: AbstractRepository; constructor(opts: { scope: string; path: string; isStrict?: boolean; repository: AbstractRepository; definitions: AnyType; }); /** 400 when a bulk operation is missing its `where` filter; undefined when it is present. */ bulkWhereError(opts: { context: TRouteContext; where?: object; }): import("../../common").TJsonResponse | undefined; /** Bulk `where` from the query or the JSON body (long id lists outgrow a URL). Both, or none, is a 400. */ resolveBulkWhere(opts: { context: TRouteContext; where?: { fromQuery?: WhereType; fromBody?: WhereType; }; }): TBulkWhereResolution; } export {}; //# sourceMappingURL=abstract.d.ts.map