import { TypedPrimitiveValue } from "./Values.js";
/**
 * A part of a `ConcatenatedValue`, describing one piece of the value. Possible types:
 * - `ConcatenatedValue` describes a nested concatenated value.
 * - `TypedPrimitiveValue` describes a value with its type. Generally the value is formatted
 *   according to its type information before concatenating with other parts.
 * - `string` is just concatenated to other parts as-is.
 *
 * @see `ConcatenatedValue`
 * @public
 */
export type ConcatenatedValuePart = ConcatenatedValue | TypedPrimitiveValue | string;
/** @public */
export declare namespace ConcatenatedValuePart {
    /** @public */
    function isString(part: ConcatenatedValuePart): part is string;
    /** @public */
    function isPrimitive(part: ConcatenatedValuePart): part is TypedPrimitiveValue;
    /** @public */
    function isConcatenatedValue(part: ConcatenatedValuePart): part is ConcatenatedValue;
}
/**
 * A data structure that contains `ConcatenatedValuePart` objects describing
 * pieces that may be formatted and concatenated together.
 *
 * @public
 */
export type ConcatenatedValue = ConcatenatedValuePart[];
/** @public */
export declare namespace ConcatenatedValue {
    /**
     * Serialize given `ConcatenatedValue` to string using a formatter function. The parts are
     * each formatted individually and then joined together.
     *
     * @public
     */
    function serialize(props: {
        /** The parts to join. */
        parts: ConcatenatedValue;
        /** Parts formatter to convert each part to string */
        partFormatter: (part: Exclude<ConcatenatedValuePart, ConcatenatedValue>) => Promise<string>;
        /** Optional separator for joining the parts. Defaults to an empty string. */
        separator?: string;
    }): Promise<string>;
}
//# sourceMappingURL=ConcatenatedValue.d.ts.map