import { Alias } from '../alias';
import { CustomKey } from '../custom-key';
import { CustomValue } from '../custom-value';
import { DefaultValueResolver } from '../default-value-resolver';
import { GenericArgument } from '../generic-argument';
import { GenericMetadata } from '../generic-metadata';
import { NamingConvention } from '../naming-convention';
import { NullValueResolver } from '../null-value-resolver';
import { Optional } from '../optional';
import { PropertyMetadata } from '../property-metadata';
import { PropertyName } from '../property-name';
import { PropertyState } from '../property-state';
import { ReferenceHandler } from '../reference-handler';
import { Serializer } from '../serializer';
import { TypeArgument } from '../type-argument';
import { TypeMetadata } from '../type-metadata';
/**
 * Represents unresolved property state.
 *
 * @type {UnresolvedPropertyState<TDeclaringObject, TObject>}
 */
export declare class UnresolvedPropertyState<TDeclaringObject, TObject> implements PropertyState<TDeclaringObject, TObject> {
    /**
     * Property metadata for which state is defined.
     *
     * @type {PropertyMetadata<TDeclaringObject, TObject>}
     */
    readonly propertyMetadata: PropertyMetadata<TDeclaringObject, TObject>;
    /**
     * Resolved property state.
     *
     * @type {ResolvedPropertyState<TDeclaringObject, TObject>}
     */
    private resolvedPropertyState?;
    /**
     * Constructor.
     *
     * @param {PropertyMetadata<TDeclaringObject, TObject>} propertyMetadata Property metadata for which state is defined.
     */
    constructor(propertyMetadata: PropertyMetadata<TDeclaringObject, TObject>);
    /**
     * Gets alias.
     *
     * @returns {Optional<Alias>} Optional alias.
     */
    get alias(): Optional<Alias>;
    /**
     * Gets custom value map.
     *
     * @returns {ReadonlyMap<CustomKey<any>, CustomValue>} Custom value map.
     */
    get customValueMap(): ReadonlyMap<CustomKey<any>, CustomValue>;
    /**
     * Gets serialized null value resolver.
     *
     * @returns {NullValueResolver} Serialized null value resolver.
     */
    get serializedNullValueResolver(): NullValueResolver;
    /**
     * Gets serialized default value resolver.
     *
     * @returns {DefaultValueResolver} Default value resolver.
     */
    get serializedDefaultValueResolver(): DefaultValueResolver;
    /**
     * Gets deserialized null value resolver.
     *
     * @returns {NullValueResolver} Deserialized null value resolver.
     */
    get deserializedNullValueResolver(): NullValueResolver;
    /**
     * Gets deserialized default value resolver.
     *
     * @returns {DefaultValueResolver} Deserialized default value resolver.
     */
    get deserializedDefaultValueResolver(): DefaultValueResolver;
    /**
     * Gets serialized property name.
     *
     * @returns {PropertyName} Serialized property name.
     */
    get serializedPropertyName(): PropertyName;
    /**
     * Gets deserialized property name.
     *
     * @returns {PropertyName} Deserialized property name.
     */
    get deserializedPropertyName(): PropertyName;
    /**
     * Gets serializable value.
     *
     * @returns {boolean} Serializable value.
     */
    get serializable(): boolean;
    /**
     * Gets deserializable value.
     *
     * @returns {boolean} Deserializable value.
     */
    get deserializable(): boolean;
    /**
     * Gets generic arguments.
     *
     * @returns {ReadonlyArray<GenericArgument<any>>} Generic arguments.
     */
    get genericArguments(): ReadonlyArray<GenericArgument<any>>;
    /**
     * Gets generic metadatas.
     *
     * @returns {ReadonlyArray<GenericMetadata<any>>} Generic metadatas.
     */
    get genericMetadatas(): ReadonlyArray<GenericMetadata<any>>;
    /**
     * Gets naming convention.
     *
     * @returns {Optional<NamingConvention>} Naming convention.
     */
    get namingConvention(): Optional<NamingConvention>;
    /**
     * Gets reference handler.
     *
     * @returns {ReferenceHandler} Reference handler.
     */
    get referenceHandler(): ReferenceHandler;
    /**
     * Gets serializer.
     *
     * @returns {Serializer<TObject>} Serializer.
     */
    get serializer(): Serializer<TObject>;
    /**
     * Gets type argument.
     *
     * @returns {TypeArgument<TObject>} Type argument.
     */
    get typeArgument(): TypeArgument<TObject>;
    /**
     * Gets type metadata.
     *
     * @returns {TypeMetadata<TObject>} Type metadata.
     */
    get typeMetadata(): TypeMetadata<TObject>;
    /**
     * Gets indicator if null value should be preserved.
     *
     * @returns {boolean} Preserve null indicator.
     */
    get preserveNull(): boolean;
    /**
     * Gets indicator if default value should be used.
     *
     * @returns {boolean} Use default value indicator.
     */
    get useDefaultValue(): boolean;
    /**
     * Gets indicator if implicit conversion should be used.
     *
     * @returns {boolean} Use implicit conversion indicator.
     */
    get useImplicitConversion(): boolean;
}
//# sourceMappingURL=unresolved-property-state.d.ts.map