import { Ah as EventsStore, Ay as RouterHistory, Bf as TasksContextValue, Bt as DocumentFieldActionNode$1, FC as PerspectiveContextValue, Fb as Locale, Fg as CommentsOnboardingContextValue, Ft as DocumentFieldAction$1, Fu as MetadataWrapper, HS as TrackerContextGetSnapshot, Hc as FormCallbacksValue, Hf as MentionUserContextValue, Hu as DivergenceNavigator, Lc as ReferenceInputOptions, Lg as CommentsEnabledContextValue, My as CommentsSelectedPathContextValue, Ql as PreviewCardContextValue, Qp as DocumentChangeContextInstance, R_ as CopyPasteContextType, Rn as PortableTextMemberItem, Sr as FormValueContextValue, US as TrackerContextStore, Uy as CommentIntentGetter, Vf as TasksNavigationContextValue, Wf as TasksEnabledContextValue, Wg as CommentInputContextValue, Xg as UpsellData, Yg as CommentsUpsellContextValue, ZS as ConnectorContextValue, bp as SchedulesContextValue, dp as DocumentActionDescription, dr as FormBuilderContextValue, ds as FieldCommentsProps, dy as AddonDatasetContextValue, gp as DocumentActionProps, ku as ReleasesUpsellContextValue, lb as CommentsAuthoringPathContextValue, ni as FieldPresenceData, oc as EnhancedObjectDialogContextValue, or as VirtualizerScrollInstance, p_ as NavbarContextValue, pl as ZIndexContextValue, pt as Source$1, rg as UserColorManager, ri as FormNodePresence, rs as PortableTextMarker, sy as StudioColorScheme, t as ActiveWorkspaceMatcherContextValue, u_ as UpsellDialogViewedInfo, vi as ResourceCache, vt as Workspace, xv as SearchContextValue, y_ as StudioAnnouncementsContextValue, yy as WorkspacesContextValue, zS as ChangeIndicatorTrackerContextValue, zf as TasksUpsellContextValue, zg as CommentsContextValue } from "./_chunks-dts/ActiveWorkspaceMatcherContext.js";
import { F as PaneLayoutContextValue, P as PaneContextValue, c as DocumentPaneInfoContextValue, i as PaneRouterContextValue, k as StructureToolContextValue, s as DocumentPaneContextValue, w as RouterPanes, y as PaneNode } from "./_chunks-dts/types.js";
import { g as PresentationParamsContextValue, h as PresentationNavigateContextValue, m as PresentationContextValue, v as PresentationPluginOptions } from "./_chunks-dts/types2.js";
import { _ as RouterContextValue } from "./_chunks-dts/types3.js";
import * as react from "react";
import { CSSProperties, ComponentType, MutableRefObject, PropsWithChildren, ReactNode, RefObject } from "react";
import { ArraySchemaType, ObjectSchemaType, Path, PortableTextBlock, ValidationMarker } from "@sanity/types";
import { SanityClient } from "@sanity/client";
import { i18n } from "i18next";
import { BehaviorSubject, Observable } from "rxjs";
import { PubSub } from "nano-pubsub";
import { PortableTextMemberSchemaTypes } from "@portabletext/sanity-bridge";
import { SanityDocument as SanityDocument$2 } from "sanity";
import { SemVer } from "semver";
import { Serializable } from "@sanity/presentation-comlink";
/** @internal */
declare const ActiveWorkspaceMatcherContext: react.Context<ActiveWorkspaceMatcherContextValue | null>;
/**
 * @beta
 * @hidden
 */
declare const AddonDatasetContext: react.Context<AddonDatasetContextValue | null>;
interface StudioAppResponse {
  id: string;
  title?: string;
  type: 'studio' | string;
  urlType: 'internal' | 'external' | string;
  appHost: string;
}
interface StudioApp extends StudioAppResponse {
  studioUrl: string;
}
interface CompatibleStudioAppId {
  /**
   * AppId to use for the current origin
   */
  appId: string | undefined;
  /**
   * All available studio apps
   */
  studioApps: StudioApp[];
}
interface AppIdCache {
  get: (args: {
    projectId: string;
    appIdFetcher: AppIdFetcher;
  }) => Promise<CompatibleStudioAppId | undefined>;
}
type AppIdFetcher = (projectId: string) => Promise<CompatibleStudioAppId>;
/**
 * @internal
 */
