import type { Comment, Program, SourceLocation } from 'estree'; import { StepperBaseNode } from '../interface'; import type { RedexInfo } from '..'; import { StepperStatement } from './Statement'; import { type StepperExpression, type StepperPattern } from '.'; export declare class StepperProgram extends StepperBaseNode implements Program { readonly body: StepperStatement[]; readonly comments?: Comment[] | undefined; readonly sourceType: 'script' | 'module'; 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); isContractible(): boolean; isOneStepPossible(redex: RedexInfo): boolean; contract(): StepperProgram; oneStep(redex: RedexInfo): StepperProgram; static create(node: Program): StepperProgram; substitute(id: StepperPattern, value: StepperExpression, redex: RedexInfo): StepperBaseNode; scanAllDeclarationNames(): string[]; freeNames(): string[]; allNames(): string[]; rename(before: string, after: string): StepperProgram; }