import type { Logger } from './utils/logger';
// Pre-flight validation functions
export declare function runPreflightChecks(): Promise<ValidationResult>;
export declare function analyzeProject(): Promise<ProjectAnalysis>;
export declare function createProgressTracker(totalSteps: number): SetupProgress;
export declare function updateProgress(progress: SetupProgress, stepName: string, completed?: boolean): SetupProgress;
export declare function displayProgress(progress: SetupProgress): void;
export declare function detectRepository(): Promise<RepositoryInfo | null>;
export declare function guideTokenCreation(repoInfo: RepositoryInfo): Promise<void>;
export declare function confirmTokenSetup(): Promise<boolean>;
export declare function guideRepositorySettings(repoInfo: RepositoryInfo): Promise<void>;
export declare function generateConfigFile(repoInfo: RepositoryInfo, hasCustomToken: boolean): Promise<void>;
export declare function generateDashboardWorkflow(hasCustomToken: boolean): string;
export declare function generateUpdateCheckWorkflow(hasCustomToken: boolean): string;
export declare function generateUpdateWorkflow(preset: WorkflowPreset, hasCustomToken: boolean): string;
export declare function generateCoreWorkflows(preset: WorkflowPreset, repoInfo: RepositoryInfo, hasCustomToken: boolean, logger: Logger): Promise<void>;
export declare function getWorkflowPreset(useCase: string): WorkflowPreset;
// Enhanced testing and validation functions
export declare function validateWorkflowGeneration(workflowContent: string): Promise<ValidationResult>;
export declare function validateRepositoryAccess(repoInfo: RepositoryInfo): Promise<ValidationResult>;
export declare function displayValidationResults(results: ValidationResult, title: string): void;
export declare function setupCustomWorkflow(preset: WorkflowPreset, _logger: Logger): Promise<void>;
export declare function showFinalInstructions(repoInfo: RepositoryInfo, hasCustomToken: boolean): Promise<void>;
export declare interface RepositoryInfo {
  owner: string
  name: string
}
export declare interface WorkflowPreset {
  name: string
  description: string
  templates: {
    comprehensive?: boolean
    daily?: boolean
    weekly?: boolean
    monthly?: boolean
    docker?: boolean
    monorepo?: boolean
  }
  schedules: {
    dashboard: string
    updates: string
  }
  strategy: string
  autoMerge: boolean
  custom: Array<{
    name: string
    schedule: string
    strategy: string
    autoMerge: boolean
    autoMergeStrategy?: string
  }>
}
// New interfaces for enhanced functionality
export declare interface ValidationResult {
  success: boolean
  errors: string[]
  warnings: string[]
  suggestions: string[]
}
export declare interface ProjectAnalysis {
  type: 'library' | 'application' | 'monorepo' | 'unknown'
  packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun' | 'composer' | 'unknown'
  hasLockFile: boolean
  hasDependencyFiles: boolean
  hasGitHubActions: boolean
  recommendedPreset: string
  recommendations: string[]
}
export declare interface SetupProgress {
  currentStep: number
  totalSteps: number
  stepName: string
  completed: string[]
  failed?: string
  canResume: boolean
  startTime: Date
}
// Configuration Migration & Import System
export declare interface MigrationResult {
  source: 'renovate' | 'dependabot' | 'greenkeeper' | 'custom'
  configFound: boolean
  migratedSettings: Partial<any>
  warnings: string[]
  incompatibleFeatures: string[]
  confidence: 'high' | 'medium' | 'low'
}
export declare interface DetectedTool {
  name: string
  configFile: string
  version?: string
  active: boolean
}
// Integration Ecosystem & Plugin Architecture
export declare interface SetupPlugin {
  name: string
  version: string
  triggers: SetupTrigger[]
  hooks: SetupHook[]
  configuration: PluginConfig
  enabled: boolean
}
export declare interface SetupTrigger {
  event: 'pre_setup' | 'post_setup' | 'step_complete' | 'validation_error' | 'setup_complete'
  condition?: string
}
export declare interface SetupHook {
  name: string
  priority: number
  async: boolean
  handler: (context: SetupContext) => Promise<void> | void
}
export declare interface PluginConfig {

}
export declare interface SetupContext {
  step: string
  progress: SetupProgress
  config: any
  repository: RepositoryInfo
  analysis: ProjectAnalysis
  plugins: SetupPlugin[]
}
export declare interface IntegrationPoint {
  tool: string
  endpoint: string
  authentication: AuthConfig
  dataMapping: Record<string, string>
  enabled: boolean
}
export declare interface AuthConfig {
  type: 'token' | 'oauth' | 'webhook' | 'api_key'
  credentials: Record<string, string>
}
// Configuration Migration Implementation
export declare class ConfigurationMigrator {
  detectExistingTools(): Promise<DetectedTool[]>;
  private findRenovateConfig(): string;
  migrateFromRenovate(configPath: string): Promise<MigrationResult>;
  migrateFromDependabot(configPath: string): Promise<MigrationResult>;
  private convertRenovateSchedule(schedule: string[]): any;
  private convertRenovatePackageRules(packageRules: any[]): any;
  private convertDependabotSchedule(interval: string): any;
  generateMigrationReport(results: MigrationResult[]): Promise<string>;
  private getConfidenceEmoji(confidence: string): string;
}
// Plugin Architecture Implementation
export declare class PluginManager {
  private plugins: SetupPlugin[];
  private context: SetupContext | null;
  discoverPlugins(): Promise<SetupPlugin[]>;
  loadPlugin(plugin: SetupPlugin): Promise<void>;
  executePluginHooks(trigger: SetupTrigger): Promise<void>;
  setContext(context: SetupContext): void;
  private hasSlackWebhook(): Promise<boolean>;
  private hasJiraIntegration(): Promise<boolean>;
  private hasDiscordWebhook(): Promise<boolean>;
  private createSlackPlugin(): SetupPlugin;
  private createJiraPlugin(): SetupPlugin;
  private createDiscordPlugin(): SetupPlugin;
  private loadCustomPlugins(): Promise<SetupPlugin[]>;
  private sendSlackNotification(context: SetupContext): Promise<void>;
  private sendDiscordNotification(context: SetupContext): Promise<void>;
  private createJiraTicket(context: SetupContext): Promise<void>;
}