import type { AbstractEntity } from '../../models/index.js'; import type { AbstractRepository } from '../../repositories/index.js'; import type { TAnyObjectSchema } from '../common/schema-builders.js'; import type { AnyType, ValueOrPromise } from '@venizia/ignis-helpers/common'; import { BaseHelper } from '@venizia/ignis-helpers/core'; import type { Env, Schema } from 'hono'; import type { ICrudControllerOptions, ICustomizableRoutes, TEntityDataObject, TEntityPersistObject } from '../common/index.js'; /** Factory for generating typed CRUD controllers from entity definitions. */ export declare class ControllerFactory extends BaseHelper { constructor(); static defineCrudController = AbstractEntity, Routes extends ICustomizableRoutes = ICustomizableRoutes, RouteEnv extends Env = Env, RouteSchema extends Schema = {}, BasePath extends string = '/', ConfigurableOptions extends object = {}, TDataObject extends object = TEntityDataObject, TPersistObject extends object = TEntityPersistObject>(defOpts: ICrudControllerOptions): { new (repository: AbstractRepository): { /** Registers each CRUD route whose handler tier supplies it, honoring enabledRoutes/readonly. */ binding(): ValueOrPromise; create(opts: { context: import("../index.js").TRouteContext; }): Promise>; assertNonEmptyUpdate(opts: { scope: string; data: object; }): void; updateById(opts: { context: import("../index.js").TRouteContext; }): Promise>; updateBy(opts: { context: import("../index.js").TRouteContext; }): Promise; deleteById(opts: { context: import("../index.js").TRouteContext; }): Promise>; deleteBy(opts: { context: import("../index.js").TRouteContext; }): Promise; getBaseWhere(_opts: { context: import("../index.js").TRouteContext; }): Promise | undefined>; count(opts: { context: import("../index.js").TRouteContext; }): Promise>; find(opts: { context: import("../index.js").TRouteContext; }): Promise>; findById(opts: { context: import("../index.js").TRouteContext; }): Promise>; findOne(opts: { context: import("../index.js").TRouteContext; }): Promise>; repository: AbstractRepository; bulkWhereError(opts: { context: import("../index.js").TRouteContext; where?: object; }): import("../index.js").TJsonResponse | undefined; resolveBulkWhere(opts: { context: import("../index.js").TRouteContext; where?: { fromQuery?: WhereType | undefined; fromBody?: WhereType | undefined; } | undefined; }): { where?: undefined; error: Response; } | { where: WhereType; error?: undefined; }; measure(opts: { scope: string; args: unknown; task: () => Promise; }): Promise; normalizeCountData = import("../index.js").TRouteContext, ResponseData extends { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; } = { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; }>(opts: { context: RequestContext; payload: ResponseData; }): ResponseData | import("@venizia/ignis-helpers/common").TNullable; getRequestedExtras(opts: { context: import("../index.js").TRouteContext; }): Array; respond(opts: { context: import("../index.js").TRouteContext; format: import("../index.js").TResponseFormat; payload: { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; }; range?: import("../../repositories/index.js").TDataRange; extra?: never; }): R | { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; } | null | undefined; respond>(opts: { context: import("../index.js").TRouteContext; format: import("../index.js").TResponseFormat; payload: { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; }; range?: import("../../repositories/index.js").TDataRange; extra: Extra; }): Promise; } | { count?: number; data?: import("@venizia/ignis-helpers/common").TNullable; extra: Partial>; } | null | undefined>; respond(opts: { context: import("../index.js").TRouteContext; format: import("../index.js").TResponseFormat; payload: { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; }; range?: import("../../repositories/index.js").TDataRange; extra?: Record; }): ValueOrPromise; extra?: Record; } | null | undefined>; respondWithExtra(opts: { context: import("../index.js").TRouteContext; payload: { count: number; data?: import("@venizia/ignis-helpers/common").TNullable; }; extra: Record; }): Promise; } | { count: number; data: import("@venizia/ignis-helpers/common").TNullable; extra: Record; } | { data: import("@venizia/ignis-helpers/common").TNullable; extra: Record; count?: undefined; } | null | undefined>; setListHeaders(opts: { context: import("../index.js").TRouteContext; count: number; } & ({ range: import("../../repositories/index.js").TDataRange; } | { offset: number; total: number; })): void; toHonoHandler(opts: { handler: import("../index.js").TRouteHandler; }): import("hono").Handler) | (import("@hono/zod-openapi").RouteConfigToTypedResponse | Promise>)>; bindRoute(opts: { configs: RouteConfig; }): import("../index.js").IBindRouteOptions; defineRoute(opts: { configs: RouteConfig; handler: import("../index.js").TRouteHandler; hook?: import("@hono/zod-openapi").Hook | undefined; }): import("../index.js").IDefineRouteOptions; defineJSXRoute(opts: { configs: RouteConfig; handler: import("../index.js").TRouteHandler; hook?: import("@hono/zod-openapi").Hook | undefined; }): import("../index.js").IDefineRouteOptions; isConfigured: boolean; router: import("@hono/zod-openapi").OpenAPIHono; path: string; definitions: Record; getRouter(): import("@hono/zod-openapi").OpenAPIHono; registerRoutesFromRegistry(opts?: { paths?: import("../index.js").TRoutePathScope; }): void; configure(opts?: ConfigurableOptions | undefined): Promise>; buildRouteMiddlewares(opts: { configs: RouteConfig; }): { restConfig: Omit; security: { [x: string]: never[]; }[]; mws: import("hono").MiddlewareHandler[]; }; getRouteConfigs(opts: { configs: RouteConfig; }): RouteConfig & { getRoutingPath(): RouteConfig["path"] extends infer T ? T extends RouteConfig["path"] ? T extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${/*elided*/ any}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : T : never : never; }; getJSXRouteConfigs(opts: { configs: RouteConfig; }): RouteConfig & { getRoutingPath(): RouteConfig["path"] extends infer T ? T extends RouteConfig["path"] ? T extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${Rest extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${/*elided*/ any}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : Rest}` : T : never : never; }; scope: string; identifier: string; get logger(): import("@venizia/ignis-helpers/core").ILogger; set logger(value: import("@venizia/ignis-helpers/core").ILogger); getIdentifier(): string; getLogger(): import("@venizia/ignis-helpers/core").ILogger; }; }; } //# sourceMappingURL=controller.d.ts.map