/**
* Kernel enums — enums the X++ runtime defines, with NO AOT metadata element.
*
* These are referenced by ordinary metadata (`NoYes` appears
* 48 times in CustTable.xml alone, and EDT NoYesId reports `Enum Type: NoYes`)
* but they have no `AxEnum/*.xml` anywhere, so no metadata-backed lookup can
* ever prove them: not the C# bridge (`IMetadataProvider.Enums` does not carry
* them), not the SQLite symbol index (it indexes AOT XML), not a disk probe.
*
* Treating "absent from the AOT" as "does not exist" produced two failures, both
* confirmed live on 2026-08-24:
*
* 1. `validate_code(mode="references", codeType="xml-table")` reported
* `NoYes` as a hard ERROR — "Enum NoYes not found in
* the symbol index" — under "Fix errors before writing — these will cause
* compiler failures". An agent obeying that edits correct metadata, and
* `search` offers it NoYesBlank / DefaultNoYes / NoYesCombo to "correct" to.
* Those enums are real, so the result compiles clean and means the wrong
* thing.
* 2. `get_object_info(objectType="enum", name="NoYes")` answered "not found via
* bridge, symbol index, or on disk" and advised searching other spellings,
* running update_symbol_index on `NoYes.xml`, and checking
* D365FO_CUSTOM_PACKAGES_PATH. None of that can ever succeed: there is no
* file to index. Meanwhile the EDT reader hands the agent the name `NoYes`
* in the first place — a loop with no exit.
*
* The X++ reference resolver already knew this (resolveReferences.ts allow-listed
* 'noyes' and 'exception' for exactly this reason), which is why X++ using
* `NoYes::Yes` validated cleanly while the XML path hard-errored on the same
* enum. This module is that knowledge in one place, so the next path to need it
* does not have to rediscover it.
*
* MEMBERSHIP IS EVIDENCE-BASED, not remembered: every name below was checked
* against the complete set of 8,220 `AxEnum/*.xml` basenames in
* K:\AosService\PackagesLocalDirectory (metamodel 7.0.7996.33) and is absent
* from all of them.
*/
/** A kernel enum, and the value names it is used with. */
export interface KernelEnum {
/** Canonical casing, for rendering. */
name: string;
/**
* Value names as OBSERVED in shipped X++/metadata under
* PackagesLocalDirectory. Deliberately not claimed to be exhaustive — it is
* what the product itself uses. Omitted where a scan found no usage, rather
* than filled in from memory.
*/
values?: string[];
}
/** Lowercase names, for the allow-lists that already work in lowercase. */
export declare const KERNEL_ENUM_NAMES: ReadonlySet;
/** Is `name` an enum the runtime defines rather than the AOT? Case-insensitive. */
export declare function isKernelEnum(name: string | null | undefined): boolean;
/** The entry for `name`, or undefined when it is not a kernel enum. */
export declare function getKernelEnum(name: string | null | undefined): KernelEnum | undefined;
/**
* The answer a reader should give instead of "not found".
*
* States the one thing the caller has to know — there is nothing to index, and
* references to it are valid — so the reply cannot be read as "this name is
* wrong, go find the right one".
*/
export declare function describeKernelEnum(name: string): string | null;
//# sourceMappingURL=kernelEnums.d.ts.map