import { CMSType, DataType, Entity, EntityReference, EntityStatus, EntityValues, PropertiesOrBuilders, Property, PropertyBuilder, PropertyOrBuilder, ResolvedProperties, ResolvedProperty } from "../types";
export declare function isReadOnly(property: Property<any> | ResolvedProperty<any>): boolean;
export declare function isHidden(property: Property | ResolvedProperty): boolean;
export declare function isPropertyBuilder<T extends CMSType = CMSType, M extends Record<string, any> = any>(propertyOrBuilder?: PropertyOrBuilder<T, M> | Property | ResolvedProperty): propertyOrBuilder is PropertyBuilder<T, M>;
export declare function getDefaultValuesFor<M extends Record<string, any>>(properties: PropertiesOrBuilders<M> | ResolvedProperties<M>): Partial<EntityValues<M>>;
export declare function getDefaultValueFor(property?: PropertyOrBuilder): {} | null | undefined;
export declare function getDefaultValueForDataType(dataType: DataType): {} | null;
/**
 * Update the automatic values in an entity before save
 * @group Datasource
 */
export declare function updateDateAutoValues<M extends Record<string, any>>({ inputValues, properties, status, timestampNowValue }: {
    inputValues: Partial<EntityValues<M>>;
    properties: ResolvedProperties<M>;
    status: EntityStatus;
    timestampNowValue: any;
}): EntityValues<M>;
/**
 * Add missing required fields, expected in the collection, to the values of an entity
 * @param values
 * @param properties
 * @group Datasource
 */
export declare function sanitizeData<M extends Record<string, any>>(values: EntityValues<M>, properties: ResolvedProperties<M>): any;
export declare function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference;
export declare function traverseValuesProperties<M extends Record<string, any>>(inputValues: Partial<EntityValues<M>>, properties: ResolvedProperties<M>, operation: (value: any, property: Property) => any): EntityValues<M> | undefined;
export declare function traverseValueProperty(inputValue: any, property: Property, operation: (value: any, property: Property) => any): any;
