/// <reference types="node" />
import { Router } from 'express';
import { Model, Schema, Document } from 'mongoose';
import { RequestHandler, RouterOptions } from 'express';
import { ServeOptions, PermissionChecks } from './definitions/model';
import { EventEmitter } from 'events';
import { IRole } from './models/roleSchema';
declare type Connection = {
    model: <T extends Document>(el: string, schema: Schema) => Model<T>;
};
declare type ApiRouter = Router & {
    roleModel?: () => Model<IRole>;
    setModel?: (path: string, Model: Model<any>, ServeOptions?: ServeOptions) => EventEmitter & PermissionChecks;
    publishUiTree?: () => RequestHandler;
    setRoleEndpoints?: (path?: string) => void;
    setGlobalRoute?: (string: string) => void;
    setConnection?: (connection: Connection) => void;
};
declare function ApiRouter(): ApiRouter;
declare function ApiRouter(options: {
    isMongo4?: boolean;
} & RouterOptions): ApiRouter;
export { ApiRouter };
