import { BaseEngine, IMetadataProvider, UserInfo } from "@memberjunction/core";
import { MJAuditLogTypeEntity } from "../generated/entity_subclasses.js";
/**
 * Caches the rows of `MJ: Audit Log Types` so callers that emit audit-log
 * entries can resolve `AuditLogTypeID` by NAME instead of by hardcoded UUID.
 *
 * The seed data (under `metadata/audit-log-types/`) is the source of truth
 * for the IDs — code that hardcodes them goes stale silently if a row is
 * renamed or replaced. Code that calls `ByName(...)` fails loud at the
 * lookup site instead, which is much easier to track down.
 *
 * Singleton via `BaseEngine`. Idempotent `Config()` — subsequent calls
 * short-circuit once the cache is loaded.
 *
 * @example
 * await AuditLogTypeEngine.Instance.Config(false, contextUser, provider);
 * const t = AuditLogTypeEngine.Instance.ByName('List Shared');
 * if (!t) throw new Error('Audit log type "List Shared" not seeded');
 * auditLog.AuditLogTypeID = t.ID;
 */
export declare class AuditLogTypeEngine extends BaseEngine<AuditLogTypeEngine> {
    static get Instance(): AuditLogTypeEngine;
    Config(forceRefresh?: boolean, contextUser?: UserInfo, provider?: IMetadataProvider): Promise<void>;
    get AuditLogTypes(): MJAuditLogTypeEntity[];
    private _AuditLogTypes;
    /**
     * Look up a row by exact `Name`. Returns `undefined` if the engine
     * hasn't been configured yet or no row matches — callers should treat
     * the latter as "seed metadata missing" and throw, never silently
     * persist rows with an undefined `AuditLogTypeID`.
     */
    ByName(name: string): MJAuditLogTypeEntity | undefined;
}
//# sourceMappingURL=AuditLogTypeEngine.d.ts.map