import type { ASTScript, ASTClass, ASTFunction, ASTField, ASTVarDecl, ASTAssignment, ASTIf, ASTWhile, ASTFor, ASTForEach, ASTReturn, ASTSwitch, ASTTry, ASTLiteral, ASTBinaryOp, ASTUnaryOp, ASTCall, ASTMethodCall, ASTPropertyAccess, ASTIndexAccess, ASTConditional, ASTArrayLiteral, ASTDictionaryLiteral, ASTCast, ASTLambda, ASTNew, ASTEnum, ASTImport } from '../ScriptAST';
import { ImperativeLanguageExporter, TypeMapping, CodeBuilder, ExportConfig } from '../LanguageExporter';
export declare class RustExporter extends ImperativeLanguageExporter {
    readonly languageName = "rust";
    readonly fileExtension = "rs";
    readonly typeMapping: TypeMapping;
    protected readonly statementTerminator = ";";
    protected readonly breakKeyword = "break";
    protected readonly continueKeyword = "continue";
    constructor(config?: Partial<ExportConfig>);
    protected generateScript(script: ASTScript): string;
    protected generateImport(imp: ASTImport, builder: CodeBuilder): void;
    protected generateEnum(en: ASTEnum, builder: CodeBuilder): void;
    protected generateClass(cls: ASTClass, builder: CodeBuilder): void;
    protected generateField(field: ASTField, builder: CodeBuilder): void;
    protected generateMethod(method: ASTFunction, builder: CodeBuilder): void;
    private generateSystem;
    private generatePlugin;
    private formatParameter;
    protected generateVarDecl(decl: ASTVarDecl, builder: CodeBuilder): void;
    protected generateAssignment(assign: ASTAssignment, builder: CodeBuilder): void;
    protected generateIf(stmt: ASTIf, builder: CodeBuilder): void;
    protected generateWhile(stmt: ASTWhile, builder: CodeBuilder): void;
    protected generateFor(stmt: ASTFor, builder: CodeBuilder): void;
    protected generateForEach(stmt: ASTForEach, builder: CodeBuilder): void;
    protected generateReturn(stmt: ASTReturn, builder: CodeBuilder): void;
    protected generateSwitch(stmt: ASTSwitch, builder: CodeBuilder): void;
    protected generateTry(stmt: ASTTry, builder: CodeBuilder): void;
    protected generateLiteral(lit: ASTLiteral): string;
    protected generateBinaryOp(op: ASTBinaryOp): string;
    protected generateUnaryOp(op: ASTUnaryOp): string;
    protected generateCall(call: ASTCall): string;
    protected generateMethodCall(call: ASTMethodCall): string;
    protected generatePropertyAccess(access: ASTPropertyAccess): string;
    protected generateIndexAccess(access: ASTIndexAccess): string;
    protected generateConditional(cond: ASTConditional): string;
    protected generateArrayLiteral(arr: ASTArrayLiteral): string;
    protected generateDictionaryLiteral(dict: ASTDictionaryLiteral): string;
    protected generateCast(cast: ASTCast): string;
    protected generateLambda(lambda: ASTLambda): string;
    protected generateNew(n: ASTNew): string;
    protected formatArrayType(elementType: string): string;
    protected formatDictType(keyType: string, valueType: string): string;
    protected formatNullableType(baseType: string): string;
}
export default RustExporter;