declare const AppIdCacheContext: react.Context<AppIdCache | null>;
/** @internal */
interface ArrayValidationState {
  maxReached: boolean;
  maxReachedReason: string | undefined;
}
/** @internal */
declare const ArrayValidationContext: react.Context<ArrayValidationState | null>;
/**
 * @internal
 */
interface AssetLimitUpsellContextValue {
  upsellDialogOpen: boolean;
  handleOpenDialog: (source: UpsellDialogViewedInfo['source']) => void;
  upsellData: UpsellData | null;
  telemetryLogs: {
    dialogSecondaryClicked: () => void;
    dialogPrimaryClicked: () => void;
  };
}
/**
 * @internal
 */
declare const AssetLimitUpsellContext: react.Context<AssetLimitUpsellContextValue | null>;
interface CalendarContextValue {
  date?: Date;
  endDate?: Date;
  focusedDate: Date;
  selectRange?: boolean;
  selectTime?: boolean;
  /**
   * An integer indicating the first day of the week.
   * Can be either 1 (Monday), 6 (Saturday) or 7 (Sunday).
   */
  firstWeekDay: 1 | 6 | 7;
}
/**
 * @internal
 */
declare const CalendarContext: react.Context<CalendarContextValue | undefined>;
/**
 * @internal
 * @hidden
 */
type ChangeIndicatorTrackerContextStoreType = TrackerContextStore<ChangeIndicatorTrackerContextValue> | null;
/**
 * @internal
 * @hidden
 */
type ChangeIndicatorTrackerGetSnapshotType = TrackerContextGetSnapshot<ChangeIndicatorTrackerContextValue> | null;
/** @internal */
declare const ChangeIndicatorTrackerContextStore: react.Context<ChangeIndicatorTrackerContextStoreType>;
/** @internal */
declare const ChangeIndicatorTrackerContextGetSnapshot: react.Context<ChangeIndicatorTrackerGetSnapshotType>;
/**
 * The setter for ColorSchemeValueContext, in a separate context to avoid unnecessary re-renders
 * If set to false then the UI should adjust to reflect that the Studio can't change the color scheme
 * @internal
 */
declare const ColorSchemeSetValueContext: react.Context<false | ((nextScheme: StudioColorScheme) => void) | null>;
/**
 * Used to keep track of the internal value, which can be "system" in addition to "light" and "dark"
 * @internal
 */
declare const ColorSchemeValueContext: react.Context<StudioColorScheme | null>;
/**
 * @internal
 */
declare const CommentInputContext: react.Context<CommentInputContextValue | null>;
/**
 * @beta
 * @hidden
 */
declare const CommentsAuthoringPathContext: react.Context<CommentsAuthoringPathContextValue | null>;
/**
 * @internal
 */
declare const CommentsContext: react.Context<CommentsContextValue | null>;
/**
 * @internal
 */
declare const CommentsEnabledContext: react.Context<CommentsEnabledContextValue>;
/**
 * @internal
 */
declare const CommentsIntentContext: react.Context<CommentIntentGetter | undefined>;
/**
 * @internal
 */
declare const CommentsOnboardingContext: react.Context<CommentsOnboardingContextValue | null>;
/**
 * @internal
 */
declare const CommentsSelectedPathContext: react.Context<CommentsSelectedPathContextValue | null>;
/**
 * @internal
 */
declare const CommentsUpsellContext: react.Context<CommentsUpsellContextValue | null>;
/**
 * @beta
 * @hidden
 */
declare const CopyPasteContext: react.Context<CopyPasteContextType | null>;
/**
 * Entry in the dialog stack.
 *
 * @beta
 */
interface DialogStackEntry {
  id: string;
  path?: Path;
}
/**
 * Context value for tracking the dialog stack.
 *
 * @beta
 */
interface DialogStackContextValue {
  /** Stack of dialog entries, last one is the top */
  stack: DialogStackEntry[];
  /** Push a dialog onto the stack */
  push: (id: string, path?: Path) => void;
  /** Remove a dialog from the stack */
  remove: (id: string) => void;
  /** Update the path of an existing dialog entry */
  update: (id: string, path?: Path) => void;
  /** Close dialogs. Pass `{ toParent: true }` to close only the top dialog and navigate to the parent. */
  close: (options?: {
    /**
     * When true, closes only the top dialog and navigates to its parent path.
     * When false or omitted, closes all dialogs and resets to the root path.
     */
    toParent?: boolean;
  }) => void;
  /** Navigate to a specific path, updating the form path and cleaning up stack entries that are at or deeper than the target. */
  navigateTo: (path: Path) => void;
}
/**
 * Context for tracking the stack of open dialogs.
 *
 * @beta
 */
