/** * PortfolioPullHandler - Handles pulling portfolio elements from GitHub * * This handler implements the pull functionality for sync_portfolio, * enabling users to download their portfolio from GitHub to local storage. * Supports multiple sync modes (additive, mirror, backup) and dry-run. */ import { PortfolioRepoManager } from '../portfolio/PortfolioRepoManager.js'; import { GitHubPortfolioIndexer } from '../portfolio/GitHubPortfolioIndexer.js'; import { PortfolioManager } from '../portfolio/PortfolioManager.js'; import { PortfolioIndexManager } from '../portfolio/PortfolioIndexManager.js'; import { PortfolioSyncComparer } from '../sync/PortfolioSyncComparer.js'; import { PortfolioDownloader } from '../sync/PortfolioDownloader.js'; import { IFileOperationsService } from '../services/FileOperationsService.js'; import { TokenManager } from '../security/tokenManager.js'; export interface PullOptions { direction: string; mode?: string; force?: boolean; dryRun?: boolean; confirmDeletions?: boolean; } export interface PullResult { content: Array<{ type: string; text: string; }>; } export interface PortfolioPullHandlerDependencies { portfolioRepoManager: PortfolioRepoManager; githubIndexer: GitHubPortfolioIndexer; portfolioManager: PortfolioManager; indexManager: PortfolioIndexManager; syncComparer: PortfolioSyncComparer; downloader: PortfolioDownloader; fileOperations: IFileOperationsService; tokenManager: TokenManager; } export declare class PortfolioPullHandler { private portfolioRepoManager; private githubIndexer; private portfolioManager; private indexManager; private syncComparer; private downloader; private readonly fileOperations; private readonly tokenManager; constructor(dependencies: PortfolioPullHandlerDependencies); /** * Execute the pull operation from GitHub to local portfolio */ executePull(options: PullOptions, personaIndicator: string): Promise; /** * Validate and normalize sync mode * SECURITY FIX: Added Unicode normalization to prevent homograph attacks */ private validateSyncMode; /** * Get all local elements organized by type */ private getAllLocalElements; /** * Count total elements in a map */ private countElements; /** * Format dry-run results for display */ private formatDryRunResults; /** * Execute the sync actions */ private executeSyncActions; /** * Download element from GitHub and save locally * SECURITY: Added audit logging for GitHub operations */ private downloadAndSaveElement; /** * Delete local element * SECURITY: Added audit logging for deletion operations */ private deleteLocalElement; /** * Get GitHub token from auth manager */ private getGitHubToken; } //# sourceMappingURL=PortfolioPullHandler.d.ts.map