import { ExpressionStatement, BinaryExpression, JSXElement, FunctionExpression } from "@babel/types";
import { NodePath } from "@babel/traverse";
/**
 * # Class Method
 * As we want to rearrange code in literate programming, we will seperate class method from class body.
 */
export declare class MethodCode {
    m_Path: NodePath<ExpressionStatement>;
    constructor(path: NodePath<ExpressionStatement>);
    get m_Code(): ExpressionStatement;
    get m_Left(): JSXElement;
    get m_Right(): FunctionExpression;
    get m_Expression(): BinaryExpression;
    get m_ClassName(): string;
    /**
     * The syntax will be:
     *
    ```ts
    export class Foo {
    }
    
    <Foo/> + function Test(this: Foo, a: number, b: string) {
        return a.toString()+b;
    }
    ```
     *
     * After transcription, we will restore `Foo` class to:
     *
    ```ts
    export class Foo {
        static foo : number;
        Test(a: number, b: string) {
            return a.toString()+b;
        }
    }
    ```
     *
     * ## Restore: To Class Method
     */
    ToClassMethod(): import("@babel/types").ClassMethod;
}
