import { ClassDeclaration, FieldDeclaration, MethodDeclaration, DiagnosticEmitter, FunctionDeclaration } from "assemblyscript"; import { TransformVisitor } from "visitor-as"; import { MessageDeclaration, ConstructorDeclaration } from "../ast"; import { AskConfig } from "../config"; /** * ContractVisitor traversal `@contract` class and collect contract related info for later processes. * Note: Don't reuse a visitor if you have not reset the inner state. */ export declare class ContractVisitor extends TransformVisitor { readonly emitter: DiagnosticEmitter; readonly config: AskConfig; readonly constructorDecls: Array; readonly messageDecls: Array; deployFunction: FunctionDeclaration | null; callFunction: FunctionDeclaration | null; private hasBase; private contractName; constructor(emitter: DiagnosticEmitter, config: AskConfig); visitClassDeclaration(node: ClassDeclaration): ClassDeclaration; visitFieldDeclaration(node: FieldDeclaration): FieldDeclaration; visitMethodDeclaration(node: MethodDeclaration): MethodDeclaration; private visisConstructorDeclaration; private visisMessageDeclaration; private genFields; private genContract; private genCallSelector; private genDeploySelector; private genDeploy; private genCall; private mustBeLegalConstructor; private mustBeLegalMessage; static createDeployAbi(contract: ClassDeclaration): FunctionDeclaration; static createCallAbi(contract: ClassDeclaration): FunctionDeclaration; }