import { RuleConfig, RuleProvider, RuleGeneratorOptions } from "../types.js";
export declare class CodexRuleProvider implements RuleProvider {
    private readonly ruleType;
    /**
     * Generates formatted content for Codex including metadata.
     */
    generateRuleContent(config: RuleConfig, options?: RuleGeneratorOptions): string;
    /**
     * Saves a rule definition to internal storage for later use.
     * @param config - The rule configuration.
     * @returns Path where the rule definition was saved internally.
     */
    saveRule(config: RuleConfig): Promise<string>;
    /**
     * Loads a rule definition from internal storage.
     * @param name - The name of the rule to load.
     * @returns The RuleConfig if found, otherwise null.
     */
    loadRule(name: string): Promise<RuleConfig | null>;
    /**
     * Lists rule definitions available in internal storage.
     * @returns An array of rule names.
     */
    listRules(): Promise<string[]>;
    /**
     * Appends a rule loaded from internal storage to the target Codex file.
     * @param name - The name of the rule in internal storage.
     * @param targetPath - Optional explicit target file path.
     * @param isGlobal - Hint for global context (uses ~/.codex/instructions.md).
     * @param options - Additional generation options.
     * @returns True on success, false on failure.
     */
    appendRule(name: string, targetPath?: string, isGlobal?: boolean, options?: RuleGeneratorOptions): Promise<boolean>;
    /**
     * Formats and applies a rule directly from a RuleConfig object using XML-like tags.
     * If a rule with the same name (tag) already exists, its content is updated.
     * @param config - The rule configuration to apply.
     * @param targetPath - The target file path (e.g., ~/.codex/AGENTS.md or ./AGENTS.md).
     * @param isGlobal - Unused by this method but kept for interface compatibility.
     * @param options - Additional options like description, alwaysApply, globs.
     * @returns True on success, false on failure.
     */
    appendFormattedRule(config: RuleConfig, targetPath: string, isGlobal?: boolean | undefined, options?: RuleGeneratorOptions | undefined): Promise<boolean>;
}
