import { type Record, type Database } from '@servicenow/sdk-build-core';
import type { Element } from 'xml-js';
export declare const CHOICE_SET_VERSION = "4";
export declare const LEGACY_CHOICE_SET_VERSION = "3";
export declare const DEFAULT_INACTIVE = false;
export declare const DEFAULT_INACTIVE_ON_UPDATE = false;
export declare const CHOICE_PROPERTIES: readonly ["label", "value", "sequence", "dependent_value", "hint", "inactive", "inactive_on_update", "language", "synonyms"];
/**
* Generates the update name for both sys_choice and sys_choice_set records.
* Both tables share the same naming convention: sys_choice_
_
*/
export declare function getChoiceUpdateName(record: Record): string;
/**
* Writes a sys_choice_set record element into the parent elements array.
*/
export declare function writeChoiceSetElement(parentElements: Element[], choiceSet: Record, tableName: string, elementName: string, config: {
scope: string;
scopeId: string;
}): void;
/**
* Writes a sys_choice child element into the parent elements array.
*/
export declare function writeChoiceElement(parentElements: Element[], choice: Record, tableName: string, elementName: string): void;
/**
* Generates delete_multiple elements targeting all SDK-owned choices (both current
* and removed), separated by ^NQ. Current choices use only identity fields (value,
* language, dependent_value) since they will be re-created. Removed choices use all
* record properties for precise targeting. Splits into multiple elements if the
* query exceeds MAX_QUERY_LENGTH.
*/
export declare function writeDeleteMultipleElement(parentElements: Element[], currentChoices: Record[], database: Database, tableName: string, elementName: string): void;
export declare const choiceAliases: {
dependentValue: string[];
inactiveOnUpdate: string[];
};
export declare function generateChoices(choices: Record[], defaultLanguage: string): globalThis.Record;