import type { ScaffoldPluginHeaderCompatibility } from './scaffold-compatibility.js'; export declare const SCAFFOLD_TEMPLATE_VARIABLE_GROUPS: unique symbol; export type ScaffoldTemplateFamily = 'basic' | 'interactivity' | 'persistence' | 'compound' | 'query-loop' | 'external'; export interface ScaffoldSharedTemplateVariableGroup { author: string; blockMetadataVersion: string; category: string; compatibility: ScaffoldPluginHeaderCompatibility; cssClassName: string; description: string; descriptionJson: string; frontendCssClassName: string; icon: string; keyword: string; namespace: string; pascalCase: string; phpPrefix: string; phpPrefixUpper: string; slug: string; slugCamelCase: string; slugKebabCase: string; slugSnakeCase: string; textDomain: string; title: string; titleCase: string; titleJson: string; versions: { apiClient: string; blockRuntime: string; blockTypes: string; projectTools: string; rest: string; }; } export interface ScaffoldAlternateRenderTargetVariableGroup { csv: string; enabled: boolean; hasEmail: boolean; hasMjml: boolean; hasPlainText: boolean; json: string; targets: readonly string[]; } export interface DisabledScaffoldCompoundVariableGroup { enabled: false; persistenceEnabled: false; } export interface EnabledScaffoldCompoundVariableGroup { child: { category: string; cssClassName: string; icon: string; title: string; titleJson: string; }; enabled: true; innerBlocks: { description: string; directInsert: boolean; label: string; orientation: '' | 'horizontal' | 'vertical'; orientationExpression: string; preset: string; templateLockExpression: string; }; persistenceEnabled: boolean; } export type ScaffoldCompoundVariableGroup = DisabledScaffoldCompoundVariableGroup | EnabledScaffoldCompoundVariableGroup; export interface DisabledScaffoldPersistenceVariableGroup { enabled: false; scope: 'none'; } export interface EnabledScaffoldPersistenceVariableGroup { auth: { bootstrapCredentialDeclarations: string; descriptionJson: string; intent: 'authenticated' | 'public-write-protected'; isAuthenticated: boolean; isPublic: boolean; mechanism: 'public-signed-token' | 'rest-nonce'; mode: 'authenticated-rest-nonce' | 'public-signed-token'; publicWriteRequestIdDeclaration: string; }; dataStorageMode: 'custom-table' | 'post-meta'; enabled: true; policy: 'authenticated' | 'public'; scope: 'compound-parent' | 'single'; } export type ScaffoldPersistenceVariableGroup = DisabledScaffoldPersistenceVariableGroup | EnabledScaffoldPersistenceVariableGroup; export interface DisabledScaffoldQueryLoopVariableGroup { enabled: false; } export interface EnabledScaffoldQueryLoopVariableGroup { allowedControls: readonly string[]; allowedControlsJson: string; enabled: true; postType: string; postTypeJson: string; variationNamespace: string; variationNamespaceJson: string; } export type ScaffoldQueryLoopVariableGroup = DisabledScaffoldQueryLoopVariableGroup | EnabledScaffoldQueryLoopVariableGroup; interface ScaffoldTemplateVariableGroupsBase { alternateRenderTargets: ScaffoldAlternateRenderTargetVariableGroup; shared: ScaffoldSharedTemplateVariableGroup; template: { description: string; }; } type DisabledTemplateFamilyGroups = ScaffoldTemplateVariableGroupsBase & { compound: DisabledScaffoldCompoundVariableGroup; persistence: DisabledScaffoldPersistenceVariableGroup; queryLoop: DisabledScaffoldQueryLoopVariableGroup; templateFamily: TFamily; }; export type BasicScaffoldTemplateVariableGroups = DisabledTemplateFamilyGroups<'basic'>; export type InteractivityScaffoldTemplateVariableGroups = DisabledTemplateFamilyGroups<'interactivity'>; export interface PersistenceScaffoldTemplateVariableGroups extends ScaffoldTemplateVariableGroupsBase { compound: DisabledScaffoldCompoundVariableGroup; persistence: EnabledScaffoldPersistenceVariableGroup & { scope: 'single'; }; queryLoop: DisabledScaffoldQueryLoopVariableGroup; templateFamily: 'persistence'; } export interface CompoundScaffoldTemplateVariableGroups extends ScaffoldTemplateVariableGroupsBase { compound: EnabledScaffoldCompoundVariableGroup; persistence: DisabledScaffoldPersistenceVariableGroup | (EnabledScaffoldPersistenceVariableGroup & { scope: 'compound-parent'; }); queryLoop: DisabledScaffoldQueryLoopVariableGroup; templateFamily: 'compound'; } export interface QueryLoopScaffoldTemplateVariableGroups extends ScaffoldTemplateVariableGroupsBase { compound: DisabledScaffoldCompoundVariableGroup; persistence: DisabledScaffoldPersistenceVariableGroup; queryLoop: EnabledScaffoldQueryLoopVariableGroup; templateFamily: 'query-loop'; } export type ExternalScaffoldTemplateVariableGroups = DisabledTemplateFamilyGroups<'external'>; export type ScaffoldTemplateVariableGroups = BasicScaffoldTemplateVariableGroups | InteractivityScaffoldTemplateVariableGroups | PersistenceScaffoldTemplateVariableGroups | CompoundScaffoldTemplateVariableGroups | QueryLoopScaffoldTemplateVariableGroups | ExternalScaffoldTemplateVariableGroups; export interface ScaffoldTemplateVariableGroupsCarrier { readonly [SCAFFOLD_TEMPLATE_VARIABLE_GROUPS]: ScaffoldTemplateVariableGroups; } export type CompoundScaffoldTemplateVariablesLike = ScaffoldTemplateVariableGroupsCarrier & { slugKebabCase: string; }; export type PersistenceScaffoldTemplateVariablesLike = ScaffoldTemplateVariableGroupsCarrier & { namespace: string; pascalCase: string; slugKebabCase: string; title: string; }; export declare function attachScaffoldTemplateVariableGroups>(variables: TVariables, groups: ScaffoldTemplateVariableGroups): TVariables & ScaffoldTemplateVariableGroupsCarrier; export declare function getScaffoldTemplateVariableGroups(variables: ScaffoldTemplateVariableGroupsCarrier): ScaffoldTemplateVariableGroups; export declare function isCompoundPersistenceEnabled(variables: ScaffoldTemplateVariableGroupsCarrier): boolean; /** * Return whether a built-in scaffold family emits compiler-derived REST files. */ export declare function emitsBuiltInPersistenceArtifacts(templateId: ScaffoldTemplateFamily, variables: ScaffoldTemplateVariableGroupsCarrier): boolean; export declare function getScaffoldAlternateRenderTargets(variables: ScaffoldTemplateVariableGroupsCarrier): ScaffoldAlternateRenderTargetVariableGroup; export {};