export type ClipSurface = 'form' | 'block';
export type ClipPayload = Readonly<{
    surface: ClipSurface;
    items: ReadonlyArray<unknown>;
    placements?: Readonly<Record<string, unknown>>;
}>;
/**
 * Deep-clone the fragment with every id (and every reference to a copied id)
 * replaced by a fresh UUID. Deterministic within one call: equal old ids map
 * to equal new ids, so cross-references between copied items stay intact.
 */
export declare function reidItems<T>(items: ReadonlyArray<T>): T[];
/**
 * Reid items and their placements through one shared map, so the placement keys
 * (which are item ids) and the items' own `id`s land on the same fresh UUIDs.
 */
export declare function reidFragment<T>(items: ReadonlyArray<T>, placements?: Readonly<Record<string, unknown>>): {
    items: T[];
    placements?: Record<string, unknown>;
};
export declare function serializeClip(surface: ClipSurface, items: ReadonlyArray<unknown>, placements?: Readonly<Record<string, unknown>>): string;
export declare function parseClip(text: string): ClipPayload | null;
/** Write a fragment to the system clipboard. Resolves `false` on any failure. */
export declare function writeClip(surface: ClipSurface, items: ReadonlyArray<unknown>, placements?: Readonly<Record<string, unknown>>): Promise<boolean>;
/** Read a fragment from the system clipboard, or `null` if absent/unreadable. */
export declare function readClip(): Promise<ClipPayload | null>;