declare const DialogStackContext: react.Context<DialogStackContextValue | null>;
/** @internal */
declare const DiffContext: react.Context<{
  path: Path;
}>;
/**
 * @internal
 */
declare const DocumentActionPropsContext: react.Context<DocumentActionProps | undefined>;
/**
 * @internal
 */
declare const DocumentActionsStateContext: react.Context<DocumentActionDescription[] | null>;
/** @internal */
declare const DocumentChangeContext: react.Context<DocumentChangeContextInstance | null>;
/**
 * @internal
 */
type DocumentDivergencesContextValue = (DivergenceNavigator & {
  enabled: true;
}) | {
  enabled: false;
};
/**
 * @internal
 */
declare const DocumentDivergencesContext: react.Context<DocumentDivergencesContextValue | null>;
/**
 * @internal
 */
interface DocumentFieldActionsContextValue {
  actions: DocumentFieldAction$1[];
}
/**
 * @internal
 */
declare const DocumentFieldActionsContext: react.Context<DocumentFieldActionsContextValue | null>;
/**
 * @internal
 */
interface DocumentIdContextValue {
  id: string;
}
/**
 * @internal
 */
declare const DocumentIdContext: react.Context<DocumentIdContextValue | null>;
/**
 * @internal
 */
interface DocumentLimitUpsellContextValue {
  upsellDialogOpen: boolean;
  handleOpenDialog: (source: UpsellDialogViewedInfo['source']) => void;
  handleClose: () => void;
  upsellData: UpsellData | null;
  telemetryLogs: {
    dialogSecondaryClicked: () => void;
    dialogPrimaryClicked: () => void;
    panelPrimaryClicked: () => void;
    panelSecondaryClicked: () => void;
  };
}
/**
 * @internal
 */
declare const DocumentLimitUpsellContext: react.Context<DocumentLimitUpsellContextValue | null>;
/** @internal */
declare const DocumentPaneContext: react.Context<DocumentPaneContextValue | null>;
/** @internal */
declare const DocumentPaneInfoContext: react.Context<DocumentPaneInfoContextValue | null>;
/**
 * @internal
 * @deprecated This context is no longer used and will be removed in a future release as we make the enhanced object dialog the default.
 */
declare const EnhancedObjectDialogContext: react.Context<EnhancedObjectDialogContextValue>;
/**
 * @internal
 */
declare const EventsContext: react.Context<EventsStore | null>;
/** @internal */
interface FieldActionsContextValue {
  actions: DocumentFieldActionNode$1[];
  __internal_comments?: FieldCommentsProps;
  __internal_slot?: ReactNode;
  focused?: boolean;
  hovered: boolean;
  onMouseEnter: () => void;
  onMouseLeave: () => void;
}
/** @internal */
declare const FieldActionsContext: react.Context<FieldActionsContextValue>;
/**
 * @internal
 */
declare const FormBuilderContext: react.Context<FormBuilderContextValue | null>;
/**
 * @internal
 */
declare const FormCallbacksContext: react.Context<FormCallbacksValue | null>;
/** @internal */
declare const FormFieldPresenceContext: react.Context<FormNodePresence[]>;
/**
 * @internal
 */
declare const FormValueContext: react.Context<FormValueContextValue | null>;
interface FreeTrialResponse {
  id: string;
  icon: string;
  style: string;
  showOnLoad: FreeTrialDialog | null;
  showOnClick: FreeTrialDialog | null;
  daysLeft: number;
  totalDays: number;
}
interface FreeTrialDialog {
  _id: string;
  _type: 'dialog';
  _createdAt: string;
  ctaButton?: {
    text: string;
    action: 'openNext' | 'closeDialog' | 'openUrl';
    url?: string;
  };
  secondaryButton?: {
    text: string;
  };
  descriptionText: PortableTextBlock[];
  dialogType: 'modal' | 'popover';
  headingText: string;
  id: string;
  image: Image$1 | null;
  tags?: Tag[];
  _rev: string;
  _updatedAt: string;
}
interface Tag {
  _type: 'tag';
  _key: string;
  tag: string;
}
interface Image$1 {
  asset: {
    url: string;
    altText: string | null;
  };
}
/**
 * @internal
 */
