export type OrderedMapping<TData = object> = TData & {
    order?: number;
};
/**
 * OrderedMappings is an abstract class that manages a collection of ordered mappings,
 * where each mapping has a specific order and associated data.
 *
 * @exports
 */
export declare abstract class OrderedMappings<TData = object> {
    protected _mappings: OrderedMapping<TData>[];
    constructor();
    /**
     * Adds a new mapping to the collection, automatically assigning an order if not provided ( defaults to the next available index).
     * @param mapping
     */
    add(mapping: OrderedMapping<TData>): void;
    /**
     * Resets the collection by removing all existing mappings.
     */
    clear(): void;
    /**
     * The mappings length
     * @returns The length
     */
    get length(): number;
}
/**
 * Used to comapre elements in an ordered mapping
 *
 * @exports
 *
 * @param a The first element
 * @param b The second element
 * @returns The comparison result
 */
export declare function byOrder<TIdentifier>(a: OrderedMapping<TIdentifier>, b: OrderedMapping<TIdentifier>): number;
