export namespace LevelFormattingHelpers {
    export { readLevelProperties };
    export { findLevelElement };
    export { hasLevel };
    export { setLevelNumberingFormat };
    export { setLevelBulletMarker };
    export { setLevelPictureBulletId };
    export { setLevelAlignment };
    export { setLevelIndents };
    export { setLevelTrailingCharacter };
    export { setLevelMarkerFont };
    export { setLevelTabStop };
    export { setLevelNumberStyle };
    export { setLevelText };
    export { setLevelStart };
    export { setLevelLayout };
    export { hasLevelOverride };
    export { clearLevelOverride };
    export { materializeLevelFormattingOverride };
    export { captureTemplate };
    export { applyTemplateToAbstract };
    export { captureEffectiveStyle };
    export { isAbstractShared };
    export { cloneAbstractIntoNum };
    export { cloneAbstractAndNum };
    export { copySequenceStateOverrides };
    export { getPresetTemplate };
    export { PRESET_TEMPLATES };
}
/**
 * Read all formatting properties from a raw `w:lvl` element.
 * @param {Object} lvlEl
 * @param {number} ilvl
 * @returns {{ level: number, numFmt?: string, lvlText?: string, start?: number, alignment?: string, indents?: { left?: number, hanging?: number, firstLine?: number }, trailingCharacter?: string, markerFont?: string, pictureBulletId?: number, tabStopAt?: number }}
 */
declare function readLevelProperties(lvlEl: Object, ilvl: number): {
    level: number;
    numFmt?: string;
    lvlText?: string;
    start?: number;
    alignment?: string;
    indents?: {
        left?: number;
        hanging?: number;
        firstLine?: number;
    };
    trailingCharacter?: string;
    markerFont?: string;
    pictureBulletId?: number;
    tabStopAt?: number;
};
/**
 * Find the `w:lvl` element for a given level index within an abstract definition.
 * @param {Object} abstract - The raw `w:abstractNum` XML node.
 * @param {number} ilvl - Level index (0–8).
 * @returns {Object | undefined} The `w:lvl` element, or undefined if not found.
 */
declare function findLevelElement(abstract: Object, ilvl: number): Object | undefined;
/**
 * Check whether a level element exists in an abstract definition.
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @returns {boolean}
 */
declare function hasLevel(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {{ numFmt: string, lvlText: string, start?: number }} params
 * @returns {boolean}
 */
declare function setLevelNumberingFormat(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, params: {
    numFmt: string;
    lvlText: string;
    start?: number;
}): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {string} markerText
 * @returns {boolean}
 */
declare function setLevelBulletMarker(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, markerText: string): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {number} pictureBulletId
 * @returns {boolean}
 */
declare function setLevelPictureBulletId(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, pictureBulletId: number): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {string} alignment
 * @returns {boolean}
 */
declare function setLevelAlignment(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, alignment: string): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {{ left?: number, hanging?: number, firstLine?: number }} indents
 * @returns {boolean}
 */
declare function setLevelIndents(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, indents: {
    left?: number;
    hanging?: number;
    firstLine?: number;
}): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {string} trailingCharacter
 * @returns {boolean}
 */
declare function setLevelTrailingCharacter(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, trailingCharacter: string): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {string} fontFamily
 * @returns {boolean}
 */
declare function setLevelMarkerFont(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, fontFamily: string): boolean;
/**
 * Composite setter: resolve abstract + level, then mutate tab stop.
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {number | null} value
 * @returns {boolean}
 */
declare function setLevelTabStop(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, value: number | null): boolean;
/**
 * Composite setter for setLevelNumberStyle.
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {string} numFmt
 * @returns {boolean}
 */
declare function setLevelNumberStyle(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, numFmt: string): boolean;
/**
 * Set lvlText only (for setLevelText).
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {string} text
 * @returns {boolean}
 */
declare function setLevelText(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, text: string): boolean;
/**
 * Set start value only (for setLevelStart).
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {number} start
 * @returns {boolean}
 */
declare function setLevelStart(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, start: number): boolean;
/**
 * Composite setter for setLevelLayout.
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} ilvl
 * @param {{ alignment?: string, alignedAt?: number, textIndentAt?: number, followCharacter?: string, tabStopAt?: number | null }} layout
 * @returns {{ changed: boolean, error?: string }}
 */
declare function setLevelLayout(editor: import('../Editor.js').Editor, abstractNumId: number, ilvl: number, layout: {
    alignment?: string;
    alignedAt?: number;
    textIndentAt?: number;
    followCharacter?: string;
    tabStopAt?: number | null;
}): {
    changed: boolean;
    error?: string;
};
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} numId
 * @param {number} ilvl
 * @returns {boolean}
 */
