import { PropertyMetadata } from '../decorator/metadata/property-metadata.model';
import { ModelConstructor } from '../model/model-constructor';
import { MapperForType } from './for-type/base.mapper';
import { AttributeValueType } from './type/attribute-value-type.type';
import { Attribute, Attributes } from './type/attribute.type';
/**
 *
 */
export declare class Mapper {
    static mapperForType: Map<AttributeValueType, MapperForType<any, any>>;
    static toDb<T>(item: T, modelConstructor?: ModelConstructor<T>): Attributes<T>;
    static toDbOne(propertyValue: any, propertyMetadata?: PropertyMetadata<any>): Attribute | null;
    /**
     * returns the function for the given ModelConstructor to create the AttributeMap with HASH (and RANGE) Key of a given item. used to delete items
     * @param modelConstructor
     */
    static createToKeyFn<T>(modelConstructor: ModelConstructor<T>): (item: T) => Attributes;
    static toKey<T>(item: T, modelConstructor: ModelConstructor<T>): Attributes;
    static fromDb<T>(attributeMap: Attributes, modelClass?: ModelConstructor<T>): T;
    static fromDbOne<T>(attributeValue: Attribute, propertyMetadata?: PropertyMetadata<any, any>): T;
    static forType(type: AttributeValueType): MapperForType<any, Attribute>;
    static getPropertyValue(item: any, propertyKey: PropertyKey): any;
}
