import type { KaijiBotConfig } from "../config/config.js";
import type { HookInstallRecord } from "../config/types.hooks.js";
import type { PluginInstallRecord } from "../config/types.plugins.js";
export declare function resolveFileNpmSpecToLocalPath(raw: string): {
    ok: true;
    path: string;
} | {
    ok: false;
    error: string;
} | null;
export declare function applySlotSelectionForPlugin(config: KaijiBotConfig, pluginId: string): {
    config: KaijiBotConfig;
    warnings: string[];
};
export declare function createPluginInstallLogger(): {
    info: (msg: string) => void;
    warn: (msg: string) => void;
};
export declare function createHookPackInstallLogger(): {
    info: (msg: string) => void;
    warn: (msg: string) => void;
};
export declare function enableInternalHookEntries(config: KaijiBotConfig, hookNames: string[]): KaijiBotConfig;
export declare function extractInstalledNpmPackageName(install: PluginInstallRecord): string | undefined;
export declare function extractInstalledNpmHookPackageName(install: HookInstallRecord): string | undefined;
export declare function formatPluginInstallWithHookFallbackError(pluginError: string, hookError: string): string;
export declare function logHookPackRestartHint(): void;
export declare function logSlotWarnings(warnings: string[]): void;
export declare function buildPreferredClawHubSpec(raw: string): string | null;
export declare const PREFERRED_CLAWHUB_FALLBACK_DECISION: {
    readonly FALLBACK_TO_NPM: "fallback_to_npm";
    readonly STOP: "stop";
};
export type PreferredClawHubFallbackDecision = (typeof PREFERRED_CLAWHUB_FALLBACK_DECISION)[keyof typeof PREFERRED_CLAWHUB_FALLBACK_DECISION];
export declare function decidePreferredClawHubFallback(params: {
    code?: string;
}): PreferredClawHubFallbackDecision;
