import { Transform } from 'assemblyscript/transform';
import { ClassDeclaration, Parser, Program, Statement } from 'assemblyscript/dist/assemblyscript.js';
import { SimpleParser } from '@btc-vision/visitor-as';
import { Logger } from '@btc-vision/logger';
import { ClassABI, MethodCollection } from './interfaces/Abi.js';
declare const logger: Logger;
export { logger, SimpleParser };
export default class OPNetTransformer extends Transform {
    protected methodsByClass: Map<string, MethodCollection[]>;
    protected classDeclarations: Map<string, ClassDeclaration>;
    private allEvents;
    private eventsUsedInClass;
    private program;
    private currentClassName;
    private collectingEvent;
    private currentEventName;
    private isEventClass;
    afterParse(parser: Parser): Promise<void>;
    afterInitialize(program: Program): void;
    protected buildAbiPerClass(): Map<string, ClassABI>;
    protected buildDtsForClass(className: string, abiObj: ClassABI): string;
    protected buildExecuteMethod(_className: string, methods: MethodCollection[]): string;
    protected checkUnusedEvents(): void;
    protected visitStatement(stmt: Statement): void;
    private visitClassDeclaration;
    private visitMethodDeclaration;
    private visitFieldDeclaration;
    private parseEventConstructor;
    private getInternalNameForMethodDeclaration;
    private parseDecoratorArgs;
    private parseParamDefs;
    private parseParamDefinition;
    private isParamDefinition;
    /**
     * Convert a user-supplied type string into our internal ABIDataTypes enum.
     */
    private mapToAbiDataType;
    private mapAbiTypeToTypescript;
    private toPascalCase;
}
