import type { SExpr } from '../SExpr';
export type PrimitiveHandler = (args: SExpr[], evaluate: (expr: SExpr) => Promise<unknown>) => Promise<unknown>;
export interface IPrimitiveDefinition {
    name: string;
    aliases?: string[];
    handler: PrimitiveHandler;
}
/**
 * QUOTE - Return the argument unevaluated
 * (quote x) → x
 * 'x → x
 */
export declare const quote: IPrimitiveDefinition;
/**
 * ATOM - Is this a primitive (not a list)?
 * (atom 'x) → true
 * (atom '(a b)) → false
 */
export declare const atom: IPrimitiveDefinition;
/**
 * EQ - Are two atoms equal?
 * (eq 'a 'a) → true
 * (eq 'a 'b) → false
 */
export declare const eq: IPrimitiveDefinition;
/**
 * CAR - First element of a list
 * (car '(a b c)) → a
 */
export declare const car: IPrimitiveDefinition;
/**
 * CDR - Rest of a list (everything but first)
 * (cdr '(a b c)) → (b c)
 */
export declare const cdr: IPrimitiveDefinition;
/**
 * CONS - Construct a list by prepending
 * (cons 'a '(b c)) → (a b c)
 */
export declare const cons: IPrimitiveDefinition;
/**
 * COND - Conditional expression
 * (cond ((test1) result1) ((test2) result2) (else default))
 */
export declare const cond: IPrimitiveDefinition;
/**
 * List accessor shortcuts
 */
export declare const cadr: IPrimitiveDefinition;
export declare const caddr: IPrimitiveDefinition;
export declare const cadddr: IPrimitiveDefinition;
/**
 * All McCarthy primitives
 */
export declare const mccarthyPrimitives: IPrimitiveDefinition[];
//# sourceMappingURL=mccarthy.d.ts.map