import type { AbstractEntity } from '../../../base/models/index.js'; import type { TMixinTarget } from '@venizia/ignis-helpers/common'; import type { MetadataRegistry as _MetadataRegistry } from '@venizia/ignis-inversion'; import { AuthorizeModelFormats } from '../common/constants.js'; import type { IModelAuthorizeSettings, IModelMetadata, IModelRegistryEntry, TDecoratorModelTarget } from '../common/types/index.js'; export declare const ModelMetadataMixin: >(baseClass: BaseClass) => { new (...args: any[]): { modelRegistry: Map; modelsBySchema: WeakMap; setModelMetadata(opts: { target: Target; metadata: IModelMetadata; }): void; getModelMetadata(opts: { target: Target; }): IModelMetadata | undefined; /** Registers a model (called by @model) - relations are stored as a resolver, not resolved immediately, so circular references between models resolve lazily in buildSchema(). */ registerModel>(opts: { target: TDecoratorModelTarget; metadata: IModelMetadata; }): void; getModelEntry(opts: { name: string; }): IModelRegistryEntry | undefined; getModelEntryBySchema(opts: { schema: object; }): IModelRegistryEntry | undefined; getAllModels(): Map; getModelAuthorizeSettings(opts: { name: string; }): IModelAuthorizeSettings | undefined; /** Authorization principals across all models that declare an authorize setting. */ getAuthorizeModelPrincipals(opts: { format: typeof AuthorizeModelFormats.ARRAY; }): string[]; getAuthorizeModelPrincipals(opts: { format: typeof AuthorizeModelFormats.RECORD; }): Record; getAuthorizeModelSettings(opts: { format: typeof AuthorizeModelFormats.ARRAY; }): Array<{ name: string; authorize: IModelAuthorizeSettings; entry: IModelRegistryEntry; }>; getAuthorizeModelSettings(opts: { format: typeof AuthorizeModelFormats.RECORD; }): Record; define: (opts: { target: Target; key: import("@venizia/ignis-inversion").TBindingKey; value: Value; }) => void; get: (opts: { target: Target; key: import("@venizia/ignis-inversion").TBindingKey; }) => Value_1 | undefined; has: (opts: { target: Target; key: import("@venizia/ignis-inversion").TBindingKey; }) => boolean; delete: (opts: { target: Target; key: import("@venizia/ignis-inversion").TBindingKey; }) => boolean; getKeys: (opts: { target: Target; }) => import("@venizia/ignis-inversion").TBindingKey[]; getMethodNames: (opts: { target: import("@venizia/ignis-inversion").TClass; }) => string[]; clearMetadata: (opts: { target: T; }) => void; setPropertyMetadata: (opts: { target: T; propertyName: string | symbol; metadata: import("@venizia/ignis-inversion").IPropertyMetadata; }) => void; getPropertiesMetadata: (opts: { target: T; }) => Map | undefined; getPropertyMetadata: (opts: { target: T; propertyName: string | symbol; }) => import("@venizia/ignis-inversion").IPropertyMetadata | undefined; setInjectMetadata: (opts: { target: T; index: number; metadata: import("@venizia/ignis-inversion").IInjectMetadata; }) => void; getInjectMetadata: (opts: { target: T; }) => import("@venizia/ignis-inversion").IInjectMetadata[] | undefined; setBindingKey: (opts: { target: T; key: import("@venizia/ignis-inversion").TBindingKey; isProvisional?: boolean; }) => void; getBindingKey: (opts: { target: T; }) => import("@venizia/ignis-inversion").TBindingKey | undefined; scope: string; identifier: string; }; } & BaseClass; //# sourceMappingURL=model.mixin.d.ts.map