import type { OpenGeniBrowserClient } from "@opengeni/sdk/browser"; import type { SitePublication, WorkspaceArtifact } from "@opengeni/sdk"; import { type ReactNode } from "react"; import { type SitePublicationLoad, type SitesClientConfig } from "../../lib/site-publishing.js"; export type SitePublishingClient = Pick; /** * The Site's publication as its page needs it. Only people who manage the * Site ask; everyone else sees no publishing UI. A deployment without a * Sites domain answers 503, which hides the entry point. */ export declare function useSitePublication({ client, workspaceId, siteId, enabled, }: { client: Pick; workspaceId: string; siteId: string; enabled: boolean; }): { load: SitePublicationLoad; reload: () => Promise; setPublication: (publication: SitePublication) => void; }; /** * The header's Publish button, while the Site isn't on the web yet. Hidden * where the deployment can't publish, and once it is published or taken * down: its address and settings are then in the Site's Settings tab. */ export declare function SitePublishButton({ load, onOpen, }: { load: SitePublicationLoad; onOpen: () => void; }): import("react").JSX.Element | null; /** The live address in the Site header's meta line, or the takedown badge. */ export declare function sitePublicationHeader(load: SitePublicationLoad): { meta: ReactNode; chip: ReactNode; }; export type SitePublishPageProps = { client: SitePublishingClient; workspaceId: string; workspaceName: string; site: Pick; load: SitePublicationLoad; onPublication: (publication: SitePublication) => void; onReload: () => void; onBack: () => void; /** The viewer owns the Site or administers the workspace, and may publish. */ canManage: boolean; /** The viewer administers the workspace. Only admins change limits and restore an admin's takedown. */ isAdmin: boolean; /** Offered while the Site is Only me and the viewer owns it. */ onShareWithWorkspace?: (() => void) | undefined; /** * The Site is in a Personal workspace, where Only me and the workspace are * the same one person: publishing an Only me Site shares it as it publishes. */ personalWorkspace?: boolean | undefined; sites: SitesClientConfig; /** Fixed suffix for the suggested label, for previews and tests. */ labelSuffix?: string | undefined; /** * `page` is Publish to web on a page of its own; `panel` is the same form * inline, in the Site's Settings, with no back link. */ layout?: "page" | "panel" | undefined; }; /** * Publish a Site to the web: its address, who can open it, its embedded * agent and limits, search engines, and reports and takedown. A page of its * own (`?view=publish`) with the Site page as its back link. */ export declare function SitePublishPage(props: SitePublishPageProps): import("react").JSX.Element;