import 'server-only'; import { type IOptiGraphClient, type ContentLink } from '@remkoj/optimizely-graph-client'; import { type GenericContext, type RenderMode, type TransferrableContext } from './types.js'; import { type ComponentFactory, type ComponentTypeDictionary } from '../factory/index.js'; export * from './types.js'; export type ServerContextArgs = { factory?: ComponentFactory | ComponentTypeDictionary; client?: IOptiGraphClient; locale?: string; mode?: RenderMode; editableContent?: ContentLink; }; export declare class ServerContext implements GenericContext { private _mode; private _locale; private _client; private _factory; private _editable; private _editableIsExperience; get client(): IOptiGraphClient | undefined; get factory(): ComponentFactory; get locale(): string | undefined; get inEditMode(): boolean; get inPreviewMode(): boolean; get isDevelopment(): boolean; get isDebug(): boolean; get isDebugOrDevelopment(): boolean; get editableContent(): GenericContext['editableContent']; get editableContentIsExperience(): boolean; set editableContentIsExperience(newValue: boolean); constructor({ factory, client, locale, mode, editableContent, }: ServerContextArgs); setMode(mode: 'edit' | 'preview' | 'public'): ServerContext; setLocale(locale: string): ServerContext; setOptimizelyGraphClient(client: IOptiGraphClient | ((currentClient: IOptiGraphClient | undefined) => IOptiGraphClient | undefined)): void; setComponentFactory(factory: ComponentFactory | ((currentClient: ComponentFactory | undefined) => ComponentFactory)): void; setEditableContentId(link: GenericContext['editableContent']): void; setEditableContentIsExperience(isExperience: boolean): void; toJSON(key?: string): TransferrableContext; } /** * Obtain an instance of the servercontext, this either uses `React.cache`, * when available in the current context. If `React.cache` is not available, the * fall-back is to create a new instance every time this method is called. * * It the cache fallback will notify in development or debug mode when it is in * use. * * @deprecated Use the context handed down through the CmsContentArea and CmsContent * components */ export declare const getServerContext: () => ServerContext; /** * Update the shared server context from the provided context. This is compatibility * method to ensure that the value returned by `getServerContext` can be retrieved and * updated. * * @deprecated Use the context handed down through the CmsContentArea and CmsContent * components * @param currentCtx The current context to apply to the server context * @returns The updated shared server context */ export declare function updateSharedServerContext(currentCtx: GenericContext): ServerContext;