import { Class } from '#csharp/code-dom/class';
import { ExpressionOrLiteral, Expression } from '#csharp/code-dom/expression';
import { Field } from '#csharp/code-dom/field';
import { Namespace } from '#csharp/code-dom/namespace';
import { OneOrMoreStatements } from '#csharp/code-dom/statements/statement';
import { State } from '../generator';
import { EnhancedTypeDeclaration } from '#csharp/schema/extended-type-declaration';
import { ObjectImplementation } from '#csharp/schema/object';
import { TypeDeclaration } from '#csharp/code-dom/type-declaration';
import { KnownMediaType } from '#common/media-types';
import { Variable } from '#csharp/code-dom/variable';
export interface BackingField {
    field: Field;
    typeDeclaration: TypeDeclaration;
    className: string;
}
export declare class ModelClass extends Class implements EnhancedTypeDeclaration {
    deserializeFromContainerMember(mediaType: KnownMediaType, container: ExpressionOrLiteral, serializedName: string, defaultValue: Expression): Expression;
    deserializeFromNode(mediaType: KnownMediaType, node: ExpressionOrLiteral, defaultValue: Expression): Expression;
    serializeToNode(mediaType: KnownMediaType, value: ExpressionOrLiteral, serializedName: string): Expression;
    /** emits an expression serialize this to a HttpContent */
    serializeToContent(mediaType: KnownMediaType, value: ExpressionOrLiteral): Expression;
    /** emits an expression to deserialize content from a string */
    deserializeFromString(mediaType: KnownMediaType, content: ExpressionOrLiteral, defaultValue: Expression): Expression | undefined;
    serializeToContainerMember(mediaType: KnownMediaType, value: ExpressionOrLiteral, container: Variable, serializedName: string): OneOrMoreStatements;
    readonly isXmlAttribute: boolean;
    readonly isRequired: boolean;
    isPolymorphic: boolean;
    private jsonSerializer;
    private xmlSerializer;
    hasHeaderProperties: boolean;
    constructor(namespace: Namespace, schemaWithFeatures: ObjectImplementation, state: State, objectInitializer?: Partial<ModelClass>);
    validateValue(property: Variable): OneOrMoreStatements;
    validatePresence(property: Variable): OneOrMoreStatements;
    addDiscriminator(discriminatorValue: string, modelClass: ModelClass): void;
}
//# sourceMappingURL=model-class.d.ts.map