/**
 * History Types
 *
 * Type definitions for the session history and audit log system.
 *
 * @since v1.30.0
 */
/**
 * Types of actions that can be recorded
 */
export type ActionType = 'update-check' | 'download' | 'sync' | 'migrate' | 'backup' | 'restore' | 'config-change' | 'plugin-add' | 'plugin-remove' | 'plugin-disable' | 'plugin-enable' | 'tag-assign' | 'tag-remove' | 'group-add' | 'group-remove' | 'favorite-add' | 'favorite-remove' | 'pin-add' | 'pin-remove' | 'scan' | 'session-start' | 'session-end';
/**
 * Update check details
 */
export interface UpdateCheckDetails {
    type: 'update-check';
    pluginCount: number;
    updatesFound: number;
    errors: number;
}
/**
 * Download details
 */
export interface DownloadDetails {
    type: 'download';
    pluginName: string;
    fromVersion: string;
    toVersion: string;
    source: string;
    fileSize?: number;
}
/**
 * Sync/migrate details
 */
export interface SyncDetails {
    type: 'sync' | 'migrate';
    direction: 'prod-to-test' | 'test-to-prod';
    pluginsCopied: number;
    pluginsSkipped: number;
}
/**
 * Backup/restore details
 */
export interface BackupDetails {
    type: 'backup' | 'restore';
    backupPath: string;
    pluginCount: number;
    totalSize: number;
}
/**
 * Config change details
 */
export interface ConfigChangeDetails {
    type: 'config-change';
    setting: string;
    oldValue: unknown;
    newValue: unknown;
}
/**
 * Plugin change details
 */
export interface PluginChangeDetails {
    type: 'plugin-add' | 'plugin-remove' | 'plugin-disable' | 'plugin-enable';
    pluginName: string;
    version?: string;
    source?: string;
}
/**
 * Tag change details
 */
export interface TagChangeDetails {
    type: 'tag-assign' | 'tag-remove';
    pluginName: string;
    tagId: string;
    tagName: string;
}
/**
 * Group change details
 */
export interface GroupChangeDetails {
    type: 'group-add' | 'group-remove';
    pluginName: string;
    groupId: string;
    groupName: string;
}
/**
 * Favorite/pin change details
 */
export interface FavoriteChangeDetails {
    type: 'favorite-add' | 'favorite-remove' | 'pin-add' | 'pin-remove';
    pluginName: string;
}
/**
 * Scan details
 */
export interface ScanDetails {
    type: 'scan';
    directory: string;
    pluginsFound: number;
    newPlugins: number;
    removedPlugins: number;
}
/**
 * Session details
 */
export interface SessionActionDetails {
    type: 'session-start' | 'session-end';
    sessionId: string;
    environment?: string;
    version?: string;
}
/**
 * Union of all action details
 */
export type ActionDetails = UpdateCheckDetails | DownloadDetails | SyncDetails | BackupDetails | ConfigChangeDetails | PluginChangeDetails | TagChangeDetails | GroupChangeDetails | FavoriteChangeDetails | ScanDetails | SessionActionDetails;
/**
 * History entry
 */
export interface HistoryEntry {
    /** Unique entry ID */
    id: string;
    /** When the action occurred */
    timestamp: string;
    /** Type of action */
    action: ActionType;
    /** Action-specific details */
    details: ActionDetails;
    /** Session this entry belongs to */
    sessionId: string;
    /** Whether the action succeeded */
    success: boolean;
    /** Error message if failed */
    error?: string;
    /** Duration in milliseconds */
    duration?: number;
    /** Additional metadata */
    metadata?: Record<string, unknown>;
}
/**
 * Session information
 */
export interface Session {
    /** Unique session ID */
    id: string;
    /** When the session started */
    startTime: string;
    /** When the session ended */
    endTime?: string;
    /** Session duration in milliseconds */
    duration?: number;
    /** Number of actions in this session */
    actionCount: number;
    /** Environment type */
    environment: string;
    /** Pluginator version */
    version: string;
}
/**
 * History store
 */
export interface HistoryStore {
    /** Store version */
    version: string;
    /** All sessions */
    sessions: Session[];
    /** All history entries */
    entries: HistoryEntry[];
    /** Retention period in days */
    retentionDays: number;
}
/**
 * Options for recording an action
 */
export interface RecordOptions {
    /** Duration in milliseconds */
    duration?: number;
    /** Additional metadata */
    metadata?: Record<string, unknown>;
}
/**
 * Query options for filtering history
 */
export interface HistoryQuery {
    /** Filter by action type */
    action?: ActionType;
    /** Filter by plugin name */
    pluginName?: string;
    /** Filter by session ID */
    sessionId?: string;
    /** Filter by date range start */
    startDate?: string;
    /** Filter by date range end */
    endDate?: string;
    /** Filter by success status */
    success?: boolean;
    /** Maximum results */
    limit?: number;
    /** Skip first N results */
    offset?: number;
}
/**
 * Export format
 */
export type ExportFormat = 'json' | 'csv';
/**
 * History store version
 */
export declare const HISTORY_STORE_VERSION = "1.0";
/**
 * Default retention configuration
 */
export declare const RETENTION_CONFIG: {
    defaultDays: number;
    maxDays: number;
    minDays: number;
    maxEntries: number;
    cleanupOnStart: boolean;
};
/**
 * Create an empty history store
 */
export declare function createEmptyHistoryStore(): HistoryStore;
/**
 * Generate a unique ID
 */
export declare function generateId(prefix: string): string;
//# sourceMappingURL=history-types.d.ts.map