import type { ConfigMergeMutation, ConfigPruneMutation, ConfigTransformMutation, ConfigObject, ValueResolver, MutationOptions } from "../types.js";
export interface MergeOptions {
    /** Target file path (must start with ~) */
    target: ValueResolver<string>;
    /** Value to merge into the config file */
    value: ValueResolver<ConfigObject>;
    /** Optional explicit format override */
    format?: "json" | "toml" | "yaml";
    /** Optional prune by prefix before merging (TOML) */
    pruneByPrefix?: Record<string, string>;
    /** Optional human-readable label for logging */
    label?: string;
}
export interface PruneOptions {
    /** Target file path (must start with ~) */
    target: ValueResolver<string>;
    /** Shape to prune from the config file */
    shape: ValueResolver<ConfigObject>;
    /** Optional explicit format override */
    format?: "json" | "toml" | "yaml";
    /** Optional guard - only prune if predicate returns true */
    onlyIf?: (doc: ConfigObject, ctx: MutationOptions) => boolean;
    /** Optional human-readable label for logging */
    label?: string;
}
export interface TransformOptions {
    /** Target file path (must start with ~) */
    target: ValueResolver<string>;
    /** Optional explicit format override */
    format?: "json" | "toml" | "yaml";
    /** Transform function - receives parsed content, returns transformed content */
    transform: (content: ConfigObject, ctx: MutationOptions) => {
        content: ConfigObject | null;
        changed: boolean;
    };
    /** Optional human-readable label for logging */
    label?: string;
}
declare function merge(options: MergeOptions): ConfigMergeMutation;
declare function prune(options: PruneOptions): ConfigPruneMutation;
declare function transform(options: TransformOptions): ConfigTransformMutation;
export declare const configMutation: {
    merge: typeof merge;
    prune: typeof prune;
    transform: typeof transform;
};
export {};
