import { type AiSkillDependency, type NativeInitializerInput, type StackkitModule } from "@berkayorhan/stackkit-schemas"; export type ToolingLanguage = "ts" | "py" | "rust"; export type ToolingSlot = "lint" | "format" | "typecheck"; export type ToolingToolSpec = { moduleId: string; title: string; description: string; icon?: string; language: ToolingLanguage; slots: ToolingSlot[]; isDefault: boolean; aliases?: string[]; aiSkills?: AiSkillDependency[]; nativeInitializers?: NativeInitializerInput[]; }; /** Capability a Quality Module requires to gate it to a language. */ export declare const languageCapability: Record; /** Slot capability a Quality Module provides, e.g. `ts-lint`, `py-typecheck`. */ export declare function slotCapability(language: ToolingLanguage, slot: ToolingSlot): string; /** * The single source of truth for developer-tooling choices. Each entry is a tool that fills one or * more Tooling Slots for a language. Exactly one tool is the default per (language, slot). Combined * tools (Biome, Ruff) fill more than one slot and therefore conflict with the single-slot tools they * replace — conflicts are derived in {@link buildQualityModules}, not hand-maintained. */ export declare const toolingCatalog: ToolingToolSpec[]; /** * Expand the tooling catalog into Quality Modules with derived `provides` (slot capabilities), * `requires` (language capability), and `conflicts` (other same-language tools sharing a slot). */ export declare function buildQualityModules(catalog?: readonly ToolingToolSpec[]): StackkitModule[]; /** * Gap-fill default developer tooling. For every language that is present in `modules` (a module * provides that language's capability), inject the catalog's default tool into any of its three * Tooling Slots that no present module already fills. Choosing an alternative tool (e.g. Biome, * Pyright) therefore suppresses the default for the slots it covers instead of conflicting. * * The injected modules are built from the catalog itself via {@link buildQualityModules}, so this * needs no `availableModules` list. The result is the original modules followed by injected * defaults, deduped by id; the input is never mutated. */ export declare function applyDefaultTooling(modules: readonly StackkitModule[], catalog?: readonly ToolingToolSpec[]): StackkitModule[]; //# sourceMappingURL=tooling.d.ts.map