/**
 * @typedef {import('./types.js').Handler} Handler
 *
 * @typedef {object} Hooks
 * @property {Handler|Handler[]} [all]
 * @property {Handler|Handler[]} [create]
 * @property {Handler|Handler[]} [update]
 * @property {Handler|Handler[]} [findById]
 * @property {Handler|Handler[]} [find]
 * @property {Handler|Handler[]} [search]
 * @property {Handler|Handler[]} [deleteById]
 * @property {Handler|Handler[]} [delete]
 */
/**
 * @typedef {object} SetupRestOptions
 * @property {import('../src/adapters/Adapter.js').Adapter} adapter
 * @property {import('veloze').BodyParserOptions} bodyParserOpts
 * @property {Hooks} preHooks
 * @property {Hooks} postHooks
 */
/**
 * @param {SetupRestOptions} options
 * @returns {Router}
 */
export function modelRouter(options: SetupRestOptions): Router;
export type Handler = import("./types.js").Handler;
export type Hooks = {
    all?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    create?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    update?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    findById?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    find?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    search?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    deleteById?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
    delete?: import("veloze/types/types.js").Handler | import("veloze/types/types.js").Handler[] | undefined;
};
export type SetupRestOptions = {
    adapter: import("../src/adapters/Adapter.js").Adapter;
    bodyParserOpts: import("veloze").BodyParserOptions;
    preHooks: Hooks;
    postHooks: Hooks;
};
import { Router } from 'veloze';
