import { BosEnv } from "../merge.cjs";
//#region src/ui/slot.d.ts
/**
 * The host's entry-URL SlotResolver: one pure derivation from a stamped
 * config slot to the URLs each surface loads. `EntrySlot` is structural —
 * the version-manifest derivation (atomic-deploys 04) stamps exactly these
 * fields onto `RuntimeConfig` slots, so they satisfy it as-is. Each surface
 * of `entryUrls` resolves (and throws) lazily — a caller reading only `web`
 * never trips the ssr surface's resolution, and vice versa.
 */
interface EntrySlot {
  /** slot identity, verbatim in resolution errors */
  name: string;
  url?: string;
  /** browser-facing base (ADR 0011) — the base rule is publicUrl ?? url, inside this module */
  publicUrl?: string;
  /** pin-derived hashed browser entry (absent in development) */
  entryUrl?: string;
  ssrUrl?: string;
  /** pin-derived hashed SSR entry */
  ssrEntryUrl?: string;
  integrity?: string;
  ssrIntegrity?: string;
  /** dev-only freshness token (localUiRemoteEntry's container mtime) */
  containerVersion?: string;
  /** pin-derived hashed browser manifest — absent for local slots, which no
   * pin derivation ever stamps (atomic-deploys 08) and the resolver drops
   * even if one were stamped */
  browserManifestUrl?: string;
  localPath?: string;
}
interface EntryUrls {
  /** browser script src / registration entry — bustered fixed name in dev, hashed in prod */
  readonly web: string;
  /** server container entry; undefined when the slot has no SSR coordinates */
  readonly ssr?: string;
  /** pin-derived hashed mf-manifest; undefined ⟺ local slot (atomic-deploys 08, STRUCTURAL) */
  readonly browserManifest?: string;
}
declare function entryUrls(slot: EntrySlot, env: BosEnv): EntryUrls;
//#endregion
export { EntrySlot, EntryUrls, entryUrls };
//# sourceMappingURL=slot.d.cts.map