import { LoadModelCtx, models } from './modelsApi'; import { ModelModules, RegisterModelsOptions } from './registerModels'; import type * as frameworkSchemas from "./models"; type ExtractModelNamesFromSchemas = { [K in keyof TModules]-?: K extends `${infer Name}Schema` ? Name : never; }[keyof TModules] & string; type FrameworkModelName = ExtractModelNamesFromSchemas; type RpcbaseGlobalModelName = Extract; export type TenantModelName = ExtractModelNamesFromSchemas; export type GlobalModelName = RpcbaseGlobalModelName | ExtractModelNamesFromSchemas; type LoadedTenantModel = Awaited>; type LoadedGlobalModel = Awaited>; type ModelsGetFn = { (modelName: TenantModelName, ctx: LoadModelCtx): ReturnType<(typeof models)["get"]>; []>(modelNames: TNames, ctx: LoadModelCtx): Promise<{ [K in keyof TNames]: LoadedTenantModel; }>; }; type ModelsGetUnsafeFn = { (modelName: TenantModelName, ctx: LoadModelCtx): ReturnType<(typeof models)["getUnsafe"]>; []>(modelNames: TNames, ctx: LoadModelCtx): Promise<{ [K in keyof TNames]: LoadedTenantModel; }>; }; type ModelsGetGlobalFn = { (modelName: GlobalModelName, ctx: LoadModelCtx): ReturnType<(typeof models)["getGlobal"]>; []>(modelNames: TNames, ctx: LoadModelCtx): Promise<{ [K in keyof TNames]: LoadedGlobalModel; }>; }; export type ModelsConfig = { tenant: TTenantModules; global?: TGlobalModules; }; export type ModelsClient = { register: (modules: ModelsConfig, options?: RegisterModelsOptions) => void; get: ModelsGetFn; getUnsafe: ModelsGetUnsafeFn; getGlobal: ModelsGetGlobalFn; }; export declare const createModels: >(modules: ModelsConfig, options?: RegisterModelsOptions) => ModelsClient; export {}; //# sourceMappingURL=createModels.d.ts.map