import { BaseClass, BaseList } from "./Utils.js";
import { BC_ID } from "./BC_ID.js";
import { RAN4JsonEncoder } from "./JsonTools.js";
import { HtmlTable } from "./HtmlTable.js";
/**
 * An uplink configuration entry within a dual connectivity band combination.
 *
 * Each UlConfigDC identifies one UL component by its BC-ID, and may carry
 * optional specification notes.
 */
export declare class UlConfigDC extends BaseClass {
    /** The BC-ID of this UL configuration (parsed or raw string). */
    bcId: BC_ID | string | null;
    /** Optional specification notes. */
    notes: Record<string, unknown>;
    /**
     * @param aValue — a dict from JSON or an existing UlConfigDC to copy.
     * @param aParent — the parent DualConnectivityConfig.
     * @param validateBcIds — if true, parse bcId strings into BC_ID objects.
     */
    constructor(aValue: Record<string, unknown> | UlConfigDC, aParent?: BaseClass | null, validateBcIds?: boolean);
    /** Validates that bcId is present. */
    validate(): void;
    toJSON(anEncoder: RAN4JsonEncoder, aLevel: number): void;
    toString(): string;
    getTag(): string;
}
/**
 * A dual connectivity band combination configuration.
 *
 * Represents one DC entry (EN-DC, NE-DC, or NR-DC) with its DL BC-ID,
 * list of UL configurations, and optional flags for single-UL and
 * DL-interruptions. Corresponds to one `DC_*.json` file.
 */
export declare class DualConnectivityConfig extends BaseClass {
    /** The DL BC-ID (parsed or raw string). */
    bcId: BC_ID | string | null;
    /** List of uplink configurations for this DC combination. */
    ulConfigList: UlConfigDC[];
    /** Whether single UL is allowed (e.g. "yes", "no"), or null if not specified. */
    singleUlAllowed: string | null;
    /** Whether DL interruptions are allowed, or null if not specified. */
    dlInterruptionsAllowed: string | null;
    /** Optional specification notes. */
    notes: Record<string, unknown>;
    /**
     * @param aValue — a dict from JSON or an existing DualConnectivityConfig to copy.
     * @param aParent — the parent DcBandCombinationList.
     * @param validateBcIds_DL — if true, parse the DL bcId string into a BC_ID.
     * @param validateBC_IDs_UL — if true, parse UL bcId strings into BC_ID objects.
     */
    constructor(aValue: Record<string, unknown> | DualConnectivityConfig, aParent?: BaseClass | null, validateBcIds_DL?: boolean, validateBC_IDs_UL?: boolean);
    /** Validates that bcId is present. */
    validate(): void;
    toString(): string;
    getTag(): string;
    toJSON(anEncoder: RAN4JsonEncoder, aLevel: number): void;
    toHTML(aHtmlTable: HtmlTable, aRow?: number, aColumn?: number): void;
}
/**
 * Collection of dual connectivity band combination configurations.
 *
 * Keyed by BC-ID value string. Supports loading from individual `DC_*.json`
 * files, validation, and export to JSON or HTML.
 */
export declare class DcBandCombinationList extends BaseList {
    /** HTML table used for HTML export. */
    html: HtmlTable;
    /** Whether to parse DL BC-IDs into BC_ID objects during loading. */
    validatingBC_IDs_DL: boolean;
    /** Whether to parse UL BC-IDs into BC_ID objects during loading. */
    validatingBC_IDs_UL: boolean;
    constructor(aParent?: BaseClass | null, validateBcIds_DL?: boolean, validateBcIds_UL?: boolean);
    protected _createEntry(aValue: unknown, aParent: BaseList): BaseClass;
    protected _getEntryId(anEntry: BaseClass): string;
    /** Returns true if a DC configuration with the given BC-ID exists. */
    hasBC(aBcId: string): boolean;
    protected _getTargetSubfolder(anEntry: BaseClass): string;
    protected _getFileName(anEntry: BaseClass): string;
    /** Exports all DC configurations to an HTML table file, sorted by BC-ID. */
    storeAsHtmlFile(aFileName: string): void;
    /** Adds standard DC table headers to the given HTML table. */
    static addTableHeaders(aHtmlTable: HtmlTable): void;
    /**
     * Renders a single DC configuration as a complete HTML table string.
     * @param data — Raw JSON object containing DC data
     * @returns HTML table string with headers and one DC row
     */
    static renderAsHtml(data: Record<string, unknown>): string;
    toJSON(anEncoder: RAN4JsonEncoder, aLevel: number): void;
}
