import { type ZodSafeParseResult } from "zod";
import type { MulmoScript } from "../types/type.js";
export type PartialMulmoScript = Record<string, unknown>;
/**
 * Add $mulmocast version if not present
 */
export declare const addMulmocastVersion: (data: PartialMulmoScript) => PartialMulmoScript;
/**
 * Merge base with override (override takes precedence)
 */
export declare const mergeScripts: (base: PartialMulmoScript, override: PartialMulmoScript) => PartialMulmoScript;
/**
 * Get style by name or file path
 */
export declare const getStyle: (style: string) => PartialMulmoScript | undefined;
export type CompleteScriptResult = ZodSafeParseResult<MulmoScript>;
type CompleteScriptOptions = {
    templateName?: string;
    styleName?: string;
    baseDirPath?: string;
};
/**
 * Complete a partial MulmoScript with schema defaults, optional style or template
 *
 * @param data - Partial MulmoScript to complete (highest precedence)
 * @param options - Optional template or style to use as base
 * @param options.templateName - Template name (e.g., "children_book"). Mutually exclusive with styleName.
 * @param options.styleName - Style name or file path. Mutually exclusive with templateName.
 * @returns Zod safe parse result with completed MulmoScript or validation errors
 * @throws Error if both templateName and styleName are specified
 *
 * @example
 * // With template
 * completeScript(data, { templateName: "children_book" })
 *
 * @example
 * // With style
 * completeScript(data, { styleName: "ghibli_comic" })
 *
 * @example
 * // With style from file
 * completeScript(data, { styleName: "./my-style.json" })
 */
export declare const completeScript: (data: PartialMulmoScript, options?: CompleteScriptOptions) => CompleteScriptResult;
/**
 * Check if template exists
 */
export declare const templateExists: (templateName: string) => boolean;
/**
 * Check if style exists (by name or file path)
 */
export declare const styleExists: (style: string) => boolean;
export {};