declare function hasLevelOverride(editor: import('../Editor.js').Editor, numId: number, ilvl: number): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} numId
 * @param {number} ilvl
 * @returns {boolean}
 */
declare function clearLevelOverride(editor: import('../Editor.js').Editor, numId: number, ilvl: number): boolean;
/**
 * Fold formatting from `w:lvlOverride/w:lvl` into the target abstract level,
 * then remove only the `w:lvl` child while preserving any `w:startOverride`.
 *
 * This lets sequence-local style edits operate on the effective visible style
 * without dropping restart state stored on the numbering instance.
 *
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} numId
 * @param {number} ilvl
 * @returns {boolean}
 */
declare function materializeLevelFormattingOverride(editor: import('../Editor.js').Editor, abstractNumId: number, numId: number, ilvl: number): boolean;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number[] | undefined} levels
 * @returns {{ version: 1, levels: Array<Object> } | null}
 */
declare function captureTemplate(editor: import('../Editor.js').Editor, abstractNumId: number, levels: number[] | undefined): {
    version: 1;
    levels: Array<Object>;
} | null;
/**
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {{ version: number, levels: Array<Object> }} template
 * @param {number[] | undefined} levels
 * @returns {{ changed: boolean, error?: string }}
 */
declare function applyTemplateToAbstract(editor: import('../Editor.js').Editor, abstractNumId: number, template: {
    version: number;
    levels: Array<Object>;
}, levels: number[] | undefined): {
    changed: boolean;
    error?: string;
};
/**
 * Capture the effective style of a list: abstract definition properties merged
 * with any instance-level lvlOverride formatting. Excludes startOverride
 * (sequence state, not style).
 *
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} numId
 * @param {number[] | undefined} levels
 * @returns {{ version: 1, levels: Array<Object> } | null}
 */
declare function captureEffectiveStyle(editor: import('../Editor.js').Editor, abstractNumId: number, numId: number, levels: number[] | undefined): {
    version: 1;
    levels: Array<Object>;
} | null;
/**
 * Check whether the given abstractNumId is referenced by any other w:num
 * besides the given numId.
 * @param {import('../Editor.js').Editor} editor
 * @param {number} abstractNumId
 * @param {number} numId
 * @returns {boolean}
 */
declare function isAbstractShared(editor: import('../Editor.js').Editor, abstractNumId: number, numId: number): boolean;
/**
 * Clone an abstract definition and retarget an existing w:num to it.
 * Preserves any lvlOverride/startOverride state on the num definition.
 *
 * @param {import('../Editor.js').Editor} editor
 * @param {number} originalAbstractNumId
 * @param {number} numId
 * @returns {{ newAbstractNumId: number }}
 */
declare function cloneAbstractIntoNum(editor: import('../Editor.js').Editor, originalAbstractNumId: number, numId: number): {
    newAbstractNumId: number;
};
/**
 * Clone an abstract definition and create a new w:num pointing to it.
 * Returns the new abstractNumId and numId.
 *
 * @param {import('../Editor.js').Editor} editor
 * @param {number} originalAbstractNumId
 * @param {number} originalNumId
 * @returns {{ newAbstractNumId: number, newNumId: number }}
 */
declare function cloneAbstractAndNum(editor: import('../Editor.js').Editor, originalAbstractNumId: number, originalNumId: number): {
    newAbstractNumId: number;
    newNumId: number;
};
/**
 * Copy sequence-state overrides (startOverride and instance lvlRestart) from
 * one num definition to another, intentionally excluding formatting overrides.
 *
 * @param {import('../Editor.js').Editor} editor
 * @param {number} fromNumId
 * @param {number} toNumId
 * @param {number[] | undefined} levels
 * @returns {boolean}
 */
declare function copySequenceStateOverrides(editor: import('../Editor.js').Editor, fromNumId: number, toNumId: number, levels: number[] | undefined): boolean;
declare function getPresetTemplate(presetId: any): {
    version: 1;
    levels: Array<Object>;
};
/** @type {Record<string, { version: 1, levels: Array<Object> }>} */
declare const PRESET_TEMPLATES: Record<string, {
    version: 1;
    levels: Array<Object>;
}>;
export {};
//# sourceMappingURL=list-level-formatting-helpers.d.ts.map