import type { ArtifactCatalogItem } from "@opengeni/sdk"; import { type ReactNode } from "react"; import { type ArtifactCatalogFilters } from "../../lib/artifact-catalog.js"; import type { ArtifactReturnSearch } from "../../lib/routes.js"; export type ArtifactPinAction = (item: ArtifactCatalogItem, pinned: boolean) => Promise; /** Mount retained-image loaders only near the viewport, not merely their img elements. */ export declare function ArtifactThumbnail({ children, placeholder, }: { children: ReactNode; placeholder?: ReactNode | undefined; }): import("react").JSX.Element; export declare function ArtifactRow({ workspaceId, item, sessionId, onSelect, onPin, loading, browseSearch, }: { workspaceId: string; item: ArtifactCatalogItem; sessionId?: string | undefined; onSelect?: ((item: ArtifactCatalogItem) => void) | undefined; onPin?: ArtifactPinAction | undefined; loading?: boolean | undefined; browseSearch?: ArtifactReturnSearch | undefined; }): import("react").JSX.Element; export declare function siteStillDocument(html: string): string; export declare function ArtifactCard({ workspaceId, item, sessionId, onSelect, onPin, loading, browseSearch, }: { workspaceId: string; item: ArtifactCatalogItem; sessionId?: string | undefined; onSelect?: ((item: ArtifactCatalogItem) => void) | undefined; onPin?: ArtifactPinAction | undefined; loading?: boolean | undefined; browseSearch?: ArtifactReturnSearch | undefined; }): import("react").JSX.Element; export declare function ArtifactLibrary({ workspaceId, sessionId, items, filters, onFiltersChange, loading, error, onRetry, nextCursor, onLoadMore, onSelect, onPin, compact, emptyAction, onEmptyChange, artifactKindsHidden, browseSearch, }: { workspaceId: string; sessionId?: string | undefined; items: readonly ArtifactCatalogItem[]; filters: ArtifactCatalogFilters; onFiltersChange: (filters: ArtifactCatalogFilters) => void; loading: boolean; error?: Error | null | undefined; onRetry: () => void; nextCursor?: string | null | undefined; onLoadMore?: (() => void) | undefined; onSelect?: ((item: ArtifactCatalogItem) => void) | undefined; /** Omitted for viewers without permission to change workspace pins. */ onPin?: ArtifactPinAction | undefined; /** * The session's artifact panel: no page tabs, so the type filter joins the * Filter menu. */ compact?: boolean | undefined; /** The one action of the first-run empty state ("New artifact"). */ emptyAction?: ReactNode | undefined; /** Nothing at all yet: the page hides its header action, the empty state has it. */ onEmptyChange?: ((empty: boolean) => void) | undefined; /** * The viewer can't read Sites and editable artifacts here (no * `artifacts:read`), so the catalog omits them: say so instead of "none yet". */ artifactKindsHidden?: boolean | undefined; /** Workspace library query carried into the full-page viewer, not embedded panels. */ browseSearch?: ArtifactReturnSearch | undefined; }): import("react").JSX.Element;