import type { ChangeObject } from '../types.js';
/**
 * converts a list of change objects to a serialized XML format
 */
export declare function convertChangesToXML(changes: ChangeObject<string>[]): string;
//# sourceMappingURL=xml.d.ts.map