import type { Comment, Program, SourceLocation } from 'estree';
import type { StepperBaseNode } from '../interface';
import { StepperStatement } from './Statement';
import { type StepperExpression, type StepperPattern } from '.';
export declare class StepperProgram implements Program, StepperBaseNode {
    type: 'Program';
    sourceType: 'script' | 'module';
    body: StepperStatement[];
    comments?: Comment[] | undefined;
    leadingComments?: Comment[] | undefined;
    trailingComments?: Comment[] | undefined;
    loc?: SourceLocation | null | undefined;
    range?: [number, number] | undefined;
    isContractible(): boolean;
    isOneStepPossible(): boolean;
    contract(): StepperProgram;
    oneStep(): StepperProgram;
    static create(node: Program): StepperProgram;
    constructor(body: StepperStatement[], // TODO: Add support for variable declaration
    comments?: Comment[] | undefined, leadingComments?: Comment[] | undefined, trailingComments?: Comment[] | undefined, loc?: SourceLocation | null | undefined, range?: [number, number] | undefined);
    substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode;
    scanAllDeclarationNames(): string[];
    freeNames(): string[];
    allNames(): string[];
    rename(before: string, after: string): StepperProgram;
}
