import { Annotation } from "golem-base-sdk";
/**
 * An interface representing a collection of annotations, separated by type.
 */
export interface Annotations {
    stringAnnotations: Annotation<string>[];
    numericAnnotations: Annotation<number>[];
}
/**
 * Transforms a plain JavaScript object (POJO) into an Annotations object.
 * It separates properties into numeric types and converts all other types
 * into string annotations.
 * @param myobj The plain JavaScript object to transform.
 * @returns An Annotations object.
 */
export declare const transformPOJOToAnnotations: (myobj: Omit<any, "entityKey">) => Annotations;
/**
 * Transforms an Annotations object back into a single plain JavaScript object.
 * @param annotations An object containing arrays of string and numeric annotations.
 * @param convertBools A flag to determine if string 'true'/'false' should be converted to booleans.
 * @returns A plain JavaScript object.
 */
export declare const transformAnnotationsToPOJO: (annotations: Annotations, convertBools?: boolean) => {
    [key: string]: string | number | boolean;
};
/**
 * Transforms a POJO with array values into an Annotations object.
 * Each array is converted into a comma-separated string, with optional sorting.
 * @param listObj The object with array values.
 * @param sort A flag to determine if the arrays should be sorted before joining.
 * @returns An Annotations object.
 */
export declare const transformListPOJOToAnnotations: (listObj: {
    [key: string]: any[];
}, sort?: boolean) => Annotations;
/**
 * Transforms an Annotations object with comma-separated strings back into a POJO with arrays.
 * It dynamically detects if the array items are numeric or boolean.
 * @param annotations The Annotations object.
 * @param convertBools A flag to determine if string 'true'/'false' should be converted to booleans.
 * @param sort A flag to determine if the resulting arrays should be sorted.
 * @returns A POJO with array values.
 */
export declare const transformAnnotationsToListPOJO: (annotations: Annotations, convertBools?: boolean, sort?: boolean) => {
    [key: string]: (string | number | boolean)[];
};
/**
 * Prepares a JavaScript object for storage by separating it into a main data payload
 * consisting of the stringified form of the JavaScript object
 * and a set of searchable index annotations.
 * @param sourceObject The object to transform.
 * @param indexes An optional array of top-level keys from the sourceObject to create as separate annotations for indexing.
 * @returns An object containing the stringified data and the generated annotations.
 */
export declare const transformJSONToGolemNoSQL: (sourceObject: {
    [key: string]: any;
}, indexes?: string[]) => {
    dataAsString: string;
    annotations: Annotations;
};
/**
 * Reconstructs a full JavaScript object from its stringified data representation.
 * @param dataAsString The stringified JSON data payload.
 * @returns The reconstructed JavaScript object.
 */
export declare const transformGolemNoSQLToJSON: (dataAsString: string) => {
    [key: string]: any;
};
