import { DecomposedPath } from '../../../core/DecomposedPath';
import { BaseParamType } from '../../params/_Base';
import { BaseNodeType } from '../../nodes/_Base';
import { MethodDependency } from '../MethodDependency';
import { CoreGraphNode } from '../../../core/graph/CoreGraphNode';
import { BaseContainer } from '../../containers/_Base';
export interface BaseMethodFindDependencyArgs {
    indexOrPath: string | number | undefined;
    node?: BaseNodeType;
}
export declare class BaseMethod {
    readonly param: BaseParamType;
    constructor(param: BaseParamType);
    private _node;
    protected node(): BaseNodeType | undefined;
    static requiredArguments(): any[];
    static optionalArguments(): any[];
    static minAllowedArgumentsCount(): number;
    static maxAllowedArgumentsCount(): number;
    static allowedArgumentsCount(count: number): boolean;
    processArguments(args: any): Promise<any>;
    getReferencedNodeContainer(indexOrPath: number | string): Promise<BaseContainer>;
    getReferencedParam(path: string, decomposedPath?: DecomposedPath): BaseParamType | null;
    findReferencedGraphNode(indexOrPath: number | string, decomposedPath?: DecomposedPath): CoreGraphNode | null;
    getReferencedNode(indexOrPath: string | number, decomposedPath?: DecomposedPath): BaseNodeType | null;
    findDependency(arg: BaseMethodFindDependencyArgs): MethodDependency | null;
    protected createDependencyFromIndexOrPath(args: BaseMethodFindDependencyArgs): MethodDependency | null;
    protected createDependency(node: CoreGraphNode, pathArgs: BaseMethodFindDependencyArgs, decomposedPath?: DecomposedPath): MethodDependency | null;
}
