/**
 * Navigation Item Matcher
 *
 * Provides non-destructive matching of navigation items by label+URL identity.
 * Used to preserve item IDs during sync operations instead of delete-and-recreate.
 */
import type { NavigationItemForMatching, NavigationItemInput } from './types';
/**
 * Result of matching a single local item to remote items
 */
export interface ItemMatch {
    localItem: NavigationItemInput;
    remoteItem: NavigationItemForMatching | null;
    action: 'create' | 'update' | 'unchanged';
    /** Updated position in the menu */
    position: number;
}
/**
 * Overall result of matching local items against remote items
 */
export interface MatchResult {
    /** Matched items with their actions */
    matches: ItemMatch[];
    /** Remote items that have no matching local item (should be deleted) */
    orphanedRemoteItems: NavigationItemForMatching[];
}
/**
 * Match local navigation items to remote items by label+URL composite key.
 *
 * This function enables non-destructive updates by identifying:
 * - New items (in local but not remote) -> create
 * - Changed items (in both, but position changed) -> update
 * - Unchanged items (in both, same position) -> unchanged
 * - Orphaned items (in remote but not local) -> delete
 *
 * @param localItems - Items from local content files
 * @param remoteItems - Items currently in the database
 * @returns Match result with actions for each item
 */
export declare function matchNavigationItems(localItems: NavigationItemInput[], remoteItems: NavigationItemForMatching[]): MatchResult;
