import type { IExpression } from '../typings/expression'; import type { IStatement } from '../typings/statement'; import type { IType } from '../typings/type'; import { LineInfo } from '../misc/utils'; import { Proxied } from '../misc/proxy'; export declare class Statement implements IStatement { name: string; args: (string | LineInfo | IType | IExpression)[]; constructor(name: string, ...args: (IExpression | IType | LineInfo | string)[]); toString(): string; } export declare class IfStatment implements IStatement { #private; constructor(condition: IExpression, line?: LineInfo, thenStatements?: IStatement[], elseStatements?: IStatement[]); Then(statements: IStatement[]): this; Else(statements: IStatement[]): this; private ifBlock; private elseBlock; [Symbol.toPrimitive](): string; } export declare class VariantMatchStatement implements IStatement { private variant; private argumentName; private line; static idCounter: number; private cases; static get nextID(): number; constructor(variant: IExpression, argumentName: string, line?: LineInfo); setArgumentName(argumentName: string): this; Case(branch: string, buildStatements: (arg: Proxied>) => IStatement[], variantArgumentName?: string): this; private caseArgument; [Symbol.toPrimitive](): string; } export declare class WhileStatement implements IStatement { private condition; private statements; private line; constructor(condition: IExpression, statements?: IStatement[], line?: LineInfo); Do(statements: IStatement[]): this; [Symbol.toPrimitive](): string; } export declare class ForStatement implements IStatement { private from; private to; private increment; private statements; private iteratorName; private line; static idCounter: number; static get nextID(): number; constructor(from: IExpression, to: IExpression, increment: IExpression, statements: IStatement[], iteratorName: string, line?: LineInfo); setIteratorName(iteratorName: string): this; Do(callback: (iterator: Proxied>) => IStatement[], line?: LineInfo): this; [Symbol.toPrimitive](): string; } export declare class ForEachStatement implements IStatement { private list; private statements; private iteratorName; private line; static idCounter: number; static get nextID(): number; constructor(list: IExpression, statements: IStatement[], iteratorName: string, line?: LineInfo); setIteratorName(iteratorName: string): this; Do(callback: (iterator: Proxied>) => IStatement[], line?: LineInfo): this; [Symbol.toPrimitive](): string; }