import { Node, ClassDeclaration, PropertyDeclaration, FunctionDeclaration, MethodDeclaration, ArrowFunction, Expression, VariableDeclaration } from 'typescript';
import type { ST_Expression, ST_Parameter, ST_TypeDef, ST_VariableStatement } from 'SmartTS';
import { InterpreterBase } from './Base';
export default class DeclarationInterpreter extends InterpreterBase {
    visitClassDeclarationNode(node: ClassDeclaration): void;
    visitFunctionDeclarationNode: (node: FunctionDeclaration | MethodDeclaration | PropertyDeclaration | VariableDeclaration) => void;
    visitClassMember: (node: Node) => void;
    extractContractArgument: (expr: Expression, argType: ST_TypeDef) => ST_Expression;
    extractParameter: (node: Node) => ST_Parameter;
    /**
     * @description Deference property from anther property reference
     * @param {Node} Identifier Property reference
     * @returns {Extract<ST_Expression, { kind: ST_ExpressionKind.VariableDeclaration }> | void} Property value
     */
    dereferenceProperty: (name: string) => ST_VariableStatement | void;
    visitFunctionNode: (node: FunctionDeclaration | MethodDeclaration | ArrowFunction, inlined: boolean) => void;
}
