import type { Comment, SourceLocation, VariableDeclaration, VariableDeclarator } from 'estree';
import { type StepperExpression, type StepperPattern, undefinedNode } from '..';
import type { StepperBaseNode } from '../../interface';
export declare class StepperVariableDeclarator implements VariableDeclarator, StepperBaseNode {
    type: 'VariableDeclarator';
    id: StepperPattern;
    init?: StepperExpression | null | undefined;
    leadingComments?: Comment[] | undefined;
    trailingComments?: Comment[] | undefined;
    loc?: SourceLocation | null | undefined;
    range?: [number, number] | undefined;
    constructor(id: StepperPattern, init: StepperExpression | null | undefined, leadingComments?: Comment[] | undefined, trailingComments?: Comment[] | undefined, loc?: SourceLocation | null | undefined, range?: [number, number] | undefined);
    static create(node: VariableDeclarator): StepperVariableDeclarator;
    isContractible(): boolean;
    isOneStepPossible(): boolean;
    contract(): StepperVariableDeclarator;
    oneStep(): StepperVariableDeclarator;
    substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode;
    freeNames(): string[];
    allNames(): string[];
    rename(before: string, after: string): StepperVariableDeclarator;
}
export declare class StepperVariableDeclaration implements VariableDeclaration, StepperBaseNode {
    type: 'VariableDeclaration';
    declarations: StepperVariableDeclarator[];
    kind: 'var' | 'let' | 'const';
    leadingComments?: Comment[] | undefined;
    trailingComments?: Comment[] | undefined;
    loc?: SourceLocation | null | undefined;
    range?: [number, number] | undefined;
    constructor(declarations: StepperVariableDeclarator[], kind: 'var' | 'let' | 'const', leadingComments?: Comment[] | undefined, trailingComments?: Comment[] | undefined, loc?: SourceLocation | null | undefined, range?: [number, number] | undefined);
    static create(node: VariableDeclaration): StepperVariableDeclaration;
    isContractible(): boolean;
    isOneStepPossible(): boolean;
    contract(): typeof undefinedNode;
    contractEmpty(): void;
    oneStep(): StepperVariableDeclaration | typeof undefinedNode;
    substitute(id: StepperPattern, value: StepperExpression): StepperBaseNode;
    freeNames(): string[];
    allNames(): string[];
    rename(before: string, after: string): StepperVariableDeclaration;
}
