import type { SExpr } from '../SExpr';
/**
 * Parse S-expression source code to JSON wire format
 *
 * @param source - S-expression source code
 * @returns Array of parsed expressions
 *
 * @example
 * parseSExpr("(+ 1 2)")
 * // => [["+", 1, 2]]
 *
 * @example
 * parseSExpr("(define (square x) (* x x))")
 * // => [["define", ["square", "x"], ["*", "x", "x"]]]
 *
 * @example
 * parseSExpr("'(1 2 3)")
 * // => [["quote", [1, 2, 3]]]
 */
export declare function parseSExpr(source: string): SExpr[];
/**
 * Parse a single S-expression
 * Throws if more than one expression is provided
 */
export declare function parseSExprSingle(source: string): SExpr;
/**
 * Convert JSON wire format back to S-expression string
 *
 * @param expr - JSON wire format expression
 * @returns S-expression string
 *
 * @example
 * toSExpr(["+", 1, 2])
 * // => "(+ 1 2)"
 */
export declare function toSExpr(expr: SExpr): string;
/**
 * Pretty-print S-expression with indentation
 */
export declare function prettySExpr(expr: SExpr, indent?: number): string;
/**
 * Wrap parsed expressions in a do block if multiple
 */
export declare function wrapInDo(exprs: SExpr[]): SExpr;
/**
 * Parse and prepare for evaluation
 * Handles multi-expression input by wrapping in do block
 */
export declare function parseForEval(source: string): SExpr;
export declare const SCHEME_EXAMPLES: {
    factorial: string;
    fibonacci: string;
    mapImpl: string;
    filterImpl: string;
    reduceImpl: string;
    quicksort: string;
    yCombinator: string;
    churchNumerals: string;
    macroExample: string;
};
/**
 * Parse and convert a Scheme example to JSON wire format
 */
export declare function parseSchemeExample(name: keyof typeof SCHEME_EXAMPLES): SExpr;
//# sourceMappingURL=SExprParser.d.ts.map