interface FreeTrialContextProps {
  data: FreeTrialResponse | null;
  showDialog: boolean;
  showOnLoad: boolean;
  /**
   * If the user is seeing the `showOnLoad` popover or modal, and clicks on the pricing button the `showOnClick` modal should be triggered.
   */
  toggleShowContent: (closeAndReOpen?: boolean) => void;
}
/**
 * @internal
 */
declare const FreeTrialContext: react.Context<FreeTrialContextProps | undefined>;
/**
 * Context for tracking fullscreen state of portable text editors by their path
 * @internal
 */
interface FullscreenPTEContextValue {
  /**
   * Get the fullscreen state for a specific path
   */
  getFullscreenPath: (path: Path) => string | undefined;
  /**
   * Set the fullscreen state for a specific path
   */
  setFullscreenPath: (path: Path, isFullscreen: boolean) => void;
  /**
   * Check if any portable text editor is currently in fullscreen mode
   */
  hasAnyFullscreen: () => boolean;
  /**
   * Get all fullscreen paths
   */
  allFullscreenPaths: string[];
}
/**
 * @internal
 */
declare const FullscreenPTEContext: react.Context<FullscreenPTEContextValue>;
/**
 * @internal
 * @hidden
 */
type GetFormValueContextValue = (path: Path) => unknown;
/**
 * @internal
 */
declare const GetFormValueContext: react.Context<GetFormValueContextValue | null>;
/** @internal */
interface HoveredFieldContextValue {
  store: {
    subscribe: (onStoreCallback: () => void) => () => void;
    getSnapshot: () => string[];
  };
  onMouseEnter: (path: Path) => void;
  onMouseLeave: (path: Path) => void;
}
/** @internal */
declare const HoveredFieldContext: react.Context<HoveredFieldContextValue>;
/**
 * TODO: remove this context when alternate document-specific context are
 * introduced.
 *
 * The following context is used in the structure tool to set the active
 * document if it's the last pane open in the structure tool. This is a
 * temporary context provider that was introduced when the comments and tasks
 * plugins were refactor and decoupled from the structure tool. ideally this
 * should be removed and replaced with a document-specific context that gives
 * plugin authors access to what the `usePane`, `usePaneRouter`, and
 * `useDocumentPane` provides without exposing specifics from the structure tool
 */
/**
 * @internal
 */
declare const IsLastPaneContext: react.Context<boolean>;
/**
 * User application from the API
 * @internal
 */
interface UserApplication {
  id: string;
  type: string;
  projectId?: string;
  organizationId?: string;
  title?: string;
  urlType: 'internal' | 'external';
  appHost: string;
}
/**
 * Cache for user applications fetched from the API.
 * Caches by projectId to avoid duplicate fetches.
 * @internal
 */
interface UserApplicationCache {
  /**
   * Get user applications for a project.
   * Returns cached results if available, otherwise fetches from API.
   */
  get: (client: SanityClient) => Promise<UserApplication[]>;
}
/**
 * @hidden
 * @internal
 */
type LiveUserApplicationContextValue = {
  userApplication: UserApplication | undefined;
  isLoading: boolean;
};
/**
 *
 * @hidden
 * @internal
 */
declare const LiveUserApplicationContext: react.Context<LiveUserApplicationContextValue>;
/**
 * @internal
 * @hidden
 */
interface LocaleContextValue {
  locales: Locale[];
  currentLocale: Locale;
  __internal: {
    i18next: i18n;
  };
  changeLocale: (newLocale: string) => Promise<void>;
}
/**
 * @internal
 * @hidden
 */
declare const LocaleContext: react.Context<LocaleContextValue | undefined>;
/** @internal */
type MediaLibraryIds = {
  libraryId: string;
  organizationId: string;
};
/** @internal */
declare const MediaLibraryIdsContext: react.Context<MediaLibraryIds | null>;
/**
 * @internal
 */
declare const MentionUserContext: react.Context<MentionUserContextValue | null>;
/** @internal */
declare const NavbarContext: react.Context<NavbarContextValue>;
/**
 * @hidden
 * @internal
 */
