import type FormatAdapter from "./format_adapter";
type PlaceholderMap = {
    /** Native MessageFormat tokens, indexed by their argument number. */
    tokens: string[];
};
/**
 * One logical line of the source file. A `raw` record is a comment or
 * blank line preserved verbatim; an `entry` record is a `key=value`
 * pair. `rawBlock` holds the entry's original text (possibly several
 * physical lines joined by line continuations) so an unchanged value
 * round-trips byte-for-byte; `rawKey`/`separator` are the line-one
 * prefix used to re-emit only the value when a translation differs.
 */
type PropertyRecord = {
    kind: "raw";
    text: string;
} | {
    kind: "entry";
    key: string;
    rawKey: string;
    separator: string;
    rawBlock: string;
    /** Placeholder-stripped original value; "unchanged" sentinel. */
    normalizedValue: string;
    placeholders: PlaceholderMap;
};
/**
 * Everything needed to rebuild the .properties file after the flat map
 * round-trips through the pipeline: the ordered records (comments,
 * blanks, and entries with their original bytes) plus whether the file
 * ended in a newline.
 */
type PropertiesSidecar = {
    kind: "properties";
    records: PropertyRecord[];
    trailingNewline: boolean;
};
declare const PropertiesAdapter: FormatAdapter<PropertiesSidecar>;
export default PropertiesAdapter;
