/** * Profile Service * * Manages plugin profiles (server configurations). * * @since v1.33.0 */ import { type ApplyProfileOptions, type ApplyProfileResult, type CreateProfileOptions, type PluginProfile, type ProfileColor, type ProfileDiff, type ProfilePlugin, type ProfileStore } from './profile-types.js'; /** * Data provider for getting current configuration */ export interface ProfileDataProvider { /** Get current plugins configuration */ getCurrentPlugins?: () => ProfilePlugin[]; /** Get current tags configuration */ getCurrentTags?: () => { tags: Array<{ id: string; name: string; color: string; }>; assignments: Array<{ pluginName: string; tagIds: string[]; }>; } | null; /** Get current groups configuration */ getCurrentGroups?: () => { groups: Array<{ id: string; name: string; color?: string; icon?: string; plugins: string[]; order: number; }>; } | null; /** Get current favorites configuration */ getCurrentFavorites?: () => { favorites: Array<{ pluginName: string; note?: string; }>; pinned: Array<{ pluginName: string; order: number; }>; } | null; } export declare class ProfileService { private store; private provider; private filePath; constructor(initialStore?: ProfileStore, provider?: ProfileDataProvider); setProvider(provider: ProfileDataProvider): void; setFilePath(path: string): void; getFilePath(): string | null; createProfile(options: CreateProfileOptions): PluginProfile; updateProfile(id: string, updates: Partial>): PluginProfile | null; deleteProfile(id: string): boolean; getProfile(id: string): PluginProfile | null; getProfileByName(name: string): PluginProfile | null; getProfiles(): PluginProfile[]; getProfileCount(): number; getActiveProfile(): PluginProfile | null; setActiveProfile(id: string | null): boolean; isActiveProfile(id: string): boolean; cloneProfile(id: string, newName: string): PluginProfile | null; snapshotToProfile(id: string): boolean; /** Dry run only - returns what would change */ applyProfile(id: string, options?: ApplyProfileOptions): ApplyProfileResult; private getPluginChanges; compareProfiles(profileAId: string, profileBId: string): ProfileDiff | null; compareWithCurrent(profileId: string): ProfileDiff | null; private diffPluginLists; private getPluginDiff; exportProfile(id: string): string | null; importProfile(data: string): PluginProfile | null; searchProfiles(query: string): PluginProfile[]; getProfilesByColor(color: ProfileColor): PluginProfile[]; serialize(): string; static fromSerialized(data: string, provider?: ProfileDataProvider): ProfileService; getStore(): ProfileStore; reset(): void; } export declare function getProfileService(): ProfileService; export declare function resetProfileService(): void; //# sourceMappingURL=profile-service.d.ts.map