import Output from '../output/output.js';
import { Instrument } from './instrument.js';
interface IMethodTree {
    [K: string]: Function | string | IMethodTree | any;
}
declare class SubModule {
    private root;
    constructor(root: any);
    addMethod(name: string, cbName: string | Function): void;
    addModule(name: string): SubModule;
}
export declare abstract class AppModule {
    [K: string]: any;
    private rootModule;
    methods: IMethodTree;
    private lifecycle;
    private symbols;
    protected output: Output;
    static readonly id: string;
    static transformLegacy(app: any): void;
    constructor(output: Output);
    getSymbols(): string[];
    addMethod(name: string, cbName: Function | string): void;
    addModule(name: string): SubModule;
    instrumentize(fullPath: string, method: string): Instrument;
    addLifecycleStep(name: string, cbName: string): void;
    executeLifecycleStep(name: string): void;
}
export default AppModule;