type PackageVersionInfoContextValue = {
  /**
   * Request a new update check
   */
  checkForUpdates: () => void;
  /**
   * Status of version check (i.e. are we currently checking for updates)
   */
  versionCheckStatus: {
    lastCheckedAt: Date | null;
    checking: boolean;
  };
  /**
   * Whether this Studio is configured to be auto-updating
   */
  isAutoUpdating: boolean;
  /**
   * If an importmap for the sanity module exists in the DOM, includes details
   * will be undefined if no importmap is found
   */
  importMapInfo?: {
    valid: false;
    error: Error;
  } | {
    valid: true;
    minVersion: SemVer;
    appId?: string;
  };
  /**
   * What is the version tagged as latest (periodically checked)
   */
  latestTaggedVersion?: SemVer;
  /**
   * What version is the Studio currently running
   */
  currentVersion: SemVer;
  /**
   * What is the current auto-updating version (as periodically resolved via module server and configured via manage)
   */
  autoUpdatingVersion?: SemVer;
};
/**
 *
 * @hidden
 * @internal
 */
declare const PackageVersionInfoContext: react.Context<PackageVersionInfoContextValue>;
/**
 * @internal
 */
declare const PaneContext: react.Context<PaneContextValue | null>;
/**
 * @internal
 */
declare const PaneLayoutContext: react.Context<PaneLayoutContextValue | null>;
/**
 *
 * @hidden
 * @beta
 */
declare const PaneRouterContext: react.Context<PaneRouterContextValue>;
/**
 *
 * @hidden
 * @beta
 */
declare const PerspectiveContext: react.Context<PerspectiveContextValue | null>;
/**
 * @internal
 */
declare const PortableTextMarkersContext: react.Context<PortableTextMarker[]>;
/** @internal */
type PortableTextEditorElement = HTMLDivElement | HTMLSpanElement;
/**
 * @internal
 */
declare const PortableTextMemberItemElementRefsContext: react.Context<BehaviorSubject<Record<string, PortableTextEditorElement | null | undefined>>>;
/**
 * @internal
 */
declare const PortableTextMemberItemsContext: react.Context<PortableTextMemberItem[]>;
/**
 * Context for Sanity-specific schema types for Portable Text.
 * This provides access to the full Sanity schema types instead of relying on
 * `editor.schemaTypes` from PTE, which will contain minimal PT schema types
 * when PTE removes its Sanity dependencies.
 *
 * @internal
 */
declare const PortableTextMemberSchemaTypesContext: react.Context<PortableTextMemberSchemaTypes | null>;
/**
 * @internal
 */
declare const PresenceContext: react.Context<FormNodePresence[]>;
/**
 * @internal
 * @hidden
 */
type PresenceTrackerContextStoreType = TrackerContextStore<FieldPresenceData> | null;
/**
 * @internal
 * @hidden
 */
type PresenceTrackerGetSnapshotType = TrackerContextGetSnapshot<FieldPresenceData> | null;
/** @internal */
declare const PresenceTrackerContextStore: react.Context<PresenceTrackerContextStoreType>;
/** @internal */
declare const PresenceTrackerContextGetSnapshot: react.Context<PresenceTrackerGetSnapshotType>;
/**
 * @internal
 */
declare const PresentationContext: react.Context<PresentationContextValue | null>;
/** @internal */
type PresentationDisplayedDocumentContextValue = (displayed: Partial<SanityDocument$2> | null | undefined) => void;
/**
 * @internal
 */
declare const PresentationDisplayedDocumentContext: react.Context<PresentationDisplayedDocumentContextValue | null>;
interface PresentationDocumentContextValue {
  options: PresentationPluginOptions[];
  register: (options: PresentationPluginOptions) => () => void;
}
/**
 * @internal
 */
declare const PresentationDocumentContext: react.Context<PresentationDocumentContextValue | null>;
/**
 * @internal
 */
declare const PresentationNavigateContext: react.Context<PresentationNavigateContextValue | null>;
interface PanelElement {
  id: string;
  type: 'panel';
  defaultSize: number | null;
  order: number;
  maxWidth: number | null;
  minWidth: number;
}
interface ResizerElement {
  id: string;
  order: number;
  type: 'resizer';
  el: RefObject<HTMLDivElement | null>;
}
interface PresentationPanelsContextValue {
  activeResizer: string | null;
  drag: (id: string, event: MouseEvent) => void;
  getPanelStyle: (id: string) => React.CSSProperties;
  registerElement: (id: string, panel: PanelElement | ResizerElement) => void;
  startDragging: (id: string, event: MouseEvent) => void;
  stopDragging: () => void;
  unregisterElement: (id: string) => void;
}
/**
 * @internal
 */
