#!/usr/bin/env node
import { Command } from 'commander';
import { INightWatchConfig, IProviderPreset, IWebhookConfig, Provider } from '@night-watch/core';
interface IGeneratedInitConfig extends Omit<INightWatchConfig, '_cliProviderOverride'> {
    $schema: string;
    projectName: string;
    providerLabel: string;
}
interface IGitHubRemoteStatus {
    hasGitHubRemote: boolean;
    remoteUrl: string | null;
}
type InitJobId = 'executor' | 'reviewer' | 'qa' | 'audit' | 'analytics' | 'slicer' | 'pr-resolver' | 'manager' | 'merger';
type InitJobBundle = 'recommended' | 'minimal' | 'custom';
interface IInitJobCatalogItem {
    id: InitJobId;
    label: string;
    description: string;
    warning?: string;
    defaultSchedule: string;
}
export interface IJobSelectionAnswer {
    bundle: InitJobBundle;
    enabledJobs: InitJobId[];
    schedules: Record<InitJobId, string>;
}
export interface IProviderSelectionAnswer {
    provider: Provider;
    providerPreset?: IProviderPreset;
    summary: string;
}
export interface INotificationSelectionAnswer {
    webhooks: IWebhookConfig[];
    skipped: boolean;
}
export interface IInitOnboardingAnswers {
    jobs: IJobSelectionAnswer;
    provider: IProviderSelectionAnswer;
    notifications: INotificationSelectionAnswer;
}
export interface IProviderChoice {
    label: string;
    provider?: Provider;
    custom: boolean;
}
type InitCustomizationArea = 'notifications' | 'jobs' | 'provider' | 'playwright' | 'done';
export declare function getInitCustomizationChoices(params: {
    playwrightDetected: boolean;
}): {
    value: InitCustomizationArea;
    label: string;
    description: string;
}[];
export declare function formatDiscordInviteLine(): string;
export declare function isInteractiveInitSession(): boolean;
export declare function getInitJobCatalog(): IInitJobCatalogItem[];
export declare function describeCronSchedule(schedule: string): string;
export declare function normalizeCronSchedulePromptInput(input: string, defaultSchedule: string): string;
export declare function buildDefaultJobSelection(options?: {
    reviewerEnabled?: boolean;
    jobs?: string;
    noJobs?: string;
    schedule?: string[] | string;
}): IJobSelectionAnswer;
export declare function buildBundleJobSelection(bundle: InitJobBundle): IJobSelectionAnswer;
export declare function applyJobSelectionToConfig(config: IGeneratedInitConfig, selection: IJobSelectionAnswer): IGeneratedInitConfig;
export declare function chooseProviderForNonInteractive(providers: Provider[]): Provider;
export declare function chooseProviderByPrecedence(providers: Provider[]): Provider;
export declare function getDetectedProviderPresets(detectedCommands: Provider[]): Provider[];
export declare function buildProviderSummary(provider: Provider, detectedProviders: Provider[]): string;
export declare function shouldPromptProviderOverride(_interactive: boolean, _detectedProviders: Provider[]): boolean;
export declare function buildProviderChoices(detectedProviders: Provider[], includeCustomProvider?: boolean): IProviderChoice[];
export declare function selectProviderOverrideByIndex(choices: IProviderChoice[], input: string): IProviderChoice | null;
export declare function getGitHubRemoteStatus(cwd: string): IGitHubRemoteStatus;
/**
 * Get the default branch name for the repository
 */
export declare function getDefaultBranch(cwd: string): string;
export declare function buildInitConfig(params: {
    projectName: string;
    defaultBranch: string;
    provider: Provider;
    providerPreset?: IProviderPreset;
    reviewerEnabled: boolean;
    prdDir: string;
    jobSelection?: IJobSelectionAnswer;
    notifications?: INotificationSelectionAnswer;
}): IGeneratedInitConfig;
/**
 * Result of template path resolution
 */
interface ITemplateResolution {
    path: string;
    source: 'custom' | 'bundled';
}
/**
 * Resolve a template path with per-file fallback.
 * If customTemplatesDir is non-null and the file exists there, return custom path.
 * Otherwise return the bundled template path.
 */
export declare function resolveTemplatePath(templateName: string, customTemplatesDir: string | null, bundledTemplatesDir: string): ITemplateResolution;
/**
 * Main init command implementation
 */
export declare function initCommand(program: Command): void;
export default initCommand;
//# sourceMappingURL=init.d.ts.map