import { MapperForType } from '../../mapper/for-type/base.mapper';
import { KeyType } from 'aws-sdk/clients/dynamodb';
import { Attribute } from '../../mapper/type/attribute.type';
import { ModelConstructor } from '../../model/model-constructor';
export interface TypeInfo {
    type: ModelConstructor<any>;
    isCustom?: boolean;
    genericType?: ModelConstructor<any>;
}
export interface Key {
    type: KeyType;
    uuid?: boolean;
}
export interface PropertyMetadata<T, R extends Attribute = Attribute> {
    key?: Key;
    name: keyof T;
    nameDb: string;
    typeInfo?: TypeInfo;
    isSortedCollection?: boolean;
    mapper?: () => MapperForType<any, R>;
    keyForGSI?: Record<string, KeyType>;
    sortKeyForLSI?: string[];
    transient?: boolean;
}
export declare function hasGenericType(propertyMetadata?: PropertyMetadata<any, any>): propertyMetadata is PropertyMetadata<any, any> & {
    typeInfo: {
        genericType: ModelConstructor<any>;
    };
};
