import { Metadata } from '../decorator/metadata/metadata';
import { PropertyMetadata } from '../decorator/metadata/property-metadata.model';
import { ModelConstructor } from '../model';
import { MapperForType } from './for-type/base.mapper';
import { AttributeValueType } from './type/attribute-value-type.type';
import { Attribute, Attributes } from './type/attribute.type';
export declare function toDb<T>(item: T, modelConstructor?: ModelConstructor<T>): Attributes<T>;
export declare function 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
 */
export declare function createToKeyFn<T>(modelConstructor: ModelConstructor<T>): (item: Partial<T>) => Attributes<T>;
export declare function toKey<T>(item: T, modelConstructor: ModelConstructor<T>): Attributes<T>;
export declare function createKeyAttributes<T>(metadata: Metadata<T>, partitionKey: any, sortKey?: any): Attributes<Partial<T>>;
export declare function fromDb<T>(attributeMap: Attributes<T>, modelClass?: ModelConstructor<T>): T;
export declare function fromDbOne<T>(attributeValue: Attribute, propertyMetadata?: PropertyMetadata<any, any>): T;
export declare function forType(type: AttributeValueType): MapperForType<any, Attribute>;
export declare function getPropertyValue(item: any, propertyKey: PropertyKey): any;
