/** * PortfolioSyncComparer - Compares local and GitHub portfolio elements * * Determines what actions need to be taken based on the sync mode: * - additive: Only add missing elements * - mirror: Make local exactly match GitHub * - backup: Treat GitHub as authoritative source */ import { ElementType } from '../portfolio/types.js'; import { GitHubIndexEntry } from '../portfolio/GitHubPortfolioIndexer.js'; export type SyncMode = 'additive' | 'mirror' | 'backup'; export interface SyncAction { type: ElementType; name: string; path: string; action: 'add' | 'update' | 'delete' | 'skip'; reason?: string; localSha?: string; remoteSha?: string; } export interface SyncActions { toAdd: SyncAction[]; toUpdate: SyncAction[]; toDelete: SyncAction[]; toSkip: SyncAction[]; } export declare class PortfolioSyncComparer { /** * Compare GitHub and local elements to determine sync actions */ compareElements(githubElements: Map, localElements: Map, mode: SyncMode): SyncActions; /** * Compare elements of a specific type */ private compareTypeElements; /** * Determine if an element should be updated */ private shouldUpdate; /** * Normalize element name for comparison * Handles different naming formats and extensions */ private normalizeElementName; /** * Count total elements in a map */ private countElements; } //# sourceMappingURL=PortfolioSyncComparer.d.ts.map