/** Host environments that Planu can write rules for. */
export type HostId = 'claude-code' | 'codex' | 'gemini';
/** A rule definition in the Planu universal catalog. */
export interface UniversalRule {
    /** Unique slug identifier, kebab-case (e.g. "planu-dogfood-bugs"). */
    id: string;
    /** Human-readable display name. */
    name: string;
    /** Short description of what this rule enforces. */
    description: string;
    /** Thematic category for grouping. */
    category: 'workflow' | 'quality' | 'safety' | 'dogfood';
    /** Which hosts this rule applies to. Use 'all' to target every host. */
    applicableHosts: readonly (HostId | 'all')[];
    /** Whether the rule is installed by default on init_project. */
    defaultEnabled: boolean;
    /** Build the markdown content for a given host. */
    buildContent: (host: HostId) => string;
}
/** Record of a rule that has been written to disk. */
export interface InstalledRule {
    /** Rule id from the catalog. */
    id: string;
    /** Absolute path where the rule was written. */
    path: string;
    /** The host it was written for. */
    host: HostId;
    /** SHA-256 hex hash of the content at install time. */
    hash: string;
}
/** Entry persisted to .planu-rules-manifest.json. */
export interface RulesManifestEntry {
    id: string;
    path: string;
    hostId: HostId;
    hashAtInstall: string;
    installedAt: string;
}
/** The shape of .planu-rules-manifest.json. */
export interface RulesManifest {
    rules: RulesManifestEntry[];
}
/** Result of reconcile_universal_rules. */
export interface ReconcileResult {
    added: string[];
    skipped: {
        id: string;
        reason: 'already-installed' | 'user-modified' | 'not-applicable-for-host';
    }[];
    failed: {
        id: string;
        error: string;
    }[];
}
/** Input for the create_rule MCP tool handler. */
export interface CreateRuleInput {
    projectPath: string;
    name: string;
    content: string;
    host: HostId | 'auto';
    overwriteExisting?: boolean;
}
/** Result of the create_rule MCP tool handler. */
export interface CreateRuleResult {
    path: string;
    host: HostId;
}
/** Input for the create_skill MCP tool handler. */
export interface CreateSkillInput {
    projectPath: string;
    name: string;
    content: string;
    host: HostId | 'auto';
    overwriteExisting?: boolean;
    description?: string;
}
/** Result of the create_skill MCP tool handler. */
export interface CreateSkillResult {
    dirPath: string;
    skillFilePath: string;
    host: HostId;
}
//# sourceMappingURL=index.d.ts.map