/**
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
/**
* @module engine/conversion/comparemarkers
*/
import type { ModelRange } from "../model/range.js";
/**
* Sorts markers so the downcast result is deterministic regardless of the order
* markers were added to the marker collection.
*
* The sort key is the marker's range, ordered "right-to-left" through the document so that
* a marker's opening boundary is processed *after* any markers nested inside it. This way
* the outer marker wraps the inner ones at conversion time.
*
* Cases (positions shown as `0123456789`, sort result top-to-bottom):
*
* 1. Non-overlapping ranges — sorted by position, last range first:
*
*        a: [--]               →   c, b, a
*        b:     [--]
*        c:        [--]
*
* 2. Adjacent ranges (end === start) — treated as non-overlapping:
*
*        first:  [---]         →   third, second, first
*        second:    [---]
*        third:        [---]
*
* 3. Nested ranges (same start, different ends) — inner first, outer last:
*
*        shorter: [-]          →   shorter, longer
*        longer:  [---]
*
* 4. Partially overlapping ranges — sorted by start position:
*
*        earlier: [---]        →   later, earlier
*        later:     [---]
*
* 5. Identical ranges — fall back to reverse name comparison:
*
*        alpha:   [---]        →   charlie, bravo, alpha
*        bravo:   [---]
*        charlie: [---]
*
* @internal
*/
export declare function compareMarkersForDowncast([name1, range1]: readonly [string, ModelRange], [name2, range2]: readonly [string, ModelRange]): number;
