/** * Shared utilities for converting external service URLs to embeddable formats. * Used by lib's embed components and the hub's admin document editor. */ export declare function toGoogleSheetsEmbedUrl(url: string): string; export declare function toGoogleSheetsOriginalUrl(url: string): string; /** * Convert a Figma URL to an embeddable URL. * Slides/deck URLs map to `deck` (present) by default; `slidesView: 'browse'` switches to `slides` (browse). */ export declare function toFigmaEmbedUrl(url: string, opts?: { slidesView?: 'present' | 'browse'; }): string; export declare function isFigmaSlidesUrl(url: string): boolean; export declare function toFigmaOriginalUrl(url: string): string; /** * The self-hosted MIRROR url for a claude artifact url — the whole * mirror mechanism is UNDER THE HOOD: the viewer detects a claude url, * DERIVES the mirror location from the artifact's own id under the * host's configured storage-view proxy base, and frames the downloaded * copy from there. No per-link data, no props, no shortcode changes — * 100% transparent to every consumer. * * `storageViewBaseUrl` comes from `EndpointsRuntime` — the SAME * host-overridable proxy-path mechanism every other lib→API call uses * (a reverse-proxied embedder remaps it; a host without the proxy omits * it and gets `null` here, i.e. no mirror leg at all). * * `null` when the base is absent or the url carries no artifact id. The * derived url is the configured base + a validated uuid — safe as a * frame source without further checks. KEEP THE OBJECT NAMING IN SYNC * with the hub's `lib/data/design-brief-mirror.cjs` (bucket + * `.html`) — that module owns the ingest/audit half. */ export declare function toClaudeMirrorPath(url: string | null | undefined, storageViewBaseUrl: string | null | undefined): string | null; /** * The EMBED url for a published Claude artifact, or `null` when the link is not * one we can frame — the Claude counterpart of `toFigmaEmbedUrl`. * * claude.ai serves `frame-ancestors 'self'` on the artifact page itself, but a * PUBLISHED artifact also has an `/embed` route whose `frame-ancestors` carries * the domains its author allow-listed under "Get embed code → Allowed domains". * That is Anthropic's supported way to put an artifact on another site, so that * is what the iframe points at. * * Returns `null` for everything else, including a Claude CODE url * (`claude.ai/code/artifact/…`), whose Share dialog exposes no Embed settings * and whose `/embed` path answers `frame-ancestors 'self'` (verified against * real artifacts, 2026-08). A trailing `/embed` is accepted because that is the * url "Get embed code" hands the author. */ export declare function toClaudeEmbedUrl(url: string | null | undefined): string | null; //# sourceMappingURL=embed-url-converters.d.ts.map