import { Operation } from '@autorest/codemodel';
import { DeepPartial } from '@azure-tools/codegen';
import { Class } from '@azure-tools/codegen-csharp';
import { Expression, LiteralExpression } from '@azure-tools/codegen-csharp';
import { Method } from '@azure-tools/codegen-csharp';
import { Parameter } from '@azure-tools/codegen-csharp';
import { State } from '../generator';
import { CallbackParameter, OperationParameter, OperationBodyParameter } from '../operation/parameter';
import { EnhancedTypeDeclaration } from '../schema/extended-type-declaration';
export declare class EventListener {
    protected expression: Expression;
    protected emitSignals: boolean;
    constructor(expression: Expression, emitSignals: boolean, withResult?: boolean);
    private withResult;
    signalNoCheck(eventName: Expression, ...additionalParameters: Array<string | Expression>): Generator<string, void, unknown>;
    syncSignalNoCheck(eventName: Expression, ...additionalParameters: Array<string | Expression>): Generator<string, void, unknown>;
    signal(eventName: Expression, ...additionalParameters: Array<string | Expression>): Generator<string, void, unknown>;
    syncSignal(eventName: Expression, ...additionalParameters: Array<string | Expression>): Generator<string, void, unknown>;
}
export declare class OperationMethod extends Method {
    parent: Class;
    operation: Operation;
    viaIdentity: boolean;
    protected state: State;
    viaJson: boolean;
    methodParameters: Array<OperationParameter>;
    bodyParameter?: OperationBodyParameter;
    serializationMode?: LiteralExpression;
    contextParameter: Parameter;
    senderParameter: Parameter;
    serializationModeParameter: Parameter;
    resourceUri: Parameter;
    callbacks: CallbackParameter[];
    protected callName: string;
    constructor(parent: Class, operation: Operation, viaIdentity: boolean, state: State, viaJson?: boolean, withResult?: boolean, objectInitializer?: DeepPartial<OperationMethod>);
    emitCall(returnFromCall: boolean, withResult?: boolean): void;
}
export declare function ResolveResponseType(opMethod?: OperationMethod, operation?: Operation, state?: State): EnhancedTypeDeclaration | undefined;
export declare class CallMethod extends Method {
    protected parent: Class;
    protected opMethod: OperationMethod;
    protected state: State;
    returnNull: boolean;
    constructor(parent: Class, opMethod: OperationMethod, state: State, objectInitializer?: DeepPartial<OperationMethod>, withResult?: boolean);
    private finalGet;
    private responsesEmitter;
    private responseHandlerForNormalPipeline;
    private NewResponseHandlerForNormalPipeline;
    private NewResponseHandlerWithResult;
    private responseHandler;
    private NewResponseHandler;
}
export declare class ValidationMethod extends Method {
    protected parent: Class;
    protected opMethod: OperationMethod;
    protected state: State;
    constructor(parent: Class, opMethod: OperationMethod, state: State, objectInitializer?: DeepPartial<OperationMethod>);
}
//# sourceMappingURL=method.d.ts.map