import { Abstract, Access, Async, Extern, New, Override, Sealed, Static, Virtual } from '#csharp/code-dom/access-modifier';
import { Parameter } from './parameter';
import { Statements, StatementPossibilities } from './statements/statement';
import { TypeDeclaration } from './type-declaration';
import { Expression } from '#csharp/code-dom/expression';
import { Class } from '#csharp/code-dom/class';
export declare class Method extends Statements {
    name: string;
    protected returnType: TypeDeclaration;
    parameters: Parameter[];
    "new": New;
    access: Access;
    "static": Static;
    virtual: Virtual;
    sealed: Sealed;
    override: Override;
    abstract: Abstract;
    extern: Extern;
    async: Async;
    isPartial: boolean;
    description: string;
    externalDocs?: {
        url?: string;
        description?: string;
    };
    body?: StatementPossibilities;
    constructor(name: string, returnType?: TypeDeclaration, objectIntializer?: Partial<Method>);
    addParameter(parameter: Parameter): Parameter;
    protected readonly summaryDocumentation: string;
    protected readonly parameterDocumentation: string;
    readonly declaration: string;
    readonly interfaceDeclaration: string;
    readonly implementation: string;
    invoke(...parameters: Array<Expression>): Expression;
    addTo(parent: Class): Method;
}
export declare class PartialMethod extends Method {
    isPartial: boolean;
    constructor(name: string, returnType?: TypeDeclaration, objectIntializer?: Partial<PartialMethod>);
    readonly declaration: string;
    readonly implementation: string;
}
export declare class LambdaMethod extends Method {
    protected expression: Expression;
    constructor(name: string, returnType: TypeDeclaration | undefined, expression: Expression, objectIntializer?: Partial<PartialMethod>);
    readonly declaration: string;
    readonly implementation: string;
}
//# sourceMappingURL=method.d.ts.map