import { Method } from '@azure-tools/codegen-csharp';
import { Parameter as NewHttpOperationParameter, Schema as NewSchema } from '@autorest/codemodel';
import { KnownMediaType } from '@azure-tools/codemodel-v3';
import { Expression, ExpressionOrLiteral } from '@azure-tools/codegen-csharp';
import { Parameter } from '@azure-tools/codegen-csharp';
import { OneOrMoreStatements } from '@azure-tools/codegen-csharp';
import { Variable } from '@azure-tools/codegen-csharp';
import { EnhancedVariable } from '../extended-variable';
import { EnhancedTypeDeclaration } from '../schema/extended-type-declaration';
import { State } from '../generator';
import { DeepPartial } from '@azure-tools/codegen';
/** represents a method parameter for an http operation (header/cookie/query/path) */
export declare class OperationParameter extends Parameter implements EnhancedVariable {
    typeDeclaration: EnhancedTypeDeclaration;
    param: NewHttpOperationParameter;
    constructor(parent: Method, param: NewHttpOperationParameter, state: State, objectInitializer?: DeepPartial<OperationParameter>);
    /** emits an expression to deserialize a property from a member inside a container */
    deserializeFromContainerMember(mediaType: KnownMediaType, container: ExpressionOrLiteral, serializedName: string): Expression;
    /** emits an expression to deserialze a container as the value itself. */
    deserializeFromNode(mediaType: KnownMediaType, node: ExpressionOrLiteral): Expression;
    /** emits an expression serialize this to the value required by the container */
    serializeToNode(mediaType: KnownMediaType, serializedName: string, mode: Expression): Expression;
    /** emits an expression serialize this to a HttpContent */
    serializeToContent(mediaType: KnownMediaType, mode: Expression): Expression;
    /** emits the code required to serialize this into a container */
    serializeToContainerMember(mediaType: KnownMediaType, container: Variable, serializedName: string, mode: Expression): OneOrMoreStatements;
    validatePresenceStatement(eventListener: Variable): OneOrMoreStatements;
    validationStatement(eventListener: Variable): OneOrMoreStatements;
}
/** represents a method parameter for an http operation (body) */
export declare class OperationBodyParameter extends Parameter implements EnhancedVariable {
    /** emits an expression to deserialize a property from a member inside a container */
    deserializeFromContainerMember(mediaType: KnownMediaType, container: ExpressionOrLiteral, serializedName: string): Expression;
    /** emits an expression to deserialze a container as the value itself. */
    deserializeFromNode(mediaType: KnownMediaType, node: ExpressionOrLiteral): Expression;
    /** emits an expression serialize this to the value required by the container */
    serializeToNode(mediaType: KnownMediaType, serializedName: string, mode: Expression): Expression;
    /** emits an expression serialize this to a HttpContent */
    serializeToContent(mediaType: KnownMediaType, mode: Expression): Expression;
    /** emits the code required to serialize this into a container */
    serializeToContainerMember(mediaType: KnownMediaType, container: Variable, serializedName: string, mode: Expression): OneOrMoreStatements;
    validatePresenceStatement(eventListener: Variable): OneOrMoreStatements;
    validationStatement(eventListener: Variable): OneOrMoreStatements;
    mediaType: KnownMediaType;
    contentType: string;
    typeDeclaration: EnhancedTypeDeclaration;
    constructor(parent: Method, name: string, description: string, schema: NewSchema, required: boolean, state: State, objectInitializer?: DeepPartial<OperationBodyParameter>);
    get jsonSerializationStatement(): OneOrMoreStatements;
    get jsonDeserializationStatement(): OneOrMoreStatements;
}
export declare class CallbackParameter extends Parameter {
    responseType: (EnhancedTypeDeclaration) | null;
    headerType: (EnhancedTypeDeclaration) | null;
    constructor(name: string, responseType: (EnhancedTypeDeclaration) | null, headerType: (EnhancedTypeDeclaration) | null, state: State, objectInitializer?: DeepPartial<CallbackParameter>);
}
//# sourceMappingURL=parameter.d.ts.map