import type { Comment, IfStatement, SourceLocation } from 'estree';
import { type StepperExpression, type StepperPattern } from '..';
import type { StepperBaseNode } from '../../interface';
import { StepperBlockStatement } from './BlockStatement';
import { StepperStatement } from '.';
export declare class StepperIfStatement implements IfStatement, StepperBaseNode {
    type: 'IfStatement';
    test: StepperExpression;
    consequent: StepperStatement;
    alternate: StepperStatement | null;
    leadingComments?: Comment[] | undefined;
    trailingComments?: Comment[] | undefined;
    loc?: SourceLocation | null | undefined;
    range?: [number, number] | undefined;
    constructor(test: StepperExpression, consequent: StepperStatement, alternate: StepperStatement | null, leadingComments?: Comment[] | undefined, trailingComments?: Comment[] | undefined, loc?: SourceLocation | null | undefined, range?: [number, number] | undefined);
    static create(node: IfStatement): StepperIfStatement;
    isContractible(): boolean;
    contract(): StepperBlockStatement | StepperIfStatement;
    isOneStepPossible(): boolean;
    oneStep(): StepperIfStatement | StepperBlockStatement;
    substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode;
    contractEmpty(): void;
    freeNames(): string[];
    allNames(): string[];
    rename(before: string, after: string): StepperIfStatement;
}
