import { AttributeMap, AttributeValue } from 'aws-sdk/clients/dynamodb';
import { PropertyMetadata } from '../decorator/metadata/property-metadata.model';
import { ModelConstructor } from '../model/model-constructor';
import { MapperForType } from './for-type/base.mapper';
import { AttributeModelType } from './type/attribute-model.type';
/**
 *
 */
export declare class Mapper {
    static mapperForType: Map<AttributeModelType, MapperForType<any>>;
    static toDb<T>(item: T, modelConstructor?: ModelConstructor<T>): AttributeMap;
    static toDbOne(propertyValue: any, propertyMetadata?: PropertyMetadata<any>): AttributeValue | 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) => AttributeMap;
    static toKey<T>(item: T, modelConstructor: ModelConstructor<T>): AttributeMap;
    static fromDb<T>(attributeMap: AttributeMap, modelClass?: ModelConstructor<T>): T;
    static fromDbOne<T>(attributeValue: AttributeValue, propertyMetadata?: PropertyMetadata<any>): T;
    static forType(type: AttributeModelType): MapperForType<any>;
    static getPropertyValue(item: any, propertyKey: PropertyKey): any;
}
