/** Coupon placeholder attributes → chip props. */ export interface CouponAttrs { code?: string; path?: string; copyable: boolean; } /** * What the copy button says, before and after it's pressed. Threaded down rather * than read from a dictionary here: this file walks a fragment and knows nothing * about the form it came from. Unset falls back to English, which is what a host * rendering a fragment on its own gets. */ export interface CopyLabels { copy: string; copied: string; } /** * A heading's or paragraph's authored copy. It is a plain string in most forms * and an inline HTML fragment once the author has formatted a word, so it goes * through the parser either way — a bare string simply comes back as one text * node. Same whitelist reasoning as {@link RichContent}: nothing is injected * raw, so a stray tag can only ever lose its markup, never run. */ export declare function InlineHtml({ html }: { html: string; }): import("react").JSX.Element; /** * An author-pasted HTML block, rendered through the whitelist above. Used by * the `html` content item, in the live popup and in the builder canvas alike — * what an author sees while editing is the same sanitized markup a visitor * gets, so a tag that won't survive is visibly gone at authoring time. */ export declare function FreeHtml({ html }: { html: string; }): import("react").JSX.Element; /** * Render an author-composed HTML fragment (from the rich success editor) as * whitelisted React, hydrating inline coupon placeholders into live chips. */ export declare function RichContent({ html, responseJson, copyLabels, }: { html: string; responseJson?: unknown; /** The coupon copy button's wording, in the form's language. */ copyLabels?: CopyLabels; }): import("react").JSX.Element;