import { type CommandContext, type GlobalOptions } from '../../../app/command-context.js';
import { type UpsertSectionResult } from '../../shared/agents-md.js';
import { type MultiSelectChoice, type PromptContext, type SelectChoice } from '../../shared/shared.prompts.js';
import type { ScanToolsOptions } from '../../tools/shared/scan-tools.js';
import type { ToolInfo } from '../../tools/shared/types.js';
import { type OatConfig } from '../../../config/oat-config.js';
import type { ConcreteScope } from '../../../shared/types.js';
import { Command } from 'commander';
import { type InstallBrainstormOptions, type InstallBrainstormResult } from './brainstorm/install-brainstorm.js';
import { type InstallCoreOptions, type InstallCoreResult } from './core/install-core.js';
import { type InstallDocsOptions, type InstallDocsResult } from './docs/install-docs.js';
import { type InstallIdeasOptions, type InstallIdeasResult } from './ideas/install-ideas.js';
import { type InstallProjectManagementOptions, type InstallProjectManagementResult } from './project-management/install-project-management.js';
import { type InstallResearchOptions, type InstallResearchResult } from './research/install-research.js';
import { type InstallUtilityOptions, type InstallUtilityResult } from './utility/install-utility.js';
import { type InstallWorkflowsOptions, type InstallWorkflowsResult } from './workflows/install-workflows.js';
type InstallScope = 'project' | 'user';
type PackInstallTarget = InstallScope | 'both';
export type ToolPack = 'core' | 'ideas' | 'docs' | 'workflows' | 'utility' | 'project-management' | 'research' | 'brainstorm';
export interface InitToolsDependencies {
    buildCommandContext: (options: GlobalOptions) => CommandContext;
    resolveProjectRoot: (cwd: string) => Promise<string>;
    resolveScopeRoot: (scope: InstallScope, cwd: string, home: string) => string;
    resolveAssetsRoot: () => Promise<string>;
    scanTools: (options: ScanToolsOptions) => Promise<ToolInfo[]>;
    selectManyWithAbort: <T extends string>(message: string, choices: MultiSelectChoice<T>[], ctx: PromptContext) => Promise<T[] | null>;
    selectWithAbort: <T extends string>(message: string, choices: SelectChoice<T>[], ctx: PromptContext) => Promise<T | null>;
    installCore: (options: InstallCoreOptions) => Promise<InstallCoreResult>;
    installDocs: (options: InstallDocsOptions) => Promise<InstallDocsResult>;
    installIdeas: (options: InstallIdeasOptions) => Promise<InstallIdeasResult>;
    installWorkflows: (options: InstallWorkflowsOptions) => Promise<InstallWorkflowsResult>;
    installUtility: (options: InstallUtilityOptions) => Promise<InstallUtilityResult>;
    installProjectManagement: (options: InstallProjectManagementOptions) => Promise<InstallProjectManagementResult>;
    installResearch: (options: InstallResearchOptions) => Promise<InstallResearchResult>;
    installBrainstorm: (options: InstallBrainstormOptions) => Promise<InstallBrainstormResult>;
    copyDirWithStatus: (source: string, destination: string, force: boolean) => Promise<'copied' | 'updated' | 'skipped'>;
    removeDirectory: (target: string) => Promise<void>;
    removeFile: (target: string) => Promise<void>;
    addLocalPaths: (repoRoot: string, paths: string[]) => Promise<{
        added: string[];
        all: string[];
    }>;
    applyGitignore: (repoRoot: string, localPaths: string[]) => Promise<{
        action: string;
    }>;
    readOatConfig: (repoRoot: string) => Promise<OatConfig>;
    writeOatConfig: (repoRoot: string, config: OatConfig) => Promise<void>;
    resolveLocalPaths: (config: OatConfig) => string[];
    upsertAgentsMdSection: (repoRoot: string, key: string, body: string) => Promise<UpsertSectionResult>;
    removeAgentsMdSection: (repoRoot: string, key: string) => Promise<boolean>;
}
interface InitToolsRunMetadata {
    affectedScopes: ConcreteScope[];
}
interface PackScopeChange {
    pack: ToolPack;
    scope: ConcreteScope;
}
/**
 * Render a batch change summary (`+ pack@scope` adds / `- pack@scope` removes)
 * for the interactive removal-confirmation gate. Pure for snapshot-friendly
 * testing.
 */
export declare function formatReconcileSummary(adds: PackScopeChange[], removes: PackScopeChange[]): string;
export declare function consumeInitToolsRunMetadata(): InitToolsRunMetadata | null;
interface PackScopeInfo {
    pack: ToolPack;
    scope: PackInstallTarget;
}
export declare function buildToolPacksSectionBody(packs: PackScopeInfo[]): string;
export declare function runInitTools(context: CommandContext, dependencies: InitToolsDependencies): Promise<ToolPack[]>;
export declare function runInitToolsWithDefaults(context: CommandContext): Promise<ToolPack[]>;
export declare function createInitToolsCommand(overrides?: Partial<InitToolsDependencies>): Command;
export {};
//# sourceMappingURL=index.d.ts.map