declare const PresentationPanelsContext: react.Context<PresentationPanelsContextValue | null>;
/**
 * @internal
 */
declare const PresentationParamsContext: react.Context<PresentationParamsContextValue | null>;
interface PresentationSharedStateContextValue {
  removeValue: (key: string) => void;
  setValue: (key: string, value: Serializable) => void;
}
/**
 * @internal
 */
declare const PresentationSharedStateContext: react.Context<PresentationSharedStateContextValue | null>;
/**
 * @internal
 */
declare const PreviewCardContext: react.Context<PreviewCardContextValue>;
/**
 * @internal
 */
declare const ReferenceInputOptionsContext: react.Context<ReferenceInputOptions>;
/**
 * @internal
 */
interface ReferenceItemRef {
  menuRef: MutableRefObject<HTMLDivElement | null>;
  menuButtonRef: MutableRefObject<HTMLButtonElement | null>;
  containerRef: MutableRefObject<HTMLDivElement | null>;
}
/**
 * This is a way to store ref of the menu as well as the container of the ReferenceItem
 * so it can be used down the tree for clickOutside handling
 * @internal
 */
declare const ReferenceItemRefContext: react.Context<ReferenceItemRef | null>;
/**
 * @internal
 */
interface ReleasesMetadataContextValue {
  state: MetadataWrapper;
  addReleaseIdsToListener: (slugs: string[]) => void;
  removeReleaseIdsFromListener: (slugs: string[]) => void;
}
/**
 * @internal
 * @hidden
 */
declare const ReleasesMetadataContext: react.Context<ReleasesMetadataContextValue | null>;
type SortDirection = 'asc' | 'desc';
interface TableSort {
  column: string;
  direction: SortDirection;
}
/**
 * @internal
 */
interface TableContextValue {
  searchTerm: string | null;
  setSearchTerm: (searchTerm: string) => void;
  sort: TableSort | null;
  setSortColumn: (column: string) => void;
}
/**
 * @internal
 */
declare const TableContext: react.Context<TableContextValue | null>;
/**
 * @beta
 * @hidden
 */
declare const ReleasesUpsellContext: react.Context<ReleasesUpsellContextValue | null>;
declare const LOADING_PANE: unique symbol;
interface PaneData {
  active: boolean;
  childItemId: string | null;
  groupIndex: number;
  index: number;
  itemId: string;
  key: string;
  pane: PaneNode | typeof LOADING_PANE;
  params: Record<string, string | undefined> & {
    perspective?: string;
  };
  path: string;
  payload: unknown;
  selected: boolean;
  siblingIndex: number;
  maximized: boolean;
}
interface Panes {
  paneDataItems: PaneData[];
  routerPanes: RouterPanes;
  resolvedPanes: (PaneNode | typeof LOADING_PANE)[];
  maximizedPane: PaneData | null;
  setMaximizedPane: (pane: PaneData | null) => void;
}
/**
 * @internal
 */
declare const ResolvedPanesContext: react.Context<Panes | null>;
/**
 * @internal
 */
declare function ResolvedPanesProvider({
  children,
  value
}: {
  children: ReactNode;
  value: Panes;
}): react.JSX.Element;
/**
 * @internal
 */
declare const ResourceCacheContext: react.Context<ResourceCache | null>;
/** @internal */
declare const ReviewChangesContext: react.Context<ConnectorContextValue>;
/**
 * @internal
 */
declare const RouterContext: react.Context<RouterContextValue | null>;
/**
 * Internal use only. Userland should leverage the public `useRouter` APIs.
 * @internal
 */
declare const RouterHistoryContext: react.Context<RouterHistory | null>;
interface HasUsedScheduledPublishing {
  used: boolean;
  loading: boolean;
}
/**
 * @internal
 */
type ScheduledPublishingEnabledContextValue = {
  enabled: false;
  mode: null;
  hasUsedScheduledPublishing: HasUsedScheduledPublishing;
} | {
  enabled: true;
  mode: 'default' | 'upsell';
  hasUsedScheduledPublishing: HasUsedScheduledPublishing;
};
/**
 * @internal
 */
declare const ScheduledPublishingEnabledContext: react.Context<ScheduledPublishingEnabledContextValue>;
/**
 * @internal
 */
