import { AttributeCollectionType, AttributeType } from './type/attribute-type.type';
import { AttributeValueType } from './type/attribute-value-type.type';
import { Attribute } from './type/attribute.type';
import { TypesByConvention } from './type/types-by-convention.type';
export declare class Util {
    static REGEX_CONVENTIONS: {
        [key in TypesByConvention]: RegExp;
    };
    static DATE_TIME_ISO8601: RegExp;
    /**
     * Detects the dynamodb type to which an collection value should be mapped. Empty collections will be mapped to L(ist).
     * Collections of type array where all the values are either String | Number | Binary will be mapped to the corresponding S(et)
     * type. If the item types are heterogeneous or it is a non supported set type the returned type will be L(ist).
     * The logic for collection fo type Set is the same.
     *
     * @param {any[] | Set<any>} collection
     * @returns {AttributeCollectionType}
     */
    static detectCollectionType(collection: any[] | Set<any>): AttributeCollectionType;
    static typeByConvention(propertyKey: string): TypesByConvention | undefined;
    static isCollection(value: any): boolean;
    static isSet(value: any): value is Set<any>;
    static detectType(value: any): AttributeType;
    /**
     * Will resolve the type based on given data.
     *
     * @param data
     * @returns {AttributeModelTypeName}
     */
    static typeOf(data: any): AttributeValueType;
    static typeOfFromDb(attributeValue?: Attribute): AttributeValueType;
    static isBinary(data: any): boolean;
    static isBufferType(type: any): boolean;
    static isType(obj: any, type: any): boolean;
    static isBrowser(): any;
    static isNode(): boolean;
    /**
     * Returns the name of the given Type. null and undefined are special cases were we return 'Null' vs. 'Undefined'
     * @param type
     * @returns {string}
     */
    static typeName(type: any): 'Null' | 'Undefined' | string;
    static uuidv4(): string;
}
