///
import type { IBinaryData } from '../../interfaces';
export declare type None = undefined | null;
export declare type Primitive = string | boolean | number | unknown[] | None | IBinaryData | Buffer;
export declare type NonPrimitive = {
[key: string]: Primitive | NonPrimitive;
};
export declare type Variables = Primitive | NonPrimitive;
export declare function isClassInstance(input: unknown): boolean;
export declare function isNone(input: unknown): input is None;
export declare function isPrimitive(input: unknown): input is Primitive;
export declare function isNonPrimitive(input: unknown): input is NonPrimitive;
export declare function isVariables(input: unknown): input is Variables;
export declare function isEmptyRecord(input: Record): input is Record;
export declare function assertIsVariables(input: unknown): asserts input is Variables;
export declare function castToVariables(input: unknown): Variables;
export declare function castToNonPrimitive(input: unknown): NonPrimitive;
/**
* Recursively merges variables from `left` and then from `right` into a new object.
*/
export declare function mergeVariables(left: NonPrimitive, right: NonPrimitive): NonPrimitive;
/**
* Turns a variable (both primitive and non-primitive) into a string.
*/
export declare function variableToString(variable: Variables): string;
/**
* Stringifies a Record of variables. `None` values are removed.
*/
export declare function variablesToStrings(variables: NonPrimitive): Record;