interface SchedulePublishUpsellContextValue {
  upsellDialogOpen: boolean;
  handleOpenDialog: (source: UpsellDialogViewedInfo['source']) => void;
  handleClose: () => void;
  upsellData: UpsellData | null;
  telemetryLogs: {
    dialogSecondaryClicked: () => void;
    dialogPrimaryClicked: () => void;
    panelViewed: (source: UpsellDialogViewedInfo['source']) => void;
    panelDismissed: () => void;
    panelPrimaryClicked: () => void;
    panelSecondaryClicked: () => void;
  };
}
/**
 * @internal
 */
declare const SchedulePublishUpsellContext: react.Context<SchedulePublishUpsellContextValue>;
/**
 * @deprecated we will be dropping support for scheduled publishing on a future major version
 * @internal
 */
declare const SchedulesContext: react.Context<SchedulesContextValue | undefined>;
/**
 * @internal
 */
declare const ScrollContext: react.Context<PubSub<Event> | null>;
/**
 * @internal
 */
declare const SearchContext: react.Context<SearchContextValue | undefined>;
/**
 * Entry representing a selected annotation for the combined popover
 * @internal
 */
interface AnnotationEntry {
  key: string;
  title: string;
  schemaType: ObjectSchemaType;
  onOpen: () => void;
  onRemove: () => void;
  referenceElement: HTMLElement | null;
}
/**
 * Context value for tracking selected annotations
 * @internal
 */
interface SelectedAnnotationsContextValue {
  register: (entry: AnnotationEntry) => void;
  unregister: (key: string) => void;
  annotations: AnnotationEntry[];
}
/**
 * Context for managing selected annotations in the Portable Text editor.
 * Used by CombinedAnnotationPopover to show all active annotations in a single popover.
 * @internal
 */
declare const SelectedAnnotationsContext: react.Context<SelectedAnnotationsContextValue | null>;
/**
 * @internal
 */
interface SingleDocReleaseContextValue {
  /**
   * Sets the scheduled draft perspective into the local router params.
   */
  onSetScheduledDraftPerspective: (releaseId: string) => void;
}
/**
 * @internal
 */
declare const SingleDocReleaseContext: react.Context<SingleDocReleaseContextValue | null>;
/**
 * @internal
 */
type SingleDocReleaseEnabledContextValue = {
  enabled: false;
  mode: null;
} | {
  enabled: true;
  mode: 'default' | 'upsell';
};
/**
 * @internal
 */
declare const SingleDocReleaseEnabledContext: react.Context<SingleDocReleaseEnabledContextValue>;
/**
 * @internal
 */
interface SingleDocReleaseUpsellContextValue {
  upsellDialogOpen: boolean;
  handleOpenDialog: (source: UpsellDialogViewedInfo['source']) => void;
  handleClose: () => void;
  upsellData: UpsellData | null;
  telemetryLogs: {
    dialogSecondaryClicked: () => void;
    dialogPrimaryClicked: () => void;
    panelViewed: (source: UpsellDialogViewedInfo['source']) => void;
    panelDismissed: () => void;
    panelPrimaryClicked: () => void;
    panelSecondaryClicked: () => void;
  };
}
/**
 * @internal
 */
declare const SingleDocReleaseUpsellContext: react.Context<SingleDocReleaseUpsellContextValue>;
/**
 * @internal
 */
declare const SortableItemIdContext: react.Context<string | null>;
/**
 * @internal
 */
declare const SourceContext: react.Context<Source$1 | null>;
/**
 * @internal
 */
declare const StructureToolContext: react.Context<StructureToolContextValue | null>;
/**
 * @internal
 */
declare const StudioAnnouncementContext: react.Context<StudioAnnouncementsContextValue | undefined>;
/**
 * @internal
 */
declare const TasksContext: react.Context<TasksContextValue | null>;
/**
 * @internal
 */
declare const TasksEnabledContext: react.Context<TasksEnabledContextValue>;
/**
 * @internal
 */
declare const TasksNavigationContext: react.Context<TasksNavigationContextValue | null>;
/**
 * @beta
 * @hidden
 */
declare const TasksUpsellContext: react.Context<TasksUpsellContextValue | null>;
/**
 * @internal
 */
declare const UserApplicationCacheContext: react.Context<UserApplicationCache | null>;
/**
 * @internal
 */
