import { WorkflowDefinition, WorkflowVariable, UserWorkflow } from '../types/memory.js'; type WorkflowTextFields = Pick; declare function validateWorkflowDefinition(definition?: WorkflowDefinition): WorkflowDefinition | undefined; declare class WorkflowVariableResolver { normalizeDefinition(definition?: WorkflowDefinition): WorkflowDefinition | undefined; normalizeVariables(variables?: Record): Record | undefined; resolveForCreation(workflow: WorkflowTextFields): { content: string; title: string; definition?: WorkflowDefinition; }; resolveForExecution(workflow: WorkflowTextFields, executionVariables?: Record): { query: string; displayQuery: string; definition?: WorkflowDefinition; }; /** * Resolves a workflow for filling a document slot. * * Unlike {@link resolveForExecution}, the document context has no * creation/execution distinction: every variable value is already decided * (entered in the document-creation dialog or fixed by the workplace) and * stored on the slot binding. So all provided values are substituted * regardless of each variable's declared `resolveAt`, then built-in template * tokens (e.g. `{{today}}`) are resolved. This does NOT change how standalone * workflow execution resolves variables. * * Empty/whitespace-only values mean "not entered" (slot bindings persist * such keys for display) and are dropped here so they don't override the * workflow's own `variableValues` defaults with blanks. */ resolveForDocumentFill(workflow: WorkflowTextFields, providedVariables?: Record): { query: string; displayQuery: string; definition?: WorkflowDefinition; }; /** * Shared execution-time variable substitution. Only `execution`-scoped * replacements apply, EXCEPT when `forceResolveAt` is true (document-slot * fills), where every provided value is applied regardless of its declared * `resolveAt`. Built-in template tokens (e.g. `{{today}}`) are always resolved. */ private resolveExecutionLike; } export { WorkflowVariableResolver, validateWorkflowDefinition };