declare const UserColorManagerContext: react.Context<UserColorManager | null>;
/**
 * @internal
 */
declare const ValidationContext: react.Context<ValidationMarker[]>;
/**
 * This is used to store the reference to the scroll element for virtualizer
 * @internal
 */
declare const VirtualizerScrollInstanceContext: react.Context<VirtualizerScrollInstance | null>;
/**
 * @internal
 */
declare const WorkspaceContext: react.Context<Workspace | null>;
/** @internal */
declare const WorkspacesContext: react.Context<WorkspacesContextValue | null>;
/**
 * @internal
 */
declare const zIndexContextDefaults: ZIndexContextValue;
/**
 * TODO: Rename to `ZOffsetsContext`
 *
 * @internal
 */
declare const ZIndexContext: react.Context<ZIndexContextValue>;
export { ActiveWorkspaceMatcherContext, AddonDatasetContext, AnnotationEntry, AppIdCacheContext, ArrayValidationContext, AssetLimitUpsellContext, AssetLimitUpsellContextValue, CalendarContext, ChangeIndicatorTrackerContextGetSnapshot, ChangeIndicatorTrackerContextStore, ColorSchemeSetValueContext, ColorSchemeValueContext, CommentInputContext, CommentsAuthoringPathContext, CommentsContext, CommentsEnabledContext, CommentsIntentContext, CommentsOnboardingContext, CommentsSelectedPathContext, CommentsUpsellContext, CopyPasteContext, DialogStackContext, DialogStackContextValue, DialogStackEntry, DiffContext, DocumentActionPropsContext, DocumentActionsStateContext, DocumentChangeContext, DocumentDivergencesContext, DocumentDivergencesContextValue, DocumentFieldActionsContext, DocumentFieldActionsContextValue, DocumentIdContext, DocumentIdContextValue, DocumentLimitUpsellContext, DocumentLimitUpsellContextValue, DocumentPaneContext, DocumentPaneInfoContext, EnhancedObjectDialogContext, EventsContext, FieldActionsContext, FieldActionsContextValue, FormBuilderContext, FormCallbacksContext, FormFieldPresenceContext, FormValueContext, FreeTrialContext, FullscreenPTEContext, GetFormValueContext, GetFormValueContextValue, HoveredFieldContext, HoveredFieldContextValue, IsLastPaneContext, LiveUserApplicationContext, LiveUserApplicationContextValue, LocaleContext, LocaleContextValue, MediaLibraryIdsContext, MentionUserContext, NavbarContext, PackageVersionInfoContext, PackageVersionInfoContextValue, PaneContext, PaneLayoutContext, PaneRouterContext, PerspectiveContext, PortableTextEditorElement, PortableTextMarkersContext, PortableTextMemberItemElementRefsContext, PortableTextMemberItemsContext, PortableTextMemberSchemaTypesContext, PresenceContext, PresenceTrackerContextGetSnapshot, PresenceTrackerContextStore, PresentationContext, PresentationDisplayedDocumentContext, PresentationDocumentContext, PresentationNavigateContext, PresentationPanelsContext, PresentationParamsContext, PresentationSharedStateContext, PreviewCardContext, ReferenceInputOptionsContext, ReferenceItemRef, ReferenceItemRefContext, ReleasesMetadataContext, ReleasesUpsellContext, ResolvedPanesContext, ResolvedPanesProvider, ResourceCacheContext, ReviewChangesContext, RouterContext, RouterHistoryContext, SchedulePublishUpsellContext, SchedulePublishUpsellContextValue, ScheduledPublishingEnabledContext, ScheduledPublishingEnabledContextValue, SchedulesContext, ScrollContext, SearchContext, SelectedAnnotationsContext, SelectedAnnotationsContextValue, SingleDocReleaseContext, SingleDocReleaseContextValue, SingleDocReleaseEnabledContext, SingleDocReleaseEnabledContextValue, SingleDocReleaseUpsellContext, SingleDocReleaseUpsellContextValue, SortableItemIdContext, SourceContext, StructureToolContext, StudioAnnouncementContext, TableContext, TasksContext, TasksEnabledContext, TasksNavigationContext, TasksUpsellContext, UserApplicationCacheContext, UserColorManagerContext, ValidationContext, VirtualizerScrollInstanceContext, WorkspaceContext, WorkspacesContext, ZIndexContext, zIndexContextDefaults };